我在postgis中的st_distance函数有问题。它返回错误的结果-对于较小的距离,误差不大- 10米,也许20米,但对于较大的距离,我的结果与例如谷歌地图结果之间的差异太大- 700米到2公里甚至更高。我使用srid = 4326。第二件事-也许这就是问题所在-假设我有一个4公里外的地方。Postgis说还有大约0.0417 {{some_units}}。现在我只是将结果乘以100,得到或多或少的准确结果。我能不能给这个函数传递一些参数,说“以公里/米为单位的返回值”?
ps。postgres版本为9.0.1
发布于 2011-06-09 19:25:14
您应该使用地理数据类型。
使用geometry数据类型使用的函数,您将得到与存储数据相同的单位。在你的情况下,学位。
度不能以任何简单的方式转换为米。为了从未投影的参考系中获得以米为单位的结果,计算需要计算围绕地球球体的“大圆”。您正在使用的计算只是使用毕达哥拉斯定理来计算平面上的距离。
因此,PostGIS不会给出错误的结果。您可以根据您的数据是否覆盖那么大的区域而转移到基于米的空间参考系统,因此地球的舍入是一个问题,如果是这样的话,您应该使用地理数据类型,并使用srid 4326。
HTH
尼克拉斯
发布于 2013-07-08 22:59:13
你应该使用你的投影,目前它是以度为单位的,如果你想在米中使用ST_transform,就像这样:
ST_Distance(st_transform(ST_GeometryFromText('POINT(longitude latitude)',4326),900913),st_transform(point,900913)) 发布于 2014-03-18 21:10:23
您应该按照cyril所说的做,并转换您的几何图形,以使用以米为单位的srid,例如900913。将你现在得到的度数(使用srid=4326)乘以100不是一种可行的方法。
根据您所在的位置,可能存在更适合您所在位置的本地srid (以米为单位) --例如,瑞士的SRID为21781。也检查一下:在美国地区的一些srids的http://gothos.info/tag/coordinate-systems/。
https://stackoverflow.com/questions/6290376
复制相似问题