Làm cách nào để hòa tan đa giác từ shapefile bằng các công cụ nguồn mở?


10

Trong dự án hiện tại của tôi, tôi đang trực quan hóa dữ liệu trên bản đồ đại diện cho một số giá trị cho từng khu vực hành chính của một quốc gia. Tôi được cấp một shapefile của đất nước này, nơi tôi đang chuyển đổi sang GeoJSON để sử dụng với PolyMaps. Bây giờ tôi đã có một yêu cầu để phân cụm nhiều khu vực thành các khu vực lớn hơn, vì không có dữ liệu cho một số phần nhỏ hơn, nhưng có thể thu được dữ liệu tổng hợp cho các khu vực lớn. Các cụm đó được xác định trước (ví dụ A + B + C = D), vì vậy tôi cho rằng việc tạo ra một shapefile cụm và chuyển đổi nó thành GeoJSON sau đó sẽ dễ dàng hơn.

Nhưng làm cách nào để tạo một cụm như vậy, tốt nhất là tự động hóa và với các công cụ nguồn mở? Bất kỳ cách hợp lý khác là tất nhiên cũng được chào đón.

Câu trả lời:


5

Bạn luôn có thể sử dụng một công cụ nguồn mở như QGIS để mở shapefile và hợp nhất các tính năng bằng cách sử dụng công cụ "hợp nhất các tính năng được chọn" (chỉ cần chọn tính năng, nhấp vào hợp nhất, chọn thuộc tính để kế thừa tính năng hợp nhất mới, đã hoàn tất).

Điều này tất nhiên không có ý nghĩa nhiều nếu chúng ta đang nói về hàng trăm hoặc hàng ngàn sự hợp nhất. Bản thân tôi đã tự hỏi một ngày khác liệu có thể hợp nhất các tính năng "theo thuộc tính" trong QGIS không?

EDIT: Ok, tôi thật ngu ngốc, nếu bạn có một thuộc tính chung cho tất cả các tính năng bạn sẽ chuyển sang "cụm" (như tên tỉnh hoặc quận) thì đây sẽ là một trường hợp cho công cụ hòa tan. Mở shapefile của bạn, chọn hòa tan (trong QGIS, nó nằm ở Vector> Công cụ xử lý địa lý> Hòa tan), chọn cột có tên chung được đề cập ở trên và bắt đầu quá trình. Điều này hy vọng (nếu tôi không hiểu lầm bạn) dẫn đến kết quả bạn đang tìm kiếm.


Nói chung, lời khuyên tốt, và nếu tất cả bắt nguồn từ công việc thủ công, tôi sẽ tìm ai đó sẽ tạo ra các hình dạng đó cho tôi với QGIS như bạn mô tả. Tuy nhiên, tôi muốn có thể xác định các cụm đó (ví dụ: thông qua mã NUTS: hợp nhất FR413 và FR411 vào một thứ gọi là _FRX1) và sau đó chạy một tập lệnh sẽ tạo ra các shapefile được phân cụm đó. Tôi muốn có thể sửa lỗi hoặc bổ sung các thay đổi được theo dõi nhanh mà không cần sử dụng công cụ GUI. Hoàn toàn có khả năng những cụm đó sẽ được xác định bởi người dùng cuối một ngày nào đó, vì vậy tôi cần một chút linh hoạt.
Nikolai Prokosunn

Tôi không bao giờ sử dụng nó, nhưng tôi nghĩ bạn có thể sử dụng bàn điều khiển để làm mọi thứ trong QGIS, vì vậy không cần GUI. Bạn cũng sẽ luôn phải xác định các cụm đó trong một số loại bảng, ngay cả khi bạn hoàn toàn dựa vào một giải pháp theo kịch bản. Vì vậy, bạn có thể tránh gây rối với shapefile của mình bằng cách tham gia bảng này và thực hiện giải thể sau đó. Tôi đoán điều này cũng sẽ được kịch bản?
SAnderka

hoàn toàn có thể, tôi là một người hoàn toàn mới trong tất cả mọi thứ về GIS. Tôi sẽ xem xét kịch bản QGIS, cảm ơn.
Nikolai Prokoschenko

2

Đối với công việc thủ công ít hơn, bạn có thể xem SpatiaLite. Bạn có thể nhập shapefiles dễ dàng bằng vd

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Sau đó cho phần hòa tan:

Tôi muốn có thể xác định các cụm đó (ví dụ: thông qua mã NUTS: hợp nhất FR413 và FR411 vào một thứ gọi là _FRX1)

Hàm bạn cần ở đây là GUnion (). Bạn có thể muốn xác định "cụm" của mình trong bảng thứ hai. Sau đó, bạn có thể tham gia cụm và bảng khu vực và sử dụng GUnion () với GROUP BY để tạo union_table cuối cùng.

Sau đó, bạn có thể xuất sang shapefile bằng .dumpshp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Nếu bạn cần GeoJSON, bạn có thể chuyển đổi tệp ngay bây giờ.

Bạn có thể viết một đoạn script ngắn, ví dụ Python xử lý tất cả các tải, nối và kết xuất này.


Có vẻ rất hứa hẹn, tôi sẽ thử nghiệm với nó! Cảm ơn! Bạn có thể giải thích những gì UPDATESELECTdòng làm?
Nikolai Prokosunn
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.