Tạo hình ảnh đơn giản từ dữ liệu vector


14

Bất cứ ai cũng có thể đề xuất một cách nhanh chóng (và tốt nhất là nguồn mở) để tạo một hình ảnh từ một shapefile. Ví dụ, tôi có một shapefile chứa ranh giới bưu kiện, tôi muốn tạo một tệp png mô tả các bưu kiện này. Hệ thống ký hiệu cần thiết cho hình ảnh này sẽ là xương trần (phác thảo rắn và điền).

Tôi biết rằng shp2img từ MapServer sẽ thực hiện thủ thuật này. Tôi chỉ tò mò nếu có bất cứ điều gì khác có sẵn.

Mọi tham chiếu đến các công cụ được biên dịch sẵn hoặc api's / sdks đều được chào đón.


Có lẽ câu hỏi này có thể được đổi tên thành "Tạo hình ảnh đơn giản từ dữ liệu vectơ (ví dụ: Hình dạng)" để đó là một câu hỏi chung chung hơn? Bạn vẫn nhận được câu trả lời của mình, nhưng cũng có nhiều khuyến khích cho những người khác xem / trả lời. Tôi cũng đề nghị thay đổi "và nguồn mở" thành "tốt nhất là nguồn mở" vì lý do tương tự.
Đánh dấu Ireland

Điểm tốt, chỉnh sửa áp dụng.
dùng890

Câu trả lời:


15

Bạn có thể sử dụng python (mô-đun: shapley , GDAL / OGR , numpy , matplotlib ) và GDAL / OGR để vẽ hình ảnh từ hầu hết mọi dữ liệu vector, trong trường hợp của bạn là shapefile. Có lẽ điều này sẽ giúp bạn.

Thí dụ:

from shapely.geometry import Polygon
from shapely.wkb import loads
from osgeo import ogr
from matplotlib import pyplot

def drawPoligon(poligon,graf):
    xLista,yLista = poligon.exterior.xy
    graf.fill(xLista,yLista,"y")
    graf.plot(xLista,yLista, "k-")

fig = pyplot.figure(figsize=(4, 4),dpi=180)
ax = fig.add_subplot(111)
file1 = ogr.Open("d:\\temp02\\datafile.shp")

layer = file1.GetLayerByName("datafile")
parcel = layer.GetNextFeature()

while parcel is not None:
    geometryParcel = loads(parcel.GetGeometryRef().ExportToWkb())
    drawPoligon(geometryParcel , ax)
    parcel = layer.GetNextFeature()


pyplot.savefig('datafile.png')

Chính xác những gì tôi cần. Cách tiếp cận này đặc biệt hữu ích vì nó không bị ràng buộc với các nguồn dữ liệu shapefile. Cảm ơn.
dùng890

6

Nhanh, rẻ (và bẩn):

  • mở và tượng trưng cho tập tin hình dạng của bạn với một qgis , udig , openjump hoặc bất kỳ GIS miễn phí nào khác,
  • nhấn nút " in màn hình ",
  • dán vào gimp và lưu dưới dạng tập tin png.

Nhược điểm: tất nhiên, độ phân giải hình ảnh không thể mịn hơn màn hình.


3

GeoTools http://geotools.org chứa tất cả các bit bạn cần để làm điều này, tôi sẽ ngạc nhiên nếu ai đó không có mã ở đâu đó để làm điều này.


2

Tôi đoán rằng nó phụ thuộc vào những gì bạn có nghĩa là nhanh chóng. Bạn có nghĩa là một cái gì đó dễ cài đặt hoặc một cái gì đó dễ sử dụng một khi bạn đã cài đặt nó.

Bạn đề cập đến MapServer và shp2img. Nếu bạn đã cài đặt MapServer, có lẽ bạn có thể viết một tập lệnh MapScript (Python hoặc php) khá đơn giản sẽ lặp qua một thư mục của shapefiles và hiển thị hình ảnh của chúng với ký hiệu mặc định.



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.