目录
项目场景:
项目中,GIS技术路线是mapbox(二维)+cesium(三维)+geoserver(未采购ArcGIS Server)。但是已有的矢量底图使用的是arcgis配图,其范围比较大,且样式复杂,包括渐变水系线、行政区划、注记、且不同层级下配置了相应的图层要素。
问题描述:
起初,我使用ArcGIS进行切片处理,并使用Geoserver+Geowebcache发布服务。但是这种情况下,地图服务中注记会出现走样、模糊等问题,效果比较差。基于此,探索了一下ArcGIS pro,发现,相比在ArcGIS中切图,pro中可以设置更多参数,可以满足切图需求。
解决方案:
一、ArcGIS配图切片处理
前面提到,ArcGIS直接切图会导致注记走样、模糊等问题,需要使用ArcGIS pro进行切片处理。首先,下载ArcGIS pro。接着,介绍使用ArcGIS pro对ArcGIS配图进行切片的步骤:
1.Generate Tile Cache Tiling Scheme工具创建切片方案。工具导航:“数据管理工具箱——Tile Cache——Generate Tile Cache Tiling Scheme工具”。具体参数选择如下图。
为了切片之后的切片包可以适配性更好,我们使用一个预定义的切片方案(上图中predefined Tiling Scheme参数,被第一个红框挡住了),预定义切片方案栏我的路径是C:\Program Files\ArcGIS\Pro\Resources\TilingSchemes,大家找到自己对应的路径选择即可。
对于切图之后注记比较模糊的问题,经测试,DPI设置成192,Tile Size设置成512×512,在我的项目实践中能达到最佳的效果,大家可以根据自己的实际情况进行调整。
2.Manage Tile Cache工具生成切片缓存包。工具导航:“数据管理工具箱——Tile Cache——Manage Tile Cache工具”。输入的切片方案就是上述第一步创建的切片方案。
如果范围、层级设置较大,可以设置并行处理。我们可以先查看自己电脑的总核数,设置相应的最大并行处理数量,以提高切图效率。我设置为12。
切片包的文件结构:
二、geowebcache配置
首先,下载geowebcache,版本与geoserver对应即可,比如geoserver版本为2.26.1,geowebcache对应版本为1.26.1,以下按这个版本介绍。
接着,我们介绍具体geowebcache配置方法:
1.复制粘贴gwc-arcgiscache-1.26.1.jar包。解压geowebcache-1.26.1-war.zip后,将文件夹中的geowebcache.war后缀改为.zip,解压;在解压后的路径geowebcache\WEB-INF\lib中,找到gwc-arcgiscache-1.26.1jar,将其复制到D:\SH_GISServer\geoserver-2.26.1-bin\webapps\geoserver\WEB-INF\lib(这是我的项目路径,大家相应找到自己的geoserver安装路径即可,需要注意的是我这里用的是bin的安装包)。
2.解压配置gs-gwc-2.26.1.jar包。首先,在geoserver安装路径:D:\SH_GISServer\geoserver-2.26.1-bin\webapps\geoserver\WEB-INF\lib找到gs-gwc-2.26.1.jar,将其复制粘贴到其他路径下;接着,在“其他路径”下将gs-gwc-2.26.1.jar的后缀改为.zip,解压;然后,将上述解压后的路径geowebcache\WEB-INF下,找到geowebcache-arcgiscache-context.xml,将其拷贝到gs-gwc-2.26.1文件夹中。
3.修改gs-gwc-2.26.1中配置文件的配置项。首先,增加geowebcache-servlet.xml配置文件中的配置项;
<import resource="geowebcache-arcgiscache-context.xml"/>
接着,增加geowebcache-core-context.xml中的配置项。
<bean id="gwcArcGISCacheGridsetConfiguration" class="org.geowebcache.arcgis.layer.ArcGISCacheGridsetConfiguration" />
4.打包gs-gwc-2.26.1中的文件。全选gs-gwc-2.26.1中的文件,压缩为gs-gwc-2.26.1.zip,并将后缀改为.jar。
5.替换geoserver中的gs-gwc-2.26.1.jar包。将4中打包好的gs-gwc-2.26.1.jar拷贝到D:\SH_GISServer\geoserver-2.26.1-bin\webapps\geoserver\WEB-INF\lib替换。
三、geoserver发布ArcGIS切片服务
经过上面的准备工作,我们就可以发布ArcGIS切片服务了。
1.新增geowebcache.xml配置项。在geoserver安装路径D:\SH_GISServer\geoserver-2.26.1-bin\data_dir\gwc中找到geowebcache.xml,编辑。新增以下配置,其中tilingScheme以及tileCachePath是我们切片处理后的切片包中文件对应的路径,name为自定义,不重复即可。
<arcgisLayer>
<name>sh_ltyy_l18</name>
<tilingScheme>D:\SH_GISServer\geoserverdata\xxxxx\sh_ltyy_l18_v2/conf.xml</tilingScheme>
<tileCachePath>D:\SH_GISServer\geoserverdata\xxxxx\sh_ltyy_l18_v2/_alllayers</tileCachePath>
<hexZoom>false</hexZoom>
</arcgisLayer>
2.重启geoserver。在D:\SH_GISServer\geoserver-2.26.1-bin\bin路径下先点击shutdown.bat,再点击startup.bat即可。
四、总结
至此,关于Geoserver发布ArcGIS配图切片服务的全流程,包括切片生成、配置修改以及服务发布,均已详细阐述完毕。对于那些因项目预算有限而未采购ArcGIS Server的情况,geowebcache+ArcGIS pro无疑提供了一个高效且经济的替代方案。