Creazione di immagini semplici da dati vettoriali


14

Qualcuno può suggerire un modo rapido (e preferibilmente open source) per creare un'immagine da un file di forma. Ad esempio, ho un file di forma contenente i confini dei pacchi, voglio creare un file png che rappresenti questi pacchi. La simbologia richiesta per questa immagine sarà a ossa nude (contorno solido e riempimento).

So che shp2img di MapServer farebbe il trucco. Sono solo curioso di sapere se c'è qualcos'altro disponibile.

Tutti i riferimenti a strumenti precompilati o api's / sdks sono benvenuti.


Forse questa domanda potrebbe essere ribattezzata "Creazione di un'immagine semplice da dati vettoriali (ad es. Shape)" in modo che sia una domanda più generica? Ottieni ancora la tua risposta, ma c'è anche più incentivo per altre persone a visualizzare / rispondere. Suggerirei anche di cambiare "e open source" in "preferibilmente open source" per lo stesso motivo.
Segna l'Irlanda il

Buoni punti, modifiche applicate.
user890,

Risposte:


15

Puoi usare python (moduli: shapley , GDAL / OGR , numpy , matplotlib ) e GDAL / OGR per disegnare un'immagine da quasi tutti i tipi di dati vettoriali, nel tuo caso shapefile. Forse questo ti aiuterà.

Esempio:

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

Esattamente quello di cui avevo bisogno. Questo approccio è particolarmente utile poiché non è legato alle origini dati shapefile. Grazie.
user890,

6

Veloce, economico (e sporco):

  • apri e simboleggia il tuo file di forma con qgis , udig , openjump o qualsiasi altro GIS gratuito,
  • premere il pulsante " stampa schermo ",
  • incolla in gimp e salva come file png.

Svantaggio: ovviamente, la risoluzione dell'immagine non può essere più fine di quella dello schermo.



2

Immagino che dipenda da cosa intendi per rapido. Vuoi dire qualcosa di facile da installare o qualcosa che è facile da usare dopo averlo installato.

Citi MapServer e shp2img. Se hai installato MapServer, probabilmente potresti scrivere uno script MapScript (Python o php) piuttosto semplice che eseguirà il ciclo attraverso una cartella di file di forma e renderizzerebbe le immagini con simbologia predefinita.



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.