выбор СК для слоя
-
- Участник
- Сообщения: 55
- Зарегистрирован: 11 фев 2016, 23:52
- Репутация: 0
выбор СК для слоя
Здравствуте, никак не могу разобраться
У меня есть векторный слой в Qgis с СК, где координаты записаны в формате
(32.08632477662723, 54.78251431736967)
Я использую этот слой в программе на python, карта с этим слоем отображается в окне формочки.
Создал обработчик нажатия мыши на карту и получаю координаты точки мыши в формате (3.5718e 06, 7.31896e 06)
p1 = canvas.getCoordinateTransform().toMapCoordinates(x, y)
Вопрос, как их превести к одному формату? то есть либо в каком формате СК надо сохранить слой, либо как их можно пересчитать координаты?
Мне надо определять, есть объект в рядом с точкой на карте или нет.
Буду признателен за помощь)
У меня есть векторный слой в 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: выбор СК для слоя
К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
-
- Участник
- Сообщения: 55
- Зарегистрирован: 11 фев 2016, 23:52
- Репутация: 0
Re: выбор СК для слоя
как мне кажется, тут либо нужна функция, которая переводит координаты в один формат, либо сохранить слой в нужном формате. Тем более я как то создавал другой слой и на нем работало. Того не сохранилось. Может можно в проекте задать нужную СК?Алексей Борисов писал(а):К сожалению, пока так и не взялся за изучение связки Python + QGIS, но кое-какие соображения имеются.
Координаты точки мышки — явно прямоугольные. Метры.
Координаты точки в вашем слое — уже геодезические. Градусы и доли градуса.
Осталось только определить закономерность между этими координатами. Попробуйте, пожалуйста, получить координаты одной и той же точки в обоих форматах. Сперва узнать координаты точки в слое, а потом щёлкнуть по ней мышкой и получить координаты от обработчика.
вот например координаты объекта:
(3,57208e 06, 7.32009e 06) - координаты мыши
(32,08632477662723, 54.78251431736967) - объект слоя
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
Re: выбор СК для слоя
Как мне показалось, программа выдаёт координаты мышки в системе Web Mercator.
Написал функцию, конвертирующую геодезические координаты в координаты Web Mercator. Стоит заметить, что ваши координаты предоставлены в формате (Долгота, Широта).
Функция вернула следующее: [3571833.3355617407, 7319770.4736439213]. Как раз то, что нужно.
Написал функцию, конвертирующую геодезические координаты в координаты 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)
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 02 авг 2014, 18:29
- Репутация: 24
- Откуда: Москва
Re: выбор СК для слоя
В общем, вы можете либо воспользоваться моей функцией для пересчёта координат, либо пересохранить ваши данные в Web-Mercator.
Формулы для пересчёта я брал вот тут: https://habrahabr.ru/post/239251/, при желании можно сделать из них обратные формулы.
Формулы для пересчёта я брал вот тут: https://habrahabr.ru/post/239251/, при желании можно сделать из них обратные формулы.
-
- Участник
- Сообщения: 55
- Зарегистрирован: 11 фев 2016, 23:52
- Репутация: 0
Re: выбор СК для слоя
Благодарю))) помогли сильно))
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость