leaflet学习笔记一(初识GeoJSON)
目录
近期公司需要开发遥感方面的项目,故需要学习leaflet相关的知识,尤其是在地图上工具GeoJSON绘制图形,下面简介GeoJSON。
简介
Geojson是一个很重要的数据格式,结构清晰,表达简洁。
与ESRI的shapefile相比更加小巧简单,但是表现的数据内容却是一样的,我觉得GeoJson大有取代shapefile的势头。与还不是很成熟的topojson相比,geojson已经兼容很多前端后段的工具,有很多脚本插件。如下:
awesome-geojson 太多太多
geojson-js-utils 空间数据简单处理js实现
geojson-python-utils 空间数据简单处理python实现
结构说明
点的数据格式
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
type指的是数据类型,它是一个feature。它包含几何要素和属性。几何要素包含要素的类型和坐标。属性可以包含各种数据类型。
线的数据格式
{
"type": "LineString",
"coordinates": [ [100.0, 0.0], [101.0, 1.0] ]
}
线状数据由两个以上的点组合而成,在坐标的外面多包上一层中括号,表示json中的数组。
面的数据格式
{
"type": "Polygon",
"coordinates": [
[ [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] ]
]
}
由于面状数据可以为镂空多边形,可以支持一个以上的多边形,所以在线状数据的基础上多加一层中括号。
要素组合的数据格式
{ "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"}
}
}
]
}
不同的数据类型间可以包成一个FeatureCollection,最外层有个type来表示类型,而features指向各个feature数组。有人肯定会疑惑shp中有proj的属性,geojson中可以用crs和bbox来表示投影参数和边界范围,详情参考。
转载自:https://blog.csdn.net/zjr201213136039/article/details/78899434