формула для пересчета координат

Системы координат, проекции, преобразования, привязка
Ответить
fedinanton
Новоприбывший
Сообщения: 2
Зарегистрирован: 11 мар 2011, 17:58
Репутация: 0

формула для пересчета координат

Сообщение fedinanton »

Коллеги, приветствую!

Не могу разрешить проблему: нужно вывести формулу для пересчета координат.

Как трансформировать шейпы по контрольным точкам я знаю, но тут задача именно в том чтобы получить коэффициенты в формуле вида:

newX=a0+a1*x+a2*y+a3*x*x+a4*x*y+a5*y*y
newY=b0+b1*x+b2*y+b3*x*x+b4*x*y+b5*y*y

В крайнем случае (афинные)
newX=a0+a1*x+a2*y
newY=b0+b1*x+b2*y

Дано: набор точек (17 штук) до трансформации, набор точек после трансформации. Фактически есть таблица со старыми координатами и новыми для каждой точки.

Вопрос: как получить коэффициенты? Тулза какая-нибудь есть? Искал в ArcView не нашел пока что...
Я понимаю, что можно подойти формально и приняться за решение системы уравнений, но это я уже не потяну. ;-)

Буду признателен за любые предложения.

Антон
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: формула для пересчета координат

Сообщение Александр Мурый »

Эта статья не пойдёт в дело? Наверное, придётся-таки решать уравнения..
Редактор материалов, модератор форума
fedinanton
Новоприбывший
Сообщения: 2
Зарегистрирован: 11 мар 2011, 17:58
Репутация: 0

Re: формула для пересчета координат

Сообщение fedinanton »

Уже прочитал, к сожалению, в математике не силен.
Может есть все-же какой-то инструмент?
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: формула для пересчета координат

Сообщение gamm »

fedinanton писал(а):Уже прочитал, к сожалению, в математике не силен.
Может есть все-же какой-то инструмент?
есть, называется R (http://cran.r-project.org/). Он легальный и бесплатный, документация там же.

Делаете таблицу текстовую p со столбцами X, Y, Xnew, Ynew.
Далее грузите, отнимаете средние (чтобы уменьшить численные проблемы), и получаете чего хотели. Указываете разделитель дробной части (у меня указана точка)

p<-read.table("my_data.dat",header=TRUE,dec=".")
X.mean<-mean(p$X);
Y.mean<-mean(p$Y);
print(c(X.mean,Y.mean)) # это чтобы потом отнять при расчетах

X.sd<-sd(p$X);
Y.sd<-sd(p$Y);
print(c(X.sd,Y.sd)) # это чтобы потом поделить при расчетах

p$X<-(p$X-X.mean)/X.sd
p$Y<-(p$Y-Y.mean)/Y.sd

Xnew.lm<-lm(Xnew~X+Y+I(X*Y)+I(X^2)+I(Y^2),data=p)
summary(Xnew.lm)
print(coef(Xnew.lm))

Ynew.lm<-lm(Ynew~X+Y+I(X*Y)+I(X^2)+I(Y^2),data=p)
summary(Ynew.lm)
print(coef(Ynew.lm))

new.data<-data.frame(X=c(1,2),Y=c(3,3))

# прогноз
new.data$X<-(new.data$X-X.mean)/X.sd
new.data$Y<-(new.data$Y-Y.mean)/Y.sd

print(cbind(predict(Xnew.lm,newdata=new.data),predict(Ynew.lm,newdata=new.data)))

если не вычитать и не делить, могут быть проблемы с ошибками округления (если координаты - десятки миллионов, а разница - метры)
Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: формула для пересчета координат

Сообщение Донецков »

Можно использовать табличный калькулятор Pinnacle, но он в настоящий момент снят с тех. поддержки...
Еще можно попробывать Кредовский Транскор.
Если есть еще мнения - делитесь...
Ответить

Вернуться в «Координаты и привязка»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей