如何以编程方式(合法地)获取街道地址的经度和纬度

web-services api geolocation geocoding street-address

88985 观看

14回复

3333 作者的声誉

据说,可以从Google地图或某些此类服务获取此信息。(美国地址不够好。)

作者: Ola Eldøy 的来源 发布者: 2008 年 10 月 1 日

回应 (14)


69

4417 作者的声誉

决定

您正在寻找的术语是地理编码,是的Google确实提供此服务。

作者: Sijin 发布者: 01.10.2008 04:24

2

4523 作者的声誉

您可以在此处查看Google Maps API文档,了解相关信息:

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

对于使用Live Maps的国际地址,您似乎也可以这样做:

http://virtualearth.spaces.live.com/blog/cns!2BBC66E99FDCDB98!1588.entry

作者: Carl 发布者: 01.10.2008 04:26

15

68356 作者的声誉

如果您想在不依赖服务的情况下这样做,那么您可以从美国人口普查下载TIGER Shapefile

你抬头看看你感兴趣的街道,它将有几个部分。每个段都有一个起始地址和结束地址,并沿着该段进行插值,以找到您的门牌号所在段的位置。

这将为您提供lon / lat对。

但请记住,在线服务会使用大量的地址检查和更正,您必须复制这些内容以获得良好的结果。

另请注意,与免费数据一样好,它并不完美 - 最新的街道不在那里(它们可能在Google使用的数据中),并且由于调查不准确,街道可能会偏离其实际位置一定数量。但是对于98%的地理编码需求,它可以完美地运行,是免费的,并且您可以控制所有内容,因此您可以减少应用中的依赖关系。

Openstreetmaps的目标是绘制世界上的所有内容,尽管它们并不存在,因为它们在CC许可下提供数据值得关注

但是,许多(大多数?)其他国家/地区仅通过您需要支付费用的政府或服务进行映射。如果您不需要对非常多的数据进行地理编码,那么使用Google,Yahoo或其他一些免费的全球地图服务可能就足够了。

如果您必须对大量数据进行地理编码,那么最好通过租用来自主要提供商(如teleatlas)的地图数据来提供服务。

-亚当

作者: Adam Davis 发布者: 01.10.2008 04:31

22

9586 作者的声誉

除了上述的Google地理编码网络服务之外,还有雅虎提供的竞争服务。在最近通过用户交互完成地理编码的项目中,我包括对两者的支持。原因是我发现,尤其是在美国之外,他们对更加模糊的地点的处理差异很大。有时谷歌会得到最好的答案,有时候是雅虎。

需要注意的是:如果Google真的认为他们不知道你的位置在哪里,他们会返回602错误,表示失败。另一方面,雅虎如果可以从你的不良地址剥离一个城市/省/州/等,将返回该镇中心的位置。因此,您必须注意结果,看看它们是否真的是您想要的。某些结果中有辅助字段可以告诉您:雅虎将此字段称为“精确”,Google将其称为“准确性”。

作者: Tim Farley 发布者: 01.10.2008 04:34

4

438 作者的声誉

如果您的网站免费供消费者使用,Google的服务条款将允许您免费使用其地理编码API。如果没有,您将必须获得企业地图的许可。

作者: Craig Wohlfeil 发布者: 01.10.2008 04:42

9

5213 作者的声誉

您还可以尝试使用OpenStreetMap NameFinder,它包含(可能)整个世界的开源,类似wiki的街道数据。NameFinder将在8月底停止存在,但Nominatim是它的替代品。

作者: peSHIr 发布者: 15.01.2009 09:36

2

1382 作者的声誉

您也可以使用Microsoft的MapPoint Web服务执行此操作。

这是一篇博客文章,解释了如何:http//www.codestrider.com/BlogRead.aspx?b = b5e8e275-cd18-4c24- b321-0da26e01bec5

作者: Stephen Curial 发布者: 04.03.2009 06:51

7

2300 作者的声誉

Google要求您显示包含其数据的Google地图,每天最多2.5k(25k)HTTP请求。有用,但你必须看用法。

他们确实有

http://groups.google.com/group/Google-Maps-API/web/resources-non-google-geocoders

(谷歌已经删除了这个。如果你看到重复或缓存,我会链接到那个。)

...我发现GeoNames有可下载的数据库,免费的网络服务和商业网络服务。

作者: Richard Watson 发布者: 29.09.2009 04:49

3

31 作者的声誉

用于Drupal和PHP(并且易于修改):

function get_lat_long($address) {
  $res = drupal_http_request('http://maps.googleapis.com/maps/api/geocode/json?address=' . $address .'&sensor=false');
  return json_decode($res->data)->results[0]->geometry->location;
}
作者: Nate Wildermuth 发布者: 26.03.2013 07:20

2

1084 作者的声誉

R代码获取街道地址的纬度和经度

# CODE TO GET THE LATITUDE AND LONGITUDE OF A STREET ADDRESS WITH GOOGLE API
addr <- '6th Main Rd, New Thippasandra, Bengaluru, Karnataka'  # set your address here
url = paste('http://maps.google.com/maps/api/geocode/xml?address=', addr,'&sensor=false',sep='')  # construct the URL
doc = xmlTreeParse(url) 
root = xmlRoot(doc) 
lat = xmlValue(root[['result']][['geometry']][['location']][['lat']]) 
long = xmlValue(root[['result']][['geometry']][['location']][['lng']]) 
lat
[1] "12.9725020"
long
[1] "77.6510688"
作者: Selva 发布者: 13.05.2015 09:15

2

5698 作者的声誉

如果你想在Python中这样做:

import json, urllib, urllib2

address = "Your address, New York, NY"

encodedAddress = urllib.quote_plus(address)
data = urllib2.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=" + encodedAddress + '&sensor=false').read()
location = json.loads(data)['results'][0]['geometry']['location']
lat = location['lat']
lng = location['lng']
print lat, lng

请注意,如果Google看到超过一定数量的请求,它似乎会限制请求,因此您确实希望在HTTP请求中使用API​​密钥。

作者: Suman 发布者: 21.07.2015 05:36

1

772 作者的声誉

我有一批100,000条记录要进行地理编码并遇到了Google API的限制(因为它是针对内部企业应用程序的,我们不得不升级到他们的高级服务,这是10美元以上)

所以,我用它代替:http//geoservices.tamu.edu/Services/Geocode/BatchProcess/ - 它们也有一个API。(总费用约为200美元)

作者: paras_doshi 发布者: 18.02.2016 10:16

1

5520 作者的声誉

您可以在JavaScript中尝试使用kohat这样的城市

var geocoder = new google.maps.Geocoder();
var address = "kohat";
geocoder.geocode( { 'address': address}, function(results, status) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude+" and "+longitude);
  } 
});

在此输入图像描述

作者: Adiii 发布者: 21.11.2016 10:45

0

523 作者的声誉

在python中使用geopy PyPI 来获取graphitude,langitude,zipcode等。这是工作示例代码..

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="your-app-id")

location = geolocator.geocode("6309 old ferry rd ")

if location:
    print('\n ADDRESS :',location.address)
    print('\n LATLANG :',(location.latitude, location.longitude))
    print('\n FULL RESPONSE :',location.raw)
else:
   print('Cannot Find')

希望能帮助到你..

作者: Parthiban.S 发布者: 31.01.2019 10:22
32x32