Получение справки по математике ГИС, с чего мне начать? - PullRequest
2 голосов
/ 24 марта 2010

Я отвечаю за программу, которая используется для создания набора узлов и путей для потребления автономным наземным транспортным средством. Программа отслеживает местоположение всех элементов на своей карте, указывая положение элемента как x метров к северу и y метров к востоку от исходной точки 0,0. В реальном мире транспортное средство знает местоположение широты и долготы отправителя, поскольку оно определяется системой dgps и имеет точность до пары сантиметров. Моя программа не знает ни о каких длинных координатах.

Одной из моих целей является изменение программы для отслеживания широтных координат элементов в дополнение к исходной точке и положению элементов x, y относительно этого источника. На первый взгляд кажется, что я собираюсь изменить программу, чтобы разрешить передачу длинных координат начала координат, а после этого я хочу, чтобы программа автоматически вычисляла длину широты каждого элемента, который в настоящее время находится на карте. Исходя из того, что я исследовал до сих пор, я считаю, что мне нужно будет выяснить математику преобразования длинных координат в лат из UTM-подобной проекции, где я указываю исходные точки, меридианы и т. Д., В отличие от того, что уже определено для UTM.

Я пришел спросить у вас программистов ГИС, я на правильном пути? Мне кажется, что есть так много, чтобы обернуть голову вокруг, и я не уверен, что ответ не так прост, как «о да, здесь перевод из метра в лат, здесь»

В настоящее время, из-за характера DGPS, системе действительно не нужно заботиться о местах больше, чем ... 40 км? радиус от начала координат. Учитывая это, а также тот факт, что мне нужно убедиться, что погрешность моих координат не превышает 0,5 метра, нужно ли мне что-нибудь более сложное, чем простая константа преобразования широты / долготы в метры?

Я по колено в материалах здесь. Я мог бы использовать несколько указателей о том, какие концепции исследовать.

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 24 марта 2010

Я бы сделал полный расчет, если вы можете. Таким образом, вы всегда будете настолько точны, насколько сможете.

Если вы используете C ++, GDAL - очень хорошая библиотека.

2 голосов
/ 25 марта 2010

Учитывая начальную точку в широте / длине и расстояние и азимут, определение конечной точки является геодезическим расчетом. На сайте proj.4 есть отличная сводка геодезических расчетов и ошибок. Они приходят к выводу, что при использовании сферической модели можно получить результаты для расстояния между точками с погрешностью не более 0,51%. Это, в сочетании с формулой для перевода между WGS-84 и ECEF (см. Разделы "LLA to ECEF" и "ECEF to LLA", похоже, дает вам то, что вам нужно.

Если вы действительно хотите исправить ошибки путем обратного проецирования вашей плоской карты на WGS-84, proj.4 - это программный пакет для проекции. Он имеет исходный код и поставляется с тремя утилитами командной строки - proj, которые преобразуют в / из картографической проекции и декартовых данных; cs2cs, который преобразует различные картографические проекции; и geod, который вычисляет геодезические отношения.

USGS публикует очень всеобъемлющий тракт проекций карт .

0 голосов
/ 24 марта 2010

Для диапазона 40 км, вы можете обнаружить, что приближение мира к плоской поверхности 2D может работать, хотя UTM-преобразование было бы идеальным способом - в любом случае, я бы рекомендовал использовать фактический ординаты и эллипсоиды для вычислений, таких как расстояние по большой окружности или расчет подшипников.

Если вам скучно, вы можете перейти по той же строчке к тому, над чем я работал, и использовать его в качестве базового класса для разных данных, таких как OSGB36 или WGS84 ...

...