Модератор: Tolik
ciberhunter писал(а):Можно надеяться что Доунлоадер полноценный скоро появится?
aleksey писал(а):zed
Разобрался с проекциями GoogleEarth и GoogleMaps на программном уровне, т.е. могу тайлы GE разжимать чтоб картинка не казалась сжатой (тайлы извлечённые GE_JPG_extractor-ом), если кто заинтересован, могу подкинуть подробную инфу.
P.S. Мне больше было бы интересно как пересчитываются градусы из проекции GoogleMaps в проекцию Яндекс-карт(уж не знаю, че там за проекция).
function GPos2LonLat(XY:TPoint;Azoom:byte;MT:PMapType):TExtendedPoint;
var zu,zum1,yy:extended;
begin
result.X:=((XY.x)-zoom[Azoom]/2)/(zoom[Azoom]/360);
case MT.projection of
1: begin
result.Y:=((XY.y)-zoom[Azoom]/2)/-(zoom[Azoom]/(2*PI));
result.Y:=(2*arctan(exp(result.Y))-PI/2)*180/PI;
end;
2: begin
result.Y:=((XY.y)-zoom[Azoom]/2)/-(zoom[Azoom]/(2*PI));
result.Y:=(2*arctan(exp(result.Y))-PI/2)*180/PI;
Zu:=result.y/(180/Pi);
yy:=((XY.y)-zoom[Azoom]/2);
repeat
Zum1:=Zu;
Zu:=arcsin(1-((1+Sin(Zum1))*power(1-MT.exct*sin(Zum1),MT.exct))/(exp((2*yy)/-(zoom[Azoom]/(2*Pi)))*power(1+MT.exct*sin(Zum1),MT.exct)));
until (abs(Zum1-Zu)<MerkElipsK)or(isNAN(Zu));
if not(isNAN(Zu)) then result.Y:=zu*180/Pi;
end;
3: begin
result.y:=-((XY.y)-zoom[Azoom]/2)/(zoom[Azoom]/360);
end;
end;
end;
function GLonLat2Pos(Ll:TExtendedPoint;Azoom:byte;MT:PMapType):Tpoint;
var z,c:real;
begin
result.x:=round(zoom[Azoom]/2+ll.x*(zoom[Azoom]/360));
case MT.projection of
1: begin
z:=sin(Ll.y*deg);
c:=(zoom[Azoom]/(2*Pi));
result.y:=round(zoom[Azoom]/2-0.5*ln((1+z)/(1-z))*c);
end;
2: begin
z:=sin(Ll.y*deg);
c:=(zoom[Azoom]/(2*Pi));
result.y:=round(zoom[Azoom]/2-c*(ArcTanh(sin(ll.y*deg))-MT.exct*ArcTanh(MT.exct*sin(ll.y*deg))) )
end;
3: result.y:=round(zoom[Azoom]/2-ll.y*(zoom[Azoom]/360));
end;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7