Перевод долготы-широты в метры и подходы по работе в MapInfo: различия между версиями
Boris (обсуждение | вклад) Нет описания правки |
Boris (обсуждение | вклад) мНет описания правки |
||
Строка 31: | Строка 31: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Время !! Высота над УМ !! Датчик скорости !! | ! Время !! Высота над УМ !! Датчик скорости !! Координата-1 !! Координата-2 !! Обороты двигателя !! Конечная | ||
|- | |- | ||
| | | 2012-05-03 07:31:40 || 521 || 18 || 51.822845 || 107.679138 || 1482 || мелькомбинат | ||
|- | |- | ||
| | | 2012-05-03 07:32:27 || 525 || 22 || 51.81982 || 107.682434 || 1208.4 || | ||
|- | |- | ||
|} | |} |
Версия от 18:35, 9 мая 2012
MapInfo - перевод долготы/широты в метры
MapInfo - перевод долготы/широты в метры Эта статья посвящена задаче перевода координат заданных градусах в координаты в метра ( футах, дюймах и т. п.). С равным успехом основные приемы данной статьи могут быть использованы для перевода между различными системами координат, которые могут быть заданы стандартными средствами ГИС MapInfo.
Введение:
Постановка задачи:
Имеется набор данных, состоящих из координат точки в формате долгота/широта/высота. К каждой точке приписан набор непространственных атрибутов. В рассматриваемом в случае — время создания точки и некоторые специфические параметры, связанные с работой технического средства. Данные даны в виде плоской таблицы или в виде приводимом к плоской таблице. В нашем случае в формате Excel. Требуется произвести вычисления расстояния между соседними точками и сохранить результат так, что бы его можно было использовать в Excel.
Общее описание алгоритмов:
Для решения задачи можно использовать:
- Любую ГИС, позволяющую вычислять координаты точек в различных системах координат (или проекциях);
- Программные средства командной строки, позволяющие производить вычисления над плоскими файлами. На пример, утилиту командной строки ogr2ogr или иную, использующую библиотеку PROJ4, или ее аналог;
- Вставить в EXCEL дополнительные модули или формулы, которые позволят произвести вычисление координат, заданных в градусах, в координаты на плоскости в некоторой проекции. В принципе в тот же Excel можно вставить вызов библиотек PROJ4.
Почему MapInfo + Excel? :
В этой статье будет рассмотрен набор манипуляций с данными с использованием ГИС MapInfo. С пост обработкой результатов в Excel. Причина такого выбора банальна:
- вопрос был задан в разделе про MapInfo;
- MapInfo хорошо умеет читать данные в формате Excel;
- Excel идеально подходит для между строчных вычислений, что является трудно проблемой для всего, что построено на принципах СУБД, как-то плоские таблицы с независимыми строками;
- Кроме того описание «вступительной» части второго и третьего варианта, есть задача, которая требует других знаний, чем у автора, и другого терпения. А рекомендовать проделать все это тем, кто не нашел сил, что бы выполнить «вступительную» часть для других задач, я не готов. Равно как не знаю есть ли смысл рассказывать такую банальность тем, кто это проделал. Есть подозрение, что они эту задачу решат и без меня. И мне бы еще у них поучиться жонглировать различными ГИС форматами в ogr2org. Хотя бы тем же CSV, который подходит для этих задач лучше много другого. Тем более, что и в этом случае остается задача рекурсивного доступа от точки к ее предшественнику, а это без простейшего программирования трудно реализовать.
Основные приемы использованные в работе:
- 1. Главный прием — 95% процентов команд графического ядра ГИС MapInfo являются текстовыми командами на языке MapBasic. При стандартном выполнении через меню и «кнопки» эти команды формируются в GUI, выводятся в окно MapBasic в MapInfoи одновременно передаются на выполнение ядру ГИС MapInfo, которое можно считать интерпретатором команд MapBasic'а.
- 2. Если выбрать соответствующую команду в окне MapBasic в MapInfo, выделив несколько строк подряд, или просто поместив курсор в конец одной строки, и нажать «Ввод» на клавиатуре, то выбранные команды будут переданы интерпретатору команд MapBasic и они дадут к такой же результат, что и вызов команд через графический интерфейс.
- 3. Поэтому используя команды от стандартных элементов меню MapInfo, выводимые в MapBasic, как шаблоны для собственных команд, или используя любые команды и операторы языка MapBasic, за исключением операторов проверки условий (на пример, IF) или циклов (FOR или DO), можно получать большую гибкость при работе с данными в этой ГИС.
- 4. За пределами этого рассмотрения остается возможность посылки аналогичных команд через OLE интерфейс MapInfo. В этом случае они выполняются так же, как если бы их вводили в окно MapBasic.
- 5. Так же работа основана на том, что MapInfo хорошо читает многие стандартные форматы табличных данных, и в некоторые из них позволяет сохранять свои таблицы.
- 6. В свою очередь Excel легко позволяет выписать функцию на рабочем листе, а потом применить ее к соседним клеткам с сохранением условной или безусловной адресации между ячейками. На пример, для того что бы формула, заданная в 3-м столбце строки, выполняющая расчет на основе первых двух ячеек строки, была аналогично использована в следующей строке, достаточно просто растянуть ячейку в 1:3 или С1 следующую ячейку снизу — 2:3 или С2.
Порядок обработки данных:
- 1. Открываем таблицу Excel. Приводим ее виду набора однородных данных – заголовки должны быть у всех столбцов, имеющих данные, и располагаться в первой строке. Столбцы без данных должны быть удалены.
- 2. Сохраним файл с простым именем D20120503.xls. С вот таким заголовком:
Время | Высота над УМ | Датчик скорости | Координата-1 | Координата-2 | Обороты двигателя | Конечная |
---|---|---|---|---|---|---|
2012-05-03 07:31:40 | 521 | 18 | 51.822845 | 107.679138 | 1482 | мелькомбинат |
2012-05-03 07:32:27 | 525 | 22 | 51.81982 | 107.682434 | 1208.4 |