空间查询 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)
祝你好运!
我将多边形城市和多边形数据导入到 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)
祝你好运!