空间查询 Postgis

Spatial Query Postgis

我将多边形城市和多边形数据导入到 PostgreSQL、PostGIS 中。这些与城市相交。我需要做的第一件事是将城市 table 的 id 打印到另一个城市 table,但是在执行此操作时,它需要获取多边形所在城市的 id。我尝试了一些功能来执行此操作,但出现错误。你能帮我设计一下SQL命令行吗?

update maden_polygon set objectid = maden_polygon.ilce_id
from (SELECT maden_polygon.ilce_id as id ,ankara_ilce.objectid as ilce_id
FROM maden_polygon , ankara_ilce
WHERE st_intersects(maden_polygon.geom, ankara_ilce.geom)) as maden_polygon 
where maden_polygon.ilce_id = anakara_ilce.object_id

(错误:table 多次指定名称“maden_polygon”)

我想做的是将ankara_ilcetable中的objectid列打印到mine_polygonilce_idtable中。 在这样做的同时, 写object_id哪个矿在哪个县境内

SELECT 
maden_polygon.ilce_id as id ,
ankara_ilce.objectid as ad ,
ankara_ilce.adi as adi
from maden_polygon , ankara_ilce 
where St_intersects(ankara_ilce.geom , maden_polygon.geom  )  as sorgu
where maden_polygon.id = sorgu.id ;

错误:“as”处或附近的语法错误 第 6 行:...ntersects(ankara_ilce.geom , maden_polygon.geom ) 作为 sorgu

我认为查询很简单:

UPDATE maden_polygon set objectid = ilce_id
FROM  ankara_ilce
WHERE st_intersects(maden_polygon.geom, ankara_ilce.geom)

但是 - 请注意,如果您的多边形重叠,st_intersects 每个 maden_polygon 可以 return 多个记录,这可能会给您带来不一致的结果。您可以尝试使用 st_contains 代替(请注意某些记录可能不会以这种方式更新)。或者,您可以匹配一个多边形的质心,例如

UPDATE maden_polygon set objectid = ilce_id
    FROM  ankara_ilce
    WHERE st_within(st_centroid(maden_polygon.geom), ankara_ilce.geom)

祝你好运!