Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Google map формула перевода / 22 сообщений из 22, страница 1 из 1
14.07.2018, 09:44
    #39673949
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
x_pixel_to_lng:
Код: pascal
1.
2.
a:=zoom(Form1.TrackBar1.Position);
result := x / a * 360 - 180;


y_pixel_to_lat:
Код: pascal
1.
2.
3.
a:=zoom(Form1.TrackBar1.Position);
n := PI - 2.0*PI*y / a;
result := 180.0 / PI * arctan( 0.5 * (exp(n) - exp(-n)) );


lng_to_x_pixel:
Код: pascal
1.
result := (x+180)/(360.0/a );


lat_to_y_pixel:
Код: pascal
1.
2.
a:=zoom(Form1.TrackBar1.Position);
result := a*(1 - Ln(Tan(Y * pi/180) + 1 / Cos (Y * pi/180 )) / PI) * 0.5;





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

showmessage(floattostr(x_pixel_to_lng_google(lng_to_x_pixel_google(60))));
showmessage(floattostr(y_pixel_to_lat_google(lat_to_y_pixel_google(80))));
...
Рейтинг: 0 / 0
14.07.2018, 10:01
    #39673952
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
что именно не так работает?
...
Рейтинг: 0 / 0
14.07.2018, 13:50
    #39673996
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
Tactical Nuclear Penguin,

Когда выходишь за границы экрана выходит ошибка деление на 0 не возможно, и не прорисовывается нижняя часть карты.
хотя яндекс я отображаю все ок!
...
Рейтинг: 0 / 0
14.07.2018, 14:16
    #39674000
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venza,

заключаешь эти формулы в try except ошибки нет, тобишь косяк в них...
...
Рейтинг: 0 / 0
14.07.2018, 14:48
    #39674003
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venzavenza,

заключаешь эти формулы в try except ошибки нет, тобишь косяк в них...
молодец, чо
...
Рейтинг: 0 / 0
14.07.2018, 15:01
    #39674006
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
defecator,

и?
...
Рейтинг: 0 / 0
14.07.2018, 15:06
    #39674007
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venzadefecator,

и?
где ты взял эти формулы ?
...
Рейтинг: 0 / 0
14.07.2018, 15:09
    #39674009
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
defecator,

Пытался вывести из вики... вот и хотел спросить где косяк.
...
Рейтинг: 0 / 0
14.07.2018, 15:19
    #39674011
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venzadefecator,

Пытался вывести из вики... вот и хотел спросить где косяк.
тута читал ?
https://habr.com/post/239251/
...
Рейтинг: 0 / 0
14.07.2018, 15:26
    #39674014
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
defecator,
Раньше видел, щас прочитал. Если ты про гугл - сфера, яндекс - эллипсоид, формулу там видел.
...
Рейтинг: 0 / 0
14.07.2018, 15:33
    #39674016
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venza,

Суть то в чем?! не уловлю...
...
Рейтинг: 0 / 0
14.07.2018, 15:49
    #39674017
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
Грубо говоря вот:
...
Рейтинг: 0 / 0
14.07.2018, 15:50
    #39674018
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venza,
а яндекс все норм
...
Рейтинг: 0 / 0
14.07.2018, 15:58
    #39674019
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venzavenza,
а яндекс все норм

В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
...
Рейтинг: 0 / 0
14.07.2018, 16:03
    #39674021
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
defecatorvenzavenza,
а яндекс все норм

В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?
...
Рейтинг: 0 / 0
14.07.2018, 16:11
    #39674023
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
venzadefecatorпропущено...


В Гугле используется Web Mercator.
Для настоящего Меркатора на сфере формулы те же,
но входные координаты должны быть координатами на сфере
1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?

Ищи в сети SASPlanet - это опенсорсная ГИС, написана на 100% на Delphi
Там ты найдёшь все ответы
...
Рейтинг: 0 / 0
14.07.2018, 16:12
    #39674024
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
Я так понимаю формулы вот, но как обратные вывести?
https://en.wikipedia.org/wiki/Web_Mercator
...
Рейтинг: 0 / 0
14.07.2018, 16:17
    #39674025
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
defecatorvenzaпропущено...

1) Что ты подразумеваешь под входными координатами?
2) у тебя есть готовое решение(формулы)?

Ищи в сети SASPlanet - это опенсорсная ГИС, написана на 100% на Delphi
Там ты найдёшь все ответы


Миллион раз смотрел, сложно в сас...
Вот код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
function TCoordConverterMercatorOnSphere.LonLat2MetrInternal(const ALl: TDoublePoint): TDoublePoint;
var
  VLonLat: TDoublePoint;
begin
  VLonLat := ALl;
  VLonLat.x := VLonLat.x * (Pi / 180);
  VLonLat.y := VLonLat.y * (Pi / 180);
  result.x := Datum.GetSpheroidRadiusA * VLonLat.x;
  result.y := Datum.GetSpheroidRadiusA * Ln(Tan(PI / 4 + VLonLat.y / 2));
end;

function TCoordConverterMercatorOnSphere.LonLat2RelativeInternal(const XY: TDoublePoint): TDoublePoint;
var
  z, c: Extended;
begin
  Result.x := 0.5 + XY.x / 360;
  z := sin(XY.y * Pi / 180);
  c := 1 / (2 * Pi);
  Result.y := 0.5 - 0.5 * ln((1 + z) / (1 - z)) * c;
end;

function TCoordConverterMercatorOnSphere.Metr2LonLatInternal(const AMm: TDoublePoint): TDoublePoint;
begin
  result.X := (AMm.X / Datum.GetSpheroidRadiusA) * (180 / Pi);

  Result.Y := (AMm.Y / Datum.GetSpheroidRadiusA);
  Result.Y := exp(Result.Y);
  Result.Y := ArcTan(Result.Y);
  Result.Y := (2 * (180 / Pi) * Result.Y) - 90;
end;

function TCoordConverterMercatorOnSphere.Relative2LonLatInternal(
  const XY: TDoublePoint): TDoublePoint;
begin
  Result.X := (XY.x - 0.5) * 360;
  Result.Y := -(XY.y - 0.5) * (2 * PI);
  Result.Y := (2 * arctan(exp(Result.Y)) - PI / 2) * 180 / PI;
end;

...
Рейтинг: 0 / 0
14.07.2018, 16:29
    #39674026
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
Ясно, никто ничего дельного не подскажет.
...
Рейтинг: 0 / 0
14.07.2018, 16:44
    #39674027
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
Из чего во что ты хочешь перевести?
...
Рейтинг: 0 / 0
14.07.2018, 17:07
    #39674030
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
rgreatИз чего во что ты хочешь перевести?
Из X и Y в LON и LAT и наоборот из LON и LAT в X и Y.
...
Рейтинг: 0 / 0
14.07.2018, 17:13
    #39674031
venza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Google map формула перевода
пробовал щас и для osm https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_numbers_to_lon..2Flat.
вот что получилось, но такая же фигня:
Код: pascal
1.
2.
3.
4.
//X:=((lon+180)/360)*exp(2*ln(z))
//Y:=(1-(ln(tan(lat*pi/180)+1/cos(lat*pi/180)))/pi)*exp(2*ln(z-1))
//lon:=(x/exp(2*ln(z)))*360-180
//lat:=arctan(sin(pi-(y/exp(2*ln(z))*2*pi))*(180/pi)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Google map формула перевода / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]