日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Landsat元数据批量下载工具

發(fā)布時(shí)間:2023/12/13 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 Landsat元数据批量下载工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

前言
landsat數(shù)據(jù)情況簡(jiǎn)介
下載元數(shù)據(jù)
總結(jié)

一、前言

最近由于工作需要,需要下載部分landsat數(shù)據(jù)的元數(shù)據(jù),老板大手一揮,給了十幾年的landsat的path、row以及日期等,就算交待完了。于是我就開(kāi)始準(zhǔn)備吭哧吭哧到USGS官網(wǎng)上去一個(gè)個(gè)找。程序員應(yīng)該是世界上最懶的人,懶到哪怕只有幾百個(gè)也不愿意一個(gè)個(gè)手動(dòng)弄,于是在官網(wǎng)上翻騰半天,終于找到這么一個(gè)頁(yè)面(https://landsat.usgs.gov/landsat-bulk-metadata-service),能夠給定范圍批量下載元數(shù)據(jù),這是個(gè)好東西,基本幾下就解決問(wèn)題了。懶勁又升級(jí)了,這么一批一批的下下來(lái)我不是還要手工整理,于是就想寫(xiě)個(gè)程序自動(dòng)下載然后篩選出我想要的部分。

二、landsat數(shù)據(jù)情況簡(jiǎn)介

我相信接觸過(guò)landsat的人這塊應(yīng)該都很清楚了,百度百科介紹如下:

美國(guó)NASA的陸地衛(wèi)星(Landsat)計(jì)劃(1975年前稱(chēng)為地球資源技術(shù)衛(wèi)星 — ERTS ),從1972年7月23日以來(lái), 已發(fā)射8顆(第6顆發(fā)射失敗)。目前Landsat1—4均相繼失效,Landsat 5仍在超期運(yùn)行(從1984年3月1日發(fā)射至今)。 Landsat 7于1999年4月15日發(fā)射升空。Landsat8[1] 于2013年2月11日發(fā)射升空,經(jīng)過(guò)100天測(cè)試運(yùn)行后開(kāi)始獲取影像。

具體信息可以自行查詢(xún),landsat的數(shù)據(jù)都是以帶號(hào)進(jìn)行命名的,信息包含path、row以及數(shù)據(jù)日期等。我們就要根據(jù)這些來(lái)實(shí)現(xiàn)批量下載landsat元數(shù)據(jù)。

三、下載元數(shù)據(jù)

3.1 分析下載元數(shù)據(jù)頁(yè)面

仔細(xì)分析上述usgs官網(wǎng)中的下載元數(shù)據(jù)頁(yè)面,不難發(fā)現(xiàn)其是將行列號(hào)一定范圍內(nèi)以及日期一定范圍內(nèi)的元數(shù)據(jù)打包成一個(gè)文件發(fā)送到前臺(tái)。并且發(fā)送的是一個(gè)GET請(qǐng)求,請(qǐng)求格式如下:

https://earthexplorer.usgs.gov/EE/InventoryStream/pathrow?start_path=131&end_path=140&start_row=35&end_row=38&sensor=LANDSAT_TM_C1&start_date=2011-06-01&end_date=2011-11-01&format=CSV

參數(shù)名稱(chēng)也都通俗易懂,于是一切就豁然開(kāi)朗了,我只需要寫(xiě)個(gè)程序根據(jù)需求拼接出此url,然后發(fā)送請(qǐng)求,就能得到結(jié)果。一切就是這么easy,不過(guò)拿到結(jié)果后你會(huì)發(fā)現(xiàn)事情稍微復(fù)雜一點(diǎn),因?yàn)檎?qǐng)求的區(qū)域及時(shí)間等都是范圍,這就導(dǎo)致結(jié)果中有很多不是我們需要的,于是再完善程序循環(huán)遍歷與我們輸入數(shù)據(jù)的行列號(hào)逐一匹配,取出需要的結(jié)果即可。

3.2 程序?qū)崿F(xiàn)

程序整體界面如圖所示:

程序比較簡(jiǎn)單,只需要提供一個(gè)下載范圍文件(csv格式),每行一個(gè),選擇下載的landsat的dataset即可。

程序讀取用戶(hù)給定的范圍自動(dòng)算出行列號(hào)的范圍以及日期范圍,代碼如下:

var lines = File.ReadAllLines(fileName);
var data = lines.Select(s => s.Split(',')).Select(s => new { Path = int.Parse(s[0]), Row = int.Parse(s[1]), Date = CommonHelper.ParseDate(s[2]) });
StartPath = data.Min(s => s.Path);
StartRow = data.Min(s => s.Row);
StartDate = data.Min(s => s.Date);
EndPath = data.Max(s => s.Path);
EndRow = data.Max(s => s.Row);
EndDate = data.Max(s => s.Date);

之后拼接請(qǐng)求的URL,代碼如下:

$"https://earthexplorer.usgs.gov/EE/InventoryStream/pathrow?start_path={StartPath}&end_path={EndPath}&start_row={StartRow}&end_row={EndRow}&sensor={DatasetType}&start_date={CommonHelper.FormatDate(StartDate)}&end_date={CommonHelper.FormatDate(EndDate)}&format=CSV"

其中DatasetType是用戶(hù)選擇的landsat數(shù)據(jù)源,CommonHelper.FormatDate函數(shù)完成日期到字符串格式的轉(zhuǎn)化,代碼如下:

public static string FormatDate(DateTime date)
{
    return date.ToString("yyyy-MM-dd");
}

然后發(fā)送請(qǐng)求,獲取結(jié)果,這塊在網(wǎng)絡(luò)爬蟲(chóng)之密碼破解一文中已經(jīng)介紹過(guò),不再贅述。獲取到結(jié)果后,將其與用戶(hù)想要的結(jié)果一一比對(duì),取出需要的結(jié)果,代碼如下:

var orginResultList = orginResult.Split(new char[] { '', '
' }, StringSplitOptions.RemoveEmptyEntries).Skip(1);
var source = File.ReadAllLines(file);
var data = source.Select(s => s.Split(',')).Select(s => new { Path = int.Parse(s[0]), Row = int.Parse(s[1]), Date = CommonHelper.ParseDate(s[2]) });
var endResult = new List<string>();
data.ToList().ForEach(s =>
{
    var temp = orginResultList.Where(re =>
    {
        var arr = re.Split(',');
        return int.Parse(arr[7]) == s.Path && int.Parse(arr[8]) == s.Row /*&& CommonHelper.ParseDate(arr[5]) == s.Date*/;
    });
    if (temp != null && temp.Count() > 0)
        endResult.Add(temp.First());
});
File.WriteAllLines(Path.Combine(Path.GetDirectoryName(file), "res.csv"), endResult);

其中orginResult表示請(qǐng)求返回的結(jié)果,這里面存在一個(gè)問(wèn)題就是往往用戶(hù)想要的元數(shù)據(jù)日期與返回的元數(shù)據(jù)日期不一致(原因可能有很多,用戶(hù)輸入不準(zhǔn)確,或者有什么我未考慮到的因素),如果時(shí)間也進(jìn)行匹配的話(huà)基本取不到結(jié)果,所以目前采用的方式只比對(duì)行列號(hào)。

四、總結(jié)

通過(guò)以上方式即可實(shí)現(xiàn)批量下載landsat元數(shù)據(jù),需要下載程序的可以直接點(diǎn)擊這里,當(dāng)然由于剛做出的程序,難免在代碼邏輯或者業(yè)務(wù)邏輯上有BUG或者未考慮到的地方,歡迎批評(píng)指正,后續(xù)完善之后可能會(huì)將源代碼開(kāi)放到Github上,以供需要的人使用。

總結(jié)

以上是生活随笔為你收集整理的Landsat元数据批量下载工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。