使用PostGIS从现有表格中的经度/纬度坐标制作POINT?


10

我想使用现有表格的经度和纬度列创建一个POINT
这是ST_MakePoint文档的链接

这是我的桌子:

CREATE TABLE sysinst.bio (  
    oid INTEGER PRIMARY KEY,  
    longitude FLOAT,  
    latitude FLOAT,  
        geom GEOMETRY(POINT, 26913)
);

添加几何列:

SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2);

这是我的查询:

UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913);

尽管在QGIS中查看POINTS时错误绘制了点,但没有返回错误。

对于(-97.5959, 21.1922),我收到(-109.4896, 0.0002)

有什么建议么?

如果有更简单的方法,我愿意更有效地执行此操作。


我没有看到查询问题。也许您可以尝试部分地诊断问题-也许尝试消除QGIS的部分,而仅使用postgis的命令行?
BradHards

也许我听不懂,但您似乎正在将以度为单位的经度纬度坐标(-97,21)输入到基于UTM并使用仪表的CRS中。如果您将其声明为SRID 26918,则long / lat值必须在该CRS中。如果经度/纬度值以度为单位,则需要将几何创建为ST_SetSRID(MakePoint(...),4326),然后将图层转换为26913
Micha

@Micha,您应该添加您的评论作为答案。我希望正确的SRID将解决OP问题。包括并举例说明如何添加ST_Transform可能也会有所帮助。
katahdin

Answers:


16

也许我听不懂,但您似乎正在将以度为单位的经度纬度坐标(-97,21)输入到基于UTM并使用仪表的CRS中。如果您将其声明为SRID 26918,则long / lat值必须在该CRS中。如果经度/纬度值是以度为单位,则需要将几何创建为ST_SetSRID(MakePoint(...),4326),然后将图层转换为26913。因此,将其放在一起,如果需要图层在26913中,但您的经度/纬度列以度为单位,使用CRS 4326,则

UPDATE sysinst.bio SET geom = ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326),26913);

谢谢您的帮助。我之前应该考虑过……
扎克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.