¿Cómo implementar el cálculo de la cuenca visual?

11

Estoy buscando una manera de implementar la visibilidad (también conocida como cuenca visual). Encontré una pregunta anterior de GIS SE que sugería algunas aplicaciones SIG (no lo que necesito, estoy tratando de integrar los cálculos), y también SAGA. SAGA se parece más a lo que estoy buscando (clases C ++, Java, C #), pero no puedo entender lo suficiente de la documentación de la API para descubrir qué clases necesito incluso para instanciar (o subclase).

No estoy atado a la idea de SAGA: solo estoy buscando una biblioteca / motor que pueda hacer cálculos de intervisibilidad.

Las restricciones son que debe ser:

  • razonablemente "ligero" (ya que me gustaría poder cubrir incrustado / móvil)
  • razonablemente de código abierto (ya que mi aplicación será de código abierto, aunque soy flexible sobre exactamente qué licencia siempre que sea compatible con (L) GPL).

¿Alguien puede recomendar una biblioteca o motor de este tipo y proporcionar una descripción o un enlace a qué parte de la biblioteca o motor necesito usar para los cálculos de la cuenca visual?

Alternativamente / además, también agradecería referencias a documentos o tutoriales que explican cómo hacer estos cálculos de manera eficiente (según corresponda a dispositivos integrados / móviles, por lo que una implementación basada en GPU puede no ser tan útil como algo que es más general, y maneja dispositivos de baja potencia)

Mi preferencia es una implementación existente, en lugar de crear algo yo mismo (que es una opción de respaldo).

Editar: C ++ no es un requisito firme: cualquier cosa razonablemente portátil (C #, C ++, Java) servirá. Estoy intentando una biblioteca o plantillas en lugar de incrustar una aplicación grande.

BradHards
fuente
2
¿Realmente necesitas un algoritmo ZTV completo? ¿Quizás modelar el terreno en OpenGL y analizar los resultados de eso? Los teléfonos inteligentes tienen una aceleración gráfica cada vez más buena que podría explotar. OpenGL incluso admite proyecciones ortográficas.
Matthew Snape
Estoy feliz siempre que produzca las respuestas "correctas", por lo que vale la pena echarle un vistazo a OpenGL. ¿Tiene un ejemplo / puntero que hace esto a partir de datos de tipo SIG?
BradHards

Respuestas:

8

Como habrás visto en la pregunta GIS SE a la que se hace referencia , no parece haber mucho en la forma de paquetes independientes de cuenca visual al menos en el mercado de código abierto más allá de SAGA y GRASS GIS. Además de escribir una envoltura alrededor del código para estos algoritmos, puede terminar implementando usted mismo viewhed desafortunadamente. (Aunque me gustaría ser corregido en esto).

Si lee la documentación para la función GRASS r.viewshed , proporciona una descripción amplia del algoritmo y una referencia al siguiente documento que analiza a fondo un algoritmo de cuenca visual :

Visibilidad informática en terrenos en memoria externa . Herman Haverkort, Laura Toma y Yi Zhuang. En las actas del noveno taller sobre ingeniería de algoritmos y experimentos / taller sobre algoritmos analíticos y combinatoria (ALENEX / ANALCO 2007).

Alternativamente, el artículo de Wikipedia sobre Viewshed proporciona referencias:

Wu, H., Pan, M., Yao, L. y Luo, B. (2007). Algoritmo de serie basado en particiones para generar cuenca visual en DEMs masivos . Revista Internacional de Ciencias de la Información Geográfica, 21 (9), 955-964.

om_henners
fuente
No es exactamente la respuesta que esperaba, pero la mejor respuesta proporcionada. Muchas gracias por tu trabajo en esto.
BradHards
Sin preocupaciones. ¡Suerte con ello!
om_henners
4

Hay un paquete gratuito llamado RadioMobile que está diseñado para estudios de comunicación por radio que genera un cobertizo de vista. La salida se basa en una entrada DEM y puede ser un vector (archivo de puntos) o Ráster. He podido usar el archivo de puntos vectoriales para crear polígonos a través de algunas secuencias de comandos que estaré encantado de compartir con ustedes. Como puede establecer una paleta en la salida de ráster, también puede convertir el ráster en vector usando gdal.

El programa tiene una interfaz gráfica de usuario, pero también se puede ejecutar en modo por lotes para que pueda incorporarlo fácilmente en un programa. Si bien hay muchas más opciones de las necesarias para una cuenca visual tradicional, puede configurarlas como nulas para que no se incluyan los efectos como la potencia del transmisor; consulte http://www.g3tvu.co.uk/RM_Batch_Files.htm

El programa está en http://www.cplus.org/rmw/rme.html El autor también es muy útil.

Espero que esto ayude,

GeorgeC
fuente
Interesante, pero no parece ser de código abierto, y es solo para Windows. Eso no va a funcionar en un entorno móvil.
BradHards