微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将缓冲区添加到现有表和空间连接

如何解决将缓冲区添加到现有表和空间连接

我有一个包含多个表的空间数据库,我为带有点的表创建了一个缓冲区,并希望将缓冲区添加到现有表中。并且想要做一个空间连接,比如使用这个缓冲区和另一个带有点的表来计算每个缓冲区内的点数,并将其添加为现有缓冲区表中的一个新列。我想不通。

SELECT ST_Buffer(geom::geography,100) FROM public.operation;
UPDATE operations SET buffer = ST_Buffer(geom::geography,100)::geometry;

FROM "Supermarket" AS pts,"geom" as ST_Buffer
WHERE ST_Contains( the_geom,pts.location)

解决方法

首先添加一个带有 AddGeometryColumn.. 的新几何列

SELECT AddGeometryColumn ('public','operations','buffer',4326,'POLYGON',2);

.. 然后在新列中插入缓冲区并进行更新

UPDATE operations SET buffer = ST_Buffer(geom::geography,100)::geometry;

编辑 1:向表“操作”添加一个新列,并用另一个表中与新缓冲区空间重叠的点数填充它:

ALTER TABLE operations ADD COLUMN pts int;

UPDATE operations o 
SET pts = (SELECT count(*) FROM supermarket s
           WHERE ST_Contains(o.buffer,s.geom));

编辑 2(见评论):

CREATE INDEX idx_operation_geom ON operations USING gist (geom);
CREATE INDEX idx_supermarket_geom ON supermarket USING gist (geom);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。