在 GeoJSON 对象中添加 bbox 的正确方法是什么?

Ang*_*zza 5 geojson

我正在生成一些 GeoJSON 文档,但不确定如何正确地将 bbox 添加到几何图形中。

我是否需要创建一个要素对象来添加 bbox(示例 1),或者我可以在几何体本身中执行此操作(示例 2)吗?

GeoSON 规范 ( https://www.rfc-editor.org/rfc/rfc7946#appendix-A ) 仅提供了特征类型 GeoJSON 对象中的 bbox 示例,但是验证器接受插入 bbox 的两种模式。

示例 1:在此示例中,bbox 是特征类型的 GeoJSON 对象的元素。

{
  "type": "Feature",
  "properties": {"id": 1, "Linha": null},
  "bbox": [-48.573569106948469, -27.837770518544438, -48.417446881093412, -27.381161181879751],
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [-48.417446881093412, -27.381161181879751],
      [-48.573569106948469, -27.837770518544438]
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

示例 2:在另一个示例中,bbox 直接包含在具有几何图形 (LineString) 的 GeoJSON 对象中。

{
   "type": "LineString",
   "bbox": [-48.573569106948469, -27.837770518544438, -48.417446881093412, -27.381161181879751],
   "coordinates": [
          [-48.417446881093412, -27.381161181879751],
          [-48.573569106948469, -27.837770518544438]
   ]
}
Run Code Online (Sandbox Code Playgroud)

San*_*per 0

这是一个很好的问题,你是对的,规范中的示例不完整。从标准来看,GeoJSON Object的定义:

  1. GeoJSON 对象

    GeoJSON 对象表示几何、要素或要素集合。

    • GeoJSON 对象是一个 JSON 对象。
    • GeoJSON 对象有一个名为“type”的成员。成员的值必须是 GeoJSON 类型之一。
    • GeoJSON 对象可以有一个“bbox”成员,其值必须是一个边界框数组(参见第 5 节)。

然后,从边界框部分:

GeoJSON 对象可以有一个名为“bbox”的成员,以包含有关其几何、特征或特征集合的坐标范围的信息。

这就是验证器接受您的两个示例的原因。它们都是具有边界框的有效 geojson 对象。

为了帮助在我自己的项目中验证这一点,我开发了一组名为jest-geojson 的匹配器,它扩展了 Jest 测试框架,以便更轻松地评估 GeoJSON。包括边界框评估。