gpt4 book ai didi

java - 使用java计算两个csv GPS点之间的距离

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:36 26 4
gpt4 key购买 nike

我正在尝试计算 csv 文件中存储的两个 GPS 点之间的距离......

这是我代码的一部分...问题出在 latitude2 和 longitude 我不知道如何使用正确的经度和纬度来实现它们,请帮忙!

                BufferedReader reader = new BufferedReader(new FileReader(file));
try {
/* First line of the data file is the header */
String line = reader.readLine();
System.out.println("Header: " + line);
boolean foundAnyRowHigherThan5 = false;
for (line = reader.readLine(); line != null; line = reader.readLine()) {
if (line.trim().length() > 0) { // skip blank lines

String tokens[] = line.split("\\,");
String name1 = tokens[0].trim();
String name2 = tokens[1].trim();
double latitude = Double.parseDouble(tokens[2]);
double longitude = Double.parseDouble(tokens[3]);

double latitude2 = latitude+?; // i dont know how to implement
double longitude2 = longitude+?; // i dont know how to implement them
String speedString = tokens[5].trim();
double dist = Double.parseDouble(tokens[4]);
float speedFloat = Float.parseFloat(speedString);

if(foundAnyRowHigherThan5 || speedFloat > 5.0) {
// a partir de ce point on ajoutera touts les points ,
if(!foundAnyRowHigherThan5) {
foundAnyRowHigherThan5 = true;
}

/* Longitude (= x coord) first ! */
Point point = geometryFactory.createPoint(new Coordinate(longitude, latitude));

featureBuilder.add(point);

double earthRadius = 6371; //kilometers
double dLat = Math.toRadians(latitude-latitude2);
double dLng = Math.toRadians(longitude-longitude2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(latitude)) * Math.cos(Math.toRadians(latitude2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
dist = (double) (earthRadius * c);


featureBuilder.add(name1);
featureBuilder.add(name2);

featureBuilder.add(speedString);
featureBuilder.add(dist);
SimpleFeature feature = featureBuilder.buildFeature(null);

features.add(feature);


}
}
}
} finally {
reader.close();
}

最佳答案

有不同的方法可以解决这个问题,但我会留在你的代码片段中。

boolean checker = true;
double currentLongitude = 0;
double currentLatitude = 0;
for (....) {
....
if(checker){
String currentTokens[] = line.split("\\,");
String currentName1 = currentTokens[0].trim();
String currentName2 = currentTokens[1].trim();
currentLatitude = Double.parseDouble(currentTokens[2]);
currentLongitude = Double.parseDouble(currentTokens[3]);
checker = false;
continue;
}


String tokens[] = line.split("\\,");
String name1 = tokens[0].trim();
String name2 = tokens[1].trim();
double latitude = Double.parseDouble(tokens[2]);
double longitude = Double.parseDouble(tokens[3]);

double latitude2 = currentLatitude - latitude;
double longitude2 = currentLongitude - longitude;
.....
currentLatitude = latitude;
currentLongitude = longitude;
}

关于java - 使用java计算两个csv GPS点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29254496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com