Création d'une image simple à partir de données vectorielles


14

Quelqu'un peut-il suggérer un moyen rapide (et de préférence open source) de créer une image à partir d'un fichier de formes. Par exemple, j'ai un fichier de formes contenant des limites de parcelle, je veux créer un fichier png décrivant ces parcelles. La symbologie requise pour cette image sera les os nus (contour plein et remplissage).

Je sais que shp2img de MapServer ferait l'affaire. Je suis simplement curieux de savoir s'il y a autre chose disponible.

Toutes les références aux outils précompilés ou aux api / sdks sont les bienvenues.


Peut-être que cette question pourrait être renommée "Créer une image simple à partir de données vectorielles (par exemple Shape)" afin que ce soit une question plus générique? Vous obtenez toujours votre réponse, mais il y a plus d'incitation pour les autres à voir / répondre aussi. Je suggère également de remplacer "et open source" par "de préférence open source" pour la même raison.
Mark Ireland

Bons points, modifications appliquées.
user890

Réponses:


15

Vous pouvez utiliser python (modules: shapley , GDAL / OGR , numpy , matplotlib ) et GDAL / OGR pour dessiner des images à partir de presque toutes les sources de données vectorielles, dans votre cas, le fichier de formes. Peut-être que cela vous aidera.

Exemple:

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

Exactement ce dont j'avais besoin. Cette approche est particulièrement utile car elle n'est pas liée aux sources de données du fichier de formes. Merci.
user890

6

Rapide, bon marché (et sale):

  • ouvrez et symbolisez votre fichier de forme avec un qgis , udig , openjump ou tout autre SIG gratuit,
  • appuyez sur le bouton " écran d'impression ",
  • coller dans gimp et enregistrer au format png.

Inconvénient: bien sûr, la résolution de l'image ne peut pas être plus fine que celle de l'écran.


3

GeoTools http://geotools.org contient tous les bits dont vous avez besoin pour faire cela, je serais surpris si quelqu'un n'a pas déjà le code quelque part pour le faire.


2

Je suppose que cela dépend de ce que vous entendez par rapide. Voulez-vous dire quelque chose de facile à installer ou quelque chose qui est facile à utiliser une fois que vous l'avez installé.

Vous mentionnez MapServer et shp2img. Si MapServer est installé, vous pourriez probablement écrire un script MapScript (Python ou php) assez simple qui ferait une boucle dans un dossier de fichiers de formes et en rendrait des images avec la symbologie par défaut.



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.