преобразование координат и нахождение точки на карте.
Добавлено: 04 апр 2011, 21:48
Доброго времени суток.
Что-то я делаю не так для отображения точки с координатами lat0 long0 на карте.
Опишу как делаю. Просьба к многоуважаемой публике указать на мои ошибки.
1) координаты точки получаю в wgs84
2) карта привязана для Ozi. из девяти точек привязки получаю ближайшие 6 к входной точке (lat0 long0)
в результате анализа точек привязки получаю шесть пар x/y координаты в графическом файле и lat/long этих точек
тоесть
x1 y1 lat1 long1
....
x6 y6 lat6 long6
3) преобразовываю все семь (водная точка и 6 точек привязки) lat/long координаты в прямоугольную систему UTM
тоесть получаю
x1 y1 ux1 uy1
....
x6 y6 ux6 uy6
В результате этих преобразований у меня есть 6 точек привязки с координатами в графическом файле (пиксели) и соответствия в прямоугольной системе UTM
и есть входная точка с UTM координатами (я их преобразовал WGS84->UTM)
Тоесть необходимо найти координаты пикселей для входной точки. Тоесть решить полином по шести точкам.
Используя статью
http://gis-lab.info/qa/polynom-calc.html
a) я строю матрицу
1 ux1 uy1 ux1*ux1 ux1*uy1 uy1*uy1
.....
1 ux6 uy6 ux6*ux6 ux6*uy6 uy6*uy6
б) нахожу обратную матрицу для вышеприведенной матрицы
в) перемножаю одностолбцовую матрицу (сорри, не знаю как обозвать ее) составленную из иксовых координат в графическом файле
x1
...
x6
и умножаю ее на обратную, получаю одностолбцовую матрицу шести коэфициентов (a0 - a5) для нахождения Х координаты входной точки
тоже самое проделываю для Y координат
тоесть перемножаю
y1
...
y6, на обратную матрицу полученую в пункте Б), получая коэфициенты (b0-b5) для нахождения Y координаты входной точки
г) вычисляю Х координату в графическом файле входной точки по формуле
Х = $a0 + $a1*$ux0 + $a2*$uy0 + $a3*$ux0*$ux0 + $a4*$ux0*$uy0 + $a5*$uy0*$uy0
в результате получаю бред, координаты не соответствуют действительности.
Где я ошибаюсь ?
Заранее благодарствую за помощь.
Что-то я делаю не так для отображения точки с координатами lat0 long0 на карте.
Опишу как делаю. Просьба к многоуважаемой публике указать на мои ошибки.
1) координаты точки получаю в wgs84
2) карта привязана для Ozi. из девяти точек привязки получаю ближайшие 6 к входной точке (lat0 long0)
в результате анализа точек привязки получаю шесть пар x/y координаты в графическом файле и lat/long этих точек
тоесть
x1 y1 lat1 long1
....
x6 y6 lat6 long6
3) преобразовываю все семь (водная точка и 6 точек привязки) lat/long координаты в прямоугольную систему UTM
тоесть получаю
x1 y1 ux1 uy1
....
x6 y6 ux6 uy6
В результате этих преобразований у меня есть 6 точек привязки с координатами в графическом файле (пиксели) и соответствия в прямоугольной системе UTM
и есть входная точка с UTM координатами (я их преобразовал WGS84->UTM)
Тоесть необходимо найти координаты пикселей для входной точки. Тоесть решить полином по шести точкам.
Используя статью
http://gis-lab.info/qa/polynom-calc.html
a) я строю матрицу
1 ux1 uy1 ux1*ux1 ux1*uy1 uy1*uy1
.....
1 ux6 uy6 ux6*ux6 ux6*uy6 uy6*uy6
б) нахожу обратную матрицу для вышеприведенной матрицы
в) перемножаю одностолбцовую матрицу (сорри, не знаю как обозвать ее) составленную из иксовых координат в графическом файле
x1
...
x6
и умножаю ее на обратную, получаю одностолбцовую матрицу шести коэфициентов (a0 - a5) для нахождения Х координаты входной точки
тоже самое проделываю для Y координат
тоесть перемножаю
y1
...
y6, на обратную матрицу полученую в пункте Б), получая коэфициенты (b0-b5) для нахождения Y координаты входной точки
г) вычисляю Х координату в графическом файле входной точки по формуле
Х = $a0 + $a1*$ux0 + $a2*$uy0 + $a3*$ux0*$ux0 + $a4*$ux0*$uy0 + $a5*$uy0*$uy0
в результате получаю бред, координаты не соответствуют действительности.
Где я ошибаюсь ?
Заранее благодарствую за помощь.