【问题标题】:How to geocode a large number of addresses?如何对大量地址进行地理编码?
【发布时间】:2011-02-04 03:21:42
【问题描述】:

我需要进行地理编码,即将街道地址转换为纬度、经度以获取约 8,000 个街道地址。我在http://www.gpsvisualizer.com/geocoder/ 使用雅虎和谷歌地理编码引擎,发现对于大量地址,这些引擎(其中之一或两者)要么无法执行地理编码(iereturn latitude=0,longitude=0),或返回错误的坐标(包括雅虎和谷歌给出不同结果的情况)。

处理此问题的最佳方法是什么?哪个引擎(通常)更准确?我将不胜感激以前有过此类任务经验的人的任何想法、建议和想法。

【问题讨论】:

    标签: geocoding street-address


    【解决方案1】:

    你可以使用

    https://github.com/darkphnx/fetegeo/

    用于离线批量地理编码

    【讨论】:

      【解决方案2】:

      当向 Google 地理编码服务发出大量请求时,您需要在响应开始失败时限制请求。为了让您更好地了解这里,我编写了一个来自 Drupal (PHP) 模块的 sn-p。

      function gmap_api_geocode($address) {
      
        $delay = 0;
        $api_key = keys_get_key('gmap_api');
      
        while( TRUE ) {
      
          $response = drupal_http_request('http://maps.google.com/maps/geo?q='. drupal_urlencode($address) .'&output=csv&sensor=false&oe=utf8&key='. $api_key);
          switch( $response->code ) {
      
            case 200: //OK
              $data = explode(',', $response->data);
              return array(
                'latitude' => $data[2],
                'longitude' => $data[3],
              );
      
            // Adopted from http://code.google.com/apis/maps/articles/phpsqlgeocode.html
            case 620: //Too many requests
              $delay += 100000;
              break;
      
            default:
              return FALSE;
          }
      
          usleep($delay);
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-05-24
        • 1970-01-01
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        • 2012-09-23
        • 1970-01-01
        相关资源
        最近更新 更多