Hòa tan / tổng hợp đa giác với ogr2ogr hoặc gpc?


16

Tôi có một số lượng lớn các đa giác đại diện cho ranh giới của các hạt Hoa Kỳ mà tôi cần hợp nhất thành càng nhiều đa giác càng tốt.

Có thể làm điều này với phần mềm phi thương mại, hoặc phần mềm có giá cả hợp lý?

PostGIS không có sẵn, Java cũng vậy, nhưng C thì có.


OpenSourceSoftware có thể làm rất nhiều thứ, bạn cần gì ... một công cụ, thư viện và có trình biên dịch C quá hoạt động với môi trường / hệ điều hành nào?
huckfinn

tải về qgis từ www.qgis.org
Antonio Locandro

@huckfinn: Tôi đang sử dụng CentOS và một công cụ dòng lệnh hoặc thư viện Perl-XS hoặc C sẽ rất lý tưởng, cảm ơn bạn đã hỏi thăm. Dữ liệu nguồn của tôi nằm trong ESRI Shapefiles, mặc dù tôi có các bản sao của đa giác vào MySQL. Tôi có ogr2ogr nhưng không phải là phương ngữ MySQL.
LeeGee

Tôi đoán rằng gpctham chiếu trong tiêu đề là GPC - Thư viện General Polygon Clipper từ Đại học Manchester
matt wilkie

Câu trả lời:


31

Với ogr2ogr(GDAL> = 1.10 với hỗ trợ SpatiaLite):

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

1
Có bất kỳ bản dựng nào của Gdal / Ogr, cho Windows, có chứa hỗ trợ Spatialite, MS4W, OSGeo4w, gisi INTERNals, Geoinformatica không?
klewis

AFAIK OSGeo4W và các gói được duy trì bởi Tamas Szekeres ( vbkto.dyndns.org/sdk ) chắc chắn.
Antonio Falciano

1
Phiên bản GDAL nào bạn đang sử dụng ( gdalinfo --version)? Khi giải quyết, bạn có thể thử tạo một shapefile trước và sau đó chuyển đổi nó thành KML, vì trình điều khiển KML có một số hạn chế.
Antonio Falciano

3
Tôi đã có một thời gian xác định những gì sẽ sử dụng cho "hình học", đã nhận được lỗi không có cột như vậy: hình học . Tất cả các ví dụ tương tự ở đây trên Stack và trong tài liệu tham chiếu cũng sử dụng các biến thể bị hỏng như Geo hoặc the_geom . Cuối cùng, tôi phát hiện ra công tắc chỉ tóm tắt ogrinfo -so : ogrinfo -so somedata.gdb my_layer_namevà bộ lọc cho "Cột hình học ="
matt wilkie

3
cũng có thể, nếu bạn chỉ muốn hòa tan tất cả các đa giác trong shapefile thành một đa giác lớn bạn có thể làm: ogr2ogr output_dissolved.shp input.shp -dialect sqlite -sql "SELECT ST_Union (hình học) AS hình học từ đầu vào" hãy nhớ, nếu bạn xây dựng GDAL chính bạn, bạn cần phải cài đặt sqlite và bao gồm ít nhất sqlite và spatialite trong cấu hình, tức là cờ --with-sqlite --with-spatialite = yes hoặc tương tự.
cm1

3

Nếu bạn muốn truy cập C trọng lượng nhẹ, bạn có thể sử dụng kết hợp shapelib từ Frank Warmerdam và gpc từ Alan Murta. Tôi thấy việc xử lý DBF trong shapelib hơi khó khăn một chút, nhưng đọc một cái gì đó thì không sao. Đối với perl, bạn có thể tìm thấy chúng trong Kho lưu trữ CPAN trong các mục Geo :: ShapelibMath :: Geometry :: GPC . Ngoài Geo :: Proj4 để chuyển đổi tọa độ, bạn có thể có quyền truy cập tối thiểu vào các hoạt động của GIS. Tôi thích điều đó.


Cảm ơn - Tôi đã thử điều đó, nhưng dường như rất, rất chậm: hơn một giờ để tổng hợp 2.000 hạt trên MacBookPro 4gig. Có lẽ đó là mã hóa của tôi :)
LeeGee

Bạn có sử dụng bất kỳ loại lập chỉ mục, bbox chồng chéo chẳng hạn?
huckfinn

Không - Tôi đang loạng choạng trong bóng tối, rất khó tìm thấy những người giới thiệu không cho rằng tôi đã làm việc này trong nhiều năm hoặc đang chạy PostGIS.
LeeGee

Nhưng bạn có thể sử dụng Postgresql / PostGIS cũng như với tất cả các hoạt động lập chỉ mục, quan hệ ... nâng cao. Việc nhập dữ liệu cho hình dạng rất dễ dàng với công cụ shp2pg. Và cú pháp SQL không quá khó để học ...
huckfinn

PostGIS mất vài giây để tìm ra - rất đơn giản, đặc biệt là với ogr2ogr. Nhưng tôi thà sử dụng GPC: Tôi đã tích lũy đa giác từ các tệp, mỗi lần tạo ra một UNION và phải mất hàng giờ để làm những gì PostGIS đã làm trong vài giây theo nghĩa đen, đó là lý do tại sao tôi nói rằng đó là việc tôi đọc sai các tài liệu .
LeeGee
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.