`
windhello
  • 浏览: 7348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于GeoServer的电子地图系统说明

阅读更多
概述 
      一AJAX的应用系统,前台页面基于OpenLayers2.2版本来开发,地图服务基于GeoServer1.5,后台查询基于Spring和Hibernate。前后台基于JSON方式进行通信。
注意:为了使代码有最大的安全和维护保障,前后台所有的文件存储和通信编码均为UTF-8(SLD文件有例外,另有说明),数据库编码安装时也指定为UTF-8。
关键词
     开源软件 WebGIS OpenGIS PostgreSQL PostGIS GeoTools GeoServer uDig OpenLayers



目 录
一、OpenGIS相关概念知识

   1.1 开源软件、Web技术相关

   1.2 OpenGIS相关

二、相关软件介绍:

三、WebGIS相关的OpenGIS规范

   3.1、WFS/WMS:

     3.1.1、版本与流通:

     3.1.2、请求规则:

     3.1.3、响应规则:

     3.1.4、WFS请求编码:

     3.1.5、WFS名称空间:

     3.1.6、坐标参考系统:

     3.1.7、WFS操作:

   3.2、空间数据格式WKB/WKT

四、PostgreSQL/PostGIS安装

五、空间数据库实现

   5.1 Shapfile简介

   5.2 用PostGIS管理空间数据

六、用uDig可视化生成SLD

七、基于GeoServer的WebGIS的实现

   7.1 系统总体结构

   7.2 GeoServer服务器端概览

   7.3 GeoServer配置

八、用OpenLayers实现WebGIS客户端
   8.1 OpenLayers简介
   8.2 实例说明

九、附录



一、OpenGIS相关概念知识

  1.1 开源软件、Web技术相关
      GPL:GNU 全局公共许可证(General Public License)简称为GPL,是GNU的开源软件许可证的一种,大多数的 GNU 程序和超过半数的自由软件使用它。同时,它也是开源软件领域对许可人权力限制最严的许可证。GPL首先是承认软件的版权——软件有原始的版权所有者,然后 纳入自由软件的版权许可约束。在承认版权的前提下,通过软件的版权许可来实现自由权利的要求。GPL许可证最重要的特点在于它要求根据GPL许可证发布的 软件(如:最有影响力的Linux)修改、翻译的演绎作品,甚至只要其任何一部分代码是以GPL发布的,那么全部程序也必须受GPL许可证的约束,即继续遵守GPL许可证的规定,有些人将其称之为GPL的“病毒效应”。GeoTools、GeoServer都使用GPL授权协议。

      AJAX:Asynchronous Javascript. and XML(异步Javascript和XML),AJAX是Web2.0时代的主要技术之一,它通过JS与服务器通信,中间传输数据使用XML(当然采用 XML不是必须的,如本系统为JSON),实现网页内容无刷新更新。网上地图的请求与显示通常采用此技术,最典型的如:Google Map。本文中的OpenLayers也使用了此技术。

     JSON:JavaScript. Object Notation(JavaScript对象符号),JSON是一种用简单文本描述JavaScript对象的开放格式标准,它易于构建和解析。换句话 说,可以将发往浏览器的数据编码格式从XML改为JSON对象,而JSON对象能够很容易地转成JavaScript对象。

     MVC设计模式: 模型-视图-控制(Model、View、Controller)的缩写。模型(Model)是应用程序的主体;视图(View)负责生成用户界面部分; 控制器可以根据用户的输入,控制用户界面数据显示及更新Model对象状态。MVC设计模式要求在应用程序开发中将模型逻辑,界面显示,数据层相分离。 MVC设计模式由事件驱动。OpenLayers就实现了这种设计模式。


  1.2 OpenGIS相关
     OGC:OpenGIS联盟。
WMS:Web Map Server 网上地图服务,最简单的功能就是:通过HTTP请求,获得相应的地图,地图为图片格式,如:JPG/GIF/PNG。

    WFS:Web Feature Server 网上要素服务,最简单的功能就是:通过HTTP请求,获得相关的地理要素信息。

    WCS:Web Coverage Server,简单地说就是对栅格数据的服务,它允许用户得到连续的栅格图像,这些图像可能包含多个波段,因此你可以将一幅完整的多波段遥感影像放到你的 WCS服务器上用WCS进行Internet共享,而用户利用浏览器或者其它胖客户端工具通过HTTP请求就可以得到这个影像数据。当然可以对请求参数进行限定,取得其中的一部分(空间的一部分或波段的一部分)数据。

    SLD:风格化图层描述器(Styled Layer Descriptor)的简称,用于定义地图显示样式,GeoServer支持SLD,通过自定义SLD,可以在地图中显示文本和图片符号,还可以设置过滤器,自定义图例。

    GML:地理标记语言,是WFS规范指定的地理要素的XML编码声明和数据格式。

    WKB/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结果的显示演示采用了OpenLayers。

  2.3 OpenLayers:一个基于AJAX技术的网上地图显示客户端,支持WMS地图显示、WMS时间序列地图动态显示、GML/Feature数据显示等。

  2.4 PostgreSQL/PostGIS:最先进的开源数据库,PostGIS是其在空间数据上的扩展。

三、WebGIS相关的OpenGIS规范
  3.1、WFS/WMS: 
  3.1.1、版本与流通:
      版本号为三段数字表示,现在(2006-5-17)WFS的最新版本是1.1.0,旧版本有0.9.1、1.0.0;WMS的版本有:1.0、1.1、1.1.1、1.3.0。Geoserver支持WFS1.0、WMS1.1.1,其返回的GML版本是2.1.2。
     版本号必须出现在两个地方,一是客户端请求参数中、再是服务器GetCapabilities 操作返回的Capabilities XML文档中。
     需要注意的是,客户端请求的版本号应该与服务器支持的版本号匹配,否则按最近匹配原则:
     1、    如果客户端请求的版本号高于服务器支持的,服务器按其支持的最高的版本号执行,相反,则按最低版本号执行。
     2、    如果服务器响应的版本号高于客户端支持的,客户端会重新发送一个较低版本号的请求,相反,发送一个较高的版本。

3.1.2、请求规则:有两种请求方式:Get、Post。
     WFS的Post请求是提交一个符合WFS规范的XML文本,服务器来对这个XML文本进行解析后执行,下面是两个Get请求:
     请求一:
     http://127.0.0.1/geoserver/wfs?   request=GetCapabilities&service=WFS&version=1.0.0
     解释说明:
     操作:GetCapabilities
     服务:WFS
     版本:1.0.0
     请求二:

http://127.0.0.1/geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS
&SRS=EPSG:4326&BBOX=146.9632808102,-42.2041379916633,147.0813008202,-42.1368665859633&WIDTH=500&HEIGHT=285&LAYERS=topp:tasmania_roads
&FORMAT=image/png&STYLES=&TRANSPARENT=TRUE&TIME=
解释说明:
version=1.1.1 版本号为1.1.1
request=GetMap 执行GetMap操作
服务:WMS
坐标参考系统为EPSG:4326
地图范围:
地图大小:500*285
图层:topp:Tasmania_roads
地图格式:png
地图样式:默认样式
透明显示:是

3.1.3、响应规则:

      如果请求正常,服务器将返回一个对象,并伴随这个对象的MIME(多用途因特网邮件扩展,常用的文件格式都伴随着一个MIME类型,如邮件附件,GIF图片image/gif)类型和描述(如对象大小、编码类型等等)。否则,应该返回一个服务器异常。

3.1.4、WFS请求编码:

      规范定义了两种WFS请求编码方法,一是使用XML,二是使用KVP(键值对)
WFS操作与请求编码: 操作

     请求编码

GetCapabilities

XML & KVP

DescribeFeatureType

XML & KVP

GetFeature / GetFeatureWithLock

XML & KVP

LockFeature

XML & KVP

Transaction

XML & limited KVP

3.1.5、WFS名称空间:有三个标准化的名称空间:

     (http://www.opengis.net/wfs) – for the WFS interface vocabulary
     (http://www.opengis.net/gml) – for the GML vocabulary
     (http://www.opengis.net/ogc) – for the OGC Filter vocabulary

3.1.6、坐标参考系统:
     使用EPSG 标准,其值通常是4326。
3.1.7、WFS操作:
     DescribeFeatureType (要素类型特征描述)操作:此操作产生一个WFS服务器所提供的地理要素的大纲描述,这个描述定义了WFS地理要素实例怎样被输入、编译和输出。对于一个 DescribeFeatureType请求,应返回一个由XML Schema定义的GML3应用程序大纲。
     GetFeature(获取对象) 操作:因为地理要素的规范表示是使用GML,所以GetFeature操作涉及到GML规范中的地理要素模型。在GML中,一个地理要素表现为XML文档 中的一个元素,一个GML文档可包含多个地理要素。当GetFeature请求的输出格式设为text/gml; subtype=gml/3.1.1时,一个GML实例将被返回给客户端。
     GetGMLObject(获取GML对象) 操作:允许通过ID号从服务器上获取地理要素和元素,该操作将返回一个XML片段。注意GetGMLObject操作不是可选的,不是服务器必需支持的。
LockFeature (锁定要素)操作:网络连接本身是不稳定的,要实现事务操作的正确执行,解决并发冲突问题,需要锁定地理要素,这类似数据库中的相关操作(实际上也确实是一种空间数据库操作)。 
     Transaction(事务操作):事务操作描述了从网上获得的地理要素实例的数据事务操作。当事务操作完成时,WFS服务器将返回一个XML文档指示事务的完成状况。
GetCapabilities(获取服务能力)操作:任何OGC的web服务器,包括WFS、WMS,必须提供GetCapabilities操作,用于描绘服务器性能容量。GetCapabilities请求将返回服务器元数据。


3.1.8、WMS操作:
      GetCapabilities(强制)操作:反映服务器性能信息,与WFS的GetCapabilities操作相似。
      GetMap(强制)操作:返回地图,这是最常用的操作,可参考前面请求规则的请求二例子。
      GetFeatureinfo(可选):该操作是可选操作,能提供给客户端更多地理要素的信息,如在客户端选择地图上某一点,GetFeatureinfo操作可以返回该点的相关信息。

 
3.2、空间数据格式WKB/WKT
      OpenGIS 规范定义了两种表达空间数据的标准方法:Well-Known Text (WKT) 和Well-Known Binary (WKB) 形式。WKT和WKB都包括对象的类型和坐标系。OpenGIS规范还需要空间对象的internal存储格式包括空间参考系统标示符(SRID),在空 间对象装入数据库时需要提供SRID。
OGC的更多信息,请访问:http://www.opengeospatial.org

四、PostgreSQL/PostGIS安装

     有一些图没有截下来,本人已在FreeBSD下装过,其实读一下软件的安装说明就可以了,很简单。

     登录http://www.postgresql.org,下载最新版的PostgreSQL数据库,此安装文件已包含PostGIS(必须下载8.2以上版本,不可下载8.1版,经测试8.1版对数据的备份和恢复存在问题,恢复备份数据时不能正确恢复数据表的主键)。

开始安装

      首先是选择安装过程中使用的语言,没有找到中文,只好选择还能看得懂的英文。另外,你可以选择最下面得选项以把详细的安装日志写到当前安装目录,以备排查安装故障,也可以阅读一下了解它的安装过程。

      选择安装语言

点下一步就是选择安装内容的选项了,其中分四大部分,分别是数据库服务器端、用户界面、数据库驱动和开发模块。你可以根据需要选择安装。另外此处要注意的是“Data directory”选项只能安装在NTFS格式的分区,如果你要安装在其他格式的分区的话,需要在安装完后,手动运行Initdb.exe。

     注意:如果你喜欢用图形界面来管理操作数据库得话,在用户界面里可以选择安装pgAdminIII。PostGIS Spatial Extension为PostgreSQL提供了GIS支持(PostGIS),这里必须要安装。

     选择安装选项1

     选择安装选项2

     接下来是服务配置,你可以把该数据库服务器作为Windows的一个系统服务运行,这也是PostgreSQL开始真正支持Windows安装的一个体现(如下图)。

选择安装为服务

      在此设置服务名,还有运行该服务的Windows帐号。你可以输入一个已有帐号,也可以输入一个目前并不存在的帐号,让安装程序自动建立这个帐号。

     自动创建帐号

     创建帐号完毕后,就是要配置数据库的监听端口、连接许可,及本地区域和超级用户的设置了。我选择的是“中华人民共和国”,选择编码类型为UTF-8,(注意:图上为SQL_ASCII务必改之)这儿建立的超级帐号是数据库管理员用户,注意与前面的服务帐号区别。注意这个对话框只有你在上一步选择了让PostgreSQL作为一个系统服务运行才会出现。

     初始化数据库设置

     点击下一步后,会弹出一个远程连接的选项,提示本地连接数据库默认都可以被接受,但是如果想让远程计算机也能连接到数据库的话,你需要在安装完成后,单独设置pg_hba.conf文件,具体设置我们在后面再说明。

     选择在默认创建的测试数据库template1中激活的过程语言,我这儿只选择了pgsql了。注意这个对话框只有你在选择了让PostgreSQL作为一个系统服务运行,并且选择了初始化数据库组件后才会出现。

     选择过程语言

     选择在测试数据库template1中激活的模块,所有的扩展文件都是会被安装上,这一步只是选择在你所有的数据库中默认激活哪些模块。这些扩展模块能提供一些增强的功能。(基本上默认就行了)

    选择加载扩展模块

    至此安装配置参数就已经配完了,你只需要点下一步等待安装完成就可以了,PostgreSQL安装速度很快,根据机器不同时间略有不同。最后出现安装成功界面。

     客户端连接设置

     PostgreSQL出于安全考虑,默认是拒绝所有远程客户端的连接的,如果你要想远程登录服务器端的话,需要设置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地址的掩码,也可以允许哪一个段的地址可以连接服务器。另外,认证方式MD5还可以改为trust,表示完全信任这个地址的连接(这一点在调试程序时比较方便)。改为password,表示通过密码连接,但是密码以明文方式发送。设置完后,需要重新启动PostgreSQL才能生效。



五、空间数据库实现

     正在研究这部分内容,希望能尽快完成空间数据库设计和实现,到时候再总结。


5.1 Shapfile简介

    本系统的Shapfile(简称SHP)文件由河北省测绘局提供。

    Shapfile文件为ESRI公司的文件存储格式,并且得到了业界广泛的支持。Shapfile格式是一种简单的,用非拓朴关系的形式存储几何位置和地理特征的属性信息的格式。虽然GeoServer采用Shapfile文件可以快速的创建网上地图服务,但它的缺点确很明显:

    1、Shapefile只支持一个图层,在实际中没有意义。

    2、直接保用SHP文件不安全,Shapfile文件很容易被病毒或其他原因误删除。

    3、GeoServer中用Shapfile文件作数据源的效率是很低的。

    4、Shapfile中的汉字GeoServer不能解析,会出现乱码。

    5、数据库可以方便的对地理信息进行查询。

5.2 用PostGIS管理空间数据

      PostGIS支持GIST空间索引(附录1)、规范窗体,能很大的提高处理效率。

      OGC格式只提供二维的几何体,且相关联的SRID从未深入的用于输入输出请求,PostGIS支持OpenGIS组织"Simple Features for SQL"规范指定的所有GIS对象和函数,并进行了扩展,格式是EWKB、EWKT,其中增加了对3DZ,3DM和4D 坐标系的支持(当然三维、四维数据的OGC标准还未完全制定),深入引进了SRID信息。

      空间数据表结构:PostGIS中存在两个必需的元数据表格, SPATIAL_REF_SYS(空间参考表格) 和 GEOMETRY_COLUMNS(几何体属性列),两个表用于存储空间数据库使用的坐标系统数字ID和文本描述。

      PostGIS的shp2pgsql命令可以将Shapfile直接导入到数据库中也可以导出为SQL文件,推荐先导出为SQL文件再将此文件在SQL运行窗口中执行可将数据导入数据库。代码如下:

      Shapfile到SQL语句:

      shp2pgsql 路径\shp数据文件名 新建的数据表名 > 路径\SQL文件名.sql

      Shapfile直接入库:

      shp2pgsql -c 路径\shp数据文件名 新建的数据表名 数据库名|psql -d 数据库名

举例说明:

      如将一Shapfile文件“c:\road.shp”导入到数据表“road”中,数据库为“sjzmap”。

     1、运行“命令提示符”。

     2、切换至PostgreSQL数据库安装目录中的bin目录下。

     3、执行此目录下的shp2pgsql命令:“shp2pgsql c:\road.shp road > c:\road.sql”。

     4、如将此文件直接导入数据库(不推荐):“shp2pgsql -c c:\road.shp road sjzmap | psql -d sjzmap”。



六、用uDig可视化生成SLD

     登录http://udig.refractions.net,下载安装最新版的uDig(User-friendly Desktop Internet GIS):用户友好桌面因特网GIS。

     uDig是基于EclipseRCP和GeoTools开发的,支持OpenGIS组织发布的公共标准,尤其支持WMS、WFS标准。它既是一个应用程序,也可以作为开发新的桌面因特网GIS应用程序的核心平台,我们用uDig只是为了方便的对地图进行可视化的配色,方便编辑SLD样式文件。下面以配置PostGIS中的“base_road”图层为例进行说明。

     打开uDig新建一个工程“test_map”

     新建工程“test_map”

     从“菜单->Layer->Add…”中,按照向导添加PostGIS图层“base_road”,添加成功后如下图:

     添加“base_road”图层后的uDig

     uDig会为图层生成随机的样式,下面我们将更改默认的样式。从左下角的“Layers”框中选中“base_road”图层,点击按钮或者选择“Layer->Change Style…”会弹出“Style. Editor”对话框。左侧的Simple中可以调教图层的各种配色,点击XML可以查看生成的SLD文件,挑选合适的配色后点击Export就可将此SLD文件导出。导出的SLD文件可以在GeoServer中直接使用,但是这时的样式与图层数据表的名称是相关联的,通用性较差。为了获得最好的通用性,请将此文件参照GeoServer样例的SLD文件手工进行代码优化后再导入GeoServer。

     注意:SLD文件中有汉字时不可存为UTF-8编码必须存为GBK/GB2312编码,因为GeoServer导入有汉字的UTF-8编码的SLD样式文件时会报错。

     对应当前样式的SLD文件



七、基于GeoServer的WebGIS的实现(我选择的是MapServer,基于C的)

    登录http://www.geoserver.org,下载最新版的GeoServer。

    安装:有两种方式安装,一种是使用它的安装程序(.exe 文件),这种方式安装的GeoServer自带web服务器,可以独立运行(需要JDK环境),默认端口是8080;另一种安装方法是使用Tomcat (或其它web服务器,具体可以从GeoServer官方网站上查看web服务器的支持列表),将geoserver.war文件放置在webapps目 录下即可。

7.1 系统总体结构

     GeoServer是完全基于JAVA的,WebGIS服务(WMS、WFS)可通过Servlet实现访问,地址是:/GeoServer/wms 、/GeoServer/wfs。访问规则见前节(WebGIS相关的OpenGIS规范)。

    整体结构如下:

    GeoServer结构:

    下面是GeoServer实现的网上地图服务以及相关操作:

    WFS UML 图表 (选自GeoServer参考文档)

    WMS UML 图表 (选自GeoServer参考文档)

    以上可以看出,GeoServer完全实现了OGC相关规范。


7.2 GeoServer服务器端概览

     要提供WebGIS 服务首先须配置GeoServer,GeoServer提供Web界面进行管理,进入:http://host:port/geoserver,点击“登 录”进入登录界面,默认用户和密码分别是admin、geoserver。点击“配置”进入配置界面,有五个栏目可以配置:

7.2.1、服务器:

     可以设置服务器信息和联系信息,前者包括:最大地理要素数限制、是否显示 详细异常信息、数字精度(几位小数)、语言编码(为支持多国化,可设置为UTF-8)、日志相关等,后者包括单位名称、地址、联系方式等。

7.2.2、WCS:

      WCS的相关信息,可以查看安装的Coverage插件列表。

7.2.3、WFS:

      可以设置WFS相关信息,包括:是否启用WFS服务、服务层次(基本服务、事务处理层次、完全服务)、以及WFS服务器描述信息和Test Suites 的使用。

7.2.4、WMS:

     设置内容包括:是否启用WMS服务,描述信息,SVG图形表现形式(简单描绘还是蜡染色法表现、是否采用抗锯齿处理)

7.2.5、数据:

      数据配置的内容较多也是我们主要用到的,分六部分:名称空间、Coverage库、数据库、样式、地图要素类型(FeatureTypes)、Coverages,具体的数据配置会在下面的7.3节进行实例说明。

7.3 GeoServer配置

     Shapefile 导入到PostgreSQL数据库,再为其编写好样式后就可以在GeoServer中配置了。地图图层的所有配置都是在“配置->数据”中,这里分为六个 部分,其中“Coverage库”和“Coverages”为删格数据的配置,以下实例说明中不会涉及。

      下面以配置图层“base_road”为例进行说明:

      1、新建一个名称空间,并设置前缀为“sjz”,其URI为http://www.hbsanctum.com/sjz,并设为默认的名称空间,提交并保存。(注意:界面左上角有“应用”、“保存”和“载入”三个按钮,提交后必须先点“应用”成功后再点“保存”,以下各步骤的操作均按此执行。)

      2、在“数据库”中创建一个新的Feature数据集,“Feature数据描述”中选择“Postgis”,“Feature数据集 ID”同样命名为“sjz”,点击“新建”按钮后转到Feature数据集编辑器中,在此编辑器中正确添写PostgreSQL的连接信息后提交数据。

      3、新建地图样式,GeoServer支持SLD来修饰地图,这里将自定义一个base_road.sld文件,上传并注册到GeoServer,样式名设为base_road。

      4、设置好了数据源和地图样式,接下来要完成最后的工作,新建一个FeatureType 选择数据源为:sjz:::base_road,地图样式选择base_road,SRS设置为:4326,点击“生成”,GeoServer将自动填写地图范围和相关信息。此外还可以设置标题、关键词、Schema基础、摘要……提交并保存。

      GeoServer1.5采用了OpenLayers来显示图层,现在我们可以从“欢迎->样例->地图预览”查看刚才配置的图层了。



八、用OpenLayers实现WebGIS客户端
  8.1 OpenLayers简介

     登录http://www.openlayers.org,下载OpenLayers的压缩包。

     OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers实现访问地理空间数据的方法都符合行业标准。比如OpenGIS的WMS和WFS规范。OpenLayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。OpenLayers支持的地图来源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用简单的图片作为源,在这一方面OpenLayers提供了非常多的选择。

     从OpenLayers2.2版本以后,OpenLayers已经将所用到的Prototype.js组件整合到了自身当中,并不断在Prototype.js的基础上完善面向对象的开发,Rico用到地方不多,只是在OpenLayers.Popup.AnchoredBubble类中圆角化DIV。OpenLayers2.4版本以后提供了矢量画图功能,方便动态地展现“点、线和面”这样的地理数据。

8.2 实例说明

     以创建一个index.html作为查看地图的页面为例。导入OpenLayers.js和你将要创建的js。内容需要一个div,我们给它的id起名叫做area。你有必要在写一些CSS限定#area的宽度和高度,如果乐意,加上一个border也是很不错的选择。

我们首先要创建一个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

OpenLayers.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

Image类封装一个实际图象作为图曾内容

HTTPRequest类可以接收一个动态生成的图片,你可以通过HTTPRequest类的参数向服务器发送参数

Grid类是HTTPRequest类的子类,提供更加详细的方法

WMS类用于连接WMS服务器以获得图象

KaMap类用于连接MapServer

EventPane类作为用于接收用户操作的图层

Google类用于从Google获得图象,它仍然需要你从Google获得API KEY,并且include

VirtualEarth类用于操作VirtualEarth的图层

Markers类用于生成接收和显示用户本地标记的图层

Text类用于接收CSV文件

GeoRSS类是Marker类的子类,用于封装接收GeoRSS并在图层中作出marker

Boxes同样也是Marker类的子类,可以用div来做marker,而非image

TMS用于接收TMS服务器的地图

创建完图层后,可以用Map的addLayer(layer)方法插入,并执行Map的zoomToMaxExtent()方法让地图合适地显示。

OpenLayers还提供了丰富的Control类为地图浏览添加一些工具,继承自OpenLayers.Control类

OpenLayers.Control.LayerSwitcher

OpenLayers.Control.MouseDefaults

OpenLayers.Control.MousePosition

OpenLayers.Control.MouseToolbar

OpenLayers.Control.OverviewMap

OpenLayers.Control.PanZoom

OpenLayers.Control.PanZoomBar

OpenLayers.Control.Permalink

OpenLayers.Control.Scale

这些类的实例会在地图浏览的“窗口”上增加一些工具栏或是“按钮”,增加互动性和功能性。

OpenLayers对常用的数据结构进行了封装

OpenLayers.LonLat

OpenLayers.Size

OpenLayers.Pixel

OpenLayers.Bounds

以便于操作。

      此外OpenLayers.Util类可以对图片载入错误时图片框的颜色和图片框中默认的图片进行自定义,这一点是非常方便的。OpenLayers的Ajax类对创建XMLHttpRequest对象的过程进行了封装,可以使用它进行简单的Ajax操作。



九、附录
1. 相关概念

     GIST

     http://man.chinaunix.net/database/postgresql_8.0_CN/gist.html

     GiST 的意思是通用的搜索树(Generalized Search Tree)。 它是一种平衡的,树状结构的访问方法,在系统中起一个基础的模版,然后可以 使用它实现任意索引模式。B+-trees,R-trees 和许多其它的索引模式都可以用 GiST 实现。

     GiST 的一个优点是它允许一种客户化的数据类型和合适的 访问方法一起开发,并且是由该数据类型范畴里的专家,而不是数据库专家开发。

     有些信息是从 加州大学伯克力分校的 GiST 项目网站 和 Marcel Kornacker 的论文,Access Methods for Next-Generation Database Systems 中派生的。

     PostgreSQL 里的 GiST 实现目前主要是 Teodor Sigae 和 Oleg Bartunov 维护的, 在他们的网站上有更多信息:http://www.sai.msu.su/~megera/postgres/gist/。

     R-TREE

     R-tree 索引用于索引空间数据。一个哈希索引无法处理范围搜索。而 B-tree 索引只能处理一维的范围搜索。R-tree 索引可以处理多维数据。例如,如果可以在一个类型为 point 的字段上建立一个 R-tree 索引,那么系统在回答类似 select all points within a bounding rectangle (选择在一个长方形范围内的所有点)这样的查询时有更高的效率。

建立 R-Trees 可以处理多边形和方形。理论上说,R-trees 可以扩展为处理更多维数。不过在实践上,扩展R-trees 需要一定的工作量。

WKB

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

几何元素

SRID

spatial referencing system identifier空间参考系统标示符。

populates

填充

schema

大纲

meta-data

元数据

2. 相关网站和讨论组

OGC官方网站:http://www.opengis.org

PostgreSQL官方网站:http://www.postgresql.org

uDig官方网站:http://udig.refractions.net
GeoServer官方网站:http://www.geoserver.org

OpenLayers官方网站:http://www.openlayers.org

GeoTools官方网站:http://www.geotools.org

GeoServer QQ:4825849

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/4_webprogram/php/phpjs/20100721/480322.html
分享到:
评论

相关推荐

    地图服务器基于geoserver改造

    本项目涉及的是一个基于GeoServer的改造实例,GeoServer是一款开源的GIS(地理信息系统)服务器,它支持多种地理空间数据格式,并能通过Web服务接口进行数据共享。改造后的地图服务器采用Tomcat作为应用服务器,提供...

    基于GeoServer的WebGIS开发.pdf

    标题:“基于GeoServer的WebGIS开发.pdf” 描述:“基于GeoServer的WebGIS开发.pdf” 标签:技术 知识点: 1. GeoServer简介 GeoServer是一个开源的服务器,它允许用户在互联网上发布和共享地理信息数据。它广泛...

    基于geoServer搭建的一个离线地图服务器

    基于geoserver搭建的一个离线地图服务器,翻不了墙,国内的百度谷歌又满足不了地图需求,就自己整理了一个,亲测可用,有需要的可用下载借鉴一下...

    基于GeoServer开发WebGIS相关文档

    在WebGIS开发领域,GeoServer是一个非常重要的开源组件,它基于Java平台,实现了OGC(开放地理空间联盟)的标准,能够发布和管理地理空间数据。本资料包是针对基于GeoServer进行WebGIS开发的学习资源集合,包括文档...

    基于geoserver专题图

    《基于GeoServer的专题图构建详解》 GeoServer是一款开源的地理信息系统服务器,它支持WMS、WFS等OGC标准,能够发布和操作地理空间数据。在GIS领域,专题图(Thematic Map)是一种非常重要的展示手段,它能够根据...

    geoserver 地图专题图

    地图专题图是地理信息系统(GIS)中的一个重要概念,它允许用户根据特定主题或变量来可视化地理数据。在这种情况下,通过传递参数动态获取数据,并在页面上以不同等级展示,这提供了高度的交互性和灵活性。 【描述...

    基于GeoServer REST的矢量地图服务自动发布研究与应用.docx

    基于 GeoServer REST 的矢量地图服务自动发布研究与应用 摘要:本文研究基于 GeoServer 的矢量地图服务自动发布,旨在解决 WebGIS 中矢量地图服务发布的难题。通过研究 GeoServer 的 REST 接口技术内容,设计并实现...

    基于Geoserver的校园WebGIS实现

    基于Geoserver的校园WebGIS实现

    Geoserver添加shp地图的方法

    geoserver是一款开源的基于Web的地图服务器软件,可以轻松地发布地图数据,以便于其他应用程序访问和使用。本文将详细介绍如何在geoserver服务器中添加shp类型的地图,从而解决中文乱码和地图图层中中文不显示的问题...

    geoserver地图配置文档

    Geoserver 是一个基于开源的、功能强大且灵活的地图服务器,可以提供强大的地图服务,支持多种数据源和格式,包括 PostGIS、Shapefile、GeoTIFF 等。下面是 Geoserver 地图配置文档的详细知识点: 一、准备工作 1....

    geoserver发布mongodb矢量数据地图服务.docx

    Geoserver是基于Java开发的一款开源GIS服务器,能够处理大量的空间数据,提供了强大的空间数据存储、处理和发布功能。Geoserver支持多种数据源,包括PostGIS、Oracle Spatial、MongoDB等。 二、MongoDB矢量数据存储...

    基于GeoServer的WebGIS开发

    主要介绍基于GeoServer 的webgis开发。。

    GeoServer 和GeoWebCache

    关于GeoServer地图缓存问题的研究.doc 基于GeoServer的WebGIS开发.pdf 基于GeoServer和OpenLayers的WebGIS实现.pdf 基于GOESERVER_2.0.2的地图发布(webgis作业).do 使用geoserver创建样式简单图解.doc 优化_...

    openlayers3+geoserver地图交互

    在现代GIS(地理信息系统)应用中,地图交互功能是至关重要的。本篇文章将详细介绍如何利用OpenLayers 3和GeoServer来构建一个具备地图框选、点击街道选中要素以及绘点功能的应用。OpenLayers 3是一个流行的...

    Geoserver 地图发布及 UCMap 访问

    GeoServer 是一个开源的地理信息系统(GIS)服务器,基于 Java 平台,支持开放地理空间联盟(OGC)的标准,如 WMS(Web Map Service)、WFS(Web Feature Service)等。它能够方便地发布地图数据,并允许其他应用...

    leaflet结合geoserver实现地图空间查询.zip

    在GIS(地理信息系统)领域,Leaflet和GeoServer是两个重要的工具,用于构建交互式地图应用和服务。本文将深入探讨如何使用Leaflet JavaScript库与GeoServer集成,实现地图空间查询的功能。 **Leaflet简介** ...

    openlayer调用geoserver发布的地图实现地图的基本功能

    OpenLayers是一个JavaScript库,用于在Web浏览器中展示地图,而GeoServer是一个基于Java的服务,用于发布和管理地理空间数据。下面将详细解释如何使用OpenLayers调用GeoServer发布的地图以及实现地图的基本功能。 ...

    leaflet结合geoserver实现地图属性查询.zip

    在GIS(地理信息系统)领域,Leaflet和GeoServer是两个重要的工具。Leaflet是一个轻量级的JavaScript库,用于创建交互式地图应用,而GeoServer则是一个开源的服务器软件,用于发布和操作地理空间数据。本教程将详细...

    cesium结合geoserver实现地图属性查询.zip

    在IT行业中,尤其是在地理信息系统(GIS)领域,Cesium和GeoServer是两个非常重要的工具。Cesium是一款基于WebGL的开源3D地球浏览器,能够提供交互式的三维地球展示,而GeoServer则是一个开放源码的GIS服务器,它...

Global site tag (gtag.js) - Google Analytics