У меня есть база данных PostGIS с географической колонкой. Я хотел бы иметь возможность использовать PHP для ВЫБОРА географии, чтобы затем я мог запустить другой запрос, используя ST_Distance, чтобы получить расстояние между точками. Однако когда я бегу
SELECT geog from locations;
Я получаю странное значение 6 вместо вывода HEX (что-то вроде 0101000020E6100000C442AD69DEAD5740575BB1BFEC6E3D40 - это то, что я ожидал). Когда я использую тот же запрос в phpPgAdmin, я получаю ожидаемый результат, но не из моего скрипта PHP :(
Буду очень признателен за любую помощь :)
Спасибо,
Эльша
ИЗМЕНИТЬ
$locations_result = @pg_query($DBConnect, "SELECT geog from locations;");
if (!$locations_result) {
echo "An error occurred upon getting data from the locations table.\n";
exit;
}
$i = 0;
while ($locations_arr = pg_fetch_row($locations_result)) {
$locations['location'][$i] = $locations_arr[0];
echo $locations['location'][$i];
$i++;
}
EDIT2 Итак, теперь я пытаюсь выбрать географию прямо в функции ST_Distance, чтобы она могла напрямую получить результат географии, что-то вроде:
SELECT ST_Distance(geog_a, geog_b) FROM(SELECT geog AS geog_a FROM location WHERE id=123 UNION SELECT geog AS geog_b FROM location WHERE id=345);
Но мой синтаксис SQL неверен, и мне еще предстоит выяснить, как получить желаемый результат. UNION помещает эти значения в один столбец, что у меня уже есть. Вместо этого мне нужно что-то вроде:
geog_a |geog_b
----------------
hdsklgh|shfksh
geog::geography
? - person DrColossos   schedule 01.02.2011SELECT geog::geography FROM locations;
Тогда да, я только что сделал и все равно получил 6 :( - person elshae   schedule 01.02.2011