|
От
|
apple16
|
|
К
|
All
|
|
Дата
|
25.09.2001 15:50:45
|
|
Рубрики
|
Прочее; WWII; 1941;
|
|
для Валерия Мухина по карте 1941
добрый день
Что мы хотим:
растровую карту в любой заранее выбранной проекции.
Что есть:
У нас есть набор неких растровых листов с какой-то
картой.
Для простоты возьмем один из них.
Систему координат на нем обзовем X1,Y1.
(точки растра)
Мы знаем что это карта в некоторой проекции
(знает ли кто в каких проекциях немцы карты делали?)
Координаты в метрах проекции
X2,Y2
Они связаны соотношением
X2 = A1 * X1 * Y1 + A2 * X1 + A3 * Y1;
Y2 = A4 * X1 * Y1 + A5 * X1 + A6 * Y1;
(в простейшем случае - билинейное преобразование
описывает все огрехи сканирования)
(это будет соотношение 1 - С1)
Далее метры проекции связаны обратным уравнением
с геодезическими координатами (с градусами)
(широта, долгота)
Lon = F1(X2,Y2)
Lat = F2(X2,Y2)
(соотношение С2)
и обратно
X2 = G1(Lon,Lat)
Y2 = G2(Lon,Lat)
(соотношение C3)
(кстати похоже что наша карта в проекции Гаусса-Крюгера но это почти тоже самое что и UTM :))
Далее мы имеем еще одну проекцию
(в которую хотим согнать все растры)
X3 = G3(Lon,Lat)
Y3 = G4(Lon,Lat)
(соотношение С4)
и из метров этой проекции в точки растра
опять же
X4 = B1 * X3 * Y3 + B2 * X3 + B3 * Y3;
Y4 = B4 * X3 * Y3 + B5 * X3 + B6 * Y3;
(соотношение C5)
Если мы знаем первую проекцию задача выглядит
достаточно просто:
(т.е. я знаю как написать медленный но работающий вариант растрового трансформатора)
Выбираем размер результирующего растра
(пусть 10000 на 10000).
Для каждой из точек этого растра делаем обратное
преобразование - лезем сначла в градусы,
потом в метры проекции нашей исходной карты
и наконец получаем цвет точки на исходной карте.
Этим цветом и закрашиваем наш пиксел.
Понятно что мы получаем координаты пиксела
на исходной карте в плавающем виде -
что-то типа 100,78 и 56,89 но тут мы усредняем цвет
по такой схеме:
берем цвета 4х (а можно и 25 :)) соседних точек,
перегоняем их RGB в YCbCr как в JPEG
и по каждой компоненте (Y,Cb,Cr) делаем усреднение
пропорционально расстояним до реальных точек.
Потом вновь собираем RGB.
Если у нас нет проекции (как я понимаю рамку карты Вы не сканировали и данных легенды нет)
то вместо соотношений C1,C2 мы должны опираясь
на эталонные точки (благо их навалом)
подобрать уже не билинейное а некое другое преобразовани
(с тригонометрией или со степенными рядами) с некоторым
количеством неопределенных коэффициентов.
Также вроде легче всего гнать все фрагменты в градусы
- потом уже со второй прокцией разберемся.
Что касается точности то вопрос датумов/эллипсоидов
не стоит так как различие между Bessel'ем на котором
скорее всего данная карта сделана и модным WGS84
(ну или Пулково 1942 - Крассовского)
максимум сотни метров - а наша карта как пить дать
склеена из миллионнок (а может и из 200000/500000)
и вообще у нас размер пикселя 200 метров.
Вот такие пироги - если набрать по какому-нибудь
фрагменту точек привязки
типа X1,Y1 - Lon,Lat
то можно попробовать провернуть эту операцию
я в выходные (в субботу буду посвободнее)
займусь - особенно если нормальный трансформер не будет еще найден. :(
_______
Apple