Nino add up @Wiki
「細密数値情報(10mメッシュ土地利用)」データを読んで表示させる
最終更新:
nino-add-up
-
view
「細密数値情報(10mメッシュ土地利用)」データを読んで表示させる
注意点
- そのまま全てのデータを読むとたいていの環境ではメモリ不足に陥るため,解像度を荒くして表示させることが前提(matlabのメモリ不足エラーは解消できないことがほとんどなので無駄な抵抗はしない.)
- プログラムが雑なのは仕様です(勢いだけで作成)
- 使用は自己責任で.
プログラムの順序
- データを読む
- 解像度を荒くする
- データのない部分をNaNとする
使い方
- データをPCにいれておく
- 最初の【変更必要】部分さえ設定すれば動きます
- placeの部分をLUDATAフォルダにフルパスで記入
- わかる人は相対パスでも可
- meshsizeは解像度の設定です
- デフォルトは1km x 1km
中身(mファイルは下にあります)
% 「細密数値情報(10mメッシュ土地利用)」データを読む
clear
%%【変更必要】%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
place = 'C:/Program Files/landuse2000/tiriin_landuse/LUDATA/';
% データのあるフォルダの名前(CからLUDATAまで全て書く)
meshsize = [100 100]; %NS,WE[10m] 300と400の公約数推奨
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 以下,変更不要
files = ls([place,'/NK*']);
[file_num,n] = size(files);
ns = 300;
we = 400;
x = fix(300/meshsize(1));
y = fix(400/meshsize(2));
tic
output = zeros(x*34,y*25);
for i = 1:file_num
fid = fopen([place,'/',files(i,:)]);
for j = 1:300
head = fscanf(fid,'%4d%3d',[2 1]);
numdata(j,:) = fscanf(fid,'%2d',[400 1]);
end
fclose(fid);
for j = 1:x
for k = 1:y
for l = 1:18
a = find(numdata(meshsize(1)*(j-1)+1:meshsize(1)*j,...
meshsize(2)*(k-1)+1:meshsize(2)*k) == l);
a(1) = 0;
b(l) = a(end);
clear a
end
clas(j,k) = find(b == max(b));
end
end
pla = [str2double(files(i,5:6))+1,str2double(files(i,7:8))-4];
output(x*(pla(1)-1)+1:x*pla(1),y*(pla(2)-1)+1:y*pla(2)) = clas;
i/398
end
toc
save('landuse','output')
a = 1;
for i = 1:x*34
for j = 1:y*25
a = find(output(i,j) == 0);
if a == 1
output(i,j) = NaN;
end
end
end
pcolor(output)
axis ij equal tight
title([num2str(meshsize(1)/100),'km x ',num2str(meshsize(2)/100),'km'])
[PR] メールフォーム
添付ファイル