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

📄 cutbyzhuanghao.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 JAVA
字号:
package net.aetherial.gis.jiaotongbu.input.analyse;

import net.aetherial.gis.output.toLd.cut.CutByNode;
import java.util.Vector;
import org.w3c.dom.Node;
import net.aetherial.gis.cutAndLink.cut.CutToSection;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.output.toLd.cut.RelateWPTAfterCut;
import net.aetherial.gis.jiaotongbu.input.type.Luduan;
import net.aetherial.gis.cutAndLink.zhuanghao.Zhuanghao;
import net.aetherial.gis.jiaotongbu.input.publicuse.Permanence;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class CutByZhuanghao {
  private Vector zhuanghaos = new Vector();
  private Vector luduan = new Vector();
  public CutByZhuanghao() {

  }

//
//  public void printZhuanghaos() {
//    for (int i = 0; i < this.zhuanghaos.size(); i++) {
//      if (i % 2 == 0) {
//        System.out.println("");
//      }
//      System.out.print("\t" + ( (Zhuanghao)this.zhuanghaos.get(i)).getData());
//    }
//  }
//
//  public void printLuduans() {
//    for (int i = 0; i < this.luduan.size(); i++) {
//      System.out.print( ( (Luduan)this.luduan.get(i)).getQidianScaleZhuanghao() +
//                       "\t" +
//                       ( (Luduan)this.luduan.get(i)).getZhidianScaleZhuanghao());
//    }
//  }

  private void printLuduanZhuanghao(Zhuanghao qidian, Zhuanghao zhidian) {
    String n = "";
    n = n + "[桩号错误]\t";
    n = n + "起点:" + qidian.getZhuanghaoName() + " " + qidian.getMeterData();
    n = n + "止点:" + zhidian.getZhuanghaoName() + " " + zhidian.getMeterData();
    Permanence.addLog(n);
  }

  public void cut(Node track) {
    CutToSection cut = null;
    Node newTrk = null;
    Node[] allwpts = ItemValue.getWaypoint();
    for (int i = 0; allwpts != null && i < allwpts.length; i++) {
      ItemValue.setWaypointTracksID(allwpts[i], "-2");
    }

    AddZhuanghao create = new AddZhuanghao();
    create.setCurrentTrk(track);

    Node qidian = null;
    Node zhidian = null;
    boolean canRemoveInitTrk = true;
//    this.printLuduans();
//    this.printLuduans();
//    System.exit(0);
//    this.reInitZhuanghao(track);
    for (int i = 0; i < zhuanghaos.size(); i++) {

      /**
       * 如果下个桩号存在
       */
      if (i + 1 <= zhuanghaos.size() - 1) {
//        Permanence.addLog("\tTrack distance = " +
//                          ItemValue.getTracksDistance(track));
        qidian = create.createZhuanghaoNode( (Zhuanghao)this.zhuanghaos.get(i));
        zhidian = create.createZhuanghaoNode( (Zhuanghao)this.zhuanghaos.get(i +
            1));
        if (qidian == null || zhidian == null) {
          this.printLuduanZhuanghao( (Zhuanghao)this.zhuanghaos.get(i),
                                    (Zhuanghao)this.zhuanghaos.get(i + 1));
          if (qidian == null && zhidian == null) {
            Permanence.addLog("\t起点\\止点均为null");
          }
          else if (qidian == null && zhidian != null) {
            Permanence.addLog("\t起点为null");
          }
          else {
            Permanence.addLog("\t止点为null");
          }
          canRemoveInitTrk = false;
        }
        else {
          cut = new CutToSection();

          cut.setStartEnd(qidian, zhidian); //?
          cut.setTrack(track);

          newTrk = cut.createNewDocNode();

          this.initNewTrk(newTrk,
                          this.getZhuanghaoInLuduan( (Zhuanghao)this.zhuanghaos.
              get(i), (Zhuanghao)this.zhuanghaos.get(i + 1)), allwpts);
          ItemValue.setWaypointTracksID(qidian, ItemValue.getTracksID(newTrk));
          ItemValue.setWaypointTracksID(zhidian, ItemValue.getTracksID(newTrk));
          this.deleteDisOf0(newTrk);
        }
      }
    }
    if (zhuanghaos.size() >= 2 && canRemoveInitTrk) {
      ItemValue.removeTrack(track);
      /**
       * 删除掉默认的航点,在切割航迹的时候是复制航点的。
       */
      for (int i = 0; allwpts != null && i < allwpts.length; i++) {
        ItemValue.removeWaypoint(allwpts[i]);
      }
    }

    /**
     * 肯定有剩余航迹段,该如何处理,是否生成一个新的GPS文件?
     */


  }

  private boolean deleteDisOf0(Node newTrack) {
    double dis = ItemValue.getTracksDistance(newTrack);
    if (dis == 0) {
      ItemValue.removeTrack(newTrack);
      return true;
    }
    else {
      return false;
    }
  }

  private void addZhuanghaos(Zhuanghao zh) {
    if (this.zhuanghaos.size() == 0) {
      this.zhuanghaos.add(zh);
    }
    else {
      for (int i = 0; i < this.zhuanghaos.size(); i++) {
        if (zh.isEquals( (Zhuanghao)this.zhuanghaos.get(i))) {
          return;
        }
      }
      this.zhuanghaos.add(zh);
    }
  }

  private void initNewTrk(Node newTrack, Luduan luduan, Node[] waypoints) {
    (new RelateWPTAfterCut()).relateWptToTrk(waypoints, newTrack);
    if (luduan == null) {
      return;
    }
    String lxBianhao = luduan.getLuduanBianhao().trim();
    lxBianhao = lxBianhao.substring(0, 4);
    String ldBianhao = luduan.getLuduanBianhao().trim();
    ldBianhao = ldBianhao.substring(ldBianhao.length() - 3, ldBianhao.length());
    String repeatLx = luduan.getChongfuluxian().trim();
    if (!repeatLx.equals("")) {
      repeatLx = repeatLx.substring(0, 4);
      ItemValue.setTracks_ld_Number(newTrack,
                                    lxBianhao + "||" + ldBianhao + "||" +
                                    repeatLx);
    }
    else {
      ItemValue.setTracks_ld_Number(newTrack, lxBianhao + "||" + ldBianhao);
    }

    ItemValue.setTracksT5(newTrack, luduan.getJishudengji());
    ItemValue.setTracksType(newTrack, luduan.getMiancengleixing());
    ItemValue.setTracksWidth(newTrack, luduan.getLumianKuandu());
    ItemValue.setTracks_jitongbu_luji_With(newTrack, luduan.getLujiKuandu());
    if (luduan.getShifouDuantou().trim().equals("是")) {
      ItemValue.setTracks_ld_Number(newTrack,
                                    ItemValue.
                                    getTracks_ld_original_number(newTrack) +
                                    "||capture");
    }
    String nianfen = luduan.getShijian().replaceAll("年", "");
    ItemValue.setTracksT6(newTrack, "Sun Jan 01 00:00:00 CST " + nianfen);
    ItemValue.setTracksName(newTrack, luduan.getLuxianJiancheng());
    Permanence.addLog("[分段成功]\t" + ItemValue.getTracksName(newTrack) + "\t" +
                      luduan.getQidianMingcheng() + "  --  " +
                      luduan.getZhidianMingcheng() + "\t" + ItemValue.getTracksStringDistance(newTrack) +"公里");
  }

  private Luduan getZhuanghaoInLuduan(Zhuanghao qidian, Zhuanghao zhidian) {
    Luduan temp = null;
    Zhuanghao zh = null;
    boolean findQidian = false;
    for (int i = 0; i < this.luduan.size(); i++) {
      temp = (Luduan)this.luduan.get(i);
      zh = new Zhuanghao();
      zh.setData(temp.getQidianScaleZhuanghao());
      zh.setZhuanghaoName_fuhe(temp.getQidianMingcheng());
      if (qidian.getMeterData() == zh.getMeterData()) {
        findQidian = true;
      }
      zh = new Zhuanghao();
      zh.setData(temp.getZhidianScaleZhuanghao());
      zh.setZhuanghaoName_fuhe(temp.getZhidianMingcheng());
//      this.addZhuanghaos(zh);
      if (findQidian && (zhidian.getMeterData() == zh.getMeterData())) {
        return temp;
      }
    }
    return null;
  }

  /**
   *
   */
  private void initZhuanghao() {
    Luduan temp = null;
    Zhuanghao zh = null;
    for (int i = 0; i < this.luduan.size(); i++) {
      temp = (Luduan)this.luduan.get(i);
      zh = new Zhuanghao();
      zh.setData(Double.parseDouble(temp.getQidianZhuanghao()));
      zh.setZhuanghaoName_fuhe(temp.getQidianMingcheng());
      zh.setData(temp.getQidianScaleZhuanghao());
      this.addZhuanghaos(zh);
      zh = new Zhuanghao();
      zh.setData(Double.parseDouble(temp.getZhidianZhuanghao()));
      zh.setZhuanghaoName_fuhe(temp.getZhidianMingcheng());
      zh.setData(temp.getZhidianScaleZhuanghao());
      this.addZhuanghaos(zh);
    }
  }

  private void reInitZhuanghao(Node trk) {
    Zhuanghao zh = null;
    double max = 0.0, trkDis = ItemValue.getTracksDistance(trk);
    for (int i = 0; i < this.zhuanghaos.size(); i++) {
      zh = (Zhuanghao)this.zhuanghaos.get(i);
      max = Math.max(max, zh.getMeterData());
    }
    if (max > trkDis) {
      double scale = trkDis / max;
      Vector temp = new Vector();
      for (int i = 0; i < this.zhuanghaos.size(); i++) {
        zh = (Zhuanghao)this.zhuanghaos.get(i);
        zh.setData(zh.getData() * scale);
        temp.add(zh);
      }
      this.zhuanghaos.removeAllElements();
      for (int i = 0; i < temp.size(); i++) {
        this.zhuanghaos.add(temp.get(i));
      }
    }

  }

  public void setLuduan(Vector luduan) {
    this.luduan = luduan;
    this.initZhuanghao();
  }
}

⌨️ 快捷键说明

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