Последовательность действий для создания каталога данных
Обсудить в форуме Комментариев 3
Покрытия-каталоги данных Landsat удобны для быстрого определения наличия сцен на территорию исследования. Использовать для этого графический пользовательский интерфейс Glovis особенно для больших территорий - затруднительно. Подобную процедуру может понадобится периодически повторять поскольку в архивах Glovis постоянно появляются новые сцены. Готовые покрытия до 2009 года можно скачать со специальной страницы.
Данные о наличие сцен для конкретного Path и Row хранятся в специальном файле TOC, лежащем по адресу следующего вида для Landsat 7/ETM+ (данные до 2003):
http://glovis.usgs.gov/ImgViewer/l7/p001/r001/TOC
или, для Landsat 7/ETM+ SLC-OFF:
http://glovis.usgs.gov/ImgViewer/l7slc_off/p010/r001/TOC
http://glovis.usgs.gov/ImgViewer/l5/p010/r001/TOC
Если соответствующей комбинации Path и Row нет, сервер возвращает ошибку 404 Not Found.
Соответственно, для того, чтобы получить список доступных сцен, необходимо сгенерировать список подобных адресов, содержащий все Path и Row. Для этого можно использовать следующий скрипт на Perl (скачать) (для L5 и L7 соответственно необходимо изменить переменную $cur):
#!/usr/local/bin/perl $glovis = "http://glovis.usgs.gov/ImgViewer/"; $l7 = "l7"; $l7slcoff = "l7slc_off"; $l5 = "http://glovis.usgs.gov/ImgViewer/l5"; $cur = $glovis.$l7; open (F, ">filelist.ion"); for ($path=1; $path<=233; $path++) { for ($row=1; $row<=248; $row++) { if ($path<=9 & $row<=9) {print F "path00${path}row00${row}.toc $cur/p00$path/r00$row/TOC\n";} if ($path<=9 & $row>=10 & $row<=99) {print F "path00${path}row0${row}.toc $cur/p00$path/r0$row/TOC\n";} if ($path<=9 & $row>=100) {print F "path00${path}row${row}.toc $cur/$path/r$row/TOC\n";} if ($path>=10 & $path<=99 & $row<=9) {print F "path0${path}row00${row}.toc $cur/p0$path/r00$row/TOC\n";} if ($path>=10 & $path<=99 & $row>=10 & $row<=99) {print F "path0${path}row0${row}.toc $cur/p0$path/r0$row/TOC\n";} if ($path>=10 & $path<=99 & $row>=100) {print F "path0${path}row${row}.toc $cur/p0$path/r$row/TOC\n";} if ($path>=100 & $row<=9) {print F "path${path}row00${row}.toc $cur/p$path/r00$row/TOC\n";} if ($path>=100 & $row>=10 & $row<=99) {print F "path${path}row0${row}.toc $cur/p$path/r0$row/TOC\n";} if ($path>=100 & $row>=100) {print F "path${path}row${row}.toc $cur/p$path/r$row/TOC\n";} } } close (F);
Предыдущий скрипт создает текстовый файл ION, пригодный для использования как список загрузки с помощью ReGet. Результатом скачивания является набор файлов с названиями типа: path001row001.toc и содержанием следующего характера (пример):
1,1,1002,0,0,3 20010715,196,927278,4653135,67,LE70010012001196SGS00,9,9,9,105,156,7,275,143,127,240,0 20010731,212,927328,4652959,4,LE70010012001212SGS00,9,9,9,105,156,7,275,143,127,240,276790084 20010917,260,927184,4652880,97,LE70010012001260SGS00,9,9,9,105,156,7,275,143,127,240,0
Часть комбинаций попадает в море и, видимо поэтому, их нет в архиве вообще, например p001|r044, попытка обратиться к ним будет вызывать ошибку 404 (Not Found). В зависимости от типа данных L7, L5, L7 SLC-OFF, одни и теже комбинации Path/Row могут присутствовать или отсутствовать. Например для p001|r001: L7 - есть, L5 - нет, L7 SLC-OFF - нет.
Первая строка в этом списке несет служебную информацию:
В полученных файлах toc нас интересует ID сцены вида: LT50010052006170KIS00. Подставив это ID в URL к Glovis, можно добиться того, что он выдаст нам файл метаданных. Полная ссылка таким образом выглядит так:
http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010052006170KIS00
Таким образом, наша задача получить список таких ссылок, для загрузки самих файлов метаданных из полученных файлов toc. Создать новый список загрузки можно сделать с помощью следующего скрипта (скачать):
#!/usr/local/bin/perl @list=glob("*\.toc"); foreach $list (@list) { open (TMP, "$list"); @tmp =; foreach $tmp (@tmp) { if ($tmp =~ /[A-Z]{2}[0-9]{14}[A-Z]{3}[0-9]{2}/) { push @url, ("$&"); } } } open (OUT, ">l7_slc_off_ids.ion"); %tmp = (); foreach $item (@url) { #print OUT "$item\.meta http\:\/\/glovis\.usgs\.gov\/ImgViewer\/showmetadata\.cgi\?scene_id\=$item\n" unless $tmp{$item}++; print OUT "http\:\/\/glovis\.usgs\.gov\/ImgViewer\/showmetadata\.cgi\?scene_id\=$item\n" unless $tmp{$item}++; }
Запускать скрипт необходимо из папки, содержащей файлы toc. Результатом работы будет файл *ids.ion примерно следующего содержания:
http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010052006170KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010052006186KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010052006202KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010052006218KIS01 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010062006170KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010062006186KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010062006202KIS00 http://glovis.usgs.gov/ImgViewer/showmetadata.cgi?scene_id=LT50010062006218KIS01 ....
Предыдущий скрипт создает текстовый файл ION, пригодный для использования как список загрузки с помощью ReGet. Результатом скачивания является набор файлов HTML с названиями типа: showmetadata.cgi@scene_id=LT52310732005210CUB00 и содержанием следующего характера:
Dataset Attribute Attribute Value {Landsat Scene Identifier} LT52310732000213XXX02 {Spacecraft Identifier} 5 {Sensor Mode} {Station Identifier} XXX {Day Night} DAY {WRS Path} 231 {WRS Row} 073 {WRS Type} 2 {Date Acquired} 2000/07/31 {Start Time} 2000:213:13:54:17.47069 {Stop Time} 2000:213:13:54:44.58300 {Sensor Anomalies} N {Acquisition Quality}
Из файлов с метаданными (которых может быть очень много) нужно создать единую таблицу. Для этого можно использовать скрипт импортирующий все метаданные в единую таблицу CSV из файлов meta (скачать). Нюанс данной операции заключается в том, что набор и последовательность полей меняются в зависимости от типа данных, так для Landsat 5 они будут отличны от Landsat 7.
Для Landsat 5 список полей выглядит следующим образом:
scene_id,spacecraft_identifier,sensor_mode,station_identifier,day_night,wrs_path,wrs_row,wrs_type,date_acquired,start_time,stop_time,sensor_anomalies,acquisition_quality,quality_band_1,quality_band_2,quality_band_3,quality_band_4,quality_band_5,quality_band_6,quality_band_7,cloud_cover,cloud_cover_quadrant_upper_left,cloud_cover_quadrant_upper_right,cloud_cover_quadrant_lower_left,cloud_cover_quadrant_lower_right,sun_elevation,sun_azimuth,scene_center_latitude,scene_center_longitude,corner_upper_left_latitude,corner_upper_left_longitude,corner_upper_right_latitude,corner_upper_right_longitude,corner_lower_left_latitude,corner_lower_left_longitude,corner_lower_right_latitude,corner_lower_right_longitude,browse_exists,scene_source,cct_source_available,dct_source_available,film_source_available
для Landsat 7
entityid,app_id,sensor_mode,recstation,daynight,path,row,wrs_type,acqdate,scenestart,scenestop,sen_anomal,acq_qlty,qltyb1,qltyb2,qltyb3,qltyb4,qltyb5,qltyb6,qltyb7,scenecc,cloud_ul,cloud_ur,cloud_ll,cloud_lr,sunelev,sunazi,sclat,sclong,ullat,ullong,urlat,urlong,lllat,lllong,lrlat,lrlong,browseavai,scene_src,cct_avail,dct_avail,film_avail,filename
В зависимости от того, для каких данных создается каталог необходимо поменять заголовок таблицы прописанный в скрипте.
Полученную таблицу можно использовать совместно с покрытием-разграфкой Landsat, для получения нового каталога.
Результат работы в виде готового каталога на 2009 год доступен для скачивания на специальной странице.
Обсудить в форуме Комментариев 3
Последнее обновление: September 09 2021
Дата создания: 09.05.2010
Автор(ы): Максим Дубинин
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).