Geoserver+geowebcache 发布Arcgis 切片服务与leaflet调用

之前一直想弄这个东西,只不过需求一直没跟上,但是这次有需求了,就实际操作了下。下面将实现过程记录下来:

1:下载最新版的Geoserver与geowebcache插件,虽然最新版的Geoserver已经自带集成了geowebcache,但是网上都说不能正常使用Arcgis切片,我也就没折腾,直接操作稳妥的方式。然后这两个软件的下载地址我就不贴出来了,直接百度就能搜到,下载最新版的就对了。还有直接使用geowebcache+tomcat的方式我也尝试了,但是修改了geowebcache配置文件之后启动服务之后就一直404.搞了半天也没解决。后来放弃了,而且项目中本来也都使用了Geoserver,如果在使用tomcat的话还需要额外增添端口,也是一个不好的方案(为没能力解决问题找了个接口.....),geowebcache就是找了个承载,将它以服务的形式启动,理论上nginx应该也可以搞定,这里不做研究。

2:言归正传,开始。首先将下载好的geowebcache.war包拷贝到Geoserver目录县的webapps目录。

这个时候启动Geoserver,访问http://localhost:8080/(默认Geoserver端口),这个时候就已经成功启动了Geoserver与geowebcache。

但是网上有的文章说这个时候geowebcache.war包就已经自动解压成文件夹了,但是我实际操作的时候没有解压出来文件夹,然后我这里的文件夹是通过tomcat解压出来的.....可能这里我操作的有些笨拙,确实了解不多。。。

下一步,修改配置文件,在</context-param>节点下增加代码片段(为了让后边的修改是实时生效,咱们每次改动配置文件之后都重启下Geoserver)

<context-param>
    <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
    <param-value>D:\ArcgisWPtest</param-value>
  </context-param> 

这个地址可以随意修改,但是需要咱们手动建立一个对应路径位置的空文件夹,一般就跟你的数据放在一个物理路径下就可以。

修改第二个配置文件

<bean id="gwcArcGIGridsetConfigutation" class="org.geowebcache.arcgis.layer.ArcGISCacheGridsetConfiguration"/>

增加了这个就可以让后边的配置修改知道你发布的图层是Arcgis的切片图层了,不改这里的话访问服务的时候会503。。加上就完事了。

还记得上边咱们填写的那个路径吧,当你启动服务之后那个路经下会对应生成一些文件。

上边的文件就是咱们准备发布的切片文件,在这一步修改geowebcache.xml配置文件。

<arcgisLayer>
      <name>arcgistest</name>
      <tilingScheme>D:\ArcgisWPtest\arcgiscache\conf.xml</tilingScheme>
      <tileCachePath>D:\ArcgisWPtest\arcgiscache\_alllayers</tileCachePath>
      <hexZoom>false</hexZoom>
      <storageFormat>esriMapCacheStorageModeExploded</storageFormat>
</arcgisLayer>

在layers节点下增加此代码段。

这两个路径跟你的数据是对应的。

在这里就完成了全部的配置项的修改,切记这里一定是要标准的Arcgis切片文件,完成的文件内容就是上边两张截图的内容。

然后重启Geoserver服务,看下成果。

按理说在这里是可以预览的,但是我这里不知道为啥看不到预览效果,经纬度跟比例尺都是NaN,但是这里不纠结,咱们最终是要用到项目里的,这里看不看没啥用。

然后geowebcache这个插件发布完的数据都是完全遵守OGC标准的,所以不管在任何一个地图框架中都是可以加载的。请大家各自查阅自己使用的地图框架api看是如何加载的,这里我以Leaflet举例。

let ArcGISLayer = L.tileLayer.wms('http://localhost:8080/geowebcache/service/wms', {
				            layers: 'arcgistest', // 需要加载的图层
				            format: 'image/jpeg', // 返回的数据格式
				            transparent: true
				        })
map.addLayer(ArcGISLayer);

最后Demo效果图:

写的比较急,可能有些细节丢失,希望能够帮助有类似需求的同学,也是对自己工作学习的一个记录,从事GIS工作也挺久了,但是一直没有好好记录过,希望能从这个作为开始,记录工作学习中的点击,目前重点方向在三维,

Cesium与其他的WenGL技术,目前针对学习Three.js。之后也会记录不同类型的文章。因该会比较杂。不一定只存在开发方面的,也有可能包含数据处理的东西,只要是我认为有价值的我可能就会记录下来。希望这种方式也能

带给我成长。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Leaflet是一个基于Web的交互式地图库,Geoserver是一个开源的地理空间数据服务器,PostGIS是一个基于PostgreSQL的地理空间数据库扩展。 在使用LeafletGeoserver和PostGIS来构建Web GIS应用程序时,通常的工作流程如下: 1. 准备地理空间数据并将其加载到PostGIS数据库中。 2. 配置Geoserver访问PostGIS数据库,并将数据发布Web服务。 3. 在Leaflet中编写JavaScript代码,以访问Geoserver发布Web服务,并在Web页面上呈现地图。 具体步骤如下: 1. 准备地理空间数据并将其加载到PostGIS数据库中。 首先,需要安装PostgreSQL和PostGIS扩展。然后,在PostgreSQL数据库中创建一个新的数据库,并在该数据库中启用PostGIS扩展。接下来,使用QGIS等GIS软件来创建或导入地理空间数据,并将其保存为PostGIS支持的格式(例如Shapefile)。最后,使用PostgreSQL客户端工具(例如pgAdmin)将地理空间数据加载到PostGIS数据库中。 2. 配置Geoserver访问PostGIS数据库,并将数据发布Web服务。 打开GeoserverWeb界面,在数据存储中添加新的PostGIS数据库,并配置数据库连接参数。然后,在Geoserver中创建工作区和数据图层,并将其发布Web服务。在此过程中,可以选择不同的发布格式(例如WMS、WFS等)和地图样式(例如SLD文件)。 3. 在Leaflet中编写JavaScript代码,以访问Geoserver发布Web服务,并在Web页面上呈现地图。 在HTML页面中引入Leaflet库和Leaflet插件(例如Leaflet.markercluster)。然后,在JavaScript代码中编写Leaflet地图对象,并使用Ajax请求访问Geoserver发布Web服务。最后,将地图对象添加到HTML页面中,以呈现交互式地图。 总之,LeafletGeoserver和PostGIS可以一起使用来构建功能强大的Web GIS应用程序,可以实现从数据管理到地图呈现的全流程。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值