多边形PostGIS上的ST_Intersect:JOIN / ON的参数必须为布尔型,而不是记录型

时间:2019-12-02 10:27:20

标签: sql postgresql join postgis

我在PostGIS中使用此代码来内部联接两个多边形文件。

我的桌子:

table p : vietnamgis.vnm_adm3

ID geom        ADM1       .... ....
1  01600000..   tan bin
2  01600000..   san 
3  01600000..   dan


Table b : vietnamgis.cadastrewfg

gid  geom        description  ... ...
1    01600000..   house
2    01600000..   commercial
3    01600000..   house

我的代码

DROP TABLE IF EXISTS public.overlap;
CREATE TABLE public.overlap AS
SELECT b.geom As bgeom, p.geom As pgeom, 
         ST_Intersection(b.geom, p.geom) As intersect_bp
    FROM vietnamgis.cadastrewfg b INNER JOIN vietnamgis.vnm_adm3 p ON (b,p)
    WHERE ST_Overlaps(b.geom, p.geom)
    LIMIT 1;

我确实在CREATE EXTENSION postgis;之前创建了

SELECT PostGIS_Version();
3.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
ERROR:  argument of JOIN/ON must be type boolean, not type record
LINE 5: ...mgis.cadastrewfg b INNER JOIN vietnamgis.vnm_adm3 p ON (b,p)
                                                              ^

这是怎么回事,如何解决加入多边形文件的问题?

1 个答案:

答案 0 :(得分:1)

您的join子句似乎是错误的:您应该比较相关的键列,而不是表别名(bp),例如:

FROM vietnamgis.cadastrewfg b 
INNER JOIN vietnamgis.vnm_adm3 p ON b.you_b_col_ley = p.you_p_col_key