СтатьиСиСофт Девелопмент → Калибровать топографические карты в RasterDesk стало проще

Калибровать топографические карты в RasterDesk стало проще

Калибровать топографические карты в RasterDesk стало проще

RasterDesk — универсальное приложение для AutoCAD, предназначенное для обработки растров, векторизации, растеризации и растрового редактирования чертежей, планов и карт…

RasterDesk — универсальное приложение для AutoCAD, предназначенное для обработки растров, векторизации, растеризации и растрового редактирования чертежей, планов и карт. Работа с растром осуществляется в два этапа:

  • подготовка растра (удаление «мусора», калибровка, бинаризация, сшивка растров и т.п.);
  • векторизация, растеризация, растровое редактирование.

Выполнение калибровки производится по особым точкам на растре, роль которых на чертежах и планах выполняют прямоугольные координатные сетки. Кроме того, возможен учет произвольных точек с известными координатами — геодезических пунктов, реперов. Реальные координаты некоторых точек на чертежах могут быть вычислены по указанным размерам.

Для выполнения калибровки необходимо сформировать список калибровочных пар -реальных (теоретических) и измеренных (фактических) координат точек растра.

В RasterDesk калибровка производится следующим образом. Следует выделить растр и запустить функцию RasterDesk Pro/Растр/Калибровать. В появившемся диалоговом окне содержится всё необходимое для калибровки — список калибровочных пар и кнопки для управления ими (Добавление, Удаление, Изменение, Сброс измеренных координат, Импорт и Экспорт списка калибровочных пар в файл/из файла). Быстро сформировать массив калибровочных пар позволяет кнопка Создать сетку, вызывающая появление прямоугольной сетки с заданными началом, шагом и количеством ячеек. Наиболее часто такой способ применяется при калибровке топографических планов, поскольку в них применяется разграфка по прямоугольной координатной сетке (для планов масштаба 1:5000 размер рамок составляет 40×40 см2, а для масштабов 1:2000 и крупнее — 50×50 см2).

Калибровку топографических карт производить сложнее, так как их масштаб может колебаться в пределах от 1:2000 до 1:1000000. При масштабе 1:200000 и крупнее на карте отображается прямоугольная координатная сетка, причем ее шаг зависит от масштаба: 1:2000 — 0,2 км, 1:5000 — 0,5 км, 1:10000 — 1 км, 1:50000 — 1 км, 1:100000 — 2 км и 1:200000 — 4 км. На рамках карт масштаба 1:500000 отмечаются лишь выходы прямоугольной сетки.

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

Рис. 1. Точки, по которым строится рамка трапеции Рис. 1. Точки, по которым строится рамка трапеции

Для более точного построения рамки трапеции требуется вычислить координаты точек 2 и 5 (рис. 1). По точкам 1−6 строится полилиния, причем участки 1−2−3 и 4−5−6 изображаются дугами. В центре листа карты расположено также перекрестье меридиана и параллели — точка 7, которая также может участвовать в калибровке.

Затем для учета пересечений координатной сетки с рамкой трапеции следует построить прямоугольную координатную сетку внутри листа карты и сформировать список калибровочных пар по следующим точкам:

  • углы рамки трапеции, центр листа карты;
  • перекрестья прямоугольной координатной сетки;
  • пересечения координатной сетки с рамкой трапеции.

Сформировать пары по перекрестьям координатной сетки можно при помощи функции Создать сетку, доступной из диалогового окна калибровки. Для этого следует вычислить прямоугольные координаты (эллипсоид Крассовского, проекция Гаусса-Крюгера) и углы рамки трапеции, а затем вручную нарисовать рамку и координатную сетку для определения координат их пересечений.

Я попробовал написать на языке Visual Basic for Applications (VBA) две функции. Первая должна была обеспечить подготовку списка калибровочных пар: строить рамку листа карты с координатной сеткой, подписывать номенклатуру листа и создавать на диске файл калибровочных пар. Вторая предназначалась для формирования массива рамок листов карт, для каждого из которых предусмотрены сетка и файл калибровочных пар. Для построения листа масштаба 1:100000−1:50000 требуется 300−400 таких пар, поэтому, создав рамки листов карт и файлы калибровочных пар для всего теоретически возможного диапазона, можно максимально автоматизировать процесс калибровки.

Наилучшее решение проблемы составления списка калибровочных пар — файл калибровочных пар, обычный текстовый файл с расширением .rpt, содержащий координаты и параметры всех реальных калибровочных точек.

Формат RPT-файла таков:

Первая строка:
Unsigned int Метод калибровки
Вторая строка:
Unsigned int Количество точек
Последующие строки (через пробел):
Unsigned int порядковый номер калибровочной пары
double координата реальной точки по x
double координата реальной точки по y
double координата измеренной точки по x
double координата измеренной точки по y
double координата вычисленной точки по x (идентична x-измеренной до подсчета)
double координата вычисленной точки по y (идентична y-измеренной до подсчета)
bool Точка опорная?
bool Точка контрольная?
bool Точка использованная?
Unsigned int порядковый номер точки в сетке по оси x (начиная с 0)
Unsigned int порядковый номер точки в сетке по оси y (начиная с 0)
Метка (название) точки

Например, для листа N-45 масштаба 1:1000000 файл калибровочных пар будет следующим:

0
4
0 15293985.249702 5767696.577929 15293985.249702 5767696.577929 15293985.249702 5767696.577929 1 1 1 0 0 Точка 001
1 15706014.750298 5767696.577929 15706014.750298 5767696.577929 15706014.750298 5767696.577929 1 1 1 0 0 Точка 002
2 15312850.595357 6212735.206895 15312850.595357 6212735.206895 15312850.595357 6212735.206895 1 1 1 0 0 Точка 003
3 15687149.404643 6212735.206895 15687149.404643 6212735.206895 15687149.404643 6212735.206895 1 1 1 0 0 Точка 004
Рис. 2. Панель инструментов Рамка Рис. 2. Панель инструментов Рамка
Рис. 3. Форма функции Рамка карты Рис. 3. Форма функции Рамка карты

Функции реализованы в виде отдельного проекта VBA ramka.dvb. Для их запуска достаточно указать в настройках AutoCAD путь доступа к папке, в которой расположен проект, и в файле автозагрузки acad.lsp прописать строку, устанавливающую при запуске AutoCAD панель инструментов Рамка:

(command "_-vbarun" "ramka.dvb!Utilities.LoadToolbar").

Панель содержит две кнопки (рис. 2): Рамка карты предназначена для создания рамки листа топографической карты, а Рамки карт — для создания массива рамок листов топографических карт.

При запуске функции Рамка карты появляется форма (рис. 3), в которой необходимо ввести масштаб и номенклатуру листа карты, указать, следует ли создавать координатную сетку и файл, содержащий список калибровочных пар, а также определить на диске место сохранения файла.

После нажатия кнопки Создать в центре экрана появится рамка листа карты в виде блока чертежа (рис. 4), поскольку и рамку, и сетку, и номенклатуру программа выделяет как единый объект.

Рис. 4. Пример созданного листа карты Рис. 4. Пример созданного листа карты
Рис. 5. Сообщение с указанием допустимого диапазона Рис. 5. Сообщение с указанием допустимого диапазона
Рис. 6. Форма функции Рамки карт Рис. 6. Форма функции Рамки карт

Для скрытия рамки листа и координатной сетки можно выключить слои ЛистКарты_Рамка, ЛистКарты_Сетка соответственно.

Если был произведен ошибочный ввод номенклатуры, на экране возникнет сообщение с указанием допустимых значений (рис. 5).

При запуске функции Рамки карт появляется форма (рис. 6), в которую следует ввести те же параметры, что и в форму для функции Рамка карты. Единственным исключением является необходимость задания двух крайних номенклатур диапазона. При этом вторая номенклатура должна превышать первую.

После нажатия кнопки Создать на экране будет показан процесс формирования рамок, после чего вновь появится форма.

Пример полученных результатов работы функции приведен на рисунках 7−9.

Рис. 7. Диапазон M-45-1: M-45-144 с координатной сеткой Рис. 7. Диапазон M-45−1: M-45−144 с координатной сеткой
Рис. 8. Диапазон M-45-3-В: M-45-6-В без координатной сетки Рис. 8. Диапазон M-45−3−В: M-45−6−В без координатной сетки
Рис. 9. Диапазон A-1: V-1 Рис. 9. Диапазон A-1: V-1

После того как формирование рамки листов карт и файлов калибровочных пар будет завершено, требуется вставить растры (так сказать, «подложить» их под рамку с сеткой) (рис. 10, 11).

Рис. 10. Рамка листа N-35-II с сеткой координат Рис. 10. Рамка листа N-35-II с сеткой координат
Рис. 11. Рамка листа N-35-II с сеткой координат и растр Рис. 11. Рамка листа N-35-II с сеткой координат и растр

Затем следует выбрать растр, подлежащий калибровке, и вызвать функцию калибровки RasterDesk Pro/Растр/Калибровать. В диалоговом окне калибровки (рис. 12) нажмите кнопку Импортировать сетку и выберите файл калибровочных пар Название_листа_карты.rpt. Таким образом, вы составили список калибровочных пар, для каждой из которых необходимо указать измеренные координаты. RasterDesk позволяет произвести эту операцию очень быстро: нажмите правую клавишу мыши на списке калибровочных пар в диалоговом окне калибровки и выберите в контекстном меню Переопределить все. Программа разместит в центре экрана первую точку из списка. Расположите курсор на соответствующем узле сетки искаженного изображения и нажмите левую клавишу мыши. Отметив измеренную точку, программа перейдет к следующей точке списка. Таким же образом измеренные точки задаются для всех остальных реальных точек списка.

Рис. 12. Диалоговое окно калибровки Рис. 12. Диалоговое окно калибровки

После указания всех измеренных точек нажмите кнопку Применить диалогового окна калибровки — растр будет откалиброван. Таким же образом калибруются все остальные растры.

Следует отметить, что приведенное приложение позволяет работать как с RasterDesk 5.5, так и с RasterDesk 6.0, поскольку связь осуществляется посредством файла калибровочных пар, формат которого одинаков для всех версий программы.

Фирма ООО «Земля-Проект» специализируется на выполнении землеустроительных (межевание, инвентаризация) и геодезических работ (развитие геодезических сетей, различные виды съемки) на территории Кемеровской области. Крупнейшие заказчики: ФГУП «Западно-Сибирская железная дорога», ОАО «Кузбассэнерго», ООО «Томсктрансгаз», предприятия угольной промышленности и др.

Павел Сергиенко
главный специалист фирмы
ООО «Земля-Проект»
Тел.: (38456) 1−36−63;
E-mail: p_v_s@mail.ru
terra-pro@list.ru