Страница 1 из 1

Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 22 янв 2021, 10:25
marataziat
Мне нужно сделать парсить данных о ДТП через тайлы яндекс карт. Яндекс карты используют x/y систему которую я не понимаю:
https://core-renderer-tiles.maps.yandex ... 0120205535

Мне нужно создать какую-то функцию которая преобразует lat,lon в EPSG:3395. На гитхабе искал, нашел репозиторий: https://github.com/Komzpa/twms/blob/6ed ... ons.py#L36 Но никак не могу извлечь из него такую функцию.

Код: Выделить всё

(Pdb) tile_by_coords((76.945465,43.238293), 2, srs="EPSG:3395")
(1.4274748055555555, 0.7345461819804504)
(Pdb) tile_by_coords((43.238293, 76.945465), 2, srs="EPSG:3395")
(1.2402127388888888, 0.3120164424632019)
1.2402127388888888, 0.3120164424632019 это даже не близко. Должно быть что-то типо 729, 376.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 22 янв 2021, 11:15
trir
зачем так?

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 12 фев 2021, 17:01
marataziat
Согласен, билиотека ненужны была. Для расчета простого EPSG:3395можно обойтись без билиотеки:

Код: Выделить всё

import math
def y2lat(a):
  return 180.0/math.pi*(2.0*math.atan(math.exp(a*math.pi/180.0))-math.pi/2.0)
def lat2y(a):
  return 180.0/math.pi*math.log(math.tan(math.pi/4.0+a*(math.pi/180.0)/2.0))
Скопипащщено с https://wiki.openstreetmap.org/wiki/Mercator#Python


Но яндекс карты используют какой то другой гугл шарик или что то вроде того, это описали тут: viewtopic.php?t=19763#p147223 но у меня нету достаточного опыта с GIS чтобы понять что там написанно и что вообще имеется ввиду.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 13 фев 2021, 23:18
Игорь Белов
Вы немного путаете. Источник имеет в виду EPSG:3857, которая основана на гуглосфере. Формулы там действительно простые. У Яндекса же EPSG:3395 основана на эллипсоиде WGS 84, и формулы несколько сложнее.

Впрочем, широту φ в координату y пересчитать просто:
eq1.png
eq1.png (3.79 КБ) 7359 просмотров
Здесь a — экваториальный радиус, одинаково равный 6378137 м на гуглосфере и на эллипсоиде WGS 84;
e — эксцентриситет, равный 0 для сферы и 0.0818191908426215 для эллипсоида.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 13 фев 2021, 23:35
Игорь Белов
Обратное преобразование y в φ сложнее. Можно применить последовательные приближения:

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 13 фев 2021, 23:46
Игорь Белов
А можно использовать разложение в ряд:

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 14 фев 2021, 03:05
Sergey Astakhov
marataziat писал(а):
22 янв 2021, 10:25
Но никак не могу извлечь из него такую функцию.
А что у вас не получается? Вам код непонятен или что?
Там используется библиотека pyproj, которая собственно и выполняет преобразование координат. Если не хотите вникать в математические подробности конвертации координат и писать их самостоятельно - подключить её будет самым простым решением.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 23 фев 2021, 11:59
marataziat
Sergey Astakhov писал(а):
14 фев 2021, 03:05
А что у вас не получается? Вам код непонятен или что?

Код: Выделить всё

from pyproj import Transformer

trans = Transformer.from_crs(
    "epsg:3395",
    "+proj=utm +zone=10 +ellps=WGS84",
    always_xy=True,
)
xx, yy = trans.transform('37.617778', '55.751667')
print(xx,yy)
Через pyproj тоже неполучается вывести xy. Выходят 11308044.076243047 19995770.634648945. Но я сморел на запросы яндекс карт, там таких больших XY нигде не используют. X и Y обычно в диапазоне от 100 до 10000.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 23 фев 2021, 12:52
gamm
пара небольших вопросов:
1) С чего это координаты epsg:3395 у вас в градусах?
2) Какое отношение UTM, Zone 10 имеет к координатам Яндекса?

попробуйте ответить (себе), и поправить код ...

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 24 фев 2021, 13:38
freeExec
marataziat писал(а):
23 фев 2021, 11:59
X и Y обычно в диапазоне от 100 до 10000.
Более того, это не координаты у яндекса, а номера тайлов.

Re: Никак немогу сделать перевод с lat,lon в EPSG:3395 яндекс карт на питоне.

Добавлено: 24 фев 2021, 14:37
marataziat
freeExec писал(а):
24 фев 2021, 13:38
Более того, это не координаты у яндекса, а номера тайлов.
Получается их не через epsg:3395 вычисляют? Тогда как?