我尝试根据两个表的几何形状连接它们,并获得相同的列值:
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
我尝试根据两个表的几何形状连接它们,并获得相同的列值:
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
1条答案
按热度按时间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