11 votos

¿Cómo se aplica el cálculo de las vistas?

Estoy buscando una manera de implementar la visibilidad (aka viewshed). He encontrado un Pregunta sobre GIS SE que sugirió algunas aplicaciones GIS (no lo que necesito - estoy tratando de incrustar 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 averiguar qué clases necesito siquiera instanciar (o subclasificar).

No estoy atado a la idea de SAGA - sólo estoy buscando una biblioteca / motor que pueda hacer cálculos de intervisibilidad.

Las limitaciones son que tiene que ser:

  • razonablemente "ligero" (ya que me gustaría ser capaz de cubrir incrustado / móvil)
  • razonablemente de código abierto (ya que mi aplicación será de código abierto, aunque soy flexible en cuanto a la licencia exacta siempre que sea compatible con la (L)GPL).

¿Puede alguien recomendar una biblioteca o un motor de este tipo, y proporcionar una descripción o un enlace a la parte de la biblioteca o el motor que debo utilizar para los cálculos de las vistas?

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

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

Edición: C++ no es un requisito firme - cualquier cosa razonablemente portable (C#, C++, Java) servirá. Estoy tratando de una biblioteca o plantillas en lugar de incrustar una gran aplicación.

2 votos

¿Necesitas realmente un algoritmo ZTV completo? ¿Quizás modelar el terreno en OpenGL y analizar los resultados de eso? Los smartphones tienen una aceleración de gráficos cada vez más buena que podrías aprovechar. OpenGL incluso soporta proyecciones ortográficas.

0 votos

Estoy contento siempre que produzca las respuestas "correctas", así que vale la pena mirar OpenGL. Tiene un ejemplo / puntero que hace esto de los datos de tipo SIG?

8voto

ESV Puntos 4591

Como habrán visto en el pregunta referida a GIS SE En la actualidad, no parece que haya muchos paquetes de visualización independientes, al menos en el mercado de código abierto, más allá de SAGA y GRASS GIS. Aparte de escribir una envoltura alrededor del código para estos algoritmos, puede terminar implementando viewshed usted mismo, desafortunadamente. (Aunque me encantaría que me corrigieran en esto).

Si lee la documentación de GRASS r.viewshed proporciona una amplia descripción del algoritmo y una referencia al siguiente artículo que analiza en profundidad un algoritmo de viewshed:

Computar la visibilidad de los terrenos en la memoria externa . Herman Haverkort, Laura Toma y Yi Zhuang. En las Actas del 9º Taller de Ingeniería de Algoritmos y Experimentos / Taller de Algoritmos Analíticos y Combinatoria (ALENEX/ANALCO 2007).

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

Wu, H., Pan, M., Yao, L., & Luo, B. (2007). Un algoritmo en serie basado en la partición para generar vistas en MDE masivos . International Journal of Geographical Information Science, 21(9), 955-964.

0 votos

No es exactamente la respuesta que esperaba, pero es la mejor respuesta proporcionada. Muchas gracias por su trabajo en esto.

0 votos

No te preocupes. Buena suerte.

4voto

Sarah Jamie Lewis Puntos 141

Existe un paquete gratuito llamado RadioMobile que está diseñado para estudios de radiocomunicación que genera un cobertizo de vistas. El resultado se basa en una entrada DEM y puede ser un vector (archivo de puntos) o Raster. He podido utilizar el archivo vectorial de puntos para crear polígonos a través de algunas secuencias de comandos que estaré encantado de compartir con ustedes. Ya que puedes establecer una paleta en la salida raster, también podrías convertir el raster en vector usando gdal.

El programa tiene una interfaz gráfica, pero también puede ejecutarse por lotes, por lo que puede incorporarse fácilmente a un programa. Aunque hay muchas más opciones de las que se requieren para un viewshed tradicional, puede ponerlas a cero para que no se incluyan los efectos como la potencia del transmisor - ver 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,

0 votos

Interesante, pero no parece ser de código abierto, y es sólo para Windows. Así que no va a funcionar en un entorno móvil.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X