Daha çox

PostgreSQL / PostGIS ilə QGIS-də həll edilmiş tamponlar necə yaradılır?


QGIS-də dinamik bir tampon yaratmaq aşağıdakı sorğudan istifadə edirəm:

Bufer40unitləri SEÇİM OLARAQ GÖRÜNTÜ YARADIN gid, st_buffer (geom, 40) :: həndəsə (poliqon, 31492) AS geom FROM point;

İndi üst-üstə düşən buferləri həll etmək istəyirəm, amma cəhd etdiyim bütün sorğular işə yaramır.

Bufer40unitləri SEÇİM OLARAQ GÖRÜNTÜ YARADIN gid, st_buffer (st_collect (geom), 40) :: həndəsə (çoxbucaqlı, 31492) AS geom FROM point; SEÇİŞ OLARAQ buffer40units st_buffer (st_collect (geom), 40) :: həndəsə (çoxbucaqlı, 31492) AS geom FROM nöqtəsindən OLUN;

Görünən odur ki, QGIS-in hər bir sıra üçün (yeni) bir yola ehtiyacı var. Zəhmət olmasa kimsə mənə kömək edə bilər?


ST_Collect yəqin ki, aradığınız funksiya deyil, çünki həndəsələri bir növ həndəsə kolleksiyasına birləşdirir və əslində birləşmir / həll etmir. ST_Union, əksinə, üst-üstə düşür və çoxbucaqlı giriş qəbul edir (bu, ST_Buffer və nöqtə adlanan giriş cədvəli ilə birlikdə ən çox ehtimal olunur) və üst-üstə düşən çoxbucaqlılar MultiPolygon qaytaracaqdır. Fərdi birləşmiş (həll edilmiş) çoxbucaqlıları qaytarmaq üçün həndəsələri qaytaran ST_Dump və QGIS-də görselləşdirmə üçün lazım olan gid kimi istifadə edilə bilən bir yol id istifadə etməlisiniz - bir sıra olduğu üçün istifadə etməlisiniz [1] daxil olmaq üçün. Tamponları birləşdirmək istərdiniz, əksinə, indiki kimi. Bunu ümumiyyətlə qoyursan:

Bufer40unitləri SEÇİM OLARAQ g.path [1] kimi gid, g.geom :: həndəsə (Polygon, 31492) kimi geom FROM (SELECT (ST_Dump (ST_UNION (ST_Buffer (geom, 40)))). * * FROM point) as SEÇİN. g;