POSTGIS - 从另一个表更新表

时间:2016-08-15 14:41:39

标签: postgresql postgis

我创建了一个多边形表(poly),其名称和Points(使用多边形值)

"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表中的列(zonename)

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

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

有人可以帮我在POSTGIS中编写UPDATE查询,以便为更多的lat,lon值执行此操作吗?

1 个答案:

答案 0 :(得分:2)

UPDATE latlon
SET zonename = zone.name
FROM zone
WHERE ST_Contains(zone.polygon, ST_SetSRID(ST_MakePoint(lon, lat), 4326));

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

相关问题