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

Системы координат, проекции, преобразования, привязка
Ответить
marataziat
Новоприбывший
Сообщения: 4
Зарегистрирован: 22 янв 2021, 10:14
Репутация: 0
Откуда: Казахстан

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

Сообщение marataziat » 22 янв 2021, 10:25

Мне нужно сделать парсить данных о ДТП через тайлы яндекс карт. Яндекс карты используют 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.

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 22 янв 2021, 11:15

зачем так?

marataziat
Новоприбывший
Сообщения: 4
Зарегистрирован: 22 янв 2021, 10:14
Репутация: 0
Откуда: Казахстан

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

Сообщение marataziat » 12 фев 2021, 17:01

Согласен, билиотека ненужны была. Для расчета простого 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 чтобы понять что там написанно и что вообще имеется ввиду.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

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

Сообщение Игорь Белов » 13 фев 2021, 23:18

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

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

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

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

Сообщение Игорь Белов » 13 фев 2021, 23:35

Обратное преобразование y в φ сложнее. Можно применить последовательные приближения:
Вложения
eq2.png
eq2.png (6.3 КБ) 5680 просмотров
The purpose of computing is insight, not numbers

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

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

Сообщение Игорь Белов » 13 фев 2021, 23:46

А можно использовать разложение в ряд:
Вложения
eq3.png
eq3.png (38.08 КБ) 5679 просмотров
The purpose of computing is insight, not numbers

Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

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

Сообщение Sergey Astakhov » 14 фев 2021, 03:05

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

marataziat
Новоприбывший
Сообщения: 4
Зарегистрирован: 22 янв 2021, 10:14
Репутация: 0
Откуда: Казахстан

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

Сообщение marataziat » 23 фев 2021, 11:59

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.

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 23 фев 2021, 12:52

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

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

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 24 фев 2021, 13:38

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

marataziat
Новоприбывший
Сообщения: 4
Зарегистрирован: 22 янв 2021, 10:14
Репутация: 0
Откуда: Казахстан

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

Сообщение marataziat » 24 фев 2021, 14:37

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

Ответить

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

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

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