Làm cách nào để tạo hình ảnh thu nhỏ từ nhiều shapefile?


9

Một đồng nghiệp và gần đây tôi đã phát hành một dự án Nguồn mở có tên Mapoteca , một tập hợp các Tập lệnh Python tích hợp với bản cài đặt GDAL / FWTools cho phép xem toàn bộ các thư mục tìm kiếm dữ liệu không gian và mức độ trích xuất, hình học, số phần tử, phép chiếu và người dùng viết nó vào một tập tin csv. Chúng tôi đang nghiên cứu phần mô tả các tệp DBF được liên kết và chúng tôi muốn tạo hình ảnh thu nhỏ của mỗi shapefile, bạn có biết cách tạo các hình thu nhỏ này trong jpeg hoặc png bằng Python không?

Câu trả lời:




2

Cách đơn giản nhất là gọi gdal_rasterize bằng sub process.call (), nhưng tôi nghi ngờ nó không thực hiện bất kỳ phép nội suy nào nên nó sẽ bí danh đến mức không thể thực hiện được nếu bạn tạo hình ảnh có kích thước hình thu nhỏ trực tiếp từ dữ liệu. Vì vậy, bạn nên tạo một hình ảnh tạm thời "có kích thước hợp lý" và sử dụng thư viện hình ảnh Python để chia tỷ lệ theo kích thước bạn muốn.

Nhưng tôi hy vọng vấn đề lớn nhất sẽ thuộc về (các) thuộc tính nào mà bạn sẽ dựa trên kiểu dáng của mình? Shapefiles không có thông tin hiển thị vốn có vì tôi chắc chắn bạn biết, vì vậy bạn sẽ cần tìm cách quyết định màu nào sẽ sử dụng. gdal_rasterize cung cấp cho bạn khả năng để làm điều này, nhưng sự lựa chọn thường dựa trên kiến ​​thức cụ thể về tên miền. Để có một công cụ chung, bạn sẽ phải có một sơ đồ tạo kiểu chung.

* Đây cũng là điều mà bạn có thể phải thực hiện một vài quy tắc được mã hóa cứng. Có lẽ bắt đầu với kích thước pixel lý tưởng (giả sử 10m trên mỗi pixel) và tăng nếu hình ảnh thu được quá lớn là không thực tế.



1

Chỉ vì mục đích hoàn chỉnh - mapserver cũng có thể hiển thị các bản đồ đẹp mắt từ một loạt dữ liệu cơ sở, trên dòng lệnh sử dụng tiện ích shp2img . Một lần nữa, bạn sẽ cần phải quyết định một phong cách rất chung chung, rất đơn giản phù hợp với mục đích của bạn.


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.