geoserver发布tif 暨 通过高德api调用wmts服务 暨 epsg:4326转epsg:3857 暨 一些坑

写在前面:因为不是专业,所以希望有大神不吝赐教。

用的工具有:tomcat-9.0.30; geoserver 2.11.2; Arc Map(ArcGis 10.4.1); Global Mapper 20 等必要编程环境

可能有用的网站:https://spatialreference.org/ ;

 https://docs.geoserver.org/stable/en/user/configuration/crshandling/coordtransforms.html

gdal: https://pan.baidu.com/s/1X9120CoHySWcUIV7FndaWQ

需求:通过高德api 访问一张坐标系为epsg:4326的tif图

因为tif图有三百多m,只能通过geoserver来曲线救国

高德1.4.5版本的api 已经支持了WMTS服务 https://lbs.amap.com/api/javascript-api/example/thirdlayer/wmts

第一步:部署tif图到geoserver

很顺利,添加工作区,添加数据存储,选择工作区,选择tif图数据,然后点击发布;这个网上教程很多。

然后因为高德说了,自己的api只支持epsg:3857,因此要自己额外加一个gridset,如下图查找epsg:3857, 添加18级level,level名改成高德要的那样,18级不够也可以再加

geoserver发布tif 暨 通过高德api调用wmts服务 暨 epsg:4326转epsg:3857 暨 一些坑_第1张图片

 然后回到之前发布的图层的Tile Cacheing ,如下保存即可,没什么大坑。

 你的wmts服务地址在欢迎界面里有写geoserver发布tif 暨 通过高德api调用wmts服务 暨 epsg:4326转epsg:3857 暨 一些坑_第2张图片

 然后贴上高德代码即可,就是贴上栅格图会覆盖路网不知道怎么解决,倒是地名都会在上面




    
    
    
    TileLayer.WMTS
    


结果发现epsg:4326的图即使发布成epsg:3857贴到高德地图上还是epsg:4326的坐标

第二步:把tif图 epsg:4326转成epsg:3857

我这门外汉被这一步坑惨了

安装ArcMap,添加数据,工具箱-》数据管理-》投影 , 发现只能转元素,不知是啥

工具箱-》数据管理-》栅格-》投影栅格 这个好像可以转tif图,投影栅格选择源坐标系为图层,目的坐标系为投影坐标系:Mercator(Auxiliary Sphere), 把导出的位置改成文件夹而不是默认的地理数据库,就可以把选择格式为tif了。ArcMap可能会出bug,选择工具栏里的地理处理,把后台的勾去掉即可。

图导出了,但是发现geoserver添加数据时,识别不了这个,会报如下这种错误Could not list layers for this store, an error occurred retrieving them: Failed to create reader from file:...

搜了下是说TIFF的头文件有问题或者geoserver无法识别投影坐标系,下了gdal,gdal_translate -of GTiff -scale 输入文件 输出文件 没有用。我也试了下这个 gdal_translate -of GTiff -co tiled=yes -a_srs epsg:3857  input.tif output.tif  也没有用,那么答案应该是geoserver不识别这坐标系,我还试着Global Mapper 又转了一遍,也没用。

Global Mapper 转是先添加文件,再在工具栏里的tools->configuration->projection 在search for epsg里搜3857,然后就可以转了,但转后的图会缩水不知道在哪有压缩选项。

最后只能用下鸡贼的方法,使用ArcMap的地图校准,虽然GM也有,但我没找着。

ArcMap右键工具栏勾选地理配准,geoserver发布tif 暨 通过高德api调用wmts服务 暨 epsg:4326转epsg:3857 暨 一些坑_第3张图片先去掉自动校正,然后点击在地图上添加控制点,右键x与y填写经纬度,填的经纬度当然是从高德地图上的啦。

可以从高德开发平台页面,开发者工具,坐标拾取器里找到。

控制点根据网上教程最好找马路交叉点。觉得控制点加的差不多了,再勾上自动校正。然后点更新地理配准把坐标改到原图上,校正是新生成一个图,我试了下geoserver也不识别,所以最好先复制一份。

因为手动校正有偏差,数据导出后会有一丝黑边,这黑边的颜色其实就是导出时的nodata。这就超出我的能力范围了,暂且可以凑合用。  黑边解决了参考这篇文章:https://blog.csdn.net/hayaqi0504/article/details/92793102

 

把校正好的图部署到geoserver,就行了。

最后,希望在以上任意操作有更好解决方法的大神能留言,谢谢

你可能感兴趣的:(其它)