Web GIS离线解决方案

1、背景

在离线环境下(局域网中)的GIS系统中如何使用地图?这里的地图主要指的是地图底图,有了底图切片数据,我们就可以看到地图,在上面加上自己的业务数据图层,进行相关操作。

要在离线环境下看到GIS地图,就要有底图切片数据,地图的底图切片数据在一定时间内是不会变化的,可以使用一些地图下载器下载地图切片,如这个地图下载器

在CS系统中可以基于GMap.Net来做,参考《百度谷歌离线地图解决方案》。

下面介绍下Web系统如何使用GIS切片数据,开发web GIS系统。

2、使用GeoWebCache发布WMS服务

Geowebcache是基于Java的Web开源项目,主要用于缓存各种WMS数据源的地图瓦片,它实现了多种服务接口,包括WMS-C,WMTS,TMS,KML。

Geowebcache作为一个独立的开源项目,在最近被Geosever的几个版本所集成,主要是对发布的WMS图层建立缓存切片。

服务发布步骤:

1)官网下载 geowebcache-1.8.0-war.zip,直接解压得到geowebcache.war文件,将该文件直接拷贝至tomcat目录下的webapps下即可,启动tomcat会对war包进行解压。

2)修改geowebcache的配置文件geowebcache-core-context.xml。该文件在Tomcat的webapps\geowebcache\WEB-INF下,修改如下:

<bean id="gwcXmlConfig" class="org.geowebcache.config.XMLConfiguration">
<constructor-arg ref="gwcAppCtx" />
<!--<constructor-arg ref="gwcDefaultStorageFinder" />-->
    <constructor-arg value="D:\\GisMap\\" />
<!-- By default GWC will look for geowebcache.xml in {GEOWEBCACHE_CACHE_DIR},
         if not found will look at GEOSEVER_DATA_DIR/gwc/
         alternatively you can specify an absolute or relative path to a directory
         by replacing the gwcDefaultStorageFinder constructor argument above by the directory
         path, like constructor-arg value="/etc/geowebcache"
    -->
<property name="template" value="/geowebcache.xml">
<description>Set the location of the template configuration file to copy over to the
        cache directory if one doesn't already exist.
</description>
</property>
</bean>

修改gwcXmlConfig实例化时使用固定路径,该路径可以为任意新建路径文件夹。Geowebcache启动之后会检查此文件夹下是否存在gewebcache.xml文件,如果不存在则按模板新建立并读取使用,如果存在则直接读取使用。

3)修改第2步中的gewebcache.xml文件:

<layers>
    <arcgisLayer>
        <name>ARCGIS-Demo</name>
        <tilingScheme>D:\\GisMap\\Layer\\conf.xml</tilingScheme>
        <tileCachePath>D:\\GisMap\\Layer\\_alllayers</tileCachePath>
    </arcgisLayer>
</layers>

在layers节点里添加arcgisLayer节点(默认生成的gewebcache.xml的layers节点有许多其他冗余数据,可删除可保留)。Name节点表示待添加图层的名称(这里配置为ARCGIS-Demo),titlingscheme节点为conf.xml文件的路径,tileCachePath为瓦片数据的路径。

4)瓦片地图的准备

其中conf.xml为配置文件,conf.cdi为显示区域约束文件,_alllayers文件夹下则存放了切片数据,Status.gdb为切片状态情况记录(可直接删除)。

通过瓦片下载器下载瓦片地图,然后生成的切片数据_alllayers文件夹:

L01-L10表示地图缩放级数,按照ArcGIS切片目录组织,切片命名规则也和ArcGIS切片数据命名规则一致。(conf.xml、conf.cdi和_alllayers在同级目录)。

5)启动tomcat,继而启动Geowebcache服务,浏览器访问 localhost:8080/geowebcache,如果一切正确的话可以看到下面的页面

该页面简单说明了Geowebcache的一些情况。

点击“A list of all the layers and automatic demos”连接可以看到下面:

该页面显示了geowebcache.xml配置的图层信息。图中可以看到只配置了一个名字为ARCGIS-Demo的图层,使用的EPSG3857坐标系,发布的图片格式为png格式,点击png链接即可看到瓦片地图。

这里地图显示的级别和坐标系配置都来自conf.xml文件。这里的前端js使用的是Openlayers。

个人比较喜欢leaflet这个GIS javascript库,使用leaflet加载GeoWebCache发布的服务:

var mapCenter = new L.LatLng(32.1280, 118.7742); //南京
var map = new L.Map('map', {
    center : mapCenter,
    zoom : 9
});

varwmsLayer = L.tileLayer.wms("http://localhost:8080/geowebcache/service/wms", {
        layers: 'ARCGIS-Demo',
        format: 'image/png'
});
wmsLayer.addTo(map);

3、使用自定义的Http服务

GeowebCache本质上就是个Http服务,通过请求参数获取配置文件中的路径中的切片数据,返回给请求方。

我们可以自己写个独立的Http服务,从数据库中读取切片数据返回给请求方。

切片请求地址类似:http://localhost:8899/1818940751/{z}/{x}/{y}

其中“1818940751”是下载器下载的地图类型,z/x/y分别是zoom和地图切片行列号。

前端js使用leaflet加载:

var amapNormalUrl = 'http://localhost:8899/788865972/{z}/{x}/{y}';
var amapNormalLayer = new L.TileLayer(amapNormalUrl, {
    minZoom : 1,
    maxZoom : 18,
    attribution : '高德普通地图'
});

var mapCenter = new L.LatLng(32.1280, 118.7742); //南京
var map = new L.Map('map', {
        center : mapCenter,
        zoom : 9,
        minZoom: 1,
        maxZoom: 18,
        layers : [ amapNormalLayer ]
});

前端js可以自定义投影Projection算法,而国内google地图、高德地图和腾讯地图都是标准的墨卡托投影,可以直接用leaflet加载。

配合一些画图插件,再配合一些后台POI检索服务,如:

《使用Lucene索引和检索POI数据》

《使用Solr进行空间搜索》

则能做出如下效果:

 

总结:介绍了如何使用下载的离线切片数据在局域网环境下发布Web GIS地图服务,前端配合使用一些js插件,实现web下空间数据的检索。

附件:

 conf.cdi

 conf.xml

 

参考:

http://www.cnblogs.com/luxiaoxun/p/4454880.html

http://www.cnblogs.com/luxiaoxun/p/5020247.html

 

作者:阿凡卢

出处:http://www.cnblogs.com/luxiaoxun/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

http://www.cnblogs.com/luxiaoxun/p/5022333.html

时间: 2024-10-18 05:11:57

Web GIS离线解决方案的相关文章

符合我公司GIS开源解决方案的探讨

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这一周,我对GIS开源解决方案中涉及到的开源软件以及相关技术和流程做了一些初步的探索,也了解了一下其他公司利用开源方案做的比较成熟的案例.这里我将一些技术关键点的预研做一下总结,同时对其他公司开源成功案例做一个分析,并提出个人认为目前最符合公司实际的GIS开源解决方案. 2.技术关键点预研 2.1空间数据入库(postgreSQL+postGIS) 利用po

公安110接处警GIS系统解决方案

解决 公安110接处警GIS系统解决方案    对执行任务的巡警车辆进行监控.指挥.调度以及交通事故和110报警处警的辅助处理.监控中心可以实时地掌握车辆的动态.迅速.及时地做出指挥决策,从而大大提高处警的效率. 1.轮询监控功能     系统按照一定的周期将被监控车辆的信息轮流显示在监视终端上,可以从屏幕上直观地看到被控车辆的位置在不停地实时变化. 2.点名监控系统 系统根据指挥人员的特别要求,向指定的车辆发布指令,使其按照较短的时间周期向监控中心发送信息.点名方式为:     ◆从表格中点名

Web打印的解决方案之证件套打

由于以前未接触过套打,一直觉得套打是一个比较神秘和麻烦的事情,因为打印机的 位置总是需要调整的,你总不能硬编码吧?但是如果位置可调,有需要直观一些来处理, 那就比较麻烦了. 在前面介绍过<Web打印的解决方案之普通报表打印>的一片文章中提到过那个打印控 件Lodop,做起套打来感觉还是挺方便的,至少位置调整界面不需要自己弄,位置嘛,也 提供了自动保存的功能,不需要理会. 一般的套打,包含了几部分操作:打印预览.打印维护.打印设计. 打印预览和打印维护是面向终端用户的,打印维护是指内容不能修改删

Geomajas API project 1.0.0发布 开源Web GIS框架

Geomajas 是一个用于企业的开源Web GIS框架,能够显示和编辑地理数据的客户端服务器的整合.Geomajas API project包含了一些可以用来表示哪些部分(类和方法或字段)被作为API的注释,特别适用于无需重构接口和因素的API项目标记. Geomajas API project 1.0.0该版本是首次发布的版本. 软件信息:http://www.geomajas.org/ 下载地址:http://www.geomajas.org/download

Geomajas SLD project 1.0.0发布 开源Web GIS框架

Geomajas 是一个用于企业的开源Web GIS框架,能够显示和编辑地理数据的客户端服务器的整合.SLD project 包含了DTOclasses和服务,针对这些SLD对象和XML表示之间进行转换.DTO类可用于包括GWT的各种环境,可以轻松地从JSON序列化. Geomajas SLD project 1.0.0该版本是首次发布的版本. 软件信息:http://www.geomajas.org/ 下载地址:http://www.geomajas.org/download

web做离线地图。

问题描述 项目情况:有一个项目是机遇地图展示.地图上标注信息.轨迹回放等功能,但是呢必须在局域网操作.先不考虑车的GPS信息如何发送到服务器.1.如何完成局域网下使用地图,我考试思路用百度地图,接口都很好,可以那是需要连接互联网.我们的要求不能连接外网.2.如果有别的地图,效果好点的有那些3.使用地图可能需要导航,局域网下如何实现.4.整体没有很好的思路..求大神帮忙. 解决方案 解决方案二:如果全部从无到有,你这个就不是小工程,哪怕你这个地图只是一块厂区,应该有地图供应商可以提供相关服务的解决

基于Web的电子商务解决方案(2)

web|电子商务|解决 统一安全服务体系结构的基本想法就是将系统的安全体系结构的复杂性迁移到所谓的统一安全服务层,因而使得系统的其他部分无须承担任何的安全职责. 在统一安全体系结构中,由一个单独的服务器来实现统一安全服务,在此服务器上可以找到所有的安全算法,该服务器是对所定义域进行鉴别的唯一场所.因此,统一安全的鉴别/注册方法还有另外一个优点:即便一个用户在一个特定域中同许多不同的安全元素相互作用,它只需要进行一次登录.统一安全服务其本身可能就是一个Web service,这样可以使得系统中其它

使用WebSphere Integration Developer V7开发JAX-WS web服务集成解决方案

简介 WebSphere Integration Developer(以下简称 Integration Developer)是一个基于 Eclipse 的集成开发环境(IDE)工具,用于促进包含 web 服务.Enterprise Information System (EIS) 服务.工作流和中介流应用程序的端到端面向服务架构(SOA)集成解决方案的构建. WebSphere Process Server(以下简称 Process Server)是一个 SOA 运行时平台,它的特色是拥有一个

java web start离线启动应用程序

问题描述 在应用程序里怎么知道javawebstart是否是离线启动应用程序的?我用javax.jnlp.BasicService里的isOffline()方法,无论在哪种情况下都是返回false的?! 解决方案 解决方案二:Thereisnowaytoreallytellifyouareofflineoronline.Youcantryjavax.jnlp.BasicService.isOffline(),butnotethatisOffline()alwaysreturnsfalseunle