Разница в расчете длины Postgis и QIGS? - PullRequest
0 голосов
/ 15 января 2019

Я только начинаю изучать PostgreSQL и PostGIS, в частности, и пытаюсь следовать введению Penn State University в Spatial Database Management, когда я решил немного поэкспериментировать с основными данными, которые я получил. После расчета длины некоторых данных LINESTRING я хотел проверить результаты с помощью QGIS, и вот тут-то и началось веселье.

Здесь вы можете найти SQL-операторы, которые я следовал и немного изменил.

https://www.e -education.psu.edu /atialdb / node / 1960

При сравнении результатов в таблице атрибутов я был сбит с толку, потому что результаты отличались при использовании функции $ Length калькулятора ST_Length и QGIS Field несмотря на указание того же SRID (2163).

INSERT INTO lines (name, geom)
VALUES ('Holland Tunnel',ST_GeomFromText('LINESTRING(
-74.036486 40.730121,
-74.03125 40.72882,
-74.011123 40.725958)',4269)),
('Lincoln Tunnel',ST_GeomFromText('LINESTRING(
-74.019921 40.767119,
-74.002841 40.759773)',4269)),
('Brooklyn Bridge',ST_GeomFromText('LINESTRING(
-73.99945 40.708231,
-73.9937 40.703676)',4269));



UPDATE TABLE lines SET laenge = ST_Length(ST_Transform(geom, 2163));

Результаты:

Заказ:

A. ST_Length для Голландского туннеля; Линкольн Туннель; Бруклинский мост

B. Длина по Голландскому туннелю; Линкольн Туннель; Бруклинский мост

A. 2160,344849130080092; 1631,543481596899937; 694,591179476468028
B. 2195,119177785873489; 1656,890881978494235; 701,411239204245931

Если я допустил очевидную ошибку, я действительно сожалею, но предложения в StackOverflow не указали мне правильное направление, поскольку они были на предмет расстояний, основанных на маршрутизации, которая здесь не применима, верно?

С уважением и заранее спасибо!

1 Ответ

0 голосов
/ 15 января 2019

с помощью:

UPDATE lines SET laenge = ST_Length(geom::geography);

Я могу воспроизвести результаты Qgis, которые вы опубликовали, это означает, что Qgis не использует проекцию, которую вы указали для вычисления длины линий

Вы можете узнать больше в qgis о $ length:

Длина, рассчитанная этой функцией, учитывает как текущую Настройка эллипсоида проекта и единицы измерения расстояния. Например, если для проекта был установлен эллипсоид, то рассчитанный длина будет эллипсоидальной, и если эллипсоид не установлен, то Расчетная длина будет контурной.

и о разнице между геометрией и географией в: Postgis Docs

...