Comment générer des images miniatures à partir de nombreux fichiers de formes?

9

Un collègue et moi avons récemment publié un projet Open Source appelé Mapoteca qui est un ensemble de scripts Python qui s'intègre à une installation GDAL / FWTools permettant une revue complète des répertoires à la recherche de données spatiales et en extrayant l'étendue, la géométrie, le nombre d'éléments, la projection et l'utilisateur l'écrivant dans un fichier csv. Nous travaillons sur la partie qui décrit les fichiers DBF associés et nous voulions générer une vignette de chaque fichier de forme, connaissez-vous un moyen de générer ces vignettes en jpeg ou png en utilisant Python?

jdeltoro1973
la source

Réponses:

3

J'avais posté une question sur la création d'images à partir de données vectorielles que vous pourriez trouver utiles. La réponse acceptée, la combinaison de galbe, d'ogr, de matplotlib et de numpy semble que cela fonctionnerait bien pour vous.

user890
la source
2

Le moyen le plus simple serait d'appeler gdal_rasterize à l'aide de subprocess.call (), mais je soupçonne qu'il ne fait aucune interpolation, il serait donc alias au point d'illisibilité si vous générez une image de la taille d'une miniature directement à partir des données. Vous devez donc générer une image temporaire "de taille raisonnable" * et utiliser la bibliothèque d'images Python pour la mettre à l'échelle à la taille souhaitée.

Mais je m'attends à ce que le plus gros problème soit sur quels attributs baserez-vous votre style? Les fichiers de formes n'ont aucune information d'affichage inhérente comme vous en êtes sûr, vous devrez donc trouver un moyen de décider des couleurs à utiliser. gdal_rasterize vous donne la possibilité de le faire, mais le choix est normalement basé sur des connaissances spécifiques au domaine. Pour avoir un outil générique, vous devrez avoir un schéma de style générique.

* C'est aussi quelque chose pour lequel vous devrez peut-être faire quelques règles codées en dur. Commencez peut-être par une taille de pixel idéale (disons 10 m par pixel) et augmentez-la si l'image résultante est trop grande pour être pratique.

MerseyViking
la source
1

Par souci d'exhaustivité - mapserver peut également afficher de belles cartes à partir d'une gamme de données de base, en ligne de commande à l'aide de l' utilitaire shp2img . Encore une fois, vous devrez décider d'un style très générique et très simple qui correspond à vos besoins.

relouer
la source