Question

Je 8 valeurs réelles dans un tableau que je voudrais combiner en un polygone. Je n'ai pas été en mesure de comprendre comment créer un polygone en utilisant ces valeurs bien. Je continue d'essayer des variations de

SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;

mais continuer à obtenir des erreurs sur la fonction polygone non existant ou une syntaxe d'entrée non valide pour un polygone de type. Quelqu'un at-il fait cela avant?

Était-ce utile?

La solution

La syntaxe pour un polygone régulier postgres est plus comme:

insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');

Où 1 est une pièce d'identité et l'entrée cité est le polygone. Je pense que la requête soit similaire, vous avez probablement besoin entre parenthèses etc pour les coordonnées. En règle générale pour les données que vous voulez géospatiale (Lon Lat) coordonne. PostGIS prend également WKT déclarations comme:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

Autres conseils

Comme mentionné par bvmou - GeomFromText fonctionnera très bien. Je vais juste ajouter une petite mise à jour de la syntaxe:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

Cet exemple prend les coordonnées longitude et la latitude d'une table et les convertit en une géométrie. Les dimensions de chaque boîte sont donnés à titre long_high, long_low, lat_high et lat_low. Ici, une boîte d'environ 500m par 500m.

  1. Ajouter une nouvelle colonne de géométrie 'boîte' à la table

    SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
  2. Mettre à jour le nouveau champ avec ces valeurs.

    UPDATE predpol_raw
    SET box =
            ST_Transform(
                ST_GeomFromText(
                    format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))',
                        long_high,lat_high, long_low,lat_high,
                        long_low,lat_low, long_high,lat_low,
                        long_high,lat_high
                    ),
                    4326
                ),
                2240
            );
    

Notez la transformation d'une référence spatiale différente. Le mot-clé POLYGONE nécessite entre parenthèses double '(()).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top