Có công cụ nào có sẵn để tôi chạy hàng triệu shapefile bưu kiện và đơn giản hóa chúng không?
Có công cụ nào có sẵn để tôi chạy hàng triệu shapefile bưu kiện và đơn giản hóa chúng không?
Câu trả lời:
Bạn có thể thử Shapely - API Python được xây dựng dựa trên GEOS . Vì cả Shapely và GDAL đều có thư viện Python, bạn có thể dễ dàng kết hợp chúng với dữ liệu từ nhiều nguồn khác nhau (bao gồm cả shapefile), sau đó đơn giản hóa và xuất theo ý muốn.
Nhược điểm duy nhất có thể là tốc độ nếu bạn đang thực hiện hàng triệu tính năng - có thể nhanh hơn khi sử dụng GEOS hoặc JTS trực tiếp.
Xem phương pháp đơn giản hóa :
Tất cả các điểm trong đối tượng được đơn giản hóa sẽ nằm trong khoảng cách dung sai của hình dạng ban đầu. Theo mặc định, một thuật toán chậm hơn được sử dụng để bảo tồn cấu trúc liên kết. Nếu cấu trúc liên kết bảo toàn được đặt thành Sai, thuật toán Douglas-Peucker nhanh hơn được sử dụng.
>>> p = Point(0.0, 0.0)
>>> x = p.buffer(1.0)
>>> x.area
3.1365484905459389
>>> s = x.simplify(0.05, preserve_topology=False)
>>> s.area
3.0614674589207187
Phiên bản 9.0 của GDAL / OGR đã thêm tùy chọn -simplify vào lệnh ogr2ogr . Các tài liệu chỉ ra rằng nó bảo tồn cấu trúc liên kết.
-simplify dung sai: (bắt đầu với GDAL 1.9.0) dung sai khoảng cách để đơn giản hóa. Phương pháp này sẽ bảo tồn cấu trúc liên kết, đặc biệt cho hình học đa giác.
Ví dụ sử dụng:
ogr2ogr outfile.shp infile.shp -simplify 0.000001
Nếu dữ liệu của bạn được lưu trữ trong PostGIS, hãy thử sử dụng ST_SimplifyPreserveTopology .
ogr2ogr có một tùy chọn "phân đoạn" xuất hiện để làm những gì bạn cần: tài liệu GDAL ogr2ogr
Từ trang đó:
-seributionize max_dist: (bắt đầu bằng GDAL 1.6.0) khoảng cách tối đa giữa 2 nút. Được sử dụng để tạo phạm vi truy vấn điểm trung gian
GRASS v.generalize
Lấy cảm hứng từ Mapshaper, nhưng trực tiếp tại địa phương, hãy xem https://github.com/migurski/Bloch