dati territoriali socio economici pronti per la stampa in 3D 3

Share Button

sanfrancisco_prostitution

SHP2STL

Doug McCune, ha creato l’interessante libreria “shp2stl” che trasforma un file in formato .shp (usato per i dati geografici vettoriali) in formato stl (usato nella prototipazione 3D per i CAD).
Il formato stl è comunemente usato nella stampa 3D. Questo formato può essere visualizzato con diversi software, fra cui l’italianissimo Meshalb.
GitHub offre un visualizzatore online di stl se il file caricato in un repository.

L’idea geniale di Doug è stata quella di creare mappe 3D fisiche che rappresentino dati di tipo socio-economico.
L’esempio più affascinante viene dalle stampe del crimine a San Francisco.

Un esempio con dati.trentino.it

Affascinato dal tutto ho provato ad elaborare qualcosa partendo da dagli indicatori statistici per comunità di valle del Trentino scaricabili dal portale open data dati.trentino.it.
Come esempio ho preso il dataset del tasso di turisticità (espresso in percentuale) incrociato con le geometrie delle comunità di valle filtrato all’anno 2013.

Ho così ottenuto un file csv con le 16 Comunità di Valle e relativi indicatore di turisticità del 2013.
L’indicatore è calcolato come “le presenze medie giornaliere in strutture alberghiere. complementari e alloggi privati su popolazione residente per 100” (fonte: servizio statistica Provincia Autonoma di Trento)

idcomunitasedevalore
1valle di fiemme cavalese19.9
2primierotonadico25.1
3bassa valsuganaborgo valsugana2.6
4alta valsuganapergine valsugana8.7
5cembrafaver1.7
6val di noncles4.4
7val di solemale'45.4
8giudicarietione di trento18.0
9alto garda e ledroriva del garda19.5
10vallagarinarovereto1.2
11ladino di fassapozza di fassa83.5
12altopiano di folgaria, lavarone e lusernalavarone53.8
13rotalianamezzocorona0.7
13rotalianamezzocorona0.7
14paganellaandalo84.5
15val d'adigetrento2.0
16valle dei laghivezzano1.4

(fare clic sulla colonna “valore” per ordinare la tabella)

Apparentemente la tabella sembra presentare un errore in quanto il valore della comunità di valle Rotaliana-Königsberg è ripetuto due volte.
Il file è stato generato incrociando i dati del servizio statistica con il file con le geometrie delle comunità di valle prodotto dal servizio servizio urbanistica e tutela del paesaggio.
Il dato geografico delle comunità di valle presenta 17 geometrie in quanto, il comune di Zambana, appartenente alla comunità di valle in questione si estende su un’enclave che si trova a cavallo fra altre comunità di valle.

L’associazione fra indicatori e geometrie permette di creare una mappa coropletica colorando le aree con una scala dall’arancio (minimo) al rosso (massimo) in relazione al valore dell’indicatore.
ma la conversione in .stl genera poi quel fascino del 3D che fa poi venire voglia di stampare il risultato

angolo dello spippolatore

La struttura dei dati

Come già visto precedentemente gli ingredienti base sono:
un file di tipo tabellare con un indicatore associabile ad una geometria o attraverso la stessa oppure tramite un identificatore univoco comune
un file contenente dati geografici in formato vettoriale a cui poter associare, per ogni geometria, un attributo
nell’esempio riportato si è scelto pertanto il tasso di turisticità delle comunità di valle in formato .csv e il vettoriale dei confini delle comunità di valle del Trentino.
Purtroppo le due risorse, così come sono, richiedono prima di qualche accorgimento:
Il file .csv, che usa come separatore il punto e virgola, si presenta su 494 righe e 3 colonne. La prima riga contiene l’intestazione e descrive tre variabili: anno, codEnte e valore.
Di queste quella leggermente sibillina suona la seconda che espansa sta per “codice ente” e rappresenta il codice univoco con cui si distinguono le comunità di valle.
I metadati sono descritti all’indirizzo http://www.statweb.provincia.tn.it/INDICATORISTRUTTURALISubPro/selezione.aspx?idind=48 da cui è anche possibile fare estrazioni mirate per anno e per unità territoriali.
I valori contenuti da “codEnte” vanno da 1001 a 1016 oltre al valore 9999. Ad esclusione dell’ultimo (che rappresenta il valore per l’intero territorio della Provincia Autonoma di Trento) ciascuno riferisce ad una precisa comunità di valle.
Il file con le geometrie delle comunità di valle, invece, si presenta con un file .zip che contiene al suo interno il numero minimo di file con cui distribuire uno shapefile.
Si tratta del file delle geometrie (ammcva.shp), degli attributi (ammcva.dbf) e degli indici fra attributi e geometrie (ammcva.shx). Manca, purtroppo, il file che descrive la proiezione usata per rappresentare i dati.
La scheda informativa del dataset riporta ETRS89, andando a controllare poi ulteriore documentazione allegata si scopre che si tratta della ETRS89 / UTM zone 32N codice EPSG:25832.
Al sito spatialreference.org è disponibile la sua codifica in formato .prj (il quarto file necessario per distribuire shapefile riusabili).
Scaricando il file e rinominadolo in ammcva.prj si risolve il problema.
Lo shapefile può essere così visualizzato in un software come QGIS e, da lì investigarlo.

creare il file .stl manualmente

qgis_dataGli attributi associati alle geometrie sono 7: AREA (area della geometria), PERIMETER (perimetro della geometria), COMUNITA (identificativo univoco delle geometrie associate ad una singola comunità di valle), PROV (codice istat per la provincia autonoma di trento), DESC_ (nome della comunità di valle) e SEDE (nome del comune dove si trova la sede della relativa comunità di valle).
I campi utili per associare i dati del file .csv alle geometrie sono codEnte e COMUNITA. Con la differenza che il primo si presenza con sequenza da 1001 a 1016 e il secondo da 1 a 16.
Inoltre, il file .csv, va filtrato per l’anno che si vuole rappresentare.
A questo punto attraverso un foglio di calcolo (es. LibreOffice) vanno modificati i valori di “codEnte” in modo d’averli nella sequenza da 1 a 16 e si estrae una copia dei dati filtrando per l’anno di interesse (es. 2013).
Ottenuto il nuovo file si segue la procedura di QGIS attraverso cui estendere gli attributi di uno shapefile attraverso un file tabellare in formato csv e si genera il nuovo file .shp.
Per la creazione del file .stl serve:

  • installare node.js
    (le istruzioni sono al sito ufficiale)
  • installare shp2stlnpm install shp2stl
  • creare un file .js con i comandi di conversioneQuesta operazione richiede la creazione di un file di testo, qui un esempio per il file

    le informazioni importanti da conoscere sono:

    • riga 2: nome del file .shp da trasformare
    • riga 10: valore (da 0 a 1) per semplificare le geometrie (utile per generare file più piccoli)
    • riga 17: nome del file .stl da generare
  • eseguire il file .js con il comando nodejs crea_stl.js

automatizzare il tutto con uno script

Quanto descritto sopra è automatizzabile con un po’ di bash scripting e appoggiandosi a tool come wget, spatialite e ogr2ogr.
È richiesta un po’ di conoscenza di SQL, ma non è così complesso come si può immaginare.

Le righe dalla 1 alla 4 servono a scaricare i dati.
Dalla 5 alla 14 invece ad incrociare i dati delle tue tabelle.
Interessante l’uso dei comandi “CREATE VIRTUAL TABLE […]” i quali permettono di accedere ai file .csv e .shp senza importarli in spatialite ma astraendoli come se fossero tabelle.
Nel comando successivo la query SQL necessaria per unire le tabelle si occupa anche di sistemare i nomi delle colonne e di conciliare i due indici (codEnte e COMUNITA)
E, infine, quella per generare il file .shp.
Il nuovo file csv viene creato da un comando spatialite (riga 15) mentre ogr2ogr si occupa di creare un file .geojson utile allo script per nodejs con cui si genera il file .topojson necessari alla creazione del file .stl
La riga 22 esegue il file shp2stl_tasso_turistico_comunita_valle_2013.js
Qui riportato

Questo si distingue rispetto al precedente solo perchè risolve la questione di generare un file .topojson completo della rappresentazione come mappa coropletica facendo uso dell’algoritmo jenks breaks che definisce i colori rispetto all’indicatore scelto e alle dimensioni della geoemtria a cui si applica rispetto alle altre per evitare confusioni di valutazioni quando l’area è piccola rispetto alle altre ma ha un indicatore alto.
Il codice è rilasciato su github

Share Button

3 thoughts on “dati territoriali socio economici pronti per la stampa in 3D

  1. Reply napo Gen 26,2015 23:27

    Nota:
    Doug McCane informa che shp2stl non produce un file perfetto per la visualizzazione, occorre lavoraci un attimo con blender o mashlab o altri tool.
    Questo però non incide con il risultato nella stampa.

  2. Reply napo Feb 13,2015 11:29

    la trasformazione in STL con visualizzatore 3D lo si ottiene anche usando il plugin QGIS2Threejs di QGIS
    Es.
    http://labmod.org/maps/matera3d/

  3. Pingback: La formula per calcolare come aprire i dati ed alcuni consigli per l’Open Data Day ← de.straba.us

Leave a Reply