データのダウンロード・圧縮・アーカイブ
筑波大学農林工学系 西田顕郎
FTPによるダウンロード
FTP (file transport protocol)は、インターネット上でファイルを転送する方式である。Unixであれ、Windowsであれ、コマンドラインから、ftpというコマンドによって使用できる。例として, 米国のメリーランド大学から, Landsatという衛星のデータをダウンロードしてみよう。
- 以下の操作を行え。
$ ftp ftp.glcf.umd.edu Connected to ftp.glcf.umd.edu. 220- 220-======================================================================== 220-== Welcome to the == 220-== Global Land Cover Facility == ... (中略) 220 Name (ftp.glcf.umd.edu:tmp0):
- Nameにはanonymousと入れる。続いてパスワードには自分のメールアドレスを入れる。
- 注: ここでメールアドレスを打ち込むとき、画面には打ち込んだ内容は表示されない。これはセキュリティのためである。
230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
- ここで, ftp> に続いて以下のように打ち込む(ftp>はFTP画面の中のプロンプト):
ftp> cd glcf/Landsat/WRS2/p107/r035 ftp> cd p107r035_7x20010924.ETM-EarthSat-Orthorectified ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 10223 10223 4915438 Dec 22 2003 p107r035_7k20010924_z54_nn61.tif.gz -rw-r--r-- 1 10223 10223 6158033 Dec 22 2003 p107r035_7k20010924_z54_nn62.tif.gz (中略) -rw-r--r-- 1 10223 10223 30473003 Dec 22 2003 p107r035_7t20010924_z54_nn70.tif.gz -rw-r--r-- 1 10223 10223 5526 Feb 12 2004 p107r035_7x20010924.met 226 Directory send OK.
ftp> get p107r035_7t20010924.browse.jpg get p107r035_7t20010924.browse.jpg local: p107r035_7t20010924.browse.jpg remote: p107r035_7t20010924.browse.jpg 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for p107r035_7t20010924.browse.jpg (337377 bytes). 226 File send OK. 337377 bytes received in 1.90 secs (173.5 kB/s) ftp> quit
解説
この例では、ftp.glcf.umd.eduという、米国メリーランド大学のデータサーバーから、Landsatのサンプル画像(縮小見本)を取得している。ポイントは、
- ftpでサーバーにアクセスするときは、 $ ftp サーバー名(ドメイン名でもIPアドレスでもOK)とする。
- anonymousとは、そのサーバーに個人的な使用権がなくても利用できるftpサービス(つまり世間一般に公開している場合)にアクセスするときのログイン名。
- anonymous FTPでログインする場合は、パスワードは何を入れても大丈夫だが、自分のEメールアドレスを入れるのが礼儀とされている。
- cdやlsは、UNIXのふつうのコマンドと同じ。
- binaryは、ファイルをバイナリーモードで転送する、という宣言。ほかにasciiモードという転送方式もあるが、地理情報データではほとんどの場合、binaryである。WindowsでUNIXのFTPサーバーにアクセスするときなどは、binaryとasciiのモードの違いによって、大きなトラブルが発生し得るので注意。
- getコマンドでファイル名を指定すれば、そのファイルが取得できる。
- 操作を終るときは"quit"
問1: このようにして取得したファイルがカレントディレクトリにあることを確認し、そのサイズを調べよ。
問2: ftpのオンラインマニュアルを閲覧せよ。
wgetによるダウンロード
以上の例は、正統的・古典的なダウンロード法だが、
- たくさんコマンドを打ち込むのがうざい
- 回線が不安定なときに途中で打ち切られやすい
という欠点がある。もし、ダウンロード対象について、アドレス・ディレクトリパス・ファイル名などがわかっている場合や、一括して多くのファイルをダウンロードしたい場合などは、ftpコマンドの代わりにwgetというコマンドがとても便利である。(ただし、wgetは、システムによっては準備されていない場合がある)
例: 以下の操作によって、上と同じサーバーから同じファイルを取得せよ:
$ rm p107r035_7t20010924.browse.jpg ... まず既存のファイルを削除しておく。 $ wget ftp://ftp.glcf.umd.edu/glcf/Landsat/WRS2/p107/r035/p107r035_7x20010924.ETM-EarthSat-Orthorectified/p107r035_7t20010924.browse.jpg
[rs02@envr1 rs02]$ wget ftp://ftp.glcf.umd.edu/glcf/Landsat/WRS2/p107/r035/p107r035_7x20010924.ETM-EarthSat-Orthorectified/p107r035_7t20010924.browse.jpg --19:34:15-- ftp://ftp.glcf.umd.edu/glcf/Landsat/WRS2/p107/r035/p107r035_7x20010924.ETM-EarthSat-Orthorectified /p107r035_7t20010924.browse.jpg => `p107r035_7t20010924.browse.jpg.1' ftp.glcf.umd.edu をDNSに問いあわせています... 完了しました。 ftp.glcf.umd.edu[128.8.120.131]:21 に接続しています... 接続しました。 anonymous としてログインしています... ログインしました! ==> SYST ... 完了しました。 ==> PWD ... 完了しました。 ==> TYPE I ... 完了しました。 ==> CWD /glcf/Landsat/WRS2/p107/r035/p107r035_7x20010924.ETM-EarthSat-Orthorectified ... 完了しました。 ==> PORT ... 完了しました。 ==> RETR p107r035_7t20010924.browse.jpg ... 完了しました。 長さ: 331,549 (確証はありません) 100%[===========================================================================================>] 331,549 127.87K/s ETA 00:00 19:34:20 (127.87 KB/s) - `p107r035_7t20010924.browse.jpg' を保存しました [331549]
たった1行(wget)で、上のftpの操作と同じ結果が得られることに注意。
問3: wgetコマンドのオンラインマニュアルを閲覧せよ。どのようなオプションがあるか?
注: wgetコマンドは、ftpサイトのみならず、ウェブサイトからのダウンロード(HTTP)にも対応できる。
注: wgetでファイルをダウンロードするとき、すでにカレントディレクトリに同一名のファイルがある場合は、ダウンロードしたファイルの名前に、.1や.2というような識別番号が拡張子として付加される。
注: したがって、wgetでダウンロードが途中で止まってしまったとき、wgetコマンドをそのまま走らせると、.1という拡張子をもったファイルが新しくできてしまう。これを防ぎ、ダウンロードの途中から再開したい場合は、wgetに-cオプションをつけるとよい。
圧縮・解凍
通信時や保管時にはデータサイズを小さくすると効率的である。特に、衛星データなどの地理情報データはサイズが大きいので、圧縮技術は不可欠である。
UNIXでよく使われる圧縮形式には、以下の3種類がある: gzip, zip, bzip2
- gzip(ジージップ)は、もっとも一般的である。拡張子:.gz
- zip(ジップ)はgzipの前身であり、windowsでもよく使われる。拡張子:.zip
- bzip2(ビージップツー)は、gzipより処理時間がかかるが、そのぶん圧縮率が高いことが多い。拡張子:.bz2
- compressは、古い圧縮方法である。拡張子:.Z
それぞれの圧縮の仕方は、
$ gzip filename $ zip filename.zip filename $ bzip2 filename $ compress filename
である。
それぞれの解凍の仕方は、
$ gunzip filename.gz $ unzip filename.zip $ bunzip2 filename.bz2 $ uncompress filename.Z
である。
注: Linuxにはcompressがインストールされていないことが多い。
アーカイブ
ひとつのデータも、たくさんのファイルから構成されることがある。衛星画像などは特に、同じ日時・同じ場所を撮影したデータも、チャンネル(波長帯)ごとに違ったファイルにデータが格納されていることがよくある。そのような場合であっても、データを転送したり保管したりするときには、ひとつのファイルとしてまとまっているほうが扱いやすい。そこで、複数のファイルをひとつのファイルに連結してしまうことがよくある。これを「アーカイブ」といい、なかでも最も一般的な方法が"tar archive"(ターアーカイブ)である。tarアーカイブの拡張子は.tarである。
tarアーカイブの作り方:
$ tar cvf filename.tar file1 file2 file3 .... または、 $ tar cvf filename.tar directory
tarアーカイブの展開のやりかた:
$ tar xvf filename.tar
注: tarでアーカイブし、gzipで圧縮する、というのがUNIXにおけるデータ管理の一般的な流儀であり、その場合、ファイルは.tar.gzを拡張子に持つことになる。このようなファイルを"tar ball"と呼ぶ。tar ballの解凍・展開は、tar zxvfというコマンドを使えば、gunzipとtar xvfの両方の機能を1つのコマンドでまとめて実行できる。
Keyword(s):
References:[GIS入門]