Membuat gambar sederhana dari data vektor

14

Adakah yang bisa menyarankan cara cepat (dan lebih disukai open source) untuk membuat gambar dari shapefile. Sebagai contoh, saya memiliki shapefile yang berisi batas-batas parsel, saya ingin membuat file png yang menggambarkan parsel-parsel ini. Simbologi yang diperlukan untuk gambar ini adalah tulang kosong (outline padat dan isi).

Saya tahu bahwa shp2img dari MapServer akan melakukan trik. Saya hanya ingin tahu apakah ada hal lain yang tersedia.

Referensi apa pun ke alat yang telah dikompilasi atau selamat datang dari api / sdks.

pengguna890
sumber
Mungkin pertanyaan ini dapat diberi judul "Membuat gambar sederhana dari data vektor (mis. Bentuk)" sehingga pertanyaan yang lebih umum? Anda masih mendapatkan jawaban Anda, tetapi ada lebih banyak insentif bagi orang lain untuk melihat / menjawab juga. Saya juga menyarankan untuk mengubah "dan open source" menjadi "open source" untuk alasan yang sama.
Mark Ireland
Poin bagus, suntingan diterapkan.
user890

Jawaban:

15

Anda dapat menggunakan python (modul: shapley , GDAL / OGR , numpy , matplotlib ) dan GDAL / OGR untuk menggambar gambar dari hampir semua sumber data vektor, jika Anda shapefile. Mungkin ini akan membantu Anda.

Contoh:

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')
Mario Miler
sumber
Apa yang saya butuhkan. Pendekatan ini sangat berguna karena tidak terkait dengan sumber data shapefile. Terima kasih.
user890
6

Cepat, murah (dan kotor):

  • buka dan lambangkan file bentuk Anda dengan qgis , udig , openjump atau GIS gratis lainnya,
  • tekan tombol " print screen ",
  • rekatkan di gimp dan simpan sebagai file png.

Kelemahan: tentu saja, resolusi gambar tidak bisa lebih halus dari resolusi layar.

Julien
sumber
3

GeoTools http://geotools.org berisi semua bit yang perlu Anda lakukan ini, saya akan terkejut jika seseorang belum memiliki kode di suatu tempat untuk melakukan ini.

Ian Turton
sumber
2

Saya kira itu tergantung pada apa yang Anda maksud dengan cepat. Maksud Anda sesuatu yang mudah dipasang atau sesuatu yang mudah digunakan setelah Anda menginstalnya.

Anda menyebutkan MapServer dan shp2img. Jika Anda memasang MapServer, Anda mungkin bisa menulis skrip MapScript (Python atau php) yang cukup sederhana yang akan di-loop melalui folder shapefile dan membuat gambarnya dengan simbologi default.

DavidF
sumber