İ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 LINESTRING
kayı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:MULTILINESTRING
name
state
wkb_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 MULTILINESTRING
kayı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:
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. :)