php - Postgis - st_distance

标签 php postgis

我在 postgis 中遇到 st_distance 函数的问题。它返回错误的结果——对于小距离,误差不大——10 米,也许 20 米,但对于更大的距离,我的结果与例如谷歌地图结果之间的差异太大——700 米,最高 2 公里或更高。我正在使用 srid = 4326。第二件事 - 也许这就是问题 - 说我有 4 公里远的地方。 Postgis 说距离大约 0.0417 {{some_units}}。现在我只是将结果乘以 100 并得到或多或少准确的结果。我可以向这个函数传递一些参数,表示“以公里/米为单位的返回值”吗?

附言。 postgres版本是9.0.1

最佳答案

您应该使用地理数据类型。

使用几何数据类型使用的函数,您将获得与存储数据相同的单位。在您的情况下为度数。

度不能以任何简单的方式转换为米。要从未投影的引用系统获得以米为单位的结果,计算需要在围绕地球地壳的“大圆”上进行计算。您正在使用的计算只是使用毕达哥拉斯定理来计算平面上的距离。

因此,PostGIS 不会给出错误的结果。 您可以转向基于米的空间引用系统,具体取决于您的数据是否覆盖了那么大的区域,因此地球的四舍五入是一个问题,如果是这样,您应该改用地理数据类型并使用 srid 4326。

HTH

尼克拉斯

关于php - Postgis - st_distance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290376/

相关文章:

javascript - 图片加载像 google image PHP

spring - 使用 postgresql 和 postgis 扩展的飞路迁移

postgresql - 如何将几何数据从一个表中取出到另一个表中?

带有 postgis 的 Django2 给出了不可排序的类型 : F() < int()

python - 通过 Geodjango 中的几何交集关联两个模型

php - PHP 中的正则表达式 (preg_match) 模式

php - 未插入自动递增 ID

PHP将服务器上的现有文件移动到数据库

php - 是什么导致了这个 modx 错误?

django - 涉及具有几何图形但不查询几何图形本身的表的查询是否比不查询几何图形的表花费更长的时间?