简介
GeoJSON 是用 JSON 的语法表达和存储地理数据,可以说是 JSON 的子集。
图片数据参考:http://geojson.io
GeoJSON对象
- GeoJSON总是由一个单独的对象组成。
- GeoJSON对象可能有任何数目成员(名/值对)。
- GeoJSON对象必须由一个名字为"type"的成员。这个成员的值是由GeoJSON对象的类型所确定的字符串。
- type成员的值必须是下面之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "GeometryCollection", "Feature", 或者 "FeatureCollection"。
几何对象
当type的值是:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", 或者"GeometryCollection"时,GeoJSON就是几何对象。除"GeometryCollection"之外,其他几何对象都要有"coordinates"属性,它的值是一个数组,表示坐标集合。
位置(coordinates)
- 点(type: "Point"):“coordinates"的值必须是一个单独的位置。
- 多点(type: "MultiPoint"): “coordinates"的值必须是一个位置数组。
- 线(type: "LineString"): “coordinates"的值必须是两个或者多个位置的数组。
- 多线(type: "MultiLineString"): “coordinates"的值必须是线坐标数组的数组。
- 面(type: "Polygon"): “coordinates"的值必须是线性环坐标数组的数组。
- 多面(type: "MultiPlygon"): “coordinates"的值必须是面坐标数组的数组。
- 几何集合(type: "GeometryCollection"):类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。几何集合必须有一个名字为"geometries"的成员。与"geometries"相对应的值是一个数组。这个数组中的每个元素都是一个GeoJSON几何对象。
特征对象(type:"Feature")
- 特征对象必须有一个名字为"geometry"的成员,这个几何成员的值是上面定义的几何对象或者JSON的null值。
- 特征对戏那个必须有一个名字为“properties"的成员,这个属性成员的值是一个对象(任何JSON对象或者JSON的null值)。
- 如果特征是常用的标识符,那么这个标识符应当包含名字为“id”的特征对象成员。
特征集合对象(type:"FeatureCollection")
类型为"FeatureCollection"的对象必须由一个名字为"features"的成员。与“features"相对应的值是一个数组。这个数组中的每个元素都是上面定义的特征对象。
示例
下面是一个点数据。
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Point",
"coordinates": [114.34853553771973,30.48129922513529]
}
}
]
}
几何要素
地理要素分为Point(点)、MultiPoint(多点)、LineString(线)、MultiLineString(多线)、Polygon(面)、MultiPolygon(多面)、GeometryCollection(几何集合)。
这些地理要素被规划到geometry特征的type属性下,并且不同的type会有不同的coordinates值。
"geometry": {
"type": "Point",
"coordinates": [114.34853553771973,30.48129922513529]
}
Point(点)
点要素是最简单的,类型type对应Point,然后坐标是一个1维的数组,里面有两个元素(如果是立体的坐标就是三维x,y,z),分别为经度和纬度。
coordinates的值是一个点。
"geometry":{
"type":"Point",
"coordinates":[114.34853553771973,30.48129922513529]
}
MultiPoint(多点)
多点,坐标数目变多。
coordinates的值是多个点。
"geometry":{
"type":"MultiPoint",
"coordinates":[
[114.35980046127969,30.475784276668875],
[114.35974608393923,30.474073697808265]
]
}
LineString(线)
线要素就是指线段,记录的是线的端点坐标,可视化时会按照记录顺序联结。
对于曲线(如贝塞尔曲线)目前还没有很好的表达,但是在地理数据中,曲线一般会用LineString去拟合,现实地理世界中也没有标准的曲线地理要素。线要素的坐标coordinates里的二维数组和多点要素基本一样,区别就在type上了。
coordinates的值是多个点,类似MultiPoint(多点)。
"geometry":{
"type":"LineString",
"coordinates":[[
114.3529924135459,
30.478572845744893
],
[
114.35481302363945,
30.47748133618272
],
[
114.35568375020608,
30.476662695980167
],
[
114.35766267422133,
30.475502943909135
]]
} // 依次连接点
MultiLineString(多线)
好似一个三维数组,一条线连完,连下一条线。
"geometry":{
"type":"MultiLineString",
"coordinates":
[
[
[
114.3529924135459,
30.478572845744893
],
[
114.35481302363945,
30.47748133618272
],
[
114.35568375020608,
30.476662695980167
],
[
114.35766267422133,
30.475502943909135
]
], //一条线,注意开始点和结束点不一样。
[
[
114.35320435038312,
30.47471607166429
],
[
114.35460111088736,
30.47524631647086
],
[
114.35558216885983,
30.476091835997835
],
[
114.35751102860343,
30.477180968974636
]
] //第二条线
]
}
Polygon(面)
一个无孔单面。
"geometry":{
"type": "Polygon",
"coordinates": [
[
[114.35571287414865,30.47481892185671],
[114.35571287414865,30.4737127088717],
[114.35864427416618,30.4737127088717],
[114.35864427416618,30.47481892185671],
[114.35571287414865,30.47481892185671]
]
] // 注意里面多了一层括号,区别于线
}
MultiPolygon(多面)
两个相交的面。
"geometry": {
"type": "MultiPolygon",
"coordinates":
[
[
[
[114.35571287414865,30.47481892185671],
[114.35571287414865,30.4737127088717],
[114.35864427416618,30.4737127088717],
[114.35864427416618,30.47481892185671],
[114.35571287414865,30.47481892185671]
] // 这层括号可能就是为了突出此为面,首尾点相同
], // 注意里面多了一层括号,区别于线
[
[
[114.35651014589808,30.47460511218374],
[114.35651014589808,30.474017156423642],
[114.357878246913,30.474017156423642],
[114.357878246913,30.47460511218374],
[114.35651014589808,30.47460511218374]
]
] // 注意里面多了一层括号,区别于线
]
}
GeometryCollection(几何集合)
GeometryCollection是多种基本地理要素的集合,就是里面可以包含点、线、面要素。
这个是个特殊的要素,不需要放在FeatureCollection里。
{
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [114.35771652302878,
30.473617278566252]
},
{
"type": "LineString",
"coordinates": [
[114.35760115753658,30.473493873521008],
[114.35779916509125,30.473522316109594],
[114.35808627604439,30.473582045517958],
[114.35836678674559,30.47355644720433],
[114.35852849291592,30.473616176592472]
]
}
]
}
标签:Point,对象,简介,WebGIS,coordinates,GeoJSON,数组,type
From: https://www.cnblogs.com/tangjielin/p/16950331.html