Как сформировать окрестность заданного метрического радиуса вокруг географически заданного центра в python?

Собственно проблема достаточно простая: сформировать окресность заданного в киллометрах радиуса вокруг точки, заданной географическими координатами. То есть хочется иметь функцию, которая на вход получает центр окружности в виде координат долготы и широты, радиус а на выходе отдает координату из этой epsilon окрестности, выбранную случайным образом согласно нормальному закону или равномерно распределенных точек внутри окружности. Наверняка на питоне это уже имеется в том или ином виде, но поскольку эта экосистема для меня крайне новая, так с разу найти не удалось что-нибудь простое и удобное. Заранее спасибо за ответы.
  • Вопрос задан
  • 760 просмотров
Пригласить эксперта
Ответы на вопрос 3
@vQFd4 Автор вопроса
freeExec не, не забыл )) только тогда уж не круга, а сферического сегмента )) почему это важно, можно узнать, например, из книжечки Владимира Арнольда для детей от 5 до 15 ))
Но даже, если считать, что искажения развертки нам неважны и мы будем использовать в качестве геометрического места точек, удаленных на заданное расстояние именно круг. То все равно возникают определенные проблемы с построением распределения на этой замечательной геометрической фигуре. Если для равномерного распределения еще все более-менее просто, чтобы задать равномерное распределение достаточно просто перейти к полярным координатам и использовать равномерно распределенные выборки для угла и радиуса, то для нормального распределения такой фокус уже не прокатит, то есть нормально распределенная выборка угла вращения и радиуса вовсе не даст мне двумерного нормального распределения на плоскости внутри круга по декартовым координатам, так что придется придумывать что-то похитрее.
И касательно исходного вопроса. Я же не предлагаю вам нарисовать мне решение. Это, я думаю, вполне типовая задача, и я уверен, что почти наверное существует какой-нибудь модуль на питоне, который ее решает. А поскольку я питон начал использовать совсем недавно, пару недель назад, то я к сожалению не в курсе, что мне выбрать. Есть множество всяких модулей для работы с геоданными, но пока я в них нужной мне функциональности не нашел к сожалению. И я буду вам крайне признателен, если вы ткните меня в какой-нибудь модуль, где это есть.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
А в чём собственно сложность? Забыли формулу круга? К ней ещё добавить масштабные коэффициенты выбранной системы координат для пересчёта градусов в метры.
Ответ написан
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Что вы имеете в виду под "нормальным распределением в окрестности радиусом..."? Нормальное распределение задается мат-ожиданием (это у нас центр) и дисперсией. Это не значит, что наша случайная величина (точка) не выйдет за пределы этой вашей окружности, если под ее радиусом вы и понимаете дисперсию.
А если нет, то правильно ли я понимаю, что вашу задачу можно переформулировать так:
Получить случайную точку на геоиде с заданным мат-ожиданием и диспеорсией, которая (точка) лежит в заданном радиусе. То есть брать случайные точки по заданному закону распределения пока не встретится такая, которая внутри окружности?

Окружность в контексте нормального распределения все запутывает.
Ещё не описано что делать на больших радиусах. Если речь только омалых радиусах, то можно работать с проекцией, например мерактором и с декартовыми координатами, как вы сами сказали.
Если принципиально, то вы правильно говорили про полярные координаты. Равномерным распределением выбираем азимут точки от заданного центра, а нормальным распределением расстояние по модулю и ищем формулы, которые прибавят вам заданный полярными координатами вектор к гео-точке.

Питон тут ни при чем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы