Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在处理过程中使用map()时出错_Java_Mapping_Coordinates_Processing - Fatal编程技术网

Java 在处理过程中使用map()时出错

Java 在处理过程中使用map()时出错,java,mapping,coordinates,processing,Java,Mapping,Coordinates,Processing,我在尝试从CSV文件绘制坐标时遇到了一些问题。我获取纬度和经度,然后使用WebMercator()转换它们,然后获取最小值和最大值,并使用map()函数将它们映射到0到500之间的值。但是,我得到以下错误: 总行数:6606 maxLat=198987.05;minLat=198986.94;maxLong=110837.664;minLong=110836.695 制图前的纬度和经度:198986.27;110840.68 地图()之后的横向和纵向(&L):-6142.857;4112.903

我在尝试从CSV文件绘制坐标时遇到了一些问题。我获取纬度和经度,然后使用WebMercator()转换它们,然后获取最小值和最大值,并使用map()函数将它们映射到0到500之间的值。但是,我得到以下错误:

总行数:6606

maxLat=198987.05;minLat=198986.94;maxLong=110837.664;minLong=110836.695 制图前的纬度和经度:198986.27;110840.68 地图()之后的横向和纵向(&L):-6142.857;4112.9033 标准之后的横向和纵向时间():-6.142857;4.112903

调用map(NaN,198986.94198987.05,0500),返回NaN(不是数字)

调用map(NaN,110836.695110837.664,0500),返回NaN(不是数字)

如果您能给我一些关于如何修复错误或改进代码的建议,我将不胜感激。 先谢谢你。 守则本身:

import java.util.Collections;

Table csvFile;

ArrayList<Float>times = new ArrayList<Float>();
ArrayList<Float>latitude = new ArrayList<Float>();
ArrayList<Float>longitude = new ArrayList<Float>();
ArrayList<Float>lap = new ArrayList<Float>();

ArrayList<Float>latitudeCal = new ArrayList<Float>();
ArrayList<Float>longitudeCal = new ArrayList<Float>();

float maxLat = 0;
float maxLong = 0;
float minLat = 0;
float minLong = 0;

void setup() {
  size(600, 800);
  csvFile = loadTable("RRData.csv", "header");

  int totalRows = csvFile.getRowCount();

  println("total number of rows: " + totalRows);

  for (TableRow row : csvFile.rows()) { 
    times.add(row.getFloat("Time"));
    latitude.add(normLat(row.getFloat("Latitude")));
    longitude.add(normLon(row.getFloat("Longitude")));
  }

  maxLat = latitude.get(0);
  maxLong = longitude.get(0);
  maxLat = latitude.get(0);
  maxLong = longitude.get(0);

  // Finding Max Values
  for (int i = 1; i < latitude.size() - 1; i++) {
    maxLat = max(maxLat, latitude.get(i));
    maxLong = max(maxLong, longitude.get(i));
    minLat = min(minLat, latitude.get(i));
    minLong = min(minLong, longitude.get(i));
  }

  println("maxLat = "  + maxLat + "; minLat = " + minLat + " ; maxLong = " + maxLong + "; minLong = " + minLong); 

  println("lat & long before mapping: " + latitude.get(0) + " ; " + longitude.get(0));

  println("lat & long after map(): " + map(latitude.get(0), minLat, maxLat, 0, 1000) + " ; " + map(longitude.get(0), minLong, maxLong, 0, 1000)); // map() doesn't worked as intended

  //Try Normalising
  println("lat & long after norm(): " + norm(latitude.get(0), minLat, maxLat) + " ; " + norm(longitude.get(0), minLong, maxLong));

  // Mapping 
  for (int  i = 0; i < latitude.size() - 1; i++) {
    float num = latitude.get(i);
    float num2 = longitude.get(i);
    //println(num);
    //println(num2);
    latitudeCal.add(map(num, minLat, maxLat, 0, 500));
    longitudeCal.add(map(num2, minLong, maxLong, 0, 500));
  }

}

float normLon(float lon) {
  lon = radians(lon);
  float a = (256 / PI) * pow(2, 10);
  float b = lon + PI;
  return a * b;
}

float normLat(float lat) {
  lat = radians(lat);
  float a = (256 / PI) * pow(2, 10);
  float b = tan(PI / 4 + lat / 2);
  float c = PI - log(b);
  return a * c;
}

void draw() {  
  background(51);
  for (int i = 0; i < times.size() - 1; i++) {
    noFill();
    ellipse(latitude.get(i), longitude.get(i), 20, 20);
  }
}
import java.util.Collections;
表csvFile;
ArrayListtimes=新的ArrayList();
ArrayListAtude=新的ArrayList();
ArrayListLongitute=新的ArrayList();
ArrayListAP=新的ArrayList();
ArrayListAtudeCal=新的ArrayList();
ArrayListLongitalCal=新的ArrayList();
float maxLat=0;
float maxLong=0;
float minLat=0;
float minLong=0;
无效设置(){
大小(600800);
csvFile=loadTable(“RRData.csv”,“header”);
int totalRows=csvFile.getRowCount();
println(“总行数:“+totalRows”);
对于(TableRow行:csvFile.rows()){
添加(row.getFloat(“时间”);
添加(normLat(row.getFloat(“纬度”));
add(normLon(row.getFloat(“经度”));
}
maxLat=纬度。获取(0);
maxLong=经度。获取(0);
maxLat=纬度。获取(0);
maxLong=经度。获取(0);
//查找最大值
对于(inti=1;i
请将您的问题缩小到一个范围,而不是发布整个项目。哪一行代码的行为与您预期的不同?那一行的值是多少?创建一个新程序,只测试带有硬编码值的那一行,然后编辑您的帖子,以包含我们可以运行的这个小示例。似乎您没有正确初始化minLat和minLong,而是设置了两次maxXXX。
i
您可能需要删除
-1
normLon代码比它需要的更复杂。例如,
256==2^8
因此,
a=(1在我看来,输入Csv包含NaN,或者normXXX或弧度操作存在问题,导致NaN