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.
Respuestas:
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.
fuente
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.
fuente
¿Has investigado a Tilemill por producir tus juegos de fichas? Automáticamente reducirá los nodos a diferentes niveles de zoom. https://github.com/mapbox/tilemill
fuente
Probablemente no responda su pregunta, pero está bastante relacionada: así es como Google codifica las polilíneas, incluida la información de generalización: http://code.google.com/apis/maps/documentation/utilities/polylinealgorithm.html
fuente