首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择“最强”相交区域

选择“最强”相交区域
EN

Stack Overflow用户
提问于 2021-11-18 10:40:06
回答 1查看 43关注 0票数 1

我有一个物化视图,它是使用两个多边形层的st_intersect进行空间连接的结果。Table1和table2,table1的功能可以为table2的几个多边形截取,这就是我创建mview的方式:

代码语言:javascript
复制
SELECT g.field1,
    att.ogc_fid,
    st_intersection(g.geom, att.geom) AS intersect_geom,
    st_area(g.geom) AS geom_area,
    st_area(st_intersection(g.geom, att.geom)) AS intersect_area
   FROM table1 g
     JOIN table2 att ON g.geom && att.geom;


field1 | ogc_fid | intersect_geom| geom_area | intersect_area
aa12345    1              123123       123131    1313123414
aa12345    3               1              1       1
bb12345    2             4124141       13141      14415151
bb12345    1           1243141414     1231313     13131323

从这个mview中,我只想选择最强的相交区域,并连接到来自table2的描述。我已经尝试了下面的代码:

代码语言:javascript
复制
select a.*, b.desc
from table1 a
left join lateral
(
select desc
 table2
where table2.ogc_fid= table1.ogc_fid
order by (intersect_area/geom_area) DESC NULLS LAST
limit 1
) b

field1 | ogc_fid | intersect_geom| geom_area | intersect_area | desc
aa12345    1              123123       123131    1313123414      desc for 1
bb12345    2             4124141       13141      14415151       desc for 2

但这里的结果并不是预期的。我经历了其他threads,但当我试图只获得一个结果(最强的),并创建一个具有最强交集的表时,我遇到了困难,因此对于表1中的一个特征,我有最强的交集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 13:13:43

如果我没理解错的话,你已经完成了最难的部分。您只需要从视图中选择每个字段的一条记录,并使用table2连接...所以试试这个:

代码语言:javascript
复制
SELECT DISTINCT ON (field1) field1, m.ogc_fid, b.desc FROM
mview AS m
INNER JOIN table2 AS b ON b.ogc_fid = m.ogc_fid
ORDER BY field1, (intersect_area/geom_area) DESC
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70018382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档