Речь тут пойдёт о правке/склеивании “кривых” (неправильно склеенных) растров. Это уже раньше обмусоливалось и обсасывалось тут в нескольктх ветках. Результатом этих дискуссий стал вывод, что пользоваться фотошопом, панавью и т.п. графическими программами неправильно, для этого есть специализированные инструменты, такие как Global mapper и Map merge. Второй используем для склейки - там всё просто, первый для склейки, правки, коррекции растра и много для чего еще - возможностей там куча, но и разбираться с ним надо основательней.
Так вот, захотел я применить Map merge для правки “криво” склеенных (скорее всего фотошопом) растров. Причём “кривизна” склейки должна быть вполне конкретная: номенклатурный лист сканировался за 2 прохода и потом склеивался из 2-х частей. Линия склейки должна быть прямой и четко различима на глаз. Вот собственно, частный случай, когда допустимо использовать Map merge по такому назначению.
Провёл эксперимент. В качестве кривого растра была взята километровка N-38-025-Выкса (ссылка на скачку файла http://poehali.org/maps/100k--n38-025.html, качество сканирование 150dpi, по центру хорошо заметна горизонтальная полоса склейки половинок с нахлёстом). Привязал традиционным способом по 9 точкам в Ози. Получил файл 100k–n38-025.map (см. во вложении). Проверка по координатной и километровой сеткам выявила большие расхождения, особенно чуть ниже полосы склейки. Растр склеен неправильно, это очевидно.
Для правки растра было создано 2 отдельных карты (2 разных .map файла), ссылающиеся на один и тот же исходный имадж (см. файлы 100k–n38-025-up.map и 100k–n38-025-down.map во вложении). Т.е. верхняя и нижняя половины листа были привязаны отдельно, а маркеры углов расставлены точно по линии склейки. Как видно по сеткам, по отдельности нижняя и верхняя части листа привязываются вполне пристойно. Далее всё просто. Запускаем Map merge, указываем ему эти 2 файла (верхнюю и нижнюю половину листа) - и, он склеивает их именно так, как нужно. В центре, в месте нахлёста листов образуется пустая белая полоска, зато сетка ложится как надо в любой части карты (пользовался Map merge 1.13, параметры проекции задавал как и у исходной карты, пространственное разрешение поставил среднее, между верхней и нижней половинами листа - 16,893 м/пиксель - проделайте это и сами посмотрите на результат).
Но, это, как говорится, была только присказка, сказка будет впереди. Воодушевлённый этим успехом, я принялся править лист L-37-125, который резал мне глаза в составе склейки километровок Черноморского побережья Кавказа. Ссылка на лист http://poehali.org/maps/100k--l37-125.html. Привязал его как можно точнее, получил файл 100k–l37-125–(1988).map (см вложение). По наложенным сеткам видно, что максимальное несоответствие наблюдается в левом верхнем углу и во всей нижней части листа. Линия склейки визуально не видна, но на правой стороне рамки посередине есть “ступенька”. Делаю предположение, что “резать” надо именно отсюда по горизонтали. Так и поступаю. Получаю файлы 100k–l37-125–(1988)–up.map и 100k–l37-125–(1988)–down.map (см. вложение), ссылающиеся на один и тот же имадж 100k–l37-125–(1988).gif. По сеткам видно, что качество привязки значительно улучшилось. Верхний левый угол привязан совсем хорошо, правый нижний тоже. Левый нижний меня не особо волнует, т.к. там только море. Снова запускаю Map merge, даю ему эти два .map файла и получаю склейку. Параметры проекции те же, что и у оригинальной карты, пространственное разрешение снова среднее, между верхней и нижней частью - 12,716 м/пиксель. Получаю результат, накладываю сетки - и… вообще ничего не понимаю!!! Сетка в верхней половине ложится отлично, а вот в нижней… В нижней откуда ни возьмись появилось несоответствие горизонтальных линий сетки, чего не наблюдалось в привязке нижней части карты!!! Иду ещё дальше, вообще отбрасываю верхнюю половину, т.е. в Map merge задаю для склейки всего одну карту - нижнюю половину листа (параметры проекции те же, пространственное разрешение - как у нижней части - 12,722 м/пиксель) - та же фигня!!! До Map merge всё нормально, после появляется расхождение у горизонтальных линий километровой сетки, причём серьёзные!!!
Вот, собственно, и загадка. Кто знает в чем дело - расскажите. Во вложении я поместил .map файлы для оригинальных листов, их верхних и нижних частей. Сгенерированные Map merge .ozfx3 файлы и .map для них класть не стал (слишком большие) - вы их без труда сгенерируете сами утилитой Map merge 1.13 по указанным мной параметрам (настройки проекции и пространственного разрешения я все описал). Просидел над этим 3 вечера - как головой о стену. Кто знает, имеет время, возможность и желание разобраться - помогите, пожалуйста!
Осторожно выскажу собственное мнение общего характера. Математика такая. Исхожу из того, как привязываются листы в OZI. Метод наименьших квадратов. Т.е. точки привязки никогда не остаются там куда их ткнули.
Я завязал делать привязку в OZI и использовать MapMerge для сшивки. Если хочется сделать хорошо - GlobalMapper.
http://www.karelia-life.net/articles/atcl0003/maps_merging.htm
В Ozi программах только если на скорую руку.
За статью спасибо, я её с интересом прочитал ещё пол года назад или даже раньше. Что касается моего случая, то этот “кривой” лист в конечном итоге я выправил GM, после чего дал его исправленным в Map Merge - всё получилось как надо. Но тем не менее, вопрос по работе Map Merge остаётся - чем для него описанные мной случаи принципиально отличаются? С первой же картой всё получилось, как и предполагалось… Видимо, разговаривать на эту тему надо с автором этой утилиты.
Про склейку (да и изначальную привязку-правку растра) в GM согласен - и лучше и правильнее. Одним только хуже - на это требуется значительно больше времени. А тратить его на правку кривого растра ужасного качества (как правило “кривые” растры именно такие) не хочется. Оттого и пошёл этим путём.
Ну и вопрос не по теме, но раз уж зашёл разговор о привязке-правке растра в GM. На 10 и 5 километровках ГШ километровая сетка нанесена лишь на периметре рамки, а градусная по всей площади листа. Поэтому карты этих масштабов удобнее корректировать именно вводя координаты точек привязки в градусах (градусах и минутах - не важно), а не в метрах. При выборе проекции Transverse Mercator координаты вводятся только в метрах. Т.е. если я хочу вводить географические координаты для точек привязки, то мне надо выбрать проекцию, например Lat-Lon (или иную, позволяющую вводить именно географические координаты, а не плоские прямоугольные), в которой и ввести все данные. После привязки-трансформации растра надо просто сменить тип проекции на требуемый и сохранить в таком виде. Я правильно думаю? Или есть способ вводить географические координаты точек привязки в любой проекции?
Я не привязывал 5/10 километровки в GM. Вроде это как раз тот случай, когда точность не нужна. Попробовал поставить произвольную точку, GM сам запрашивает необходимость перевести в Lat|Long. Видимо так и надо действовать, потом вернуть обратно в TM проекцию. Но возможно есть и другие способы. Где то в подсознании висит, прочитал вроде на 4pda, что есть способ и попроще. Типа начинаем вводить в градусных координатах и GM при этом сам понимает что в градусных. Попробовал-не получилось, а где прочитал не могу вспомнить точно.
Есть еще один тупой способ, который использую для привязки по краям листов 500м узлов где “градусный” край пересекается с “метровой” сеткой: тыкаю точку в Refernce Images в узел пересечения и смотрю получившиеся нужную градусную координату, с первого раза она неправильнаяя, но с 3-4 го тычка примерно попадаю. Тупо долго, но зато нет грубых ошибок, которые всегда появляются при ручном наборе длинных цифр.
Где бы взять волшебника способного создать генератор всех узлов для ГШ 500м, 1км ?
Может прочтёт, откликнется?
Ещё один у Global Mapper есть неприятный момент. Географические координаты точек привязки можно вводить только в градусах. Облазил вроде все настройки, но так и не нашел, как сделать формат ввода координат градусы-минуты или градусы-минуты-секунды. Поэтому координату каждой точки перед вводом приходится пересчитывать из градусов-минут (как подписана градусная сетка карты) в градусы. Вроде как недолго, всего лишь разделить минуты на 60, но проделывать это для полусотни точек на листе напрягает.
Ещё бы хотелось узнать о качестве привязки “гражданских” карт и атласов. В последнее время появились общедоступные карты и атласы, с нанесённой на них координатной сеткой (обычно WGS-84). Есть карты Крыма (1 км), Нижегородской и Новгородской областей (1 км), автомобильный атлас Украины (5 км), атлас “Путешествуем по горному Крыму” (500 м). Хотелось бы знать, насколько этой сетке на таких картах можно доверять? Скачал с торрента (http://torrents.ru/forum/viewtopic.php?t=2007671) 500 метровый атлас “По горному Крыму”. Его уже отсканировали (600dpi), почистили мусор, индексировали цвета, склеили попарно 2 страницы в развороты. Выглядит супер! Но вот при наложении сетки становится как-то грустно… Некоторые развороты ничего, сетка ложится вполне пристойно, а некоторые… Я уже задал там вопрос (писал с чужого компа под чужим ником - просто был в гостях и решил качнутьс торрента) что это - сама сетка так нанесена, или это погрешность склейки в графическом редакторе. Но сколько ни старался найти границу склейки листов - так и не смог. Вот видно, что между двумя соседними меридианами расстояние явно меньше, чем между соседними левее и правее, значит между ними должна лежать граница склейки - но в упор смотрю и тичего не вижу.
Вот и стало интересно. В принципе из .ozf2 можно сохранить картинку в .bmp через Ози, а потом привязать её через GM, заодно и склеив все листы в одну большую карту… Просто, если к этой нарисованной сетке изначально доверия нет, то и заморачиваться этим не стоит.