标签: geocoding

如何对服务器上的地址进行地理编码

我正在使用 python 使用 Google App Engine 编写一个应用程序,并将一个大型维基百科列表转换为电子表格,然后将列表行输入到位置中。例如:http: //en.wikipedia.org/wiki/List_of_North_Carolina_state_parks,我需要将每个公园的名称转换为地址,我想它们不会准确,但只要它们几乎正确就可以了跟我一起好吧。

有什么办法可以在服务器端使用 python 来做到这一点吗?我知道 Google 的地理编码服务,但它都是用 javascript 完成的,而且速率有限。

有什么服务可以做到这一点吗?

更新:geopy 正是我所寻找的。我想知道处理多个结果的最佳方法是什么。这是我的尝试:

        try:
             place, (lat, lng) = g.geocode(title+", North Carolina")
        except ValueError:
             geocodespot = g.geocode(title+", North Carolina", exactly_one=False)
             place, (lat, lng) = geocodespot[0]
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我想知道是否有更好的想法。

python geocoding google-geocoding-api

3
推荐指数
1
解决办法
4332
查看次数

如何在 Leaflet JS 中使用 Google Geocoder 的 Viewport?

我已经成功设置了一个 Leaflet JS 地图,它使用 Google 地图地理编码器平移到地理编码地址。但我也尝试使用“map.fitBounds”从视口获取适当的缩放级别,但它似乎不起作用。我正在使用的代码是:

map.panTo([results[0].geometry.location.lat(),results[0].geometry.location.lng()]);
   map.fitBounds([[results[0].geometry.viewport.southwest.lat(), results[0].geometry.viewport.southwest.lng()],[results[0].geometry.viewport.northeast.lat(), results[0].geometry.viewport.northeast.lng()]]);
Run Code Online (Sandbox Code Playgroud)

请参阅此处的示例:http ://chrismccreath.hostzi.com/geocode_test.html

我该如何修复它,以便它缩放到谷歌地图地理编码器结果返回的适当视口?

geocoding google-maps-api-3 leaflet

3
推荐指数
1
解决办法
7385
查看次数

是否有比 .apply() 更慢或更受控制的替代方案?

所以这似乎是一个奇怪的问题,但我有一个DataFrame带有地址的熊猫,我想对它进行地理编码,这样我就可以获得纬度和经度。

.apply()由于这个非常有用的线程(带有使用 geopy pandas 的坐标的新列),我的代码可以使用,但我的问题是所有开放 API 对每秒允许的请求数以及每天的请求数都有严格的限制。

我还没有找到任何方法来限制我的代码,以便符合 API 的限制。我的 DF 有 25K 行,但只有在创建最多 5 行的子集时,我才能成功进行地理编码。

我对 python 和 pandas 没有太多经验,但在 SAS 中,DATA 步骤一次迭代一行,因此我可以使用 sleep 命令来限制请求。使用 python/pandas 实现类似功能的最佳方法是什么?

编辑:所以根据到目前为止的答案,我想确认,我的代码将从: 更改 df_small['city_coord'] = df_small['Address'].apply(geolocator.geocode).apply(lambda x: (x.latitude, x.longitude))
为:

df_small = df_clean[:5]
def f(x, delay=1):
# run your code    
sleep(delay)
return geolocator.geocode(x)

df_small['city_coord'] = df_small['Address'].apply(f).apply(lambda x: (x.latitude, x.longitude))
Run Code Online (Sandbox Code Playgroud)

python geocoding pandas

3
推荐指数
1
解决办法
952
查看次数

为特定国家生成随机坐标

我正在尝试为一个国家/地区生成随机坐标

我用过这个库Faker

def geo_point():
    """make random cordinates"""
    faker = factory.Faker('local_latlng', country_code = 'IN')
    coords = faker.generate()
    return (coords[1], coords[0])

Run Code Online (Sandbox Code Playgroud)

但问题是,它的坐标集非常有限,大约在 30-40 之间,我们至少需要 10,000 个坐标进行测试。

我尝试了一个简单的方法

def random_geo_cordinate():
    """make random geocordinates"""
    x, y = uniform(-180,180), uniform(-90, 90)
    return (y, x)

Run Code Online (Sandbox Code Playgroud)

但特定国家/地区只有 10-20 个坐标。

我发现通过 shape_files 我们可以生成很多参考文献,但在所有参考文献中,只有geom参数可用。

我找到了一种方法,可以通过 Geom 列检查这些坐标是否位于该国家/地区。

但在为一个国家生成随机坐标时我仍然缺少一些东西。

有没有什么简单直接的办法。

我正在使用

POST GIS Database
GeoDjango Server
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 我使用 GDAL 获取一个国家/地区的 shapefile

python gis geocoding postgis geodjango

3
推荐指数
1
解决办法
2408
查看次数

让GeoKit与我的Address类很好地配合

我的Address类有一个geocode类方法,它返回一个地址对象数组,这些地址对象是通过对方法参数进行地理编码而得到的(如果地理编码导致完全匹配,则数组将有一个元素).

编写此方法的一个令人讨厌的部分是将GeoKit地址对象转换为我的地址对象(例如,"street_address" - >"address1").有一个更好的方法吗?

class Address < ActiveRecord::Base
  def self.geocode(string)
    return nil if string.nil?

    results = Geokit::Geocoders::GoogleGeocoder.geocode(string)

    address_objects = Array.new

    results.all.each do |r|
      params = Hash.new

      params['address1'] = r.street_address
      params['city'] = r.city
      params['zipcode'] = r.zip
      params['state'] = State.find_by_abbr(r.state)
      params['country'] = Country.find_by_iso(r.country_code)

      new_address = Address.new(params)
      new_address.single_line_address = r.full_address

      address_objects << new_address    
    end

    return address_objects
  end
end
Run Code Online (Sandbox Code Playgroud)

geocoding ruby-on-rails geokit

2
推荐指数
1
解决办法
582
查看次数

如何从地址确定CLLocation或MKPlacemark?

我已经看过关于如何进行反向地理编码的演示之后的API文档和演示 - 获取一个地址,给定一个Lat/Long位置.我需要做相反的事情.我假设这已经解决了问题,因为Apple的MapKit API完全避免了它.

iphone geocoding mapkit iphone-sdk-3.0

2
推荐指数
1
解决办法
4932
查看次数

Google Maps API v3 - 在过去一周左右发生了变化?

我使用以下代码从用户输入获取lat和lng值.它似乎工作正常,直到最近.

if (status == google.maps.GeocoderStatus.OK) {
    var lat = parseFloat(results[0].geometry.location.wa).toFixed(3);
    var lng = parseFloat(results[0].geometry.location.xa).toFixed(3);
    ....
Run Code Online (Sandbox Code Playgroud)

现在,如果我控制台.log,results[0].geometry.location我得到(51.4793388, -2.5933342) { va=51.4793388, wa=-2.5933342}.

似乎xa已经改变了va.引用这些值的正确方法是什么?

javascript api google-maps geocoding

2
推荐指数
1
解决办法
576
查看次数

openstreetmap响应 - 重要性和place_rank字段

openstreetmap响应中'importance'和'place_rank'字段的含义是什么?我在文档中的任何地方都找不到它:/

例如,此网址的响应:

http://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1
Run Code Online (Sandbox Code Playgroud)

是:

<place place_id="62311100" osm_type="way" osm_id="90394480" place_rank="30" ...OMISSIS... importance="0.701">

在上面的回复中,我删除了所有我不感兴趣的XML部分.

geocoding openstreetmap

2
推荐指数
1
解决办法
1674
查看次数

如何从反向地理编码JSON结果中获取格式化的地址?

这是JSON输出:我只想获取formatted_address值&long_name&short_name。我提到了人们已经问过的问题,但是我做错了。指:

从地址解析器结果中获取城市?

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Jalan Sungai Chua",
               "short_name" : "B11",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Sungai Chua",
               "short_name" : "Sungai Chua",
               "types" : [ "sublocality_level_1", "sublocality", "political" ]
            },
            {
               "long_name" : "Kajang",
               "short_name" : "Kajang",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Selangor",
               "short_name" : "Selangor",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Malaysia",
               "short_name" : "MY",
               "types" : [ …
Run Code Online (Sandbox Code Playgroud)

php json google-maps geocoding reverse-geocoding

2
推荐指数
1
解决办法
2846
查看次数

Ggmap"dsk"速率限制

我正在尝试使用R库Ggmap对地图进行地理定位.

location_google_10000 <- geocode(first10000_string, output = "latlon",
    source = "dsk", messaging = FALSE)
Run Code Online (Sandbox Code Playgroud)

问题是我正在使用"dsk" - 数据科学工具包API-因此它没有速率限制为谷歌(限制为每天2500坐标).但是,当我尝试使用包含超过2500的向量运行时,它会弹出以下消息:

Error: google restricts requests to 2500 requests a day for non-business use.
Run Code Online (Sandbox Code Playgroud)

我尝试使用带有1000个地址的dsk运行代码,然后检查是否实际使用了google或dsk api:

> geocodeQueryCheck()
2500 geocoding queries remaining.
Run Code Online (Sandbox Code Playgroud)

所以出于某种原因,它不允许我使用超过2500与"dsk",但我相信它不使用谷歌.

geocoding r geolocation google-geocoding-api ggmap

2
推荐指数
1
解决办法
1071
查看次数