geojson格式整理

一、简介
GeoJSON 是一种用于表示地理空间数据的开放标准格式,他是一种json对象,具有轻量级、易读易写、与多种编程语言和地理信息系统(GIS)软件兼容等特点,在地理空间数据的存储、传输和交换中广泛应用。
二、geojson的格式
1.必须有一个type属性,代表此geojson对象的几何类型,它的类型可以是一下几种:“Point”, “MultiPoint”, “LineString”, “MultiLineString”, “Polygon”, “MultiPolygon”, “GeometryCollection”, “Feature”, 或者 “FeatureCollection”。
{ "type": "FeatureCollection", "features": [ // 其他内容 ] }
2. features里的内容
2.1 geometry对象
几何(Geometry)是一种GeoJSON对象,这时type成员的值是下面字符串之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", 或者"GeometryCollection"。 除了“GeometryCollection”外的其他任何类型的GeoJSON几何对象必须由一个名字为"coordinates"的成员。coordinates成员的值总是数组。这个数组里的元素的结构由几何类型来确定。
{ "type": "FeatureCollection", "features": [ { "type": "GeoJSON", "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 108.953361, 34.292663 ], [ 108.953404, 34.289539 ], [ 108.950857, 34.289529 ] // 多个经纬度点 ] ] ] } } ] }
(1)基础点position
position是基本的几何结构。position由数字数组表示(可以理解为经纬度)。必须至少两个元素,可以有更多元素。元素的顺序必须遵从x,y,z顺序(投影坐标参考系统中坐标的东向、北向、高程或者地理坐标参考系统中的坐标经度、纬度、高程)。
(2)type类型:point
对类型"Point"来说,“coordinates"成员必须是一个单独的position
{ "type": "Point", "coordinates": [100.0, 0.0] }
(3)type类型:MultiPoint
对类型"MultiPoint"来说,"coordinates"成员必须是position数组
{ "type": "MultiPoint", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }
(4)type类型:LineString
对类型"LineString"来说,“coordinates"成员必须是两个或者多个position的数组
{ "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }
(5)type类型:MultiLineString
对类型“MultiLineString"来说,"coordinates"成员必须是一个线坐标数组的数组
{ "type": "MultiLineString", "coordinates": [ [ [100.0, 0.0], [101.0, 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ] ] }
(6)type类型:Polygon
对类型"Polygon"来说,"coordinates"成员必须是一个线性环坐标数组的数组。对拥有多个环的的面来说,第一个环必须是外部环,其他的必须是内部环或者孔,而且内部环和外部环的走向是相反的。
无孔的:
{ "type": "Polygon", "coordinates": [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ] }
(7)type类型:Multipolygon
对类型"MultiPlygon"来说,"coordinates"成员必须是面坐标数组的数组。
{ "type": "MultiPolygon", "coordinates": [ [[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]], [ [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]], [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]] ] ] }
(8)type类型:Geometry Collection
类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。几何集合必须有一个名字为"geometries"的成员。与"geometries"相对应的值是一个数组。这个数组中的每个元素都是一个GeoJSON几何对象。
{ "type": "GeometryCollection", "geometries": [ { "type": "Point", "coordinates": [100.0, 0.0] }, { "type": "LineString", "coordinates": [ [101.0, 0.0], [102.0, 1.0] ] } ] }
2.2 feature对象
类型为"Feature"的GeoJSON对象是要素对象。
要素对象必须有一个名字为"geometry"的成员,这个几何成员的值是上面定义的geometry对象或者JSON的null值。
要素对象必须有一个名字为“properties"的成员,这个属性成员的值是一个对象(任何JSON对象或者JSON的null值)。“properties"成员的内容是保存要素对象的其他属性信息,例如该要素对象的name信息等
如果要素是常用的标识符,那么这个标识符应当包含名字为“id”的对象成员。
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "adcode": 610102, "name": "新城区", "center": [ 108.959903, 34.26927 ], "centroid": [ 108.991696, 34.271932 ], "childrenNum": 0, "level": "district", "parent": { "adcode": 610100 }, "subFeatureIndex": 0, "acroutes": [ 100000, 610000, 610100 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 108.953361, 34.292663 ], [ 108.953404, 34.289539 ], [ 108.950857, 34.289529 ] // 多个经纬度点 ] ] ] } } ] }
2.3 FeatureCollection对象
类型为"FeatureCollection"的GeoJSON对象是特征集合对象。

类型为"FeatureCollection"的对象必须有一个名字为"features"的成员。与“features"相对应的值是一个数组。这个数组中的每个元素都是上面定义的feature对象。

posted @ 2025-04-09 21:00  k954  阅读(853)  评论(0)    收藏  举报