Suite

Compter les auto-intersections de la chaîne de lignes à l'aide de PostGIS ?


Existe-t-il un moyen d'utiliser PostgreSQL + PostGIS pour trouver le nombre d'auto-intersections dans une chaîne de lignes ?

J'ai une ligne qui avance mais qui tourne en rond, et j'ai besoin de trouver le nombre de fois qu'elle se croise.


Je ne sais pas avec certitude, mais je pense que quelque chose comme ça pourrait résoudre votre problème (cela ne fonctionnera pas sur les multilignes, mais vous pouvez les stdump ou les écraser):

SELECT ID, COUNT (*) AS theCOUNT FROM ( SELECT id, ST_Intersection(A.geom, B.geom) AS geom FROM ( SELECT xx.id, xx.id2, st_makeline(xx.l_start, xx.l_end) AS geom FROM ( SELECT x.id, generate_series(1, st_npoints(x.geom) - 1) AS id2, st_pointn(x.geom, generate_series(1, st_npoints(x.geom) - 1)) AS l_start, st_pointn(x.geom , generate_series(2, st_npoints(x.geom))) AS l_end FROM ( SELECT DATA_TABLE.id, DATA_TABLE.geom FROM DATA_TABLE ) AS X ) AS XX ) AS A INNER JOIN ( SELECT xx.id, xx.id2, st_makeline( xx.l_start, xx.l_end) AS geom FROM ( SELECT x.id, generate_series(1, st_npoints(x.geom) - 1) AS id2, st_pointn(x.geom, generate_series(1, st_npoints(x.geom) - 1)) AS l_start, st_pointn(x.geom, generate_series(2, st_npoints(x.geom))) AS l_end FROM ( SELECT DATA_TABLE.id, DATA_TABLE.geom FROM DATA_TABLE ) AS X ) AS XX ) AS B ON A. ID = b.ID ET A.id2 <> B.id2 ET A.id2 <> B.id2-1 ET A.id2 < B.id2 ET ST_INTERSECTS(A.geom, B.geom)

Qu'en est-il de ceci (supposeztestest votre table de chaînes de lignes) :

Nodifiez d'abord la chaîne de ligne, par ex. créer des sommets à chaque intersection tout en gardant intacts les sommets d'origine.

CREATE TABLE node AS SELECT id, ST_Node(wkb_geometry) as wkb_geometry FROM test ;

Comptez tous les points distincts dans les nouvelles chaînes de lignes. Soustraire le nombre initial de sommets du nombre de nœuds devrait vous donner le nombre d'intersections.

SELECT id, COUNT(id) FROM (SELECT DISTINCT (ST_DumpPoints(wkb_geometry)).geom, id FROM node) groupe tmp par id;


Voir la vidéo: QGIS User0015 - PostGIS Setup (Octobre 2021).