我是一名计算机科学专业的学生(硕士学位),我正在制作一个基于GeoTIFF图像和Sping Boot (Java)的“简单”微服务。
我想做的是:
1.下载高分辨率(10-m像素)DEM意大利(即TINITALY/01),分为图块,其中每个图块是一个GeoTiff图像。
- “本DEM是从意大利单个行政区的单独DEM开始获得的。DEM可在UTM WGS 84 zone 32投影系统中以10 m单元格大小的网格(GeoTIFF格式)免费提供(请参阅下载链接)。
http://tinitaly.pi.ingv.it/Download_Area1_1.html
1.将图像保存在数据库中(?)
1.在Sping Boot 中开发一个REST服务,其中,给定坐标点(lat/long)和(像素的)周围,返回DEM值的数组
提问(谢谢):
1.我读到有几种方法可以保存GeoTiff图像,例如Postgresql的PostGIS,mongoDB,GeoServer等。老实说,对于我需要制作的应用程序,我还没有弄清楚哪个组件最适合商店GeoTiff。
1.我读到一些开发人员建议,为了在云中工作,将GeoTIFF转换为云优化的GeoTIFF(COG)。我仍在研究文档,但您认为这是我想要实现的服务所必需的步骤吗?
1条答案
按热度按时间bis0qfac1#
我曾使用Postgres+POSTGIS,我认为如果你只是想获取单元格的值,它的效果会很好-即使是空间分析也会很好,但对于非常大的光栅数据集可能有点慢。
这里,您可以使用
ST_Value
轻松获取单元格的值:https://postgis.net/docs/RT_ST_Value.html正如你在这里看到的,你可以使用位置或图像空间行,列来获取数据。ST_Neighbourhood
也可以用于从附近的像素获取值:https://postgis.net/docs/RT_ST_Neighborhood.html在性能方面,我曾使用过澳大利亚维多利亚州的30 m * 30 m DEM,使用PostGIS效果非常好-即使对于需要空间连接的更高级查询,性能也是可以接受的。
我会推荐使用PostGIS,因为我很确定它会工作得很好。但我不确定第二个问题-我没有COG的经验。
以下是一些可能有用的示例查询。这里,我使用WGS 84(SRID:4326)中的一个点从SRID 7855中的光栅数据中获取数据(因此我需要转换坐标)。我的光栅表是
victoria_raster
,点坐标在(纬度:-37.8136经度:144.9631)。获取像素值(由几何体定义):
得到像素周围的值(由几何定义)-3乘3,因为我们只考虑
ST_Neighbourhood
函数中的cols +- 1和rows +-1:因此,我建议使用数据库来处理栅格数据集- Postgres+PostGIS。并在REST Web服务中使用查询来获取值。