⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pickuptrack.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 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 + -