¿Cómo generalizar las costas?


12

Tengo un gran conjunto de puntos de datos que esencialmente representan la costa del mundo. No sé la resolución exacta, pero diría que está cerca de 5-10 m.

Imagine un conjunto de puntos que representan una costa irregular. Con una resolución de 1 m, vemos todos los detalles y necesitamos 50 puntos de datos para representar correctamente la costa, sin embargo, a una resolución de 10 km, la costa parece una línea recta y solo necesitaríamos 2 puntos.

Estoy escribiendo una aplicación de mapeo que requerirá que los datos escalen de resoluciones de "planeta completo" a resoluciones de "calle". Necesito ayuda para reducir la resolución de mis puntos de datos y, posteriormente, la cantidad de datos para resoluciones más amplias.

He estado leyendo sobre Vector-Tiling y creo que esta será la mejor solución (ya estoy haciendo algo como esto), sin embargo, con las bajas resoluciones, mi conjunto de datos sigue siendo enorme, lo que significa que el alquiler demora un tiempo [relativamente] largo tiempo, donde las altas resoluciones son rápidas porque el conjunto de datos "efectivo" es pequeño (subconjunto del conjunto).

Estoy tratando de determinar cómo tomar mi gran conjunto de datos y reducir la escala para que los datos de mosaico de mi vista de 'planeta completo' tengan un tamaño manejable. ¿Cómo creo los subconjuntos de datos de mosaico a partir del conjunto de datos completo más grande?

Estoy feliz de usar una herramienta, pero prefiero hacerlo yo mismo en un esfuerzo por aprender cómo se hace.


1
¿Ha verificado las respuestas a gis.stackexchange.com/questions/6585/… ? Explique si cree que su pregunta es diferente.
oscuro

1
Parece que la pregunta debería ser sobre las costas en lugar de "puntos". A medida que la resolución disminuye, ¿deberían desaparecer las islas pequeñas? ¿Está bien que crucen las costas alrededor de las islas serpentinas?
Kirk Kuykendall

Si solo quieres hacer un trabajo aceptable y seguir adelante, la respuesta de @R Thiede es probablemente el mejor lugar para comenzar. Si desea trabajar en el verdadero desafío, simplificar el trabajo de línea sin perder el significado de las formas, consulte las preguntas relacionadas gis.stackexchange.com/questions/38/… y gis.stackexchange.com/questions/440/… .
Matt Wilkie

Respuestas:


7

La forma en que resolverá este problema realmente depende del caso, y cuán importante es la topología real para usted (en comparación con solo el tiempo de visualización / representación). Dado que su objetivo final es generalizar las costas, puede encontrar algunas ideas útiles sobre generalización.

Un enfoque utiliza el buffering, como se ve aquí . También tuve un problema similar hace un tiempo y detallé mi solución aquí .

En resumen, puede utilizar conjuntos de datos vectoriales separados (o al menos geometrías separadas), generalizados a diferentes niveles. Esto soluciona su problema básico, aunque no utiliza mosaicos, pero, por supuesto, puede utilizarlos si lo desea. Por supuesto, si va a dividir su conjunto de datos en mosaicos basados ​​en una cuadrícula, asegúrese de generalizar primero, o terminará con brechas entre mosaicos.


+1 para una respuesta reflexiva. ¡Bienvenido a nuestro sitio, Rüdiger!
whuber

5

Debe preparar diferentes versiones generalizadas de su conjunto de datos para niveles de zoom de "planeta completo" hasta el zoom de primer plano.

Un algoritmo de generalización clásico es el algoritmo Douglas-Peucker . Tendrás que conectar los puntos a las líneas costeras primero si aún no lo has hecho.


2
La biblioteca GEOS tiene algoritmos Douglas-Peucker integrados que puede usar, si desea codificar esto usted mismo. Sin embargo, es posible que desee considerar la topología, en cuyo caso la herramienta GRASS v.generalize también puede ayudar.
lagerratrobe

Hola @lagerratrobe. Hice este wiki de la comunidad de respuestas, por lo que debería poder editarlo directamente y agregarle soluciones GEOS y GRASS.
oscuro


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.