GeoJson格式标准规范
文章目录
- GeoJson格式标准规范
- 0 摘要
- 1 介绍
- 1.1 必需的词汇
- 1.2 本文件中使用的约定
- 1.3 GeoJson 规范
- 1.4 定义
- 1.5 例子
- 2 GeoJson 文本
- 3 GeoJson 对象
- 3.1 几何对象
- 3.1.1 位置
- 3.1.2 Point
- 3.1.3 MultiPoint
- 3.1.4 LineString
- 3.1.5 MultiLineString
- 3.1.6 Polygon
- 3.1.7 MultiPolygon
- 3.1.8 GeometryCollection
- 3.1.9 180 度经线切割
- 3.1.10 不确定性和精确性
- 3.2 特征对象
- 3.3 特征集合对象
- 4 坐标参考系统
- 5 边界框
- 5.1 连接线
- 5.2 180 度经线
- 5.3 两极
- 6 扩展 GeoJson
- 6.1 外部成员
- 7 GeoJson 类型不可扩展
- 7.1 GeoJson 成员和类型的语义不可变
- 8 版本标识
- 9 映射到‘geo’URIs
- 10 安全考虑
- 11 互用性考虑因素
- 11.1 I-JSON
- 11.2 坐标精度
- 12 IANA 考虑
- 附录 A. 几何对象实例
- A.1 Points
- A.2 LineStrings
- A.3 Polygons
- A.4 MultiPoints
- A.5 MultiLineStrings
- A.6 MultiPolygons
- A.7 GeometryCollections
- 附录 B. 对之前 GeoJSON 格式规范的修改
- B.1 规范更改
- B.2 增加 GeoJSON 文本的定义
- 附录 C. GeoJSON 文本序列
GeoJson格式标准规范
2016 年 8 月发布,取代了 2008 年的 GeoJSON
规范成为 GeoJSON
格式的新标准规范。
标准链接:https://datatracker.ietf.org/doc/html/rfc7946
0 摘要
GeoJson
是一种基于 JSON
的地理空间数据交换格式。 它定义了几种类型的 JSON
对象,以及将它们组合起来表示有关地理特征
、属性
和空间范围
的数据的方式。 GeoJson
使用了经纬度参考系统、 WGS84
坐标系统和十进制单位。
1 介绍
GeoJson
是一种使用 JSON
编码对各种地理数据结构进行编码的格式。 GeoJson
对象可以表示一个空间区域(Geometry
)、一个空间有界实体(Feature
)或一系列特征集合(FeatureCollection
)。 GeoJson
支持以下几何类型: Point
、 LineString
、 Polygon
、 MultiPoint
、 MultiLineString
、 MultiPolygon
和 GeometryCollection
。 特征包含一个 Geometry
对象和其他属性,而特征集合包含一个特征列表。
这种格式从最广泛的意义上讲与地理数据有关,任何具有地理空间界限的特性的东西都可能是一个特征,不管它是否是一个物理结构。 GeoJson
中的概念并不新鲜,它们来自于先前存在的开放地理信息系统标准,并且已经进行了简化,以更好地适应使用 JSON
的 WEB
应用程序开发。
GeoJson
包含了在 OpenGIS
的简单特征实现规范中定义的七种具体的几何类型: 0
维是 Point
和 MultiPoint
;1
维曲线 LineString
和 MultiLineString
; 2
维曲面 Polygon
和 MultiPolygon
;异构的 GeometryCollection
。 这些几何类型的 GeoJSON
实例类似于在同一规范中描述的二进制(WKB
)和文本(WKT
)。
GeoJson
还包含类型 Feature
和 FeatureCollection
。 GeoJson
中的 Feature
对象包含一个 Geometry
对象,该对象具有上述几何类型之一和其他属性。 FeatureCollection
对象包含一个 Feature
对象数组。
自 2008 年首次发布GJ2008以来,GeoJSON
格式规范的流行程度一直在稳步增长。 它广泛应用于 JavaScript
网页地图库、基于 json
的文档数据库和 web API
。
1.1 必需的词汇
本文件中的”必须”、”不得”、”必需”、”应当”、”不应当”、”应该”、”不应该”、”建议”、”不建议”、”可能”和”可选”等关键词应解释为RFC2119所述。
1.2 本文件中使用的约定
必须按照RFC7159的指定,将本文档中定义的任何 JSON
对象的成员的顺序视为无关的。
一些示例使用 JavaScript
语言的单行注释(/ /)和省略号(…)的组合作为作者认为不相关的内容的占位符。 当然,在试图验证相应的JSON
代码示例之前,必须删除或替换这些占位符。
本文档中的示例使用空格来帮助说明数据结构,但不是必需的。 不带引号的空格在JSON
中不重要。
1.3 GeoJson 规范
本文档取代原来的 GeoJSON
格式规范GJ2008。
1.4 定义
JSON
,以及术语对象、成员、名称、值、数组、数字、true
、false
和null
,将被解释为在RFC7159中的定义。- 在本文档中,术语“几何类型”指七个区分大小写的字符串: “
Point
”、“MultiPoint
”、“LineString
”、“MultiLineString
”、“Polygon
”、“MultiPolygon
”和“GeometryCollection
”。 - 作为另一种速记符号,术语“
GeoJSON 类型
”指的是九个区分大小写的字符串: “Feature
”、“FeatureCollection
”以及上面列出的几何类型。 - “
FeatureCollection
”和“GeometryCollection
”中的“Collection
”一词对于数组成员的语义没有任何意义。 这些对象的“features
”和“geometry
”成员分别是标准的有序JSON
数组,而不是无序集。
1.5 例子
一个 GeoJSON
类型中的 FeatureCollection
类型:
{"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 文本
是 JSON 文本,由单个 GeoJSON 对象
组成。
3 GeoJson 对象
GeoJson 对象
表示一个几何对象、特征或特征集合。
- 一个
GeoJSON 对象
是一个JSON 对象
。 - 一个
GeoJSON 对象
有一个名为“type
”的成员。 成员的值必须是GeoJSON 九种类型
之一。 - 一个
GeoJSON 对象
可能有一个“bbox
”成员,其值必须是一个边界框数组(见 第 5 节)。 GeoJSON 对象
可能有其他成员(见 第 6 节)。
3.1 几何对象
几何对象在坐标空间中表示点、曲线和曲面。 每个 Geometry
对象都是一个 GeoJSON 对象
,不管它出现在 GeoJSON 文本
的哪个位置。
- 几何对象的“
type
”成员的值必须是七种几何类型之一(见 第 1.4 节)。 - 除了
GeometryCollection
以外的任何类型的GeoJSON 几何对象
都有一个名为coordinates
的成员。coordinates
成员的值是一个数组。 此数组中元素的结构由几何形状类型决定。GeoJson 处理器
可能将含有空“coordinates”数组的几何对象解释为空对象。
3.1.1 位置
位置是基本的几何构造。 几何对象的“coordinates”成员由以下两部分组成:
- 在
Point
几何情况下有一个位置。 - 在
LineString
或MultiPoint
情况下有一个位置数组。 - 在
Polygon
或MultiLineString
情况下有一个LineString
或 linear ring(见第 3.1.6 节)坐标数组。 - 在
MultiPolygon
情况下有一个Polygon
坐标数组。
一个位置是一组数字。 必须有两个或两个以上的元素。 前两个元素是经度和纬度
,或者叫做 easting
和 northing
,精确地按照这个顺序使用十进制数字。 海拔或高度
可作为可选的第三个要素。
实现时不应该扩展位置超过三个元素,因为额外元素的语义是不确定和模糊的。 历史上,有些实现使用第四个元素来携带线性参考度量值(有时表示为“ m
”)或数字时间戳,但在大多数情况下,解析器不能正确解释这些值。 附加元素的解释和含义超出了本规范的范围,附加元素可能会被解析器忽略。
两个位置之间的直线是笛卡尔坐标系下的直线
,也就是坐标系中两点之间最短的直线(见第 4 节)。
换句话说,在(lon0、 lat0)
和(lon1、 lat1)
之间的一条直线上的每个点不会穿过 180 度经线
,这些点可以计算为
F(lon, lat) = (lon0 + (lon1 - lon0) * t, lat0 + (lat1 - lat0) * t)
t
是大于等于 0
小于等于 1
的实数。 请注意,这条线可能明显不同于沿着参考椭球体曲面的测地线路径。
这同样适用于可选的高度元素,但条件是高度的方向在坐标参考系是指定的。
请再次注意,这并不意味着高度相等的曲面遵循例如水体的曲率。 同样高度的曲面也不会垂直于铅垂线。
位置和几何图形的例子见(附录 a)“几何示例“
3.1.2 Point
对于类型Point
, coordinates
成员是一个位置。
3.1.3 MultiPoint
对于类型MultiPoint
,coordinates
成员是位置数组。
3.1.4 LineString
对于类型 LineString
,coordinates
成员是两个或多个位置的数组。
3.1.5 MultiLineString
对于类型MultiLineString
,coordinates
成员是 LineString 坐标数组
的数组。
3.1.6 Polygon
为了指定多边形特有的约束,引入线性环
的概念是有用的:
线性环
是具有四个或更多位置的闭合LineString
。- 第一个和最后一个位置是相同的,它们必须包含相同的值; 它们的表示也应该相同。
线性环
是曲面的边界或曲面上孔的边界。线性环
必须遵循右手法则,也就是说,外环为逆时针方向,孔为顺时针方向。
注: (GJ2008)规范没有讨论线性环绕顺序
。 为了向后兼容,解析器不应该拒绝不遵循右边规则的多边形。
虽然线性环没有被显式地表示为 GeoJSON 几何类型
,但它导致了 Polygon
几何类型定义的规范化表述如下:
- 对于类型“
Polygon
” ,“coordinates
”成员必须是一个”线性环坐标数组
“组成的数组。 - 对于多边形有一个以上的环,第一个必须是外环,其他的必须是内环。 外环与表面形成边界,内环(如果存在)与表面形成边界孔。
3.1.7 MultiPolygon
对于类型 MultiPolygon
,coordinates
成员是Polygon 坐标数组
组成的数组。
3.1.8 GeometryCollection
类型为 GeometryCollection
的 GeoJSON 对象
是一个几何对象。 Geometrycollection
有一个名为 geometries
的成员。 geometries
的值是一个数组。 这个数组的每个元素都是一个 GeoJSON 几何对象
。 这个数组可能是空
的。
与上面描述的其他几何类型不同,GeometryCollection
可以是较小几何对象的异构组合。 例如,小写罗马字体“ i”形状的几何对象可以由一个 Point
和一个 LineString
组成。
Geometrycollections
有不同于单一类型的几何对象(Point
、 LineString
和 Polygon
)和多部分几何对象(MultiPoint
、 MultiLineString
和 MultiPolygon
)的语法,但没有不同的语义。 虽然 GeometryCollection
对象没有“coordinates
”成员,但它确实有坐标:,其所有部分的坐标都属于该集合。 Geometrycollection
的“geometries
”成员描述了这个组合的各个部分。 实现不应该对“geometries
”数组应用任何附加语义。
为了最大化互用性,实现应该避免嵌套的 GeometryCollection
s。 此外,当可以使用单个部件或多部件类型的单个对象(MultiPoint
、 MultiLineString
或 MultiPolygon
)时,应避免使用由单个部件或单个类型的多个部件组成的 GeometryCollection
s。
3.1.9 180 度经线切割
在表示跨越 180 度经线
的特征
时,通过修改它们的几何形状可以提高互操作性。 任何穿过 180 度经线
的几何体都应该被切割成两部分,这样任何一部分的表示都不会穿过 180 度经线
。
例如,一条从北纬 45 度
,东经 170 度
延伸到北纬 45 度
,西经 170 度
的直线应该被切成两段并表示为 MultiLineString
。
{"type": "MultiLineString","coordinates": [[[170.0, 45.0],[180.0, 45.0]],[[-180.0, 45.0],[-170.0, 45.0]]]
}
一个从北纬 40 度
,东经 170 度
到北纬 50 度
,西经 170 度
的矩形应该被切割成两个并表示为一个多边形。
{"type": "MultiPolygon","coordinates": [[[[180.0, 40.0],[180.0, 50.0],[170.0, 50.0],[170.0, 40.0],[180.0, 40.0]]],[[[-170.0, 40.0],[-170.0, 50.0],[-180.0, 50.0],[-180.0, 40.0],[-170.0, 40.0]]]]
}
3.1.10 不确定性和精确性
在RFC5870中规定,坐标位置上的数值的位数不能被解释为不确定度级别。
3.2 特征对象
一个特征对象
表示一个空间上有界的对象。 每个特征对象
都是一个 GeoJSON 对象
,不管它出现在 GeoJSON 文本
的哪个位置。
- 一个
特征对象
有一个值为“Feature
”的“type
”成员。 - 一个
特征对象
有一个名为“geometry
”的成员。geometry
成员的值应该是上面定义的几何对象,或者在功能未定位的情况下为JSON 空值
。 - 一个
特征对象
有一个名为“properties
”的成员。 属性成员的值是一个对象(任何JSON 对象
或JSON 空值
)。 - 如果一个
特征
有一个常用的标识符,那么这个标识符应该包含在特征对象的名为“id
”的成员中,并且这个成员的值是JSON 字符串
或数字
。
3.3 特征集合对象
类型为 FeatureCollection
的 GeoJSON 对象
是 FeatureCollection
对象。 FeatureCollection
对象有一个名为“ feature
s”的成员。 features
的值是一个 JSON 数组
。 数组的每个元素都是上面定义的特征对象
。 这个数组可能为空。
4 坐标参考系统
所有 GeoJSON 坐标
的坐标参考系统是同一个地理经纬度坐标参考系统,使用WGS84基准,以十进制经纬度为单位。 这相当于开放地理空间协会标识的坐标引用系统 URN: OGC: def: crs: OGC: : CRS84
。 一个可选的第三位元素
应该是 WGS 84 参考椭球体以上或以下的高度(米)。 在没有高程值的情况下,对高度或深度敏感的应用程序应该将第三位元素
解释为在该坐标的地面或海平面高度。
注: 备选坐标参考系统在GJ2008)中有规定,但已从本规范版本中删除,因为使用不同的坐标参考系统,特别是以 GJ2008
中规定的方式已证明存在互用性问题。 一般来说,GeoJSON 处理软件
不需要访问坐标参考系统数据库或网络访问坐标参考系统转换参数。 然而,如果所有参与方事先都有安排而不会有数据被误解的风险,可以使用其他的坐标参考系统。
5 边界框
GeoJson 对象
可能有一个名为“bbox
”的成员,包含关于其几何对象
、特征对象
或特征对象集合
的坐标范围
的信息。 bbox
成员的值必须是一个长度为 2 * n
的数组,其中 n
是所包含的几何图形中表示的维数
,最西南点的坐标轴后跟最东北点的坐标轴。bbox
的坐标轴顺序遵循几何图形的坐标轴顺序。
bbox
值定义沿着固定的经度、纬度和海拔线作为边缘的形状。
特征对象中的2D bbox
示例:
{"type": "Feature","bbox": [-10.0, -10.0, 10.0, 10.0],"geometry": {"type": "Polygon","coordinates": [[[-10.0, -10.0],[10.0, -10.0],[10.0, 10.0],[-10.0, -10.0]]]}//...
}
特征集合中 2D bbox
成员示例:
{"type": "FeatureCollection","bbox": [100.0, 0.0, 105.0, 1.0],"features": [//...]
}
带有 100m 深度
的 3D bbox
成员示例:
{"type": "FeatureCollection","bbox": [100.0, 0.0, -100.0, 105.0, 1.0, 0.0],"features": [//...]
}
5.1 连接线
边界框的四条线完全在坐标参考系中定义。也就是说,组成一个以“西”、“南”、“东”和“北”值为边界的框
(四至),最北线上的每一点都可以表示为:
(lon, lat) = (west + (east - west) * t, north)0 <= t <= 1
5.2 180 度经线
参照一组位于斐济群岛上的 Point
特征对象,它横跨在南纬 16 度到南纬 20 度
之间。 包含这些特征的框的西南角是在南纬 20 度 和东经 177 度
,西北角是在南纬 16 度和西经 178 度
。 这个跨越180 经度线
的特征
的 GeoJSON 包围框
是:
"bbox": [177.0, -20.0, -178.0, -16.0]
跨越了5 经度
。
同一纬度带的互补包围框
,不穿过 180 度经线
:
"bbox": [-178.0, -20.0, 177.0, -16.0]
跨越了 355 经度
。
东北角的纬度总是大于西南角的纬度,但是穿过 180 度经线
的边框的东北角经度小于西南角的经度。
5.3 两极
一个包含北极的包围框从[最小纬度,西经 180 度]
的西南角延伸到[北纬 90 度,东经 180 度]
的东北角。在地球仪上看,这个包围框近似于一个被纬线包围着的球帽。
"bbox": [-180.0, minlat, 180.0, 90.0]
一个包含南极的包围框从[南纬 90 度,西经 180 度]
的西南角延伸到[最大纬度,南纬 180 度]
的东北角。
"bbox": [-180.0, -90.0, 180.0, maxlat]
一个刚刚接触到北极的包围框,在地球仪上观察时形成一个近似球形的帽子,从最小纬度和最西经度的西南角
延伸到北纬 90 度和最东经度的东北角
。
"bbox": [westlon, minlat, eastlon, 90.0]
类似地,一个刚刚接触到南极的包围框,在地球仪上观察时,形成一个近似球帽的切片,在 GeoJSON
中有以下表示。
"bbox": [westlon, -90.0, eastlon, maxlat]
实现时不能使用大于 90 或小于-90 的纬度值
来表示一个范围。
6 扩展 GeoJson
6.1 外部成员
本规范中未描述的成员(“外部成员”)可以在 GeoJSON 文档
中使用。 注意,对外部成员的支持可能因具体实现而异,并且没有为外部成员定义规范的处理模型。 因此,过于依赖外部成员的实现可能会减少与其他实现的互用性。
例如,在下面显示的(删减的) 特征对象
中:
{"type": "Feature","id": "f1","geometry": {...},"properties": {...},"title": "Example Feature"}
“ title” : “ Example Feature”
的名称 : 值
对是外部成员。 当外部成员
的值为对象时,该对象的所有后代成员本身都是外部成员
。GeoJson 语义
不适用于外部成员及其后代,无论它们的名称和值如何。 例如,在下面的(删减的) 特征对象
中:
{"type": "Feature","id": "f2","geometry": {...},"properties": {...},"centerline": {"type": "LineString","coordinates": [[-170, 10],[170, 11]]}}
centerline
成员不是 GeoJSON 几何对象
。
7 GeoJson 类型不可扩展
实现时不能扩展 GeoJSON 类型
的固定集合: FeatureCollection
、 Feature
、 Point
、 LineString
、 MultiPoint
、 Polygon
、 MultiLineString
、 MultiPolygon
和 GeometryCollection
。
7.1 GeoJson 成员和类型的语义不可变
实现时不能更改 GeoJSON 成员和类型
的语义。
GeoJson
的“coordinates
”和“geometries
”成员定义几何对象
。 FeatureCollection
和 Feature
对象不能包含“coordinates
”或“geometries
”成员。
GeoJson
的“geometry
”和“properties
”成员定义一个特征对象
。特征集合对象
和几何对象
,不能包含一个“geometry
”或“properties
”成员。
GeoJson
“ features
”成员定义一个特征集合对象
。 特征对象
和几何对象
不能包含一个“features
”成员。
8 版本标识
GeoJson 格式
可以像这里定义的那样进行扩展,但是没有定义明确的版本控制方案。 改变 GeoJSON 成员
的语义或者修改格式的规范不会创建这种格式的新版本; 相反,它定义了一种全新的格式,不能被标识为 GeoJSON
。
9 映射到‘geo’URIs
“ geo” URIs
RFC5870)定义的地理位置和精确位置,可以映射到GeoJSON 几何对象
。
对于本节,如 RFC5870 中所示,“lat
”、“ lon
”、“ alt
”和“ unc
”分别是‘ geo’ URIs
中纬度
、经度
、海拔
和不确定值的占位符
。
一个具有两个坐标和一个不确定性(u)参数
的“ geo” URIs
,可以和一个 GeoJSON
Point
几何图形互相映射。 GeoJson
Point
总是转换为没有不确定性参数
的‘ geo’ URIs
。
'geo' URI:geo:lat,lonGeoJSON:{"type": "`Point`", "coordinates": [lon, lat]}
在 'geo’ URIs
和 GeoJSON
之间指定海拔的映射如下所示:
'geo' URI:geo:lat,lon,altGeoJSON:{"type": "`Point`", "coordinates": [lon, lat, alt]}
GeoJson
没有不确定性
的概念; 因此不确定的 'geo' URIs
无法被映射到 GeoJSON 几何图形
。
10 安全考虑
GeoJson
有 JSON
内容类型所共有的安全问题。 详情请参阅RFC7159 ,第 12 节。 GeoJson
不提供可执行内容。 GeoJson
不提供隐私或完整性服务。
如果敏感数据需要隐私或完整性保护,那么传输必须提供这些保护——例如,传输层安全性(TLS
)或 HTTPS
。 在某些情况下,存储的数据需要保护,这超出了本文档的范围。
与其他地理数据格式一样,如(KMLv2.2),提供关于敏感人物、动物、栖息地和设施的位置的详细信息可能会使它们受到未经授权的跟踪或伤害。 数据提供者应当认识到,如果匿名数据集中的位置未充分模糊,就有可能无意识地识别出个人。数据提供者也应当认识到位置模糊的有效性受到若干因素的限制,不太可能成为抵御攻击的有效防御。
11 互用性考虑因素
11.1 I-JSON
GeoJson 文本
应遵循 Internet JSON
(I-JSON
)的约束,以实现最大程度的互用性
。
11.2 坐标精度
GeoJson 文本
的字节大小是一个主要的互用性考虑因素,坐标值的精度对文本的大小有很大的影响。 通过将坐标精度从小数点后 6
位提高到小数点后 15
位,一个包含许多详细多边形的 GeoJSON 文本
几乎可以膨胀两倍。 对于以度数为单位的地理坐标,6
位小数(例如 sprintf
中常见的默认位置)大约等于 10
厘米,这个精度远低于目前的 GPS 系统
。 实现时应该考虑使用超出必要精度的代价。
此外,WGS 84基准面是大地水准面的一个相对粗略的近似值,相对于平行于地球平均海平面的表面,高度变化可达5 米
(但一般在 2 至 3 米
之间)。
12 IANA 考虑
GeoJson 文本
的媒体类型是“ application / geo + json
” ,并在RFC6838中描述的“ Media Types
”注册表中注册。 同一注册表中的“ application / vnd.geo + json
" 应该将其状态更改为“OBSOLETED
” ,并指向媒体类型“ application / geo + json
”和添加到此 RFC
的引用。
- 类型名称:
application
- 子类型名称:
geo + json
- 所需参数:
n/a
- 可选参数:
n/a
- 编码考虑因素:
二进制
- 安全考虑因素: 参见上文[第 10 节]
- 互用性考虑因素: 参见上文[第 11 节]
- 发布的规范: [RFC7946]
- 使用此媒体类型的应用程序: 目前没有已知的应用程序使用此媒体类型。 这种媒体类型适用于目前使用“
application / vnd.geo + json
”或“application / json
”媒体类型的 GeoJSON 应用程序,其中包括几个类别:web 地图
、地理空间数据库
、地理数据处理 api
、数据分析
和存储服务
以及数据传输
。
附加信息:
- 幻数:
n / a
- 文件扩展名:
.json .geojson
- Macintosh 文件类型代码:
n / a
- 对象标识符:
n / a
- Windows 剪贴板名称:
GeoJSON
- Macintosh 统一类型标识符:
public.geojson conforms to public.json
- 联系人详细信息:
Sean Gillies (Sean.Gillies@gmail. com)
- 预期用途:
COMMON
- 使用限制:
无
- 作者: 见[RFC7946]“作者地址”一节。
- 变更管理者:
互联网工程任务组
附录 A. 几何对象实例
下面的每个示例都表示一个有效且完整的 GeoJSON 对象
A.1 Points
点坐标按x
、 y
顺序排列(向东
、向北
为投影坐标
,经度
和纬度
为地理坐标
) :
{"type": "Point","coordinates": [100.0, 0.0]
}
A.2 LineStrings
Linestring
的坐标是一个位置数组
(见第 3.1.1 节))
{"type": "LineString","coordinates": [[100.0, 0.0],[101.0, 1.0]]
}
A.3 Polygons
一个多边形的坐标是一个 linear ring 数组
(见 3.1.6 节])的坐标数组
。 数组中的第一个元素
表示最外环
。 任何后续元素都表示内部环(或孔)
。
没有孔的情况:
{"type": "Polygon","coordinates": [[[100.0, 0.0],[101.0, 0.0],[101.0, 1.0],[100.0, 1.0],[100.0, 0.0]]]
}
内部有孔
的情况:
{"type": "Polygon","coordinates": [[[100.0, 0.0],[101.0, 0.0],[101.0, 1.0],[100.0, 1.0],[100.0, 0.0]],[[100.8, 0.8],[100.8, 0.2],[100.2, 0.2],[100.2, 0.8],[100.8, 0.8]]]
}
A.4 MultiPoints
MultiPoints
的坐标是一个位置数组
:
{"type": "MultiPoint","coordinates": [[100.0, 0.0],[101.0, 1.0]]
}
A.5 MultiLineStrings
Multilinestring
的坐标是一个 ”LineString 坐标数组
“组成的数组:
{"type": "MultiLineString","coordinates": [[[100.0, 0.0],[101.0, 1.0]],[[102.0, 2.0],[103.0, 3.0]]]
}
A.6 MultiPolygons
MultiPolygons
的坐标是”Polygon 坐标数组
“组成的数组:
{"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.2, 0.8],[100.8, 0.8],[100.8, 0.2],[100.2, 0.2]]]]
}
A.7 GeometryCollections
Geometrycollection
的“ Geometry
”数组中的每个元素都是上面描述的几何对象
之一:
{"type": "GeometryCollection","geometries": [{"type": "Point","coordinates": [100.0, 0.0]},{"type": "LineString","coordinates": [[101.0, 0.0],[102.0, 1.0]]}]
}
附录 B. 对之前 GeoJSON 格式规范的修改
本附录简要总结了 2008 规范[GJ2008]中的非编辑性变更。
B.1 规范更改
- 取消了坐标参考系统的规格,即不再使用[GJ2008]的“
crs
”成员。 - 在没有高程值的情况下,对高度或深度敏感的应用程序应将
第三个位置
解释为在当地的地面或海平面(见[第 4 节])。 - 实现时不应扩展位置数组超过
3
个元素(参见[3.1.1 节])。 - 两个位置之间的直线是
笛卡尔坐标直线
(见[3.1.1 节])。 - 多边形环必须遵循
右手定位法则
(逆时针方向外环,顺时针内环)。 - “
bbox
”数组的值是“[ west,south,east,north ]
” ,而不是“[ minx,miny,maxx,maxy ]
”(参见[第 5 节])。 Feature
对象的“id
”成员是一个字符串或数字(见[第 3.2 节])。- 可以使用扩展,但不能改变
GeoJSON 成员
和类型的语义(参见[第 6 节])。 GeoJSON 对象
不能包含其他类型的定义成员(参见[第 7.1 节])。GeoJSON
的媒体类型是“application / geo + json
”。
B.2 增加 GeoJSON 文本的定义
- 添加了映射到
geo’ URIs
的规则。 - 增加了
I-JSON
限制的建议。 - 提醒实施者注意坐标精度过高对
互用性
的影响。 - 注意到几何集合的
互用性
问题。 这些对象应该谨慎使用。
附录 C. GeoJSON 文本序列
在这个规范中定义的所有 GeoJSON 对象
—— FeatureCollection
、 Feature
和 Geometry
——只包含一个 JSON 对象
。 然而,在某些情况下,应用程序可能需要表示这些对象的集合或序列(超过在 FeatureCollection
中对 Feature
对象的分组) ,例如,为了有效地“stream
”大量的 Feature
对象。 这种集合或序列的定义超出了本规范的范围。
如果需要这样的表示,则需要能够表示这些集合或序列的新媒体类型。 在定义这样的媒体类型时,基于“ JSON 文本序列(JSON)
”可能是有用的,这样规范就不需要考虑如何表示多个JSON 对象
,只需定义它如何应用于GeoJSON 对象
。
GeoJson格式标准规范相关推荐
- Cesium源码解读系列(一):GeoJsonDataSource如何处理geojson格式的数据
想写这个系列的文章起因,是因为项目上的"图层管理"模块功能进行了更改.里面涉及到了一种GeoJson格式的图层数据. 从接口获取到的数据,当时设计接口的时候就已经定好了数据格式.标 ...
- Mars3D(含Cesium)数据及服务篇:shp转geojson格式
shp格式介绍 Shapefile文件是ESRI公司ArcGIS平台的常用格式文件,是工业标准的矢量数据文件. Shapefile将空间特征表中的非拓扑几何对象和属性信息存储在数据集中,特征表中的几何 ...
- 安防行业标准规范大全
国际性的ONVIF.PSIA.HDCCTV标准,国内的联网监控标准GBT28181标准,以及一些地方规范的制定,为安防行业迎接网络化.高清化.数字化的健康发展奠定了基础.那么,这些标准各有什么优点呢? ...
- 关于标准规范的一些想法
笔者最近接了一个总集项目,需要整理一套标准规范,涉及总体标准(标准编写规则).元数据标准.数据字典标准.数据接口标准.开发标准等.想着公司也接过许多总集项目,应该有一些成型的标准规范.但联系这个项目的 ...
- php psr2规范,php标准规范详解
本文主要和大家分享php标准规范详解,希望能帮助到大家. psr0:自动加载标准已经被 psr4 替代,可以了解下 1. 强制:完全限定命名空间和类的格式:\\(\)* 2. 强制:每个命名空间必须有 ...
- mysql中对象标识符的命名规则,标准规范数据库命名规范.doc
标准规范数据库命名规范 数据库命名规范 概述 基本原则 以大小写敏感编写SQL语句. 尽量使用Unicode 数据类型. 优先使用连接代替子查询或嵌套查询. 尽量使用参数化SQL查询代替语句拼接SQL ...
- Go语言国际电子表格文档格式标准实践
在 Gopher Meetup 北京站上,阿里巴巴高级开发工程师.前百度 Go 语言编程委员会成员续日进行了主题为<Go语言国际电子表格文档格式标准实践>的演讲. Excelize 是 G ...
- [ZZ]一些界面标准规范(来自因特网)
一些界面标准规范(来自因特网) [理论] 通用界面指南 ------------------------------------------------------------------------ ...
- DDR4时序标准规范(二)
DDR4时序标准规范 编码模式寄存器(MRx) 模式寄存器0(MR0) CAS延迟 测试模式TM 写恢复(WR)/读预充 DLL(延时锁相环)复位 模式寄存器1(MR1) DLL(延时锁相环)使能/禁 ...
最新文章
- JSON字符串 拼接与解析
- linux系统关于ping的命令,详解Linux系统中ping和arping命令的用法
- 使用 CodeIgniter 框架快速开发 PHP 应用(二)
- Mybatis解析动态sql原理分析
- java运行命令解释
- 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
- python与excel-再见Excel!我开源了一款与Python深度集成的神器级IDE
- 2019.10.15学习总结
- 超大背包问题(二进制枚举 + 二分)
- 解决设置redmineblacklog的按钮无效问题
- 使用 Lightbox 2 和 JavaScript 构建出色的图片库
- java旋转数组最小值,【剑指offer】7.旋转数组的最小数字
- Linux蓝牙耳机软件,Linux下蓝牙耳机的配置与测试
- MD5 Encryption Of String ( UTF-8 ) / UE4 MD5 加密
- Python之灵魂三问,分享学习路上的神器集合!
- 全国英语计算机四六级成绩查询,大学英语四六级考试成绩查询
- web前端学习135-144(盒子模型---网页布局,盒子模型组成,边框,表格细线边框,盒子实际大小,内边距)
- Android 65536错误:Cannot fit requested classes in a single dex file
- 推荐系统实践 0x11 NeuralCF
- FFMPEG直播推流
热门文章
- 求N分之一序列前N项和 (15分)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(二)
- 2022.3 C++植物大战僵尸项目总结
- 超级计算机也无法算尽圆周率,如果圆周率算尽了,是否意味着发现了最小单位?...
- 微型计算机snb评测,小苦谈硬件:SNB集显性能到底能跟谁比?
- 性能服务器闹钟功能,一种服务器及其闹钟实现方法
- OSChina 周二乱弹 —— 穿越大半个中国去睡你
- c语言字号与屏幕自动调整,C操作excel自动换行与自动调整行高问题
- python+opencv实现多张图像拼接_附源码
- react在线文件_编程界“滥竽充数者”?React是否名不副实?