random-location-generator
Мгновенная генерация случайных географических координат. Бесплатный генератор случайных мест создает допустимые значения широты и долготы с интерактивной картой. Идеально подходит для тестирования приложений.
Генератор случайных мест
Документация
Генератор случайных местоположений — это инструмент, который создаёт случайную пару географических координат: широту и долготу. Каждый результат обозначает точку, которая может находиться в любом месте на поверхности Земли — в открытом океане, на городской улице или на вершине горы.
Что создаёт этот инструмент
При каждом нажатии создаются одно значение широты от -90° до 90° и одно значение долготы от -180° до 180°. Инструмент показывает оба числа в десятичных градусах, например 60,0000° с. ш., 90,0000° з. д., и отмечает точку на простой карте мира. Отрицательная широта означает, что точка находится к югу от экватора; отрицательная долгота — что она находится к западу от нулевого меридиана, проходящего через Гринвич в Великобритании.
Как пользоваться генератором случайных местоположений
- Нажмите кнопку Сгенерировать.
- Прочитайте координаты, показанные под кнопкой, с указанием направлений N/S и E/W.
- Посмотрите на маркер на карте мира, чтобы примерно определить положение точки.
- Нажмите Копировать, чтобы скопировать координаты для использования в другом месте.
- Снова нажмите Сгенерировать, чтобы получить новую точку. Количество повторений не ограничено.
- Нажмите Сбросить, чтобы удалить результат и начать заново.
Как вычисляются координаты (формула)
Долгота вычисляется просто: она выбирается равномерно, то есть любое значение между -180° и 180° имеет одинаковую вероятность. Формула:
где λ — долгота в градусах, а v — случайное число от 0 до 1.
Широта вычисляется иначе, и именно здесь часто допускают ошибку. Используется следующая формула:
где φ — широта, преобразованная из радиан в градусы, u — отдельное случайное число от 0 до 1, а arcsin — обратная функция синуса.
Почему широта не выбирается с помощью обычного случайного числа
Параллель широты у полюсов короткая. Параллель широты на экваторе длинная и огибает почти всю планету. Если бы широта выбиралась с помощью обычного случайного числа между -90 и 90, каждый градус широты получал бы одинаковую долю результатов, хотя полярные параллели охватывают гораздо меньшую часть поверхности Земли, чем экваториальные. В результате слишком много точек оказалось бы около полюсов.
Формула с арксинусом устраняет эту проблему. Она распределяет точки так, что каждый участок поверхности Земли имеет одинаковую вероятность быть выбранным, независимо от близости к полюсу. Эта идея называется выбором точек на сфере и основана на правиле, которое иногда называют теоремой Архимеда о шляпе и цилиндре: площадь полосы между параллелями зависит от разности синусов её границ, а не от разности градусов.
Пример расчёта
Предположим, генератор получает два случайных числа: u = 0,9330127 для широты и v = 0,25 для долготы.
- широта = arcsin(2 × 0,9330127 − 1) = arcsin(0,8660254) = 60°
- долгота = 0,25 × 360 − 180 = -90°
Результат: 60,0000° с. ш., 90,0000° з. д.; это точка недалеко от Гудзонова залива на севере Канады.
Пример кода
Те же два шага работают в любом языке программирования: получить два случайных числа между 0 и 1, применить формулу с арксинусом к первому, чтобы получить широту, и масштабировать второе, чтобы получить долготу.
Python
1import random
2import math
3
4def generate_random_coordinates():
5 u = random.random()
6 v = random.random()
7 latitude = math.degrees(math.asin(2 * u - 1))
8 longitude = v * 360 - 180
9 return latitude, longitude
10JavaScript
1function generateRandomCoordinates() {
2 const u = Math.random();
3 const v = Math.random();
4 const latitude = Math.asin(2 * u - 1) * (180 / Math.PI);
5 const longitude = v * 360 - 180;
6 return { latitude, longitude };
7}
8Более простой вариант, в котором пропускается шаг с арксинусом и широта выбирается как random.uniform(-90, 90), проще написать, но он группирует точки около полюсов вместо равномерного распределения по поверхности Земли.
Частое применение
Разработчики программ используют случайные координаты для тестирования функций GPS, отображения карт и приложений, работающих с местоположением, без ручного подбора тестовых данных. Дизайнеры игр используют их для размещения точек появления персонажей или мест, где спрятаны сокровища. Преподаватели используют их, чтобы вместе с учениками отрабатывать чтение широты и долготы. Исследователи используют их для выбора непредвзятых мест отбора проб в полевых исследованиях, поскольку метод с арксинусом не отдаёт предпочтения какой-либо области земного шара.
Часто задаваемые вопросы
В каком формате представлены координаты?
Десятичные градусы (DD), например 40,7128° с. ш., 74,0060° з. д. Этот формат используется большинством картографических сервисов, включая Google Maps, а также устройствами GPS.
Почему так много случайных координат попадает в океан?
Вода покрывает около 71 % поверхности Земли, поэтому случайная точка с большей вероятностью окажется в океане, чем на суше. Это ожидаемо и подтверждает равномерное распределение координат, а не свидетельствует о недостатке инструмента.
Можно ли генерировать координаты только для одной страны или континента?
Нет. Этот инструмент выбирает точки в любой части Земли. Чтобы ограничить результаты определённым регионом, после генерации потребуется дополнительная фильтрация координат либо инструмент с ограничениями по границам.
Насколько точны координаты?
Каждое значение содержит 4 цифры после десятичного разделителя. Для широты это соответствует точности около 11 метров (36 футов) в любой точке Земли. Для долготы те же 4 цифры соответствуют примерно 11 метрам вблизи экватора; ближе к полюсам это расстояние уменьшается, поскольку меридианы там сближаются.
Являются ли эти координаты действительными местоположениями в реальном мире?
Да. Каждый результат представляет собой математически допустимую точку на поверхности Земли, хотя она может находиться в открытом океане, на льду или в другом месте, где поблизости нет населённых пунктов.
Как перевести десятичные градусы в градусы, минуты и секунды (DMS)?
Целая часть числа обозначает градусы. Умножьте дробную часть на 60, чтобы получить минуты. Дробную часть полученного результата снова умножьте на 60, чтобы получить секунды.