How to convert an address to a latitude/longitude?
Asked Answered
C

18

76

How would I go about converting an address or city to a latitude/longitude? Are there commercial outfits I can "rent" this service from? This would be used in a commercial desktop application on a Windows PC with fulltime internet access.

Cavit answered 19/9, 2008 at 0:50 Comment(2)
seems to be a dup of #158974Soothe
Christian: The Latitude tag is spelled correctly. See: en.wikipedia.org/wiki/LatitudeBreann
D
51

Google has a geocoding API which seems to work pretty well for most of the locations that they have Google Maps data for.

http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html

They provide online geocoding (via JavaScript):

http://code.google.com/apis/maps/documentation/services.html#Geocoding

Or backend geocoding (via an HTTP request):

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct

The data is usually the same used by Google Maps itself. (note that there are some exceptions to this, such as the UK or Israel, where the data is from a different source and of slightly reduced quality)

Dikdik answered 19/9, 2008 at 0:51 Comment(1)
Note the following from the Google Maps FAQ: "...and note that use of the geocoder for any purpose other than obtaining locations that will be displayed using the Google Maps APIs is a violation of the Terms of Service."Fast
I
28

Nothing much new to add, but I have had a lot of real-world experience in GIS and geocoding from a previous job. Here is what I remember:

If it is a "every once in a while" need in your application, I would definitely recommend the Google or Yahoo Geocoding APIs, but be careful to read their licensing terms.

I know that the Google Maps API in general is easy to license for even commercial web pages, but can't be used in a pay-to-access situation. In other words you can use it to advertise or provide a service that drives ad revenue, but you can't charge people to acess your site or even put it behind a password system.

Despite these restrictions, they are both excellent choices because they frequently update their street databases. Most of the free backend tools and libraries use Census and TIGER road data that is updated infrequently, so you are less likely to successfully geocode addresses in rapidly growing areas or new subdivisions.

Most of the services also restrict the number of geocoding queries you can make per day, so it's OK to look up addresses of, say, new customers who get added to your database, but if you run a batch job that feeds thousands of addresses from your database into the geocoder, you're going to get shutoff.

I don't think this one has been mentioned yet, but ESRI has ArcWeb web services that include geocoding, although they aren't very cheap. Last time I used them it cost around 1.5cents per lookup, but you had to prepay a certain amount to get started. Again the major advantage is that the road data they use is kept up to date in a timely manner and you can use the data in commercial situations that Google doesn't allow. The ArcWeb service will also serve up high-resolution satellite and aerial photos a la Google Maps, again priced per request.

If you want to roll your own or have access to much more accurate data, you can purchase subscriptions to GIS data from companies like TeleAtlas, but that ain't cheap. You can buy only a state or county worth of data if your needs are extremely local. There are several tiers of data - GIS features only, GIS plus detailed streets, all that plus geocode data, all of that plus traffic flow/direction/speed limits for routing. Of course, the price goes up as you go up the tiers.

Finally, the Wikipedia article on Geocoding has some good information on the algorithms and techniques. Even if you aren't doing it in your own code, it's useful to know what kind of errors and accuracy you can expect from various kinds of data sources.

Idealistic answered 17/10, 2008 at 16:53 Comment(0)
C
10

Yahoo! Maps Web Services - Geocoding API accurately geocodes UK postcodes, unlike Google's API.

Unfortunately yahoo has deprecated this service, you could visit http://developer.yahoo.com/geo/placefinder/ for yahoo's service

Chagres answered 23/9, 2008 at 19:37 Comment(3)
We found Yahoo to be the most accurate.Shaven
Google's API is much better these days than it was in 2009.Breann
2019 - API has been deprecatedBerna
D
9

Try this: http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false

more info here: http://code.google.com/apis/maps/documentation/geocoding/

Dietz answered 5/1, 2012 at 4:28 Comment(2)
This won't work today, since Google enabled billing on the maps APIWillaims
You just need to pass extra paramerter key=API_KEYAcuna
P
6

When you convert an address or object to a lat/long it is called Geocoding.

There are a lot geocoding solutions around. The solution right for your project will depend on the acceptability of the licensing terms of each geocoding solution. Both Microsoft Virtual Earth and Google Maps offer solutions which are free to use under a very restrictive licenses...

https://developers.google.com/maps/documentation/javascript/tutorial

Phytohormone answered 19/9, 2008 at 1:3 Comment(0)
I
5

Having rolled my own solution for this before, I can whole heartedly recommend the Geo::Coder::US Perl module for this. Just download all the census data and use the included importer to create the Berkeley DB for your country and point the Perl script at it. Use the module's built in address parsing, and there you have it: An offline geocoding system!

Ironbound answered 17/10, 2008 at 16:23 Comment(0)
F
4

Try with this code, i work like this with addresses:

It is link in which with GET method you will send request and get lat and lng. http://maps.google.com/maps/api/geocode/json?address=YOUR ADDRES&sensor=false

For exemple: http://maps.google.com/maps/api/geocode/json?address=W Main St, Bergenfield, NJ 07621&sensor=false

1. Create your GET method.

 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. Create method for send request

@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. Call method getLatLng

String result=getLatLng("W Main St, Bergenfield, NJ 07621");

4. Parse JSONObject

Now result is JSONObject with information about address and lan,lng. Parse JSONObject (result) with gson(). After that use lat,lng.

If you have question about code , ask.

Faery answered 31/7, 2014 at 18:25 Comment(3)
this seems to work, what are the query limits and what does sensor=false do?Category
Sensor parameter indicates whether calling device has a GPS sensor. developers.google.com/maps/documentation/geocoding/intro#SensorAruspex
Is there a query limit to this?Herrin
D
2

You want a geocoding application. These are available either online or as an application backend.

Dowd answered 19/9, 2008 at 0:52 Comment(0)
A
2

Maptsraction (http://www.mapstraction.com) lets you choose between any number of geocoding services. This could be helpful if you need to do large quantities, as I know Google has a limit to how many you can do a day.

Afford answered 19/9, 2008 at 0:59 Comment(0)
B
2

Virtual Earth does it. There is also a web service at geocoder.us

Bladdernose answered 19/9, 2008 at 1:1 Comment(0)
I
2

You could also try the OpenStreetMap NameFinder (or the current Nominatim), which contains open source, wiki-like street data for (potentially) the entire world.

Inspiratory answered 15/1, 2009 at 9:38 Comment(1)
Name finder seems to be retired, but Nominatim looks like a great tool :)Pren
G
1

you can use bing maps soap services, where you can reference reverse geocode service to find lat/long from address here is the link http://msdn.microsoft.com/en-us/library/cc980922.aspx

Gablet answered 12/10, 2010 at 21:8 Comment(0)
S
0

Yahoo! Maps Web Services - Geocoding API

Sirdar answered 19/9, 2008 at 1:28 Comment(0)
M
0

You can use Microsoft's MapPoint Web Services.

I created a blog entry on how to convert an address to a GeoCode (lat/long).

Margartmargate answered 4/3, 2009 at 6:34 Comment(1)
MapPoint API will be retired on November 18th. msdn.microsoft.com/en-us/library/cc514493.aspxAdrianaadriane
R
0

Thought I would add one more to the list. Texas A&M has a pretty decently priced service here: http://geoservices.tamu.edu/Services/Geocode/

A good option if you have a pretty large set of addresses to geocode and don't want to pat 10k to Google or Microsoft. We still ended up using the returned data in a Google Map.

Relive answered 14/1, 2014 at 20:48 Comment(0)
G
0

you are asking about Geocoder. Google provide an API for this. so does another provider for this.

you can see the demo of implementation in My Current Location .net

Gilbart answered 13/3, 2015 at 8:22 Comment(1)
Not working. cannot use.Lumpish
P
-1

The USC WebGIS Geocoder is free and offers several API's, or you can upload a database for online batch processing.

Pittman answered 8/2, 2009 at 20:2 Comment(0)
C
-3

If you need a one off solution, you can try: https://addresstolatlong.com/

I've used it for a long time and it has worked pretty well for me.

Connacht answered 15/12, 2017 at 11:59 Comment(3)
Is this your (or someone you know) website? this looks very fishy. There's no API alsoBerna
unsecured websiteKif
Not working. Don't use.Lumpish

© 2022 - 2024 — McMap. All rights reserved.