Я ищу способ реализовать видимость (он же видимость). Я нашел предыдущий вопрос GIS SE, в котором предлагалось несколько приложений ГИС (не то, что мне нужно - я пытаюсь встроить вычисления), а также SAGA. SAGA больше похож на то, что я ищу (классы C ++, Java, C #), но я не могу понять достаточно документации API, чтобы выяснить, какие классы мне даже нужно создать (или подкласс).
Я не привязан к идее SAGA - я просто ищу библиотеку / движок, который может выполнять вычисления невидимости.
Ограничения в том, что это должно быть:
- разумно "легкий вес" (так как я хотел бы иметь возможность охватить встроенные / мобильные)
- разумно с открытым исходным кодом (так как мое приложение будет с открытым исходным кодом, хотя я гибко определяю, какая именно лицензия, если она совместима с (L) GPL).
Может ли кто-нибудь порекомендовать такую библиотеку или механизм и предоставить описание или ссылку на какой бит библиотеки или механизма, который мне нужно использовать для расчетов в рамках видимости?
В качестве альтернативы / дополнения, я также буду благодарен за ссылки на статьи или учебные пособия, в которых объясняется, как эффективно выполнять эти вычисления (в зависимости от того, применяются ли они к встраиваемым / мобильным устройствам, поэтому реализация на основе графического процессора может быть не такой полезной, как более общий, и обрабатывает устройства с низким энергопотреблением)
Я предпочитаю существующую реализацию, а не создавать что-то самостоятельно (это вариант резервного копирования).
Изменить: C ++ не является жестким требованием - подойдет что-нибудь достаточно переносимое (C #, C ++, Java). Я пытаюсь создать библиотеку или шаблоны, а не встраивать большое приложение.
Ответы:
Как вы могли видеть из упомянутого вопроса о GIS SE , кажется, что на рынке Open Source, по крайней мере, на рынке Open Source не так много, кроме SAGA и GRASS GIS. Помимо написания обертки вокруг кода для этих algorthims, вы, к сожалению, можете в конечном итоге реализовать viewshed самостоятельно. (Хотя я хотел бы быть исправленным в этом.)
Если вы прочитаете документацию по функции GRASS r.viewshed, она предоставит широкое описание алгоритма и ссылку на следующий документ, в котором подробно рассматривается один алгоритм видимости:
Альтернативно статья в Википедии о Viewshed содержит ссылки:
источник
Существует бесплатный пакет под названием RadioMobile, предназначенный для исследований в области радиосвязи, который создает навес для просмотра. Вывод основан на вводе матрицы высот и может быть вектором (точечный файл) или растром. Мне удалось использовать векторный файл точек для создания полигонов с помощью некоторых сценариев, которыми я с удовольствием поделюсь с вами. Так как вы можете установить палитру на выходе растра, вы также можете преобразовать растр в вектор, используя gdal.
Программа имеет графический интерфейс, но ее также можно запускать в пакетном режиме, чтобы вы могли легко включить ее в программу. Несмотря на то, что для традиционного видимости есть намного больше параметров, чем требуется, вы можете установить их на нуль, чтобы не включать такие эффекты, как мощность передатчика - см. Http://www.g3tvu.co.uk/RM_Batch_Files.htm
Программа находится по адресу http://www.cplus.org/rmw/rme.html . Автор также очень полезен.
Надеюсь это поможет,
источник