CosmosDB GeoSpatial查询未返回结果问题排查
问题原因及解决方案
核心问题是你搞反了GeoJSON坐标的顺序:
GeoJSON规范中,Point类型的coordinates必须遵循**[经度, 纬度]**的顺序,而你写成了[c.Latitude, c.Longitude],这导致ST_DISTANCE计算的是错误坐标点间的距离,实际这个错误距离远小于1米,所以没有返回结果。
修正后的查询
调换坐标顺序,用[c.Longitude, c.Latitude]构造文档的地理点:
SELECT c.id FROM c WHERE ST_DISTANCE({"type": "Point", "coordinates":[c.Longitude, c.Latitude]}, {"type": "Point", "coordinates":[100.5238, 13.7604]}) > 1
补充说明
- 两个正确坐标点的实际距离约为1700米,远大于1米,修正坐标顺序后查询会返回目标文档。
- 确保你的容器已启用地理空间索引(默认是开启状态,若手动关闭会导致地理空间函数无法正常工作)。
内容的提问来源于stack exchange,提问作者Matt Douhan
相关产品推荐
相关产品推荐

