WEBGIS体系和OGC标准

WEBGIS体系和OGC标准

 

  1. WEB地图

-         以数据为核心的巨头网站

-         指路导航网站

-         地图社区和其它重视兴趣点的应用

  1. GML:是一个基于XML之上的地理信息描述、转换、传输的标准。

-         打开天地图网站,运行搜索服务,点击浏览器调试工具,网络,可以看到xml下面GML的数据格式。

-         也可以在GeoServer(细节:端口7878)中看到点、线、面三种数据格式,并且在GeoServer中进行了展示

3.WMS(Web Map Service)

打开GeoServer,输入:127.0.0.1:7878/geoserver/web/→右边点击“WMS 1.1.1”(版本号),下载xml格式的标准文件。

[1]   GetCapabilities(获取服务能力)

<Get></Get>  <Post></Post>  <GetMap></GetMap>(显示各种支持的地图格式)

[2]   GetMap(获得地图)

点击“Layer Preview”→选择一个“sf:restricted”→Select one,WMS,GIF→浏览图层。可以将此时的游览器地址栏复制到EditPlus中可以清晰看到获取地图的参数:

  • Request=GetMap 表示操作类型为获得地图
  • Layers=layerName 表示需要获得图层名字为XX的地图,图层名字可以为多个图层,多个图层的名字用逗号进行分割
  • Styles=styleName 表示获得图层的样式文件,如果值为空的话,说明当前的地图图层使用的是默认地图样式
  • Bbox=589434.8564686741,4914006.337837095,609527.2102150217,4928063.398014731 表示根据地图的坐标范围获得对应的地图数据
  • Width=256 表示获得的地图图片的宽度
  • Height=256 表示获得地图图片的高度
  • Srs=EPSG:26713 表示地图的空间坐标系的srid值 (坐标系的编号)

[3]   GetFeatureInfo 获取对象信息

  1. WFS(Web Feature Service)

WFS是一个基于Web服务技术的地理要素在线服务标准。它主要实现了地理数据的Web服务和异构系统的互操作规范。同样可以在GeoServer中看到详细信息。

[1]   GetCapabilities(获取服务能力)

[2]   DescribeFeatureType(要素类型特征描述)

[3]   GetFeature(获取对象)

GeoServer→Demos→Demo requests→WFS getFeature-1.1.xml(要输入admin 密码);同样可以用Layer Preview→sf:roads→WFS,GML3来测试。可以将此时的游览器地址栏复制到EditPlus中可以清晰看到获取地图的参数:

  • Request=GetFeature 表示操作类型为获得地图要素的属性信息
  • typeName=layerName 表示获取地理要素信息的图层名称
  • maxFeatures=50 表示生成地理要素信息最多的条目数
  • outputFormat=text/xml 表示生成地理要素的数据存储格式,一般为text/xml,即XML格式

[4]   Transaction(事务处理包括增、删、修改要素)

GeoServer→Demos→Demo requests里面选择各种事件(如Delete等)查看参数。

[5]   LockFeature(锁要素)

  1. GeoJSON

{ "type": "FeatureCollection",

  "features": [

    { "type": "Feature",

      "geometry": {

"type": "Point","coordinates": [102.0, 0.5]

},

      "properties": {"prop0": "value0"}

    },

    { "type": "Feature",

      "geometry": {

        "type": "LineString",

        "coordinates":

 [

       [102.0, 0.0], [103.0, 1.0], [104.0, 0.0],[105.0, 1.0]

      ]

      },

      "properties": {

        "prop0": "value0",

        "prop1": 0.0

      }

    },

    { "type": "Feature",

      "geometry": {

        "type": "Polygon",

        "coordinates": [

           [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],

             [100.0, 1.0], [100.0, 0.0] ]

        ]

      },

      "properties":

{

         "prop0": "value0",

         "prop1": {"this": "that"}

      }

    }

  ]

}

[1]   JSON 是源于javascript 对象,javascript 对象(Object)就是用大括号括起来,中间以键/值的形式表现并用逗号分割,“键”就是对象的属性,而“值”就是该属性的值。javascript 中还有个数组(Array),用中括号括起来,中间只有单个的值并用逗号分割。不管是对象还是数组,其中的值可以是任何元素(对象,数组,字符串,数字等),这就是此中结构的灵活之处。JSON 与XML 很相似,也具有层次结构,是一种轻量级的解决方案。

[2]   GeoJSON 保留了JSON 的结构,但增加了一些约束条件:

ü       GeoJSON 总是由一个对象组成,这个对象可以为要素集合(featurecollection),要素(feature)或者几何体( geometry)。

ü       GeoJSON 对象必须包含一个type 属性,type  的值可为 “Point”,  “MultiPoint”,  “LineString”,  “MultiLineString”,  “Polygon”,  “MultiPolygon”, “GeometryCollection”,  “Feature”, or “FeatureCollection”。

ü       Geometry对象是那些type值为 “Point”,  “MultiPoint”,  “LineString”,  “MultiLineString”,  “Polygon”,  “MultiPolygon”,  “GeometryCollection”的GeoJSON 对象。Geometry 对象除了GeometryCollection 外必须包含一个coordinates 属性,其中包含一个点列表。

ü       Feature 对象是type 值为”Feature”的GeoJSON 对象。Feature 对象必须包含一个geometry 属性,其值为一个Geometry 对象。Feature 对象必须含有一个properties 属性,其值可为一个JSON 对象。

ü       GeometryCollection 对象是type值为”GeometryCollection”的GeoJSON 对象。代表一个几何型集合,与FeatureCollection 不同的是他包含的是Geometry 对象,而不是Feature 对象。GeometryCollection 对象必须含有一个geometries 属性,其中包含一组Geometry 对象。

ü       GeoJSON 对象可以有一个”bbox”属性,是”[minx,miny,maxx,maxy]“的结构,他表示了该对象的显示范围。

[3]   如上面的例子,由大括号括起来的都是GeoJSON 对象,例子中是一个FeatureCollection 对象,他包含了一组Feature 对象,还可以添加这个集合的其他属性。每个Feature 对像都包含一个Geometry 对象和一个属性(JSON 对象),Geometry 对象有所不同,类型不同,coordinates 的数据结构也不同。

ü       点,表示点只需要经度和纬度,用中括号括起来代表一个点坐标。{ "type": "Point", "coordinates": [100.0, 0.0] }

ü       线,由一系列点组成,在一组有序点外面再括一个中括号。

{ "type": "LineString", "coordinates": [ [100.0, 0.0],

                                    [101.0, 1.0] ] }

ü       面,在线的外面再加一个中括号,面列表中的线收尾必须一致。但为什么未免还要加个呢?为了表示面中的洞,第一项表示外围的圈,第二项(如果有的话)表示内围的圈。

{ "type": "Polygon",

  "coordinates": [  [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],

                   [100.0, 1.0], [100.0, 0.0] ]

             ]

}

ü       除了以上还有多点,多线,多面就不多讲了,可以自己去看看。

[4]   GeoJSON 基本上就这些内容,跟详细的可以去这里。GeoJSON 只是为更好数据通信提供一个标准,现在已有超过20个项目支持了GeoJSON,包括客户端的和服务器端的,而且大多数语言都支持JSON。如果你喜欢这种更轻量级的解决方案,那么就加入进来吧。更多请访问:

http://www.geojson.org/geojson-spec.html#appendix-a-geometry-examples

[5]   一个OpenLayers的简单例子:

//初始化map

var featurecollection = 'geojson对象';

//获得一个geojson的模板

var geojson = new OpenLayers.Format.GeoJSON();

var layer = new OpenLayers.Layer.Vector();

//用模板来解析这个geojson对象

layer.addFeatures(geojson.read(featurecollection));

map.addLayer(layer);

  1. KML——Google Earth数据格,用于保存用户添加的地标等数据。kmz是kml的压缩格式。保存的kml文件类似ArcMap中的mxd文件。具体格式写法可以用EditPlus打开。
原文地址:https://www.cnblogs.com/chuang8/p/3230240.html