Pythonを用いた空間統計分析のための衛星データ(LST, NDVI)の処理2

特定の期間に応じたNDVI・LSTの抽出

import h5py
import pandas as pd
import tables
from pyhdf.SD import SD, SDC
import numpy as np
import pandas as pd
from scipy.interpolate import griddata
import seaborn as sns
import matplotlib.pyplot as plt

import os
import glob
import csv

import jismesh.utils as ju

## 6〜9月 LST

path0000 = "./Data/27City_LST"
files = os.listdir(path0000)
ff = files[0:]

# 都市ごとのフォルダを作る
os.makedirs("./Data/27City_LST_6to9_AVE/", exist_ok=True)


City00 = ['さいたま市','京都市','仙台市','北九州市','千葉市',
          '名古屋市','堺市','大阪市','姫路市','宇都宮市','岡山市',
          '川口市','川崎市','広島市','新潟市','札幌市','東大阪市',
          '松山市','横浜市','浜松市','熊本市','相模原市','神戸市',
          '福岡市','船橋市','静岡市','鹿児島市']

Cityname = ['Saitama','Kyoto','Sendai','Kitakyushu','Chiba',
            'Nagoya','Sakai','Osaka','Himezi','Utsunomiya','Okayama',
            'Kawaguchi','Kawasaki','Hiroshima','Niigata','Sapporo',
            'HigashiOsaka','Matsuyama','Yokohama','Hamamatsu',
            'Kumamoto','Sagamihara','Kobe','Fukuoka','Funabashi',
            'Shizuoka','Kagoshima']

period = [['2012153','2012161','2012169','2012177','2012185','2012193',
           '2012201','2012209','2012217','2012225','2012233','2012241',
           '2012249','2012257','2012265'],
         ['2013153','2013161','2013169','2013177','2013185','2013193',
          '2013201','2013209','2013217','2013225','2013233','2013241',
          '2013249','2013257','2013265'],
         ['2014153','2014161','2014169','2014177','2014185','2014193',
          '2014201','2014209','2014217','2014225','2014233','2014241',
          '2014249','2014257','2014265'],
         ['2015153','2015161','2015169','2015177','2015185','2015193',
          '2015201','2015209','2015217','2015225','2015233','2015241',
          '2015249','2015257','2015265']]

City0 = pd.read_csv(path0000 + "/" + ff[0] + "/" 
+ Cityname[0] + "City_" + period[0][0] 
+ "_LST.csv",header=0,engine="python")


### LSTデータ 月ごとに集計
for t in range(len(ff)):
    
    ## periodの最初の期間を基準とする
    for g in range(len(period)):
        when0 = period[g][0]
        City0 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
        + Cityname[t] + "City_" + when0 
        + "_LST.csv",header=0,engine="python")
        
        ## 残りの配列を基準としたものに対して結合する
        for i in range(len(period)-1):
            when1 = period[g][i+1]
            City1 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
            + Cityname[t] + "City_" + when1 
            + "_LST.csv",header=0,engine="python")
            City0 = pd.concat([City0,City1])
            
    City0 = City0.reset_index(drop=True)
        
    ## 結合したファイルの中でXY座標に重複があるものを削除
    City_concat_dep = City0.drop_duplicates(['X','Y'])
    City_concat_dep = City_concat_dep.drop('LST', axis=1)
    grouped = City_concat_dep.groupby(level=0)  
    City_concat_dep = grouped.last()
    City_concat_dep = City_concat_dep.reset_index(drop=True)
    
    ####### 以下で各座標値における月ごとのデータを取得
        
    # LSTの各座標の、各月における最大値を格納するためのリストを初期化しておく
    LST_list = []
    
    for h in range(len(City_concat_dep)):
        # 座標値が基準のものと一致したLSTを取得する
        LST = City0[(City0["X"] == City_concat_dep["X"][h]) 
        & (City0["Y"] == City_concat_dep["Y"][h])]["LST"]
        LST = pd.DataFrame(LST)

        # 6〜8月のLSTの平均値を取得し、リストに格納する
        LST_Ave = LST.mean()
        l_1d = LST_Ave.values.tolist()
        LST_list.append(l_1d[0])
            
    # LSTの平均値リストをX,Y座標に対して結合
    LST_list = pd.DataFrame(LST_list)
    City_concat_dep = pd.concat([City_concat_dep,LST_list],
    axis=1,ignore_index=True) 
    City_concat_dep = City_concat_dep.drop(0, axis=1)
        
    # CSVファイル化
    # 左から順にX,Y,LSTの値が格納されている
    City_concat_dep.to_csv("./Data/27City_LST_6to9_AVE/" 
    + Cityname[t] + "_6to9_AVE.csv")


## 6〜9月 NDVI

path0000 = "./Data/27City_NDVI"
files = os.listdir(path0000)
ff = files[0:]

# 都市ごとのフォルダを作る
os.makedirs("./Data/27City_NDVI_6to9_AVE/", exist_ok=True)

City00 = ['さいたま市','京都市','仙台市','北九州市','千葉市',
          '名古屋市','堺市','大阪市','姫路市','宇都宮市','岡山市',
          '川口市','川崎市','広島市','新潟市','札幌市','東大阪市',
          '松山市','横浜市','浜松市','熊本市','相模原市','神戸市',
          '福岡市','船橋市','静岡市','鹿児島市']

Cityname = ['Saitama','Kyoto','Sendai','Kitakyushu','Chiba',
            'Nagoya','Sakai','Osaka','Himezi','Utsunomiya','Okayama',
            'Kawaguchi','Kawasaki','Hiroshima','Niigata','Sapporo',
            'HigashiOsaka','Matsuyama','Yokohama','Hamamatsu',
            'Kumamoto','Sagamihara','Kobe','Fukuoka','Funabashi',
            'Shizuoka','Kagoshima']

period = [['2012161','2012177','2012193','2012209','2012225',
           '2012241','2012257'],
         ['2013161','2013177','2013193','2013209','2013225',
          '2013241','2013257'],
         ['2014161','2014177','2014193','2014209','2014225',
          '2014241','2014257'],
         ['2015161','2015177','2015193','2015209','2015225',
          '2015241','2015257']]

### NDVIデータ 月ごとに集計

for t in range(len(ff)):
    
    for g in range(len(period)):
        when0 = period[g][0]
        City0 = pd.read_csv(path0000 + "/" + ff[t] 
        + "/" + Cityname[t] + "City_" 
        + when0 + "_NDVI.csv",header=0,engine="python")
        
        for i in range(len(period)-1):
            when1 = period[g][i+1]
            City1 = pd.read_csv(path0000 + "/" + ff[t] 
            + "/" + Cityname[t] + "City_" 
            + when1 + "_NDVI.csv",header=0,engine="python")
            City0 = pd.concat([City0,City1])
            
        # Dataframeの構造上、INDEXを振りなおさないとエラーが出る
        City0 = City0.reset_index(drop=True)
        
        ## 結合したファイルの中でXY座標に重複があるものを削除
        City_concat_dep = City0.drop_duplicates(['X','Y'])
        City_concat_dep = City_concat_dep.drop('NDVI', axis=1)
        grouped = City_concat_dep.groupby(level=0)  
        City_concat_dep = grouped.last()
        # Dataframeの構造上、INDEXを振りなおさないとエラーが出る
        City_concat_dep = City_concat_dep.reset_index(drop=True)
    
        ####### 以下で各座標値における月ごとのデータを取得
        
        # 各座標の各月のNDVIの最大値を格納するリストの初期化
        NDVI_list = []
    
        for h in range(len(City_concat_dep)):
            # 座標値が基準のものと一致したLSTを取得する
            NDVI = City0[(City0["X"] == City_concat_dep["X"][h]) 
            & (City0["Y"] == City_concat_dep["Y"][h])]["NDVI"]
            NDVI = pd.DataFrame(NDVI)
            
            # 6〜8月のLSTの平均値を取得し、リストに格納
            NDVI_Ave = NDVI.mean()
            l_1d = NDVI_Ave.values.tolist()
            NDVI_list.append(l_1d[0])
            
        # LSTの平均値リストをX,Y座標に対して結合
        NDVI_list = pd.DataFrame(NDVI_list)
        City_concat_dep = pd.concat([City_concat_dep,NDVI_list],
        axis=1,ignore_index=True) 
        City_concat_dep = City_concat_dep.drop(0, axis=1)
        
        # CSVファイル化
        # 左から順にX,Y,LSTの値が格納されている
        City_concat_dep.to_csv("./Data/27City_NDVI_6to9_AVE/" 
        + Cityname[t] + "_6to9_AVE.csv")


## 年間 NDVI

path0000 = "./Data/27City_NDVI"
files = os.listdir(path0000)
ff = files[0:]

# 都市ごとのフォルダを作る
os.makedirs("./Data/27City_NDVI_annual_AVE/", exist_ok=True)
os.makedirs("./Data/27City_NDVI_annual_AVE/2012", exist_ok=True)
os.makedirs("./Data/27City_NDVI_annual_AVE/2013", exist_ok=True)
os.makedirs("./Data/27City_NDVI_annual_AVE/2014", exist_ok=True)
os.makedirs("./Data/27City_NDVI_annual_AVE/2015", exist_ok=True)


City00 = ['さいたま市','京都市','仙台市','北九州市','千葉市',
          '名古屋市','堺市','大阪市','姫路市','宇都宮市','岡山市',
          '川口市','川崎市','広島市','新潟市','札幌市','東大阪市',
          '松山市','横浜市','浜松市','熊本市','相模原市','神戸市',
          '福岡市','船橋市','静岡市','鹿児島市']


Cityname = ['Saitama','Kyoto','Sendai','Kitakyushu','Chiba',
            'Nagoya','Sakai','Osaka','Himezi','Utsunomiya','Okayama',
            'Kawaguchi','Kawasaki','Hiroshima','Niigata','Sapporo',
            'HigashiOsaka','Matsuyama','Yokohama','Hamamatsu',
            'Kumamoto','Sagamihara','Kobe','Fukuoka','Funabashi',
            'Shizuoka','Kagoshima']

period = [['2012001','2012017','2012033','2012049','2012065','2012081',
          '2012097','2012113','2012129','2012145','2012161','2012177',
          '2012193','2012209','2012225','2012241','2012257',
          '2012273','2012289','2012305','2012321','2012337','2012353'],
          
          ['2013001','2013017','2013033','2013049','2013065','2013081',
          '2013097','2013113','2013129','2013145','2013161','2013177',
          '2013193','2013209','2013225','2013241','2013257',
          '2013273','2013289','2013305','2013321','2013337','2013353'],

          ['2014001','2014017','2014033','2014049','2014065','2014081',
          '2014097','2014113','2014129','2014145','2014161','2014177',
          '2014193','2014209','2014225','2014241','2014257',
          '2014273','2014289','2014305','2014321','2014337','2014353'],
          
          ['2015001','2015017','2015033','2015049','2015065','2015081',
          '2015097','2015113','2015129','2015145','2015161','2015177',
          '2015193','2015209','2015225','2015241','2015257',
          '2015273','2015289','2015305','2015321','2015337','2015353']]


### NDVIデータ 年ごとに集計

for k in range(len(period)):
    size00 = period[k]
    
    for t in range(len(ff)):
        for g in range(len(size00)):
            when0 = period[k][0]
            City0 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
            + Cityname[t] + "City_" + when0 
            + "_NDVI.csv",header=0,engine="python")
        
            for i in range(len(size00)-1):
                when1 = period[k][i+1]
                City1 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
                + Cityname[t] + "City_" + when1 
                + "_NDVI.csv",header=0,engine="python")
                City0 = pd.concat([City0,City1])
            
            # Dataframeの構造上、INDEXを振りなおさないとエラーが出る
            City0 = City0.reset_index(drop=True)
        
            ## 結合したファイルの中でXY座標に重複があるものを削除
            City_concat_dep = City0.drop_duplicates(['X','Y'])
            City_concat_dep = City_concat_dep.drop('NDVI', axis=1)
            grouped = City_concat_dep.groupby(level=0)  
            City_concat_dep = grouped.last()
            # Dataframeの構造上、INDEXを振りなおさないとエラーが出る
            City_concat_dep = City_concat_dep.reset_index(drop=True)
    
            ####### 以下で各座標値における月ごとのデータを取得
        
            # NDVIの各座標の、各月における最大値を格納するためのリストを初期化しておく
            NDVI_list = []
    
            for h in range(len(City_concat_dep)):
                # 座標値が基準のものと一致したLSTを取得する
                NDVI = City0[(City0["X"] == City_concat_dep["X"][h]) 
                & (City0["Y"] == City_concat_dep["Y"][h])]["NDVI"]
                NDVI = pd.DataFrame(NDVI)
            
                # 年間平均値を取得し、リストに格納する
                NDVI_Ave = NDVI.mean()
                l_1d = NDVI_Ave.values.tolist()
                NDVI_list.append(l_1d[0])
            
            # LSTの平均値リストをX,Y座標に対して結合
            NDVI_list = pd.DataFrame(NDVI_list)
            City_concat_dep = pd.concat([City_concat_dep,NDVI_list],
            axis=1,ignore_index=True) 
            City_concat_dep = City_concat_dep.drop(0, axis=1)       
        
            # CSVファイル化
            # 左から順にX,Y,LSTの値が格納されている
            City_concat_dep.to_csv("./Data/27City_NDVI_annual_AVE/" 
            + str(period[k][0][0:4]) + "/" + Cityname[t] + "_annualAVE.csv")


len(period)


## 年間 LST

path0000 = "./Data/27City_LST"
files = os.listdir(path0000)
ff = files[0:]

# 都市ごとのフォルダを作る
os.makedirs("./Data/27City_LST_annual_AVE/", exist_ok=True)
os.makedirs("./Data/27City_LST_annual_AVE/2012", exist_ok=True)
os.makedirs("./Data/27City_LST_annual_AVE/2013", exist_ok=True)
os.makedirs("./Data/27City_LST_annual_AVE/2014", exist_ok=True)
os.makedirs("./Data/27City_LST_annual_AVE/2015", exist_ok=True)


City00 = ['さいたま市','京都市','仙台市','北九州市','千葉市',
          '名古屋市','堺市','大阪市','姫路市','宇都宮市','岡山市',
          '川口市','川崎市','広島市','新潟市','札幌市','東大阪市',
          '松山市','横浜市','浜松市','熊本市','相模原市','神戸市',
          '福岡市','船橋市','静岡市','鹿児島市']


Cityname = ['Saitama','Kyoto','Sendai','Kitakyushu','Chiba',
            'Nagoya','Sakai','Osaka','Himezi','Utsunomiya','Okayama',
            'Kawaguchi','Kawasaki','Hiroshima','Niigata','Sapporo',
            'HigashiOsaka','Matsuyama','Yokohama','Hamamatsu',
            'Kumamoto','Sagamihara','Kobe','Fukuoka','Funabashi',
            'Shizuoka','Kagoshima']

period = [['2012001','2012009','2012017','2012025','2012033','2012041',
          '2012049','2012057','2012065','2012073','2012081','2012089',
          '2012097','2012105','2012113','2012121','2012129','2012137',
          '2012145','2012153','2012161','2012169','2012177',
          '2012185','2012193','2012201','2012209','2012217','2012225',
          '2012233','2012241','2012249','2012257','2012265',
          '2012273','2012281','2012289','2012297','2012305','2012313',
          '2012321','2012329','2012337','2012345','2012353','2012361'],
          
          ['2013001','2013009','2013017','2013025','2013033','2013041',
          '2013049','2013057','2013065','2013073','2013081','2013089',
          '2013097','2013105','2013113','2013121','2013129','2013137',
          '2013145','2013153','2013161','2013169','2013177',
          '2013185','2013193','2013201','2013209','2013217','2013225',
          '2013233','2013241','2013249','2013257','2013265',
          '2013273','2013281','2013289','2013297','2013305','2013313',
          '2013321','2013329','2013337','2013345','2013353','2013361'],

          ['2014001','2014009','2014017','2014025','2014033','2014041',
          '2014049','2014057','2014065','2014073','2014081','2014089',
          '2014097','2014105','2014113','2014121','2014129','2014137',
          '2014145','2014153','2014161','2014169','2014177',
          '2014185','2014193','2014201','2014209','2014217','2014225',
          '2014233','2014241','2014249','2014257','2014265',
          '2014273','2014281','2014289','2014297','2014305','2014313',
          '2014321','2014329','2014337','2014345','2014353','2014361'],
          
          ['2015001','2015009','2015017','2015025','2015033','2015041',
          '2015049','2015057','2015065','2015073','2015081','2015089',
          '2015097','2015105','2015113','2015121','2015129','2015137',
          '2015145','2015153','2015161','2015169','2015177',
          '2015185','2015193','2015201','2015209','2015217','2015225',
          '2015233','2015241','2015249','2015257','2015265',
          '2015273','2015281','2015289','2015297','2015305','2015313',
          '2015321','2015329','2015337','2015345','2015353','2015361']]


### LSTデータ 月ごとに集計

for t in range(len(ff)):
    
    for k in range(len(period)):
        size00 = period[k]
    
        for g in range(len(period)):
            when0 = period[k][0]
            City0 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
            + Cityname[t] + "City_" + when0 
            + "_LST.csv",header=0,engine="python")
        
            for i in range(len(period)-1):
                when1 = period[k][i+1]
                City1 = pd.read_csv(path0000 + "/" + ff[t] + "/" 
                + Cityname[t] + "City_" + when1 
                + "_LST.csv",header=0,engine="python")
                City0 = pd.concat([City0,City1])
            
            City0 = City0.reset_index(drop=True)
        
            ## 結合したファイルの中でXY座標に重複があるものを削除
            City_concat_dep = City0.drop_duplicates(['X','Y'])
            City_concat_dep = City_concat_dep.drop('LST', axis=1)
            grouped = City_concat_dep.groupby(level=0)  
            City_concat_dep = grouped.last()
            City_concat_dep = City_concat_dep.reset_index(drop=True)
    
            ####### 以下で各座標値における月ごとのデータを取得
        
            # 各座標の、各月のLSTの最大値を格納するリストの初期化
            LST_list = []
    
            for h in range(len(City_concat_dep)):
                # 座標値が基準のものと一致したLSTを取得する
                LST = City0[(City0["X"] == City_concat_dep["X"][h]) 
                & (City0["Y"] == City_concat_dep["Y"][h])]["LST"]
                LST = pd.DataFrame(LST)
            
                # 6〜8月のLSTの平均値を取得し、リストに格納する
                LST_Ave = LST.mean()
                l_1d = LST_Ave.values.tolist()
                LST_list.append(l_1d[0])
            
            # LSTの平均値リストをX,Y座標に対して結合
            LST_list = pd.DataFrame(LST_list)
            City_concat_dep = pd.concat([City_concat_dep,LST_list],
            axis=1,ignore_index=True) 
            City_concat_dep = City_concat_dep.drop(0, axis=1) 
        
            # CSVファイル化
            # 左から順にX,Y,LSTの値が格納されている
            City_concat_dep.to_csv("./Data/27City_LST_annual_AVE/" 
            + str(period[k][0][0:4]) + "/" 
            + Cityname[t] + "_annualAVE.csv")

[GRASSのインストール、標高データを用いた地滑り危険度マップの作成]
[植生指数 (NDVI) の計算、表示]
[標高データ (SRTM)の表示、植生指数 (NDVI) の3次元表示]
[反射率、輝度温度、標高データを用いた土地被覆分類]
[QGIS, Rを用いた公示地価データの空間統計分析:空間的自己回帰モデル]
[QGIS, Rを用いた公示地価データの空間統計分析:静的な時空間モデリング]
[Rを用いた衛星データ(LST, NDVI)の空間統計分析]
[Pythonを用いた空間統計分析のための衛星データ(LST, NDVI)の処理1(市町村別データの生成)]
[Pythonを用いた空間統計分析のための衛星データ(LST, NDVI)の処理2(人口データの重みを加味した市町村別データの生成)]

[講義「リモートセンシングと地理情報システム(GIS)」のトップページ]
[須ア純一のページへ]

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座