日期:2014-05-16  浏览次数:20521 次

GeoJSON标准&基于Node.js发布GeoJSON服务

GeoJSON标准&基于Node.js发布GeoJSON服务

第一部分 GeoJSON通读

一、需求 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?(1)需求:当需要地理信息数据进行可视化或者GIS空间分析时,那么需要一定得数据模型。而这个数据模型也正是GIS数据结构的体现。在web2.0下,JSON的数据格式更为被普遍的认同,相比XML更为节省宽带和易读性更高。

(2)问题:如何设计GIS数据模型呢?

(3)决策:采用开源的GeoJSON标准。

?

二、GeoJSON示例 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ?GeoJSON is a format for encoding a variety of geographic data structures. A GeoJSON object may represent a geometry, a feature, or a collection of features. GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection. Features in GeoJSON contain a geometry object and additional properties, and a feature collection represents a list of features.

? ? ? ?GeoJSON支持Point(点)、LineString(线段)、Polygon(多边形)、MultiPoint(多点)、MultiLineString(多线)、MultiPolygon(多边形集合)、GeometryCollection(图形集)。

? ? ?(1)示例:A GeoJSON feature collection:? ? ?

{ "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"}
           }
         }
       ]
     }

?(2)需要了解的:?

?一个GeoJSON对象可能是一个键对应多个值。

?一个GeoJSON对象必须有一个属性type,标识这个对象的所属类型。

?type取值只能是以下其一:?"Point",?"MultiPoint",?"LineString","MultiLineString",?"Polygon",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"MultiPolygon","GeometryCollection",?"Feature",