geocoding - sacar - ¿Cómo convertir una dirección a latitud/longitud?
mapa con coordenadas geográficas (18)
Cuando convierte una dirección u objeto en latitud / longitud, se denomina Geocodificación.
Hay muchas soluciones de geocodificación. La solución adecuada para su proyecto dependerá de la aceptabilidad de los términos de licencia de cada solución de geocodificación. Tanto Microsoft Virtual Earth como Google Maps ofrecen soluciones que son de uso gratuito bajo licencias muy restrictivas ...
http://code.google.com/apis/maps/documentation/services.html
¿Cómo voy a convertir una dirección o ciudad a una latitud / longitud? ¿Hay equipos comerciales con los que puedo "alquilar" este servicio? Esto se usaría en una aplicación de escritorio comercial en una PC con Windows con acceso a internet a tiempo completo.
Google tiene una API de geocodificación que parece funcionar bastante bien para la mayoría de las ubicaciones para las que tienen datos de Google Maps.
http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html
Proporcionan geocodificación en línea (a través de JavaScript):
http://code.google.com/apis/maps/documentation/services.html#Geocoding
O geocodificación de back-end (a través de una solicitud HTTP):
http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct
Los datos suelen ser los mismos utilizados por Google Maps. (tenga en cuenta que hay algunas excepciones a esto, como el Reino Unido o Israel, donde los datos provienen de una fuente diferente y de calidad ligeramente reducida)
Habiendo rodado mi propia solución para esto antes, recomiendo encarecidamente el Geo::Coder::US Perl para esto. Simplemente descargue todos los datos del censo y utilice el importador incluido para crear el Berkeley DB para su país y señale el script de Perl. Use el análisis de direcciones integrado del módulo, y ahí lo tiene: ¡un sistema de geocodificación sin conexión!
Maptsraction ( http://www.mapstraction.com ) le permite elegir entre cualquier cantidad de servicios de geocodificación. Esto podría ser útil si necesita hacer grandes cantidades, ya que sé que Google tiene un límite de cuántos puede hacer al día.
No hay mucho nuevo que agregar, pero he tenido mucha experiencia en el mundo real en SIG y geocodificación de un trabajo anterior. Esto es lo que recuerdo:
Si se trata de una necesidad "de vez en cuando" en su aplicación, definitivamente recomendaría las API de codificación geográfica de Google o Yahoo, pero tenga cuidado de leer sus términos de licencia.
Sé que la API de Google Maps en general es fácil de obtener, incluso para páginas web comerciales, pero no se puede usar en una situación de pago por acceso. En otras palabras, puede usarlo para anunciar o proporcionar un servicio que genere ingresos publicitarios, pero no puede cobrar a las personas por acceder a su sitio o incluso ponerlo detrás de un sistema de contraseñas.
A pesar de estas restricciones, ambas son excelentes opciones porque con frecuencia actualizan sus bases de datos de calles. La mayoría de las herramientas y librerías de back-end gratuitas usan datos de carreteras Census y TIGER que se actualizan con poca frecuencia, por lo que es menos probable que geocodifique direcciones con éxito en áreas de rápido crecimiento o nuevas subdivisiones.
La mayoría de los servicios también restringen el número de consultas de geocodificación que puede realizar por día, por lo que está bien buscar direcciones de, por ejemplo, nuevos clientes que se agregan a su base de datos, pero si ejecuta un trabajo por lotes que alimenta miles de direcciones de su base de datos en el geocodificador, se cerrará.
No creo que este haya sido mencionado aún, pero ESRI tiene servicios web ArcWeb que incluyen geocodificación, aunque no son muy baratos. La última vez que los usé me costó alrededor de 1.5 centavos por búsqueda, pero tuve que prepagar una cierta cantidad para comenzar. Una vez más, la principal ventaja es que los datos viales que utilizan se mantienen actualizados de manera oportuna y puede utilizar los datos en situaciones comerciales que Google no permite. El servicio ArcWeb también servirá fotografías satelitales y aéreas de alta resolución al estilo de Google Maps, una vez más con un precio por solicitud.
Si desea hacer su propia versión o tener acceso a datos mucho más precisos, puede comprar suscripciones a datos GIS de compañías como TeleAtlas , pero eso no es barato. Puede comprar solo el valor de un estado o condado si sus necesidades son extremadamente locales. Hay varios niveles de datos: solo características GIS, GIS más calles detalladas, todo eso más datos de geocodificación, todo eso más límites de flujo de tráfico / dirección / velocidad para el enrutamiento. Por supuesto, el precio aumenta a medida que sube los niveles.
Finalmente, el artículo de Wikipedia sobre Geocoding tiene buena información sobre los algoritmos y las técnicas. Incluso si no lo hace en su propio código, es útil saber qué tipo de errores y precisión puede esperar de varios tipos de fuentes de datos.
Pensé que agregaría uno más a la lista. Texas A & M tiene un servicio bastante decente aquí: http://geoservices.tamu.edu/Services/Geocode/
Una buena opción si tiene un conjunto bastante grande de direcciones para geocodificar y no quiere dar 10k a Google o Microsoft. Todavía terminamos usando los datos devueltos en un mapa de Google.
Puede usar los servicios de soap maps de bing, donde puede hacer referencia al servicio de geocodificación inversa para encontrar lat / long desde la dirección. Aquí está el enlace http://msdn.microsoft.com/en-us/library/cc980922.aspx
Puede usar los servicios web de MapPoint de Microsoft.
Creé una entrada de blog sobre cómo convertir una dirección a un GeoCode (lat / long).
Quieres una aplicación de geocodificación. Estos están disponibles en línea o como un back-end de la aplicación.
Aplicaciones en línea:
Aplicaciones back-end:
Si necesita una solución única, puede intentar: https://addresstolatlong.com/
Lo he usado durante mucho tiempo y me ha funcionado bastante bien.
También puede probar el NameFinder (o el Nominatim actual), que contiene datos de calle de código abierto y tipo wiki para (potencialmente) todo el mundo.
usted está preguntando sobre Geocoder. Google proporciona una API para esto. también lo hace otro proveedor para esto.
Puede ver la demostración de la implementación en Mi ubicación actual .net
Virtual Earth lo hace. También hay un servicio web en geocoder.us
Yahoo! Servicios web de mapas: la API de codificación geográfica codifica con precisión los códigos postales del Reino Unido, a diferencia de la API de Google.
Lamentablemente, yahoo ha dejado de utilizar este servicio, puede visitar http://developer.yahoo.com/geo/placefinder/ para obtener el servicio de yahoo
USC WebGIS Geocoder es gratuito y ofrece varias API, o puede cargar una base de datos para el procesamiento por lotes en línea.
Prueba con este código, trabajo así con las direcciones:
Es un enlace en el que con el método GET enviarás la solicitud y obtendrás lat y lng. http://maps.google.com/maps/api/geocode/json?address=YOUR ADDRES & sensor = false
Por ejemplo: http://maps.google.com/maps/api/geocode/json?address=W Main St, Bergenfield, NJ 07621 & sensor = false
1. Crea tu método GET.
public static String GET(String url) throws Exception {//GET Method
String result = null;
InputStream inputStream = null;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
Log.v("ExecuteGET: ", httpGet.getRequestLine().toString());
HttpResponse httpResponse = httpclient.execute(httpGet);
inputStream = httpResponse.getEntity().getContent();
if (inputStream != null) {
result = convertInputStreamToString(inputStream);
Log.v("Result: ", "result/n" + result);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
2. Crear método para enviar solicitud
@SuppressWarnings("deprecation")
public static String getLatLng(String accessToken) throws Exception{
String query=StaticString.gLobalGoogleUrl+"json?address="+URLEncoder.encode(accessToken)+"&sensor=false";
Log.v("GETGoogleGeocoder", query+"");
return GET(query);
}
gLobalGoogleUrl = "http://maps.google.com/maps/api/geocode/"
3. Método de llamada getLatLng
String result=getLatLng("W Main St, Bergenfield, NJ 07621");
4. Parse JSONObject
Ahora el resultado es JSONObject con información sobre la dirección y lan, lng. Parse JSONObject (resultado) con gson() . Después de eso usa lat, lng.
Si tiene preguntas sobre el código, pregunte.