使用GeoWebCache发布ArcGIS切片地图(实现高清电子地图)
使用GeoWebCache发布ArcGIS切片地图(实现高清电子地图)
一、先看效果
图1:geoserver发布的电子地图(模糊)
图2:GeoWebCache发布的ArcGIS切片电子地图(高清)
二、版本信息
Centos系统:CentOS Linux release 7.3.1611 (Core)
Tomcat:apache-tomcat-8.5.65
GeoWebCache:geowebcache-1.18.1
三、下载安装
1、Tomcat下载地址:https://tomcat.apache.org/download-80.cgi,安装过程这里不再赘述,不懂的可以百度。
2、GeoWebCache下载地址:https://sourceforge.net/projects/geowebcache/files/geowebcache/1.18.1/
3、GeoWebCache部署:把下载好的 geowebcache.war文件直接放入Tomcat里webapp目录,如:/usr/local/apache-tomcat-8.5.65/webapps
四、使用Bigemap下载ArcGIS瓦片数据
下载到的数据展示:
把下载好的数据上传到服务器指定目录:/usr/local/apache-tomcat-8.5.65/geowebcache
五、GeoWebCache的配置
1、新建缓存配置目录(姑且这么叫),并修改/usr/local/apache-tomcat-8.5.65/webapps/geowebcache/WEB-INF文件夹下的文件web.xml,在</context-param>节点后添加如下节点,记录新建的目录:
<context-param> <param-name>GEOWEBCACHE_CACHE_DIR</param-name> <param-value>/usr/local/apache-tomcat-8.5.65/geowebcache/arcgis</param-value> </context-param>
param-value是你所建的文件夹,本文新建了个geowebcache和arcgis文件夹,可任意命名,只要与web.xml添加的节点中保持一致。
2、重启tomcat服务
会发现该目录下自动生成了几个文件,注意这里的geowebcache.xml
3、添加ArcGIS切片的路径
修改在上文出现的/usr/local/apache-tomcat-8.5.65/geowebcache/arcgis/geowebcache.xm文件,在<layer>…</layer>节点中添加如下节点:
注意:启动服务时该配置文件中所有服务对应的切片方案和切片路径必须都存在,否则打不开GeoWebCache主页,显示“503...”,要删去不存在的arcgisLayer节点,并重启服务!
<!--
tilingScheme:具体某个瓦片的配置文件的地址
tileCachePath:具体瓦片图片的文件夹地址
-->
<arcgisLayer>
<name>城关镇_电子地图_瓦片_ArcGis</name>
<tilingScheme>/usr/local/apache-tomcat-8.5.65/geowebcache/城关镇_电子地图_瓦片_ArcGis/瓦片_ArcGis/conf.xml</tilingScheme>
<tileCachePath>/usr/local/apache-tomcat-8.5.65/geowebcache/城关镇_电子地图_瓦片_ArcGis/瓦片_ArcGis/_alllayers</tileCachePath>
<hexZoom>false</hexZoom>
</arcgisLayer>
城关镇_电子地图_瓦片_ArcGis为服务名,GeoWebCache服务页面中可看到改名字,这里随便起的。conf.xml就是bigemap下载后的配置文件。
4、/usr/local/apache-tomcat-8.5.65/webapps/geowebcache/WEB-INF/geowebcache-core-context.xml 需要加以下代码
<bean id="gwcArcGIGridsetConfigutation" class="org.geowebcache.arcgis.layer.ArcGISCacheGridsetConfiguration"/>

如果不添加此bean对象,启动时则会报以下错误:
15 Apr 14:35:15 (localhost-startStop-1) WARN [support.XmlWebApplicationContext] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gwcXmlConfig' defined in ServletContext resource [/WEB-INF/geowebcache-core-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No ArcGISCacheGridsetConfiguration could be found 15 Apr 14:35:15 (localhost-startStop-1) ERROR [context.ContextLoader] - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gwcXmlConfig' defined in ServletContext resource [/WEB-INF/geowebcache-core-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No ArcGISCacheGridsetConfiguration could be found at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:860) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4705) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5168) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1015) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1895) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalStateException: No ArcGISCacheGridsetConfiguration could be found at org.geowebcache.arcgis.layer.ArcGISCacheLayer.getGridsetConfiguration(ArcGISCacheLayer.java:256) at org.geowebcache.arcgis.layer.ArcGISCacheLayer.createGridSubsets(ArcGISCacheLayer.java:237) at org.geowebcache.arcgis.layer.ArcGISCacheLayer.initializeInternal(ArcGISCacheLayer.java:205) at org.geowebcache.layer.AbstractTileLayer.initialize(AbstractTileLayer.java:332) at org.geowebcache.config.XMLConfiguration.initialize(XMLConfiguration.java:891) at org.geowebcache.config.XMLConfiguration.afterPropertiesSet(XMLConfiguration.java:844) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1830) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1767) ... 25 more
再次重启GeoServer,进入GeoWebCache主页:http://192.168.8.190:8080/geowebcache
参考网站:
https://blog.csdn.net/hellfire2007/article/details/80876785
https://blog.csdn.net/wt346326775/article/details/53019487
https://my.oschina.net/u/4405061/blog/3327068
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析