如何一次性下载全部GADM数据库边界数据

GADM (http://gadm.org/) 全称为 Global Administrative Areas,就是全球行政区域边界数据,至于是做什么用的。比如绘制每个城市或国家的边界,但对于我,更重要的作用是通过经纬度查询它在哪个行政区域中。

按照它网站上的说法(2018-02-12):

The current version is 2.8 (November 2015). Version 3 is expected to be available in August 2017.

当前版本是2.8,预计在去年八月份就上第3版,然而并没有,不过这都不重要,有数据才是最重要。最初走了一大堆弯路去找全球的边界数据,搜索的关键字一直是geojson,现实也很给力,找到了很多数据,但是都不完全,缺失了大量的数据。

这个网站提供了全球254个国家或地区的数据,并提供了好几种格式数据,相对来说这几种格式我都不太熟悉,ESRI什么的,第一次听说,毕竟不是专业处理地理位置数据的。然后我需要的是shp格式的数据,因为后续我将使用postgres数据库处理空间坐标相关的数据。

第一段脚本,用于获取全部国家和地区的数据,当然这里直接复制都是可以的,甚至更加简单。
具体脚本参见:https://github.com/loveyu/BlogCodeSegment/blob/master/GEO/gadm/download/cli_country_list.php

<?php
require_once __DIR__."/../../../init.php";
$client = new GuzzleHttp\Client();

$res = $client->get("http://gadm.org/country", [
    'proxy' => HTTP_PROXY_URL
]);
$body = $res->getBody();

if(empty($body)) {
    echo "Empty Response.";
    return;
}

preg_match("/<select name="cnt">([\s\S]+?)<\\/select>/", $body, $match);
if(empty($match) || empty($match[1])) {
    echo "No Country Match.";
    return;
}

preg_match_all("/<option value="(.*?)">(.*?)<\\/option>/", $match[1], $matches, PREG_SET_ORDER);

if(empty($matches)) {
    echo "Empty list.";
    return;
}
$county_list = [];
foreach($matches as $match) {
    $county_list[] = [
        'key'  => $match[1],
        'name' => $match[2],
    ];
}

file_put_contents(BCS_DATA."geo_gadm_country_list.json", json_encode($county_list, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));

echo "Output:".count($county_list);

该段脚本会获取到如下类似的内容:

[
    {
        "key": "AFG_Afghanistan_3",
        "name": "Afghanistan"
    },
    {
        "key": "XAD_Akrotiri and Dhekelia_2",
        "name": "Akrotiri and Dhekelia"
    },
    {
        "key": "ALA_Åland_2",
        "name": "Åland"
    },
    {
        "key": "ALB_Albania_4",
        "name": "Albania"
    }
]

读取到列表后,后续的逻辑的为寻找下载地址,这个网站有点绕,使用的是POST提交后获取数据,实际更科学的方式也有,这就不讨论了。在写这个之前,特意用,GuzzleHttp的库,重写了部分内容。不得不说,还真是有点不习惯。

读取全部下载地址:
详见:https://github.com/loveyu/BlogCodeSegment/blob/master/GEO/gadm/download/cli_download_file_list.php

<?php
use function GuzzleHttp\Promise\settle;

require_once __DIR__."/../../../init.php";
$raw_list = json_decode(file_get_contents(BCS_DATA."geo_gadm_country_list.json"), true);

$list = $raw_list;
$map_url = [];
while(!empty($list)) {
    $i = 0;
    $gc_list = array_chunk($list, 20);
    $c = count($gc_list);
    $error_list = [];
    foreach($gc_list as $items) {
        echo sprintf("%d/%d\n", ++$i, $c);
        $client = new \GuzzleHttp\Client();
        $promises = [];
        foreach($items as $item) {
            $promises[] = $client->postAsync("http://gadm.org/download", [
                'form_params' => [
                    'cnt'           => $item['key'],
                    'thm'           => 'shp#shapefile',
                    'OK'            => 'OK',
                    '_submit_check' => '1'
                ],
                "proxy"       => HTTP_PROXY_URL
            ]);
        }
        $results = settle($promises)->wait();

        foreach($results as $K => $result) {
            if(empty($result['value'])) {
                echo "Error KEY:{$K}\n";
                $error_list[] = $items[$K];
                continue;
            }
            $res = $result['value'];
            if(empty($res)) {
                $error_list[] = $items[$K];
                continue;
            }
            /**
             * @var \GuzzleHttp\Psr7\Response $res
             */

            $body = $res->getBody()->getContents();
            preg_match("/href=(http:\\/\\/.*?\\.zip)><h3><b>download/", $body, $matches);

            if(!empty($matches) && isset($matches[1])) {
                $map_url[$items[$K]['key']] = $matches[1];
            } else {
                echo "{$K} => None\n";
            }
        }
        //  print_r($results);
        //  break;
    }
    $list = $error_list;
}

//print_r($map_url);
file_put_contents(BCS_DATA."geo_gadm_country_download_url_list.txt", implode("\n", $map_url));

foreach($raw_list as &$item) {
    $item['url'] = isset($map_url[$item['key']]) ? $map_url[$item['key']] : "None";
}
unset($item);

file_put_contents(BCS_DATA."geo_gadm_country_download_url_map.json", json_encode($raw_list, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));

代码中用了一段非常恶心的循环来解决并发下载出错的问题,幸运的是这种方式非常靠谱,最终得到了254个有效的下载地址,不输出额外的内容,我直接贴出254个文件的下载地址以及对应的文件大小。
同样可以参考地址:https://github.com/loveyu/BlogCodeSegment/blob/master/Data/geo_gadm_country_download_url_list.txt 仅包含下载地址

total 844M
     9.9k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ABW_adm_shp.zip
     481k http://biogeo.ucdavis.edu/data/gadm2.8/shp/AFG_adm_shp.zip
     1.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/AGO_adm_shp.zip
      11k http://biogeo.ucdavis.edu/data/gadm2.8/shp/AIA_adm_shp.zip
     346k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ALA_adm_shp.zip
     737k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ALB_adm_shp.zip
      10k http://biogeo.ucdavis.edu/data/gadm2.8/shp/AND_adm_shp.zip
     711k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ARE_adm_shp.zip
     3.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ARG_adm_shp.zip
      32k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ARM_adm_shp.zip
      91k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ASM_adm_shp.zip
     3.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ATA_adm_shp.zip
     660k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ATF_adm_shp.zip
      53k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ATG_adm_shp.zip
      29M http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUS_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUT_adm_shp.zip
     194k http://biogeo.ucdavis.edu/data/gadm2.8/shp/AZE_adm_shp.zip
     2.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BDI_adm_shp.zip
     685k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BEL_adm_shp.zip
     154k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BEN_adm_shp.zip
      28k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BES_adm_shp.zip
     1.3M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BFA_adm_shp.zip
     4.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BGD_adm_shp.zip
     1.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BGR_adm_shp.zip
      75k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BHR_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BHS_adm_shp.zip
     330k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BIH_adm_shp.zip
     6.9k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BLM_adm_shp.zip
     417k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BLR_adm_shp.zip
     271k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BLZ_adm_shp.zip
      33k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BMU_adm_shp.zip
     1.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BOL_adm_shp.zip
      17M http://biogeo.ucdavis.edu/data/gadm2.8/shp/BRA_adm_shp.zip
      24k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BRB_adm_shp.zip
     112k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BRN_adm_shp.zip
     954k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BTN_adm_shp.zip
     4.3k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BVT_adm_shp.zip
     841k http://biogeo.ucdavis.edu/data/gadm2.8/shp/BWA_adm_shp.zip
     339k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CAF_adm_shp.zip
      89M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CAN_adm_shp.zip
     9.2k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CCK_adm_shp.zip
     3.4M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CHE_adm_shp.zip
      25M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CHL_adm_shp.zip
      20M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CHN_adm_shp.zip
     1.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CIV_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CMR_adm_shp.zip
     1.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/COD_adm_shp.zip
     286k http://biogeo.ucdavis.edu/data/gadm2.8/shp/COG_adm_shp.zip
      47k http://biogeo.ucdavis.edu/data/gadm2.8/shp/COK_adm_shp.zip
     2.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/COL_adm_shp.zip
      79k http://biogeo.ucdavis.edu/data/gadm2.8/shp/COM_adm_shp.zip
     186k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CPV_adm_shp.zip
     662k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CRI_adm_shp.zip
     3.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/CUB_adm_shp.zip
      20k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CUW_adm_shp.zip
     7.0k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CXR_adm_shp.zip
      36k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CYM_adm_shp.zip
      85k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CYP_adm_shp.zip
     469k http://biogeo.ucdavis.edu/data/gadm2.8/shp/CZE_adm_shp.zip
      25M http://biogeo.ucdavis.edu/data/gadm2.8/shp/DEU_adm_shp.zip
     149k http://biogeo.ucdavis.edu/data/gadm2.8/shp/DJI_adm_shp.zip
      37k http://biogeo.ucdavis.edu/data/gadm2.8/shp/DMA_adm_shp.zip
     2.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/DNK_adm_shp.zip
     939k http://biogeo.ucdavis.edu/data/gadm2.8/shp/DOM_adm_shp.zip
     6.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/DZA_adm_shp.zip
     5.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ECU_adm_shp.zip
     1.3M http://biogeo.ucdavis.edu/data/gadm2.8/shp/EGY_adm_shp.zip
     930k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ERI_adm_shp.zip
     226k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ESH_adm_shp.zip
     7.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ESP_adm_shp.zip
      16M http://biogeo.ucdavis.edu/data/gadm2.8/shp/EST_adm_shp.zip
     878k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ETH_adm_shp.zip
     4.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/FIN_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/FJI_adm_shp.zip
     670k http://biogeo.ucdavis.edu/data/gadm2.8/shp/FLK_adm_shp.zip
      11M http://biogeo.ucdavis.edu/data/gadm2.8/shp/FRA_adm_shp.zip
     114k http://biogeo.ucdavis.edu/data/gadm2.8/shp/FRO_adm_shp.zip
     185k http://biogeo.ucdavis.edu/data/gadm2.8/shp/FSM_adm_shp.zip
     664k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GAB_adm_shp.zip
     4.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/GBR_adm_shp.zip
     353k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GEO_adm_shp.zip
      36k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GGY_adm_shp.zip
     576k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GHA_adm_shp.zip
     5.3k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GIB_adm_shp.zip
     940k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GIN_adm_shp.zip
     130k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GLP_adm_shp.zip
     149k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GMB_adm_shp.zip
     876k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GNB_adm_shp.zip
     3.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/GNQ_adm_shp.zip
     8.3M http://biogeo.ucdavis.edu/data/gadm2.8/shp/GRC_adm_shp.zip
      44k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GRD_adm_shp.zip
     7.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/GRL_adm_shp.zip
     404k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GTM_adm_shp.zip
     266k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GUF_adm_shp.zip
      48k http://biogeo.ucdavis.edu/data/gadm2.8/shp/GUM_adm_shp.zip
     1.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/GUY_adm_shp.zip
     156k http://biogeo.ucdavis.edu/data/gadm2.8/shp/HKG_adm_shp.zip
      12k http://biogeo.ucdavis.edu/data/gadm2.8/shp/HMD_adm_shp.zip
     1.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/HND_adm_shp.zip
     2.9M http://biogeo.ucdavis.edu/data/gadm2.8/shp/HRV_adm_shp.zip
     1.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/HTI_adm_shp.zip
     755k http://biogeo.ucdavis.edu/data/gadm2.8/shp/HUN_adm_shp.zip
      28M http://biogeo.ucdavis.edu/data/gadm2.8/shp/IDN_adm_shp.zip
      89k http://biogeo.ucdavis.edu/data/gadm2.8/shp/IMN_adm_shp.zip
      14M http://biogeo.ucdavis.edu/data/gadm2.8/shp/IND_adm_shp.zip
      24k http://biogeo.ucdavis.edu/data/gadm2.8/shp/IOT_adm_shp.zip
     1.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/IRL_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/IRN_adm_shp.zip
     215k http://biogeo.ucdavis.edu/data/gadm2.8/shp/IRQ_adm_shp.zip
     897k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ISL_adm_shp.zip
      61k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ISR_adm_shp.zip
     9.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ITA_adm_shp.zip
     145k http://biogeo.ucdavis.edu/data/gadm2.8/shp/JAM_adm_shp.zip
      28k http://biogeo.ucdavis.edu/data/gadm2.8/shp/JEY_adm_shp.zip
      77k http://biogeo.ucdavis.edu/data/gadm2.8/shp/JOR_adm_shp.zip
      10M http://biogeo.ucdavis.edu/data/gadm2.8/shp/JPN_adm_shp.zip
     315k http://biogeo.ucdavis.edu/data/gadm2.8/shp/KAZ_adm_shp.zip
      17M http://biogeo.ucdavis.edu/data/gadm2.8/shp/KEN_adm_shp.zip
     214k http://biogeo.ucdavis.edu/data/gadm2.8/shp/KGZ_adm_shp.zip
     6.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/KHM_adm_shp.zip
     200k http://biogeo.ucdavis.edu/data/gadm2.8/shp/KIR_adm_shp.zip
      33k http://biogeo.ucdavis.edu/data/gadm2.8/shp/KNA_adm_shp.zip
     3.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/KOR_adm_shp.zip
     136k http://biogeo.ucdavis.edu/data/gadm2.8/shp/KWT_adm_shp.zip
     1.4M http://biogeo.ucdavis.edu/data/gadm2.8/shp/LAO_adm_shp.zip
     3.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/LBN_adm_shp.zip
     467k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LBR_adm_shp.zip
     1.3M http://biogeo.ucdavis.edu/data/gadm2.8/shp/LBY_adm_shp.zip
      38k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LCA_adm_shp.zip
      89k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LIE_adm_shp.zip
     2.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/LKA_adm_shp.zip
     361k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LSO_adm_shp.zip
     331k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LTU_adm_shp.zip
     253k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LUX_adm_shp.zip
     358k http://biogeo.ucdavis.edu/data/gadm2.8/shp/LVA_adm_shp.zip
      18k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MAC_adm_shp.zip
     6.9k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MAF_adm_shp.zip
     2.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MAR_adm_shp.zip
     3.2k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MCO_adm_shp.zip
     222k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MDA_adm_shp.zip
      16M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MDG_adm_shp.zip
     154k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MDV_adm_shp.zip
     9.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MEX_adm_shp.zip
     174k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MHL_adm_shp.zip
      96k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MKD_adm_shp.zip
     1.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MLI_adm_shp.zip
      18k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MLT_adm_shp.zip
     6.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MMR_adm_shp.zip
     115k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MNE_adm_shp.zip
     345k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MNG_adm_shp.zip
      51k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MNP_adm_shp.zip
     3.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MOZ_adm_shp.zip
     416k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MRT_adm_shp.zip
      12k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MSR_adm_shp.zip
     107k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MTQ_adm_shp.zip
     103k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MUS_adm_shp.zip
     6.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MWI_adm_shp.zip
     3.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/MYS_adm_shp.zip
      47k http://biogeo.ucdavis.edu/data/gadm2.8/shp/MYT_adm_shp.zip
     1.4M http://biogeo.ucdavis.edu/data/gadm2.8/shp/NAM_adm_shp.zip
     767k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NCL_adm_shp.zip
     325k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NER_adm_shp.zip
     5.8k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NFK_adm_shp.zip
     2.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/NGA_adm_shp.zip
     954k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NIC_adm_shp.zip
     8.5k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NIU_adm_shp.zip
     650k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NLD_adm_shp.zip
     6.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/NOR_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/NPL_adm_shp.zip
      16k http://biogeo.ucdavis.edu/data/gadm2.8/shp/NRU_adm_shp.zip
     6.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/NZL_adm_shp.zip
     783k http://biogeo.ucdavis.edu/data/gadm2.8/shp/OMN_adm_shp.zip
     1.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PAK_adm_shp.zip
     3.6M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PAN_adm_shp.zip
     8.3k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PCN_adm_shp.zip
     8.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PER_adm_shp.zip
      21M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PHL_adm_shp.zip
     121k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PLW_adm_shp.zip
     5.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PNG_adm_shp.zip
     751k http://biogeo.ucdavis.edu/data/gadm2.8/shp/POL_adm_shp.zip
     192k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PRI_adm_shp.zip
     1.8M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PRK_adm_shp.zip
      33M http://biogeo.ucdavis.edu/data/gadm2.8/shp/PRT_adm_shp.zip
     839k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PRY_adm_shp.zip
      42k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PSE_adm_shp.zip
    1019k http://biogeo.ucdavis.edu/data/gadm2.8/shp/PYF_adm_shp.zip
     148k http://biogeo.ucdavis.edu/data/gadm2.8/shp/QAT_adm_shp.zip
     101k http://biogeo.ucdavis.edu/data/gadm2.8/shp/REU_adm_shp.zip
     7.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ROU_adm_shp.zip
      29M http://biogeo.ucdavis.edu/data/gadm2.8/shp/RUS_adm_shp.zip
      27M http://biogeo.ucdavis.edu/data/gadm2.8/shp/RWA_adm_shp.zip
     1.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SAU_adm_shp.zip
     844k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SDN_adm_shp.zip
     2.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SEN_adm_shp.zip
     110k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SGP_adm_shp.zip
      81k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SGS_adm_shp.zip
     234k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SHN_adm_shp.zip
     1.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SJM_adm_shp.zip
     2.5M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SLB_adm_shp.zip
     840k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SLE_adm_shp.zip
     731k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SLV_adm_shp.zip
      46k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SMR_adm_shp.zip
     1.1M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SOM_adm_shp.zip
      33k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SPM_adm_shp.zip
     563k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SRB_adm_shp.zip
     269k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SSD_adm_shp.zip
      88k http://biogeo.ucdavis.edu/data/gadm2.8/shp/STP_adm_shp.zip
     320k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SUR_adm_shp.zip
     435k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SVK_adm_shp.zip
     137k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SVN_adm_shp.zip
     4.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/SWE_adm_shp.zip
      65k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SWZ_adm_shp.zip
     5.1k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SXM_adm_shp.zip
     228k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SYC_adm_shp.zip
     248k http://biogeo.ucdavis.edu/data/gadm2.8/shp/SYR_adm_shp.zip
     122k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TCA_adm_shp.zip
     362k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TCD_adm_shp.zip
      93k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TGO_adm_shp.zip
      33M http://biogeo.ucdavis.edu/data/gadm2.8/shp/THA_adm_shp.zip
     351k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TJK_adm_shp.zip
      24k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TKL_adm_shp.zip
      72k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TKM_adm_shp.zip
     1.7M http://biogeo.ucdavis.edu/data/gadm2.8/shp/TLS_adm_shp.zip
     143k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TON_adm_shp.zip
     154k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TTO_adm_shp.zip
     937k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TUN_adm_shp.zip
     3.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/TUR_adm_shp.zip
      46k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TUV_adm_shp.zip
     657k http://biogeo.ucdavis.edu/data/gadm2.8/shp/TWN_adm_shp.zip
      11M http://biogeo.ucdavis.edu/data/gadm2.8/shp/TZA_adm_shp.zip
      17M http://biogeo.ucdavis.edu/data/gadm2.8/shp/UGA_adm_shp.zip
     2.0M http://biogeo.ucdavis.edu/data/gadm2.8/shp/UKR_adm_shp.zip
      39k http://biogeo.ucdavis.edu/data/gadm2.8/shp/UMI_adm_shp.zip
     508k http://biogeo.ucdavis.edu/data/gadm2.8/shp/URY_adm_shp.zip
      32M http://biogeo.ucdavis.edu/data/gadm2.8/shp/USA_adm_shp.zip
     408k http://biogeo.ucdavis.edu/data/gadm2.8/shp/UZB_adm_shp.zip
     3.4k http://biogeo.ucdavis.edu/data/gadm2.8/shp/VAT_adm_shp.zip
      51k http://biogeo.ucdavis.edu/data/gadm2.8/shp/VCT_adm_shp.zip
     1.9M http://biogeo.ucdavis.edu/data/gadm2.8/shp/VEN_adm_shp.zip
      49k http://biogeo.ucdavis.edu/data/gadm2.8/shp/VGB_adm_shp.zip
      87k http://biogeo.ucdavis.edu/data/gadm2.8/shp/VIR_adm_shp.zip
      25M http://biogeo.ucdavis.edu/data/gadm2.8/shp/VNM_adm_shp.zip
     895k http://biogeo.ucdavis.edu/data/gadm2.8/shp/VUT_adm_shp.zip
      37k http://biogeo.ucdavis.edu/data/gadm2.8/shp/WLF_adm_shp.zip
     162k http://biogeo.ucdavis.edu/data/gadm2.8/shp/WSM_adm_shp.zip
      17k http://biogeo.ucdavis.edu/data/gadm2.8/shp/XAD_adm_shp.zip
      35k http://biogeo.ucdavis.edu/data/gadm2.8/shp/XCA_adm_shp.zip
     3.4k http://biogeo.ucdavis.edu/data/gadm2.8/shp/XCL_adm_shp.zip
      80k http://biogeo.ucdavis.edu/data/gadm2.8/shp/XKO_adm_shp.zip
     126k http://biogeo.ucdavis.edu/data/gadm2.8/shp/XNC_adm_shp.zip
     1.2M http://biogeo.ucdavis.edu/data/gadm2.8/shp/YEM_adm_shp.zip
      28M http://biogeo.ucdavis.edu/data/gadm2.8/shp/ZAF_adm_shp.zip
     457k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ZMB_adm_shp.zip
     366k http://biogeo.ucdavis.edu/data/gadm2.8/shp/ZWE_adm_shp.zip

当前还没有任何评论

写下你最简单的想法