2009-09-03 10 views
3

Пространственный плагин Postgres, или любой пространственный пакет для этого способа, влияет на высоту при расчете расстояния между двумя точками?Карты: Рассчитывает ли расстояние между двумя точками в высоте?

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

Также имейте в виду, что если у меня есть 2 точки на одной и той же высоте океана, но между двумя точками существует гора - для этого должен учитываться пакет расстояний.

+0

Возможный дубликат: http://stackoverflow.com/questions/1108965/taking-altitude-into-account-when-calculating-geodesic-distance –

+0

@Reed: Я думаю, что другой вопрос подобен, вроде, но он/она на самом деле спрашивает, влияют ли существующие пакеты, а не на то, как это повлиять на это. – MusiGenesis

ответ

3

Эти факторы не учитываются вообще. Зачем? Программное обеспечение знает только об этих двух функциях (две точки, на которые вы получаете расстояние, сферу/сфероид и коэффициент привязки/проекции).

Для этого вам нужно, вероятно, использовать разработанный linestring, в котором вы будете связывать свою точку с n вершинами, каждый из которых будет известен Z.

Представьте, что это (свободный WKT): LINESTRING ((0,1,2), (0,2,3), (0,3,4), (0,10,15), (0,11, -1)).

Спрашивая программное обеспечение для расчета расстояния между каждой вершиной и суммирования его, рассмотрим вариации местности. Но без чего-то подобного невозможно сопоставить неровности в местности.

Все программные средства ГИС не могут сами сказать, каковы эти нарушения в местности, и поэтому не принимают их во внимание.

Вы можете создать такие линейные строки (автоматически) с помощью программных средств, таких как ArcGIS (и другие), используя линию (между двумя точками) и файл поверхности, например, предоставленные NASA (проект SRTM). Эти файлы имеют растровый формат, и каждый пиксель имеет значения X Y и Z, в метрах. Пройдя по линии, которую вы хотите, в сочетании с профилем местности, вы можете достичь расчета, которого хотите достичь. Если вам нужны сверхточные точные вычисления, вам нужна точная поверхность и точные значения Z в каждой вершине этой линии профиля.

Это прояснилось?

1

Если формула расстояния, которую вы используете, не принимает высоту двух точек в качестве параметров (помимо широт и долгот двух точек), то она не учитывает высоту расчёта расстояния. В любом случае разница в высоте не оказывает существенного влияния на расчетное расстояние.

Как обычно в GPS, разница в расчетах расстояний, которые создавали бы высоту, вероятно, меньше, чем ошибка большинства коммерческих GPS-устройств, поэтому в большинстве приложений высоту можно безопасно распределять (сами измерения высоты довольно неточно с коммерческой GPS, хотя данные опроса на высотах довольно точны).

1

PostgreSQL не учитывает высоту при расчете расстояний. Все это делается на плоской поверхности.

Большинство пространственных пакетов базы данных не учитывают это, если бы ваша точка была 3D, т. Е. Имела координату Z, которая могла бы произойти.

У меня нет PostgreSQL на этой машине, но попробуйте это.

SELECT ST_DISTANCE (ST_POINT (0,0,10), ST_POINT (0,0,0));

Это довольно легко узнать, если он учитывает ваше значение Z, так как возврат должен быть> 0; Если это окажется правдой, просто создайте функции Z, и вы добьетесь успеха.

Что SQL SERVER 2008, например, учитывает при расчете расстояний, является позицией функции географии в сфере. Геометрические функции в SQL SERVER всегда будут использовать плоские вычисления.

EDIT: проверил это в PostGIS ручного

Для Z осведомленных очков вы должны использовать функцию ST_MakePoint. Он принимает до 4 аргументов (X Y Z и M).ST_Point принимает только два (XY)

http://postgis.refractions.net/documentation/manual-1.4/ST_Distance.html ST_DISTANCE = 2D расчеты

ST_DISTANCE_SPHERE документация (принимает во внимание фиксированную сферу для расчетов - он же не плоскостную) http://postgis.refractions.net/documentation/manual-1.4/ST_Distance_Sphere.html

ST_DISTANCE_SPHEROID документации (учитывающего выбранный сфероид для ваших расчетов) http://postgis.refractions.net/documentation/manual-1.4/ST_Distance_Spheroid.html

Документация ST_POINT http://postgis.refractions.net/documentation/manual-1.4/ST_Point.html

+0

@George, что неясно, как я читаю ссылки, которые вы предоставили, если он учитывает изменения высоты между двумя конечными точками. Например, предположим, что обе конечные точки находятся на высоте океана (0), но между двумя точками существует гора. Изменение высоты восхождения на эту гору, чтобы установить точку от точки А до точки В, должно быть учтено. – 2009-09-03 18:43:21

 Смежные вопросы

  • Нет связанных вопросов^_^