在 PostGIS / GeoServer / OpenLayers 堆栈中创建“差异栅格”

时间:2021-07-20 10:31:31

标签: javascript openlayers postgis geoserver

我继承了一个包含地理数据堆栈的项目

  • 一个 PostGIS DB(目前与此无关),
  • 栅格时间序列的启用时间的 GeoServer ImageMosaic(来源是文件系统上的 GeoTIFF,而不是 DB)
  • 用于可视化和查询数据的 OpenLayers(仍为 v5.3.0)前端。

我需要添加一个功能来从时间序列的两个任意栅格创建“差异栅格”(即差异栅格 = Raster 2 vals - Raster 1 vals)。这也可以通过“混合”等方式在视觉上完成,因为实际数据查询是通过 GetFeatureInfo 等对实际栅格数据执行的。

我知道 Leaflet 可以直接执行这些操作,但到目前为止,我还没有在 OpenLayers 中看到挂件以数学方式或仅通过视觉技巧来创建这样的“差异栅格”。

据我所知,我的选择是:

  • 将整个前端迁移到 Leaflet。
    • 前端做了很多花哨的事情,其中​​大部分是 OpenLayers 特定的,而这个选项似乎非常耗时。
  • 利用 GeoServer 的 WebProcessingService 插件
    • 到目前为止,GeoServer 的 WCS 仅实现了 GeoTools 的加法和乘法,而我的 Java 技能很可能不足以实现这一点。
  • 利用 PostGIS 的栅格扩展
    • 这可以通过 PostGIS 的 ST_MapAlgebra 轻松完成,但是这可能需要一些可能会引起安全问题的 OL - DB 接口。
  • 使用第三方 JS 库
    • 我仍在寻找可以跨两个栅格实际执行地图代数的库,而不仅仅是在一个栅格本身上执行地图代数,例如 OpenLayer 的 raster source example

有什么明显我忽略的东西吗?

就第三方库而言,值得一提的是,源 GTIFF 是高分辨率无人机图像(每个约 9000x9000 像素),因此加载整个两个源 TIFF 以执行地图代数可能是一个性能问题。

>

0 个答案:

没有答案
相关问题