More Related Content
PDF
PDF
PDF
Rにおける大規模データ解析(第10回TokyoWebMining) PDF
Rish mwr analysis_tutorial_shinbori_20120810 PDF
Iugonet 20120810 abe_analysis PDF
PDF
PDF
非静力学海洋モデルkinacoのGPUによる高速化 What's hot
ODP
ODP
PPTX
Rish mwr analysis_tutorial_shinbori_20120810 PPTX
巨大な表を高速に扱うData.table について PDF
PDF
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介 PPTX
Archaeo-GIS Workshop Round 7: GPS hands-on PDF
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化 PPTX
Gsi 10m dem_resample_and_convert_to_gmt PPTX
PDF
PDF
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData PPTX
Feature Selection with R / in JP PDF
PDF
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」 PDF
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境 PDF
PDF
151012 foss4 g_tokyo_grass7_presentation PDF
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用 Viewers also liked
PDF
自然環境保全のためのデータの地図化・分析手法のご紹介 PDF
PPTX
PDF
PPTX
PPTX
PPTX
PDF
150828 rihn gis_workshop_handson_presentation PDF
PDF
QgisとRで野生動物の追跡結果を解析してみよう PDF
PDF
PDF
20161031 foss4gkansai handson QGISによる地域分析入門 PDF
PDF
Similar to 2014年日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド
PPTX
PDF
PDF
PDF
120620 chred r_presentation1 PDF
FOSS4G 2012 Tokyo GRASSハンズオン(GRASSを用いた衛星・GISデータ処理の基礎) PDF
120414 foss4g nagoya_presentation2 PDF
PDF
PDF
FOSS4G 2011 Tokyo GRASSハンズオン PDF
FOSS4GとOSMを使って 「逃げ地図」のようなものをつくってみる! PDF
151009 foss4 g_tokyo_grass7_handson_presentation PDF
PDF
PPT
Foss4 g 2011_hands-on_aoki PDF
PDF
PDF
2012 nov foss4g_presentation ODP
PDF
121107 foss4 g_osaka_r_handson_presentation PPTX
地理空間情報のススメ!オープンデータ×データドリブンなプロシージャル処理による都市の樹木自動配置 2014年日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド
- 1.
- 2.
- 3.
- 4.
- 5.
業務紹介
調査会社の1日
調査会社の1年
移動 野外調査 移動整理・同定・とりまとめ
6:00 8:30 16:30 19:00 20:00
4月
春調査 夏調査 秋調査
5月 7月 8月 10月 12月 2月
冬調査 とりまとめ
猛禽調査 渡り調査 猛禽調査
3月
ここを何とかするために
GDAL活用!
14年3月14日金曜日
- 6.
- 7.
- 8.
- 9.
- 10.
GDAL活用例
set datetmp=%date:/=%
set timetmp=%time:~0,8%
settimetmp=%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日金曜日
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
環境アセスメントでの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日金曜日
- 28.
- 29.
- 30.
環境アセスメントでの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日金曜日
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
環境アセスメントでの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日金曜日
- 37.
環境アセスメントでの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日金曜日
- 38.
- 39.
- 40.
- 41.
環境アセスメントでの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日金曜日
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
:#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日金曜日
- 53.