如何将地址转换为纬度/经度?
我怎样才能将地址或城市转换为经纬度? 有商业服装可以“租”这项服务吗? 这将用于Windows PC上的商业桌面应用程序与全时互联网访问。
Google有一个地理编码API,对于大部分拥有Google地图数据的地点来说,似乎都能很好地工作。
http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html
他们提供在线地理编码(通过JavaScript):
http://code.google.com/apis/maps/documentation/services.html#Geocoding
或后端地理编码(通过HTTP请求):
http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct
数据通常与Google地图本身使用的数据相同。 (请注意,这里有一些例外情况,例如英国或以色列,数据来自不同的来源,质量略有下降)
没有太多新的东西要添加,但是我从以前的工作中获得了很多GIS和地理编码方面的实际经验。 这是我记得的:
如果在应用程序中每隔一段时间需要一次,我肯定会推荐Google或Yahoo Geocoding API,但要小心阅读其许可条款。
我知道,即使是商业网页,Google Maps API通常也很容易获得许可,但不能用于付费访问的情况。 换句话说,您可以使用它来宣传或提供促进广告收入的服务,但是您不能向人们收取访问您的网站或甚至将其放在密码系统之后。
尽pipe有这些限制,但它们都是很好的select,因为它们经常更新街道数据库。 大多数免费的后端工具和库使用的人口普查和TIGER道路数据不经常更新,因此您不太可能在快速增长的地区或新的细分中成功地理地址代码。
大多数服务还会限制您每天可以进行的地理编码查询的数量,因此,可以查找添加到数据库中的新客户的地址,但是如果您运行的批量作业从数千个地址你的数据库到地理编码器,你会closures。
我不认为这个提到,但ESRI有ArcWebnetworking服务 ,包括地理编码,虽然他们不是很便宜。 上次我使用它们的时候,每次查找花费大约1.5次,但是你必须预付一定数量才能开始。 主要优点是他们使用的道路数据能够及时得到及时更新,并且您可以在Google不允许的商业情况下使用这些数据。 ArcWeb服务还将提供高分辨率的卫星和航拍照片,Google Maps也会根据请求定价。
如果您想自己推出或获得更准确的数据,您可以从TeleAtlas等公司购买GIS数据订阅,但这并不便宜。 如果您的需求非常地方化,您只能购买州或县的数据。 有几层数据 – 只有GISfunction,地理信息系统加上详细的街道,所有这些,加上地理编码数据,所有这些加上路线的交通stream量/方向/速度限制。 当然,价格会随着上涨而上涨。
最后,关于地理编码的维基百科文章有关于algorithm和技术的一些很好的信息。 即使您没有在自己的代码中执行此操作,了解您可以从各种数据源中得到何种错误和准确性也是非常有用的。
雅虎 地图networking服务 -与Google的API不同, 地理编码API能准确地对英国邮政编码进行地理编码 。
不幸的是,雅虎已经弃用这项服务,你可以访问http://developer.yahoo.com/geo/placefinder/为雅虎的服务;
试试这个: http : //maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway++Mountain+View,+CA&sensor=false
有关详情,请访问http://code.google.com/apis/maps/documentation/geocoding/
当你把一个地址或对象转换成经纬度时,它被称为地理编码。
有很多地理编码解决scheme。 适合您的项目的解决scheme将取决于每个地理编码解决scheme的许可条款的可接受性。 微软虚拟地球和谷歌地图提供的解决scheme可以在非常严格的许可下自由使用。
http://code.google.com/apis/maps/documentation/services.html
之前,我已经推出了自己的解决scheme,我可以全心全意地推荐Geo :: Coder :: US Perl模块。 只需下载所有人口普查数据,并使用包含的import商为您的国家创build伯克利数据库,并将Perl脚本指向它。 使用模块内置的地址parsingfunction,您可以拥有它:一个离线地理编码系统!
试试这个代码,我用这样的地址工作:
它是用GET方法发送请求并获取lat和lng的链接。 http://maps.google.com/maps/api/geocode/json?address=YOUR ADDRES&sensor = false
例如: http : //maps.google.com/maps/api/geocode/json?address=W Main St,Bergenfield,NJ 07621&sensor = false
1.创build你的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.创build发送请求的方法
@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.调用方法getLatLng
String result=getLatLng("W Main St, Bergenfield, NJ 07621");
4.parsingJSONObject
现在结果是JSONObject与关于地址和lan,lng的信息。 使用gson()parsingJSONObject(result ) 。 之后用lat,lng。
如果您有关于代码的问题,请询问。
你想要一个地理编码应用程序。 这些可以在线或作为应用程序后端。
-
在线申请:
- Google有一个地理编码API
-
后端应用程序:
- GeoStan
Maptsraction( http://www.mapstraction.com )可让您在任意数量的地理编码服务中进行select。 如果您需要大量处理,这可能会有所帮助,因为我知道Google每天可以处理的数量有限。
虚拟地球做到了。 geocoder.us还有一个web服务
您也可以尝试OpenStreetMap NameFinder (或当前的Nominatim ),其中包含开放源代码,可能是整个世界的类似wiki的街道数据。
您可以使用bing地图肥皂服务,在这里您可以引用反向地理编码服务来查找纬度/经度从这里是链接http://msdn.microsoft.com/en-us/library/cc980922.aspx
雅虎 地图Web服务 – 地理编码API
USC WebGIS Geocoder是免费的,并提供了几个API,或者您可以上传数据库进行在线批处理。
您可以使用Microsoft的MapPoint Web服务。
我创build了一个关于如何将地址转换为GeoCode(lat / long)的博客条目 。
以为我会再增加一个名单。 得克萨斯州的A&M有一个相当体面的价格服务在这里: http : //geoservices.tamu.edu/Services/Geocode/
如果您有大量的地址进行地址parsing,并且不想将10k轻拍到Google或Microsoft,那么这是一个不错的select。 我们仍然使用Google Map中的返回数据。
你在问Geocoder。 Google为此提供了一个API。 另一个供应商也是如此。
您可以在My Current Location .net中看到实施演示