import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 示例:生成两个点之间的经纬度点
double lon1 = 96.780452728;
double lat1 = 30.375989676;
double lon2 = 111.128597260;
double lat2 = 30.99122405;
int numberOfPoints = 5;
List<double[]> points = generateIntermediatePoints(lon1, lat1, lon2, lat2, numberOfPoints);
// 输出结果
for (int i = 0; i < points.size(); i++) {
double[] point = points.get(i);
System.out.printf("点%d: 经度=%.6f, 纬度=%.6f%n", i + 1, point[0], point[1]);
}
}
public static List<double[]> generateIntermediatePoints(double lon1, double lat1, double lon2, double lat2, int numberOfPoints) {
List<double[]> points = new ArrayList<>();
if (numberOfPoints < 2) {
points.add(new double[]{lon1, lat1});
points.add(new double[]{lon2, lat2});
return points;
}
double deltaLon = calculateDeltaLon(lon1, lon2);
double deltaLat = lat2 - lat1;
for (int i = 0; i < numberOfPoints; i++) {
double t = i / (double) (numberOfPoints - 1);
double lon = normalizeLongitude(lon1 + t * deltaLon);
double lat = lat1 + t * deltaLat;
points.add(new double[]{lon, lat});
}
return points;
}
private static double calculateDeltaLon(double lon1, double lon2) {
double delta = lon2 - lon1;
if (delta > 180.0) {
delta -= 360.0;
} else if (delta < -180.0) {
delta += 360.0;
}
return delta;
}
private static double normalizeLongitude(double lon) {
lon %= 360.0;
if (lon < -180.0) {
lon += 360.0;
} else if (lon >= 180.0) {
lon -= 360.0;
}
return lon;
}
}
Java生成两点间经纬度点直线代码
于 2025-04-28 15:46:17 首次发布