выбор СК для слоя

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
lololol
Участник
Сообщения: 55
Зарегистрирован: 11 фев 2016, 23:52
Репутация: 0

выбор СК для слоя

Сообщение lololol » 27 мар 2017, 22:14

Здравствуте, никак не могу разобраться
У меня есть векторный слой в Qgis с СК, где координаты записаны в формате
(32.08632477662723, 54.78251431736967)
Я использую этот слой в программе на python, карта с этим слоем отображается в окне формочки.
Создал обработчик нажатия мыши на карту и получаю координаты точки мыши в формате (3.5718e 06, 7.31896e 06)
p1 = canvas.getCoordinateTransform().toMapCoordinates(x, y)
Вопрос, как их превести к одному формату? то есть либо в каком формате СК надо сохранить слой, либо как их можно пересчитать координаты?
Мне надо определять, есть объект в рядом с точкой на карте или нет.
Буду признателен за помощь)

Аминодов-Борисов
Активный участник
Сообщения: 153
Зарегистрирован: 02 авг 2014, 18:29
Репутация: 24
Откуда: Москва

Re: выбор СК для слоя

Сообщение Аминодов-Борисов » 28 мар 2017, 09:13

К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.

lololol
Участник
Сообщения: 55
Зарегистрирован: 11 фев 2016, 23:52
Репутация: 0

Re: выбор СК для слоя

Сообщение lololol » 29 мар 2017, 16:17

Алексей Борисов писал(а):К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
как мне кажется, тут либо нужна функция, которая переводит координаты в один формат, либо сохранить слой в нужном формате. Тем более я как то создавал другой слой и на нем работало. Того не сохранилось. Может можно в проекте задать нужную СК?
вот например координаты объекта:
(3,57208e 06, 7.32009e 06) - координаты мыши
(32,08632477662723, 54.78251431736967) - объект слоя

Аминодов-Борисов
Активный участник
Сообщения: 153
Зарегистрирован: 02 авг 2014, 18:29
Репутация: 24
Откуда: Москва

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]. Как раз то, что нужно.

Аминодов-Борисов
Активный участник
Сообщения: 153
Зарегистрирован: 02 авг 2014, 18:29
Репутация: 24
Откуда: Москва

Re: выбор СК для слоя

Сообщение Аминодов-Борисов » 29 мар 2017, 17:48

В общем, вы можете либо воспользоваться моей функцией для пересчёта координат, либо пересохранить ваши данные в Web-Mercator.
Формулы для пересчёта я брал вот тут: https://habrahabr.ru/post/239251/, при желании можно сделать из них обратные формулы.

lololol
Участник
Сообщения: 55
Зарегистрирован: 11 фев 2016, 23:52
Репутация: 0

Re: выбор СК для слоя

Сообщение lololol » 01 апр 2017, 14:21

Благодарю))) помогли сильно))

Ответить

Вернуться в «Я новичок!»

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 1 гость