14 votos

Creando una imagen simple a partir de datos vectoriales

¿Puede alguien sugerir una manera rápida (y preferiblemente de código abierto) de crear una imagen a partir de un archivo de formas. Por ejemplo, tengo un archivo de formas que contiene los límites de las parcelas, y quiero crear un archivo png que represente estas parcelas. La simbología requerida para esta imagen será mínima (contorno y relleno sólidos).

Sé que shp2img de MapServer funcionaría. Solo tengo curiosidad por saber si hay algo más disponible.

Se aceptan referencias a herramientas precompiladas o api's/sdks.

15voto

UberAlex Puntos 1854

Puedes usar python (módulos: shapley, GDAL/OGR, numpy, matplotlib) y GDAL/OGR para dibujar imágenes desde casi cualquier fuente de datos vectoriales, en tu caso un shapefile. Quizás esto te ayude.

Ejemplo:

from shapely.geometry import Polygon
from shapely.wkb import loads
from osgeo import ogr
from matplotlib import pyplot

def drawPoligon(poligono, grafico):
    xLista, yLista = poligono.exterior.xy
    grafico.fill(xLista, yLista, "y")
    grafico.plot(xLista, yLista, "k-")

fig = pyplot.figure(figsize=(4, 4), dpi=180)
ax = fig.add_subplot(111)
archivo1 = ogr.Open("d:\\temp02\\datafile.shp")

capa = archivo1.GetLayerByName("datafile")
parcela = capa.GetNextFeature()

while parcela is not None:
    geometriaParcela = loads(parcela.GetGeometryRef().ExportToWkb())
    drawPoligon(geometriaParcela, ax)
    parcela = capa.GetNextFeature()

pyplot.savefig('datafile.png')

6voto

Paul G Puntos 1615

Rápido, barato (y sucio):

  • abre y simboliza tu archivo de formas con un qgis, udig, openjump u otro sistema de información geográfica gratuito,
  • pulsa el botón "print screen",
  • pega en gimp y guarda como archivo png.

Inconveniente: por supuesto, la resolución de la imagen no puede ser mayor que la de la pantalla.

3voto

Adam Ernst Puntos 6939

GeoTools http://geotools.org contiene todas las partes que necesitas para hacer esto, me sorprendería si alguien no tiene ya el código en algún lugar para hacer esto.

2voto

Josh Puntos 569

Supongo que depende de lo que entiendas por rápido. ¿Te refieres a algo fácil de instalar o algo que sea fácil de usar una vez que lo tengas instalado?

Mencionas MapServer y shp2img. Si tienes MapServer instalado, probablemente podrías escribir un script MapScript (Python o php) bastante simple que recorra una carpeta de shapefiles y genere imágenes de ellos con una simbología predeterminada.

1voto

Esta pregunta ya está respondida, pero agregaré información adicional, ya que puede ser útil para alguien. Esta lista de correo explica cómo convertir SHP a imágenes, y actualmente estoy trabajando en ello para completar la tarea: http://lists.osgeo.org/pipermail/qgis-user/2010-October/010239.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X