【问题标题】:How to read PostGIS point in JavaScript?如何在 JavaScript 中读取 PostGIS 点?
【发布时间】:2016-10-30 13:50:30
【问题描述】:

我目前正在使用 JavaScript 在客户端获取 PostGIS 点,有没有办法使用 JavaScript 将这些点转换为普通的 x、y 坐标?

这是我目前获得积分的方式:

0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140

【问题讨论】:

标签: javascript postgis


【解决方案1】:

您尚未发布实际查询,但如果您使用 ST_AsText() 包装 SELECT 语句中引用的几何图形,那么它将以称为 Well Known Text 的人类可读格式返回几何图形。 例如

SELECT my_id, ST_AsText(my_geom) FROM my_table;
-- returns POINT(31.9497 35.9328) using the geometry from your question.   

这是相当普通的解析练习。或者,如果您只想要原始的 lon / lat(或东/北),那么像这样构造您的查询:

SELECT ST_X(my_geom), ST_Y(my_geom) FROM my_table;
-- returns: 31.9497, 35.9328 using the geometry from your question

请注意,如有必要,您还可以将几何图形转换为您需要使用的坐标系。例如,如果几何图形以常规 lon/lat 格式 (EPSG code 4326) 存储在数据库中,并且您需要在线地图中通常使用的伪墨卡托投影 (EPSG code 3857) 中检索它,那么您需要这样做:

-- note the explicit ::geometry cast
SELECT my_id, ST_AsText(ST_Transform(my_geom::geometry, 3857)) FROM my_table;

为了好玩,您可以在启用 PostGIS 的 Postgres SQL 查询窗口中尝试此操作(使用您问题中的几何):

以 WKT 的形式返回:

SELECT  ST_AsText('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140');
-- returns: POINT(31.9497 35.9328)

作为伪墨卡托返回:

SELECT  ST_AsText(ST_Transform('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'::geometry, 3857))
-- returns: POINT(3556624.33499785 4291378.69099916)

返回为 X,Y:

SELECT  ST_X('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140'),
    ST_Y('0101000020E6100000DE02098A1FF33F40BADA8AFD65F74140');
-- returns: 31.9497, 35.9328

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2011-10-01
    • 1970-01-01
    • 2021-05-04
    • 2015-11-10
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多