Determine se uma string é uma localização geográfica válida

Eu tenho um monte de “locais” – alguns são precisos (gaborone, botswana), alguns são geocódigos (40.75, -73.997) e alguns são completamente inúteis (#siliconcape). Eu preciso encontrar uma maneira de percorrer a lista e determinar a Cidade e o País de cada string e geocódigo e retornar nulos para os locais inválidos.

Existe algum tipo de biblioteca / serviço / api / método que pode ser usado para determinar se uma determinada cadeia representa ou não uma localização geográfica válida? Ao comprovar erros de digitação, erros de pedidos, etc.?

Provavelmente, o método mais fácil seria usar algo como a API de Geocodificação do Google . Vai levar uma string e tentar analisá-la para um local. Você pode obter saída como XML, JSON, CSV.

Aqui está um exemplo de saída CSV:

input : gaborone, botswana output: 200,4,-24.6541100,25.9087390 input : #siliconcape output: 602,0,0,0 input : 40.75,-73.997 output: 200,8,"324 W 30th St, New York, NY 10001, USA" 

Eu acho que encontrei uma solução – apenas compartilhá-lo aqui caso alguém precise disso:

Use a geocodificação da API do Google Maps – alimente endereços e receba as coordenadas de volta. Detalhes para fazê-lo via PHP: http://www.phpriot.com/articles/google-maps-geocoding/