Creando imágenes simples a partir de datos vectoriales

14

¿Alguien puede sugerir una forma rápida (y preferiblemente de código abierto) para crear una imagen desde un shapefile? Por ejemplo, tengo un shapefile que contiene límites de parcela, quiero crear un archivo png que describa estas parcelas. La simbología requerida para esta imagen será escuálida (contorno y relleno sólidos).

Sé que shp2img de MapServer haría el truco. Solo tengo curiosidad si hay algo más disponible.

Cualquier referencia a herramientas precompiladas o api / sdks welcome.

    
pregunta user890 01.11.2010 - 14:42

6 respuestas

15

Puedes usar python (módulos: shapley , GDAL / OGR , numpy , matplotlib ) y GDAL / OGR para dibujar imágenes de casi cualquier vector Fuente de datos, en su caso shapefile. Tal vez esto te ayude.

Ejemplo:

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')
    
respondido por el Mario Miler 01.11.2010 - 17:45
6

Rápido, barato (y sucio):

  • abra y simbolice su archivo de formas con un qgis , udig , openjump o cualquier otro SIG gratuito,
  • presiona el botón " imprimir pantalla ",
  • pega en gimp y guárdalo como archivo png.

Inconveniente: por supuesto, la resolución de la imagen no puede ser más fina que la de la pantalla.

    
respondido por el julien 01.11.2010 - 17:56
3

GeoTools enlace contiene todos los bits que necesita para hacer esto. Me sorprendería si alguien no tuviera el código para hacerlo. esta.

    
respondido por el Ian Turton 01.11.2010 - 15:19
2

Supongo que depende de lo que entiendas rápido. ¿Quieres decir algo fácil de instalar o algo que es fácil de usar una vez que lo tienes instalado?

Mencionas MapServer y shp2img. Si tiene instalado MapServer, probablemente podría escribir un script de MapScript (Python o php) bastante simple que recorrería una carpeta de shapefiles y renderizaría imágenes con la simbología predeterminada.

    
respondido por el DavidF 01.11.2010 - 17:21
1

Esta pregunta ya está respondida, pero pondré información adicional, ya que podría ser útil para alguien. Esta lista de correo explica cómo convocar a SHP a imágenes, y actualmente estoy trabajando con ella para completar la tarea: enlace

    
respondido por el Mykolas Simutis 01.03.2011 - 14:02
0

Documenté esta solución hace poco tiempo con dos métodos diferentes.

Uno que usa Python puro, que se ejecutará en cualquier lugar que Python haga: enlace

Y uno usando la biblioteca de imágenes de Python: enlace

    
respondido por el GeospatialPython.com 04.11.2011 - 20:32

Lea otras preguntas en las etiquetas