Как реализовать расчет видимости?

11

Я ищу способ реализовать видимость (он же видимость). Я нашел предыдущий вопрос GIS SE, в котором предлагалось несколько приложений ГИС (не то, что мне нужно - я пытаюсь встроить вычисления), а также SAGA. SAGA больше похож на то, что я ищу (классы C ++, Java, C #), но я не могу понять достаточно документации API, чтобы выяснить, какие классы мне даже нужно создать (или подкласс).

Я не привязан к идее SAGA - я просто ищу библиотеку / движок, который может выполнять вычисления невидимости.

Ограничения в том, что это должно быть:

  • разумно "легкий вес" (так как я хотел бы иметь возможность охватить встроенные / мобильные)
  • разумно с открытым исходным кодом (так как мое приложение будет с открытым исходным кодом, хотя я гибко определяю, какая именно лицензия, если она совместима с (L) GPL).

Может ли кто-нибудь порекомендовать такую ​​библиотеку или механизм и предоставить описание или ссылку на какой бит библиотеки или механизма, который мне нужно использовать для расчетов в рамках видимости?

В качестве альтернативы / дополнения, я также буду благодарен за ссылки на статьи или учебные пособия, в которых объясняется, как эффективно выполнять эти вычисления (в зависимости от того, применяются ли они к встраиваемым / мобильным устройствам, поэтому реализация на основе графического процессора может быть не такой полезной, как более общий, и обрабатывает устройства с низким энергопотреблением)

Я предпочитаю существующую реализацию, а не создавать что-то самостоятельно (это вариант резервного копирования).

Изменить: C ++ не является жестким требованием - подойдет что-нибудь достаточно переносимое (C #, C ++, Java). Я пытаюсь создать библиотеку или шаблоны, а не встраивать большое приложение.

BradHards
источник
2
Вам действительно нужен полный алгоритм ZTV? Возможно, смоделируйте местность в OpenGL и проанализируйте результаты этого? Смартфоны имеют все более хорошее графическое ускорение, которое вы можете использовать. OpenGL даже поддерживает ортографические проекции.
Мэтью Снейп
Я счастлив, пока он дает «правильные» ответы, поэтому стоит взглянуть на OpenGL. У вас есть пример / указатель, который делает это из данных типа ГИС?
BradHards

Ответы:

8

Как вы могли видеть из упомянутого вопроса о GIS SE , кажется, что на рынке Open Source, по крайней мере, на рынке Open Source не так много, кроме SAGA и GRASS GIS. Помимо написания обертки вокруг кода для этих algorthims, вы, к сожалению, можете в конечном итоге реализовать viewshed самостоятельно. (Хотя я хотел бы быть исправленным в этом.)

Если вы прочитаете документацию по функции GRASS r.viewshed, она предоставит широкое описание алгоритма и ссылку на следующий документ, в котором подробно рассматривается один алгоритм видимости:

Вычисление видимости на местности во внешней памяти . Герман Хаверкорт, Лаура Тома и И Чжуан. В материалах 9-го семинара по разработке алгоритмов и экспериментов / Практикум по аналитическим алгоритмам и комбинаторике (ALENEX / ANALCO 2007).

Альтернативно статья в Википедии о Viewshed содержит ссылки:

Wu, H., Pan, M., Yao, L. & Luo, B. (2007). Последовательный алгоритм на основе разбиений для генерации видимости на массивах ЦМР . Международный журнал географической информатики, 21 (9), 955-964.

om_henners
источник
Не совсем тот ответ, на который я надеялся, но лучший ответ. Большое спасибо за вашу работу над этим.
BradHards
Без проблем. Удачи с этим!
om_henners
4

Существует бесплатный пакет под названием RadioMobile, предназначенный для исследований в области радиосвязи, который создает навес для просмотра. Вывод основан на вводе матрицы высот и может быть вектором (точечный файл) или растром. Мне удалось использовать векторный файл точек для создания полигонов с помощью некоторых сценариев, которыми я с удовольствием поделюсь с вами. Так как вы можете установить палитру на выходе растра, вы также можете преобразовать растр в вектор, используя gdal.

Программа имеет графический интерфейс, но ее также можно запускать в пакетном режиме, чтобы вы могли легко включить ее в программу. Несмотря на то, что для традиционного видимости есть намного больше параметров, чем требуется, вы можете установить их на нуль, чтобы не включать такие эффекты, как мощность передатчика - см. Http://www.g3tvu.co.uk/RM_Batch_Files.htm

Программа находится по адресу http://www.cplus.org/rmw/rme.html . Автор также очень полезен.

Надеюсь это поможет,

GeorgeC
источник
Интересно, но, похоже, не с открытым исходным кодом, а только для Windows. Так что это не сработает в мобильной среде.
BradHards