GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?

2026-03-31 14:561阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2377个文字,预计阅读时间需要10分钟。

GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?

目录 + 简介 + 举例 + 空间行态 + FeatureCollection + Feature + 基本对象 + Point + MultiPoint + LineString + MultiLineString + Polygon + MultiPolygon + GeometryCollection + 可选属性 + 其他 + coordinate + 坐标参考系 + 在ts中使用 + 简介 + GeoJSON 是一种用于表示地理空间数据的格式

目录
  • 简介
    • 举例
  • 空间行状
    • FeatureCollection
    • Feature
  • 几何对象
    • Point
    • MultiPoint
    • LineString
    • MultiLineString
    • Polygon
    • MultiPolygon
    • GeometryCollection
  • 可选属性
    • 其他
      • coordinate
      • 坐标参考系
      • 在 ts 中使用

    简介

    GeoJSON是一种使用JSON来编码各种地理数据结构的格式,是一种轻量级的数据交换格式,可以用来表示几何对象、属性数据、空间参考系统等信息

    由两种对象组成:Geometry(几何对象)和Feature(空间行状)

    • 几何对象用来描述地理空间中的点、线、面等几何形状
    • 空间行状用来描述一个有界的实体,包括几何对象和其他属性信息

    几何对象类型有:

    • 点:Point
    • 多点:MultiPoint
    • 线:LineString
    • 多线:MultiLineString
    • 面:Polygon
    • 多面:MultiPolygon
    • 几何集合:GeometryCollection

    空间行状类型有:

    • 空间行状:Feature
    • 空间形状集合:FeatureCollection

    举例

    几何对象和空间行状可以相互嵌套

    const GeoJSON = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, }, { type: "Feature", geometry: { type: "Point", coordinates: [121.4837, 31.2504] }, properties: { id: 2 }, }, ], };

    空间行状

    FeatureCollection

    FeatureCollectionFeature对象的集合,用来表示一组Feature对象

    typefeatures两个属性组成:

    • type属性的值为FeatureCollection
    • features属性的值为Feature对象的数组

    const FeatureCollectionJSON = { type: "FeatureCollection", features: [feature], };

    Feature

    Feature对象用来表示几何对象的属性信息

    typegeometryproperties三个属性组成:

    • type属性的值为Feature
    • geometry属性的值为Geometry几何对象
    • properties属性的值为属性对象(可选)

    const FeatureJSON = { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, };

    几何对象

    Point

    Point用来表示一个点

    typecoordinates两个属性组成:

    • type属性的值为Point
    • coordinates属性的值为一个数组,数组的第一个元素为经度,第二个元素为纬度

    const PointJSON = { type: "Point", coordinates: [121.4737, 31.2304], };

    MultiPoint

    MultiPoint用来表示多个点

    typecoordinates两个属性组成:

    • type属性的值为MultiPoint
    • coordinates属性的值为一个数组,数组的每个元素都是一个点的坐标

    const MultiPointJSON = { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };

    LineString

    LineString用来表示一条线

    typecoordinates两个属性组成:

    • type属性的值为LineString
    • coordinates属性的值为一个数组,数组的每个元素都是一个点的坐标

    const LineStringJSON = { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };

    MultiLineString

    MultiLineString用来表示多条线

    typecoordinates两个属性组成:

    • type属性的值为MultiLineString
    • coordinates属性的值为一个数组,数组的每个元素都是一个线的坐标数组

    const MultiLineStringJSON = { type: "MultiLineString", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], ], [ [121.4727, 31.2314], [121.4827, 31.2514], ], ], };

    Polygon

    Polygon用来表示一个面

    typecoordinates两个属性组成:

    • type属性的值为Polygon
    • coordinates属性的值为一个数组,数组的第一个元素为外环的坐标数组,后面的元素为内环的坐标数组

    polygon的坐标数组的第一个元素和最后一个元素是相同的,表示闭合

    const PolygonJSON = { type: "Polygon", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4717, 31.2314], [121.4827, 31.2524], [121.4937, 31.2334], [121.4757, 31.2344], ], ], };

    MultiPolygon

    MultiPolygon用来表示多个面

    typecoordinates两个属性组成:

    • type属性的值为MultiPolygon
    • coordinates属性的值为一个数组,数组的每个元素都是一个面的坐标数组

    const MultiPolygonJSON = { type: "MultiPolygon", coordinates: [ [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], ], };

    GeometryCollection

    GeometryCollection用来表示几何对象的集合

    typegeometries两个属性组成:

    • type属性的值为GeometryCollection
    • geometries属性的值为几何对象的数组

    const GeometryCollectionJSON = { type: "GeometryCollection", geometries: [ { type: "Point", coordinates: [121.4737, 31.2304] }, { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], }, ], };

    可选属性

    这些属性都是GeoJSON的扩展属性,不是GeoJSON规范的一部分

    • id属性,用来描述FeatureCollection的唯一标识
    • bbox属性,用来描述FeatureCollection的边界框

      • 四至坐标,一般用来做数据裁剪
      • 这是一组左上角和右下角的坐标,示例:[minLon, minLat, maxLon, maxLat]
    • properties属性,用来描述FeatureCollection的属性
    • crs属性,用来描述坐标参考系

    其他

    coordinate

    coordinate是一个数组,表示一个点的坐标,数组的长度表示坐标的维度,一般是2维或3

    • 2维:[lon, lat]
    • 3维:[lon, lat, height]

    coordinate的第一个元素表示经度,第二个元素表示纬度,第三个元素表示高度

    坐标顺序是[lon, lat],这个是推荐顺序,可由crs属性指定

    coordinates是多维数组:

    • 点:[lon, lat]
    • 线:[[lon, lat], [lon, lat]]
    • 面:[[[lon, lat], [lon, lat]]]
    • 多面:[[[[lon, lat], [lon, lat]]]]

    坐标参考系

    最常使用的坐标系是EPSG:4326EPSG:3857

    • EPSG:4326WGS84(CGCS2000,大地) 坐标系,是GeoJSON规范的默认坐标系
    • EPSG:3857Web Mercator(墨卡托) 坐标系,是OpenLayers的默认坐标系

    它们的区别:

    • EPSG:4326是经纬度坐标系,EPSG:3857是投影坐标系
    • EPSG:4326的坐标范围是[-180, -90, 180, 90]EPSG:3857的坐标范围是[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]
    • EPSG:4326的坐标单位是度,EPSG:3857的坐标单位是米
    • EPSG:4326的坐标原点是[0, 0]EPSG:3857的坐标原点是[-20037508.342789244, -20037508.342789244]
    • EPSG:4326的坐标轴方向是[x, y]EPSG:3857的坐标轴方向是[x, -y]

    GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?

    在 ts 中使用

    为了在ts使用GeoJSON能够有类型约束,我整理整理了一些GeoJSONts类型定义和创建GeoJSON的方法:

    • geojson.d.ts
    • geojson.helper.ts

    举例:

    表示一个点和多个点的GeoJSON集合:

    使用geojson.d.ts

    type PointType = FeatureCollection<Point | MultiPoint, GeoJsonProperties<T>>; const point2Geojson: PointType<{ id: string; name?: string }> = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [120.4737, 31.2304], }, properties: { id: "12", name: "uccs" }, }, { type: "Feature", geometry: { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [111.4737, 31.2204], ], }, properties: { id: "1" }, }, ], };

    创建一个几何对象

    使用geojson.helper.ts

    const pointGeometry = point<{ id: string }>([120.4737, 31.2304], { id: "1", }); const featureGeoJSON = feature<Point>(pointGeometry);

    参考

    • GeoJSON
    • GeoJSON 格式
    • GeoJSON 格式规范
    • EPSG 4326 vs EPSG 3857 (投影,数据集,坐标系)
    • turf.js

    以上就是写给小白的地理信息的表示法GeoJSON的详细内容,更多关于GeoJSON地理信息表示法的资料请关注易盾网络其它相关文章!

    本文共计2377个文字,预计阅读时间需要10分钟。

    GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?

    目录 + 简介 + 举例 + 空间行态 + FeatureCollection + Feature + 基本对象 + Point + MultiPoint + LineString + MultiLineString + Polygon + MultiPolygon + GeometryCollection + 可选属性 + 其他 + coordinate + 坐标参考系 + 在ts中使用 + 简介 + GeoJSON 是一种用于表示地理空间数据的格式

    目录
    • 简介
      • 举例
    • 空间行状
      • FeatureCollection
      • Feature
    • 几何对象
      • Point
      • MultiPoint
      • LineString
      • MultiLineString
      • Polygon
      • MultiPolygon
      • GeometryCollection
    • 可选属性
      • 其他
        • coordinate
        • 坐标参考系
        • 在 ts 中使用

      简介

      GeoJSON是一种使用JSON来编码各种地理数据结构的格式,是一种轻量级的数据交换格式,可以用来表示几何对象、属性数据、空间参考系统等信息

      由两种对象组成:Geometry(几何对象)和Feature(空间行状)

      • 几何对象用来描述地理空间中的点、线、面等几何形状
      • 空间行状用来描述一个有界的实体,包括几何对象和其他属性信息

      几何对象类型有:

      • 点:Point
      • 多点:MultiPoint
      • 线:LineString
      • 多线:MultiLineString
      • 面:Polygon
      • 多面:MultiPolygon
      • 几何集合:GeometryCollection

      空间行状类型有:

      • 空间行状:Feature
      • 空间形状集合:FeatureCollection

      举例

      几何对象和空间行状可以相互嵌套

      const GeoJSON = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, }, { type: "Feature", geometry: { type: "Point", coordinates: [121.4837, 31.2504] }, properties: { id: 2 }, }, ], };

      空间行状

      FeatureCollection

      FeatureCollectionFeature对象的集合,用来表示一组Feature对象

      typefeatures两个属性组成:

      • type属性的值为FeatureCollection
      • features属性的值为Feature对象的数组

      const FeatureCollectionJSON = { type: "FeatureCollection", features: [feature], };

      Feature

      Feature对象用来表示几何对象的属性信息

      typegeometryproperties三个属性组成:

      • type属性的值为Feature
      • geometry属性的值为Geometry几何对象
      • properties属性的值为属性对象(可选)

      const FeatureJSON = { type: "Feature", geometry: { type: "Point", coordinates: [121.4737, 31.2304] }, properties: { id: 1 }, };

      几何对象

      Point

      Point用来表示一个点

      typecoordinates两个属性组成:

      • type属性的值为Point
      • coordinates属性的值为一个数组,数组的第一个元素为经度,第二个元素为纬度

      const PointJSON = { type: "Point", coordinates: [121.4737, 31.2304], };

      MultiPoint

      MultiPoint用来表示多个点

      typecoordinates两个属性组成:

      • type属性的值为MultiPoint
      • coordinates属性的值为一个数组,数组的每个元素都是一个点的坐标

      const MultiPointJSON = { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };

      LineString

      LineString用来表示一条线

      typecoordinates两个属性组成:

      • type属性的值为LineString
      • coordinates属性的值为一个数组,数组的每个元素都是一个点的坐标

      const LineStringJSON = { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], };

      MultiLineString

      MultiLineString用来表示多条线

      typecoordinates两个属性组成:

      • type属性的值为MultiLineString
      • coordinates属性的值为一个数组,数组的每个元素都是一个线的坐标数组

      const MultiLineStringJSON = { type: "MultiLineString", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], ], [ [121.4727, 31.2314], [121.4827, 31.2514], ], ], };

      Polygon

      Polygon用来表示一个面

      typecoordinates两个属性组成:

      • type属性的值为Polygon
      • coordinates属性的值为一个数组,数组的第一个元素为外环的坐标数组,后面的元素为内环的坐标数组

      polygon的坐标数组的第一个元素和最后一个元素是相同的,表示闭合

      const PolygonJSON = { type: "Polygon", coordinates: [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4717, 31.2314], [121.4827, 31.2524], [121.4937, 31.2334], [121.4757, 31.2344], ], ], };

      MultiPolygon

      MultiPolygon用来表示多个面

      typecoordinates两个属性组成:

      • type属性的值为MultiPolygon
      • coordinates属性的值为一个数组,数组的每个元素都是一个面的坐标数组

      const MultiPolygonJSON = { type: "MultiPolygon", coordinates: [ [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], [ [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], [ [121.4737, 31.2304], [121.4837, 31.2504], [121.4937, 31.2304], [121.4737, 31.2304], ], ], ], };

      GeometryCollection

      GeometryCollection用来表示几何对象的集合

      typegeometries两个属性组成:

      • type属性的值为GeometryCollection
      • geometries属性的值为几何对象的数组

      const GeometryCollectionJSON = { type: "GeometryCollection", geometries: [ { type: "Point", coordinates: [121.4737, 31.2304] }, { type: "LineString", coordinates: [ [121.4737, 31.2304], [121.4837, 31.2504], ], }, ], };

      可选属性

      这些属性都是GeoJSON的扩展属性,不是GeoJSON规范的一部分

      • id属性,用来描述FeatureCollection的唯一标识
      • bbox属性,用来描述FeatureCollection的边界框

        • 四至坐标,一般用来做数据裁剪
        • 这是一组左上角和右下角的坐标,示例:[minLon, minLat, maxLon, maxLat]
      • properties属性,用来描述FeatureCollection的属性
      • crs属性,用来描述坐标参考系

      其他

      coordinate

      coordinate是一个数组,表示一个点的坐标,数组的长度表示坐标的维度,一般是2维或3

      • 2维:[lon, lat]
      • 3维:[lon, lat, height]

      coordinate的第一个元素表示经度,第二个元素表示纬度,第三个元素表示高度

      坐标顺序是[lon, lat],这个是推荐顺序,可由crs属性指定

      coordinates是多维数组:

      • 点:[lon, lat]
      • 线:[[lon, lat], [lon, lat]]
      • 面:[[[lon, lat], [lon, lat]]]
      • 多面:[[[[lon, lat], [lon, lat]]]]

      坐标参考系

      最常使用的坐标系是EPSG:4326EPSG:3857

      • EPSG:4326WGS84(CGCS2000,大地) 坐标系,是GeoJSON规范的默认坐标系
      • EPSG:3857Web Mercator(墨卡托) 坐标系,是OpenLayers的默认坐标系

      它们的区别:

      • EPSG:4326是经纬度坐标系,EPSG:3857是投影坐标系
      • EPSG:4326的坐标范围是[-180, -90, 180, 90]EPSG:3857的坐标范围是[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]
      • EPSG:4326的坐标单位是度,EPSG:3857的坐标单位是米
      • EPSG:4326的坐标原点是[0, 0]EPSG:3857的坐标原点是[-20037508.342789244, -20037508.342789244]
      • EPSG:4326的坐标轴方向是[x, y]EPSG:3857的坐标轴方向是[x, -y]

      GeoJSON这种地理信息表示法,小白如何快速掌握其基本概念和用法呢?

      在 ts 中使用

      为了在ts使用GeoJSON能够有类型约束,我整理整理了一些GeoJSONts类型定义和创建GeoJSON的方法:

      • geojson.d.ts
      • geojson.helper.ts

      举例:

      表示一个点和多个点的GeoJSON集合:

      使用geojson.d.ts

      type PointType = FeatureCollection<Point | MultiPoint, GeoJsonProperties<T>>; const point2Geojson: PointType<{ id: string; name?: string }> = { type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [120.4737, 31.2304], }, properties: { id: "12", name: "uccs" }, }, { type: "Feature", geometry: { type: "MultiPoint", coordinates: [ [121.4737, 31.2304], [111.4737, 31.2204], ], }, properties: { id: "1" }, }, ], };

      创建一个几何对象

      使用geojson.helper.ts

      const pointGeometry = point<{ id: string }>([120.4737, 31.2304], { id: "1", }); const featureGeoJSON = feature<Point>(pointGeometry);

      参考

      • GeoJSON
      • GeoJSON 格式
      • GeoJSON 格式规范
      • EPSG 4326 vs EPSG 3857 (投影,数据集,坐标系)
      • turf.js

      以上就是写给小白的地理信息的表示法GeoJSON的详细内容,更多关于GeoJSON地理信息表示法的资料请关注易盾网络其它相关文章!