Come generalizzare le coste?


12

Ho una vasta serie di punti dati che rappresentano essenzialmente la costa del mondo. Non conosco la risoluzione esatta, ma direi che si trova a circa 5-10 metri.

Immagina una serie di punti che rappresentano una costa frastagliata. Con una risoluzione di 1 m, vediamo tutti i dettagli e abbiamo bisogno di 50 punti dati per rappresentare correttamente la costa, tuttavia, con una risoluzione di 10 km, la costa sembra una linea retta e avremmo bisogno solo di 2 punti.

Sto scrivendo un'applicazione di mappatura che richiederà il ridimensionamento dei dati da risoluzioni "full-planet" a risoluzioni "street". Ho bisogno di aiuto per ridurre la risoluzione dei miei punti dati e, successivamente, la quantità di dati per risoluzioni più ampie.

Ho letto di Vector-Tiling e penso che questa sarà la soluzione migliore (sto già facendo qualcosa del genere), tuttavia, a basse risoluzioni, il mio set di dati è ancora enorme, il che significa che il prestito richiede un tempo [relativamente] lungo tempo, dove le alte risoluzioni sono veloci perché il set di dati "efficace" è piccolo (sottoinsieme del tutto).

Sto cercando di determinare come prendere il mio set di dati di grandi dimensioni e ridurne la scala in modo che i dati della piastrella della mia vista "pianeta intero" siano di dimensioni gestibili. Come si creano i set di dati secondari del riquadro dal set di dati completo più grande?

Sono felice di usare uno strumento, ma preferirei farlo da solo, nel tentativo di imparare come è fatto.


1
Hai controllato le risposte a gis.stackexchange.com/questions/6585/… ? Ti preghiamo di approfondire se ritieni che la tua domanda sia diversa.
underdark

1
Sembra che la domanda dovrebbe riguardare le coste anziché i "punti". Man mano che la risoluzione diminuisce, le piccole isole dovrebbero scomparire? va bene attraversare le coste intorno alle magre isole serpentine?
Kirk Kuykendall,

Se vuoi solo fare un lavoro accettabile e andare avanti, la risposta di @R Thiede è probabilmente il posto migliore da cui iniziare. Se vuoi lavorare sulla vera sfida, semplificando il lavoro di linea senza perdere il significato delle forme, consulta le relative domande gis.stackexchange.com/questions/38/… e gis.stackexchange.com/questions/440/… .
Matt Wilson

Risposte:


7

Il modo in cui risolverai questo problema dipende davvero dal caso e da quanto sia importante la topologia effettiva per te (rispetto solo al tempo visivo / al tempo di rendering). Poiché il tuo obiettivo finale è generalizzare le coste, potresti trovare utili alcune idee sulla generalizzazione.

Un approccio utilizza il buffering, come mostrato qui . Ho anche avuto un problema simile qualche tempo fa e ho dettagliato la mia soluzione qui .

In breve, è possibile utilizzare set di dati vettoriali separati (o almeno geometrie separate), generalizzati a diversi livelli. Questo risolve il tuo problema di base sebbene non utilizzi le tessere, ma ovviamente puoi comunque usarle se vuoi. Naturalmente, se hai intenzione di dividere il tuo set di dati in riquadri basati su una griglia, assicurati di generalizzare prima, o finirai con degli spazi tra i riquadri.


+1 per una risposta ponderata. Benvenuti nel nostro sito, Rüdiger!
whuber

5

Dovresti preparare diverse versioni generalizzate del tuo set di dati per i livelli di zoom "intero pianeta" fino allo zoom ravvicinato.

Un algoritmo di generalizzazione classico è l'algoritmo Douglas-Peucker . Dovrai prima collegare i punti alle linee costiere se non l'hai già fatto.


2
La libreria GEOS ha algoritmi Douglas-Peucker integrati che puoi usare, se vuoi codificare tu stesso. Potresti prendere in considerazione la topologia, nel qual caso lo strumento GRASS v.generalize può essere d'aiuto.
lagerratrobe,

Ciao @lagerratrobe. Ho creato questa wiki della community di risposta, quindi dovresti essere in grado di modificarlo direttamente e aggiungere entrambe le soluzioni GEOS e GRASS.
underdark


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.