📄 waypointintotracks.java
字号:
package net.aetherial.gis.excel;
public class WaypointIntoTracks {
public WaypointIntoTracks() { //航点插入到航迹中去
boolean exactFind = true, aboutFind = true;
double wayLat, wayLon;
double tracksLat, tracksLon,lastLat = 0.0,
lastLon = 0.0;
if (myTest.waypointName.size() > 0) { //如果有航点的话,下面计算才有可能
for (int i = 0; i < myTest.waypointName.size(); i++) { //循环航点,让每个航点都计算一下.
//System.out.println("myTest.waypointName.size()="+i);
wayLat = Double.parseDouble(myTest.waypointLat.get(i) + "");
wayLon = Double.parseDouble(myTest.waypointLon.get(i) + "");
for (int j = 0; j < myTest.name.size(); j++) {
System.out.println("myTest.name.size()="+j);
tracksLat = Double.parseDouble(myTest.lat.get(j) + "");
tracksLon = Double.parseDouble(myTest.lon.get(j) + "");
//tracksLon = Double.parseDouble(myTest.lon.get(j) + "");
/////////////////////在精确的位置插入数据////////////////////////////////////////////
if (exactFind) {
if (lastLat != 0.0) {
if ( (wayLat > lastLat) && (wayLat < tracksLat)) { //如果航点比上一个航迹点大,比这一个航迹点小的话.
if (lastLon != 0.0) {
if ( (wayLon > lastLon) && (wayLon < tracksLon)) { //如果航点比上一个航迹点大,比这一个航迹点小的话.
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
exactFind = true;
// System.out.println("Waypoint insert into tracks :" + j +
// "Site1");
}
else if ( (wayLon < lastLon) && (wayLon > tracksLon)) {
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
exactFind = true;
// System.out.println("Waypoint insert into tracks :" + j +
// "Site2");
}else if((Math.abs(wayLon-tracksLon))<0.01){//在模糊的位置插入数据
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
// System.out.println("Waypoint insert into tracks :" + j +
// "Site7");
exactFind = true;
}
else {
exactFind = false;
}
}
// System.out.println("They can find: site 8 waypoint " + i +" Tracks:" + j);
}
else if ( (wayLat < lastLat) && (wayLat > tracksLat)) { //如果航点比上一个航迹点小,比这一个航迹点大的话.
if (lastLon != 0.0) {
if ( (wayLon > lastLon) && (wayLon < tracksLon)) { //如果航点比上一个航迹点大,比这一个航迹点小的话.
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
exactFind = true;
// System.out.println("Waypoint insert into tracks :" + j +
// "Site3");
}
else if ( (wayLon < lastLon) && (wayLon > tracksLon)) {
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
exactFind = true;
// System.out.println("Waypoint insert into tracks :" + j +
// "Site4");
}else if((Math.abs(wayLon-tracksLon))<0.01){
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "",
j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "",
j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "",
j);
//System.out.println("Waypoint insert into tracks :" + j +
// "Site5");
exactFind = true;
}
else {
exactFind = false;
}
}
//System.out.println("They can find: site 9 waypoint " + i +" Tracks:" + j);
}
else {
exactFind = false;
}
}
else {
exactFind = false;
}
}
//System.out.println("上一个航迹点纬度:" + lastLat);
//System.out.println("上一个航迹点经度:" + lastLon);
//System.out.println("这一个航点纬度:" + wayLat);
//System.out.println("这一个航点经度:" + wayLon);
lastLat =tracksLat;
lastLon =tracksLon;
//System.out.println("这一个航迹点纬度:" + lastLat);
//System.out.println("这一个航迹点经度:" + lastLon);
/////////////////////在精确的位置插入数据_结束////////////////////////////////////////
aboutFind = ! (exactFind);
if (aboutFind) {
///////////////如果精确位置找不到的话,那么看看大约位置是否在这里,如果在这里的话,说明是第一个位置
//(1)取两位小数,比较,如果有近似的.再比较经度
if ((Math.abs(wayLat-tracksLat))<0.001) {
//有近似的纬度,那么计算有没有近似的经度
//tracksLon = Double.parseDouble(myTest.lon.get(j) + "");
if ((Math.abs(wayLon-tracksLon))<0.001) { //如果经度\纬度都近似的话,把这个航点插入到当前位置.
myTest.lat.insertElementAt(myTest.waypointLat.get(i) + "", j);
myTest.lon.insertElementAt(myTest.waypointLon.get(i) + "", j);
myTest.name.insertElementAt(myTest.waypointName.get(i) + "", j);
//System.out.println("Waypoint insert into tracks :" + j +
// "Site5====================================");
aboutFind = true;
j++;
break;
}
else {
aboutFind = false;
}
}
else {
aboutFind = false;
}
}
//////////////////////////////////////////////////////////////////////////////////
//myTest.lat.addElement(myTest.waypointLat.get(i) + "");
//myTest.lon.addElement(myTest.waypointLon.get(i) + "");
//myTest.name.addElement(myTest.waypointName.get(i) + "");
//System.out.println("Waypoint insert into tracks :" + i + "site 7");
}
////////////////////////////如果都没找到,那么插入到末尾///////////////////////////////
if (!(exactFind||aboutFind)) {
myTest.lat.addElement(myTest.waypointLat.get(i) + "");
myTest.lon.addElement(myTest.waypointLon.get(i) + "");
myTest.name.addElement(myTest.waypointName.get(i) + "");
//System.out.println("Waypoint insert into tracks :" + i + "site 6");
//j++;
//}
/////////////////////////////////////////////////////////////////////////////////
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -