Страница 1 из 1
выбор СК для слоя
Добавлено: 27 мар 2017, 22:14
lololol
Здравствуте, никак не могу разобраться
У меня есть векторный слой в Qgis с СК, где координаты записаны в формате
(32.08632477662723, 54.78251431736967)
Я использую этот слой в программе на python, карта с этим слоем отображается в окне формочки.
Создал обработчик нажатия мыши на карту и получаю координаты точки мыши в формате (3.5718e 06, 7.31896e 06)
p1 = canvas.getCoordinateTransform().toMapCoordinates(x, y)
Вопрос, как их превести к одному формату? то есть либо в каком формате СК надо сохранить слой, либо как их можно пересчитать координаты?
Мне надо определять, есть объект в рядом с точкой на карте или нет.
Буду признателен за помощь)
Re: выбор СК для слоя
Добавлено: 28 мар 2017, 09:13
Аминодов-Борисов
К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
Re: выбор СК для слоя
Добавлено: 29 мар 2017, 16:17
lololol
Алексей Борисов писал(а):К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
как мне кажется, тут либо нужна функция, которая переводит координаты в один формат, либо сохранить слой в нужном формате. Тем более я как то создавал другой слой и на нем работало. Того не сохранилось. Может можно в проекте задать нужную СК?
вот например координаты объекта:
(3,57208e 06, 7.32009e 06) - координаты мыши
(32,08632477662723, 54.78251431736967) - объект слоя
Re: выбор СК для слоя
Добавлено: 29 мар 2017, 17:28
Аминодов-Борисов
Как мне показалось, программа выдаёт координаты мышки в системе Web Mercator.
Написал функцию, конвертирующую геодезические координаты в координаты Web Mercator. Стоит заметить, что ваши координаты предоставлены в формате (Долгота, Широта).
Код: Выделить всё
import numpy
def convert_coords(lat, lon):
a = 6378137.0
alpha = 1.0/298.257223563
e2 = 2*alpha - alpha**2
logg = numpy.tan((numpy.pi/4) + (numpy.radians(lat)/2.0))
x = a*numpy.radians(lon)
y = a*numpy.log(logg)
return [x, y]
lat = 54.78251431736967
lon = 32.08632477662723
print convert_coords(lat, lon)
Функция вернула следующее:
[3571833.3355617407, 7319770.4736439213]. Как раз то, что нужно.
Re: выбор СК для слоя
Добавлено: 29 мар 2017, 17:48
Аминодов-Борисов
В общем, вы можете либо воспользоваться моей функцией для пересчёта координат, либо пересохранить ваши данные в Web-Mercator.
Формулы для пересчёта я брал вот тут:
https://habrahabr.ru/post/239251/, при желании можно сделать из них обратные формулы.
Re: выбор СК для слоя
Добавлено: 01 апр 2017, 14:21
lololol
Благодарю))) помогли сильно))