Перевод долготы-широты в метры и подходы по работе в MapInfo

Материал из GIS-Lab
Перейти к навигации Перейти к поиску

MapInfo - перевод долготы/широты в метры

MapInfo - перевод долготы/широты в метры Эта статья посвящена задаче перевода координат заданных градусах в координаты в метра ( футах, дюймах и т. п.). С равным успехом основные приемы данной статьи могут быть использованы для перевода между различными системами координат, которые могут быть заданы стандартными средствами ГИС MapInfo.

Введение:

Постановка задачи:

Имеется набор данных, состоящих из координат точки в формате долгота/широта/высота. К каждой точке приписан набор непространственных атрибутов. В рассматриваемом в случае — время создания точки и некоторые специфические параметры, связанные с работой технического средства. Данные даны в виде плоской таблицы или в виде приводимом к плоской таблице. В нашем случае в формате Excel. Требуется произвести вычисления расстояния между соседними точками и сохранить результат так, что бы его можно было использовать в Excel.

Общее описание алгоритмов:

Для решения задачи можно использовать:

  • Любую ГИС, позволяющую вычислять координаты точек в различных системах координат (или проекциях);
  • Программные средства командной строки, позволяющие производить вычисления над плоскими файлами. На пример, утилиту командной строки ogr2ogr или иную, использующую библиотеку PROJ4, или ее аналог;
  • Вставить в EXCEL дополнительные модули или формулы, которые позволят произвести вычисление координат, заданных в градусах, в координаты на плоскости в некоторой проекции. В принципе в тот же Excel можно вставить вызов библиотек PROJ4.

Почему MapInfo + Excel? :

В этой статье будет рассмотрен набор манипуляций с данными с использованием ГИС MapInfo. С пост обработкой результатов в Excel. Причина такого выбора банальна:

  • вопрос был задан в разделе про MapInfo;
  • MapInfo хорошо умеет читать данные в формате Excel;
  • Excel идеально подходит для между строчных вычислений, что является трудно проблемой для всего, что построено на принципах СУБД, как-то плоские таблицы с независимыми строками;
  • Кроме того описание «вступительной» части второго и третьего варианта, есть задача, которая требует других знаний, чем у автора, и другого терпения. А рекомендовать проделать все это тем, кто не нашел сил, что бы выполнить «вступительную» часть для других задач, я не готов. Равно как не знаю есть ли смысл рассказывать такую банальность тем, кто это проделал. Есть подозрение, что они эту задачу решат и без меня. И мне бы еще у них поучиться жонглировать различными ГИС форматами в ogr2org. Хотя бы тем же CSV, который подходит для этих задач лучше много другого. Тем более, что и в этом случае остается задача рекурсивного доступа от точки к ее предшественнику, а это без простейшего программирования трудно реализовать.

Основные приемы использованные в работе:

  1. 1. Главный прием — 95% процентов команд графического ядра ГИС MapInfo являются текстовыми командами на языке MapBasic. При стандартном выполнении через меню и «кнопки» эти команды формируются в GUI, выводятся в окно MapBasic в MapInfoи одновременно передаются на выполнение ядру ГИС MapInfo, которое можно считать интерпретатором команд MapBasic'а.
  2. 2. Если выбрать соответствующую команду в окне MapBasic в MapInfo, выделив несколько строк подряд, или просто поместив курсор в конец одной строки, и нажать «Ввод» на клавиатуре, то выбранные команды будут переданы интерпретатору команд MapBasic и они дадут к такой же результат, что и вызов команд через графический интерфейс.
  3. 3. Поэтому используя команды от стандартных элементов меню MapInfo, выводимые в MapBasic, как шаблоны для собственных команд, или используя любые команды и операторы языка MapBasic, за исключением операторов проверки условий (на пример, IF) или циклов (FOR или DO), можно получать большую гибкость при работе с данными в этой ГИС.
  4. 4. За пределами этого рассмотрения остается возможность посылки аналогичных команд через OLE интерфейс MapInfo. В этом случае они выполняются так же, как если бы их вводили в окно MapBasic.
  5. 5. Так же работа основана на том, что MapInfo хорошо читает многие стандартные форматы табличных данных, и в некоторые из них позволяет сохранять свои таблицы.
  6. 6. В свою очередь Excel легко позволяет выписать функцию на рабочем листе, а потом применить ее к соседним клеткам с сохранением условной или безусловной адресации между ячейками. На пример, для того что бы формула, заданная в 3-м столбце строки, выполняющая расчет на основе первых двух ячеек строки, была аналогично использована в следующей строке, достаточно просто растянуть ячейку в 1:3 или С1 следующую ячейку снизу — 2:3 или С2.

Порядок обработки данных:

  1. 1. Открываем таблицу Excel. Приводим ее виду набора однородных данных – заголовки должны быть у всех столбцов, имеющих данные, и располагаться в первой строке. Столбцы без данных должны быть удалены.
  2. 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