Einfaches Bild aus Vektordaten erstellen

14

Kann jemand eine schnelle (und vorzugsweise Open Source) Möglichkeit vorschlagen, ein Bild aus einem Shapefile zu erstellen. Wenn ich zum Beispiel ein Shapefile habe, das Flurstücksgrenzen enthält, möchte ich eine PNG-Datei erstellen, die diese Flurstücke darstellt. Die für dieses Bild erforderliche Symbologie ist Bare-Bones (durchgezogene Kontur und Füllung).

Ich weiß, dass shp2img von MapServer den Trick machen würde. Ich bin nur neugierig, ob noch etwas verfügbar ist.

Verweise auf vorkompilierte Tools oder APIs / SDKS sind willkommen.

user890
quelle
Vielleicht könnte diese Frage den Titel "Einfaches Bild aus Vektordaten erstellen (z. B. Form)" tragen, damit es eine allgemeinere Frage ist? Du bekommst immer noch deine Antwort, aber es gibt eher einen Anreiz für andere Leute, sie auch anzusehen / zu beantworten. Aus dem gleichen Grund würde ich auch vorschlagen, "und Open Source" in "vorzugsweise Open Source" zu ändern.
Markieren Sie Irland
Gute Punkte, vorgenommene Änderungen.
User890

Antworten:

15

Sie können Python (Module: shapley , GDAL / OGR , numpy , matplotlib ) und GDAL / OGR verwenden, um Bilder aus fast jeder Vektordatenquelle zu zeichnen, in Ihrem Fall Shapefile. Vielleicht hilft dir das ja.

Beispiel:

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
quelle
Genau das, was ich brauchte. Dieser Ansatz ist besonders nützlich, da er nicht an Shapefile-Datenquellen gebunden ist. Vielen Dank.
User890
6

Schnell, billig (und dreckig):

  • Öffne und symbolisiere deine Formdatei mit einem QGIS , UDIG , OpenJump oder einem anderen freien GIS.
  • Klicken Sie auf die Schaltfläche " Bildschirm drucken ".
  • Einfügen in Gimp und Speichern als PNG-Datei.

Nachteil: Natürlich kann die Bildauflösung nicht feiner sein als die Bildschirmauflösung.

julien
quelle
3

GeoTools http://geotools.org enthält alle erforderlichen Komponenten. Es würde mich wundern, wenn jemand nicht bereits irgendwo den Code dafür hat.

Ian Turton
quelle
2

Ich denke, das hängt davon ab, was Sie unter schnell verstehen. Meinen Sie etwas einfach zu installierendes oder etwas, das einfach zu verwenden ist, sobald Sie es installiert haben?

Sie erwähnen MapServer und shp2img. Wenn Sie MapServer installiert haben, könnten Sie wahrscheinlich ein ziemlich einfaches MapScript (Python oder PHP) -Skript schreiben, das einen Ordner mit Shapefiles durchläuft und Bilder davon mit der Standardsymbologie rendert.

DavidF
quelle
1

Diese Frage ist bereits beantwortet, aber ich werde einige zusätzliche Informationen einfügen, da sie für jemanden hilfreich sein könnten. In dieser Mailingliste wird erläutert, wie Sie SHP in Images umwandeln. Derzeit arbeite ich damit, um die Aufgabe abzuschließen: http://lists.osgeo.org/pipermail/qgis-user/2010-October/010239.html

Mykolas Simutis
quelle