几何类型从数据库读取为字符串

时间:2019-06-23 05:45:44

标签: postgresql geometry sequelize.js

我有一个带有几何字段的以下模型:

const soiSchema = {
    siteId: {
        type: DataTypes.BIGINT,
        allowNull: false,
        primaryKey: true,
        field: 'site_id'
    },
    soiId: {
        type: DataTypes.BIGINT,
        allowNull: false,
        field: 'soi_id'
    },
    geoPoint: {
        type: DataTypes.GEOMETRY('POINT'),
        allowNull: false,
        field : 'geopoint'
    }
}

我在带有以下选项的原始查询中使用此模型:

 await sequelize.query(query,{
        model : Soi,
        raw : true,
        bind : params,
        mapToModel: true
    })

我的问题:查询postgres数据库时,我收到的地理位置是字符串'0101000020E610000000A172ECBF844140CCC38A7B66D93F40'而不是点。 db中的字段确实是几何类型,但sequelize将其读取为字符串。 任何人都有解决方法? 我尝试了许多不同的续集版本,但并没有帮助解决问题 谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用适当的ST_function读取几何数据类型:

SELECT ST_AsText(geoPoint) FROM your_table

4326 projection

您可以通过

获得lng,lt
SELECT ST_X(geoPoint), ST_Y(geoPoint), ST_AsText(geoPoint) 
FROM your_table;