Привязка координат

Основной форум пользователей GPS (Global Positioning System)
Правила форума
Для предотврашения спама первые сообщения вновь зарегистрированных пользователей проходят ручную премодерацию.
Ответить
Ssergio
Сообщения: 3
Зарегистрирован: 19 сен 2007, 11:11

Привязка координат

Сообщение Ssergio » 18 сен 2007, 17:13

Есть карта в формате bmp. К ней идёт map файлик в котором описаны 9 точек привязки пикселей и глобальных координат. Подскажите как вычислить координаты в любой точке картинки(тоесть необходимо знать какой координате соответствует каждый пиксель картинки).


_ys05_
Сообщения: 350
Зарегистрирован: 19 мар 2015, 00:16

Re: Привязка координат

Сообщение _ys05_ » 18 сен 2007, 23:49

В общем случае - решение системы линейных или нелинейных уравнений. Если линейных, то, например, так: http://www-ec.njit.edu/surveying/Docume ... Только для этого метода (линейного) надо, чтобы географические координаты были линейными. То есть, если привязка (то бишь, проекция) в Lat/Lon - то должны использоваться градусные координаты, а если Transverse Mercator, то метрические (блин, забыл как они по научному называются).

Ssergio
Сообщения: 3
Зарегистрирован: 19 сен 2007, 11:11

Re: Привязка координат

Сообщение Ssergio » 19 сен 2007, 11:19

Используется привязка Lat/Lon. Вот часть map файла:
Point01,xy,13725, 7921,in, deg, 53,19.4708333,N, 83, 48.0195,E...
Point02,xy,13994, 4253,in, deg, 53,22.4111667,N, 83,48.5966667,E...
Point03,xy,10025, 3367,in, deg, 53,23.2373333,N, 83, 43.274,E...
Point04,xy, 8344, 3431,in, deg, 53,23.2343333,N, 83, 41.0115,E...
Point05,xy, 7476, 3326,in, deg, 53, 23.35,N, 83,39.8491667,E...
Point06,xy, 2625, 6152,in, deg, 53,21.2133333,N, 83, 33.178,E...
Point07,xy, 7663, 7730,in, deg, 53,19.8008333,N, 83,39.8958333,E...
Point08,xy, 7900, 6640,in, deg, 53,20.6673333,N, 83,40.2483333,E...
Point09,xy,10492, 6020,in, deg, 53,21.0886667,N, 83,43.7663333,E...

тоесть видно, что привязка осуществляется по 9 точкам. Очень желательно мне в моей программе использовать такой же тип привязки. Где можно прочитать хоть название метода апроксимирования используемого при 9 точках.


_ys05_
Сообщения: 350
Зарегистрирован: 19 мар 2015, 00:16

Re: Привязка координат

Сообщение _ys05_ » 19 сен 2007, 13:58

Файл внимательно прочитали? Там все написано. Если отбросить всякие нелинейности, то Вам надо аффинное преобразование, т.е.:
X = a0 + a1*x + a2*y
Y = b0 + b1*x + b2*y
X,Y - координаты в пикселях, x,y - географические (ну или наоборот)
Для определения коэффициентов a0, a1, a2, b0, b1, b2 для всего поля карты достаточно 3-х точек. 9 точек можно использовать для уточнения/усреднения коэффициентов по всему полю карты, при этом привязка немного разбежится от точек, если они были кривые, но равномерно по полю. Имхо по умолчанию ozi привязывает именно так.

Если Вы хотите получить точное соответствие для всех 9 точек, то надо либо проводить триангуляцию и привязывать по треугольникам, либо использовать формулы с 9 параметрами и искать для них корни.

По поводу Вашей привязки Lat/Lon - уверены ли Вы, что проекция карты может быть привязана так? В Lat/Lon привязывают все, что ни попадя, я раньше и генштаб привязывал в Lat/Lon, но к добру это не приведет. Все-таки, карты в пределах одного градуса имхо гораздо чаще бывают в Transverse Mercator с линейной километровой сеткой, а не в Lat/Lon с линейной градусной сеткой.



maxim123
Сообщения: 104
Зарегистрирован: 04 окт 2007, 11:38

Re: Привязка координат

Сообщение maxim123 » 20 сен 2007, 12:47

Тут, конешно, умные люди тусуются...
А открыть "энто дело" в ОЗИ и он покажет координаты в любой точке? Такой способ не катит?


Mikle_V
Сообщения: 736
Зарегистрирован: 07 июл 2000, 16:38

Re: Привязка координат

Сообщение Mikle_V » 20 сен 2007, 16:41

формулы пересчета зависят от того, в какой проекции сделана карта. Для каждой проекции своя.

А не проще воспользоваться CALL интерфейсом под Озик и попросить его посчитать это все безобразие? По-моему там такие вызовы там были.

Михаил.

Ssergio
Сообщения: 3
Зарегистрирован: 19 сен 2007, 11:11

Re: Привязка координат

Сообщение Ssergio » 22 сен 2007, 11:50

А есть каке нить примеры этих вызовов. А то как делать немного непонятно


Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 146 гостей