【问题标题】:POSTGIS - update table from another tablePOSTGIS - 从另一个表更新表
【发布时间】:2016-12-21 18:57:03
【问题描述】:

我创建了一个带有名称和点的多边形表 (poly)(使用多边形值)

"Z";"010300000001000000050000008D67A2989451494092D9774AA9990840D757B77796514940469AC495BD99084092772ABA97514940A7A9214E80990840131D769D95514940E65E4E736C9908408D67A2989451494092D9774AA9990840"

"A";"010300000001000000050000006260C20D9D5149402CC94B48B5990840862238899C514940FCF785FCD89908402A183A1B97514940F2295B7FA69908401893A3A597514940CF447D37829908406260C20D9D5149402CC94B48B5990840"

我有另一个表(latlon),其中包含超过百万条记录的 lat 和 lot 列

 lat            lon 
50.6375524  3.075079145
50.6374046  3.075292678
50.6373605  3.075188391
50.6373628  3.075185017

我必须借助“poly”表中的点来更新 latlon 表中的列(区域名称)

以下选择语句为一条记录提供正确的输出。

SELECT name FROM zone WHERE ST_Contains(polygon, ST_GeomFromText('POINT(50.6375524  3.075079145)')); 

有人可以帮我在 POSTGIS 中编写一个 UPDATE 查询以获取更多的纬度、经度值吗?

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:
    UPDATE latlon
    SET zonename = zone.name
    FROM zone
    WHERE ST_Contains(zone.polygon, ST_SetSRID(ST_MakePoint(lon, lat), 4326));
    

    这假设您的坐标采用 WGS84(即原始 GPS 坐标)。你的多边形应该在同一个坐标系中;如果不是,请将 SRID 值 4326 更改为多边形使用的任何值。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多