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.


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')

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.



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.



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.