如何自动化卫星图像下载?

时间:2013-12-03 22:45:15

标签: python r image download

我正在寻找一种自动下载卫星图像的方法。屏幕截图显示了我有兴趣下载的文件的类型和格式(.ntf和150MB文件)。

我遇到了TheBioBucket的以下代码看起来很有希望,尽管R包XML已经过时了。

require(XML)

dir.create("D:/GIS_DataBase/DEM/")
setwd("D:/GIS_DataBase/DEM/")

doc <- htmlParse("http://www.viewfinderpanoramas.org/dem3.html#alps")
urls <- paste0("http://www.viewfinderpanoramas.org", xpathSApply(doc,'//*/a[contains(@href,"/dem1/N4")]/@href'))
names <- gsub(".*dem1/(\\w+\\.zip)", "\\1", urls)

for (i in 1:length(urls)) download.file(urls[i], names[i])

是否有一种很好的方法可以使用R或Python以编程方式自动下载.ntf文件的过程?

enter image description here

2 个答案:

答案 0 :(得分:2)

Scraping在Python中很容易实现。

# collect.py
import urllib, urllib2, bs4
from urlparse import urljoin

soup = bs4.BeautifulSoup(urllib2.urlopen("http://www.viewfinderpanoramas.org/dem3.html#alps"))
links = soup.find_all('a')
for link in links:
    try:
        if "/dem1/N4" in link['href']:
            url = urljoin("http://www.viewfinderpanoramas.org/", link['href'])
            filename = link['href'].split('/')[-1]
            urllib.urlretrieve(url, filename)
            #break
    except:
        pass

您可能希望更改文件名以包含要放置文件的路径

答案 1 :(得分:1)

R中,XML包可以非常轻松地促进您的需求。这是一个开始的地方

library(XML)
demdir <- "http://www.viewfinderpanoramas.org/dem1/"

# this returns a data.frame with file names
dems <- readHTMLTable(demdir)[[1]]

# you'll want, for example, to download only zip files
demnames <- dems[grepl(".zip",dems$Name),"Name"]
# (but you can add other subsetting/selection operations here)

# download the files to the same name locally
# (change '.' if you want some other directory)
sapply(demnames, function(demfi) download.file(paste0(demdir,demfi), file.path(".",demfi)))

我能看到的唯一复杂因素是文件名太长(如果在网络浏览器中被截断),那么dems中的文件名也会被截断。

相关问题