文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

写给小白学习的地理信息的表示法GeoJSON

2023-05-20 08:15

关注

简介

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

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

几何对象类型有:

空间行状类型有:

举例

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

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

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

由 type 和 features 两个属性组成:

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

Feature

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

由 typegeometry 和 properties 三个属性组成:

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

几何对象

Point

Point 用来表示一个点

由 type 和 coordinates 两个属性组成:

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

MultiPoint

MultiPoint 用来表示多个点

由 type 和 coordinates 两个属性组成:

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

LineString

LineString 用来表示一条线

由 type 和 coordinates 两个属性组成:

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

MultiLineString

MultiLineString 用来表示多条线

由 type 和 coordinates 两个属性组成:

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

Polygon

Polygon 用来表示一个面

由 type 和 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 用来表示多个面

由 type 和 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 用来表示几何对象的集合

由 type 和 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 规范的一部分

其他

coordinate

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

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

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

coordinates 是多维数组:

坐标参考系

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

它们的区别:

在 ts 中使用

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

举例:

表示一个点和多个点的 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地理信息表示法的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯