关于GeoJson数据格式的一些记录

2,347 阅读3分钟

最近在看mapbox然后后续也会想写一些跟这个有关的文章,mapbox的渲染大量的使用到了GeoJson这种地理位置表示格式,所以这个地方就详细的写一个这个格式当地包含了哪些参数。

var geojson={
  type:"FeatureCollection",
  bbox:[],
  crs:'',
  features:[
  {
   type:'Feature',
   geometry:{
     type:'LineString',
     coordinates:[[lng,lat],[lng,lat]]
   }
  }]
}

基本数据格式就是上面这样,一个对象里面包裹着两个值,

  1. 一个是类型type,

  2. 一个是features特性描述。

  3. crs(可选),必须是一个坐标参考系统的对象

  4. 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

1628751943(1).png

2.type=MultiPoint

image.png

3.type=LineString

image.png

4.type=MultiLineString

image.png

5.type=Polygon

image.png

6.type=MultiPolygon

image.png

7.type=GeometryCollection

这个叫做集合对象,类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。 几何集合必须有一个名字为"geometries"的成员。与"geometries"相对应的值是一个数组。这个数组中的每个元素都是一个GeoJSON几何对象。

image.png

8.type=FeatureCollection

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

  • 特征对象必须由一个名字为"geometry"的成员,这个几何成员的值是上面定义的几何对象或者JSON的null值。

  • 特征对戏那个必须有一个名字为“properties"的成员,这个属性成员的值是一个对象(任何JSON对象或者JSON的null值)。

  • 如果特征是常用的标识符,那么这个标识符应当包含名字为id的特征对象成员。 也就是说当type=FeatureCollection的时候,一定要有值叫做features,然后fearures其实就是feature的数组形式。每一个feature都是一个对象,对象一定有一个值叫做geometryproperties,

 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

image.png

image.png

综上就是geojson的所有格式。

结束语

综上是我自己在看mapbox的文档时候的一些总结,这些数据格式在openlayer,以及leaflet里面都是通用的。