最近在看mapbox然后后续也会想写一些跟这个有关的文章,mapbox的渲染大量的使用到了GeoJson这种地理位置表示格式,所以这个地方就详细的写一个这个格式当地包含了哪些参数。
var geojson={
type:"FeatureCollection",
bbox:[],
crs:'',
features:[
{
type:'Feature',
geometry:{
type:'LineString',
coordinates:[[lng,lat],[lng,lat]]
}
}]
}
基本数据格式就是上面这样,一个对象里面包裹着两个值,
-
一个是类型type,
-
一个是features特性描述。
-
crs(可选),必须是一个坐标参考系统的对象
-
bbox边界框数组
type的类型可以是Point点
, MultiPoint多点
, LineString线
, MultiLineString多线
, Polygon面
, MultiPolygon多面
,GeometryCollection
, Feature
, 或者 FeatureCollection
features
是一个数组,但是我们通常只为数组的第一个值复制就是[{}]。里面是一个对象,对象有三个值
1.类型(type)
2.结构(geometory)
3.特性(properties)
type的类型可以是,Point
MultiPoint
LineString
MultiLineString
Polygon
MultiPolygon
或者GeometryCollection
。
这么说肯定还是有人不太清楚,到底一个合法有效的geojson到底怎么写,
那么接下老就让我们拆开了来看
首先数据格式
var geojson={
type1:'FeatureCollection',
features:[
{
type2:'Feature',
geometry:{
type3:'point'
}
}
]
}
从上面列举的我们可以知道type是 可以有多种卡类型的,这种多类型,
让我们可以随意的得到我们想要的结果。
type1的值可以是很多种 Point点 MultiPoint多点 LineString线
MultiLineString多线 Polygon面 MultiPolygon多面 GeometryCollection
Feature FeatureCollection
但是只有当type="FeatureCollection"的时候才可以有features,
当为其他类型的时候参加下图
1.type=Point
2.type=MultiPoint
3.type=LineString
4.type=MultiLineString
5.type=Polygon
6.type=MultiPolygon
7.type=GeometryCollection
这个叫做集合对象,类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。 几何集合必须有一个名字为"geometries"的成员。与"geometries"相对应的值是一个数组。这个数组中的每个元素都是一个GeoJSON几何对象。
8.type=FeatureCollection
类型为"FeatureCollection"的GeoJSON对象是特征集合对象。 类型为"FeatureCollection"的对象必须由一个名字为"features"的成员。与“features"相对应的值是一个数组。这个数组中的每个元素都是上面定义的特征对象。 类型为"Feature"的GeoJSON对象是特征对象。
-
特征对象必须由一个名字为"geometry"的成员,这个几何成员的值是上面定义的几何对象或者JSON的null值。
-
特征对戏那个必须有一个名字为“properties"的成员,这个属性成员的值是一个对象(任何JSON对象或者JSON的null值)。
-
如果特征是常用的标识符,那么这个标识符应当包含名字为
id
的特征对象成员。 也就是说当type=FeatureCollection
的时候,一定要有值叫做features
,然后fearures
其实就是feature
的数组形式。每一个feature
都是一个对象,对象一定有一个值叫做geometry
,properties
,
var data={
type1:"FeatureCollection",
features:[{
type2:"feature",
geometry:{
type3:'Point',
coordinates:[]
}
}]
}
当type1
的类型是FeatureCollection
的时候,下面一定会有一个数组是features
,在features
里面一定有一个类型为type="Feature"
,另一个值为geometry
,里面的type3
可以是Point
,MultiPoint
,LineString
,MultiLineString
,Polygon
,MultiPolygon
,GeometryCollection
综上就是geojson的所有格式。
结束语
综上是我自己在看mapbox的文档时候的一些总结,这些数据格式在openlayer,以及leaflet里面都是通用的。