Více

Rozpustit nebo rozdělit řádky na společné atributy v PostGIS nebo GRASS?

Rozpustit nebo rozdělit řádky na společné atributy v PostGIS nebo GRASS?


Mám soubor tvaru osy silnice, který má silnice rozdělené na každé křižovatce. Chtěl bych se však připojit k LINESTRINGům, které mají společnou sadu atributů, do jednoho LINESTRINGU. Pokud se název, rychlostní limit atd. Nezmění, chci je sloučit dohromady. To je pro případnou sjednocení do OpenStreetMap.

Zdá se, že software ArcGIS pro stolní počítače společnosti Esri to umožňuje pomocí příkazu Dissolve a možnosti UNSPLIT_LINES.

Také jsem našel příkaz Rozpustit v QGIS, ale zdá se, že funguje pouze na polygony a jednotlivá pole.

Za předpokladu, že pro QGIS nic neexistuje, ví někdo, jak to udělat v PostGIS nebo GRASS?


Zajímavá otázka. Nepovažuji se za guru PostGIS, ale pohrával jsem si s vaším problémem a přišel s následujícím dotazem, který rozpouští dálniciLINESTRINGzáznamy doMULTILINESTRINGzáznamy, pokud mají společné hodnoty ve více polích (v mém datovém souboru jsem se shodoval nanázevaStátpole). Použil jsem OGR k zasunutí tvarového souboru dálnice (přejmenovaného na ushwys) do PostGREsql; takže se volá moje geometrické polewkb_geometry. Zkuste tento dotaz hacknout, aby vyhověl vašim datovým a polním podmínkám:

VYBRAT u.name, u.state, ST_AsText (ST_Multi (ST_Collect (u.wkb_geometry))) jako víceřádkové FROM ushwys u GROUP BY u.name, u.state OBJEDNAT u.state LIMIT 100; - ############ SNÍŽTE LIMIT, KDYŽ DĚLÁTE EXPERIMENTOVÁNÍ

Pokud to funguje, můžete použít ogr2ogr k provedení tohoto dotazu a exportovat výsledky do libovolného vektorového formátu, který upřednostňujete, například Shapefile, GML, CSV nebo jinak. Informace o volání dotazů SQL z ogr2ogr najdete v dokumentaci OGR SQL.

Jako referenci jsem zkontroloval instrukci PostGIS ST_Collect, stejně jako tento web, který demonstruje seskupení na více polích.

Pokud zjistíte, že redakce tohoto dotazu pro vás nefungují, dejte mi prosím vědět a já udeřím na svou odpověď, aby se nezdržovala a nepletla lidi.


P.S. Pokud nejste obeznámeni s používáním ogr2ogr k odesílání geodat do PostGIS, použil jsem k provedení importu dat následující skript ogr2ogr (dejte si pozor na kopírování z webu a vkládání přímo do příkazového okna ogr2ogr, protože jsem zjistil, že formátování stránky zavádí zalomení řádků a náhrady písma / znaků za uvozovky, které porušují skript ogr):

ogr2ogr -f "PostGreSQL" PG: "hostitel = 127.0.0.1 uživatel = postgres dbname = heslo gisdb = moje_heslo" "E:  GISData  UnitedStates  highways.shp" -nln ushwys -nlt geometry

[Aktualizace]

Chtěl jsem vidět, jak to „vypadalo“ v QGIS po spuštění tohoto dotazu, a tak jsem tento dotaz upravil, aby se to uplatniloKDEklauzule (která mi dává všechny varianty americké hlavní silnice 65 ve státě Missouri):

kde u.state = 'MO' a u.name LIKE '% US% 65%'

Dále jsem použil QGIS a plugin QuickWKT k vizualizaci všech osmi (8) mé výsledné dálniceMULTILINESTRINGevidence. Jak vidíte na snímku obrazovky, konečné výsledky vezmou Hwy 65 od severní hranice Missoui s Iowou až po její jižní hranici s Arkansasem:

Pro mě tato vizualizace ukazuje, že můj dotaz nepřinesl žádné neočekávané zdvojení nebo eliminaci funkcí. Dále mě napadlo: „ok, rozpuštění vrátilo osm funkcí, ale kolik funkcí v původní tabulce ve skutečnosti představuje Hwy 65 v Missouri?“ Můj další dotaz na tuto otázku odpověděl. Zdá se, že původní datová sada používá třicet osm (38) funkcí k reprezentaci Hwy 65 v Missouri:

SELECT count (*) FROM ushwys WHERE state = 'MO' AND name LIKE '% US% 65%'; - vrátil se 38

Při závěrečné analýze dotaz snížil třicet osm (38) funkcí na osm (8) funkcí, které sdílely hodnoty v polích název a stav. V tomto okamžiku jsem si relativně jistý, že tento dotaz je užitečný a vhodný pro rozpouštění jednodílných geometrií na vícedílné geometrie, když je třeba v úkolu rozpuštění zohlednit více polí.

Na zdraví. :)


V PostGISu existuje speciální funkce pro slučování linek

ST_LineMerge - Vrátí (sadu) LineString (s) vytvořených sešitím MULTILINESTRING.

http://www.postgis.org/docs/ST_LineMerge.html


V GRASS GIS se podívejte na v.build.polylines

v.build.polylines lze použít k obnově přerušených křivek


Podívejte se na video: 2GS1Utjecajne LinijeUticajne LinijeOdređivanje Reakcija1