Эта статья представляет собой введение в геокодирование, основы геокодирования и решений, связанных с геокодированием для вашего бизнеса и разработки продуктов.

Исходная статья: https://blog.petehouston.com/introduction-to-geocoding/

Геокодирование

К сведению, геокодирование - это процесс, который преобразует адреса в географические координаты на этой планете, Земля. Обычно координата состоит из двух значений:

  • долгота
  • широта.

Если вы хотите предоставить какую-либо функцию, которая связана с местонахождением пользователей, необходимо геокодирование. Например:

  • Сортировка всех мест от ближайшего к самому дальнему, так называемая «сортировка по расстоянию».
  • Найдите все места или пользователей в радиусе 15 км от определенного места.
  • … и т. д.

Геокодирование очень полезно для реализации этих функций.

Другой связанный термин, «обратное геокодирование», который обращает геокодирование, то есть преобразовывает географические координаты в реальные адреса.

Но возникает вопрос: «как мне получить такие данные для геокодирования?»

Есть два решения:

  1. Используйте поставщика услуг геокодирования, например: Google Geocoding API
  2. Создайте базу данных геокодирования.

Решение 1. Используйте поставщика услуг геокодирования

Это решение очень легко реализовать, поскольку оно требует лишь некоторых видов вызовов API и преобразования результатов в полезную информацию.

Посмотрите пример со страницы API.

Учитывая этот вызов API:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY

Ответ JSON покажет все об адресе «1600 Amphitheatre Parkway, Mountain View, CA».

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Pkwy",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4224764,
               "lng" : -122.0842499
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4238253802915,
                  "lng" : -122.0829009197085
               },
               "southwest" : {
                  "lat" : 37.4211274197085,
                  "lng" : -122.0855988802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

Однако у него есть недостатки, это не бесплатно. Конечно, бесплатного обеда не бывает. Давайте посмотрим на API геокодирования Google https://developers.google.com/maps/documentation/geocoding/start.

Возьмем в качестве образца расценки на Google Geocoding API.

Это стоит за запрос, и для первых 100 тысяч запросов это будет примерно 0,005 доллара США * 100 000 = 500 долларов США.

Для следующих 400 тыс. Запросов это будет стоить 0,004 * 400 000 = 1600 долларов.

Таким образом, первые 500 тысяч запросов в месяц будут стоить вам: 500 долларов США + 1600 долларов США = 2100 долларов США.

Если ваши услуги или продукты могут покрыть эту ежемесячную стоимость, вам не о чем беспокоиться.

Но малому бизнесу может быть сложно оплачивать этот ежемесячный счет.

Честно говоря, мне нравится этот API, потому что он предоставляет много деталей о местоположении, поэтому разработчики создают вокруг него больше интересных функций.

Решение 2. Создайте базу данных геокода

Если вы считаете, что использование API внешних служб для геокодирования слишком дорого для ваших продуктов, тогда вы можете подумать о создании базы данных геокодирования.

Вы можете спросить: как получить такую ​​информацию, чтобы поместить ее в базу данных?

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

Для справки вы можете взять данные с этого сервиса: http://download.geonames.org/export/zip/

Они предоставляют наиболее распространенные данные и частые обновления, и это бесплатно.

Однако их базы данных не меньше Google. Это означает, что вам нужно принять во внимание некоторые соображения при создании приложений. Например:

  • Вам действительно нужно получить точные координаты конкретного места? Влияет ли расширение на более крупную территорию на бизнес-требования? Вместо того, чтобы рассчитывать по почтовому адресу, используйте код района.
  • Вам нужно точное измерение?
  • Нужно ли вам измерять земной шар или только местность?
  • … и т. д.

Ответив на все вопросы, вы можете решить, стоит ли создавать базу данных геокодирования.

Дополнительное решение: комбинированное решение

Возможна комбинация решений 1 и 2, и я думаю, что это разумно для большинства продуктов и услуг.

Например: y вы можете подумать о том, чтобы сделать запрос к внешним службам API для получения данных и сохранения в базах данных. Позже вы можете делать запросы из баз данных для обработки вычислений по мере необходимости.

Что-то вроде этого сработает. Это полностью зависит от того, как спроектирована система и реализовано техническое решение.

Вывод

Выбор за вами. У обоих решений есть свои плюсы и минусы, что вам нужно учитывать, если геокодирование действительно соответствует вашему бизнесу и потребностям пользователей.

Надеюсь, эта статья даст вам некоторое представление о геокодировании и решениях для работы с ним.

Привет, я Пит Хьюстон, инженер-программист, ведущий ежедневный блог на https://blog.petehouston.com

Следуй за мной, если хочешь :)