【问题标题】:Sequelize and PostGIS geometry column not returning proper JSONSequelize 和 PostGIS 几何列未返回正确的 JSON
【发布时间】:2019-10-07 12:32:00
【问题描述】:

我有一个运行 PostGIS 的 Postgres 数据库。我正在使用 Node.js 和 Sequelize 来处理数据库中的数据。在我的一张桌子上,我有一个返回奇怪结果的几何列。

通常,当我使用 sequelize 查询几何列时,我会得到以下信息:

{ 
  type: 'Point',
  coordinates: [ 33.48051135141372, -111.92908778058047 ] 
}

但由于某种原因,当我记录此列的结果时,我得到以下字符串:

01010000004D20CF54F80241409C8C9B8BAE9E5DC0

在其他表上,我得到了预期的结果。但是由于某些原因,对于这个特定的表/列,我无法从返回的数据中解析纬度和经度。

谁能解释为什么我会得到这个而不是上面的普通 JSON?

【问题讨论】:

    标签: node.js postgresql sequelize.js postgis


    【解决方案1】:

    坐标必须先表示为longitude,然后是latitude

    您的输入表示为lat-long,因此超出范围。尝试交换坐标。

    直接使用postgis,可以显示几何的文字表示:

    select st_asText('01010000004D20CF54F80241409C8C9B8BAE9E5DC0');
                    st_astext
    ------------------------------------------
     POINT(34.023203469406 -118.479403402237)
    

    这确实确认坐标的顺序错误。

    【讨论】:

    • 现在遇到了同样的问题,刚刚使用此调用确认我的坐标是正确的。 Sequelize 仅从我的数据库中返回这个地址作为地理字符串而不是 Point 对象。与这个唯一的区别是我使用 findOrCreate 来创建它而不是仅仅创建(但我使用了与我在 defaults 字段的创建调用中所做的相同的值)
    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 2013-02-16
    • 2019-11-28
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多