Daha çox

PostgreSQL və PostGIS istifadə QGIS-də linestrings birləşməsi


Bütün başlanğıc / bitmə nöqtələrinin üst-üstə düşdüyü bir PostgreSQL cədvəli "çaydan" bütün linestringləri birləşdirməliyəm. Aşağıdakı şəkildə birləşdirilməsi lazım olan bütün asma daşları işarələmək üçün "M" işarəsini istifadə edirəm.

Təəssüf ki, PostGIS-də yeniyəm. Mənim bildiyimə görə, bir masa yükləmək və görmək üçün QGIS-in id (gid) və həndəsə (geom) sütununa ehtiyacı var. Ancaq PostGIS funksiyasının işi görəcəyinə əmin deyiləm. Xahiş edirəm kimsə mənə SQL sorğusunda kömək edə bilər?


ST_LineMerge funksiyası var http://postgis.net/docs/manual-2.0/ST_LineMerge.html

Bütün çay şəbəkənizə bir MultiLineString kimi xidmət göstərməyə cəhd edə bilərsinizST_LineMerge (ST_Multi (St_Collect (həndəsə)))Nəticə eyni zamanda seqmentlərin bir-birinə tikildiyi bir MultiLineStringdir. Beləliklə ST_LineMerge-dən sonra ST_Dump vasitəsilə seqmentlər əldə edə bilərsiniz.


Sınaqdan keçməyib, ancaq sizə istədiyinizi verə bilər. İləkəsişmələrbaşqaları ilə kəsişən id və həndəsələri əldə edirsiniz. VəSEÇİNşərh edəcəkST_Birlikdigər iki həndəsə ilə tam kəsişən bu qeydlərin hamısı.ST_Dumpnəticədə MultiLinestrings almadığınızdan əmin olur.

AS kəsişmələri ilə (SEÇİN l1.id, l1.wkb_geometry COUNT (1) l1 sətirlərdən Qoşul xətt l2 ON ST_Intersects (l1.wkb_geometry, l2.wkb_geometry) AND l1.id <> l2.id GROUP BY l1.id, l1. wkb_geometry) SEÇİN ST_Dump (ST_Union (i.wkb_geometry)). geom wkb_geometry kəsişmələrdən i HARADA count = 2;


Videoya baxın: QGIS - Polygonize - Raster to Vector (Oktyabr 2021).