PostGIS veya GRASS'taki ortak öznitelikler üzerindeki satırları çözülüyor veya ayrıştırılmıyor mu?


9

Her kavşakta bölünmüş yolları olan bir yol merkez hattı şekil dosyam var. Ancak, ortak özellikleri olan LINESTRING'leri tek bir LINESTRING içinde birleştirmek istiyorum. İsim, hız sınırı vb. Değişmediği sürece, bunları bir araya getirmek istiyorum. Bu, sonunda OpenStreetMap ile birleştirilmek içindir.

Esri'nin Masaüstü için ArcGIS yazılımı, Dissolve komutu ve UNSPLIT_LINES seçeneğiyle buna izin veriyor gibi görünüyor.

Ayrıca QGIS'de Dissolve komutu buldum, ancak sadece çokgenler ve tek alanlar üzerinde çalışıyor gibi görünüyor.

QGIS için hiçbir şey olmadığı varsayılarak, bunu PostGIS veya GRASS'ta nasıl yapacağını bilen var mı?



Bu soru bugün sorulmuş olsaydı, bence çok geniş kapalı olacaktı. Şimdi kapatmayı denemek yerine, mevcut Yanıtları güçlendirmek ve daha geniş Yanıtları önlemek için düzenleyeceğim.
PolyGeo

Yanıtlar:


4

İlginç soru. Kendimi bir PostGIS gurusu olarak görmüyorum, ancak probleminizle oynadım ve birden fazla alanda ortak değerlerim olduğunda (veri kümemde ve alanlarıyla eşleştiğimde ) otoyol LINESTRINGkayıtlarını kayıtlara çözen aşağıdaki sorgu ile geldim . OGR'yi PostGREsql içine bir karayolları shapefile (ushwys olarak yeniden adlandırıldı) itmek için kullandım; geometri alanım deniyor . Verilerinizi ve alan koşullarınızı karşılamak için bu sorguyu hacklemeyi deneyin:MULTILINESTRINGnamestatewkb_geometry

SELECT 
u.name, 
u.state, 
ST_AsText( ST_Multi( ST_Collect( u.wkb_geometry ) ) ) as multilines 
FROM ushwys u
GROUP BY u.name, u.state 
ORDER BY u.state 
LIMIT 100; --########### DROP THE LIMIT WHEN YOU'RE DONE EXPERIMENTING

Bu işe yararsa, bu sorguyu gerçekleştirmek ve sonuçları şekil dosyası, GML, CSV gibi başka bir vektör biçimini dışa aktarmak için ogr2ogr komutunu kullanabilirsiniz. SQL sorgularını ogr2ogr'dan çağırmayla ilgili bilgi için OGR SQL belgelerine bakın.

Referans olarak, PostGIS ST_Collect komutunun yanı sıra birden fazla alanda gruplandırmayı gösteren bu siteyi de inceledim.

Bu sorgunun redaksiyonlarının sizin için işe yaramadığını görürseniz, lütfen bana bildirin, cevabımı vuracağım, böylece etrafta dolaşmayacak ve insanları karıştırmayacaksınız.


PS Geodata PostGIS içine itmek için ogr2ogr kullanmaya alışkın değilseniz, veri içe aktarma işlemimi gerçekleştirmek için aşağıdaki ogr2ogr betiğini kullandım ( sayfa biçimlendirmesini bulduğum için web'den kopyalamaya ve doğrudan ogr2ogr komut pencerenize yapıştırmaya dikkat edin) ogr komut dosyasını kıran çift tırnak işaretleri için satır satırları ve yazı tipi / karakter ikameleri sunar ):

ogr2ogr -f "PostGreSQL" PG:"host=127.0.0.1 user=postgres dbname=gisdb password=my_password" 
"E:\GISData\UnitedStates\highways.shp" -nln ushwys -nlt geometry

[Güncelleme]

Bu sorgu çalıştırdıktan sonra bu "QGIS" nasıl görünüyordu görmek istedim, bu yüzden WHERE(bu bana Missouri eyaletinde ABD Highway 65 tüm varyantları verir) bu maddeyi uygulamak için sorgu modifiye :

where u.state = 'MO' and u.name LIKE '%US%65%'

Sonra QGIS ve QuickWKT eklentisini, sonuçta elde ettiğim otoyol MULTILINESTRINGkayıtlarının sekizini (8) görselleştirmek için kullandım . Ekran görüntüsünde de görebileceğiniz gibi, nihai sonuçlar, Missoui'nin Iowa ile kuzey sınırından Hwy 65'i Arkansas ile güney sınırına kadar götürüyor:

resim açıklamasını buraya girin

Bana göre, bu görselleştirme, sorgumun beklenmedik bir çoğaltma veya özellik ortadan kaldırması üretmediğini gösteriyor. Sonra merak ettim ki "tamam, çözülme sekiz özellik döndürdü, ama orijinal tablodaki kaç özellik aslında Missouri'de Hwy 65'i temsil ediyor?" Sonraki sorgum bu soruyu yanıtladı. Orijinal veri kümesinin Missouri'deki Hwy 65'i temsil etmek için otuz sekiz (38) özellik kullandığı görülmektedir:

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

Son analizde, sorgu otuz sekiz (38) unsuru isim ve durum alanlarındaki değerleri paylaşan sekiz (8) unsura indirdi. Bu noktada, bu sorgunun çözme görevinin birden fazla alanı dikkate alması gerektiğinde tek parçalı geometrileri çok parçalı geometrilere çözmek için yararlı ve uygun olduğundan nispeten eminim.

Şerefe. :)



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.