MapGISIGServer空间分析实例开发篇(JAVA+JS)

MapGISIGServer空间分析实例开发篇(JAVA+JS)


2024年1月25日发(作者:)

MapGIS IGServer

空间分析

(JAVA+JS)

实例开发篇

目 录

第一章

二次开发简介

1.1 二次开发概述 ......................................................................................................................... 1

1.2 二次开发架构 ......................................................................................................................... 1

1.3 二次开发方式 ......................................................................................................................... 2

1.4 二次开发特点 ......................................................................................................................... 3

第二章

开发准备工作

2.1 开发环境与工具 ..................................................................................................................... 4

2.2 JAVA环境的安装配置............................................................................................................ 4

2.3 GIS常用术语 ........................................................................................................................... 4

第三章

开发预备知识

3.1 Web编程基本知识 .................................................................................................................. 7

3.2 二次开发技术 ......................................................................................................................... 7

3.3 二次开发原理 ......................................................................................................................... 8

第四章

实例开发与实现

4.1 站点搭建过程 ......................................................................................................................... 9

4.2 地图基本显示功能 ............................................................................................................... 17

4.2.1 地图显示 .................................................................................................................... 17

4.2.1.1 实现步骤 ......................................................................................................... 17

4.2.1.2 实现过程 ......................................................................................................... 26

4.2.2 基本操作 .................................................................................................................... 27

4.2.3 常用工具 .................................................................................................................... 28

4.2.3.1 鹰眼 ................................................................................................................. 28

4.2.3.2 放大镜 ............................................................................................................. 30

4.2.3.3 测量 ................................................................................................................. 31

4.3 图层显示控制的实现 ........................................................................................................... 33

4.3.1 实现步骤 .................................................................................................................... 33

4.3.2 实现过程 .................................................................................................................... 38

4.4 空间分析功能 ....................................................................................................................... 46

4.4.1 拓扑分析功能 .......................................................................................................... 46

4.4.1.1 实现步骤 ......................................................................................................... 46

4.4.1.2 实现过程 ......................................................................................................... 56

4.4.1.3 操作方法 ......................................................................................................... 57

I

4.4.2 叠加分析功能 ............................................................................................................ 61

4.4.2.1 实现步骤 ......................................................................................................... 61

4.4.2.2 实现过程 ......................................................................................................... 75

4.4.2.3 操作方法 ......................................................................................................... 76

4.4.3 圆裁剪功能 ................................................................................................................ 83

4.4.3.1 实现步骤 ......................................................................................................... 83

4.4.3.2 实现过程 ......................................................................................................... 87

4.4.3.2 操作方法 ......................................................................................................... 88

4.4.4 多边形裁剪功能........................................................................................................ 93

4.4.4.1 实现步骤 ......................................................................................................... 93

4.4.4.2 实现过程 ......................................................................................................... 97

4.4.4.3 操作方法 ......................................................................................................... 98

4.4.5 网络分析功能 ..........................................................................................................103

4.4.5.1 实现步骤 .......................................................................................................103

4.4.5.2 实现过程 .......................................................................................................109

4.4.5.3 操作方法 .......................................................................................................109

4.4.6 缓冲分析功能 .......................................................................................................... 114

4.4.6.1 实现步骤 ....................................................................................................... 114

4.4.6.2 实现过程 ....................................................................................................... 119

4.4.6.3 操作方法 .......................................................................................................120

第五章

小结

II

空间分析实例开发篇(Map)

第一章 二次开发简介

1.1 二次开发概述

WebGIS对于大多数人来说是既熟悉又神秘的,因WebGIS的广泛应用变得熟悉,又因其强大的功能和复杂的开发变得神秘。确实,WebGIS的开发具有一定的复杂度,因为它涉及的知识面太广,设计思路又不同于传统的C/S模式。如何尽可能地把复杂问题简单化,让新手能够快速掌握WebGIS的开发是MapGIS-IGServer一直追寻的目标。

MapGIS IGServer的诞生,提供多模式多方式的二次开发,将给众多WebGIS爱好者带来惊喜,实现大家共同的愿望。基于JavaScript的JAVA模式的二次开发,采用平台封装好的JAR包中的服务接口和脚本库实现。这种开发基于分层的体系架构,将复杂问题隐藏在内部,提供简便的、粒度适中的数据功能服务接口,为用户展现便捷、灵活的二次开发方式。

1.2 二次开发架构

图1-1 二次开发架构

.1.

MapGIS IGServer二次开发

 数据库层:包括空间数据库与属性数据库,支持SQL、Oracle等商用数据库。其中空间数据库(HDF)有两种类型,一类为传统矢量影像数据的空间数据库,一类为经过MapGIS K9缓冲处理过的地图缓存库。

 GIS平台层:主要为MapGIS K9的数据存储服务,是MapGIS K9底层核心,基于该数据存储服务提供了基本的空间数据管理与处理功能。

 IGServer服务层:包括MapGIS IGServer的GIS服务和Web服务(MapgisWebService),提供GIS的数据与功能服务。

 WEB应用层:采用JS 或JS+Flex API进行客户端开发,服务器端采用JAVA体系,底层通过集成的服务接口直接与MapgisWebService进行通信。

1.3 二次开发方式

基于JavaScript的JAVA二次开发,分别提供纯JS客户端开发和JS+Flex API客户端开发方式。下面主要介绍MapGIS IGServer平台纯JS的JAVA二次开发,分为服务器端和客户端两个层次。

(1)服务器端:应用平台提供的二次开发类库——,位于安装目录的MapGIS K9WebSDKServerJAVA下,也可直接从示例站点(JMWSFullDemo)中引用。

图1-2 JAVA二次开发SDK

(2)客户端:应用平台提供的核心脚本库,位于平台安装目录MapGIS

K9WebSDKClientJavaScript文件夹中,主要为,还包括其他的配置库、扩展库。

.2.

空间分析实例开发篇(Map)

图1-3 脚本库

纯JS的JAVA二次开发,以简便的二次开发集成服务接口、灵活的程序开发方式,为您提供一条便捷的二次开发通道。在已有知识储备的基础上,借助平台提供的综合示例站点,将引领你快速实现项目需求,体验WebGIS世界的奇妙。

1.4 二次开发特点

MapGIS IGServer平台基于服务的开发架构,提供Web服务的WEBGIS开发方式,具有高度的扩展性、易用性和灵活性。平台为用户提供一套功能强大、及其简单的应用服务接口,力求呈现给您一种全新的感受―――原来WebGIS的开发如此简单、如此有趣!用户直接调用这些二次开发服务接口便能简单、快速地开发出各种功能的实例站点。想感受MapGIS IGServer平台的神奇吗,那就动手搭建一个属于自己的站点吧!

.3.

MapGIS IGServer二次开发

第二章 开发准备工作

在开发各功能实例前,需要做好一系列的准备工作,包括:基本二次开发技术的了解,开发环境支持、开发工具、实例站点的地图数据准备等。下面简单罗列需要准备的内容,在平台安装配置篇文档中有这部分的详细介绍。开发实例站点前请先阅读平台安装配置篇文档,按照文档介绍的步骤安装配置所有必需的软件,做好必备工作。

2.1 开发环境与工具

下面主要介绍在Windows系统下的开发环境与相关工具:

 操作系统:Windows系列,推荐使用Windows Server 2003 【SP2】,该版本性能稳定,适用于做开发

 .NET环境:.NET Framework 2.0、IIS5.0或更高版本

 JAVA环境:JDK1.5或更高版本、Tomcat5.0或更高版本

 数据库:Microsoft SQL Server 2000【SP3】/2005、oracle

 WEBGIS平台:MapGIS IGServer平台(证书服务器+ MapGIS K9基础平台+IGServer增量包)

 浏览器:IE6.0 SP2或更高

 开发工具:MyEclipse6.0(Eclipse+MyEclipse插件)

准备开发环境和工具,需要按照安装配置篇文档所介绍的步骤逐步进行,具体内容请查看安装配置篇文档。基于Windows系统,安装MapGIS IGServer平台的机器需要.NET环境的支持,平台服务要用IIS进行发布;二次开发则基于JAVA环境,需要在进行二次开发的机器上安装配置JAVA环境和二次开发工具。

2.2 JAVA环境的安装配置

在安装配置篇文档中详细介绍了MapGIS IGServer平台的安装配置,要进行基于JAVA的二次开发,还需要安装配置JAVA的环境和MyEclipse6.0工具,即需要依次对JDK、Tomcat、MyEclipse进行安装和配置。JAVA环境配置相对来说复杂些,确保正确配置后才能进行网站的开发,因此每一步都要谨慎。(该部分内容请查阅《JAVA环境安装配置篇》文档)

1. 安装JDK与Tomcat,并对其进行环境变量设置。

2. 安装MyEclipse6.0,并进行相应配置。

2.3 GIS常用术语

方便初学者更好的进行空间分析实例站点(AnalyseMap)的二次开发,以下列出在空间分析中会涉及到的几个GIS常用术语:

地理数据:

.4.

空间分析实例开发篇(Map)

指表征地理圈或地理环境固有要素或物质的数量、质量、分布特征、联系和规律的数字、文字、图像和图形等的总称。

空间数据:

是指以地球表面空间位置为参照的自然、社会和人文经济景观数据,可以是图形、图像、文字、表格和数字等。

要素:

要素是对现实世界中现象的抽象,也是真实世界中的地理对象在地图上的表示;要素具有几何和属性。

缓冲区:

所谓缓冲区就是地理空间目标的一种影响范围或服务范围。

缓冲区分析:

从数学的角度看,缓冲区分析的基本思想是给定一个空间对象或集合和半径,确定它们的邻域。邻近度(Proximity)描述了地理空间中两个地物距离相近的程度,其确定是空间分析的一个重要手段。交通沿线或河流沿线的地物有其独特的重要性,公共设施(商场、邮局、银行、医院、车站、学校等)的服务半径,大型水库建设引起的搬迁,铁路、公路以及航运河道对其所穿过区域经济发展的重要性等,均是一个邻近度问题。缓冲区分析是解决邻近度问题的空间分析工具之一 。

下图为点对象缓冲区示例:

图2-1 点对象缓冲区

下图为线对象缓冲区示例:

图2-2 线对象缓冲区

下图为区对象缓冲区示例:

图2-3 区对象缓冲区

.5.

MapGIS IGServer二次开发

叠加分析:

叠加分析是地理信息系统最常用的提取空间隐含信息的手段之一。该方法源于传统的透明材料叠加,即将来自不同的数据源的图纸绘于透明纸上,在透光桌上将其叠放在一起,然后用笔勾出感兴趣的部分,提取出感兴趣的信息。地理信息系统的叠加分析是将有关主题层组成的数据层面,进行叠加产生一个新数据层面的操作,其结果综合了原来两层或多层要素所具有的属性。

网络分析:

对地理网络(如交通网络)、城市基础设施网络(如各种网线、电力线、电话线、供排水管线等)进行地理分析和模型化,是地理信息系统中网络分析功能的主要目的。

网络数据模型是真实世界中网络系统(如交通网、通信网、自来水管网等)的抽象表示。构成网络的最基本元素是线性实体以及这些实体的连接交汇点。前者常被称为网线或链,后者一般称为节点。节点中又有下面几种特殊的类型。

障碍(Barrier),禁止网络中链上流动的点。

拐点(Turn),出现在网络链中的分割结点上,状态属性有阻力,如拐弯的时间和限制(如在8:00到18:00不允许左拐)。

中心(Center),是接受或分配资源的位置,如水库、商业中心、电站等,其状态属性包括资源容量(如总量),阻力限额(中心到链的最大距离或时间限制)。

站点(Stop),在路径选择中资源增减的节点,如库房、车站等,其状态属性有资源需求,如产品数量。

路径分析:

路径分析是网络分析中的一种,其核心是对最佳路径和最短路径的求解。例如救护车需要了解从医院到病人家里走哪条路最快;旅客往往要在众多航线中找到费用最小的中转方案,这些都是最佳路径求解的例子。

拓扑分析:

拓扑一词来自于希腊文,意思是“形状的研究”。拓扑学是几何学的一个分支,它研究在拓扑变换下能够保持不变的几何属性——拓扑属性。为了得到一些拓扑的感性认识,假设欧氏平面是一张高质量无边界的橡皮,该橡皮能够伸长和缩短到任何理想的程度。想象一下基于这张橡皮所绘制的图形,允许这张纸伸长但是不能撕破或者重叠,这样原来图形的一些属性将保留,而有些属性将会失去。例如,在橡皮表面有一个多边形,多边形内部有一个点。无论对橡皮进行压缩或拉伸,点依然存在于多边形内部,点和多边形之间的空间位置关系不改变,而多边形的面积则会发生变化。前者则是空间的拓扑属性,后者则不是拓扑属性。

拓扑分析就是研究空间的拓扑属性,即对图形在拓扑变化下不变的性质进行相关的分析。

裁剪分析:

裁剪分析:就是先获取用户提交的圆形区域或多边形区域作为新的图层,要裁剪的图层作为另一图层,将两图层进行空间叠加分析,做“交”运算,得其分析结果为裁剪分析结果。

假设针对某一地区针叶林分布状况图,要获得某一矩形范围内的针叶林分布状况,就要对该分布图作矩形裁剪。裁剪结果即为所需要的针叶林分布状况图。

.6.

空间分析实例开发篇(Map)

第三章 开发预备知识

3.1 Web编程基本知识

在JAVA的Web站点编程中,了解常用的基本知识点,可以加深您对搭建网站的学习,同时可以使站点更加规范。结合JAVA环境的Web编程特点,基于JavaScript的MapGIS

IGServer平台的二次开发有自身的站点风格。

在站点目录中一般会存在如下文件:

表一 站点文件

文件扩展名 用途及说明

.java

.class

.jar

.htm

.css

.js

.jsp

Java原文件。

Java文件编译后的文件。

Java归档文件,存放各种java文件的压缩包。

静态网页文件。

样式文件,存放网站样式的样式表。

Javascript 编写的脚本文件。

内含Java脚本语言的网站文件。

网站配置文件。

站点目录中还有如下几个常用的文件夹:

表二 站点文件夹

文件夹名

WEB-INF

css

jslib

images

用途及说明

存放网站的配置文件、JAR包、及Java编译后的class文件。

存放站点样式表文件。

存放客户端函数库。

存放站点需要的图片。

3.2 二次开发技术

MapGIS IGServer平台的JAVA+JS二次开发是在JAVA环境下进行,采用JAVA语言实现的,涉及到很多WEB开发的技术,如:JSP技术、HTML语言、CSS样式表、JavaScript脚本语言、DOM模型、AJAX技术、VML语言、XML语言以及数据库技术等。如果你是.7.

MapGIS IGServer二次开发

WEB编程新手,在进行二次开发前最好先简单了解相应的内容。

3.3 二次开发原理

MapGIS IGServer平台的各功能都是通过调用二次开发库中的应用服务接口和脚本交互实现。其中,平台所有的应用服务接口已经集成到JAR包()中。在二次开发过程中,基本开发原理为:先获取到功能服务接口所需参数,然后直接调用该应用服务,最后通过客户端的控件返回结果信息。

.8.

空间分析实例开发篇(Map)

第四章 实例开发与实现

做好一切准备工作后,就可以开始搭建空间分析实例站点了。根据平台提供的示例站点(JWMSAnalyseMap),您可以轻松实现一个属于自己的空间分析功能网站。

空间分析实例是在地图基本显示功能的基础上开发实现的,同时需要图层列表显示控制功能的支持。因此,要实现整个空间分析实例,必须先实现地图基本显示功能和图层列表的显示控制功能。

站点所实现的空间分析功能如下:

1.拓扑分析功能:分析两个要素之间的拓扑关系,示例站点中提供相邻、相离、相交、包含等拓扑关系进行拓扑分析。

2.叠加分析功能:在统一空间参照系统条件下,每次将同一地区两个地理对象的图层进行叠合,以产生空间区域的多重属性特征,或建立地理对象之间的空间对应关系。示例站点中提供合并、相交、对称差和相减四种叠加类型。

叠加分析对图层有一定的要求,具体如下:

点对区图层只能进行相交、相减操作;

线对区图层只能进行相交、合并和相减操作;

区对区图层可以进行四种叠加操作,相交、相减、对称差和合并操作;

点对线图层只能进行相交操作;

区对点图层只能进行相交、相减操作。

3.裁剪功能:分为圆裁剪和多边形裁剪两个功能,即先获取用户提交的圆形区域或多边形区域作为新的图层,要裁剪的图层作为另一图层,将两个图层进行空间叠加分析,做“交”运算,得其分析结果为裁剪分析结果。

4.网络分析功能:要求使用的地图包含网络类图层,通过网络类图层查找路径信息。可以通过设置路径点和障碍点来完成网络分析的功能。

5.缓冲区分析功能:分为线缓冲分析和区缓冲分析,是指根据分析对象的点、线、面实体,自动建立它们周围一定距离的带状区,用以识别这些实体或主体对邻近对象的辐射范围或影响度,以便为某项分析或决策提供依据。

注意:若使用本机的服务进行开发,需确保Web服务可用、矢量数据服务、空间分析服务处于启动状态。若调用网络中的服务进行开发,则需保持网络连通,Web服务可用且具有操作权限、GIS服务(矢量数据服务与空间分析服务)开启。

4.1 站点搭建过程

MapGIS IGServer平台提供空间分析功能的示例站点(JMWSAnalyseMap),借助该示例将轻松搭建属于您自己的空间分析功能站点。

在搭建空间分析实例站点时,我们选用Eclipse(MyEclipse 6.0)作为开发工具,使用的语言主要为JAVA、JavaScript脚本。空间分析实例(JMWSAnalyseMap)在MyEclipse 6.0环境下的开发过程如下:

1. 在MyEclipse 6.0中新建名为JMWSAnalyseMap的站点,具体步骤如下:

.9.

MapGIS IGServer二次开发

(1) 打开MyEclipse 6.0的工作台,依次点击选择File—>New—>Web Project,弹出新建项目对话框,如下图;

(2) 在弹出的对话框中输入站点名称——JMWSAnalyseMap,源路径、站点目录和虚拟目录等各项设置使用默认值即可,最后单击【Finish】按钮完成。

图4-1-1 新建Web项目

图4-1-2 输入Web项目名称

.10.

空间分析实例开发篇(Map)

图4-1-3 新建Web项目成功

2.拷贝地图显示示例站点中的“icons”“images”、“css”、 jslib文件夹到Eclipse的新建Web项目下面,如图所示。

图 4-1-4 拷贝图片、样式、脚本

(1) icons文件夹:存放图层列表所用到的图标。

(2) images文件夹:存放站点使用的图标、图像,包括站点框架使用的图标;buttonx文件夹存放功能图标;default文件夹存放图层列表树的图标。若想根据自己的框架更换功能图标,直接替换相应文件下的图标文件即可。

.11.

MapGIS IGServer二次开发

图4-1-5 images文件夹

(3) css文件夹:存放站点所有的样式表文件。为站点框架页面样式文件;为图层列表框架的样式文件;为图层列表树的样式文件;为一般客户端页面通用的样式文件。如果您搭建另外的框架可在文件中修改样式,也可另行创建样式表文件。

图4-1-6 css文件夹

(4) jslib文件夹:存放脚本文件,如下图所示。

.12.

空间分析实例开发篇(Map)

图4-1-7 jslib文件夹

 :平台的核心脚本库;

 :平台数据配置脚本;

 :用户脚本库,应用核心脚本等实现相关功能;

 : 空间分析结果处理脚本;

 : 定位闪烁功能的脚本;

 ():图层列表目录树脚本,基于ext开源框架,属扩展库。

注意:jslib下都是站点的脚本文件,其中是平台的核心脚本库,提供相关脚本接口,在应用中可在扩展库和中调用并扩展。

3.拷贝重要的JAR包,即打开示例站点的JMWSAnalyseMapWebRootWEB-INFlib目录,把其下的全部JAR包拷贝到新建Web项目的相应目录下,最后在Eclipse工作台中刷新项目。

图 4-1-8 拷贝lib下的全部JAR包

.13.

MapGIS IGServer二次开发

图 4-1-9 刷新JMWSShowMap项目

注意:lib文件夹下的jar包是站点中用到的所有类库,其中是平台的核心二次开发库,该开发库集成了平台提供的所有应用服务,是平台的核心部分。

4.拷贝重要的JAVA源文件,即将站点源目录src下的源文件拷贝到新建工程的相应位置,然后刷新项目。

图 4-1-10 拷贝src下的com文件夹

.14.

空间分析实例开发篇(Map)

图 4-1-11 刷新JMWSQueryMap项目

 :地图单文档操作类的初始化;

 :地图文档图层操作类。

注意:src目录下的这两个JAVA文件都是经常用到的类文件,是将站点中反复使用的函数提取出来封装成的类,便于站点的开发维护。

5.添加JMWSAnalyseMap站点配置文件,即拷贝示例站点src目录下的ties文件,再修改代码中相应的值。

(1) 在Eclipse的工作台中,拷贝示例站点src目录下的ties文件到新建的JMWSAnalyseMap的相应位置。

图4-1-12 添加配置文件webconfig

(2) 修改配置文件ties中各配置项的值,即根据二次开发的部署环境设置站点所调用服务的IP和站点需要显示的地图文档:

.15.

MapGIS IGServer二次开发

 代码解析:

 MapType:地图的类型,矢量地图值为1;

 gisSvrIP: 站点调用的服务(MapgisWebService)所在机器的IP地址,默认为本机(127.0.0.1)。您可以根据自己的需求更改。

 MapName: 站点所显示的地图文档的名称,若有多个地图文档,可用逗号分隔。

 gisSvrPort:矢量地图服务的端口号,默认为5141,要跟GIS服务配置的值一致。

到此为止,站点前期搭建已经完成。用户接下来要根据自己的需求创建站点的首页以及地图基本显示的框架页面,实现地图基本显示功能,在完成显示功能的基础上再实现地图的基本操作和图层列表功能。

.16.

空间分析实例开发篇(Map)

4.2 地图基本显示功能

4.2.1 地图显示

4.2.1.1 实现步骤

在完成站点前期搭建的基础上,实现地图显示功能的步骤如下:

1. 确定所调用的服务和使用的地图文档,更改站点配置文件(ties)的Web服务IP和地图文档名称。

2. 搭建站点框架(可直接把站点的作为框架页面),在中添加地图显示功能的脚本代码,并在该框架的JSP页面加载地图的JSP代码。具体方法如下:

1) 在页面中可用table、div层等搭建一个查询站点框架,包括上部分(框架头部)和下部分(左、中、右),并设置框架的样式。(具体参考下面的站点框架代码部分)

框架头部(功能按钮)中列左列(图层列表)(地图容器)右列(分析设置与结果显示)链接等

图4-2-1 框架示意图

 示例站点框架规划:头部放置功能按钮、下部分的左列放置图层列表、中列主要作为地图容器(其底部可根据需求放置相关的链接等信息)、右列放置分析设置面板和结果等。

 设置站点框架样式:示例站点采用客户端页面直接设置和CSS设置相结合方.17.

MapGIS IGServer二次开发

式。其中,CSS设置采用外部文件方式,直接在与标志间添加外部样式文件的引用。如引用示例站点的样式文件(位于站点css文件夹中):

2) 在框架的下部分的中列添加承载地图的div层,并根据框架设置其高宽;

地图显示的DIV层:

注:此div层作为地图显示的容器。无论地图显示在何处,只须要将此DIV层添加到该处即可。

3) 紧接着table后面,添加两个iframe,站点功能实现时需要用到。同时拷贝示例站点中的文件到新建项目的相应位置,实现整个站点的刷新功能。

添加的iframe:

拷贝的:

2. 添加脚本库的引用,地图显示的初始化脚本在中,地图配置类则在脚本库中。二次开发时,主要设置上述两个脚本库。

添加的脚本引用:

中地图显示的脚本:如果只要显示地图,直接创建一个map对象即可;您还可以根据需要添加相关控件,丰富地图内容。

.18.

空间分析实例开发篇(Map)

注:initMap脚本函数中,map = new IMSMaps("zdims",IMSMapConfig)为地图的初始化脚本(非常重要),其后面均为各个功能控件,默认已全部加载;也可在实现某个功能的时候再加载,不用则将代码注释。

.19.

MapGIS IGServer二次开发

客户端中引用脚本库,在的脚本中有一个事件监听,一旦运行程序,就会调用initMap脚本(参数分别为客户端显示地图的Div层id、地图配置类名称),进行地图的初始化。

中地图配置的脚本:

上述配置是矢量瓦片的综合配置,如果只需显示矢量图,地图类型mapType为1,并可以把上述地图范围(矢量图通过GIS服务器获取)、瓦片级数、瓦片请求页面等配置删除。

注:您可根据需求搭建一个新的站点框架,也可直接用示例站点的框架。若使用示例站点框架和样式,则直接复制示例站点的【站点框架代码】到页面即可。

站点框架和脚本代码:

.20.

空间分析实例开发篇(Map)

3. 在页面设置字符编码为UTF-8,然后引用JAR包中相应内容,添加加载地图的JSP代码。

在上述代码中,首先从站点配置文件ties中获取到站点要显示的地图文档名称,然后通过CMapDisplay的对象mapDisplay调用LoadMapDisplay方法实现地图的加载。

3. 添加地图显示的处理页面:从地图配置文件脚本可知矢量地图的显示需要用到.21.

MapGIS IGServer二次开发

和页面,分别获取地图坐标范围和矢量地图。

方法:在Eclipse的工作台中右键单击新建项目的WebRootNewJSP,分别命名为和,并添加相应的处理代码;或者直接拷贝JMWSAnalyseMap示例站点下的和两个文件到新建站点的WebRoot下,刷新项目即可。

(1) 添加页面和相应代码

图4-2-2 新建(一)

图4-2-3 新建(二)

.22.

空间分析实例开发篇(Map)

在中添加如下代码:

 先设字符编码为UTF-8;

 引用平台二次开发库中的相关内容,即用import引用.*、eMapView、;

 再添加相应代码(直接拷贝)。在该页面中,主要用CSingleMapView的对象viewport来调用getViewBound服务接口获取当前地图的显示范围,然后进行设置,向客户端输出图片逻辑范围。

(2) 添加页面和相应代码

图4-2-4 新建(一)

.23.

MapGIS IGServer二次开发

图4-2-5 新建(二)

在中添加如下代码:

.24.

空间分析实例开发篇(Map)

 先设字符编码为UTF-8;

 引用平台二次开发库中的相关内容,即用import引用eMapView、basdef.*;

 再添加相应代码(直接拷贝)。在该页面中,主要用CSingleMapView的对象viewport来调用getMapImage服务接口获取地图图片的二进制流,最后将图片显示到客户端。

4. 修改JMWSAnalyseMap的站点配置文件,设置访问站点的起始页、字符编码方式和核心脚本的映射(或者直接拷贝示例站点WEB-INF下的到新建项目的相应位置覆盖原文件,然后稍作修改)。

图 4-2-6 站点配置文件

注:在上述配置中,配置节MapResourceHandler为平台核心脚本的映射,该脚本集成到平台二次开发库中。

到此,已经实现地图基本显示功能。可在Eclipse中发布JMWSAnalyseMap站点到Tomcat中,或者为该站点设置虚拟目录,然后启动Tomcat,打开IE浏览器运行站点。地图基本显示效果图如下图:

.25.

MapGIS IGServer二次开发

图4-2-7 地图基本显示效果

4.2.1.2 实现过程

地图的显示功能的基本实现过程为:客户端浏览Web服务器端提供的WebGIS站点,

Web服务器端获取站点所配置的地图文档名称,并通过脚本库获取地图显示窗口的高宽,然后调用服务接口,服务端接收该信息后生成合适的地图图片,并将该图片及相关的地图信息传送给Web服务器端,最后通过站点中提供的HTML标签在客户端显示图片。

地图的显示功能的实现流程图为:

ties设置站点要调用的服务地址(gisSvrIP)和显示的地图文档(MapName)(1)通过站点配置文件获取服务IP和地图文档名称,调用服务接口加载地图文档(2)通过脚本获取到地图显示窗口的高宽,转到页面,调用服务接口获取地图逻辑显示范围,并返回到客户端接收地图显示的高、宽参数pDisplay(mapName)通过该方法加载地图文档 CSingleMapView对象(viewport)从站点配置中获取调用的服务IP,设置到地图文档对象中wBound(width,height)调用GetViewBound服务接口获取地图的逻辑显示范围使用核心脚本库函数IMSMaps("zdims",IMSMapConfig)创建地图对象通过IMSMaps脚本将IMSMapConfig矢量图配置信息设置到MSMaps对象rver(gisIP)设置viewport所调用的服务IP从站点配置中获取要显示的地图文档,加载地图文档接收地图逻辑范围、高、宽、图片格式参数通过相应的核心库脚本处理,分别传送到IMSMapConfig配置中所设置的处理页面进行处理(3)通过脚本获取地图高宽、图片格式等参数,转到页面,调用服务接口进行取图 (mapName)调用加载地图文档的服务接口Open实现地图的初始化Image(rc,

w, h, )调用GetMapImage服务接口取图,返回地图图片字节流图4-2-8 地图显示实现流程

.26.

空间分析实例开发篇(Map)

从上面的流程图可知,地图显示功能的实现主要包括三个步骤:加载地图、获取地图显示的逻辑范围、调用GetMapImage服务接口取图。

4.2.2 基本操作

基本操作功能分为:放大、缩小、移动、复位和更新操作,下面将在地图显示功能上添加右键菜单和基本操作工具条。

以地图基本显示为基础的基本操作功能的实现步骤如下:

1. 在脚本库的初始化函数中加载操作状态控件;

 在initMap()中添加如下代码(位于地图对象初始化后):

2. 在框架的头部添加基本操作工具按钮;

 在框架头部相应的td标签中加入如下代码:

注:这里面用的工具按钮图存储在站点images目录下的buttonx文件夹中。

3. 在脚本库的初始化函数中添加右键菜单的脚本代码;

 在initMap()中添加如下代码(位于加载操作状态控件后):

.27.

MapGIS IGServer二次开发

注:右键菜单所用图标存储于站点images文件夹中。

4. 到此,已经实现基本操作功能。在Eclipse中保存修改,启动Tomcat,打开IE运行站点,效果如下图所示。

点击工具栏上的功能按钮,与点击右键选择的操作可以实现相同的功能。

图4-2-9 地图基本操作功能

由上述的实现步骤可以看出,地图基本操作功能的实现过程为:主要通过客户端按钮(onclick事件)调用核心脚本库的相应功能函数实现。

4.2.3 常用工具

4.2.3.1 鹰眼

地图鹰眼,俗称地图的鸟瞰图或缩略图。在电子地图中鹰眼的功能非常强大,通过鹰眼可以知道地图的当前位置;也可以在鹰眼上点击、拖动或移动到想要查看的位置。鹰眼的可视范围总是比主图的可视范围大,鹰眼中心框的可视范围就相当于主图的可视范围,主图的地理信息总是比鹰眼地图的地理信息详细。鹰眼地图的可视范围广阔,可以看到当前主图周边概况。

这个功能也是在地图基本显示的基础上实现的,紧跟基本操作功能,开发鹰眼功能的过.28.

空间分析实例开发篇(Map)

程如下:

1. 在框架页面的头部添加鹰眼工具按钮;

 在基本操作工具按钮后添加如下代码:

注:鹰眼工具按钮图标存储在站点images目录下的buttonx文件夹中。

2. 在脚本库的初始化函数(initMap)中加载鹰眼控件,在该初始化函数后添加鹰眼工具的控制脚本;

 在initMap()中添加如下代码(位于基本操作功能的脚本代码后):

 在initMap脚本函数后添加如下JavaScript代码:

注:首先添加鹰眼控件,然后用脚本函数控制鹰眼的启动与关闭。

3. 到此,已经实现鹰眼功能。在Eclipse中保存修改,启动Tomcat,打开IE运行站点。

点击工具栏上的鹰眼按钮或者是站点右下方的小图标,实现鹰眼的开关操作。打开鹰眼的效果如下图所示:

图4-2-10 鹰眼功能

.29.

MapGIS IGServer二次开发

4.2.3.2 放大镜

放大镜功能是将鼠标指针所在点周围一定区域的图像按一定比例进行放大显示,以方便用户更加清楚的查看地图的内容。放大结果显示于鼠标右下方,放大镜显示的图像中心点是以鼠标为中心点。

这个功能也是在地图基本显示的基础上实现的,紧跟前面实现的功能,开发放大镜功能的过程如下:

1. 在脚本库的初始化函数中加载操作状态控件;

 在initMap()中添加如下代码(位于地图对象初始化后):

2. 在框架页面的头部添加放大镜工具按钮:

 在鹰眼工具按钮后添加如下代码:

注:放大镜工具按钮图标存储在站点images目录下的buttonx文件夹中。

3. 到此,已经实现放大镜功能。在Eclipse中保存修改,启动Tomcat,打开IE运行站点。

点击工具栏上的放大镜按钮,将鼠标待放大的区域,就可以在跟随鼠标的方形区域查看到放大后的效果,效果如下图所示:

图4-2-11 放大镜功能

.30.

空间分析实例开发篇(Map)

4.2.3.3 测量

测量功能包括:距离测量和面积测量,这两个功能也是在地图基本显示的基础上开发的。紧跟前面实现的功能,测量功能的具体开发过程如下:

1. 在脚本库的初始化函数中加载操作状态控件;

 在initMap()中添加如下代码(位于地图对象初始化后):

2. 在框架页面的头部添加测量工具按钮;

 在放大镜工具按钮后添加如下代码:

注:测量工具按钮图标存储在站点images目录下的buttonx文件夹中。

3. 在脚本库的初始化函数中添加测量功能的脚本代码;

 在initMap脚本中添加如下JavaScript代码(位于基本操作功能的脚本代码后):

4. 到此,已经实现测量功能。在Eclipse中保存修改,启动Tomcat,打开IE运行站点。

点击工具栏上的测距按钮,在地图是点击待测的起始和终止点,绘制折线,测量距离效果如下图所示:

.31.

MapGIS IGServer二次开发

图4-2-12 距离测量功能

点击工具栏上的测距按钮,在地图是点击待测的区域,绘制一个图形,测量面积效果如下所示:

图4-2-13 面积测量功能

由上述的实现步骤中可看出,地图常用工具(鹰眼、放大镜、测量)的实现过程:通过客户端按钮(onclick事件)调用客户端脚本和核心脚本库的相应功能函数实现。

.32.

空间分析实例开发篇(Map)

4.3 图层显示控制的实现

图层显示:实现地图文档的图层列表显示功能,通常用目录树样式显示图层列表。

图层控制:实现图层要素状态的控制功能,配合各种操作使用,以满足用户的需求。

图层显示与控制功能可实现同一个站点的矢量图层,同时控制其状态。该功能在地图基本显示的基础上实现,获取并显示当前显示矢量地图的图层信息,通过控制图层的状态(可见、隐藏、可查询、可编辑)来配合空间分析操作完成相应的分析功能。

4.3.1 实现步骤

在地图基本显示功能基础上,实现图层显示控制功能的步骤如下:

1. 在JMWSAnalyseMap中新建一个JSP文件,添加相应处理代码实现图层列表的功能(或者直接拷贝JMWSAnalyseMap示例站点下的页面到新建站点相应位置)。

(1) 新建图层列表的处理页面;

图4-3-1 新建

(2) 打开页面,添加如下处理代码:

 先设字符编码为UTF-8;

 引用平台二次开发库中的相关内容,即用import引用.33.

MapGIS IGServer二次开发

.*;

 再添加相应代码(直接拷贝)。

2. 在JMWSAnalyseMap中新建一个承载图层列表目录树的html文件(),再添加相应代码(或者直接拷贝JMWSAnalyseMap示例站点下的页面到新建站点下)。

(1) 在站点中新建文件:右键单击JMWSAnalyseMap站点的WebRoot,选择NewHTML,在弹出的对话框中将名称命名为。

.34.

空间分析实例开发篇(Map)

图4-3-2 新建

(2) 打开文件,设置页面的标题,分别添加引用和承载图层列表的表格。

 标签之间加入如下引用:

注: 与为图层显示控制功能的两个脚本库;

css文件为图层列表的样式文件。

 之间创建一个div层,用于存放图层列表信息;脚本用于加载图层列表目录树。代码如下:

.35.

MapGIS IGServer二次开发

注:表格中有一个名为“layerTree”的关键div层,用于承载图层列表信息。

3. 在页面框架的中部左列添加用于存放图层列表的控件,并设置样式。

 即在左列的标签中添加一个table控件,并用一个iframe子框架放置图层列表,代码如下:

注:名为“toolFrame”的iframe用于放置图层列表,页面嵌入到此子框架中。

4. 到此,已经实现图层显示控制功能。在Eclipse中保存所有的修改后,启动Tomcat,打开IE运行站点。在框架左侧就会显示地图的图层和状态信息。效果如下图所示:

.36.

空间分析实例开发篇(Map)

图4-3-3 图层列表

图层控制:选择图层列表中的某一图层,右键选择图层状态(可见、隐藏、可查询、可编辑),然后单击提交按钮更改图层状态,实时更新地图文档。或直接单击图层列表下的按钮(隐藏全部图层、显示全部图层、查询全部图层)再提交,实现全部图层的同一状态控制。

图4-3-4 图层状态

注:在执行地图查询的功能时,要求所查图层必须为可查询状态(包括编辑状态)。可以同时有多个图层处于可见、可查询和隐藏状态,但有且只有一个图层处于可编辑状态。

.37.

MapGIS IGServer二次开发

4.3.2 实现过程

图层的显示与控制是一个非常重要的功能,在进行某些操作的时候,需要首先设置图层的状态,不同的操作要求图层的状态不同,图层状态有可见、隐藏、可查询和可编辑四种状态。在进行查询操作的过程中,要求将图层状态设置为可查询状态(包括编辑状态),所以在使用查询功能之前,需要先实现图层的显示与控制功能。

图层的显示与控制使用到了、、、和页面等,当然也包括地图基本显示部分。

图层显示功能实现过程:

地图显示功能变量中的showlayertree将页面跳转到图层列表中使用iFrame框架调用页面获取中的图层列表通过div层layerTree,调用脚本的loadTreeList脚本函数加载图层列表到客户端注:位于站点src目录下调用getLayerListByJSON函数,获取图层状态和列表初始化地图视图(CSingleMapView)_创建 CMapLayerSetting对象mapLayer调用中的getLayerListByJSON函数返回信息,显示图层列表调用MMDS服务中的GetLayerInfo和getMapLayerInfo等服务接口,实现图层列表和状态的获取图4-3-5 图层显示流程图

1. 是图层列表树的脚本库,通过客户端(中)div层为layerTree的id,调用loadTreeList()脚本函数进行处理,转到获取图层列表并显示到客户端。

 部分代码:

.38.

空间分析实例开发篇(Map)

„„

„„

.39.

MapGIS IGServer二次开发

 中脚本代码:

2. 在中创建CMapLayerSetting类对象,调用getLayerListByJSON方法进行处理,以JSON的方式返回图层列表属性信息。CMapLayerSetting类位于src目录下的中。

 中图层列表部分代码:

.40.

空间分析实例开发篇(Map)

 getLayerListByJSON()代码:

.41.

MapGIS IGServer二次开发

图层控制功能实现过程:

变量中的showlayertree将页面跳转到处理,实现图层列表的显示页面嵌入到iFrame子框架中,显示图层列表通过状态控制按钮调用脚本来设置图层状态(包括单图层状态控制和所有图层状态控制)通过提交按钮调用submitLayerStatus()提交设置的状态信息,转到页面处理更新通过div层layerTree,调用脚本脚本通过CMapLayerSetting对象mapLayer调用UpdateMap ()方法进行更新(UpdateMap位于中)图4-3-5 图层状态控制流程图

1. 在图层列表中通过右键单击图层,或者左键单击图层列表下方的按钮,改变图层的状态,功能函数在脚本库中。

 单图层状态设置的按钮代码

.42.

空间分析实例开发篇(Map)

 所有图层状态设置的按钮代码

注:状态控制按钮,以及这些按钮所触发的脚本函数(handler后的参数)全部位于.43.

MapGIS IGServer二次开发

中,请参见该脚本文件查看详细代码。

2. 点击提交按钮,触发submitLayerStatus()函数提交更改的图层状态信息,通过“setLayerStatus” 的url标记传入参数params(_method=UpdateMap)转到页面处理。提交成功后,在地图容器中刷新地图即可。

 图层列表下方提交按钮的代码:

 submitLayerStatus()代码

 中更新地图文档部分代码

3. 在中通过CMapLayerSetting类对象,调用UpdateMap ()方法进行处理,.44.

空间分析实例开发篇(Map)

更新地图文档信息。CMapLayerSetting类位于src目录下的中。

 UpdateMap ()代码

.45.

MapGIS IGServer二次开发

4.4 空间分析功能

4.4.1 拓扑分析功能

拓扑分析,即分析两个图层要素在拓扑变化下其不变的性质。拓扑分析功能是在地图基本显示功能和图层显示与控制功能的基础上实现的。

4.4.1.1 实现步骤

拓扑分析功能必须在地图基本显示和图层控制两个功能基础上才能进行开发,因为地图基本显示是所有功能的基础,而实现拓扑分析需要将图层状态设置为可编辑状态,所以拓扑分析开发是在前述章节的基础上进行的。

拓扑分析功能开发步骤如下:

1. 实现地图基本显示功能(已实现),请参见“4.2 地图基本显示功能”章节。

2. 实现图层显示与控制功能(已实现),请参见“4.3 图层显示与控制功能”章节。

3. 在框架页面中分别添加拓扑分析按钮、放置分析面板和结果的控件。

(1) 在框架的头部添加拓扑分析的功能按钮;

 在框架头部相应的td标签间加入如下代码:

注:拓扑分析功能按钮通过onclick事件调用onSelectToolClick脚本函数处理。

(2) 在框架的右列添加承载拓扑分析面板和分析结果的控件,并设置样式。

 即在右列的标签中添加一个table控件,并用一个div层下的iframe子框架放置拓扑分析面板和分析结果,代码如下:

.46.


发布者:admin,转转请注明出处:http://www.yc00.com/web/1706129328a1442344.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信