Ridurre la risoluzione di uno shapefile in R (o QGIS se necessario)


12

Sto usando gli shapefile della storia dei confini degli Stati Uniti da NHGIS per creare mappe in R. Questi shapefile hanno una risoluzione molto più alta di quella di cui ho bisogno quando faccio mappe su scala del paese: oltre 2 milioni di osservazioni per un file. C'è un modo per ridurre la risoluzione di questi shapefile in R? Se necessario, posso invece farlo in QGIS.


Puoi spiegare di più. La risoluzione è associata alle immagini. Vuoi dire che ci sono troppi nodi in un poligono, fornendo troppi dettagli? O è che ci sono troppi punti in uno shapefile punto?
Ryan Garnett,

2
@Ryan Sebbene la risoluzione sia effettivamente associata alle immagini, è un concetto che ha senso anche per i dati vettoriali. Per le caratteristiche della polilinea e del poligono può essere stimato in termini di numero di vertici utilizzati per unità di lunghezza dell'arco. La risoluzione non può sempre essere determinata in modo accurato ispezionando i dati vettoriali (si consideri un insieme di caratteristiche di punti ad alta risoluzione ma ampiamente distanziati, per esempio), da cui in genere la risoluzione viene trovata consultando metadati appropriati.
whuber

Voglio dire che ci sono molti più punti nello shapefile di quanto sia necessario per creare una mappa di una nazione. Vorrei quel livello di dettaglio per fare, diciamo, una mappa di una città. Il motivo per cui questo è importante per me è che rallenta la generazione di grafici e quindi richiede iterazione in termini di tempo.
Lincoln Mullen,

Risposte:


9

È possibile utilizzare gSimplifydal rgeospacchetto e, se si aggiunge il topologyPreserve=TRUEflag, manterrà la topologia.

Nota che puoi ancora finire con linee sovrapposte - abbiamo bisogno di un'implementazione di questo robusto algoritmo DP in R:

http://www.sciencedirect.com/science/article/pii/S0098300413002380

[quel collegamento forse dietro un paywall]


+1 Bello da sapere. I rgeosdocumenti sono disponibili su cran.r-project.org/web/packages/rgeos/rgeos.pdf .
whuber

1

Un metodo standard per "assottigliare" le forme lineari (compresi i confini dei poligoni) è l' algoritmo Douglas-Peucker . Almeno due Rpacchetti implementano questo: dpnel pacchetto shapefiles e thinnedSpatialPolynel pacchetto Guerry .

Si noti che l'assottigliamento dei poligoni adiacenti in genere crea lievi lacune e sovrapposizioni nei loro confini: non rispetta le relazioni topologiche tra loro. Non sono a conoscenza di alcun Rpacchetto che mantenga la topologia durante il diradamento. Per scopi di mappatura su piccola scala come questi, ciò non dovrebbe costituire un problema serio.


Per inciso, perché nessuno sa più come pronunciare il tedesco :-), Tom Poiker ha cambiato l'ortografia del suo nome qualche tempo fa.


Vuoi stare molto attento quando stai "assottigliando" la geometria. Se si hanno più livelli che condividono i limiti, l'assottigliamento può creare spazi vuoti, causando errori visivi e di precisione. L'eccessivo assottigliamento può rendere i confini frastagliati e semplificati. Ti consigliamo di giocare e testare con le tolleranze all'interno della semplificazione.
Ryan Garnett,
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.