unitetrack.java

来自「基于Java的地图数据管理软件。使用MySQL数据库管理系统。」· Java 代码 · 共 90 行

JAVA
90
字号
package net.aetherial.gis.jiaotongbu.input.analyse;

import net.aetherial.gis.cutAndLink.cut.UniteAllTrack;
import net.aetherial.gis.jiaotongbu.input.publicuse.Permanence;
import org.w3c.dom.Node;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.output.toLd.cut.RelateWPTAfterCut;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class UniteTrack {
  /**
   * 该文件是否可以继续处理
   */
  private boolean prepareOK = true;

  public UniteTrack() {
  }

  public void unite() {
    Node[] trks = ItemValue.getTracks();
    if (trks == null || trks.length == 1) {
      return;
    }
    UniteAllTrack unite = new UniteAllTrack();
    if (!unite.isAllTrackNumberSame()) {
      Permanence.addLog("[合并错误]:\t所有航迹不同编号");
      this.prepareOK = false;
      return;
    }
    else {
      Node tempNode = null;
      try {
        tempNode = unite.createLinkedTrk();
      }
      catch (Exception ex) {
        Permanence.addLog("[合并错误]:\t不能组成一条航迹,共有" +
                          unite.getConcatenatedTrack().size() + "段");
        this.prepareOK = false;
        return;
      }

      if (tempNode != null) {
        /**
         * 已组成一条航迹了
         */
        (new RelateWPTAfterCut()).relateWptToTrk(ItemValue.getWaypoint(),
                                                 tempNode);
        ItemValue.setTracks_ld_Number(tempNode,"");
        this.deleteOtherTracksAndWaypoints(tempNode);
      }
//      ItemValue.removeTrack(tempNode);

    }
  }

  /**
   * 删除掉其他航迹和航点
   */
  private void deleteOtherTracksAndWaypoints(Node trk) {
    Node[] trks = ItemValue.getTracks();
    for (int i = 0; trks != null &&  i < trks.length; i++) {
      if (trks[i] != trk) {
        ItemValue.removeTrack(trks[i]);
      }
    }
    String id = ItemValue.getTracksID(trk);
    Node[] wpts = ItemValue.getWaypoint();
    for (int i = 0;wpts != null &&  i < wpts.length; i++) {
      if (!(id.equals(ItemValue.getWaypointTracksID(wpts[i])))) {
        ItemValue.removeWaypoint(wpts[i]);
      }
    }
  }

  public boolean isPrepareOK() {
    return prepareOK;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?