首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文档数据库位置查询

文档数据库位置查询
EN

Stack Overflow用户
提问于 2016-02-07 03:44:13
回答 1查看 148关注 0票数 0

我的数据如下所示:

代码语言:javascript
复制
    {
  "id": "a06b42cf-d130-459a-8c89-dab77966747c",
  "propertyBag": {    
    "Fixed": {
      "address": {
        "locationName": "",
        "addressLine1": "1 Microsoft Way",
        "addressLine2": null,
        "city": "Redmond",
        "postalCode": "98052",
        "subDivision": null,
        "state": "WA",
        "country": "USA",
        "location": {
          "type": "Point",
          "coordinates": [
            47.640049,
            -122.129797
          ]
        }
      },
     }
  }
}

现在,当我试图查询类似的内容时

代码语言:javascript
复制
SELECT * FROM V v 
WHERE ST_DISTANCE(v.propertyBag.Fixed.address.location, { 
    "type": "Point", 
    "coordinates": [47.36, -122.19] 
    }) < 100 * 1000

结果总是空的。我想知道有人能不能让我知道可能出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-07 13:20:40

我怀疑你刚刚把逻辑和纬度转换了。因为如果我将文档更改为:

代码语言:javascript
复制
"location": {
  "type": "Point",
  "coordinates": [-122.129797, 47.640049]
}

我运行这个查询:

代码语言:javascript
复制
SELECT 
  ST_DISTANCE(v.propertyBag.Fixed.address.location, { 
    "type": "Point", 
    "coordinates": [-122.19, 47.36] 
  })
FROM v

我得到了结果,但如果我按你的方式运行,我就没有结果。

在GeoJSON中,点是用经度、纬度来指定的,以使其与我们的正常预期(x为东西,y为南北)相匹配。不幸的是,这与显示GEO坐标的传统方法相反。

-122不是纬度的有效值。纬度范围是-90到+90.指定经度-180至+180。

如果您的数据库已经填充,并且不想迁移它,那么您可以在查询期间使用用户定义函数(UDF)来修复它,但是我强烈建议通过这种方法进行迁移,因为地理空间索引无法像现在这样工作,因此查询速度会慢得多。

同样,除非GEO索引不重要,否则我不建议这样做,但是这里有一个执行交换的swapXY UDF:

代码语言:javascript
复制
function(point) { 
    return {
        type: "Point",
        coordinates: [point.coordinates[1], point.coordinates[0]]
    };
}

在这样的查询中使用它:

代码语言:javascript
复制
SELECT * FROM v 
WHERE 
    ST_DISTANCE(
        udf.swapXY(v.propertyBag.Fixed.address.location), 
        udf.swapXY({
          "type": "Point",
          "coordinates": [47.36, -122.19] 
        })
    ) < 100 * 1000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35249478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档