php-Postgis-st_distance

我在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.

高温超导

尼克拉斯

上一篇:搭建可离线的精美矢量切片地图服务


下一篇:迁移时出现django错误:“没有与引用表的给定键匹配的唯一约束