Come generalizzare i poligoni spaziali e conservare la topologia in R?


18

Vorrei generalizzare a SpatialPolygonsDataFrame in R per rendere la trama più efficiente. I poligoni che ho prodotto danno luogo a enormi grafici in pdf che sono lenti da caricare e difficili da integrare in un documento.

Ho provato ad usare la gSimplifyfunzione dal rgeospacchetto, ma sfortunatamente non conserva la topologia dei poligoni.

C'è un'alternativa che posso usare?


non è davvero una soluzione, ma potresti invece stampare su raster (jpg / png)? Questa domanda di StackOverflow che tratta della riduzione di formato PDF può essere utile: StackOverflow.com/questions/8521299/…
djq

la stampa delle mappe come immagine raster è un'opzione, ma quando possibile vorrei usare la grafica vettoriale. La qualità dell'immagine è migliore quando si utilizza la grafica vettoriale, soprattutto quando si guarda la versione digitale dei documenti.
tappo giallo

gSimplify()ha un parametro opzionale di topologyPreservedefault FALSE. Hai provato a impostarlo su TRUE?
krlmlr,

Risposte:


7

C'è una discussione al riguardo su r-sig-geo . Per una risposta definitiva dovresti chiedere lì, perché ci sono persone che conoscono le intuizioni di R. spaziale

Ma puoi anche farlo nelle applicazioni desktop GIS (esporta la forma usando il comando writeOGR da rgdal o writePolyShape () dai maptools) come QuantumGIS, GRASS o SAGA.

Per QuantumGIS usa Vector / Geometry Tools / Semplifica le geometrie (ho testato e non preservo la topologia, ma applicato al file di forma admin1 Romania, va bene con 2000 nodi).

Per GRASS usa v.generalize (leggi il manuale per informazioni sugli algoritmi, ce ne sono alcuni).

Per SAGA devi prima convertire il poligono in linea (Forme - Linee / Converti poligoni in Linee), quindi semplificare le linee (Forme linee / Semplificazione linea) e infine convertire le linee in poligoni (Forme - Poligoni / Converti linee in poligoni). Ho provato questo e i risultati hanno conservato la topologia.

Saluti e buona fortuna,


Nel frattempo ho anche trovato un servizio online che esegue la semplificazione conservando le topologie: mapshaper.org . L'ho usato come alternativa, in quanto sembra che non sia possibile direttamente in R (QGis non è in realtà un risparmio di topologia e non conosco gli altri pacchetti software)
yellowcap

1
Ho testato la tua osservazione con Saga 2.0.8 e il risultato non ha conservato la topologia!
Fabian Zeindl

2

Esiste ora il meraviglioso rmapshaperpacchetto di Andy Teucher che include una funzione di semplificazione che "esegue una semplificazione multi-poligono topologicamente consapevole".

Dal loro repository github, un esempio di utilizzo:

states_simp <- ms_simplify(states_sp)

dov'è states_spun spatialPolygons*oggetto.

Vedere il pacchetto README per ulteriori informazioni: https://github.com/ateucher/rmapshaper


0

ciò dovrebbe aiutare:

  • gSimplify(..., topologyPreserve=T)dal GEOSpacchetto

2
sfortunatamente l'opzione di conservazione della topologia in gSimplifynon conserva realmente la topologia su diversi poligoni. Penso che si riferisca maggiormente alla topologia di singoli o multipoligoni. Per un file di forma con molti poligoni, la topologia non viene conservata.
yellowcap
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.