Question à peu près la même que celle-ci , mais je dois utiliser PostGIS.
J'ai un certain nombre de polylignes et je souhaite les transformer en points tous les n mètres le long de ces lignes.
edit: Merci beaucoup à Stefan. Ma dernière requête était un peu différente, probablement en raison de l'ancienne version de PostGIS (1.5), mais finalement j'ai obtenu ce dont j'avais besoin. Les points ont été combinés dans une carte thermique de la densité des routes.
Réponses:
Cette requête devrait faire l'affaire:
Au début, vous sélectionnez les lignes distinctes de votre colonne de polyligne avec
ST_Dump
Ensuite, vous devez définir les éléments de mesure avec
ST_AddMeasure
, en commençant par 0 (début de la chaîne de lignes) et la fin de la chaîne de lignes (identique à la longueur de la chaîne de lignes).Generate_series
crée une série sur cette mesure par pas de 10. Ici vous pouvez définir"n metres"
(dans cet exemple 10 mètres). Lai
valeur recommence pour chaque ligne de ligne.Avec
ST_LocateAlong
etST_GeometryN
vous créez une géométrie de point multidimensionnelle.Enfin, vous devez extraire les valeurs X et Y de cette géométrie et en créer un point.
Le résultat pourrait ressembler à ceci:
ÉDITER
Pour être honnête, je veux ajouter ces informations: l'idée et la requête dans cette réponse sont extraites d'une requête que j'utilise pour créer des lignes drapées à partir de DEM dans PostGIS. L'excellente mise en œuvre de ceci est expliquée dans cet article de Mathieu Leplatre.
la source
WITH line AS
est-il utilisé? Je ne vois pas de «ligne» ailleurs.WITH Query
fournit l'utilisation de tables temporaires pour les requêtes plus volumineuses. Voici quelques informations: postgresql.org/docs/8.4/static/queries-with.html .line
est utilisé dans la sous-requête suivantelinemeasure
. Les données sélectionnées dans cette sous-requête sont basées sur les sélections effectuées dans laline
sous - requête. Ils sont construits les uns sur les autres. J'espère que cela a aidé!st_locate_along_measure
.