Алгебра карт для растра проста с помощью ArcGIS Raster Calculator (или QGIS). Я думал, что это будет легко с веб-ГИС-серверами, такими как GeoServer и MapServer плюс OpenLayers и т. Д. Чего я хочу добиться, так это сделать простые вещи, такие как разделение двух изображений и создать третье изображение с соотношением сторон, которое будет отображаться на веб-странице. Я потратил недели, чтобы найти решение, и оно оказалось довольно сложным (для меня).
Я пробовал несколько вещей, в том числе:
ПостГИС растр. Я думаю, что растровая алгебра здесь не проблема.
Но растр PostGIS довольно сложно загрузить в GeoServer. Много раз задавалось много вопросов о том, как загрузить pgraster в GeoServer. Смотрите, например, Как импортировать GeoTIFF через postGIS в GeoServer? ? , Https://gis.stackexchange.com/questions/86006/publish-rasters-stored-in-postgresql-with-geoserver ?, Среди других. Ни один ответ здесь, в GIS.SE или на официальном сайте GeoServer, не дает полного списка шагов, которые можно выполнить для работы. Загрузка pgraster в MapServer сообщила об успехе, но с очень низкой производительностью. Кажется, что оба требуют некоторого разбиения на листы, и однострочная команда для импорта растра на любой сервер, кажется, не может быть и речи.
GeoTIFF
GeoTIFF легко загружается в GeoServer и MapServer. Но что мы можем с этим сделать? Без PostGIS, подобного SQL, я обратился к WCS для краткого поиска по алгебре карт, но ничего не нашел. WCS жизнеспособный путь для этого с текущими серверами?
Запрограммируйте это трудным способом
Каким-то образом используйте AJAX для вызова страницы PHP или напишите WPS, используя GeoServer для импорта изображений в PostGIS, выполнив алгебру карты, а затем преобразовав результат pgraster в формат (например, GeoTIFF), который можно легко загрузить и отобразить в GeoServer / MapServer.
Конечно, можно написать код для непосредственного чтения GeoTIFF и выполнения алгебры карт без поддержки ГИС.
Ничто из вышеперечисленного не кажется мне легким или разумным, учитывая легкость, с которой такая же алгебра может быть реализована в настольной ГИС.
Мне было интересно, имел ли кто-то опыт работы над алгеброй карт в среде веб-ГИС, и может ли предложить жизнеспособный путь?
Мне интересны решения с открытым исходным кодом (по политическим причинам внутри моей организации.) Я знаю, что ArcGIS Server может вызывать код Python ArcGIS, но у нас нет лицензии, и среда здесь не благоприятна для ее приобретения.
источник
Ответы:
Используя только программное обеспечение с открытым исходным кодом, вам почти наверняка придется заняться программированием самостоятельно. GDAL - это де-факто библиотека ввода-вывода с открытым исходным кодом, поэтому вы, вероятно, будете использовать ее или одну из ее многочисленных оболочек. Вы можете использовать Python (например, rasterio + numpy / scipy ) или node.js, например, node-gdal (хотя будьте осторожны, он в настоящее время является синхронным / блокирующим). Что касается фактической реализации его в качестве веб-службы, я не уверен, что будет лучшим подходом, но здесь есть связанный вопрос: сравнение различных ГИС-серверов с открытым исходным кодом?
Если программирование не ваша вещь, вы можете взглянуть на сервер FME . Это коммерческий продукт, но, вероятно, значительно дешевле, чем ArcGIS Server, и в нем есть все виды растровых расчетных преобразователей , поэтому я был бы весьма удивлен, если бы они не смогли выполнить то, что вам нужно. Вам не нужно загружать растры в базу данных, поскольку она может читать практически из любого формата растрового файла .
Серверная часть позволит вам запускать преобразования (рабочие пространства FME) на сервере и использовать API, например API-интерфейс REST FME Server, для запуска этих преобразований и доступа к результатам.
Основным преимуществом является то, что вам не нужно много делать, если какое-либо программирование для запуска и запуска сервисов, просто немного внешнего интерфейса для работы с API.
источник
То, что вы ищете, это сервер изображений. ArcGIS for Server имеет это расширение:
Расширение ArcGIS Image для сервера
я не знаю ни одного эквивалента с открытым исходным кодом.
источник
Вы можете сделать это в браузере с помощью WebGL:
http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/
но это потребовало бы некоторого программирования и WebGL-совместимого браузера. Но это должно быть быстро, так как в большинстве случаев он будет использовать GPU.
источник