geolocation - Buscar el nombre del condado para un Lat/Long
geocoding latitude-longitude (5)
Estoy tratando de encontrar un servicio web que me permita obtener un nombre de Condado (no País) para un Lat / Long específico. Estaría realizando la búsqueda dentro de una aplicación de servidor (probablemente una aplicación Java). No tiene un servicio web si hay alguna biblioteca por ahí, supongo, pero me gustaría tener información actualizada. Busqué un poco por una API que soporta esto, pero hasta ahora no he podido encontrar una que funcione. He probado las API de Yahoo de esta manera:
http://where.yahooapis.com/geocode?q=39.76144296429947,%20-104.8011589050293
Pero no llena la información de la dirección. He intentado con algunas de las opciones de "banderas" allí también en vano.
También he echado un vistazo a las API de Google, pero he leído varios lugares en los que no pueblan el condado.
Entonces, ¿alguien sabe de alguna API que tome un Lat / Long y devuelva el Condado asociado con esa ubicación? Y si tienes algún ejemplo, sería genial.
También me gustaría saber qué API permiten el uso en una aplicación comercial. Muchos de los datos que he encontrado dicen que no se pueden usar los datos para ganar dinero. Puede que esté leyendo mal, pero estoy buscando construir un servicio por el que probablemente cobraría y que usaría estos datos. Así que necesitaría opciones. Tal vez servicios gratuitos mientras exploro opciones y pago servicios en el futuro.
Es posible que desee consultar los datos de Tiger y ver si tiene polígonos que contengan el nombre del condado en un atributo. Si lo hace, la API de Java Geotools le permite trabajar con estos datos. Estará realizando consultas puntuales en los polígonos para los polígonos del condado seguidos de una búsqueda de atributos de características.
Google rellena el condado para su ejemplo,
En la respuesta, busque en la clave address_components
que contiene este objeto que representa "Adams"
condado de "Adams"
,
{
long_name: "Adams"
short_name: "Adams"
-types: [
"administrative_area_level_2"
"political"
]
}
Aquí está de los documentos de la API de geocodificación,
administrative_area_level_2
indica una entidad civil de segundo orden por debajo del nivel del país. Dentro de los Estados Unidos, estos niveles administrativos son condados. No todas las naciones exhiben estos niveles administrativos.
Otra opción:
- Descargue la base de datos de ciudades desde http://download.geonames.org/export/dump/
- Agregue cada ciudad como una lat / long -> Mapeo de país a un índice espacial como un R-Tree (algunas DB también tienen la funcionalidad)
- Utilice la búsqueda de vecinos más cercanos para encontrar el país correspondiente al asentamiento humano más cercano para un punto determinado
Ventajas:
- No depende de un servidor externo para estar disponible.
- Mucho más rápido (fácilmente hace miles de búsquedas por segundo)
Desventajas:
- Puede dar respuestas incorrectas cerca de las fronteras, especialmente en áreas escasamente pobladas
Solo para estar completo, encontré otra API para obtener esta información que es bastante simple, así que pensé en compartirla.
https://www.fcc.gov/developers/census-block-conversions-api
La FCC proporciona una API para este problema exactamente y utiliza datos del censo para realizar la búsqueda.
Su política de límite de uso es (De [email protected])
No tenemos ningún límite de uso para la API de conversión de bloques, pero le pedimos que intente distribuir sus solicitudes a lo largo del tiempo, si puede.
Tal vez esta es una gran solución. Está en formato json. Siempre uso esto en mis proyectos.
http://maps.google.com/maps/geo?ll= 10.345561,123.896932
Y simplemente extraiga la información usando php.
$x = file_get_contents("http://maps.google.com/maps/geo?ll=10.345561,123.896932");
$j_decodex = json_decode($x);
print_r($j_decodex);