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.

user890
la source
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')
Mario Miler
la source
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.

julien
la source
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.

Ian Turton
la source
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.

DavidF
la source