Путаница PostGis ST_Distance_Spheroid

Я новичок в POstGis, поэтому этот вопрос может показаться простым, но я действительно застрял. Итак, у меня есть таблица, в которой есть 4 важные строки: startLon, startLat, endLon, endLat, которые имеют тип двойной точности.

Первая строка содержит координаты (эти две точки находятся на расстоянии 7 м друг от друга):

StartLon: 103.776047
StartLat: 1.292149
EndLon:  103.776070
EndLat: 1.292212

Когда я пытаюсь рассчитать расстояние между двумя точками в каждой строке, используя:

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

Все координаты найдены с помощью GoogleMap, поэтому SRID должен быть 4326. Пожалуйста, помогите мне, спасибо :)


person Thomas Dang    schedule 08.07.2014    source источник


Ответы (1)


Просто поймите, что результат 2,872 ... не является результатом первой строки. Если я не закажу результат с каким-либо ключом, например id, результат будет случайным. Узнайте об этом от хорошего коллеги :) Надеюсь, это поможет другим людям, которые только начинают работать с PostGIS, как я.

person Thomas Dang    schedule 08.07.2014