你知道 GeoJSON 吗?简介 术语 几何类型 资源

2025-05-25

你知道 GeoJSON 吗?

介绍

术语

几何类型

资源

介绍

对于那些不知道的人来说,GeoJSON 是用于存储位置数据和地理特征的标准数据格式。

内容

  1. 术语
  2. 不同的几何类型
  3. 资源

GeoJSON 只是一个 JSON 对象。它与普通 JSON 数据类型的区别在于其规范。

一些数据库(例如 Mongo DB)已正式支持 GeoJSON 数据类型。就像 MongoDB 识别字符串和整数类型一样,它能够识别 GeoJSON 并将其与普通 JSON 区分开来。它还支持对 GeoJSON 进行索引和查询

在这篇文章中,我将介绍 GeoJSON 数据类型的一些基本概念。

典型的 GeoJSON 格式如下所示。
别担心,我们在下面已经详细讨论了所有内容。

{
    "type": "Feature",
    "properties": {},
    "geometry": {
        "type": "Point",
        "coordinates": [-40.078125,70.72897946208789]
    }
}
Enter fullscreen mode Exit fullscreen mode

术语

坐标

地图上的单个点称为坐标。
当我们指向地图上的某个位置时,我们指向的是一些经度和纬度单位。我们将这些单位存储在一个称为“坐标”的数组中。
坐标数组包含两个元素:经度和纬度。
注意:顺序很重要。
coordinates : [ longitude , latitude ]

几何学

将几何体视为结构。几何体定义了坐标的存储结构。
有一些预定义的区分大小写的几何体类型,例如“点”、“线”、“多边形”等等。我们将逐一介绍它们。

一个典型的几何体如下所示

"geometry": {
    "type": "Point",
    "coordinates": [longitude,latitude]
}
Enter fullscreen mode Exit fullscreen mode

“类型”

每个几何体都必须有一个名为“type”的属性,其值必须是GeoJSON RFC中提到的 GeoJSON 类型之一

有一些几何类型用于存储其他几何类型。它们是“Feature”和“FeatureCollection”,我们在下面讨论过它们。

几何类型

观点

点是地图上的单个点或标记。其几何形状包含单个坐标。这可用于存储单个地点,例如商店。

替代文本

"geometry": {
        "type": "Point",
        "coordinates": [
            78.4918212890625,
            22.304343762932216
        ]
    }
Enter fullscreen mode Exit fullscreen mode

多点

顾名思义,MultiPoint 几何体用于在单个几何体中存储多个坐标点。坐标数组中的每个元素本身就是一个坐标。这可以用来存储收藏地点列表。

替代文本

{
    "type": "MultiPoint",
    "coordinates": [
        [80.26951432228088,13.09223800602329],
        [80.27061939239502,13.091631907724683],
        [80.2714991569519,13.09260375427521],
        [80.27050137519836,13.093241199930675]
    ]
}
Enter fullscreen mode Exit fullscreen mode

线串

它们是一排点。JSON 结构与 MultiPoint 相同,但由于它是 LinePoint 类型,因此各个坐标被视为一条相连的线,而不是分散的点。

替代文本

"geometry": {
    "type": "LineString",
    "coordinates": [
        [80.2122116088867,13.113586344333864],
        [80.25959014892577,13.072121016365408],
        [80.29048919677733,13.114923819297273],
        [80.3207015991211,13.075799674224164],
        [80.33477783203125,13.112248862097216]
    ]
}
Enter fullscreen mode Exit fullscreen mode

多行字符串

顾名思义,它用于在单个几何体中存储多个 LineString。Coordinates 数组的每个元素都类似于一个 LineString Coordinates 数组。

"geometry":{"type": "MultiLineString",
"coordinates" : [
[
[longitude,latitude],
[longitude,latitude],
[longitude,latitude]  
 ],
[
[longitude,latitude],
[longitude,latitude],
[longitude,latitude]  
 ],
[
[longitude,latitude],
[longitude,latitude],
[longitude,latitude]  
 ],
]}
Enter fullscreen mode Exit fullscreen mode

多边形

RFC 规范将多边形定义为线性环。如果您想知道什么是线性环,我也是。
这么说吧,多边形是任何闭合的形状,没错,任何形状。在这篇文章的女巫集会图片中,每个字母都是一个多边形。

如果你理解了 LineString 的概念,那么 RFC 规范还定义了多边形是闭合的 LineString,也就是说,多边形是任何闭合的形状。闭合的 LineString 意味着第一个坐标和最后一个坐标相同。

这可以用来存储边界。可以是国家边界、城市边界、村庄边界,也可以是某个地区的边界。

替代文本

"geometry": {
    "type": "Polygon",
    "coordinates": [
        [
            [78.44238281249999,22.62415215809042],
            [77.8436279296875,22.151795575397756],
            [78.486328125,21.764601405743978],
            [79.0521240234375,22.233175265402785],
            [78.44238281249999,22.62415215809042]
        ]
    ]
}
Enter fullscreen mode Exit fullscreen mode

多边形

到现在你应该已经猜到了,和 MultiPoint 和 MultiLine 一样,MultiPolygon 也是 Polygon 的集合。你可以用它来存储一个州内不同城市的边界信息。

这篇文章的封面图片可以是 MultiPolygon 的一个例子

特征和特征集合

重点来了。现在你学习了如何以点、线、面等各种结构存储地理数据。那么,如何存储这些位置的信息呢?

存储地理信息的正确方法是使用 Feature 和 FeatureCollection。

GeoJSON Feature 和 FeatureCollections 本身就是几何体。它们是一种用于存储其他几何体及其属性(信息)的几何体。

典型的特征如下

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [-10.0,-10.0]
    },
    "properties": {
        "temperature": "4C",
        "country": "IN",
        "somepropertyName": "Some description"
    }
}
Enter fullscreen mode Exit fullscreen mode

在上面的 GeoJSON 中,几何体可以是我们之前讨论过的任何类型,如点、线或多边形,并且属性包含有关该几何体的数据和信息。

特征集合

顾名思义,FeatureCollection GeoJSON 包含一个要素集合。

替代文本

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [78.31054687499999,22.39071391683855]
      }
    },
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [78.486328125,11.43695521614319]
      }
    },
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [77.9150390625,27.176469131898898]
      }
    },
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [75.673828125,19.766703551716976]
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

资源

文章来源:https://dev.to/ashiqsultan/do-you-know-geojson-4gld
PREV
为什么以及如何使用 Twitter 进行社交?我为什么要费心?好吧,那么我该如何开始呢?
NEXT
作为一名程序员/开发人员,您关注哪些 YouTube 频道并推荐它们?