Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PostGis ST_距离_球体混淆_Postgresql_Distance_Postgis_Map Projections - Fatal编程技术网

Postgresql PostGis ST_距离_球体混淆

Postgresql PostGis ST_距离_球体混淆,postgresql,distance,postgis,map-projections,Postgresql,Distance,Postgis,Map Projections,我是POstGis新手,所以这个问题可能看起来很简单,但我真的被卡住了。 所以我有一个表,其中有4个重要的行:starton,startat,endLon,endLat,它们都是双精度类型 第一行保存坐标(这两个点相距7m): 当我尝试使用以下公式计算每行2个点之间的距离时: SELECT ST_Distance_Spheroid( ST_GeomFromText('POINT(' || StartLon || ' ' || Startlat || ')',432

我是POstGis新手,所以这个问题可能看起来很简单,但我真的被卡住了。 所以我有一个表,其中有4个重要的行:starton,startat,endLon,endLat,它们都是双精度类型

第一行保存坐标(这两个点相距7m):

当我尝试使用以下公式计算每行2个点之间的距离时:

SELECT ST_Distance_Spheroid(
                ST_GeomFromText('POINT(' || StartLon || ' ' || Startlat || ')',4326),
                ST_GeomFromText('POINT(' || EndLon || ' ' || Endlat || ')',4326),
                'SPHEROID["WGS 84",6378137,298.257223563]')
FROM i3_building.floordata;
结果是:

2.87254682929478
这是不对的

但当我尝试手动操作时:

SELECT ST_Distance_Spheroid(
                ST_SetSRID(st_makepoint(103.776047, 1.292149),4326),
                ST_SetSRID(st_makepoint(103.77607, 1.292212),4326),
                'SPHEROID["WGS 84",6378137,298.257223563]');
给出的结果是正确的:

7.42160512978493
所有的坐标都是用谷歌地图找到的,所以SRID应该是4326。
请帮帮我,谢谢:)

只要意识到结果2.872。。。不是第一行的结果 如果我没有使用类似于键的id对结果进行排序,那么结果将是随机的。从一位好同事那里学到这一点:)希望它能帮助像我这样的PostGIS初学者

7.42160512978493