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

📄 luduan.java

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

import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.excel.ReadAdder;
import java.io.File;
import org.w3c.dom.Node;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.txt.ItemUse;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.txt.lx;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    LXNodeManager;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    FillLXBianma;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.
    LXRecord;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    TwoNode;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    LXBEPoint;
import net.aetherial.gis.surface.ItemValue;
import java.util.Enumeration;
import java.util.Vector;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.txt.ld;
import java.text.DecimalFormat;
import org.w3c.dom.NodeList;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    Depart;
import java.util.StringTokenizer;
import net.aetherial.gis.jiaotongbu.output.publicuse.Item;
import net.aetherial.gis.output.toLd.bianma.CreateBianma;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Luduan {
  private ReadAdder adder = null;
//  private LXNodeManager manager = null;
  private String N = "";
  public Luduan() {
//    manager = new LXNodeManager();
  }

  public void setAdder(ReadAdder adder) {
    this.adder = adder;
  }

  public void getGPSLXData() {
    this.N = this.N + ld.getLDHeaderString() + "\r\n";
//    LXBEPoint be = new LXBEPoint();
//    LXRecord record = null;
    ld ld = null;
    ld qianLd = null;
    Node[] wpts = ItemValue.getWaypoint();

    Enumeration keys = ItemValue.namedTracks.keys();
    java.text.DecimalFormat formater = new DecimalFormat("000");
    System.out.println("开始生成路段信息...");
    while (keys.hasMoreElements()) {

      qianLd = null;
      ld = null;
      String key = (String) keys.nextElement();
      Vector nodes = getLuDuanNodes( (Vector) ItemValue.namedTracks.get(key));
      System.out.print("生成 " + key + " 路段信息...");
      for (int i = 0; i < nodes.size(); i++) {

        System.out.print(formater.format(i + 1) + ",");
        if (nodes != null) {
//          record = new LXRecord(key, nodes);
//          be.setAllWpt(wpts);
          //        be.scanToGetBE();
//          record.setLXBEPoint(be);
          ld = new ld();
          //        ld.setLuxianData(record);
          //        ld..setExcelReadMethod(this.adder);

          ld.set0_3ColumnBeizhu("");

          ld.set0_4ColumnAdder(adder.getAdder());
          ld.set0_5ColumnAdderPhone(adder.getAdderPhone());
          ld.set0_6ColumnAsses(adder.getAsses());
          ld.set0_7ColumnAssesPhone(adder.getAssesPhone());
          ld.set0_8ColumnDept(adder.getDept());
          ld.set0_9ColumnDeptPrin(adder.getDeptPrin());

          ld.set5_2ColumnLXNumber( (String) ItemValue.numberedTracks.get(key));
          ld.set5_3ColumnLXName(key);

//          ld.set5_5ColumnLDDepart( ( (String) ItemValue.numberedTracks.get(key)).
//                                  substring(4));

          fillBEInfo(key, (Node) nodes.get(i), ld, qianLd);

          ld.set5_18ColumnJishu(ItemValue.getTracksT5( ( (Node) nodes.get(i))));
          ld.set5_19ColumnLumian(ItemValue.getTracksType( (Node) nodes.get(i)));
          ld.set5_20ColumnLicheng(ItemValue.getTracksStringDistance( (Node)
              nodes.get(i)));
          ld.set5_21ColumnLumianKD(ItemValue.getTracksWidth( (Node) nodes.get(i)));
          ld.set5_22ColumnLujiKD(ItemValue.getTracks_jitongbu_luji_With( (Node)
              nodes.get(i)));

//          fillChongFuLuDuan(key, ld);
          /**
           * fillChongFuLuDuan(Node trk, ld thisLd,
           java.text.DecimalFormat formater, String key,
                                   int i)

           */
          String ldID = this.fillChongFuLuDuan( (Node) nodes.get(i), ld,
                                               formater, key, i);

          ld.set5_26ColumnIsQTYZ("1");

          String buildDateStr = ItemValue.getTracksT6( (Node) nodes.get(i));
          String reBuildDateStr = ItemValue.getTracksT7( (Node) nodes.get(i));
          ld.set5_28ColumnBuildTime(getYearStr(buildDateStr));
          ld.set5_29ColumnReBuildTime(getYearStr(reBuildDateStr));

          fillHanDong( (Node) nodes.get(i), ld);

          this.N = this.N + ld.toString() + "\r\n";

//              String number = (String)ItemValue.luDuanBianMa.get((Node)nodes.get(i));
          ItemValue.luDuanBianMa.put(nodes.get(i), ldID);
//          be.reset();
          qianLd = ld;

        }
      }
      System.out.println("结束");
    }
  }

  private void fillHanDong(Node trk, ld ld) {
    int handDong = 0;
    Node[] wpts = ItemValue.getTracksWaypoint(trk);
    for (int w = 0; wpts != null && w < wpts.length; w++) {
      String type = ItemValue.getWaypointKP(wpts[w]);
      if ("涵洞".equals(type)) {
        handDong++;
      }
    }

    ld.set5_30ColumnHandongNum("" + handDong);

  }

  String getYearStr(String dateStr) {
    String result = "1900";
    try {
      result = dateStr.substring(dateStr.length() - 4);
    }
    catch (Exception e) {
      // ignored
    }
    return result;
  }

  /**
   * 将航迹的首尾连接起来(陶)
   */
  private void fillBEInfo(String name, Node luDuan, ld ld, ld qianLd) {
    Node[] wpts = null; //ItemValue.getTracksWaypoint(luDuan);
//    if (wpts == null || wpts.length < 2) {
    wpts = ItemValue.getWaypoint();
//    }
    NodeList nl = ItemValue.getTracksPoint(luDuan);

    Node begin = null;
    LXBEPoint be = new LXBEPoint();
    be.setAllWpt(wpts);
//    be.setTrack(luDuan);
    Vector nodes = new Vector();
    nodes.add(luDuan);
    be.scanToGetBE(nodes);

    if (qianLd != null) {
      ld.set5_6ColumnBName(qianLd.getColumnEName());
      ld.set5_7ColumnBZhuanghao(qianLd.getColumnEZhuanghao());

      ld.set5_8ColumnBLongitude(qianLd.getColumnELongitude());
      ld.set5_9ColumnBLatitude(qianLd.getColumnELatitude());

//      ld.set5_8ColumnBLongitude(ItemValue.getTracksPointX(nl.item(0)));
//      ld.set5_9ColumnBLatitude(ItemValue.getTracksPointY(nl.item(0)));


      ld.set5_10ColumnBIsFenjie("2");
      ld.set5_11ColumnBFenjieType("");

    }
    else {

      begin = be.getBPoint(); // ItemValue.getMostNearWaypoint(nl.item(0), wpts);

      ld.set5_6ColumnBName(ItemValue.getWaypointName(begin));
      ld.set5_7ColumnBZhuanghao("0");
      ld.set5_8ColumnBLongitude(ItemValue.getTracksPointX(nl.item(0)));
      ld.set5_9ColumnBLatitude(ItemValue.getTracksPointY(nl.item(0)));

      ld.set5_10ColumnBIsFenjie("2");
      ld.set5_11ColumnBFenjieType("");
    }
    Node end = be.getEPoint();

    ld.set5_12ColumnEName(ItemValue.getWaypointName(end));

    double length = ItemValue.getTracksDistance(luDuan) / 1000;
    double total = Double.parseDouble(ld.getColumnBZhuanghao());

    java.text.DecimalFormat formater = new DecimalFormat("#.###");

    ld.set5_13ColumnEZhuanghao(formater.format(length + total));

    String endX = ItemValue.getTracksPointX(nl.item(nl.getLength() - 1));
    String endY = ItemValue.getTracksPointY(nl.item(nl.getLength() - 1));
    if (qianLd != null && endX.equals(ld.getColumnELongitude()) &&
        endY.equals(ld.getColumnELatitude())) {
      endX = ItemValue.getTracksPointX(nl.item(0));
      endY = ItemValue.getTracksPointY(nl.item(0));
    }
    ld.set5_14ColumnELongitude(endX);
    ld.set5_15ColumnELatitude(endY);
    ld.set5_16ColumnEIsFenjie("2");
    ld.set5_17ColumnEFenjieType("");

    String bCode = null;

    if (begin != null) {
      Depart dp = new Depart(begin);
      dp.setTrk(luDuan);
      bCode = dp.getXiangzhenBianma();
    }
    else {
//     if (bCode == null) {
      Depart dp = new Depart(end);
      dp.setTrk(luDuan);
      bCode = dp.getXiangzhenBianma();
//     }
    }
    ld.set5_5ColumnLDDepart(bCode);

  }

  private String fillChongFuLuDuan(Node trk, ld thisLd,
                                   java.text.DecimalFormat formater, String key,
                                   int i) {
    String ldNumber = "";
    /**
     * 如果不是村道
     */
    if ("国道|省道|县道|乡道".indexOf(ItemValue.getTracksGrade(trk).trim()) != -1) {

      StringTokenizer st = null;
      int stCounts = 0;
      try {
        st = new StringTokenizer(ItemValue.getTracks_ld_original_number(trk),
                                 "||");
        stCounts = st.countTokens();
      }
      catch (Exception ex) {
        System.out.println("1发生错误,错误原因为航迹路段标记个数为:" + st.countTokens() +
                           "\r\n出错的航迹名称为:" + ItemValue.getTracksName(trk) + "," +
                           ItemValue.getTracksNumber(trk));
//        System.exit(0);

      }

      if (st.countTokens() < 2) {
        System.out.println("2发生错误,错误原因为航迹路段标记个数为:" + st.countTokens() +
                           "\r\n出错的航迹名称为:" + ItemValue.getTracksName(trk) + "," +
                           ItemValue.getTracksNumber(trk));
//        System.exit(0);
        return "";
      }
      else {
        /**
         * 先把路段的路段编码,路段ID号填写上
         */
        st.nextToken();
        ldNumber = st.nextToken();
        thisLd.set5_1ColumnLDNumber( (String) ItemValue.numberedTracks.get(key) +
                                    ldNumber);
        thisLd.set5_4ColumnLDID(ldNumber);

        /**
         * 如果航迹的路段标记为4段,则表示有重复路段
         * "Y002||003||Y009||001"
         */
        if (stCounts == 4) {
//        Y008340824
          String reNumber = "";
          String tempReLxNumber = st.nextToken();
          try {
            reNumber = ( (String) ItemValue.numberedTracks.get(tempReLxNumber)).trim();
          }
          catch (Exception ex1) {
            reNumber = tempReLxNumber;
          }

          if (reNumber.length() == 4) {
            reNumber = reNumber + Item.getSix_6_XianNumber();
          }
          String reld = st.nextToken();
          fillChongFuLuDuan("1", reld,
                            reNumber,
                            thisLd);
        }
        /**
         * 如果航迹的路段标记不为4段,则表示无重复路段
         * "Y002||003"
         * "Y002||003||CanNotBeCut"
         */
        else {
          fillChongFuLuDuan("2", "", "", thisLd);
        }

        /**
         * 是否断头路
         */

//        LDRupture rupture = new LDRupture();
//        Node[] allTrks = ItemValue.getTracks();
//        if (!rupture.isMultiTrack(trk, allTrks)) {
//          thisLd.set5_27ColumnIsDuantou("2");
//        }
//        else {
//          if (rupture.isTrkIndependency(trk, allTrks)) {
//            thisLd.set5_27ColumnIsDuantou("1");
//            thisLd.set0_3ColumnBeizhu("未修建");
//          }
//          else {
//            thisLd.set5_27ColumnIsDuantou("2");
//          }
//        }
        CreateBianma cb = new CreateBianma();
        if (cb.isTrackRupture(trk)) {
          thisLd.set5_27ColumnIsDuantou("1");
          thisLd.set0_3ColumnBeizhu("未修建");
        }
        else {
          thisLd.set5_27ColumnIsDuantou("2");
        }
        return ldNumber;
      }

    }
    /**
     * 如果是村道
     */
    else {
      ldNumber = formater.format(i + 1);
      /**
       * 设置路段编码
       */
      thisLd.set5_1ColumnLDNumber( (String) ItemValue.numberedTracks.get(key) +
                                  formater.format(i + 1));
      thisLd.set5_4ColumnLDID(formater.format(i + 1));
      /**
       * 是否断头路
       */
      thisLd.set5_27ColumnIsDuantou("2");
      thisLd.set5_23ColumnIsRepeat("2");
      return ldNumber;
    }

  }

  private void fillChongFuLuDuan(String isRepeat, String reLDID,
                                 String reLDNumber, ld ld) {
    ld.set5_23ColumnIsRepeat(isRepeat);
    ld.set5_24ColumnReLDID(reLDID);
    ld.set5_25ColumnReLDNumber(reLDNumber);

  }

  private Vector getLuDuanNodes(Vector nodes) {
    Vector result = new Vector();

    return nodes;
  }

  public void save(File f) {
    ItemUse.saveFile(f, this.N);
  }

}

⌨️ 快捷键说明

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