本文主要是介绍GeoServer:Could not list layers for this store, an error occurred retrieving them,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
用GeoServer发布 .tif 数据供前端调用底图时,由于网络地图通常是使用Web Mercator ,所以在ArcGIS导出数据时,使用了 WGS1984 WebMercator(auxiliary sphere)(wkid:3857) 坐标系,结果在GeoServer创建数据存储时却报错(如图,报错详情可以在geoserver的日志中查看),而改用 WGS1984 WorldMercator(wkid:3395) 却能正常创建数据存储
- 墨卡托投影是正轴等角切圆柱投影(web墨卡托则是把地球模拟成球形而不是椭球
正文
① EPSG可以到 EPSG.io: Coordinate Systems Worldwide 查询两者的区别
② WKID(well-known ID)可以到 地理坐标系、投影坐标系 查看 (其他:ArcGIS中的WKID
可以看到在EPSG:3857中写着
Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.
GeoServer发布时提供的默认坐标系
在ArcGIS 10中Web Mercator有三种编号。他们分别是WKID:3857 、WKID:102100、WKID:102113(已弃用)。其实三者表示同一个投影,而这个投影跟谷歌以及Open Street Map等使用的投影EPSG:900913是一致的,只是这个编号以前人们使用的时候并没有被EPSG组织采纳。[来源] [来源]
为此到 $geoserver_dir/data/user_projections/epsg.properties 查看geoserver支持的坐标系:
18001、41001、42102、42103、42104、42105、42106、42301、42302、42303、42304、42305、42306、42307、42308、42309、42310、42311、45555、45556、53029、54004、54009、54012、54029、100001、100002、100003、102113、900913、391141
还是没有什么收获...发现网上也有不少人使用EPSG:3857遇到问题
- 👉Can't change store dir or create new raster store on GeoServer 2.16.
从他们的解决办法来看,从GDAL 3.x开始使用了WKT2(一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换),而GeoServer还未支持其解析,所以要使用GDAL 2.x版本。
- 👉gdal坐标转换总结(转换)
上面这篇博客写道:ESRI在表示web墨卡托投影时的WKT与OGC标准的WKT存在一定的差别,主要在于WKT_ESRI多了几个描述参数。这或许就是GeoServer无法读取arcgis导出的wkid:3857数据的真正原因(理解为ArcGIS写入的EPSG:3857不是按照标准的规范)。若从arcgis以wkid:3857导出数据,想要在geoserver发布的话,可以用GDAL处理一下,或者用其它GIS软件(如QGIS)重新用EPSG:3857导出。
📍 ArcGIS主要依据WKT1坐标系定义标准,即 ISO 19125-1:2004 [来源]
import gdal # python旧版本
# from osgeo import gdal // python新版本gdal.Warp('output.tif', 'input.tif', format = 'GTiff', dstSRS = 'EPSG:3857')# dataset = gdal.Open('output.tif')
# im_proj = dataset.GetProjection() # 获取投影信息
其它:在python中利用GDAL对tif文件进行读写的方法
这篇关于GeoServer:Could not list layers for this store, an error occurred retrieving them的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!