#!/usr/bin/env python
# coding: utf-8
# WebサイトからNDVI、LSTをスクレイピングで自動ダウンロード
## URLのフォルダ名を取得するコード
## ダウンロード時に必要なユーザー名、パスワードを設定する
User_name = '〇〇'
password = '◆◆'
## 何秒ごとにデータをダウンロードするか
Download_Time = 10
# 画像出力フォルダ格納用(HDFファイル)の自動生成処理
import os
import math
new_dir = './Data/'
os.makedirs(new_dir, exist_ok=True)
new_dir_path_NDVI = './Data/NDVI_HDF'
new_dir_pathLST = './Data/LST_HDF'
os.makedirs(new_dir_path_NDVI, exist_ok=True)
os.makedirs(new_dir_pathLST, exist_ok=True)
os.chdir(new_dir_pathLST) # LSTをダウンロードする場合
import requests
from requests.auth import HTTPDigestAuth
import time
from bs4 import BeautifulSoup
## MODISプロダクトのURLを指定
# 取得したいデータのURLに応じて変更してください。
## LST →https://e4ftl01.cr.usgs.gov/MOLT/MOD11A2.061/
## NDVI →https://e4ftl01.cr.usgs.gov/MOLT/MOD13A2.061/
# BASE_URLとurl00は揃える必要があることに注意。
BASE_URL = u"https://e4ftl01.cr.usgs.gov/MOLT/MOD11A2.061/"
EXTENSION = u"hdf"
url00 = [
u"https://e4ftl01.cr.usgs.gov/MOLT/MOD11A2.061/",
]
for url in url00:
number_urls = []
r = requests.get(url)
soup = BeautifulSoup(r.content)
links = soup.findAll('a')
for link in links:
href = link.get('href')
number_urls.append(href)
# 年月日だけ取り出す
Num = number_urls[7:]
# 2012年から2015年までのデータを取り出す
Num_15 = Num[545:729]
# 参考:例えば、2018.01.01〜2022.12.27まで取得する場合
# id_intv = math.ceil(365/8) # id_intv = 46ずつ1年で増える
# Num_tmp = Num[729+id_intv*3:729+id_intv*7] というように設定する。
urls_list= []
# URLをリスト化しておく
for g in Num_15:
P = BASE_URL + str(g)
urls_list.append(P)
# 日本の座標を取り出す
# https://lpdaac.usgs.gov/products/mod13a2v006/
# → Sinusoidal投影法
# https://suzaku.eorc.jaxa.jp/GCOM_C/users_portal/faq/docs/
# GCOM-C_Products_Users_Guide_entrylevel__attach4_jp_191007.pdf
# → Sinusoidal投影法における日本の位置を特定
japan_list= ["h27v04","h28v04","h28v05","h29v05"]
for b in range(len(japan_list)):
Japan_EXTENSION = japan_list[b]
for i in range(len(urls_list)):
EXTENSION = u"hdf"
BASE_URL = urls_list[i]
urls = urls_list[i]
# for url in urls:
# print(url)
download_urls = []
r = requests.get(urls)
soup = BeautifulSoup(r.content)
links = soup.findAll('a')
# URLの抽出
for link in links:
href = link.get('href')
if href and EXTENSION and Japan_EXTENSION in href:
download_urls.append(href)
for download_url in download_urls[:-1]:
# 指定した時間ごとにデータを取得する
time.sleep(Download_Time)
file_name = download_url.split("/")[-1]
if BASE_URL in download_url:
r0 = requests.get(download_url).url
r1 = requests.get(r0,auth=(User_name,password))
else:
r0 = requests.get(BASE_URL + download_url).url
r1 = requests.get(r0,auth=(User_name,password))
# ファイルの保存
# 認証が通った(200)ならば
if r1.status_code == 200:
f = open(file_name, 'wb')
f.write(r1.content)
f.close()
[GRASSのインストール、標高データを用いた地滑り危険度マップの作成]
[植生指数 (NDVI) の計算、表示]
[標高データ (SRTM)の表示、植生指数 (NDVI) の3次元表示]
[反射率、輝度温度、標高データを用いた土地被覆分類]
[QGIS, Rを用いた公示地価データの空間統計分析:空間的自己回帰モデル]
[QGIS, Rを用いた公示地価データの空間統計分析:静的な時空間モデリング]
[Rを用いた衛星データ(LST, NDVI)の空間統計分析]
[Pythonを用いた空間統計分析のための衛星データ(LST, NDVI)の処理1(市町村別データの生成)]
[Pythonを用いた空間統計分析のための衛星データ(LST, NDVI)の処理2(人口データの重みを加味した市町村別データの生成)]