¿Por qué GRASS elimina los polígonos cuando se usa v.generalize?

9

Estoy enfrentando un dilema al intentar usar v.generalize para simplificar los polígonos que son similares en tamaño y estructura a los condados o estados de EE. UU. A menudo, pierdo polígonos del conjunto de datos después de ejecutar un método de simplificación o suavizado en ellos. Lo que me preocupa es que no parece haber ningún patrón consistente para este comportamiento. En algunos casos, el mismo conjunto de comandos aplicado a diferentes conjuntos de datos causa resultados completamente diferentes. Como resultado, no puedo desarrollar un flujo de trabajo repetible y de mala gana empiezo a buscar otras herramientas de simplificación que preserven la topología. Aquí hay un ejemplo:

# 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

Cada uno de los pasos de v.generalize resulta en la desaparición de algunos de los polígonos. Me gustaría entender por qué sucede esto. ¿Se debe a que las características se cargan en memoria insuficiente? ¿Son mis parámetros "lo suficientemente ajustados" como para hacer que se excluyan las entidades porque cumplen algún tipo de criterio de geometría? (Tenga en cuenta que estoy perdiendo algunas funciones muy grandes). ¿Hay algún problema con la topología de las funciones descartadas que hace que se borren? En relación con esa última pregunta, supongo que build.polylines y operaciones de limpieza que hago inicialmente deberían encargarse de esto, pero no estoy completamente seguro, y parece que no puedo encontrar buenas instrucciones que aborden esto. ¿Hay alguna?

Apreciar cualquier información que las personas puedan dar, especialmente las basadas en la experiencia personal con la herramienta v.generalize.

Roger

lagerratrobe
fuente
parece que sus datos podrían estar en lat lon. lo cual sería suficiente para perder datos con su umbral de .005. ¿puedes verificar que estás usando una cs plana?
Brad Nesom
De hecho, me preguntaba sobre eso y había reproyectado a una proyección de Albers Equal Area antes de ejecutar lo anterior. Estos son los parámetros de proyección: USUARIO: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + unidades = m + no_defs) . Todavía tiene el mismo ploblema.
lagerratrobe
Me pregunto por qué convierte los polígonos en polilíneas. ¿Hay alguna razón específica por la que no solo simplifique los polígonos directamente?
oscuro
Ok, saqué la parte v.build.polylines, por lo que "county_clean" ahora es una capa de polígono. Todavía pierdo un montón de áreas. Al principio pensé que podría facilitar la simplificación, pero como "bpol" en v.clean también está rompiendo los polígonos, tal vez no importe.
lagerratrobe
1
Solo una pregunta estúpida. ¿Estás seguro de que estás perdiendo datos usando v.generalize y no v.clean ?
simo

Respuestas:

4

Respuesta del equipo de desarrollo de GRASS.

"La desaparición de los polígonos [en v 6.4.1] ocurrió porque se eliminaron los límites suavizados que violaban la topología del vector, después de eso todos los límites que eran topológicamente incorrectos. Los límites ahora [en 6.4.2] solo se suavizan / simplifican si la modificación no violar la topología del vector ".

lagerratrobe
fuente