Come posso generare immagini di miniature da molti shapefile?


9

Un collega e io abbiamo recentemente pubblicato un progetto Open Source chiamato Mapoteca che è un insieme di script Python che si integra con un'installazione GDAL / FWTools che consente una panoramica completa delle directory alla ricerca di dati spaziali ed estrazione di estensione, geometria, numero di elementi, proiezione e l'utente lo scrive in un file CSV. Stiamo lavorando alla parte che descrive i file DBF associati e volevamo generare un'immagine di anteprima di ogni file di forma, conosci un modo per generare queste miniature in jpeg o png usando Python?

Risposte:




2

Il modo più semplice sarebbe quello di chiamare gdal_rasterize usando subprocess.call (), ma sospetto che non faccia alcuna interpolazione quindi sarebbe alias al punto di illegibilità se si generasse un'immagine di dimensioni ridotte direttamente dai dati. Quindi dovresti generare un'immagine temporanea "di dimensioni ragionevoli" * e utilizzare la libreria di immagini Python per ridimensionarla alla dimensione desiderata.

Ma mi aspetto che il problema più grande sarà su quali attributi baserai il tuo stile? Gli Shapefile non hanno informazioni di visualizzazione intrinseche poiché sono sicuro che tu sia a conoscenza, quindi dovrai trovare un modo per decidere quali colori usare. gdal_rasterize ti dà la possibilità di farlo, ma la scelta è normalmente basata su conoscenze specifiche del dominio. Per avere uno strumento generico, dovrai avere uno schema di stile generico.

* Anche questo è qualcosa per cui potresti dover fare alcune regole codificate. Forse inizia con una dimensione di pixel ideale (diciamo 10m per pixel) e aumentala se l'immagine risultante è troppo grande per essere pratica.



1

Solo per completezza - mapserver può anche rendere belle mappe da una gamma di dati di base, su linea di comando usando l' utilità shp2img . Ancora una volta, dovrai decidere uno stile molto generico e molto semplice che si adatti ai tuoi scopi.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.