Как нормализовать название города из множества похожих названий

Я получаю название города из стороннего API. Этот API не возвращает нормализованное название города. Например, иногда San Francisco, иногда San Francisco, CA, иногда San Francisco, USA. Мне не нужен почтовый адрес и т. Д. Мне просто нужно нормализовать название города, чтобы оно было чем-то единообразным. Я ищу службу, которая могла бы помочь мне с этим требованием.

P.S. Это не мобильное приложение, его веб-приложение и местоположение не поступают из браузера.


person Sahas    schedule 20.09.2016    source источник


Ответы (2)


Вы можете использовать API Карт Google для получения нормализованного адреса:

1) Получить результат с: https://maps.googleapis.com/maps/api/geocode/json?address=san_francisco

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "San Francisco",
               "short_name" : "SF",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Condado San Francisco",
               "short_name" : "Condado San Francisco",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Estados Unidos",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "San Francisco, California, EE. UU.",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 37.9298239,
                  "lng" : -122.28178
               },
               "southwest" : {
                  "lat" : 37.6398299,
                  "lng" : -123.173825
               }
            },
            "location" : {
               "lat" : 37.7749295,
               "lng" : -122.4194155
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.812,
                  "lng" : -122.3482
               },
               "southwest" : {
                  "lat" : 37.70339999999999,
                  "lng" : -122.527
               }
            }
         },
         "place_id" : "ChIJIQBpAG2ahYAR_6128GcTUEo",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

2) Извлеките название города из $data['results'][0]['address_components'][0]['long_name'].

Вы должны убедиться, что возвращаемый контент содержит описанные поля, а $data['status'] соответствует "ОК".

Источник: https://developers.google.com/maps/documentation/geocoding/intro< /а>

person Rafa0809    schedule 19.01.2017

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

person Joey Wood    schedule 20.09.2016
comment
спасибо за предложение. Это не последовательно ты :( - person Sahas; 20.09.2016