Více

Sloučení linerringů v QGIS pomocí PostgreSQL a PostGIS

Sloučení linerringů v QGIS pomocí PostgreSQL a PostGIS


Musím sloučit všechny linestringy z "řeky" tabulky PostgreSQL, kde se nepřekrývají více než dva počáteční a koncové body. Na ilustraci níže používám „M“ k označení všech linestringů, které je třeba sloučit.

Bohužel jsem v PostGIS nový. Pokud vím, QGIS potřebuje k načtení tabulky nebo pohledu sloupec id (gid) a geometrii (geom). Ale nejsem si jistý, která funkce PostGIS tuto práci zvládne. Může mi někdo pomoci s dotazem SQL?


K dispozici je funkce ST_LineMerge http://postgis.net/docs/manual-2.0/ST_LineMerge.html

Můžete zkusit sloužit celé své říční síti jako jeden MultiLineStringST_LineMerge (ST_Multi (St_Collect (geometry)))Výsledkem je také MultiLineString se sešitými segmenty. Takže po ST_LineMerge můžete získat šité segmenty přes ST_Dump.


Není testováno, ale může vám poskytnout to, co chcete. Skřižovatkydostanete ty ID a geometrie, které se protínají s ostatními. AVYBRATprohlášení budeST_Unionvšechny tyto záznamy, které se protínají přesně se dvěma dalšími geometriemi.ST_Dumpdíky tomu nezískáte MultiLinestrings.

S křižovatkami AS (SELECT l1.id, l1.wkb_geometry POČET (1) Z linek l1 PŘIPOJTE se k linkám l2 ON ST_Intersects (l1.wkb_geometry, l2.wkb_geometry) A l1.id <> l2.id GROUP BY l1.id, l1. wkb_geometry) VYBERTE ST_Dump (ST_Union (i.wkb_geometry)). geom wkb_geometry Z křižovatek i KDE počet = 2;

Podívejte se na video: import and export PostgreSQL database