我在postgis中的st_distance函数遇到问题.它返回错误结果-对于较小的距离,误差不大-10,可能是20米,但是对于较大的距离,我的结果与例如Google Maps结果之间的差异太大-长达2公里或更高的700米.我正在使用srid =4326.第二件事-也许是问题所在-说我到了4公里外的地方. Postgis表示,距离约0.0417 {{some_units}}.现在,我只是将结果乘以100,即可获得或多或少的准确结果.我可以向该函数传递一些参数,说“以公里/米为单位的返回值”吗?
ps. postgres版本是9.0.1
解决方法:
您应该使用地理数据类型.
使用geometry数据类型使用的功能,您将获得与存储数据相同的单位.
度数不能以任何简单的方式转换为米.为了从未投影的参考系统获得以米为单位的结果,计算需要在绕地球螺旋线的“大圆”上进行计算.您使用的计算只是使用毕达哥拉斯定理来计算平面上的距离.
因此,PostGIS不会给出错误的结果.
您可以转移到基于米的空间参考系统,具体取决于您的数据是否覆盖了较大的区域,因此地球的取整是个问题.如果是,则应改用geographic数据类型并使用srid 4326.
高温超导
尼克拉斯