在开源Web GIS中执行栅格地图代数?


9

使用ArcGIS Raster Calculator(或QGIS)可以很容易地为栅格地图代数。我以为使用Web GIS服务器(例如GeoServer和MapServer以及OpenLayers等)会很容易。我想要实现的是做一些简单的事情,例如将两个图像分割并生成要在网页中显示的第三个比率图像。我花了数周时间找到解决方案,结果(对我而言)非常困难。

我尝试了一些事情,包括:

  1. PostGIS栅格。我认为栅格代数在这里不是问题。

    但是PostGIS栅格很难加载到GeoServer中。有关如何在GeoServer中加载pgraster的问题屡屡被问到。请参见例如如何通过postGIS将GeoTIFF导入GeoServer??,https://gis.stackexchange.com/questions/86006/publish-rasters-stored-in-postgresql-with-geoserver吗?在GIS.SE或GeoServer官方网站上,没有一个答案给出了可以遵循的完整步骤列表。已将pgraster加载到MapServer中已成功,但性能非常慢。两者似乎都需要进行平铺,并且单行命令将栅格导入到任一服务器似乎是不可能的。

  2. GeoTIFF

    GeoTIFF易于加载到GeoServer和MapServer中。但是,我们该怎么办呢?没有像SQL这样的PostGIS,我转向并使用WCS进行了简要搜索以做地图代数,但是并没有发现太多。对于当前服务器,WCS是否是可行的途径?

  3. 很难编程

    使用AJAX以某种方式调用PHP页面或使用GeoServer编写WPS,以将图像导入PostGIS,进行地图代数处理,然后将结果生成器转换为可以轻松加载并显示在GeoServer / MapServer中的格式(例如GeoTIFF)。

  4. 当然,人们可以编写代码直接读取GeoTIFF,并在没有GIS支持的情况下进行地图代数处理。

考虑到可以轻松地在桌面GIS中完成相同的代数运算,对我来说,上述任何一项似乎都不容易或不合理。

我想知道是否有人在Web GIS环境中进行过Map Algebra的经验,并且可以提出一条可行的路径吗?

我对开放源代码解决方案感兴趣(由于组织内部的政治原因。)我知道ArcGIS Server可以调用ArcGIS的python代码,但是我们没有许可证,并且这里的环境不利于获取代码。


“是否有合理的方法...”是一个非常罗word的词组(例如,“如何...”工作得很好),可以放入问题标题,因此,如果您能想到一种更好的陈述方式您的问题比我建议的要多。此外,我认为“软件”一词包括编程API和库,例如GDAL,因此通过这种解释,您可能无需还原我的编辑。但是,如果您认为这可以澄清您的问题,请按照自己的意愿去做。
blah238 2014年

@ blah238感谢您的修改:)。我可能很冗长,但是我认为显然有办法...,仅仅是与ESRI /桌面世界相比,它们似乎是不合理的努力。另外,您说对了,“软件”可以包含API。我只想强调一下,如果没有其他东西很容易实现地图代数,则可以从头开始编码。
tinlyx 2014年

Answers:


4

仅使用开源软件,您几乎肯定会需要自己进行一些编程。GDAL事实上的开源栅格I / O库,因此您可能会使用它或它的许多包装之一。您可以使用Python(例如rasterio + numpy / scipy)或node.js,例如node-gdal(尽管请注意,当前它是同步/阻塞的)。至于实际上将其实现为Web服务,我不确定哪种方法最好,但是这里有一个相关的问题:比较不同的开源GIS服务器?

如果您不喜欢编程,则可以看看FME Server。它是一种商业产品,但可能比ArcGIS Server便宜得多,并且具有各种栅格计算转换器,因此如果它们无法完成您需要做的事情,我会感到非常惊讶。您不需要将栅格加载到数据库中,因为它可以从几乎任何栅格文件格式读取。

服务器部分将允许您在服务器上运行转换(FME工作区),并使用API​​(例如FME Server REST API)来启动这些转换并访问结果。

主要好处是,您无需进行任何编程就可以启动和运行服务,而只需做一些前端编程即可使用API​​。


+1谢谢。我也在考虑rasdaman。我可以编程,但是在地图代数问世多年之后,只是感觉不对。
tinlyx 2014年

+1支持python + gdal。用numpy进行栅格代数很容易。另外,如果您使用的是基于文本的栅格(例如.asc文件),则您甚至不需要使用numpy.loadtxt(跳过标题行,以空格作为分隔符,等等)
user1269942 2014年

使用rasdaman,您可以使用WCPS在服务器上进行处理,尽管您可能需要做一些脚本来创建WCPS语法,因为手工完成可能会很困难。
nmtoken

2

您正在寻找的是图像服务器。ArcGIS for Server具有以下扩展名:

适用于服务器的ArcGIS Image Extension

我不知道任何开源等效项。


1
OP正在询问如何在Web上下文中执行此操作,而不是针对ArcGIS扩展。
约翰·鲍威尔

2
@JohnBarça建议的扩展是ArcGIS for Server,因此可在Web上下文中使用。
PolyGeo

@Pau我忘了说我有点受限于使用开源GIS。但是,谢谢你的建议。有帮助
tinlyx

1
@TingL,您可以开始寻找arcgis图像服务器的开源替代产品
Pau

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.