📄 pickuptrack.java
字号:
package net.aetherial.gis.our.auto.extend;
import net.aetherial.gis.our.auto.Auto;
import net.aetherial.gis.our.FrameOur;
import org.w3c.dom.Node;
import net.aetherial.gis.surface.ItemValue;
import java.util.Vector;
import net.aetherial.gis.dataType.GPSFile;
import java.io.File;
import net.aetherial.gis.surface.CreateFile;
import net.aetherial.gis.dataType.WptType;
import net.aetherial.gis.dataType.TrackType;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class PickUpTrack extends Auto{
private String directory = "";
private boolean XingZhengCun = true;
public boolean selectedXZC = false;
public boolean selectedTracksType = false;
public boolean selectedTrackGrade = false;
private String trackType ="";
private String trackGrade="";
private String n ="";
/**
* 定义满足删除条件的;
*/
private Vector deleteCondition = new Vector();
public PickUpTrack(FrameOur fo) {
this.setFrameOur(fo);
}
public void setSavedDirectory(String path){
this.directory = path;
}
public void pickUpAllFile() {
if (super.input == null) {
print("super.input == null");
return;
}
for (int i = 0; i < this.input.length; i++) {
this.open(this.input[i]);
print(this.input[i].getName() + "************************************************");
if(this.selectedTracksType){
pickUpAFileTrackType();
}
if(selectedXZC){
this.pickUpAFileXZC();
}
if(selectedTrackGrade){
System.out.println(" == " + trackGrade);
this.pickUpAFileTrackGrade();
}
this.saveMemory(this.directory + this.input[i].getName());
this.setMemoryReset();
}
this.createLog(this.directory + "log//"+ItemValue.getDayTimeNumber() + ".log");
}
private void pickUpAFileXZC() {
//int[] pos = ItemValue.getPosition("track");
Node[] trk = ItemValue.getTracks();
if (trk == null) {
this.print("该文件没有航迹!");
return;
}
else {
for (int i = 0; i < trk.length; i++) {
if (this.isShouldDelete(trk[i])) {
/**
* 如果属于删除范围内的,
* 直接删除,不用判断是否是行政村
*/
this.deleteTracks(trk[i]);
}
else {
/**
* 如果不属于直接删除范围内的
* 要考虑:
* 1.是否是行政村航迹
* 2.用户是否是要行政村航迹
*/
if (this.XingZhengCun) {
if (! (this.haveXingZhengPoint(trk[i]))) {
//this.deleteTrackAndHisWaypoint(trk[i]);
this.deleteTracks(trk[i]);
}
}
else {
if (this.haveXingZhengPoint(trk[i])) {
//this.deleteTrackAndHisWaypoint(trk[i]);
this.deleteTracks(trk[i]);
}
}
}
}
}
}
/**
* 添加删除航迹的条件
* 这里要求在调用此程序的时候,要指定条件,比如:
* 删除油路\删除水泥路
*/
public void addDeleteCondition(String trkType){
this.deleteCondition.add(trkType);
}
/**
* 当程序检测某一航迹时
* 判断是否应该被删除
* 返回:boolean
*/
private boolean isShouldDelete(Node trk){
if (this.deleteCondition.size() >0) {
if (!(TrackType.isInPlan(trk))) {
return true;
}
// for (int i = 0; i < this.deleteCondition.size(); i++) {
// if (this.deleteCondition.elementAt(i).equals(ItemValue.getTracksType(trk))) {
// return true;
// }
// }
}
return false;
}
private void pickUpAFileTrackType(){
//int[] pos = ItemValue.getPosition("track");
Node[] trk = ItemValue.getTracks();
if (trk == null) {
this.print("该文件没有航迹!");
return;
}
else {
for (int i = 0; i < trk.length; i++) {
if (!(this.trackType.equals(""))) {
if (! (ItemValue.getTracksType(trk[i]).equals(this.trackType))) {
//this.deleteTrackAndHisWaypoint(trk[i]);
this.deleteTracks(trk[i]);
}
}
}
}
}
private void pickUpAFileTrackGrade(){
//int[] pos = ItemValue.getPosition("track");
Node[] trk = ItemValue.getTracks();
if (trk == null) {
this.print("该文件没有航迹!");
return;
}
else {
for (int i = 0; i < trk.length; i++) {
if (!(this.trackGrade.equals(""))) {
System.out.println(ItemValue.getTracksGrade(trk[i]) + " == " + trackGrade);
if (! (ItemValue.getTracksGrade(trk[i]).equals(this.trackGrade))) {
//this.deleteTrackAndHisWaypoint(trk[i]);
this.deleteTracks(trk[i]);
}
}
}
}
}
private boolean haveXingZhengPoint(Node track){
this.print("航迹:[" + ItemValue.getTracksName(track) + "]");
//判断是否含有行政村,有返回true
String tId = "";
try {
tId = ItemValue.getTracksID(track);
}
catch (Exception ex) {
this.print("error in: private boolean haveXingZhengPoint(Node track){tId = ItemValue.getTracksID(track);}");
this.print(ex.toString());
}
//int[] pos = ItemValue.getPosition("waypoint");
Node[] wpt = ItemValue.getWaypoint();
if(wpt == null){
this.print("wpt == null");
return false;
}
Vector ve = new Vector();
this.print(" 该航迹包含的航点有:");
this.n = this.n + " ";
for(int i = 0;i <wpt.length;i++){
String wID = ItemValue.getWaypointTracksID(wpt[i]);
if(wID.equals(tId)){
this.n = this.n + ItemValue.getWaypointName(wpt[i]) +",";
ve.add(wpt[i]);
}
}
this.print("");
for(int i = 0;i<ve.size();i++){
if(this.isXINGZHENGCUN((Node)ve.elementAt(i))){
this.print("***发现行政村点:" + ItemValue.getWaypointName((Node)ve.elementAt(i)));
return true;
}
}
return false;
}
private boolean isXINGZHENGCUN(Node wpt){
//判断该航点是否是行政村点,
//分开的目的是陶主任的没有标记行政村的航点,也写到这个方法里来
if((ItemValue.getWaypointKP(wpt)).equals(WptType.W1XingZhengCun)){
return true;
}else{
return false;
}
}
private void deleteTracks(Node track){
this.print(" 删除掉:[" + ItemValue.getTracksName(track)+"]");
ItemValue.removeTrack(track);
}
private void deleteTrackAndHisWaypoint(Node track){
this.print("删除掉:[" + ItemValue.getTracksName(track) + "]和他关联的航点。");
String id = "";
try {
id = ItemValue.getTracksID(track);
print("Track id is:" + id);
}
catch (Exception ex1) {
id = "-3";
//System.out.println("Can'nt find id at :" + ItemValue.getTracksName(track));
}
int[] pos = ItemValue.getPosition("waypoint");
if(pos == null){
return;
}
Node wpt = null;
String wID = "";
//Vector v = new Vector();
for(int i = 0;i <pos.length;i++){
wpt = ItemValue.getWaypoint(pos[i]);
try {
wID = ItemValue.getWaypointTracksID(wpt);
print("waypoint id is:" + wID);
}
catch (Exception ex) {
wID = "-4";
//System.out.println("Can'nt find id at :" + ItemValue.getWaypointName(wpt));
}
if(wID.equals(id)){
ItemValue.removeWaypoint(wpt);
}
}
try {
ItemValue.removeTrack(track);
}
catch (Exception ex2) {
}
}
public void setXingZhengCun(boolean XingZhengCun) {
this.XingZhengCun = XingZhengCun;
}
private void createDirectory(String direct){
File f = new File(direct);
if(!(f.exists())){
f.mkdir();
}
}
private void createLog(String logFile){
this.createDirectory((new File(logFile)).getParent());
CreateFile cf = new CreateFile(new File(logFile));
cf.setEncode("GB2312");
cf.memoryToFile(this.n);
}
public void setSelectedTracksType(boolean selectedTracksType) {
this.selectedTracksType = selectedTracksType;
}
public void setSelectedXZC(boolean selectedXZC) {
this.selectedXZC = selectedXZC;
}
public void setTrackType(String trackType) {
this.trackType = trackType;
}
public void setTrackGrade(String trackGrade) {
this.trackGrade = trackGrade;
}
public String getTrackGrade() {
return trackGrade;
}
public void setSelectedTrackGrade(boolean selectedTrackGrade) {
this.selectedTrackGrade = selectedTrackGrade;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -