Привязка растра, нужен совет
Добавлено: 14 апр 2009, 12:23
Добрый день!
Никогда не занимался привязкой карт, поэтому хочу услышать мнения людей, разбирающихся в этом.
У меня есть растровая карта с привязкой в OZi, файл привязки:
Проекция карты у меня Latitude/Longitude, мне нужно для любой точки карты знать её координаты (Lat/Lon), это нужно для отображение на карте данных с GPS-модуля.
Я реализовал географическую привязку данных с помощью полиномиального преобразования, как указано в статье "Полиномиальные преобразования - примеры реализации" (спасибо автору за хороший материал), а так как у меня точек 9, то я использовал регрессию методом МНК (реализация от PAV74), чтоб получить 6 точек. Все я это реализовал на Delphi, что быстрее проверить.
В результаты этих операций у меня получился привязанный растр, для проверки решил взять координаты углов растра (из файла привязки от OZI) и они у меня почему-то не совпатают. В чем проблема не могу разобраться, реализацию проверил несколько раз вроде все правильно.
И я решил спросить у вас, возможно мне не нужно было делать привязку по 9-ти точкам, а так как известны координаты углов сделать аффинное преобразование по 3 точкам углов растра и этого вполне бы хватило.
Так как проекция у меня Latitude/Longitude, а в этой проекци линии широты и долготы прямые, пересекающиеся друг с другом под углом 90° то у меня получается просто смещение, поворот и масштабирование, и с этим должно справляться аффинное преобразование, но для него нужно 3 точки, а у меня 4, просто не брать один угол и все или как?
Помогите разобраться, а то я уже грешу на то, что у меня просто не правильно привязан растр в OZI, хотя многие им пользуются и говорят привязка правильная.
Никогда не занимался привязкой карт, поэтому хочу услышать мнения людей, разбирающихся в этом.
У меня есть растровая карта с привязкой в OZi, файл привязки:
я так понимаю привязка осуществляется по 9-ю точкам, и еще есть привязка углов растра....
WGS 84,WGS 84, 0.0000, 0.0000,WGS 84
...
Map Projection,Latitude/Longitude,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No
Point01,xy, 9966, 1263,in, deg, 48,33.3546667,N, 34,55.4056667,E,
Point02,xy,16443, 5663,in, deg, 48,30.3243333,N, 35,1.78316667,E,
Point03,xy,21695, 2406,in, deg, 48, 32.4005,N, 35,7.12233333,E,
Point04,xy,27530, 9501,in, deg, 48,27.5658333,N, 35, 12.7545,E,
Point05,xy,24163,14409,in, deg, 48,24.3701667,N, 35,9.25916667,E,
Point06,xy,22167,16222,in, deg, 48,23.2058333,N, 35, 7.2105,E,
Point07,xy,13430,17778,in, deg, 48, 22.324,N, 34, 58.4575,E,
Point08,xy, 9116,14940,in, deg, 48,24.2873333,N, 34,54.2198333,E,
Point09,xy, 2034,11995,in, deg, 48,26.3511667,N, 34, 47.222,E,
...
MMPXY,1,0,0
MMPXY,2,29500,0
MMPXY,3,29500,19569
MMPXY,4,0,19569
MMPLL,1, 34.758311, 48.572808
MMPLL,2, 35.249489, 48.564292
MMPLL,3, 35.240999, 48.347518
MMPLL,4, 34.749820, 48.356034
....
Проекция карты у меня Latitude/Longitude, мне нужно для любой точки карты знать её координаты (Lat/Lon), это нужно для отображение на карте данных с GPS-модуля.
Я реализовал географическую привязку данных с помощью полиномиального преобразования, как указано в статье "Полиномиальные преобразования - примеры реализации" (спасибо автору за хороший материал), а так как у меня точек 9, то я использовал регрессию методом МНК (реализация от PAV74), чтоб получить 6 точек. Все я это реализовал на Delphi, что быстрее проверить.
В результаты этих операций у меня получился привязанный растр, для проверки решил взять координаты углов растра (из файла привязки от OZI) и они у меня почему-то не совпатают. В чем проблема не могу разобраться, реализацию проверил несколько раз вроде все правильно.
И я решил спросить у вас, возможно мне не нужно было делать привязку по 9-ти точкам, а так как известны координаты углов сделать аффинное преобразование по 3 точкам углов растра и этого вполне бы хватило.
Так как проекция у меня Latitude/Longitude, а в этой проекци линии широты и долготы прямые, пересекающиеся друг с другом под углом 90° то у меня получается просто смещение, поворот и масштабирование, и с этим должно справляться аффинное преобразование, но для него нужно 3 точки, а у меня 4, просто не брать один угол и все или как?
Помогите разобраться, а то я уже грешу на то, что у меня просто не правильно привязан растр в OZI, хотя многие им пользуются и говорят привязка правильная.