Perché GRASS elimina i poligoni quando si utilizza v.generalize?


9

Sto affrontando un dilemma mentre provo a usare v.generalize per semplificare i poligoni che sono simili per dimensioni e struttura alle contee o agli Stati degli Stati Uniti. Spesso, perdo i poligoni dal set di dati dopo aver eseguito un metodo di semplificazione o di livellamento su di essi. Ciò che mi preoccupa è che non sembra esserci alcun modello coerente in questo comportamento. In alcuni casi lo stesso set di comandi applicato a set di dati diversi causa risultati completamente diversi. Di conseguenza, non sono in grado di sviluppare un flusso di lavoro ripetibile e con riluttanza sto iniziando a cercare altri strumenti di semplificazione che preservino la topololgia. Ecco un esempio:

# LOAD AND CLEAN
v.in.ogr dsn=counties.shp output=county
v.build.polylines input=county output=county_polylines
v.clean input=county_polylines output=county_clean tool=bpol,rmdupl type=boundary

# SMOOTH AND GENERALIZE
v.generalize input=county_clean output=county_smooth method=sliding_averaging look_ahead=7 slide=1
v.generalize input=county_smooth output=county_general method=douglas threshold=.005

Ciascuno dei passaggi v.generalize provoca la scomparsa di alcuni poligoni. Vorrei capire perché questo accade. È dovuto al caricamento di funzionalità in memoria insufficiente? I miei parametri sono "stretti" abbastanza da escludere le caratteristiche perché hanno soddisfatto una sorta di criteri geometrici? (Si noti che sto perdendo alcune funzionalità molto grandi.) C'è un problema con la topologia delle funzioni rilasciate che ne causa la cancellazione? Relativamente a quest'ultima domanda, presumo che build.polylines e operazioni pulite che faccio inizialmente dovrebbero occuparsene, ma non ne sono del tutto certo e non riesco a trovare buone istruzioni per risolvere questo problema. Ci sono?

Apprezza qualsiasi intuizione che le persone possono fornire, in particolare quelle basate sull'esperienza personale con lo strumento v.generalize.

Roger


sembra che i tuoi dati potrebbero essere in lat lon. che sarebbe sufficiente per perdere dati con la soglia .005. puoi verificare che stai usando un c planare?
Brad Nesom,

In realtà me lo sono chiesto e mi ero riproiettato in una proiezione Albers Equal Area prima di eseguire quanto sopra. Ecco i parametri di proiezione: UTENTE: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + unità = m + no_defs) . Ho ancora lo stesso problema.
Lagerratrobe,

Mi chiedo perché converti i poligoni in polilinee. C'è un motivo specifico per cui non si semplifica direttamente i poligoni?
underdark

Ok, ho estratto la parte v.build.polylines, quindi "county_clean" ora è un livello poligonale. Perdono ancora un sacco di aree. Inizialmente avevo pensato che potesse semplificare la semplificazione, ma dal momento che "bpol" in v.clean sta anche rompendo i poligoni, forse non importa.
Lagerratrobe,

1
solo una domanda stupida. Sei sicuro che stai perdendo i dati utilizzando v.generalize e non v.clean ?
simo

Risposte:


4

Risposta del team di sviluppo di GRASS.

"La scomparsa dei poligoni [nella v 6.4.1] è avvenuta perché sono stati eliminati i confini smussati che violavano la topologia vettoriale, dopo che tutti i confini topologicamente errati. I confini sono ora [in 6.4.2] levigati / semplificati solo se la modifica non violare la topologia vettoriale. "

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.