求教 关于postgis的函数 st_distance_sphere()与st_dwithin()的误差
给出某个点A以及某固定长度radius,想要得到在以该固定长度为半径的圆内,共存在多少个点。似乎使用下面两个函数都能得到结果,只是实际使用之后,发现两个函数得到的结果有一定程度的误差。
希望对postgis有研究的朋友能给一些提示或建议。谢谢!
select count(t1.A) from table t1, table t2
where st_distance_sphere(t1.A, t2.A) <= radius
and t1.no = x
(t1.A为中心。)
select count(t1.A) from table t1, table t2
where ST_DWithin(t2.A, t1.A, radius)
(t1.A为中心。)
其中,表内的地理对象A是POINT类型的,以毫秒为单位,而半径radius以米为单位。 --------------------编程问答-------------------- 补充一下,由于使用A以毫秒为单位,所以曾经在使用DWithin()函数的时候尝试把半径变换为毫秒。
得到的结果已经很接近了,但是很遗憾的是,还是没能得到完全一致的结果。
select count(t1.A) from table t1, table t2
where ST_DWithin(t2.A, t1.A, radius*1/1852*1/60*3600000 )
补充:企业软件 , 地理信息系统