我创建了一个多边形表(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值执行此操作吗?
答案 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更改为您的多边形使用的任何值。