Come dissolvono i poligoni dallo shapefile usando strumenti open source?


10

Nel mio progetto attuale sto visualizzando i dati su una mappa che rappresenta alcuni valori per ciascuna area amministrativa di un paese. Mi è stato dato uno shapefile di questo paese, che sto convertendo in GeoJSON per l'uso con PolyMaps. Ora ho l'obbligo di raggruppare più aree in più grandi, poiché non ci sono dati per alcune delle parti più piccole, ma è possibile acquisire dati aggregati per quelle più grandi. Questi cluster sono predefiniti (ad es. A + B + C = D), quindi ho pensato che sarebbe stato più semplice produrre un file di forma cluster e convertirlo successivamente in GeoJSON.

Ma come posso creare un cluster del genere, preferibilmente automatizzato e con strumenti open source? Ovviamente anche qualsiasi altro modo sensato è il benvenuto.

Risposte:


5

Puoi sempre utilizzare uno strumento open source come QGIS per aprire il tuo file di forma e unire le funzionalità utilizzando lo strumento integrato "Unisci funzionalità selezionate" (basta selezionare funzionalità, fare clic su Unisci, selezionare gli attributi da ereditare nella nuova funzionalità unita, fatto).

Questo ovviamente non ha molto senso se stiamo parlando di centinaia o migliaia di fusioni. Io stesso mi chiedevo l'altro giorno se è possibile unire le caratteristiche "per attributo" in QGIS?

EDIT: Ok, sono stupido, se hai un attributo comune per tutte le funzionalità che stai per "raggruppare" (come un nome di provincia o di contea), questo sarebbe il caso dello strumento dissolve. Apri il tuo shapefile, scegli dissolve (in QGIS si trova in Vettore> Strumenti di geoprocessing> Dissolvi), seleziona la colonna con il nome comune sopra menzionato e avvia il processo. Questo dovrebbe sperare (se non ti ho frainteso) sfociare in quello che stavi cercando.


In generale, un buon consiglio, e se tutto si riduce al lavoro manuale, troverò qualcuno che creerà questi shapefile per me con QGIS come hai descritto. Tuttavia, vorrei essere in grado di definire quei cluster (ad esempio tramite codici NUTS: unire FR413 e FR411 in qualcosa chiamato _FRX1) e quindi eseguire uno script che genererebbe quei file di forma cluster. Voglio essere in grado di correggere errori o adeguare le modifiche accelerate senza il sovraccarico di uno strumento GUI. È perfettamente possibile che un giorno quei cluster vengano definiti dagli utenti finali, quindi ho bisogno di un po 'di flessibilità.
Nikolai Prokoschenko,

Non lo uso mai, ma penso che tu possa usare la console per fare tutto in QGIS, quindi non c'è bisogno della GUI. Dovrai anche definire sempre quei cluster in una sorta di tabella, anche se fai completamente affidamento su una soluzione con script. Quindi potresti evitare di rovinare il tuo shapefile unendoti a questo tavolo e dissolvendoti. Immagino che anche questo sarebbe scriptabile?
SAnderka,

perfettamente possibile, sono un principiante in tutte le cose GIS. Esaminerò lo scripting di QGIS, grazie.
Nikolai Prokoschenko,

2

Per meno lavoro manuale, puoi dare un'occhiata a SpatiaLite. Puoi importare facilmente gli shapefile usando ad es

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Quindi per la parte dissolvente:

Mi piacerebbe essere in grado di definire quei cluster (ad esempio tramite codici NUTS: unire FR413 e FR411 in qualcosa chiamato _FRX1)

La funzione che ti serve qui è GUnion (). Potresti voler definire i tuoi "cluster" in una seconda tabella. Quindi puoi unire il cluster e la tabella delle aree e utilizzare GUnion () con GROUP BY per creare la Union_table finale.

È quindi possibile esportare in shapefile utilizzando .dumpshp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Se hai bisogno di GeoJSON, puoi convertire il file ora.

È possibile scrivere un breve script, ad esempio in Python, che gestisca tutti questi carichi, join e dump.


Sembra molto promettente, lo sperimenterò! Grazie! Potresti spiegare cosa fanno le linee UPDATEe SELECT?
Nikolai Prokoschenko,
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.