转自http://www.cnblogs.com/lzlynn/archive/2008/07/29/1255702.html
WMS: Web Map Service
(
Web
地图服务
)
l
利用具有地理空间位置信息的数据制作地图。其中将地图定义为地理数据可视的表现。这个规范定义了三个操作:
n
GetCapabitities
返回服务级元数据,它是对服务信息内容和要求参数的一种描述;
n
GetMap
返回一个地图影像,其地理空间参考和大小参数是明确定义了的;
n
GetFeatureInfo
(可选)返回显示在地图上的某些特殊要素的信息
WFS: Web Feature Service
(
Web
要素服务)
l
Web
地图服务返回的是图层级的地图影像,
l
Web
要素服务(
WFS
)返回的是要素级的
GML
编码
,并提供对要素的增加、修改、删除等事务操作,是对
Web
地图服务的进一步深入。
OGC Web
要素服务允许客户端从多个
Web
要素服务中取得使用地理标记语言(
GML
)编码的地理空间数据,定义了五个操作:
n
GetCapabilites
返回
Web
要素服务性能描述文档(用
XML
描述);
n
DescribeFeatureType
返回描述可以提供服务的任何要素
结构的
XML
文档;
n
GetFeature
一个获取要素实例的请求提供服务;
n
Transaction
为事务请求提供服务;
n
LockFeature
处理在一个事务期间对一个或多个要素类型实例上锁的请求。
WFS-T: Web Map Service-Transactional.
允许用户以可传输的块编辑地理数据。
WCS
:
Web Coverage Service
(
Web
覆盖服务)
Web
覆盖服务(
WCS
)面向空间影像数据,它将包含地理位置值的地理空间数据作为
“
覆盖(
Coverage
)
”
在网上相互交换。
l
网络覆盖服务由三种操作组成:
GetCapabilities
,
GetCoverage
和
DescribeCoverageType
:
n
GetCapabilities
操作返回描述服务
和数据集的
XML
文档。
n
GetCoverage
操作是在
GetCapabilities
确定什么样的查询可以执行、什么样的数据能够获取之后执行的,它使用通用的覆盖格式返回地理位置的值或属性。
n
DescribeCoverageType
操作允许客户端请求由具体的
WCS
服务器提供的任一覆盖层的完全描述。
GML:
Geography Markup Language.
一种用于描述地理数据的
XML
。
OGC
——Open Geospatial Consortium——
开放地理信息联盟
总之
,
GeoServer
是您需要显示地图在网页的那些工具的当中一个,用户可以缩放并且移动。可以与一些客户端联合使用,比如:
MapBuilder (for web pages), UDig, GVSig,
等等。
对标准的使用允许信息从
GeoServer
到其它地理信息可以很容易地被结合。
如果你对
GeoServer
发出一个
WMS
请求,你就可能得到如下的一张图:
查看
Demo
在
welcome
界面中单击
demo page
链接,进入页面后单击
WFS-T
链接就可以启动一个名叫
MapBuilder
的基于
Javascript
的地图地图编辑器。启动
MapBuilder
后我们可以看到一张样图,那就就从它开始吧!用其提供的工具对图进行修改。自己练习。
关于
geoserver
开发
geoserver
只能用
j2ee
开发
geoserver
是符合
ogc wms/wfs/wcs
标准的地图服务器,建设一套完整的
webgis
系统还需要客户端配合,
mapbuilder
和
openlayers
是非常好的两个选择。对于较大的项目,空间数据库也是必不可少的,
geoserver
支持商业的
oracle
、
db2
,开源的
postgis
、
mysql
。
扯得更远一点,
geoserver
支持
google map
和
google earth
。
Geotools
外文官网
http://geotools.codehaus.org/
Geotools
是开源的
Java
代码库,在
GIS
中提供对地理空间数据的标准操作。简单说,它就是一个中间件,提供的功能符合
OGC
规范,且与
GeoAPI
有密切的联系。它支持的数据格式有
Shapefile
、
GML
、
WFS
、
PostGIS
、
Oracle Spatial
、
ArcSDE
、
MySQL
、
GeoMedia
、
MapInfo
等。
利用
Geotools
能够实现:
l
格网覆盖
Grid coverages
——栅格数据,
l
坐标系统转换
Coordinate Transformation
,
l
数据渲染
Renderers
,
l
格式化
Styling
——符号化数据集等功能。
WFS
地址
把下面地址中的
HighwayInterchange
改成自己创建的
featuretype
的名字,在浏览器中查看,
WFS
的
URL
,
http://localhost:8080/geoserver/wfs?request=getfeature&service=wfs&version=1.0.0&typename=States
下面地址的
youtian
改成自己的
FeatureType
名字,就是自己的
WFS
地址
http://localhost:8080/geoserver/wms/kml_reflect?layers=youtian
Openlayers dom
结构
OpenLayers
项目分析——(一)项目介绍
(OpenLayers JavaScript Mapping Library)
(一)项目介绍
网址:
http://www.openlayers.org/
OpenLayers
是由
MetaCarta
公司开发的,用于
WebGIS
客户端的
JavaScript
包,目前的最高版本是
2.5 V
,通过
BSD License
发行。它实现访问地理空间数据的方法都符合行业标准,比如
OpenGIS
的
WMS
和
WFS
规范,
OpenLayers
采用纯面向对象的
JavaScript
方式开发,同时借用了
Prototype
框架和
Rico
库的一些组件。
采用
OpenLayers
作为客户端不存在浏览器依赖性。由于
OpenLayers
采用
JavaScript
语言实现,而应用于
Web
浏览器中的
DOM
(文档对象模型)由
JavaScript
实现,同时,
Web
浏览器(比如
IE
,
FF
等)都支持
DOM
。
OpenLayers APIs
采用动态类型脚本语言
JavaScript
编写,实现了类似与
Ajax
功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就有一个
Ajax
类,用于实现
Ajax
功能)。
目前,
OpenLayers
所能够支持的
Format
有:
XML
、
GML
、
GeoJSON
、
GeoRSS
、
JSON
、
KML
、
WFS
、
WKT(Well-Known Text)
。在
OPenlayers.Format
名称空间下的各个类里,实现了具体读/写这些
Format
的解析器。
OpenLayers
所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如
WMS
、
WFS
、
GoogleMap
、
KaMap
、
MSVirtualEarth
、
WorldWind
等等。当然,也可以用简单的图片作为源。
第一次使用
OpenLayers
:
先到它的官方网站
http://www.openlayers.org
下载他的压缩包,解压后可以看到其中的一些目录和文件,拷贝目录下的
OpenLayer.js
、根目录下的
lib
目录、根目录下的
img
目录到你网站的
Scripts
目录下
(当然,这个只是例子,您网站的目录结构您自己说得算,只要保证
OpenLayers.js
,
/lib
,
/img
在同一目录中即可)。
然后,创建一个
index.html
作为查看地图的页面,导入
OpenLayers.js
和你将要创建的
js
。
我们以加载
WMS
和
GML
文件为例。
<script src="../lib/OpenLayers.js"></script>
<script type="text/javascript">
var lon = 5; //x-axis coodinate in map units
var lat = 40; //y-axis coordinate in map units
var zoom = 5; //number of zoom levels
var map, layer; //
声明变量
map
、
layer
;等同于
var map = null; var layer = null;
map = new OpenLayers.Map('map');
//
实例化一个地图类
OpenLayers.Map
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
//
以
WMS
的格式实例化图层类
OpenLayers.Layer
map.addLayer(layer);
map.zoomToExtent(newOpenLayers.Bounds(-3.922119,44.335327,
4.866943,49.553833));
//
在
Map
对象上加载
Layer
对象,并用
map.zoomToExtent
函数使地图合适地显示
map.addLayer(new OpenLayers.Layer.GML("GML", "gml/polygon.xml"));
//
再在刚加载的
WMS
文件上,加载一
GML
文件
剩下的工作就是,加上一些控件
OpenLayers.Control
之类的东西,比如
LayerSwitcher
等。它们会在地图浏览的“窗口”上增加一些工具栏或是“按钮”,增加互动性和功能性。
当然,
Openlayers
中的东西远不止这些,至于它的框架分析、
APIs
实现机制,会在后续文章中说出。写这个的过程,也是一个学习的过程,其中难免有不妥之处,热烈欢迎大家批评指正,相互交流。