読み取り専用アーカイブの一部の衛星データにアクセスしようとしています。私の研究分野と一致するzipの.xmlにリストされている特定の座標を持つファイルにのみ興味があります。
年中毎日複数のファイルがあります。現在、私は2015/07フォルダに集中しています。毎月各日付に別々のフォルダがあります。すべての日常的なフォルダには、多数の.zipファイルと他のファイル形式が含まれています。
zipファイルの命名規則/構造は常に同じであるため、含まれるすべてのファイルで.zipファイル名が使用されます。サフィックス/ファイル拡張子は次のように変更されます。
$unzip -l S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.zip Archive: S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.zip
Length Date Time Name
--------- ---------- ----- ----
0 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/
16099 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/manifest.safe
0 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/measurement/
861899961 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/measurement/s1a-iw-grd-vv-20150701t135110-20150701t135135-006618-008d39-001.tiff
0 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/annotation/
1685172 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/annotation/s1a-iw-grd-vv-20150701t135110-20150701t135135-006618-008d39-001.xml
0 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/annotation/calibration/
1013267 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/annotation/calibration/calibration-s1a-iw-grd-vv-20150701t135110-20150701t135135-006618-008d39-001.xml
317418 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/annotation/calibration/noise-s1a-iw-grd-vv-20150701t135110-20150701t135135-006618-008d39-001.xml
0 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/
2437 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/product-preview.html
124584 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/quick-look.png
0 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/icons/
95280 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/icons/logo.png
1026 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/map-overlay.kml
20088 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE-report-20150701T155156.pdf
0 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/
440 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-product-preview.xsd
450 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-map-overlay.xsd
471 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-level-1-measurement.xsd
62654 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-object-types.xsd
469 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-level-1-quicklook.xsd
6427 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-level-1-calibration.xsd
147222 07-08-2015 15:04 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-level-1-product.xsd
3956 07-08-2015 15:05 S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/support/s1-level-1-noise.xsd
したがって、日付を選択したら、次を使用してすべての.kmlファイルのすべての座標を確認できます。
unzip -p S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.zip S1A_IW_GRDH_1SSV_20150701T135110_20150701T135135_006618_008D39_BE79.SAFE/preview/map-overlay.kml`
完全な.kmlファイルの内容を提供します。
<?xml version="1.0" encoding="UTF-8"?>0_20150701T135135_006618_008D39_BE79.SAFE<kml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://wwsa.int/safe/sentinel-1.0/sentinel-1" xmlns:s1sar="http://www.esa.int/safe/sentia.int/safe/sentinel-1.0/sentinel-1/sar/level-2" xmlns:gx="http://www.google.com
<Document>
<name>Sentinel-1 Map Overlay</name>
<Folder>
<name>Sentinel-1 Scene Overlay</name>
<GroundOverlay>
<name>Sentinel-1 Image Overlay</name>
<Icon>
<href>quick-look.png</href>
</Icon>
<gx:LatLonQuad>
<coordinates>-115.928909,35.970608 -118.750404,36.374107 -118.459686,
</gx:LatLonQuad>
</GroundOverlay>
</Folder>
</Document>
</kml>
ただし、2015年と2016年には毎日これを行う必要があるため、zipファイルを繰り返して、.zipファイルの名前と共同している.xmlファイルの行を印刷します。等価句:
<coordinates>-115.928909,35.970608 -118.750404,36.374107 -118.459686,
</gx:LatLonQuad>
誰かが私のためにこの記事をすべて書くとは思わないが、最初は役に立つだろう。
答え1
次のように起動します。
for zf in *.zip ; do
base=${zf/\.zip/}
echo "$zf"
unzip -p "$zf" "$base.SAFE/preview/map-overlay.kml" |
sed -ne '/<gx:/,/<\/gx:/p'
done
これにより、各.zipファイルが... / map-overlay.kmlに送信され、間の行のみがsed
印刷されます。<gx:
</gx:
<coordinates>
または、その行だけが必要な場合は、sed
スクリプトを次のように変更してください。
sed -ne '/<coordinates>/p'
ただし、これらのsed
スクリプトはサンプルデータを処理できますが、抽出に正規表現を使用すると、XMLファイルから数行だけ抽出しても失敗する可能性があります。私が言わない場合:
XMLまたはHTMLを解析しません。正規表現の使用。それがまさにその理由です。動作しません。
使用すると効果が良くなりますxmlstarlet
。 XML解析ライブラリの1つを使用するスクリプトがperl
よりpython
優れています。どちらにも.zipファイルを処理するためのライブラリモジュールがperl
あるので、2つのpython
言語のうちの1つですべての作業を実行できます。