Takuya Miyashita
This site
Web
Start:
* Web ページ中の表の読み取り [#ld6986d7]
MATLAB で html を拾ってくる関数は [[webread>https://jp.ma...
そこから表を拾ってきてうまい具合にパースしてくれるものが...
** urlreadtable [#q95a2385]
MATLAB の中の人が開発した [[urlreadtable>https://jp.mathw...
#codeprettify(lang-matlab){{
T = urlreadtable(url)
}}
とするだけで,うまいことやってくれる.~
表がページに複数含まれる場合は,セル配列で個々のセルに ta...
** urlreadtable の使用例 [#zfcc38ec]
気象庁の潮位推算地点の一覧表をなんとか MATLAB で使える ta...
#codeprettify(lang-matlab){{
clear
close all
%% reference url
url = 'https://www.data.jma.go.jp/kaiyou/db/tide/suisan/s...
%% read
T = urlreadtable(url);
T = T{1};
T(:,9:end) = [];
T(1:2,:) = [];
%% rename vars
ncol = size(T,2);
for j = 1:ncol
T = renamevars(T,T.Properties.VariableNames{j},strrep(...
end
%% TP補正できない地点を除く
ind = table2array(rowfun(@(x) isempty(x{1}),T(:,"潮位表基...
T(ind,:) = [];
ind = table2array(rowfun(@(x) strcmp(x,'-'),T(:,"潮位表基...
T(ind,:) = [];
clear ind
%% セル{文字列} から数値に変換
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"潮位表基準面の標...
T{:,"潮位表基準面の標高(cm)"} = table2cell(Ttmp);
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"MSLの標高(cm)"...
T{:,"MSLの標高(cm)"} = table2cell(Ttmp);
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"MSL潮位表基準面...
T{:,"MSL潮位表基準面(cm)"} = table2cell(Ttmp);
%% 緯度経度を10進法に
nrow = size(T,1);
lon_all = zeros(nrow,1);
lat_all = zeros(nrow,1);
for i = 1:nrow
londm = str2double(strrep(split(string(table2cell(T(i...
lon_all(i) = londm(1) + londm(2)/60;
latdm = str2double(strrep(split(string(table2cell(T(i...
lat_all(i) = latdm(1) + latdm(2)/60;
end
T{:,"経度(東経)"} = table2cell(array2table(lon_all));
T{:,"緯度(北緯)"} = table2cell(array2table(lat_all));
}}
上記を実行すると下の図のようなテーブルが作成される.ちな...
#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/i...
End:
* Web ページ中の表の読み取り [#ld6986d7]
MATLAB で html を拾ってくる関数は [[webread>https://jp.ma...
そこから表を拾ってきてうまい具合にパースしてくれるものが...
** urlreadtable [#q95a2385]
MATLAB の中の人が開発した [[urlreadtable>https://jp.mathw...
#codeprettify(lang-matlab){{
T = urlreadtable(url)
}}
とするだけで,うまいことやってくれる.~
表がページに複数含まれる場合は,セル配列で個々のセルに ta...
** urlreadtable の使用例 [#zfcc38ec]
気象庁の潮位推算地点の一覧表をなんとか MATLAB で使える ta...
#codeprettify(lang-matlab){{
clear
close all
%% reference url
url = 'https://www.data.jma.go.jp/kaiyou/db/tide/suisan/s...
%% read
T = urlreadtable(url);
T = T{1};
T(:,9:end) = [];
T(1:2,:) = [];
%% rename vars
ncol = size(T,2);
for j = 1:ncol
T = renamevars(T,T.Properties.VariableNames{j},strrep(...
end
%% TP補正できない地点を除く
ind = table2array(rowfun(@(x) isempty(x{1}),T(:,"潮位表基...
T(ind,:) = [];
ind = table2array(rowfun(@(x) strcmp(x,'-'),T(:,"潮位表基...
T(ind,:) = [];
clear ind
%% セル{文字列} から数値に変換
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"潮位表基準面の標...
T{:,"潮位表基準面の標高(cm)"} = table2cell(Ttmp);
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"MSLの標高(cm)"...
T{:,"MSLの標高(cm)"} = table2cell(Ttmp);
Ttmp = rowfun(@(x) str2double(x{1}),T(:,"MSL潮位表基準面...
T{:,"MSL潮位表基準面(cm)"} = table2cell(Ttmp);
%% 緯度経度を10進法に
nrow = size(T,1);
lon_all = zeros(nrow,1);
lat_all = zeros(nrow,1);
for i = 1:nrow
londm = str2double(strrep(split(string(table2cell(T(i...
lon_all(i) = londm(1) + londm(2)/60;
latdm = str2double(strrep(split(string(table2cell(T(i...
lat_all(i) = latdm(1) + latdm(2)/60;
end
T{:,"経度(東経)"} = table2cell(array2table(lon_all));
T{:,"緯度(北緯)"} = table2cell(array2table(lat_all));
}}
上記を実行すると下の図のようなテーブルが作成される.ちな...
#ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/i...
Page:
Edit with a page name which already exists