Suite

PostGIS : requête simple sélectionnant les nœuds du polygone


Demandé aussi à stackoverflow

CONTRIBUTION:

  1. Tableau .shp des bâtiments OSM standard
  2. Emplacement du point PostGIS
  3. RAYON (autour de l'emplacement ci-dessus), disons 500m.

RÉSULTAT:

Je veux récupérer tous les coins de tous les bâtiments dans ce rayon de l'emplacement, que ("O") leur distance de l'emplacement est inférieure à DISTANCE (disons 200 m).

J'ai du mal à obtenir un résultat en tant que points acceptant la clause WHERE de la table des polygones.

ÉDITER:

J'ai commencé quelque chose comme ça :

SELECT ST_AsText((ST_DumpPoints(geom)).geom) FROM bâtiments O buildings ST_DWithin((ST_DumpPoints(geom).geom), ST_GeomFromText('POINT(5 45)',4326), 0,002) ;

Vous utilisez 4326 comme SRID dans le constructeur de point. S'il s'agit également du SRID de votre colonne de géométrie, vous demandez la requête pour chaque point à moins de 100 degrés du point de requête (si ce n'est pas le cas, vous devriez obtenir une erreur de conflit). Vous souhaiterez probablement utiliser un SRID différent, dont les unités sont en pieds ou en mètres.

Si vous pouvez faire quelque chose comme :

SELECT * FROM bâtiments WHERE ST_DWithin(ST_Transfom(ST_GeomFromText('POINT(4 45)', 4326), 26910), ST_Transform(geom, 26910), 100);

Cela transforme le point de requête de WGS84 en UTM10N, puis transforme la colonne géométrique en le même CRS et recherche dans les 100 m (évidemment, votre SRID sera probablement différent.) Cela suppose que vous souhaitiez que votre requête soit en degrés de latitude et de longitude (ce qui semble douteux.)

Quant à la réponse à la question :

Vous devriez probablement utiliser une sous-requête pour créer un ensemble de points individuels sur lesquels interroger.

AVEC t AS (SELECT *, (ST_DumpPoints(geom)).geom AS pt) SELECT ST_AsText(pt) FROM t WHERE ST_DWithin(ST_GeomFromText('POINT(5 45)', 4326), pt, 4326);

Ici, chaque ligne de la sous-requête a un point individuel du bâtiment, ainsi que suffisamment d'informations pour identifier le bâtiment d'où elle provient. La requête de distance elle-même opère désormais sur des points individuels, plutôt que sur des ensembles de points. Mais il utilise toujours des diplômes, ce qui n'est pas une bonne idée.


Voir la vidéo: Dissolve Geometry. PostGIS (Octobre 2021).