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] メールフォーム
添付ファイル