首页 > 解决方案 > loadTable() 函数是 p5.js 仅对给出的 5 个 .csv 文件中的 2 个按预期工作,同时每次使用相同的过程

问题描述

我正在使用 node.js 和 p5.js 在 Google Chrome 浏览器中进行开发。我想读取 5 个 .csv 文件并将值放入数组中,这对 5 个文件中的 2 个已成功运行。为此,我使用了 loadtable 函数将数据放入 p5 表对象中,然后循环以检索值并将它们放入数组中。为了循环,我的 for 循环使用 getrowcount 函数作为边界,它为两个工作实例返回正确的行数,但是对于不工作的 3 个,返回的行数为零,即使当我查看在我已将 csv 数据加载到的表对象中,它们清楚地填充了记录。我可以看到展开表格对象时的“列”和“行”值读为 0,但是当向下遍历另一层时,“

控制台日志截图https://imgur.com/HmcZmw9

代码截图https://imgur.com/Ouv6OLX

代码截图 https://imgur.com/cxEkWVc

代码截图 https://imgur.com/3sPGXgb

代码截图 https://imgur.com/LlRdEhw

控制台日志中的第一行显示数据表加载正常的成功事件,第二行显示正确填充的数组,第三行打印正确的行数。

第二个数据表显示了错误的时间,其中表中填充了值但行和列计数不正确,但是当展开对象一次时,您可以看到正确的行和列计数。下面显示了空数组和 0 的行数。

这是我的第一篇文章,如果我以错误的方式提问,敬请见谅。很高兴提供更多信息。谢谢。

以下是使用的代码。大多数操作发生在函数 setup() 中:

// This file retrieves and formats the data from smartgrid readings


// Create p5 Table objects
let wind_energy_table = new p5.Table();
let solar_energy_table = new p5.Table();
let weather_10_table = new p5.Table();
let weather_60_table = new p5.Table();
let weather_forecast_table = new p5.Table();

// Create arrays to handle and access values easier
const wind_energy = [];
const solar_energy = [];
const weather_10 = [];
const weather_60 = [];
const weather_forecast = [];

// Populate tables with values, preload runs before setup

函数预加载(){

wind_energy_table = loadTable("/data/wind_energy.csv", "csv");
solar_energy_table = loadTable("/data/solar_energy.csv", "csv");
weather_10_table = loadTable("/data/weather_data_10.csv", "csv");
weather_60_table = loadTable("/data/weather_data_60.csv", "csv");
weather_forecast_table = loadTable("/data/weather_forecast.csv", "csv");

}

功能设置(){

let we_date, we_time, we_p1, we_p2, we_p3, we_pt;
// pi indicates power of ith wind farm (1,2,3), pt = power exchange (Megawatts)

let se_date, se_time, se_ps;
// ps = power in watts of subgrid

let w10_date, w10_time, w10_airtemp, w10_wd, w10_ws, w10_sd, w10_ap, w10_precip;
// wd = wind direction (in decadegrees Celsius), ws = wind speed (in 0.1 m/s), sd = sunshine duration in last 10 minutes, 
// air pressure (in 0.1 hPa), precip = amount of precipitation in last 10 minutes
// decadegrees = 10 degrees
// hPa = hectopascal i.e. 100 pascal

let w60_date, w60_time, w60_cc, w60_wd, w60_ws, w60_at, w60_ap, w60_sd, w60_precip;
// cc = cloud coverage (in 1/8), wd = wind direction (in decadegrees Celsius), ws = wind speed (in 0.1 m/s), 
// at = air temperature (in 0.1 degrees), ap = air pressure (in 0.1 hPa), sd = sunshine duration in last hour, 
// precip = precipitation in last hour
// cloud coverage 8/8 = whole sky covered

let wf_date, wf_time, wf_validDate, wf_temp, wf_dp, wf_ws, wf_gs, wf_ap, wf_precipProb, wf_cc, wf_si, wf_wd, wf_ah, wf_ad
// validDate = date the forecast is valid for, dp = dew point (in Celsius), ws = wind speed (in m/s), gs = gust speed (in m/s), 
// ap = air pressure (in hPa), precipProb = probability of precipitation (in %), cc = cloud coverage, si = solar irradiance (in kJ/m^2), 
// wd = wind direction (in degrees), ah = air humidity (in %), ad = air density (in J/(kg*K))
// temp (in degrees Celsius), J = Joule, K = Kelvin


// Populate arrays with arrays for each values by looping through the tables in csv files

for (let i = 0; i < wind_energy_table.getRowCount(); i++) {
    we_date = wind_energy_table.getRow(i).arr[0];
    we_time = wind_energy_table.getRow(i).arr[1];
    we_p1 = wind_energy_table.getRow(i).arr[2];
    we_p2 = wind_energy_table.getRow(i).arr[3];
    we_p3 = wind_energy_table.getRow(i).arr[4];
    we_pt = wind_energy_table.getRow(i).arr[5];
    wind_energy[i] = [we_date, we_time, we_p1, we_p2, we_p3, we_pt];
}
console.log(wind_energy_table);
console.log(wind_energy);
console.log(wind_energy_table.getRowCount());

for (let j = 0; j < solar_energy_table.getRowCount(); j++) {
    se_date = solar_energy_table.getRow(j).arr[0];
    se_time = solar_energy_table.getRow(j).arr[1];
    se_ps = solar_energy_table.getRow(j).arr[2];
    solar_energy[j] = [se_date, se_time, se_ps];
}
console.log(solar_energy_table);
console.log(solar_energy);
console.log(solar_energy_table.getRowCount());
console.log(solar_energy_table.getRow(0));

for (let k = 0; k < weather_10_table.getRowCount(); k++) {
    w10_date = weather_10_table.getRow(k).arr[0];
    w10_time = weather_10_table.getRow(k).arr[1];
    w10_airtemp = weather_10_table.getRow(k).arr[2];
    w10_wd = weather_10_table.getRow(k).arr[3];
    w10_ws = weather_10_table.getRow(k).arr[4];
    w10_sd = weather_10_table.getRow(k).arr[5];
    w10_ap = weather_10_table.getRow(k).arr[6];
    w10_precip = weather_10_table.getRow(k).arr[7];
    weather_10[k] = [w10_date, w10_time, w10_airtemp, w10_wd, w10_ws, w10_sd, w10_ap, w10_precip];
}
console.log(weather_10_table);
console.log(weather_10);

for (let l = 0; l < weather_60_table.getRowCount(); l++) {
    w60_date = weather_60_table.getRow(l).arr[0];
    w60_time = weather_60_table.getRow(l).arr[1];
    w60_cc = weather_60_table.getRow(l).arr[2];
    w60_wd = weather_60_table.getRow(l).arr[3];
    w60_ws = weather_60_table.getRow(l).arr[4];
    w60_at = weather_60_table.getRow(l).arr[5];
    w60_ap = weather_60_table.getRow(l).arr[6];
    w60_sd = weather_60_table.getRow(l).arr[7];
    w60_precip = weather_60_table.getRow(l).arr[8];
    weather_60[l] = [w60_date, w60_time, w60_cc, w60_wd, w60_ws, w60_at,
        w60_ap, w60_sd, w60_precip
    ];
}
console.log(weather_60_table);
console.log(weather_60);

for (let m = 0; m < weather_forecast_table.getRowCount(); m++) {
    wf_date = weather_forecast_table.getRow(m).arr[0];
    wf_time = weather_forecast_table.getRow(m).arr[1];
    wf_validDate = weather_forecast_table.getRow(m).arr[2];
    wf_temp = weather_forecast_table.getRow(m).arr[3];
    wf_dp = weather_forecast_table.getRow(m).arr[4];
    wf_ws = weather_forecast_table.getRow(m).arr[5];
    wf_gs = weather_forecast_table.getRow(m).arr[6];
    wf_ap = weather_forecast_table.getRow(m).arr[7];
    wf_precipProb = weather_forecast_table.getRow(m).arr[8];
    wf_cc = weather_forecast_table.getRow(m).arr[9];
    wf_si = weather_forecast_table.getRow(m).arr[10];
    wf_wd = weather_forecast_table.getRow(m).arr[11];
    wf_ah = weather_forecast_table.getRow(m).arr[12];
    wf_ad = weather_forecast_table.getRow(m).arr[13];
    weather_forecast[m] = [wf_date, wf_time, wf_validDate, wf_temp, wf_dp, wf_ws,
        wf_gs, wf_ap, wf_precipProb, wf_cc, wf_si, wf_wd, wf_ah, wf_ad
    ];
}
console.log(weather_forecast_table);
console.log(weather_forecast);

}

标签: javascriptnode.jscsvp5.js

解决方案


推荐阅读