SlideShare a Scribd company logo
1 of 53
Download to read offline
業務効率化のための
GDAL活用
∼早く帰宅するために∼
(株)エコリス 水谷貴行
2014年3月 日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド
14年3月14日金曜日
業務紹介
環境アセスメント
事業者
コンサルタント
調査会社
事業による自然への影響を予測・評価して対策をおこなう
14年3月14日金曜日
業務紹介
調査会社の仕事
調査 同定 とりまとめ
14年3月14日金曜日
業務紹介
調査会社の1日
調査会社の1年
移動 野外調査 移動 整理・同定・とりまとめ
6:00 8:30 16:30 19:00 20:00
4月
春調査 夏調査 秋調査
5月 7月 8月 10月 12月 2月
冬調査 とりまとめ
猛禽調査 渡り調査 猛禽調査
3月
14年3月14日金曜日
業務紹介
調査会社の1日
調査会社の1年
移動 野外調査 移動 整理・同定・とりまとめ
6:00 8:30 16:30 19:00 20:00
4月
春調査 夏調査 秋調査
5月 7月 8月 10月 12月 2月
冬調査 とりまとめ
猛禽調査 渡り調査 猛禽調査
3月
ここを何とかするために
GDAL活用!
14年3月14日金曜日
GISデータ変換のための
ライブラリ&コマンド
GDAL紹介
GDALとは?
多くのGISソフトの内部で
データ変換に利用されています。
ArcGIS
14年3月14日金曜日
GDAL紹介
GDALコマンド
コマンドでGISデータを
いろいろ操作できます。
ラスタ用 ベクタ用
ラスタ情報表示
投影法変換とか
標高関連、傾斜とか
べクタ→ラスタ変換
距離ラスタ作成
ラスタ計算機
ファイル形式変換
ラスタ→ベクタ変換
タイル地図作成
ベクタ情報表示
投影変換、ファイル形式変換
14年3月14日金曜日
GDAL紹介
GDALコマンド
標高データ(dem.tif)から陰影起伏図(shade.tif)を作成する
gdaldem	 hillshade	 dem.tif	 shade.tif
例(これをOSGeo4Wコンソールに打ち込むだけ)
標高データの解像度を50m✕50mに変更する
gdalwarp	 -r	 bilinear	 -tr	 50	 50	 dem.tif	 dem50.tif
緯度経度のシェープファイルをUTMに変換する
ogr2ogr	 -t_srs	 epsg:3100	 data_utm.shp	 data.shp
14年3月14日金曜日
GDAL紹介
GDALのおすすめポイント
上手く活用すれば業務効率化できる!!
GISの処理をテキストに保存しておける
手順の再現、再利用が可能
プログラムと連携、バッチ処理ができる
14年3月14日金曜日
GDAL活用例
set datetmp=%date:/=%
set timetmp=%time:~0,8%
set timetmp=%timetmp::=%
set timetmp=%timetmp: =0%
SET GDAL_FILENAME_IS_UTF8=NO
mkdir GPS
if exist E: xcopy /e E:GarminGPX GPS
if exist F: xcopy /e F:GarminGPX GPS
if exist G: xcopy /e G:GarminGPX GPS
if exist H: xcopy /e H:GarminGPX GPS
for %%i in (GPSウェイポイント*.gpx) do (
binogr2ogr.exe -append -update -skipfailures -fieldTypeToString
DateTime shp %%i waypoints -select name,cmt,ele,time
)
move shpwaypoints.shp GPSwaypoints%datetmp%%timetmp%.shp
move shpwaypoints.dbf GPSwaypoints%datetmp%%timetmp%.dbf
move shpwaypoints.shx GPSwaypoints%datetmp%%timetmp%.shx
move shpwaypoints.prj GPSwaypoints%datetmp%%timetmp%.prj
rd /q /s shp
binogr2ogr.exe -f GPX -skipfailures -fieldTypeToString DateTime GPS
points_tracks%datetmp%%timetmp%.gpx GPSwaypoints%datetmp
%%timetmp%.shp -select name,ele,time
binogr2ogr.exe -f CSV -lco GEOMETRY=AS_YX GPSpoint%datetmp%
%timetmp%.csv GPSwaypoints%datetmp%%timetmp%.shp -select
name,ele,time
SET SHAPE_ENCODING=CP932
for %%i in (GPSCurrent*.gpx) do (
binogr2ogr.exe -append -update -skipfailures -fieldTypeToString
DateTime shp %%i tracks -select name,cmt,desc,src
)
for %%i in (GPSトラック*.gpx) do (
binogr2ogr.exe -append -update -skipfailures -fieldTypeToString
DateTime shp "%%i" tracks -select name,cmt,desc,src
)
GPSデータ保存ツール
GPSログ、ポイントをシェープファイルに変換
しながらパソコンに保存するツール
バッチファイル
14年3月14日金曜日
GDAL活用例
illustrator GISデータ変換ツール
illustratorでシェープファイルやGeoTIFFを読み込み、保存するツール
14年3月14日金曜日
GDAL活用例
標高DEMデータ変換ツール
国土地理院提供の基盤地図情報 標高
データをGeoTIFFに変換&結合する
ツール
ホームページで公開してますので、ダ
ウンロードできます。
14年3月14日金曜日
GDAL活用例
土地利用細分メッシュ変換ツール
国土交通省提供の国土数値情報 土地利
用細分メッシュデータをGeoTIFFに変
換&結合するツール
ホームページで公開してますので、ダ
ウンロードできます。
14年3月14日金曜日
GDAL活用例
地図タイル
環境省の植生データを地図タイル
形式に変換したもの。
ホームページで公開してますので、
閲覧できます。
14年3月14日金曜日
GDAL活用例
環境アセスメントでの利用例
環境アセスメントにおいて、生態系に対する
定量的な影響評価を求められており、その手
法を模索中という状況。
背景
もう少し生態学会むけの例として…
生態系の定量的な評価をGDALを活用して
おこなった例をご紹介します。
14年3月14日金曜日
環境アセスメントでのGDAL利用例
業務内容
 岩手県遠野市における
 カッパ淵拡張事業に伴う
 環境影響評価。
 生態系への影響を検討するため、事業地周辺に
  生息するカッパの生息適地を推測し、事業による
  影響を定量的に評価する。
画像出典:wikipedia
「カッパ淵」
14年3月14日金曜日
①
環境データ準備
②
データ確認
③
モデリング
④
影響評価
環境アセスメントでのGDAL利用例
解析の手順
ラスタ解析、種の生息モデル
14年3月14日金曜日
環境アセスメントでのGDAL利用例
調査位置図(  で作成)
地理院地図を使用
14年3月14日金曜日
環境アセスメントでのGDAL利用例
植生
地理院地図を使用
14年3月14日金曜日
・川や池に生息し、陸上も移動する
・胡瓜を主食とする
・頭上の皿の乾燥に極めて弱い
・RDB 絶滅危惧 Ⅰ 類 に指定
「改訂・絶滅のおそれのある野生妖怪」(2003)
参考文献:Yanagida(1910). Tono monogatari
環境アセスメントでのGDAL利用例
カッパの生態
画像出典:wikipedia
14年3月14日金曜日
①
環境データ準備
②
データ確認
③
モデリング
④
影響評価
環境アセスメントでのGDAL利用例
解析の手順
14年3月14日金曜日
を使用して作成
標高データ(国土地理院)
環境アセスメントでのGDAL利用例
①環境データ準備
植生データ(環境省)
・川や池からの距離
・1km圏畑地の面積
・日射量
カッパの生態を踏まえて
14年3月14日金曜日
環境アセスメントでのGDAL利用例
環境データ準備
川や池からの距離
14年3月14日金曜日
環境アセスメントでのGDAL利用例
#植生データから河川、池、水辺植生を”1”、それ以外を”0”にしてラスタ化
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -init	 0	 -burn	 1	 -where	 
"HANREI_C	 =	 '580600'	 OR	 HANREI_C	 =	 '470501'	 OR	 HANREI_C	 =	 '180100'"	 
-l	 vegetation	 vegetation.shp	 river.tif
#値が”1”の場所からの距離を計算
gdal_proximity	 -distunits	 GEO	 -values	 1	 river.tif	 riverdistance.tif
環境データ準備
川や池からの距離(GDALコマンド)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
環境データ準備
1km圏畑地の面積
14年3月14日金曜日
環境アセスメントでのGDAL利用例
#植生データから畑地を”1”、それ以外を”0”にしてラスタ化
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -init	 0	 -burn	 1	 -where	 
"HANREI_C	 =	 '570300'	 OR	 HANREI_C	 =	 '570101'"	 -l	 vegetation	 
vegetation.shp	 farm.tif
#半径1Km圏の値を近傍計算(pythonからGRASSを呼び出す)
python	 neighbors.py	 farm.tif	 farmarea1km.tif
環境データ準備
1km圏畑地の面積(コマンド)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
##�neighbors.py ##
#	 -*-	 coding:	 utf-8	 -*-
#pythonからGRASSを呼び出すための設定
import	 os,sys
import	 grass.script	 as	 grass
import	 grass.script.setup	 as	 gsetup
gisbase	 =	 os.environ['GISBASE']
gisdb	 =	 "C:/Users/ecoris"
location	 =	 "toono"
mapset="PERMANENT"
epsg="3100"
grass.run_command("g.proj",epsg=epsg,location=location,flags="c")	 	 
gsetup.init(gisbase,	 gisdb,	 location,	 mapset)
input=sys.argv[1]
output=sys.argv[2]
basename,ext	 =	 os.path.splitext(os.path.basename(input))
#GRASSコマンドの実行
grass.run_command("r.in.gdal",	 input	 =	 input	 ,	 output	 =	 basename,flags="oe",	 overwrite=True)
grass.run_command('g.region',	 rast=basename,	 flags='ap')
grass.run_command("r.neighbors",	 input	 =	 basename,	 output	 =	 "hatake"	 ,	 method	 =	 
"sum",size="201",	 flags="c",overwrite=True)
grass.run_command("r.out.gdal",	 input	 =	 "hatake",	 output	 =	 output)
1km圏畑地の面積(PythonからGRASS)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
環境データ準備
日射量(夏至と冬至の積算)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
#標高データから夏至と冬至の日射量を積算(pythonからGRASSを呼び出す)
python	 sun.py	 dem10.tif	 radiation.tif
環境データ準備
日射量(コマンド)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
##�sun.py ##
#	 -*-	 coding:	 utf-8	 -*-
#pythonからGRASSを呼び出すための設定
#...省略
#GRASSコマンドの実行
grass.run_command("r.in.gdal",	 input	 =	 input	 ,	 output	 =	 basename,flags="oe",	 overwrite=True)
grass.run_command('g.region',	 rast=basename,	 flags='ap')
grass.run_command("r.slope.aspect",	 elevation	 =	 basename,	 slope	 =	 "slope"	 ,	 aspect	 =	 
"aspect",	 overwrite=True)
grass.mapcalc("glob_rad_tmp	 =	 0",	 overwrite	 =	 True)
#夏至(172日目)と冬至(355日目)の日射量を合計して出力
for	 day	 in	 [172,355]:
	 	 	 	 grass.run_command("r.sun",	 elevin	 =	 basename,	 aspin	 =	 "aspect"	 ,slopein	 =	 
"slope"	 ,glob_rad="glob_rad_"	 +	 str(day),day=day,flags	 =	 "s"	 ,overwrite=True)
	 	 	 	 grass.mapcalc("glob_rad_year	 =	 glob_rad_tmp	 +	 glob_rad_"	 +	 str(day),	 overwrite=True)
	 	 	 	 grass.run_command("g.rename",	 rast=["glob_rad_year","glob_rad_tmp"],	 overwrite=True)
grass.run_command("r.out.gdal",	 input	 =	 "glob_rad_tmp",	 output	 =	 output)
日射量(PythonからGRASS)
14年3月14日金曜日
①
環境データ準備
②
データ確認
③
モデリング
④
影響評価
環境アセスメントでのGDAL利用例
解析の手順
14年3月14日金曜日
環境データ確認地点
rgdal、raster、dismo、ggplot2など
関係性を把握
環境アセスメントでのGDAL利用例
②データ確認
GIS関係のライブラリを使用
ラスタデータからバックグラウンドポイントをサンプリン
グしてヒストグラムを作成(1万ポイントぐらい)
(モデリングの際に偽不在データとして使用)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
データ確認
「川や池からの距離」との関係
14年3月14日金曜日
環境アセスメントでのGDAL利用例
データ確認
「1km圏畑地の面積」との関係
14年3月14日金曜日
環境アセスメントでのGDAL利用例
データ確認
「日射量」との関係
14年3月14日金曜日
環境アセスメントでのGDAL利用例
#最初だけパッケージをインストールする
#options(repos=structure(c(CRAN="http://cran.ism.ac.jp/")))
#install.packages("rgdal")
#install.packages("raster")
#install.packages("dismo")
#install.packages("ggplot2")
#ライブラリ読み込み
library(rgdal)
library(raster)
library(dismo)
library(ggplot2)
#GDAL文字コード設定
setCPLConfigOption("GDAL_FILENAME_IS_UTF8","NO")
setCPLConfigOption("SHAPE_ENCODING","cp932")
#環境データ読み込み
predictors	 <-	 
stack("riverdistance.tif","farmarea1km.tif","radiation.tif")
#種データ読み込み
kappa	 <-	 readOGR("data","kappa")
#調査範囲読み込み
area	 <-	 readOGR("data","area")
#左からのつづき	 
#地図作成
xval<-c("川や池からの距離","1km圏畑地面積","日射量")
windowsFonts(Meiryo=windowsFont("メイリオ"))
for(i	 in	 1:3){
	 	 	 ##ggplot地図用データフレーム作成
	 	 	 en<-subset(predictors,i)
	 	 	 hs<-	 raster("data/merge_shade.tif")
	 	 	 en<-crop(en,extent(546620,551600,4354300,4358100))
	 	 	 hs<-crop(hs,extent(546620,551600,4354300,4358100))
	 	 	 hdf	 <-	 rasterToPoints(hs)
	 	 	 hdf	 <-	 data.frame(hdf)
	 	 	 colnames(hdf)	 <-	 c("X","Y","Hill")
	 	 	 edf	 <-	 rasterToPoints(en)
	 	 	 edf	 <-	 data.frame(edf)
	 	 	 colnames(edf)	 <-	 c("X","Y","Environment")
	 	 	 adf<-fortify(area)
	 	 	 colnames(adf)[1:2]	 <-	 c("X","Y")
	 	 	 sdf<-data.frame(kappa@coords)
	 	 	 colnames(sdf)[1:2]	 <-	 c("X","Y")
	 	 	 ##地図設定
	 	 	 g<-ggplot(NULL,	 aes(X,	 Y))	 +	 
	 	 	 theme_grey(base_size=13,base_family="Meiryo")+
	 	 	 geom_raster(data	 =	 edf,	 aes(fill	 =	 Environment))	 +	 
	 	 	 geom_raster(data	 =	 hdf,	 aes(alpha	 =	 Hill))	 +
	 	 	 scale_alpha(range	 =	 c(0.5,	 0),	 guide	 =	 "none")	 +
	 	 	 scale_x_continuous(breaks=NULL,limits=c(546620,551600),expand=c(
	 	 	 scale_y_continuous(breaks=NULL,limits=c(4354300,4358100),expand=
	 	 	 geom_path(data=	 adf,aes(group=group),colour	 =	 "#333333",	 size	 =	 
	 	 	 geom_point(data=sdf,aes(x=X,y=Y,colour="black"),size=1.5,alpha=0
	 	 	 scale_colour_manual(guide=guide_legend(title=NULL),name	 =	 '確認地
	 	 	 coord_equal()	 +
	 	 	 theme(legend.position=c(1,1),legend.justification=c(1,1),axis.ti
	 	 	 ##色設定
	 	 	 if(i==1)	 g<-g+scale_fill_gradientn(name=xval[i],colours	 =	 c("blu
	 	 	 if(i==2)	 g<-g+scale_fill_gradientn(name=xval[i],colours	 =	 c("whi
	 	 	 if(i==3)	 g<-g+scale_fill_gradientn(name=xval[i],colours	 =	 c("blu
 	 ##画像保存
	 	 	 ggsave(paste("mydata/",xval[i],"地図.png"),	 g,	 width	 =	 16,	 heigh
}
データ確認
Rコマンド(地図作成部分)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
#前ページからのつづき
#バックグラウンドデータ作成
set.seed(0)
mask	 <-	 raster("mydata/mask.tif")
backg<-randomPoints(mask,n=10000)
#データセット作成
datapres	 <-	 extract(predictors,kappa)
databackg	 <-	 extract(predictors,backg)
pa<-c(rep(1,nrow(datapres)),rep(0,nrow(databackg)))
envdata<-data.frame(cbind(pa,rbind(datapres,databackg)))
colnames(envdata)<-c("pa","川や池からの距離","1km圏畑地面積","日射量")
xval<-c("川や池からの距離","1km圏畑地面積","日射量")
##ヒストグラム作成
for(i	 in	 1:3){
	 	 	 #種データ情報と表示位置
	 	 mindata<-min(envdata[envdata$pa==1,xval[i]])
	 	 maxdata<-max(envdata[envdata$pa==1,xval[i]])
	 	 mediandata<-median(envdata[envdata$pa==1,xval[i]])
	 	 str<-paste(xval[i],"(確認地点)n","最小値:",sprintf("%2.2f",mindata),"n")
	 	 str<-paste(str,"最大値:",sprintf("%2.2f",maxdata),"n")
	 	 str<-paste(str,"中央値:",sprintf("%2.2f",mediandata),"n")
	 	 xpos<-min(na.omit(envdata[envdata$pa==0,xval[i]]))
	 	 p<-ggplot(envdata,aes_string(x=xval[i],fill="pafactor"))+	 
	 	 theme_grey(base_size=12,base_family="Meiryo")	 +	 ylab("count(log_10)")	 +	 
	 	 theme(legend.position=c(1,1),legend.justification=c(1,1),axis.title.x=element_blank())	 +	 
	 	 geom_histogram(position="identity",alpha=0.4)	 +	 guides(fill=guide_legend(title=NULL))	 +
 scale_fill_discrete(labels=c("バックグラウンドデータ","確認地点データ"))	 +
	 	 scale_y_log10()	 +	 coord_cartesian(ylim	 =	 c(10^0,	 10^4)) +
 annotate("text",x=xpos,y=8000,label=str,size=4,family="Meiryo",hjust=0,vjust=1)
	 	 ggsave(paste("mydata/",xval[i],"分布.png"),	 p,	 width	 =	 16,	 height	 =	 16,unit="cm",dpi=300)
}
データ確認
Rコマンド(ヒストグラム作成部分)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
データ確認
環境データ間の相関
14年3月14日金曜日
①
環境データ準備
②
データ確認
③
モデリング
④
影響評価
環境アセスメントでのGDAL利用例
解析の手順
14年3月14日金曜日
統計モデル(ロジスティック回帰など)
機械学習(Maxentなど)
経験則(HSIモデルなど)
環境アセスメントでのGDAL利用例
③モデリング
専門家の皆さんにお任せします♡ いろいろ教えてください m(_ _)m
14年3月14日金曜日
環境アセスメントでのGDAL利用例
モデリング
とりあえずロジスティック回帰の例
#モデル作成
colnames(envdata)<-c("pa","riverdistance","farmarea1km","radiation")	 
fit<-	 glm(pa~	 .	 +	 I(riverdistance^2)	 +	 I(farmarea1km^2)	 +	 I(radiation^2),family=binomial(link="logit"),data=envdata)	 
fit<-step(fit)
summary(fit)
#モデルをデータに適応し、GeoTIFFに書き出し
pg<-predict(predictors,fit,type='response',ext=mask)
writeRaster(pg,	 filename="mydata/カッパ生息確率.tif",	 format="GTiff",	 overwrite=TRUE)
#モデル確認
e<-evaluate(p=envdata[envdata$pa==1,],a=envdata[envdata$pa==0,],fit,type="response")
print(e)
ppi=300
##モデルAUC
png(file=paste("mydata/モデルAUC.png"),	 width=16/2.54*ppi,	 height=16/2.54*ppi,res=ppi)
plot(e,"ROC")
dev.off()
##予測値の比較(確認地点とバックグラウンド)
###density
png(file=paste("mydata/予測値density.png"),	 width=16/2.54*ppi,	 height=16/2.54*ppi,res=ppi)
density(e)
dev.off()
###boxplot
png(file=paste("mydata/予測値boxplot.png"),	 width=16/2.54*ppi,	 height=16/2.54*ppi,res=ppi)
boxplot(e,col=c("blue","red"))
dev.off()
##応答曲線
for(i	 in	 1:3){
	 xval<-c("riverdistance","farmarea1km","radiation")
	 xlabel<-c("川や池からの距離","1km圏畑地面積","日射量")
	 rn<-range(envdata[,xval[i]])14年3月14日金曜日
環境アセスメントでのGDAL利用例
モデリング
モデルの評価
formula	 =	 pa	 ~	 riverdistance	 +	 farmarea1km	 +	 I(farmarea1km^2)	 +	 I(radiation^2)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
モデリング
応答曲線
環境データと生息適地確率の関係
(変化させない環境データは確認地点での平均値とした場合)
14年3月14日金曜日
環境アセスメントでのGDAL利用例
モデリング 生息適地確率(    で作成)
地理院地図を使用
14年3月14日金曜日
環境アセスメントでのGDAL利用例
モデリング 生息適地(Cohen s Kappaを閾値とした場合)
地理院地図を使用
14年3月14日金曜日
①
環境データ準備
②
データ確認
③
モデリング
④
影響評価
環境アセスメントでのGDAL利用例
解析の手順
14年3月14日金曜日
改変前
生息適地はどのように変化するか?
環境アセスメントでのGDAL利用例
④影響評価
改変後
14年3月14日金曜日
環境アセスメントでのGDAL利用例
影響評価
コマンドの再利用で
「川や池からの距離」  
「林縁からの距離」 を再計算
植生データを改変
モデルを適用
改変前後の生息適地を比較
解析フロー
14年3月14日金曜日
環境アセスメントでのGDAL利用例
影響評価 生息適地確率(改変後)
地理院地図を使用
14年3月14日金曜日
環境アセスメントでのGDAL利用例
影響評価 カッパ生息適地の差分(改変前後)
地理院地図を使用
14年3月14日金曜日
環境アセスメントでのGDAL利用例
影響評価
カッパ生息適地の変化
0
15000
30000
45000
60000
改変前 改変後
59181
17158
生息適地確率の合計
調査範囲内の生息適地確率の合計値を比較
事業により
生息適地が増加
14年3月14日金曜日
:#GDALの設定
set	 GDAL_FILENAME_IS_UTF8=NO
set	 SHAPE_ENCODING=CP932
:#Rの設定
set	 PATH=C:Program	 FilesRR-3.0.2bin;%PATH%
set	 R_HOME=C:Program	 FilesRR-3.0.2
:#GRASSの設定
set	 OSGEO4W_ROOT=C:OSGeo4W
set	 GISBASE=%OSGEO4W_ROOT%appsgrassgrass-6.4.3
set	 GISRC=%APPDATA%GRASS6grassrc6
set	 LD_LIBRARY_PATH=%GISBASE%lib;%LD_LIBRARY_PATH%
set	 PATH=%GISBASE%bin;%GISBASE%etc;%GISBASE%etcpython;%GISBASE%lib;%GISBASE%extralib;%OSGEO4W_ROOT%appsmsysbin;%PATH%
set	 GRASS_SH=%OSGEO4W_ROOT%appsmsysbinsh.exe
set	 PYTHONPATH=%GISBASE%etcpython
set	 GRASS_PAGER=less
:####	 データ準備	 ######
:##	 改変前データの準備
:#標高データを10m解像度、UTM54に変換
gdalwarp	 -t_srs	 epsg:3100	 -tr	 10	 10	 -r	 bilinear	 datamerge.tif	 mydatadem10.tif
gdaldem	 mydatadem10.tif	 mydatashade.tif
:#植生データをUTM54に変換
ogr2ogr	 -s_srs	 epsg:4612	 -t_srs	 epsg:3100	 mydatavegetation.shp	 datap594104.shp
:#河川からの距離
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -init	 0	 -burn	 1	 -where	 "HANREI_C	 =	 '580600'	 OR	 HANREI_C	 =	 '470501'	 OR	 HANREI_C	 =	 '180100'"	 -l	 vegetation	 mydatavegetation.shp	 mydatariver.tif
gdal_proximity	 -distunits	 GEO	 -values	 1	 	 mydatariver.tif	 	 mydata_riverdistance.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydata_riverdistance.tif	 mydatariverdistance.tif
:#1km圏畑地面積
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -init	 0	 -burn	 1	 -where	 "HANREI_C	 =	 '570300'	 OR	 HANREI_C	 =	 '570101'"	 -l	 vegetation	 mydatavegetation.shp	 mydatafarm.tif
python	 neighbors.py	 mydatafarm.tif	 mydata_farmarea1km.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydata_farmarea1km.tif	 mydatafarmarea1km.tif
:#日射量(夏至+冬至)
python	 sun.py	 mydatadem10.tif	 mydata_radiation.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydata_radiation.tif	 mydataradiation.tif
:#マスク
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -burn	 1	 dataarea.shp	 mydataarea.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydataarea.tif	 mydatamask.tif
:##	 改変後のデータ準備
:#日射量は変更なし
cp	 mydataradiation.tif	 mydatadevelopradiation.tif
:#1km圏畑地面積(改変部分の畑地を0にして計算)
gdal_rasterize	 -a_nodata	 -9999	 -i	 -init	 0	 -tr	 10	 10	 -burn	 -9999	 dataplan.shp	 mydatadevelopinv_plan.tif
gdalwarp	 -overwrite	 mydatafarm.tif	 mydatadevelopinv_plan.tif	 mydatadevelopfarm.tif
python	 neighbors.py	 mydatadevelopfarm.tif	 mydatadevelop_farmarea1km.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydatadevelop_farmarea1km.tif	 mydatadevelopfarmarea1km.tif
:#河川からの距離(改変部分を1にして計算)
gdal_rasterize	 -a_nodata	 -9999	 -tr	 10	 10	 -burn	 1	 dataplan.shp	 mydatadevelopplan.tif
gdalwarp	 -overwrite	 mydatariver.tif	 mydatadevelopplan.tif	 mydatadevelop_river.tif
gdal_proximity	 -distunits	 GEO	 -values	 1	 	 mydatadevelop_river.tif	 	 mydatadevelop_riverdistance.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 datamaparea.shp	 mydatadevelop_riverdistance.tif	 mydatadevelopriverdistance.tif
:#マスク
cp	 mydatamask.tif	 mydatadevelopmask.tif
:####	 データ確認、モデリング	 ######
:#Rコマンドの実行(地図作成、ヒストグラム作成、モデル作成、モデル適用、生息確率書き出し)
R	 --slave	 --args	 mydata	 -f	 kappa.R
:###	 影響評価	 #######
:#改変差分計算
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 dataarea.shp	 mydataカッパ生息確率.tif	 mydata_カッパ生息確率.tif
gdalwarp	 -overwrite	 -r	 near	 -tr	 10	 10	 -dstnodata	 -9999	 -t_srs	 epsg:3100	 -crop_to_cutline	 -cutline	 dataarea.shp	 mydatadevelopカッパ生息確率.tif	 mydatadevelop_カッパ生息確率.tif
python	 diff.py	 mydata_カッパ生息確率.tif	 mydatadevelop_カッパ生息確率.tif
:#改変差分図作成
gdal_calc	 --overwrite	 --NoDataValue=-9999	 -A	 mydata_カッパ生息確率.tif	 -B	 mydatadevelop_カッパ生息確率.tif	 --outfile=mydatadevelopカッパ生息確率.tif	 --calc=B-A
環境アセスメントでのGDAL利用例
解析の全手順を書いたコマンド
※Rの部分、pythonの部分は別ファイルに記述し、ここから呼び出しています。
14年3月14日金曜日
エピローグ
 GDALを活用すれば作業を効率化できますが…
 種の生息モデルは、まだまだファンタジー。
 生態学 ✕ FOSS4G で解析のための定石を!
※このスライドに出てくる事業計画はフィクションです。
14年3月14日金曜日

More Related Content

What's hot

Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Iugo Net
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table についてHaruka Ozaki
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介Yoichi Kayama
 
Archaeo-GIS Workshop Round 7: GPS hands-on
Archaeo-GIS Workshop Round 7: GPS hands-onArchaeo-GIS Workshop Round 7: GPS hands-on
Archaeo-GIS Workshop Round 7: GPS hands-onYasuhisa Kondo
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus WorkshopHitoshi Sato
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化RCCSRENKEI
 
Gsi 10m dem_resample_and_convert_to_gmt
Gsi 10m dem_resample_and_convert_to_gmtGsi 10m dem_resample_and_convert_to_gmt
Gsi 10m dem_resample_and_convert_to_gmtTomokazuKurihara
 
アプリケーションの性能最適化の実例1
アプリケーションの性能最適化の実例1 アプリケーションの性能最適化の実例1
アプリケーションの性能最適化の実例1 RCCSRENKEI
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigDataKohei KaiGai
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」Nagi Teramo
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境智啓 出川
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こうYoshitomo Akimoto
 
151012 foss4 g_tokyo_grass7_presentation
151012 foss4 g_tokyo_grass7_presentation151012 foss4 g_tokyo_grass7_presentation
151012 foss4 g_tokyo_grass7_presentationTakayuki Nuimura
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用Shintaro Fukushima
 

What's hot (20)

GPS で色々遊ぶ
GPS で色々遊ぶGPS で色々遊ぶ
GPS で色々遊ぶ
 
Koedo71-matoken
Koedo71-matokenKoedo71-matoken
Koedo71-matoken
 
Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
 
Archaeo-GIS Workshop Round 7: GPS hands-on
Archaeo-GIS Workshop Round 7: GPS hands-onArchaeo-GIS Workshop Round 7: GPS hands-on
Archaeo-GIS Workshop Round 7: GPS hands-on
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus Workshop
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
 
Gsi 10m dem_resample_and_convert_to_gmt
Gsi 10m dem_resample_and_convert_to_gmtGsi 10m dem_resample_and_convert_to_gmt
Gsi 10m dem_resample_and_convert_to_gmt
 
卒論
卒論卒論
卒論
 
アプリケーションの性能最適化の実例1
アプリケーションの性能最適化の実例1 アプリケーションの性能最適化の実例1
アプリケーションの性能最適化の実例1
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
151012 foss4 g_tokyo_grass7_presentation
151012 foss4 g_tokyo_grass7_presentation151012 foss4 g_tokyo_grass7_presentation
151012 foss4 g_tokyo_grass7_presentation
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
 

Viewers also liked

自然環境保全のためのデータの地図化・分析手法のご紹介
自然環境保全のためのデータの地図化・分析手法のご紹介自然環境保全のためのデータの地図化・分析手法のご紹介
自然環境保全のためのデータの地図化・分析手法のご紹介Mizutani Takayuki
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろいKohei Otsuka
 
自然環境調査におけるUAVの利用例
自然環境調査におけるUAVの利用例自然環境調査におけるUAVの利用例
自然環境調査におけるUAVの利用例Mizutani Takayuki
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)IWASAKI NOBUSUKE
 
時空を越えた地図共有サービスの提案
時空を越えた地図共有サービスの提案時空を越えた地図共有サービスの提案
時空を越えた地図共有サービスの提案Kohei Otsuka
 
Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Tomoaki Arai
 
Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Satoshi Ito
 
150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentationTakayuki Nuimura
 
Qgisにおけるラスタデータ解析
Qgisにおけるラスタデータ解析Qgisにおけるラスタデータ解析
Qgisにおけるラスタデータ解析Kazuki Matsumoto
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようNozomiIriomote
 
QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版FOSS4G_MEXT
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析Mayumit
 
20161031 foss4gkansai handson QGISによる 地域分析入門
20161031 foss4gkansai handson QGISによる地域分析入門20161031 foss4gkansai handson QGISによる地域分析入門
20161031 foss4gkansai handson QGISによる 地域分析入門和人 青木
 
カッパ(妖怪)の生息適地マップ作成入門
カッパ(妖怪)の生息適地マップ作成入門カッパ(妖怪)の生息適地マップ作成入門
カッパ(妖怪)の生息適地マップ作成入門Mizutani Takayuki
 

Viewers also liked (15)

自然環境保全のためのデータの地図化・分析手法のご紹介
自然環境保全のためのデータの地図化・分析手法のご紹介自然環境保全のためのデータの地図化・分析手法のご紹介
自然環境保全のためのデータの地図化・分析手法のご紹介
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろい
 
自然環境調査におけるUAVの利用例
自然環境調査におけるUAVの利用例自然環境調査におけるUAVの利用例
自然環境調査におけるUAVの利用例
 
QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)QGISセミナー中級編(V2.4)
QGISセミナー中級編(V2.4)
 
時空を越えた地図共有サービスの提案
時空を越えた地図共有サービスの提案時空を越えた地図共有サービスの提案
時空を越えた地図共有サービスの提案
 
Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析
 
Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析Qgisを用いたラスタデータ解析
Qgisを用いたラスタデータ解析
 
150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation
 
Qgisにおけるラスタデータ解析
Qgisにおけるラスタデータ解析Qgisにおけるラスタデータ解析
Qgisにおけるラスタデータ解析
 
QgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみようQgisとRで野生動物の追跡結果を解析してみよう
QgisとRで野生動物の追跡結果を解析してみよう
 
QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版QGISセミナー・中級編 Ver. 2.4版
QGISセミナー・中級編 Ver. 2.4版
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析
 
20161031 foss4gkansai handson QGISによる 地域分析入門
20161031 foss4gkansai handson QGISによる地域分析入門20161031 foss4gkansai handson QGISによる地域分析入門
20161031 foss4gkansai handson QGISによる 地域分析入門
 
About OSGeo.JP
About OSGeo.JPAbout OSGeo.JP
About OSGeo.JP
 
カッパ(妖怪)の生息適地マップ作成入門
カッパ(妖怪)の生息適地マップ作成入門カッパ(妖怪)の生息適地マップ作成入門
カッパ(妖怪)の生息適地マップ作成入門
 

2014年日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド