Расчет длины линейного объекта для нескольких таблиц
Добавлено: 06 сен 2012, 12:01
PostGIS база содержит несколько таблиц ("D1_r", "D2_r"). Необходимо получить результат длины линий как для каждой таблицы так и общий результат длины.
При использовании запроса в SQL window/DB Manager:
для каждой таблицы получаю результат 2267 km (10453 rows in table) и 220 km (834 rows in table) за 0.1 сек.
При запросе (длина для каждой таблицы)
я получил результат 1891450 km и 2305105 km за 183 сек.
При запросе (длина для таблицы_1 из при запросе из двух таблиц)
я получил результат 1891450 km за 100 сек.
При запросе (суммарная длина для двух таблиц)
получил результат 4196555 km (1891450 km + 2305105 km) за 190 сек.
Правильный результат должен быть 2267 km (10453 rows in table) и 220 km (834 rows in table).
Какой должен быть правильный запрос для получения правильного результата?
При использовании запроса в SQL window/DB Manager:
Код: Выделить всё
SELECT sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads FROM "D1_r";
При запросе (длина для каждой таблицы)
Код: Выделить всё
SELECT
sum(ST_Length_Spheroid("D1_r".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads1, sum(ST_Length_Spheroid("D2_r".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads2
FROM "D1_r","D2_r";
При запросе (длина для таблицы_1 из при запросе из двух таблиц)
Код: Выделить всё
SELECT sum(ST_Length_Spheroid("D1_r".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads1 FROM "D1_r","D2_r";
При запросе (суммарная длина для двух таблиц)
Код: Выделить всё
SELECT
(sum(ST_Length_Spheroid("D1_r".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000)+
( sum(ST_Length_Spheroid("D2_r".the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000) AS total
FROM "D1_r", "D2_r";
Правильный результат должен быть 2267 km (10453 rows in table) и 220 km (834 rows in table).
Какой должен быть правильный запрос для получения правильного результата?