DocumentDB教程
DocumentDB SQL

SQL 空间函数

DocumentDB 还支持用于地理空间查询的开放地理空间联盟 (OGC) 内置函数。以下是支持的内置空间函数列表。
S.No. 功能和说明
1
ST_DISTANCE (point_expr, point_expr)
返回两个 GeoJSON 点表达式之间的距离。
2
ST_WITHIN (point_expr,polygon_expr)
返回一个布尔表达式,指示第一个参数中指定的 GeoJSON 点是否在第二个参数中的 GeoJSON 多边形内。
3
ST_ISVALID
返回一个布尔值,指示指定的 GeoJSON 点或多边形表达式是否有效。
4
ST_ISVALIDDETAILED
如果指定的 GeoJSON 点或多边形表达式有效,则返回包含布尔值的 JSON 值,如果无效,则另外以字符串形式返回原因价值。
在这个例子中,我们将使用以下两个大学的文档,其中包含坐标形式的位置。
以下是 凯斯大学文档
案例大学文档
{  
   "id": "case-university", 
   "name": "CASE: Center for Advanced Studies In Engineering", 
   "city": "Islamabad",
  
   "location": { 
      "type": "Point", 
      "coordinates": [ 
         33.7194136, 
        -73.0964862 
      ] 
   } 
}
以下是 Nust 大学文档
Nust 大学文档
{ 
   "id": "nust", 
   "name": "National University of Sciences and Technology", 
   "city": "Islamabad", 
  
   "location": { 
      "type": "Point", 
      "coordinates": [ 
         33.6455715, 
         72.9903447 
      ] 
   } 
}
让我们看一下 ST_DISTANCE 的另一个例子。
St 距离示例
以下是返回指定位置 30 公里范围内的大学文档的 id 和名称的查询。
SELECT u.id, u.name  
FROM Universities u 
WHERE ST_DISTANCE(u.location, {'type': 'Point', 'coordinates':[33.7,-73.0]}) < 30000
执行上述查询时,会产生以下输出。
[ 
   { 
      "id": "case-university", 
      "name": "CASE: Center for Advanced Studies In Engineering" 
   } 
]
让我们再看一个例子。
St 距离示例
以下是包含 ST_ISVALID 和 ST_ISVALIDDETAILED 的查询。
SELECT  
   ST_ISVALID({ "type": "Point", "coordinates": [32.9,-132.8] }) AS Point1,
   
   ST_ISVALIDDETAILED({ "type": "Point", "coordinates": [31.9,-132.8] }) AS Point2
执行上述查询时,会产生以下输出。
[ 
   {
      "Point1": false, 
      "Point2": { 
         "valid": false, 
         "reason": "Latitude values must be between-90 and 90 degrees." 
      } 
   }
]
上面的输出显示ST_ISVALIDDETAILED也返回了这个点无效的原因,但是ST_ISVALID只返回了布尔值。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4