postgresql ST_DBwithin函数在尝试连接两个表时给出相同的值

lmyy7pcs  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(172)

我尝试根据两个表的几何形状连接它们,并获得相同的列值:

select poly.block_code, ST_X(points.geom),  ST_X(points.geom)
from public.us_blocks10_coordinates poly
join public.usgs_2 points
on St_DWithin(poly.geom, ST_Transform(ST_SetSRID(points.geom, 102008), 4269), 0) 
limit 10

q1qsirdb

q1qsirdb1#

首先,您要打印两次st_x,因此预期值会相同。
第二,我们可以看到,当打印st_x(point.geom)时,坐标看起来确实像是度。但是,在st_dwithin部分,有一个语句ST_Transform(ST_SetSRID(points.geom, 102008), 4269),它意味着点位于CRS 102008中,其单位是米,然后您可以转换为4269两个语句不兼容,看起来set_srid语句是错误的,因此st_transform的结果也是错误的,st_dwithin的结果也是错误的,最后得到的是,位于错误点上的多边形的ID,在-96;40附近,投影center coordinate
也许你只需要St_DWithin(poly.geom, ST_SetSRID(points.geom,4269), 0)
请注意,此处可以使用st_intersects而不是st_dwithin

相关问题