Laravel 5

Format SQL POLYGON

  • Avatar de Thomas
    Membre depuis :
    16/11/2014
    Messages :
    71

    Bonjour,
    Je dois enregistrer le type de format SQL POLYGON, mais je n'y arrive pas la seule aide qu'on m'a apporté et ceci :

    INSERT INTO bdd_mobiliguard.polygone(id_polygone, intitule, num_version, date_creation, delimitation, type_polygone, id_transporteur, ancienne_version, commentaire) VALUES (1, 'Petit Carre', 1, '2018-03-05 09:54:06', GeomFromWKB(x'01030000000100000005000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000'), 'zone de chargement et dechargement', 2, 0, NULL);

    Si vous avez des pistes s'il vous plaît :)
    Bonne journée

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2079

    Salut,

    J'ai un peu regardé la documentation, c'est une usine à gaz !

    De ce que j'ai compris tu peux utiliser ce type de syntaxe :

    ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')
  • Avatar de Thomas
    Membre depuis :
    16/11/2014
    Messages :
    71

    Salut,
    merci de ta réponse ^^ à mince autant que ça, surtout qu'un fichier KVM peut avoir plusieurs cordonnées, donc il faut passer par un foreach pour tout les enregistrer, je vais regarder tranquillement alors !
    Merci

  • Avatar de Thomas
    Membre depuis :
    16/11/2014
    Messages :
    71

    Je reviens aux nouvelles,
    Alors j'ai utilisé le bundle ;
    grimzy/laravel-mysql-spatial

    et l'enregistrement en dur marche niquel, maintenant j'ai récupéré mon fichier, récupérer la ligne 21 (Celle des positions et par plusieurs foreach, explode, j'arrive à avoir les 2 coordonnées sous forme de tableau, mais quand je veux foreach dans mon new polygon j'ai une erreur :

    syntax error, unexpected 'foreach' (T_FOREACH), expecting ']'

    Voici mon code

    $place1->area = new Polygon([new LineString([
    foreach ($tableaupoint as $poly)
    {

    $result = new Point($poly);
    }

    ])]);

    Si vous auriez une idée, s'il vous plaît !
    Bonne journée.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2079

    Tu peux pas mettre une boucle dans ce genre d'assignation. Commence à préparer des valeurs avec une boucle et construis ensuite ton polygone.

  • Avatar de Thomas
    Membre depuis :
    16/11/2014
    Messages :
    71

    J'ai séparé la latitude et la longitude en 2 tableaux et maintenant ma boucle ressemble à ça :

    $place1->area = new Polygon([new LineString([
    for($i = 0, $size = count($truc4); $i < $size; ++$i) {
    If ( $key % 2 == 0 && $data != "\n")
    {
    new Point($lat[$i], $long[$i]);
    }
    }
    ])
    ]);

    Mais il ne veut pas car c'est [ avant et après :/

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2079

    Commence par créer une variable pour générer les données avec ta boucle. Ensuite mets ces données dans la définition du polygone.

    Tu peux pas placer une boucle comme ça, ça peut pas fonctionner.

  • Avatar de Thomas
    Membre depuis :
    16/11/2014
    Messages :
    71

    d'accord je vais revoir à 0 car je suis parti dans plusieurs foreach différent pour enlever les ",", ",0 " etc..
    Peut-on utiliser un "str_replace" pour modifier plusieurs valeurs d'un coup ?

    EDIT :
    J'ai trouvé :

    $explode = explode(",", $voir);
    $array = preg_split( '/(,0|\n| )/', $voir);

    foreach ( $array as $table)
    {
    if ($table != null)
    {
    $tableau[] = str_replace(array('0 ', "\t\t\t\t\t\t"), '', $table);
    }
    }

    me restent plus qu'à dissocier les [1] [2]etc. pour les paires ces longitudes et impaires latitudes !

Vous ne pouvez pas répondre à ce sujet.