gpt4 book ai didi

mongodb - 为什么多边形 GeoJSON 对象的坐标存储在数组的数组中?

转载 作者:可可西里 更新时间:2023-11-01 09:11:12 25 4
gpt4 key购买 nike

official documentation 中所示,多边形GeoJSON对象的结构如下图所示:

db.someCollection.insert({
type: "Polygon",
coordinates: [
[
[0, 0], [3, 6], [6, 1], [0, 0]
]
]
});

为什么Type A 格式的结构不是如下所示?

类型 A

db.someCollection.insert({
type: "Polygon",
coordinates: [
[0, 0], [3, 6], [6, 1], [0, 0]
]
});

我认为原因可能是要存储多个地理围栏。像这样:

类型 B

db.someCollection.insert({
type: "Polygon",
coordinates: [
[
[0, 0], [3, 6], [6, 1], [0, 0]
],
[
[1, 1], [3, 6], [6, 1], [1, 1]
]
]
});

我发布这个问题的原因是因为我猜想在使用 MongoDB 中的一些运算符(如 $geoIntersects$geoWithin)后我的假设是错误的,这需要Type A 格式的结构。

最佳答案

MongoDB 没有定义 GeoJSON 格式。相反,它是在标准中定义的:RFC7946

这是 RFC 中关于多边形的相关部分:https://www.rfc-editor.org/rfc/rfc7946#section-3.1.6它指出:

  • For type "Polygon", the "coordinates" member MUST be an array of linear ring coordinate arrays.
  • For Polygons with more than one of these rings, the first MUST bethe exterior ring, and any others MUST be interior rings. Theexterior ring bounds the surface, and the interior rings (ifpresent) bound holes within the surface.

线性环定义为:

  • A linear ring is a closed LineString with four or more positions.

LineString 是 https://www.rfc-editor.org/rfc/rfc7946#section-3.1.4 :

  • For type "LineString", the "coordinates" member is an array of two ormore positions.

基本上,多边形定义为一系列闭合的线串,第一个线串定义多边形的边界,随后的线串定义第一个线串中的“孔”。

以这种方式定义,可以创建一个多边形的圆环形状。

这种类型的构造只有在它表示为数组的数组时才有可能,因此是标准。

关于mongodb - 为什么多边形 GeoJSON 对象的坐标存储在数组的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46917361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com