Содержание
- Пересчет географических координат, определение высоты над уровнем моря, поиск координат, география IP-адреса Geo IP
- Навигация
- Содержание
- Введение
- Описание проекции Меркатора/WGS84
- Описание проекции «Cферического Меркатора»
- Пересчет координат из широты/долготы в проекцию Меркатора/WGS84
- Теория
- Реализации
Пересчет географических координат, определение высоты над уровнем моря, поиск координат, география IP-адреса Geo IP
Навигация
Пересчет географических координат. Градусы -> градусы/минуты/секунды:
Пересчет географических координат. Градусы/минуты/секунды -> градусы:
Определение высоты над уровнем моря по координатам:
Форма поиска географических координат объекта на основе картографических сервисов Google или Yandex.
Новгородская обл., Бердск
Санкт-Петербург, Дворцовая наб., 38
55.7522,37.6156 (широта,долгота)
Недавно искали:
Ссылка на это место:
API
Если Вы хотите использовать поиск географических координат на Вашем сайте, то можете воспользоваться сервисом LatLong.ru на коммерческой основе.
Стоимость годового обслуживания или 5 000 поисковых запросов составляет 25$.
Для этого необходимо подключить к Вашему сайту скрипт LatLong.ru одним из двух способов:
1. Используя средства PHP
Необходимо передать в переменную данные по адресу //www.latlong.ru/latlongapi.php?ser=&q=
Сделать это можно, например, при помощи библиотеки Curl.
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, «https://www.latlong.ru/latlongapi.php?ser=&q=«);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_REFERER, getenv(«SERVER_NAME»));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec ($ch);
curl_close ($ch);
В результате работы данного скрипта в переменной $data будут содержаться данные в формате json.
Настройка сервиса LatLong.ru.
ser= — обязательный параметр. Вместо вставьте название поискового сервера. Возможные значения: yandex или google;
q= — обязательный параметр. Вместо вставьте Ваш поисковый запрос;
Кодировка — utf-8
При первом использовании географического сервиса LatLong.ru осуществляется привязка IP адреса к сайту, где был подключен данный сервис. Сделано это в целях безопасности и защиты от неправомерного использования географического сервиса.
Расшифровка полей ответа сервера:
results — Массив с результатами поиска географических координат.
status — Статус поискового запроса. OK — ошибок нет.
date — Дата окончания предоставления услуги.
hit — Количество оставшихся поисковых запросов.
Возможные ошибки:
Access Denied from IP
С данного IP адреса нет доступа. Возможно сменился IP адрес Вашего сайта. Обратитесь к администратору.
Access Denied from Host
С данного хоста нет доступа. Истек срок использования сервиса или количество поисковых запросов превысило норму. Обратитесь к администратору.
server returned an empty result!
Поисковый сервер вернул пустой результат.
In the search query contains illegal characters!
В поисковом запросе присутствуют запрещенные символы.
Empty query!
Пустой запрос.
Короткая шпаргалка для программистов.
Широта, Latitude, lat — идет с севера (North, N) на юг (South, S).
Долгота, Longitude, lng — идет с запада (West, W) на восток (East, E).
Практически всегда координаты идут в порядке “широта, долгота” — Lat, Lng. В Google Maps, в Яндекс-Картах, в Википедии. Это стоит зазубрить: в географии сначала идет Y, потом X.
И широта, и долгота измеряются в градусах. Градус можно понимать как геометрический градус, то есть 1 ⁄360 земной окружности. Иногда их записывают в виде дробного числа, с которым все понятно; иногда — в “часовом” виде: 12°34’56” — 12 градусов, 34 минуты, 56 секунд. Такая запись легко переводится в дробь: deg + min/60.0 + sec/3600.0
Долгота изменяется от -180 до +180; ноль — Основной меридиан, проходящий через Гринвич, минусовые значения — западное полушарие, плюсовые — восточное.
Широта изменяется от -90 до +90. Ноль — экватор, минусовые значения — южное полушарие, плюсовые — северное.
Длина одного градуса долготы непостоянна, поскольку долгота откладывается по окружности, параллельной экватору, и длина этой окружности уменьшается с увеличением (по модулю) широты. Считай длину градуса долготы по формуле
Длина одного градуса широты почти постоянна и равна 111 км.
Длина земной окружности (диапазон изменения координат) приблизительно равна 4*10⁸ м. В базовом типе числа с плавающей запятой умещается семь разрядов точности. Это значит, что в переменную или колонку типа single/float влезут координаты с точностью около 10 м. Это значит, что для хранения географических координат лучше использовать поля типа DOUBLE.
Расстояние между двумя координатами нельзя считать по Евклидовой формуле ( sqrt(x*x+y*y) ), потому что они находятся на сфере, а не на плоскости (поэтому, кстати, маршруты дальних перелетов выглядят “неоптимально кривыми” на плоской карте). Расстояние нужно считать по большой окружности.
Однако если тебе поставили задачу “показывать близлежащие объекты”, необязательно углубляться в математику и в географические расширения баз данных — для близлежащих точек вполне сойдет евклидово расстояние.
А если ещё упростить нашу модель, то можно просто показывать объекты, ограниченные отдельно по каждой координате: WHERE lat BETWEEN lat1 AND lat 2 AND lng BETWEEN lng1 AND lng2 . Особенно если ты собираешься показывать результаты выборки на прямоугольной карте. Алгоритм такой:
Такое условие можно запросто скормить движку полнотекстового поиска, например, Sphinx Search — именно так работает поиск на rentfeed.dp.ua.
- И, наконец, координаты Днепропетровска — 48 градусов северной широты, 35 градусов восточной долготы.
Описание вариантов пересчета широты/долготы в плоские координаты проекции Меркатора на базе эллипсоида WGS84 и на базе сфероида
Содержание
Введение
Картографический веб-сервис Google Maps для отображения карт использует проекцию Меркатора на сфере. Для начала рассмотрим более общий случай проекции Меркатора для эллипсоида WGS84, а потом будет не сложно перейти к сфере. !Переписать!
Описание проекции Меркатора/WGS84
Равноугольная цилиндрическая проекция Меркатора — одна из основных картографических проекций. Разработана Герардом Меркатором для применения в его «Атласе» в 1596г.
В наше время достаточно часто используется вариант этой проекции WGS 84/World Mercator (EPSG:3395) на базе общеземного эллипсоида WGS84 (EPSG:7030). Данный эллипсоид имеет размер большой полуоси (экваториальный радиус) равный 6378137,0 метров и меньшей полуоси (полярный радиус) —
6356752,314245 метра. Величина обратного уплощения (1/f) равна 298,257223563.
WKT представление это проекции:
Описание проекции «Cферического Меркатора»
В последнее время, в связи со стремительным развитием картографических веб сервисов, большое распространение получил другой вариант проекции Меркатора — на базе не эллипсоида, а сферы. Этот выбор обусловлен более простыми расчетами, которые могут быть быстро выполнены тонкими клиентами этих сервисов (например js скрипт в браузере). Часто, эту проекцию называют «сферическим Меркатором» (EPSG:3857).
Эта проекция имеет множество названий и кодов: OSGEO:41001, Google Mercator EPSG:900913, ESRI Web Mercator ESRI:102100 и ESRI:102113, Popular Visualisation CRS / Mercator EPSG:3785. Но наиболее правильно использовать код EPSG:3857, так как этим кодом были заменены все остальные, как в пространстве кодов EPSG, так и в ESRI.
Отличительное свойство этой проекции — равные полуоси сфероида, размером 6378137,0 метров.
WKT представление проекции:
Пересчет координат из широты/долготы в проекцию Меркатора/WGS84
Теория
Формулы пересчета:
X = a * long
Где:
- long/lat — долгота/широта в радианах;
- e — эксцентриситет эллипса,
- a — большая полуось эллипса;
- b — малая полуось эллипса;
Реализации
Для примера будем использовать координаты г. Москва: 55.751667 с.ш., 37.617778 в.д
Источник: