[FOSSGIS-Talk] Polygon so negativ puffern, dass ein bestimmter prozentualer Anteil der Polygonfläche übrig bleibt

Markus Metz markus.metz.geo at gmail.com
Do Jan 17 21:15:31 CET 2013


[Ich kann nicht direkt auf den post antworten weil ich hier ganz
frisch abonniert bin]

> Guten Tag allerseits,
>
> ich habe von einem Studenten folgende Anfrage erhalten, zu der mir auch
> keine Lösung einfällt.
> ----------------------------------------------------
> Ich würde sie gerne fragen ob es in ArcGis oder Quantum möglich ist
> nicht nur mit absoluten Werten zu Puffern sondern beispielsweise zu
> sagen: Puffer so das 70% der Fläche erhalten bleiben?
>
> Bzw. gibt es andere Werkzeuge mit denen ich Polygone regelbasiert (oder
> prozentual) puffern/vergrößern/verkleinern kann?
> ----------------------------------------
>
> Fällt jemanden dazu eine Lösung ein?

Die Puffer-Distanz ist in diesem Fall, erhalte X% der Fläche, abhängig
von der Form der Fläche. Diese Operation lässt sich leichter
verwirklichen, wenn man auf das komplette GIS-Arsenal zurückgreift,
d.h. zwischen Vektor- und Raster-Operationen hin und her wechselt, je
nachdem was gerade adäquat ist.

Die allgemeine Prozedur wäre:

1) Jedes einzelne Polygon in eine Raster-Karte konvertieren, dabei
darauf achten, dass die Auflösung weder zu niedrig noch zu hoch ist.
2) Die Raster Karte invertieren, d.h. Pixel in dem Polygon of nodata
setzen, Pixel außerhalb des Polygons auf eine gültige Zahl setzen.
3) Die Entfernung aller nodata Pixel zum nächsten nicht-nodata Pixel berechnen.
4) Die Entfernungspixel absteigend entsprechend der Entfernung sortieren.
5) Die gesuchte Entfernung ist die Entfernung, die zu dem Pixel in der
sortierten Liste mit dem index <gewünschte Prozent> / 100 * <Anzahl
Pixel> gehört.
6) Die gefundene Entfernung in die Attributtabelle des
Original-Vektors eintragen.
7) Jedes Polygon mit GEOS und dem Negativ der gefundenen Entfernung puffern.

In GRASS-GIS 7 geht das mit:

v.to.rast
r.mapcalc
r.grow.distance
r.statistics3
v.what.rast
v.buffer

Markus Metz