1、1基于 GeoServer 的电子地图系统说明概 述 一 AJAX 的应用系统,前台页面基于 OpenLayers2.2 版本来开发,地图服务基于GeoServer1.5,后台查询基于 Spring 和 Hibernate。前后台基于 JSON 方式进行通信。 注意:为了使代码有最大的安全和维护保障,前后台所有的文件存储和通信编码均为 UTF-8(SLD 文件有例外,另有说明),数据库编码安装时也指定为 UTF-8。 关键词 开源软件 WebGIS OpenGIS PostgreSQL PostGIS GeoTools GeoServer uDig OpenLayers 一 、 OPENGIS
2、 相 关 概 念 知 识 1.1 开源软件、WEB 技术相关 GPL:GNU 全局公共许可证(General Public License)简称为 GPL,是 GNU 的开源软件许可证的一种,大多数的 GNU 程序和超过半数的自由软件使用它。同时,它也是开源软件领域对许可人权力限制最严的许可证。GPL 首先是承认软件的版权 软件有原始的版权所有者,然后 纳入自由软件的版权许可约束。在承认版权的前提下,通过软件的版权许可来实现自由权利的要求。GPL 许可证最重要的特点在于它要求根据 GPL 许可证发布的 软件(如:最有影响力的 Linux)修改、翻译的演绎作品,甚至只要其任何一部分代码是以GPL
3、 发布的,那么全部程序也必须受 GPL 许可证的约束,即继续遵守 GPL 许可证的规定,有些人将其称之为 GPL 的“病毒效应”。GeoTools、GeoServer 都使用 GPL 授权协议。AJAX:Asynchronous Javascript. and XML(异步 Javascript 和 XML),AJAX 是Web2.0 时代的主要技术之一,它通过 JS 与服务器通信,中间传输数据使用 XML(当然采用 XML 不是必须的,如本系统为 JSON),实现网页内容无刷新更新。网上地图的请求与显示通常采用此技术,最典型的如:Google Map。本文中的 OpenLayers 也使用了
4、此技术。 JSON:JavaScript. Object Notation(JavaScript 对象符号),JSON 是一种用简单文本描述 JavaScript 对象的开放格式标准,它易于构建和解析。换句话 说,可以将发往浏览器的数据编码格式从 XML 改为 JSON 对象,而 JSON 对象能够很容易地转成 JavaScript 对象。 MVC 设计模式: 模型 -视图-控制(Model、View、Controller) 的缩写。模型(Model)是应用程序的主体;视图(View )负责生成用户界面部分; 控制器可以根据用户的输入,控制用户界面数据显示及更新 Model 对象状态。MVC
5、设计模式要求在应用程序开发中将模型逻辑,界面显示,数据层相分离。 MVC 设计模式由事件驱动。 OpenLayers 就实现了这种设计模式。 21.2 OPENGIS 相关 OGC:OpenGIS 联盟。 WMS:Web Map Server 网上地图服务,最简单的功能就是:通过 HTTP 请求,获得相应的地图,地图为图片格式,如:JPG/GIF/PNG。 WFS:Web Feature Server 网上要素服务,最简单的功能就是:通过 HTTP 请求,获得相关的地理要素信息。 WCS:Web Coverage Server,简单地说就是对栅格数据的服务,它允许用户得到连续的栅格图像,这些图
6、像可能包含多个波段,因此你可以将一幅完整的多波段遥感影像放到你的 WCS 服务器上用 WCS 进行 Internet 共享,而用户利用浏览器或者其它胖客户端工具通过HTTP 请求就可以得到这个影像数据。 当然可以对请求参数进行限定,取得其中的一部分(空间的一部分或波段的一部分)数据。 SLD:风格化图层描述器(Styled Layer Descriptor)的简称,用于定义地图显示样式,GeoServer 支持 SLD,通过自定义 SLD,可以在地图中显示文本和图片符号,还可以设置过滤器,自定义图例。 GML:地理标记语言,是 WFS 规范指定的地理要素的 XML 编码声明和数据格式。 WKB
7、/WKT:OpenGIS 规范定义了两种表达空间数据的标准方法:Well-Known Text (WKT) 和 Well-Known Binary (WKB) 二 、 相 关 软 件 介 绍 : 2.1 GEOTOOLS:一个基于 JAVA 的开源的 GIS 工具包,提供了实现 OGC 规范的一系列函数。是一个松散的工具包,用户可以调用其中的相应的包进行开发。Geoserver、uDig 就是基于 Geotools 的。 2.2 GEOSERVER:GeoServer 基于 JAVA 的开源软件,通过调用 GeoTools,提供遵循 OGC 标准的 WFS-T 和WMS 服务。其 WMS 结果
8、的显示演示采用了 OpenLayers。 2.3 OPENLAYERS:一个基于 AJAX 技术的网上地图显示客户端,支持 WMS 地图显示、WMS 时间序列地图动态显示、GML/Feature 数据显示等。 2.4 POSTGRESQL/POSTGIS:最先进的开源数据库,PostGIS 是其在空间数据上的扩展。 三 、 WEBGIS 相 关 的 OPENGIS 规 范 3.1、WFS/WMS: 33.1.1、 版 本 与 流 通 : 版本号为三段数字表示,现在(2006-5-17)WFS 的最新版本是 1.1.0,旧版本有0.9.1、1.0.0;WMS 的版本有:1.0、1.1、1.1.1
9、、1.3.0。Geoserver 支持WFS1.0、WMS1.1.1,其返回的 GML 版本是 2.1.2。 版本号必须出现在两个地方,一是客户端请求参数中、再是服务器 GetCapabilities 操作返回的 Capabilities XML 文档中。 需要注意的是,客户端请求的版本号应该与服务器支持的版本号匹配,否则按最近匹配原则: 1、 如果客户端请求的版本号高于服务器支持的,服务器按其支持的最高的版本号执行,相反,则按最低版本号执行。 2、 如果服务器响应的版本号高于客户端支持的,客户端会重新发送一个较低版本号的请求,相反,发送一个较高的版本。 3.1.2、 请 求 规 则 : 有
10、两 种 请 求 方 式 : GET、 POST。 WFS 的 Post 请求是提交一个符合 WFS 规范的 XML 文本,服务器来对这个 XML 文本进行解析后执行,下面是两个 Get 请求: 请求一: http:/127.0.0.1/geoserver/wfs? request=GetCapabilities subtype=gml/3.1.1 时,一个 GML 实例将被返回给客户端。 GetGMLObject(获取 GML 对象) 操作:允许通过 ID 号从服务器上获取地理要素和元素,该操作将返回一个 XML 片段。注意 GetGMLObject 操作不是可选的,不是服务器必需支持的。Lo
11、ckFeature (锁定要素)操作:网络连接本身是不稳定的,要实现事务操作的正确执行,解决并发冲突问题,需要锁定地理要素,这类似数据库中的相关操作(实际上也确实是一种空间数据库操作)。 Transaction(事务操作):事务操作描述了从网上获得的地理要素实例的数据事务操作。当事务操作完成时,WFS 服务器将返回一个 XML 文档指示事务的完成状况。 GetCapabilities(获取服务能力)操作:任何 OGC 的 web 服务器,包括 WFS、WMS,必须提供 GetCapabilities 操作,用于描绘服务器性能容量。GetCapabilities 请求将返回服务器元数据。 3.1
12、.8、 WMS 操 作 : GetCapabilities(强制)操作:反映服务器性能信息,与 WFS 的 GetCapabilities 操作相似。 GetMap(强制)操作:返回地图,这是最常用的操作,可参考前面请求规则的请求二例子。 GetFeatureinfo(可选 ):该操作是可选操作,能提供给客户端更多地理要素的信息,如在客户端选择地图上某一点,GetFeatureinfo 操作可以返回该点的相关信息。 3.2、空间数据格式 WKB/WKT 6OpenGIS 规范定义了两种表达空间数据的标准方法:Well-Known Text (WKT) 和Well-Known Binary (W
13、KB) 形式。WKT 和 WKB 都包括对象的类型和坐标系。OpenGIS 规范还需要空间对象的 internal 存储格式包括空间参考系统标示符 (SRID),在空 间对象装入数据库时需要提供 SRID。 OGC 的更多信息,请访问:http:/www.opengeospatial.org 四 、 POSTGRESQL POSTGIS 安 装 有一些图没有截下来,本人已在 FreeBSD 下装过,其实读一下软件的安装说明就可以了,很简单。 登录 http:/www.postgresql.org,下载最新版的 PostgreSQL 数据库,此安装文件已包含 PostGIS(必须下载 8.2 以
14、上版本,不可下载.版,经测试.版对数据的备份和恢复存在问题,恢复备份数据时不能正确恢复数据表的主键)。 开始安装 首先是选择安装过程中使用的语言,没有找到中文,只好选择还能看得懂的英文。另外,你可以选择最下面得选项以把详细的安装日志写到当前安装目录,以备排查安装故障,也可以阅读一下了解它的安装过程。 选择安装语言 点下一步就是选择安装内容的选项了,其中分四大部分,分别是数据库服务器端、用户界面、数据库驱动和开发模块。你可以根据需要选择安装。另外此处要注意的是“Data directory”选项只能安装在 NTFS 格式的分区,如果你要安装在其他格式的分区的话,需要在安装完后,手动运行 Init
15、db.exe。 注意:如果你喜欢用图形界面来管理操作数据库得话,在用户界面里可以选择安装pgAdminIII。 PostGIS Spatial Extension 为 PostgreSQL 提供了 GIS 支持(PostGIS),这里必须要安装。 选择安装选项 选择安装选项 接下来是服务配置,你可以把该数据库服务器作为 Windows 的一个系统服务运行,这也是 PostgreSQL 开始真正支持 Windows 安装的一个体现(如下图)。 选择安装为服务 在此设置服务名,还有运行该服务的 Windows 帐号。你可以输入一个已有帐号,也可以输入一个目前并不存在的帐号,让安装程序自动建立这个帐
16、号。 自动创建帐号 7创建帐号完毕后,就是要配置数据库的监听端口、连接许可,及本地区域和超级用户的设置了。我选择的是“中华人民共和国”,选择编码类型为 UTF-8,(注意:图上为SQL_ASCII 务必改之)这儿建立的超级帐号是数据库管理员用户,注意与前面的服务帐号区别。注意这个对话框只有你在上一步选择了让 PostgreSQL 作为一个系统服务运行才会出现。初始化数据库设置 点击下一步后,会弹出一个远程连接的选项,提示本地连接数据库默认都可以被接受,但是如果想让远程计算机也能连接到数据库的话,你需要在安装完成后,单独设置pg_hba.conf 文件,具体设置我们在后面再说明。 选择在默认创建
17、的测试数据库 template1 中激活的过程语言,我这儿只选择了 pgsql 了。注意这个对话框只有你在选择了让 PostgreSQL 作为一个系统服务运行,并且选择了初始化数据库组件后才会出现。 选择过程语言 选择在测试数据库 template1 中激活的模块,所有的扩展文件都是会被安装上,这一步只是选择在你所有的数据库中默认激活哪些模块。这些扩展模块能提供一些增强的功能。(基本上默认就行了) 选择加载扩展模块 至此安装配置参数就已经配完了,你只需要点下一步等待安装完成就可以了,PostgreSQL 安装速度很快,根据机器不同时间略有不同。最后出现安装成功界面。 客户端连接设置 Postg
18、reSQL 出于安全考虑,默认是拒绝所有远程客户端的连接的,如果你要想远程登录服务器端的话,需要设置 pg_hba.conf,从开始菜单 程序PostgreSQL configuration files 中选择编辑 pg_hba.conf。 编辑 pg_hba.conf 修改为如下内容: # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 192.168.1.113/32 md5 这样表示本机和 192.168.1.113 这台机器可以通过经过 MD5 加密的密码连接数据库。通过修改 IP 地址的掩码,也可以
19、允许哪一个段的地址可以连接服务器。另外,认证方式MD5 还可以改为 trust,表示完全信任这个地址的连接(这一点在调试程序时比较方便)。8改为 password,表示通过密码连接,但是密码以明文方式发送。设置完后,需要重新启动PostgreSQL 才能生效。 五 、 空 间 数 据 库 实 现 正在研究这部分内容,希望能尽快完成空间数据库设计和实现,到时候再总结。 5.1 SHAPFILE 简介 本系统的 Shapfile(简称 SHP)文件由河北省测绘局提供。 Shapfile 文件为 ESRI 公司的文件存储格式,并且得到了业界广泛的支持。Shapfile 格式是一种简单的,用非拓朴关系
20、的形式存储几何位置和地理特征的属性信息的格式。虽然GeoServer 采用 Shapfile 文件可以快速的创建网上地图服务,但它的缺点确很明显: 、Shapefile 只支持一个图层,在实际中没有意义。 、直接保用 SHP 文件不安全,Shapfile 文件很容易被病毒或其他原因误删除。 、GeoServer 中用 Shapfile 文件作数据源的效率是很低的。 、Shapfile 中的汉字 GeoServer 不能解析,会出现乱码。 、数据库可以方便的对地理信息进行查询。 5.2 用 POSTGIS 管理空间数据 PostGIS 支持 GIST 空间索引(附录)、规范窗体,能很大的提高处理
21、效率。 OGC 格式只提供二维的几何体,且相关联的 SRID 从未深入的用于输入输出请求,PostGIS 支持 OpenGIS 组织“Simple Features for SQL“规范指定的所有 GIS 对象和函数,并进行了扩展,格式是 EWKB、EWKT,其中增加了对 3DZ,3DM 和 4D 坐标系的支持(当然三维、四维数据的 OGC 标准还未完全制定),深入引进了 SRID 信息。 空间数据表结构:PostGIS 中存在两个必需的元数据表格, SPATIAL_REF_SYS(空间参考表格) 和 GEOMETRY_COLUMNS(几何体属性列),两个表用于存储空间数据库使用的坐标系统数字
22、 ID 和文本描述。 PostGIS 的 shp2pgsql 命令可以将 Shapfile 直接导入到数据库中也可以导出为 SQL 文件,推荐先导出为 SQL 文件再将此文件在 SQL 运行窗口中执行可将数据导入数据库。代码如下: Shapfile 到 SQL 语句: shp2pgsql 路径shp 数据文件名 新建的数据表名 路径SQL 文件名.sql Shapfile 直接入库: 9shp2pgsql -c 路径shp 数据文件名 新建的数据表名 数据库名psql -d 数据库名 举例说明: 如将一 Shapfile 文件“c:road.shp”导入到数据表“road”中,数据库为“sjz
23、map ”。、运行“命令提示符”。 、切换至 PostgreSQL 数据库安装目录中的 bin 目录下。 、执行此目录下的 shp2pgsql 命令:“shp2pgsql c:road.shp road c:road.sql”。 、如将此文件直接导入数据库(不推荐):“shp2pgsql -c c:road.shp road sjzmap | psql -d sjzmap”。 六 、 用 UDIG 可 视 化 生 成 SLD 登录 http:/,下载安装最新版的 uDig(User-friendly Desktop Internet GIS):用户友好桌面因特网 GIS。 uDig 是基于 E
24、clipseRCP 和 GeoTools 开发的,支持 OpenGIS 组织发布的公共标准,尤其支持 WMS、WFS 标准。它既是一个应用程序,也可以作为开发新的桌面因特网 GIS 应用程序的核心平台,我们用 uDig 只是为了方便的对地图进行可视化的配色,方便编辑 SLD 样式文件。下面以配置 PostGIS 中的“base_road”图层为例进行说明。 打开 uDig 新建一个工程“test_map” 新建工程“test_map ” 从“菜单LayerAdd”中,按照向导添加 PostGIS 图层“base_road”,添加成功后如下图: 添加“base_road ”图层后的 uDig u
25、Dig 会为图层生成随机的样式,下面我们将更改默认的样式。从左下角的 “Layers”框中选中“base_road ”图层,点击按钮或者选择“Layer Change Style”会弹出“Style. Editor”对话框。左侧的 Simple 中可以调教图层的各种配色,点击 XML 可以查看生成的 SLD 文件,挑选合适的配色后点击 Export 就可将此 SLD 文件导出。导出的 SLD 文件可以在 GeoServer 中直接使用,但是这时的样式与图层数据表的名称是相关联的,通用性较差。为了获得最好的通用性,请将此文件参照 GeoServer 样例的 SLD 文件手工进行代码优化后再导入
26、GeoServer。 注意:SLD 文件中有汉字时不可存为 UTF-8 编码必须存为 GBKGB2312 编码,因为GeoServer 导入有汉字的 UTF-8 编码的 SLD 样式文件时会报错。 10对应当前样式的 SLD 文件 七 、 基 于 GEOSERVER 的 WEBGIS 的 实 现 ( 我 选 择 的 是 MAPSERVER,基 于 C 的 ) 登录 http:/www.geoserver.org,下载最新版的 GeoServer。 安装:有两种方式安装,一种是使用它的安装程序(.exe 文件),这种方式安装的GeoServer 自带 web 服务器,可以独立运行(需要 JDK
27、环境),默认端口是 8080;另一种安装方法是使用 Tomcat (或其它 web 服务器,具体可以从 GeoServer 官方网站上查看web 服务器的支持列表),将 geoserver.war 文件放置在 webapps 目 录下即可。 7.1 系统总体结构 GeoServer 是完全基于 JAVA 的,WebGIS 服务(WMS 、WFS)可通过 Servlet 实现访问,地址是:/GeoServer/wms 、/GeoServer/wfs。访问规则见前节(WebGIS 相关的OpenGIS 规范)。 整体结构如下: GeoServer 结构: 下面是 GeoServer 实现的网上地图
28、服务以及相关操作: WFS UML 图表 (选自 GeoServer 参考文档) WMS UML 图表 (选自 GeoServer 参考文档) 以上可以看出,GeoServer 完全实现了 OGC 相关规范。 7.2 GEOSERVER 服务器端概览 要提供 WebGIS 服务首先须配置 GeoServer,GeoServer 提供 Web 界面进行管理,进入:http:/host:port/geoserver,点击“登 录”进入登录界面,默认用户和密码分别是admin、geoserver。点击“配置”进入配置界面,有五个栏目可以配置: 7.2.1、 服 务 器 : 可以设置服务器信息和联系信
29、息,前者包括:最大地理要素数限制、是否显示 详细异常信息、数字精度(几位小数)、语言编码(为支持多国化,可设置为 UTF-8)、日志相关等,后者包括单位名称、地址、联系方式等。 7.2.2、 WCS: WCS 的相关信息,可以查看安装的 Coverage 插件列表。 7.2.3、 WFS: 可以设置 WFS 相关信息,包括:是否启用 WFS 服务、服务层次(基本服务、事务处理层次、完全服务)、以及 WFS 服务器描述信息和 Test Suites 的使用。 7.2.4、 WMS: 11设置内容包括:是否启用 WMS 服务,描述信息, SVG 图形表现形式(简单描绘还是蜡染色法表现、是否采用抗锯
30、齿处理) 7.2.5、 数 据 : 数据配置的内容较多也是我们主要用到的,分六部分:名称空间、Coverage 库、数据库、样式、地图要素类型(FeatureTypes)、Coverages,具体的数据配置会在下面的 7.3节进行实例说明。 7.3 GEOSERVER 配置 Shapefile 导入到 PostgreSQL 数据库,再为其编写好样式后就可以在 GeoServer 中配置了。地图图层的所有配置都是在“配置数据”中,这里分为六个 部分,其中“Coverage 库”和“Coverages”为删格数据的配置,以下实例说明中不会涉及。 下面以配置图层“base_road”为例进行说明:
31、、新建一个名称空间,并设置前缀为“sjz”,其 URI 为http:/ 、在“数据库”中创建一个新的 Feature 数据集,“Feature 数据描述”中选择“Postgis”,“Feature 数据集 ID”同样命名为“sjz”,点击“新建”按钮后转到 Feature数据集编辑器中,在此编辑器中正确添写 PostgreSQL 的连接信息后提交数据。 、新建地图样式,GeoServer 支持 SLD 来修饰地图,这里将自定义一个base_road.sld 文件,上传并注册到 GeoServer,样式名设为 base_road。 、设置好了数据源和地图样式,接下来要完成最后的工作,新建一个 F
32、eatureType 选择数据源为:sjz:base_road ,地图样式选择 base_road,SRS 设置为:4326,点击“生成”,GeoServer 将自动填写地图范围和相关信息。此外还可以设置标题、关键词、Schema 基础、摘要提交并保存。 GeoServer1.5 采用了 OpenLayers 来显示图层,现在我们可以从“欢迎样例地图预览”查看刚才配置的图层了。 八 、 用 OPENLAYERS 实 现 WEBGIS 客 户 端 8.1 OPENLAYERS 简介 登录 http:/www.openlayers.org,下载 OpenLayers 的压缩包。 OpenLayer
33、s 是一个用于开发 WebGIS 客户端的 JavaScript 包。OpenLayers 实现访问地理空间数据的方法都符合行业标准。比如 OpenGIS 的 WMS 和 WFS 规范。OpenLayers 采用面向对象方式开发,并使用来自 Prototype.js 和 Rico 中的一些组件。OpenLayers 支持的地12图来源包括了 WMS,GoogleMap ,KaMap,MSVirtualEarth 等等,您也可以用简单的图片作为源,在这一方面 OpenLayers 提供了非常多的选择。 从 OpenLayers2.2 版本以后,OpenLayers 已经将所用到的 Prototy
34、pe.js 组件整合到了自身当中,并不断在 Prototype.js 的基础上完善面向对象的开发,Rico 用到地方不多,只是在 OpenLayers.Popup.AnchoredBubble 类中圆角化 DIV。OpenLayers2.4 版本以后提供了矢量画图功能,方便动态地展现“点、线和面”这样的地理数据。 8.2 实例说明 以创建一个 index.html 作为查看地图的页面为例。导入 OpenLayers.js 和你将要创建的js。内容需要一个 div,我们给它的 id 起名叫做 area。你有必要在写一些 CSS 限定#area 的宽度和高度,如果乐意,加上一个 border 也是
35、很不错的选择。 我们首先要创建一个 OpenLayer.Map 对象的实例: var map = new OpenLayers.Map(“area“); 其中的参数可以传 id,也可以传 ElementObject,当然 id 更加方便一些。 接下来就是向地图中添加图层,通常情况下使用 OpenLayers.Layer 的子类来完成图层的初始化。 OpenLayers 提供了一下 Layers 的扩展: OpenLayers.Layer.Image OpenLayers.Layer.HTTPRequest OpenLayers.Layer.Grid OpenLayers.Layer.WMS O
36、penLayers.Layer.KaMap OpenLayers.Layer.EventPane OpenLayers.Layer.Google OpenLayers.Layer.VirtualEarth OpenLayers.Layer.Markers OpenLayers.Layer.Text OpenLayers.Layer.GeoRSS OpenLayers.Layer.Boxes OpenLayers.Layer.TMS 13Image 类封装一个实际图象作为图曾内容 HTTPRequest 类可以接收一个动态生成的图片,你可以通过 HTTPRequest 类的参数向服务器发送参数
37、Grid 类是 HTTPRequest 类的子类,提供更加详细的方法 WMS 类用于连接 WMS 服务器以获得图象 KaMap 类用于连接 MapServer EventPane 类作为用于接收用户操作的图层 Google 类用于从 Google 获得图象,它仍然需要你从 Google 获得 API KEY,并且 include VirtualEarth 类用于操作 VirtualEarth 的图层 Markers 类用于生成接收和显示用户本地标记的图层 Text 类用于接收 CSV 文件 GeoRSS 类是 Marker 类的子类,用于封装接收 GeoRSS 并在图层中作出 marker B
38、oxes 同样也是 Marker 类的子类,可以用 div 来做 marker,而非 image TMS 用于接收 TMS 服务器的地图 创建完图层后,可以用 Map 的 addLayer(layer)方法插入,并执行 Map 的zoomToMaxExtent()方法让地图合适地显示。 OpenLayers 还提供了丰富的 Control 类为地图浏览添加一些工具,继承自OpenLayers.Control 类 OpenLayers.Control.LayerSwitcher OpenLayers.Control.MouseDefaults OpenLayers.Control.MousePo
39、sition OpenLayers.Control.MouseToolbar OpenLayers.Control.OverviewMap OpenLayers.Control.PanZoom OpenLayers.Control.PanZoomBar OpenLayers.Control.Permalink OpenLayers.Control.Scale 14这些类的实例会在地图浏览的“窗口”上增加一些工具栏或是“按钮”,增加互动性和功能性。 OpenLayers 对常用的数据结构进行了封装 OpenLayers.LonLat OpenLayers.Size OpenLayers.Pixe
40、l OpenLayers.Bounds 以便于操作。 此外 OpenLayers.Util 类可以对图片载入错误时图片框的颜色和图片框中默认的图片进行自定义,这一点是非常方便的。OpenLayers 的 Ajax 类对创建 XMLHttpRequest 对象的过程进行了封装,可以使用它进行简单的 Ajax 操作。 九 、 附 录 9.1. 相关概念 GIST http:/ GiST 的意思是通用的搜索树(Generalized Search Tree)。 它是一种平衡的,树状结构的访问方法,在系统中起一个基础的模版,然后可以 使用它实现任意索引模式。B+-trees,R-trees 和许多其它
41、的索引模式都可以用 GiST 实现。 GiST 的一个优点是它允许一种客户化的数据类型和合适的 访问方法一起开发,并且是由该数据类型范畴里的专家,而不是数据库专家开发。 有些信息是从 加州大学伯克力分校的 GiST 项目网站 和 Marcel Kornacker 的论文,Access Methods for Next-Generation Database Systems 中派生的。 PostgreSQL 里的 GiST 实现目前主要是 Teodor Sigae 和 Oleg Bartunov 维护的, 在他们的网站上有更多信息:http:/www.sai.msu.su/megera/post
42、gres/gist/。 R-TREE R-tree 索引用于索引空间数据。一个哈希索引无法处理范围搜索。而 B-tree 索引只能处理一维的范围搜索。R-tree 索引可以处理多维数据。例如,如果可以在一个类型为 point 的字段上建立一个 R-tree 索引,那么系统在回答类似 select all points within a bounding rectangle (选择在一个长方形范围内的所有点)这样的查询时有更高的效率。 15建立 R-Trees 可以处理多边形和方形。理论上说,R-trees 可以扩展为处理更多维数。不过在实践上,扩展 R-trees 需要一定的工作量。 WKB
43、Well Known Binary 一种 GIS 数据的二进制存储方式。 WKT Well Known Text reprojection 重投影 SPATIAL_REF_SYS Table 空间参考系统表格(SPATIAL_REF_SYS)用来储存空间参考系统资讯,表格结构如下:其中 SRID 为空间参考系统代码,AUTH_NAME 为空间参考系统之坐标名称, AUTH_SRID 为空间参考系统之坐标名称代码,SRTEXT 为空间参考系统之 WKT(Well-known Text)文字方式格式。空间参考系统之 WKT 资料结构包括空间。 coordinates 坐标系 features 几何
44、元素 SRID spatial referencing system identifier 空间参考系统标示符。 populates 填充 schema 大纲 meta-data 元数据 9.2. 相关网站和讨论组 OGC 官方网站:http:/www.opengis.org PostgreSQL 官方网站:http:/www.postgresql.org 16uDig 官方网站:http:/ GeoServer 官方网站: http:/www.geoserver.org OpenLayers 官方网站:http:/www.openlayers.org GeoTools 官方网站:http:/
45、www.geotools.org十 、 应 用10.1. GEOSERVER 编译到 ECLIPSE1)安装的 Java SDK 下载并安装 Java SDK 中。 创建一个环境变量 JAVA_HOME 和其指向您的 Java SDK 目录。 然后修改 PATH 变量,加上:;%JAVA_HOME%/bin应用更改。 2)下载 subversion Subversion 是新一代的版本控制工具,不仅可以管理源码,也可以应用于其他协作管理数据的工作。windows:http:/subversion.tigris.org/files/documents/15/29065/svn-1.3.0-set
46、up.exe Linux 操作系统:http:/subversion.tigris.org/project_packages.html安装 subversion 。3)checkout 源代码 使用 svn checkout,得到源代码: 使用 svn checkout : https:/svn.codehaus.org/geoserver/trunk4)下载并安装 Maven windows:http:/www.apache.org/dyn/closer.cgi/maven/binaries/maven-2.0.4.exe Linux 操作系统:http:/www.apache.org/dy
47、n/closer.cgi/maven/binaries/maven-2.0.4.zip如果您使用的是 Linux 操作系统,执行以下命令: export M2_HOME=/usr/java/maven-2.0.4export PATH=$PATH:$M2_HOME/bin175)建立源代码 转到命令行,然后定位到源树的根,您只需下载。 执行命令: mvn install如果失败,就再试一次。它又以下载 jars,有可能在那个时间下载不了。因此,可以多试几下。如果成功,运行下一个命令: mvn eclipse:eclipse6)安装 Eclipse Windows: http:/www.ecli
48、pse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-SDK-3.1.2-win32.zipLinux GTK: http:/www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-SDK-3.1.2-linux-gtk.tar.gzLinux Motif: http:/www.eclipse.org/downloads/downl
49、oad.php?file=/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-SDK-3.1.2-linux-motif.tar.gz安装 Eclipse。启动 Eclipse 中。 得:视窗 - “预置 在 wondow 弹出 Java 的点击 - 构建路径 - 类路径变量 在类路径变量面板,选择新建 定义一个新的变量称为 M2_REPO 并将其设置到本地 Maven 仓库。 (适用于 Windows,将是C:/ Documents 和 Settings/username/.m2/repository)7)获取到 Eclipse 的代码 导入现有项目到工作区,使用您的 geo