ละลาย / รวมรูปหลายเหลี่ยมด้วย ogr2ogr หรือ gpc หรือไม่


16

ฉันมีรูปหลายเหลี่ยมจำนวนมากที่แสดงขอบเขตของเขตปกครองของสหรัฐอเมริกาซึ่งฉันจำเป็นต้องรวมรูปหลายเหลี่ยมเข้าด้วยกันให้น้อยที่สุดเท่าที่จะเป็นไปได้

เป็นไปได้หรือไม่ที่จะทำเช่นนี้กับซอฟต์แวร์ที่ไม่ใช่เชิงพาณิชย์หรือซอฟต์แวร์ที่มีราคาสมเหตุสมผล

PostGIS ไม่สามารถใช้งานได้และไม่มี Java แต่เป็น C


OpenSourceSoftware สามารถทำสิ่งต่างๆมากมายคุณต้องการอะไร ... เครื่องมือห้องสมุดและคอมไพเลอร์ C ก็ทำงานได้ดีในสภาพแวดล้อม / ระบบปฏิบัติการ
huckfinn

ดาวน์โหลด qgis จาก www.qgis.org
Antonio Locandro

@ ฮัคฟินน์: ฉันอยู่บน CentOS และเครื่องมือบรรทัดคำสั่งหรือห้องสมุด Perl-XS หรือ C จะเหมาะอย่างยิ่งขอบคุณที่ถาม ข้อมูลต้นฉบับของฉันอยู่ใน ESRI Shapefiles แม้ว่าฉันจะมีสำเนาของรูปหลายเหลี่ยมลงใน MySQL ฉันมี ogr2ogr แต่ไม่ใช่ภาษาถิ่นของ MySQL
LeeGee

ฉันเข้าใจว่าชื่อที่gpcอ้างถึงคือGPC - ห้องสมุด Polygon Clipper ทั่วไปจากมหาวิทยาลัยแมนเชสเตอร์
matt wilkie

คำตอบ:


31

ด้วยogr2ogr(GDAL> = 1.10 พร้อมการสนับสนุน SpatiaLite):

ogr2ogr output.shp input.shp -dialect sqlite -sql "SELECT ST_Union(geometry), dissolve_field FROM input GROUP BY dissolve_field"

1
Gdal / Ogr สร้างสำหรับ Windows มีการสนับสนุน Spatialite, MS4W, OSGeo4w, gisinternals, geoinformatica หรือไม่
klewis

AFAIK OSGeo4W และแพ็คเกจต่าง ๆ ดูแลโดย Tamas Szekeres ( vbkto.dyndns.org/sdk ) อย่างแน่นอน
Antonio Falciano

1
คุณใช้ GDAL รุ่นใด ( gdalinfo --version) คุณสามารถลองสร้าง shapefile ก่อนแล้วจึงแปลงเป็น KML เนื่องจากไดรเวอร์ KML มีข้อ จำกัด บางประการ
Antonio Falciano

3
ฉันมีปีศาจของเวลาการกำหนดสิ่งที่จะใช้สำหรับ "เรขาคณิต" ได้รับข้อผิดพลาดไม่มีคอลัมน์ดังกล่าวเรขาคณิต ทั้งหมดในตัวอย่างที่คล้ายกันที่นี่ในกองและเอกสารอ้างอิงการใช้งานที่แตกสายพันธุ์เช่นภูมิศาสตร์หรือthe_geom ในที่สุดฉันก็ค้นพบogrinfo -soสรุปเพียงสวิตช์: ogrinfo -so somedata.gdb my_layer_name, และตัวกรองสำหรับ "คอลัมน์เรขาคณิต ="
แมตต์วิลคี

3
นอกจากนี้หากคุณต้องการที่จะยุบรูปหลายเหลี่ยมทั้งหมดใน shapefile เป็นรูปหลายเหลี่ยมขนาดใหญ่คุณสามารถทำได้: ogr2ogr output_dissolved.shp input.shp -dialect sqlite -sql "SELECT ST_Union (เรขาคณิต) เป็นรูปทรงเรขาคณิตจากอินพุต" โปรดจำไว้ว่าถ้าคุณสร้าง GDAL ตัวคุณเองคุณจะต้องติดตั้ง sqlite และรวมอย่างน้อย sqlite และ spatialite ในการกำหนดค่าเช่นค่าสถานะ- ด้วย sqlite - พร้อมกับ spatialite = ใช่หรือคล้ายกัน
cm1

3

หากคุณต้องการเข้าถึงบริสุทธิ์น้ำหนักแสง C คุณสามารถใช้ combiantion ของshapelibจากแฟรงก์ Warmerdam และGPCจากอลัน Murta ฉันพบว่าการจัดการ DBF ใน shapelib นั้นค่อนข้างยุ่งยาก แต่การอ่านบางอย่างมันก็โอเค สำหรับ Perl คุณสามารถค้นหาได้ใน CPAN พื้นที่เก็บข้อมูลภายใต้ภูมิศาสตร์ :: Shapelibและ คณิตศาสตร์เรขาคณิต :: :: GPCรายการ นอกจาก Geo :: Proj4สำหรับการแปลงพิกัดคุณสามารถเข้าถึงการดำเนินการ GIS แบบเรียบง่าย ฉันชอบมัน.


ขอบคุณ - ฉันลองแล้ว แต่ดูเหมือนช้ามาก: มากกว่าหนึ่งชั่วโมงเพื่อรวม 2,000 มณฑลใน MacBookPro 4gig บางทีมัน :) การเข้ารหัสของฉัน
LeeGee

คุณใช้ดัชนีชนิดใดซ้อนทับกล่องเช่น?
huckfinn

ไม่ - ฉันสะดุดในที่มืดพบว่าเป็นการยากที่จะหาผู้อ้างอิงที่ไม่คิดว่าฉันทำสิ่งนี้มานานหลายปีหรือใช้ PostGIS
LeeGee

แต่คุณสามารถใช้ Postgresql / PostGIS ได้เช่นกันกับการจัดทำดัชนีขั้นสูงทั้งหมดความสัมพันธ์ ... การนำเข้าข้อมูลสำหรับรูปร่างนั้นง่ายมากด้วยเครื่องมือ shp2pg และไวยากรณ์ SQL ไม่เป็นเช่นนั้นยากที่จะเรียนรู้ ...
huckfinn

PostGIS ใช้เวลาไม่กี่วินาทีในการคิดออก - เรียบง่ายสวยงามโดยเฉพาะกับ ogr2ogr แต่ฉันอยากจะใช้ GPC: ฉันได้สะสมรูปหลายเหลี่ยมจากไฟล์ทุกครั้งที่สร้างยูเนี่ยนและใช้เวลาหลายชั่วโมงในการทำสิ่งที่ PostGIS ทำในเวลาไม่กี่วินาทีซึ่งเป็นเหตุผลที่ฉันบอกว่ามันต้องทำให้เอกสารของฉันผิด .
LeeGee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.