Ich suche nach einer Möglichkeit, Sichtbarkeit zu implementieren (auch bekannt als Viewshed). Ich habe eine frühere GIS SE-Frage gefunden , die einige GIS-Anwendungen vorschlug (nicht das, was ich brauche - ich versuche, die Berechnungen einzubetten), sowie SAGA. SAGA ähnelt eher dem, wonach ich suche (C ++ -, Java-, C # -Klassen), aber ich kann die API-Dokumentation nicht genug verstehen, um herauszufinden, welche Klassen ich überhaupt instanziieren muss (oder welche Unterklasse).
Ich bin nicht an die Idee von SAGA gebunden - ich suche nur nach einer Bibliothek / Engine, die Sichtbarkeitsberechnungen durchführen kann.
Die Einschränkungen sind, dass es sein muss:
- einigermaßen "leicht" (da ich Embedded / Mobile abdecken möchte)
- einigermaßen Open Source (da meine Anwendung Open Source sein wird, obwohl ich flexibel bin, welche Lizenz genau verwendet wird, solange sie (L) GPL-kompatibel ist).
Kann jemand eine solche Bibliothek oder Engine empfehlen und eine Beschreibung oder einen Link zu dem Teil der Bibliothek oder Engine bereitstellen, den ich zum Anzeigen von Shed-Berechnungen verwenden muss?
Alternativ / zusätzlich würde ich mich auch über Verweise auf Artikel oder Tutorials freuen, in denen erklärt wird, wie diese Berechnungen auf effiziente Weise durchgeführt werden (wie dies für eingebettete / mobile Geräte gilt, sodass eine GPU-basierte Implementierung möglicherweise nicht so nützlich ist wie etwas, das ist allgemeiner und handhabt Geräte mit geringem Stromverbrauch)
Ich bevorzuge eine vorhandene Implementierung, anstatt selbst etwas zu erstellen (was eine Sicherungsoption ist).
Bearbeiten: C ++ ist keine feste Anforderung - alles, was einigermaßen portabel ist (C #, C ++, Java), reicht aus. Ich versuche, eine Bibliothek oder Vorlagen zu finden, anstatt eine große Anwendung einzubetten.
Antworten:
Wie Sie aus der referenzierten GIS SE-Frage gesehen haben , scheint es zumindest im Open Source-Markt jenseits von SAGA und GRASS GIS nicht viel zu geben, was eigenständige Pakete betrifft. Abgesehen davon, dass Sie einen Wrapper um den Code für diese Algorthims schreiben, können Sie Viewshed möglicherweise selbst implementieren. (Obwohl ich gerne korrigiert würde.)
Wenn Sie die Dokumentation zur GRASS r.viewshed- Funktion lesen, finden Sie eine umfassende Beschreibung des Algorithmus und einen Verweis auf das folgende Dokument, in dem ein Viewshed-Algorithmus ausführlich erläutert wird:
Alternativ bietet der Wikipedia-Artikel auf Viewshed Referenzen:
quelle
Es gibt ein Freeware-Paket namens RadioMobile, das für Funkkommunikationsstudien entwickelt wurde und einen Sichtschuppen generiert. Die Ausgabe basiert auf einer DEM-Eingabe und kann entweder ein Vektor (Punktdatei) oder ein Raster sein. Ich konnte die Vektorpunktdatei verwenden, um Polygone durch Skripte zu erstellen, die ich gerne mit Ihnen teilen werde. Da Sie für die Rasterausgabe eine Palette festlegen können, können Sie das Raster auch mit gdal in einen Vektor konvertieren.
Das Programm verfügt über eine GUI, kann aber auch im Batch-Modus ausgeführt werden, sodass Sie es problemlos in ein Programm integrieren können. Es gibt zwar viel mehr Optionen als für ein herkömmliches Ansichtsfenster erforderlich, Sie können diese jedoch auf Null setzen, damit die Auswirkungen wie die Sendeleistung nicht berücksichtigt werden - siehe http://www.g3tvu.co.uk/RM_Batch_Files.htm
Das Programm finden Sie unter http://www.cplus.org/rmw/rme.html. Der Autor ist ebenfalls sehr hilfreich.
Hoffe das hilft,
quelle