Je cherche un moyen d'implémenter la visibilité (aka viewshed). J'ai trouvé une précédente question GIS SE qui suggérait quelques applications SIG (pas ce dont j'avais besoin - j'essaie d'intégrer les calculs), ainsi que SAGA. SAGA ressemble plus à ce que je recherche (classes C ++, Java, C #), mais je ne comprends pas assez la documentation de l'API pour comprendre quelles classes j'ai même besoin d'instancier (ou sous-classe).
Je ne suis pas lié à l'idée de SAGA - je recherche juste une bibliothèque / un moteur capable de faire des calculs d'intervisibilité.
Les contraintes sont qu'il doit être:
- raisonnablement "léger" (car j'aimerais pouvoir couvrir les applications embarquées / mobiles)
- raisonnablement open source (puisque mon application sera open source, bien que je sois flexible sur quelle licence exactement tant que sa (L) GPL est compatible).
Quelqu'un peut-il recommander une telle bibliothèque ou un tel moteur et fournir une description ou un lien vers le bit de la bibliothèque ou du moteur que je dois utiliser pour visualiser les calculs?
Alternativement / en plus, j'apprécierais également les références à des articles ou des tutoriels qui expliquent comment effectuer ces calculs de manière efficace (comme applicable aux appareils intégrés / mobiles, donc une implémentation basée sur GPU peut ne pas être aussi utile que quelque chose qui est plus général, et gère les appareils de faible puissance)
Ma préférence est une implémentation existante, plutôt que de créer quelque chose moi-même (qui est une option de sauvegarde).
Edit: C ++ n'est pas une exigence ferme - tout ce qui est raisonnablement portable (C #, C ++, Java) fera l'affaire. J'essaie une bibliothèque ou des modèles plutôt que d'intégrer une grande application.
Réponses:
Comme vous l'auriez vu dans la question référencée GIS SE , il ne semble pas y avoir grand-chose en termes de packages autonomes avec vue au moins sur le marché Open Source au-delà de SAGA et GRASS GIS. En plus d'écrire un wrapper autour du code pour ces algorthims, vous pouvez malheureusement finir par implémenter vous-même le champ de vision. (Bien que j'aimerais être corrigé à ce sujet.)
Si vous lisez la documentation de la fonction GRASS r.viewshed , elle fournit une description générale de l'algorithme et une référence au document suivant qui présente en détail un algorithme de champ de vision:
Alternativement, l'article Wikipedia sur Viewshed fournit des références:
la source
Il existe un logiciel gratuit appelé RadioMobile qui est conçu pour les études de radiocommunication qui génère un abri de vue. La sortie est basée sur une entrée DEM et peut être un vecteur (fichier de points) ou un raster. J'ai pu utiliser le fichier de points vectoriels pour créer des polygones grâce à des scripts que je serai heureux de partager avec vous. Comme vous pouvez définir une palette sur la sortie raster, vous pouvez également convertir le raster en vecteur à l'aide de gdal.
Le programme a une interface graphique mais peut également être exécuté en mode batch afin que vous puissiez facilement l'intégrer dans un programme. Bien qu'il existe beaucoup plus d'options que nécessaire pour un champ de vision traditionnel, vous pouvez les définir sur null afin que les effets tels que la puissance de l'émetteur ne soient pas inclus - voir http://www.g3tvu.co.uk/RM_Batch_Files.htm
Le programme se trouve à http://www.cplus.org/rmw/rme.html L'auteur est également très utile.
J'espère que cela t'aides,
la source