简单的ST_WITHIN查询不返回结果

时间:2019-02-05 05:03:18

标签: azure-cosmosdb geospatial

我正在努力了解Cosmos DB的ST_WITHIN函数。我从一个相当复杂的东西开始,但是不得不将其缩小到我确定为 应该可以但不起作用的地方。

考虑:

SELECT ST_WITHIN({ 'type': 'Point', 'coordinates': [ 0, 0 ] }, {'type':'Polygon','coordinates':[[[-150, -50], [-150, 50], [150, 50]]]}) FROM c

为什么这会为c中的每个记录返回一个空对象?也就是说,对于c中的3个项目,结果如下:

[
    {},
    {},
    {}
]

至少,我希望它为每个对象返回false而不是什么都不会。但是实际上在这种情况下,我希望它返回true,因为提供的点在多边形内。

我希望我做的事情很明显是错误的,但是我不知道该怎么做。我已经尝试过启用集合上的PointLinePolygon索引无济于事。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

好的,我转载了您的问题,请参阅official document中的声明。

  

与不匹配类型在Azure Cosmos DB查询中的工作方式类似,如果   参数中指定的位置值格式错误或无效,   然后评估为未定义,评估文件为   从查询结果中跳过。如果查询没有返回结果,请运行   ST_ISVALIDDETAILED调试为什么空间类型无效。

然后您可以使用Each ring of a polygon must contain at least four points方法检查ST_ISVALIDDETAILED的原因。

enter image description here