Compartir a través de

ST_DISTANCE(NoSQL 查询)

适用范围: NoSQL

返回两个 GeoJSON Point、Polygon、MultiPolygon 或 LineString 之间的距离。

注意

有关详细信息,请参阅 Geospatial 和 GeoJSON 位置数据

语法

ST_DISTANCE(<spatial_expr_1>, <spatial_expr_2>)  

参数

说明
spatial_expr_1 任何有效的 GeoJSON PointPolygonMultiPolygonLineString 表达式。
spatial_expr_2 任何有效的 GeoJSON PointPolygonMultiPolygonLineString 表达式。

返回类型

返回一个数值表达式,它用于枚举两个表达式之间的距离。

示例

以下示例假定存在一个包含两个项的容器。

[
  {
    "name": "Headquarters",
    "location": {
      "type": "Point",
      "coordinates": [
        -122.12826822304672,
        47.63980239335718
      ]
    },
    "category": "business-offices"
  },
  {
    "name": "Research and development",
    "location": {
      "type": "Point",
      "coordinates": [
        -96.84368664765994,
        46.81297794314663
      ]
    },
    "category": "business-offices"
  }
]

该示例演示如何使用函数作为筛选器来返回指定距离内的项。

SELECT
    o.name,
    ST_DISTANCE(o.location, {
        "type": "Point", 
        "coordinates": [-122.11758113953535, 47.66901087006131]
    }) / 1000 AS distanceKilometers
FROM
    offices o
WHERE
    o.category = "business-offices"
[
  {
    "name": "Headquarters",
    "distanceKilometers": 3.345269817267368
  },
  {
    "name": "Research and development",
    "distanceKilometers": 1907.438421299902
  }
]

注解

  • 对于默认参考系统,结果以米为单位表示。
  • 此函数将从地理空间索引中受益,但包含聚合的查询除外。
  • GeoJSON 规范要求多边形内的点按逆时针顺序指定。 以顺时针顺序指定的多边形表示其中的区域倒转。