hello world

随笔 - 2, 文章 - 63, 评论 - 0, 引用 - 0
数据加载中……

【转】geoserver扫盲 openlayers相关

转自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 实现机制,会在后续文章中说出。写这个的过程,也是一个学习的过程,其中难免有不妥之处,热烈欢迎大家批评指正,相互交流。

posted on 2010-04-09 10:21 听风 阅读(790) 评论(0)  编辑  收藏 所属分类: JAVA