地理空间数据 - Cosmos DB 中的查询语言(在 Azure 和 Fabric 中)

查询语言具有内置的地理空间功能,用于表示地图上的几何形状或实际位置/多边形。 地理空间数据通常涉及邻近查询。 例如,使用对多个地理空间数据对象的邻近查询回答“查找我当前位置附近的所有零售位置”的问题。

用例

常见的地理空间用例包括但不限于:

  • 地理位置分析,推动特定基于位置的市场营销计划。

  • 基于位置的个性化,适用于零售和医疗保健等行业,以提高用户体验。

  • 物流增强,对于运输等行业来说,优化至关重要。

  • 风险分析,用于保险和金融等行业,以补充其他元数据。

  • 基于邻近感应的警报和通知的情况感知*。

空间数据简介

空间数据描述空间中对象的位置和形状。 在大多数应用程序中,这些点和形状对应于地球上的对象和地理空间数据。

空间数据可用于表示:

  • 人员的位置

  • 兴趣场所

  • 城市或湖的边界

查询语言支持两种空间数据类型: 几何数据类型地理 数据类型。

  • 几何图形类型表示 Euclidean (平面) 坐标系中的数据。 此类型适用于常见的几何任务,例如测量线条、相交多边形和测量点之间的距离。

  • 地理类型表示圆土坐标系中的数据。 此类型适用于常见地理任务,例如确定某个位置是否在特定边界内,以及测量位置之间的距离。

支持的数据类型

查询语言支持使用 GeoJSON 规范表示的索引和查询地理空间点数据。 GeoJSON 数据结构是有效的 JSON 对象,因此可以使用查询语言存储和查询它们,而无需任何专用工具或库。

查询语言支持以下空间数据类型:

  • LineString

  • 多边形

  • MultiPolygon

分数

表示空间中的单个位置。 在地理空间数据中,Point 表示确切的位置,可以是杂货店、展台、汽车或城市的街道地址。 点使用坐标对(经度纬度)以 GeoJSON(和查询语言)表示。

请考虑此示例 GeoJSON 点。 经度是 -122.12826822304672 ,纬度为 47.63980239335718

{
  "type": "Point",
  "coordinates": [
    -122.12826822304672,
    47.63980239335718
  ]
}

小窍门

对于 地理 数据类型,GeoJSON 规范指定经度第一和第二纬度。 与其他映射应用程序中一样,经度和纬度是角度,以度表示。 经度值从 Prime Meridian 测量,介于度和度之间-180,纬度值从赤道测量,介于度和90.0度之间-90.0180.0

对于 几何 数据类型,GeoJSON 规范指定水平轴第一个和垂直轴第二。

空间数据类型可以嵌入到项中,如本示例包含 GeoJSON 数据的设施项所示。

{
  "name": "Headquarters",
  "location": {
    "type": "Point",
    "coordinates": [
      -122.12826822304672,
      47.63980239335718
    ]
  },
  "category": "business-offices"
}

查询语言按 WGS-84 引用系统表示的坐标进行解释。 有关详细信息,请参阅 坐标参考系统

LineStrings

LineStrings 表示一系列空间中的两个或多个点,以及连接它们的线段。 在地理空间数据中,LineString 通常用于表示高速公路或河流。

在此示例中,行字符串用于表示在两个点之间绘制的线条。

{
  "type": "LineString",
  "coordinates": [
    [ 31.8, -5 ],
    [ 31.8, -4.7 ]
  ]
}

多边形

多边形是连接点的边界,形成封闭的 LineString。 多边形通常用于表示湖泊或城市和州等政治管辖区等自然形成。

多边形中的点必须按逆时针顺序指定。 按顺时针顺序指定的多边形表示该区域内的反函数。

在此示例中,通过连接多个点来创建多边形。

{
  "type":"Polygon",
  "coordinates":[[
    [ 31.8, -5 ],
    [ 32, -5 ],
    [ 32, -4.7 ],
    [ 31.8, -4.7 ],
    [ 31.8, -5 ]
  ]]
}

小窍门

GeoJSON 规范要求,对于有效的多边形,提供的最后一个坐标对应与第一个坐标对相同,以创建封闭的形状。

MultiPolygons

MultiPolygon 是零个或多个多边形的数组。 MultiPolygon 不能重叠两侧或具有任何公用区域。 他们可以触摸一个或多个点。

下面是 MultiPolygon 的示例。

{
    "type":"MultiPolygon",
    "coordinates":[
      [[
          [52.0, 12.0],
          [53.0, 12.0],
          [53.0, 13.0],
          [52.0, 13.0],
          [52.0, 12.0]
      ]],
      [[
          [50.0, 0.0],
          [51.0, 0.0],
          [51.0, 5.0],
          [50.0, 5.0],
          [50.0, 0.0]
      ]]
    ]
}

坐标参考系统

由于地球的形状不规则,地理空间数据的坐标以许多坐标参考系统(CRS)表示。 每个 CRS 都有自己的参考帧和度量单位。 例如,“英国国家电网”是一个参考系统,对于英国而言是准确的,但不能在它之外。

当今最常用的 CRS 是世界地理系统 WGS-84。 GPS 设备和许多地图服务(包括 Google Maps 和必应地图 API)都使用 WGS-84。 查询语言仅支持使用 WGS-84 CRS 对地理空间数据编制索引和查询。