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 听风 阅读(730) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: