Warum eliminiert GRASS Polygone bei Verwendung von v.generalize?

9

Ich stehe vor einem Dilemma, während ich versuche, mit v.generalize Polygone zu vereinfachen, die in Größe und Struktur den US-Counties oder -Staaten ähnlich sind. Oft verliere ich Polygone aus dem Datensatz, nachdem ich sie entweder vereinfacht oder geglättet habe. Was mich beunruhigt, ist, dass es kein konsistentes Muster für dieses Verhalten zu geben scheint. In einigen Fällen führt derselbe Befehlssatz, der auf verschiedene Datensätze angewendet wird, zu völlig unterschiedlichen Ergebnissen. Infolgedessen kann ich keinen wiederholbaren Workflow entwickeln und suche widerwillig nach anderen Vereinfachungswerkzeugen, die die Topologie bewahren. Hier ist ein Beispiel:

# 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

Jeder der v.generalize-Schritte führt dazu, dass einige der Polygone verschwinden. Ich würde gerne verstehen, warum das passiert. Liegt es daran, dass Funktionen in unzureichenden Speicher geladen werden? Sind meine Parameter "eng" genug, um Features auszuschließen, weil sie bestimmte Geometriekriterien erfüllen? (Beachten Sie, dass ich einige sehr große Features verliere.) Gibt es ein Problem mit der Topologie der abgelegten Features, das dazu führt, dass sie gelöscht werden? Im Zusammenhang mit dieser letzten Frage gehe ich davon aus, dass build.polylines und Bereinigungsoperationen, die ich anfänglich mache, sich darum kümmern sollten, aber ich bin nicht ganz sicher, und ich kann anscheinend keine guten Anweisungen finden, die dies ansprechen. Sind da welche?

Schätzen Sie alle Erkenntnisse, die Menschen geben können, insbesondere solche, die auf persönlichen Erfahrungen mit dem Tool v.generalize beruhen.

Roger

Lagerratrobe
quelle
Es sieht so aus, als könnten sich Ihre Daten in lat lon befinden. Dies würde ausreichen, um Daten mit Ihrem .005-Schwellenwert zu verlieren. Können Sie überprüfen, ob Sie ein planares CS verwenden?
Brad Nesom
Ich habe mich tatsächlich darüber gewundert und eine Albers Equal Area-Projektion projiziert, bevor ich die oben genannten Schritte ausgeführt habe. Hier sind die Projektionsparameter: USER: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + Einheiten = m + no_defs) . Habe immer noch das gleiche Problem.
Lagerratrobe
Ich frage mich, warum Sie die Polygone in Polylinien konvertieren. Gibt es einen bestimmten Grund, warum Sie die Polygone nicht einfach direkt vereinfachen?
Underdark
Ok, ich habe den Teil v.build.polylines herausgezogen, daher ist "county_clean" jetzt eine Polygonebene. Verliere immer noch ein paar Bereiche. Ich hatte anfangs gedacht, dass es die Vereinfachung erleichtern könnte, aber da "bpol" in v.clean auch die Polygone bricht, spielt es vielleicht keine Rolle.
Lagerratrobe
1
nur eine blöde Frage. Sind Sie sicher, dass Sie Daten mit v.generalize und nicht mit v.clean verlieren ?
Simo

Antworten:

4

Antwort vom GRASS-Entwicklungsteam.

"Das Verschwinden von Polygonen [in Version 6.4.1] ist darauf zurückzuführen, dass geglättete Grenzen, die gegen die Vektortopologie verstießen, gelöscht wurden. Danach wurden alle Grenzen, die topologisch falsch waren. Grenzen werden jetzt [in 6.4.2] nur geglättet / vereinfacht, wenn die Änderung dies nicht tut." Vektortopologie verletzen. "

Lagerratrobe
quelle