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

📄 fillrow.java

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

import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.txt.ld;
import net.aetherial.gis.surface.ItemValue;
import java.text.DecimalFormat;
import java.util.Vector;
import java.util.Hashtable;
import org.w3c.dom.Node;
import java.util.Enumeration;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.excel.ReadAdder;
import net.aetherial.gis.jiaotongbu.output.publicuse.Item;
import net.aetherial.gis.output.toLd.bianma.CreateBianma;
import java.util.StringTokenizer;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    LXBEPoint;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.gpsdata.lxld.lx.
    Depart;
import org.w3c.dom.NodeList;
import net.aetherial.gis.dataType.TrackType;
import java.io.File;
import net.aetherial.gis.jiaotongbu.outputJTB.txtOutput.module.txt.ItemUse;
import net.aetherial.gis.output.toTable.readglj.ReadAll;
import net.aetherial.gis.output.toTable.readglj.LdRow;
import net.aetherial.gis.dataType.WptType;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class FillRow {
  String N = "";
  private ReadAdder adder = null;
  private String xianName = "";
  public FillRow(String xian) {
    this.xianName = xian;
  }

  private void readGljLuduan() {
    ReadAll rf = new ReadAll();
    rf.read();
  }

  public void getGPSLXData() {
    TxtElement txt = null;

    TxtElement qianLd = null;

    Enumeration keys = ItemValue.namedTracks.keys();
    java.text.DecimalFormat formater = new DecimalFormat("000");
    System.out.println("开始生成路段信息查询...");
    String grade = "";

    this.readGljLuduan();
    Vector xianLd = ReadAll.selectLdRow(this.xianName);


    Vector orderLuxian = this.getLuxianOrder();
    for (int o = 0; o < orderLuxian.size(); o++)
     {
      qianLd = null;
      txt = new TxtElement();
      String key = (String) orderLuxian.get(o);
      Vector nodes = (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) {
          grade = ItemValue.getTracksGrade( (Node) nodes.get(i));
          if (grade.equals(TrackType.Grade_XIAN) ||
              grade.equals(TrackType.Grade_XIANG)) {
//          record = new LXRecord(key, nodes);
//          be.setAllWpt(wpts);
            //        be.scanToGetBE();
//          record.setLXBEPoint(be);
            //        ld.setLuxianData(record);
            //        ld..setExcelReadMethod(this.adder);
            txt.setLxNumber( (String) ItemValue.numberedTracks.get(key));
            txt.setDanWeiName(adder.getDept());
            txt.setLxName(key);
            txt.setLicheng(ItemValue.getTracksStringDistance( (Node)
                nodes.get(i)));
            txt.setJishuDengji(ItemValue.getTracksT5( ( (Node) nodes.get(i))));
            String lumian = ItemValue.getTracksType( (Node) nodes.get(i));
            txt.setLumianLeixing(lumian);
            txt.setLumianKuandu(ItemValue.getTracksWidth( (Node) nodes.get(i)));
            txt.setLujiKuandu(ItemValue.getTracks_jitongbu_luji_With( (Node)
                nodes.get(i)));

            if (lumian.equals(TrackType.RS_D_bad)) {
              txt.setQingyuTongche("0");
            }
            else {
              txt.setQingyuTongche(ItemValue.getTracksStringDistance( (Node)
                  nodes.get(i)));
            }

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

            fillBEInfo( (Node) nodes.get(i), txt, qianLd);

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

             */
            this.fillChongFuLuDuan( (Node) nodes.get(i), txt, key, formater, i);

            String buildDateStr = ItemValue.getTracksT6( (Node) nodes.get(i));

            txt.setJianchengTime(getYearStr(buildDateStr));
            Node[] wpts = ItemValue.getTracksWaypoint( (Node) nodes.get(i));
            txt.setHanDongNum(getHandongNum(getHandong(wpts)));
            if (i == 0) {
              this.N = this.N + txt.getFirstRow() + "\r\n";
            }
            else {
              this.N = this.N + txt.getGeneralRow() + "\r\n";
            }
            qianLd = txt;

          }
        }
      } //(String) ItemValue.numberedTracks.get(key)
      Vector keyGljLd = ReadAll.selectedSameNumberLdRow(xianLd,
          (String) ItemValue.numberedTracks.get(key));
      for (int i = 0; i < keyGljLd.size(); i++) {
        if (i == 0) {
          this.N = this.N + ( (LdRow) keyGljLd.get(i)).getFirstRow() + "\r\n";
        }
        else {
          this.N = this.N + ( (LdRow) keyGljLd.get(i)).getGeneralRow() + "\r\n";
        }
      }

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

  }

  private Vector getLuxianOrder() {
    Enumeration keys = ItemValue.namedTracks.keys();
    Vector allkeys = new Vector();
    while (keys.hasMoreElements()) {
      allkeys.add( (String) keys.nextElement());
    }
    Vector orderkeys = new Vector();
    int tt = allkeys.size();
    for (int i = 0; i < tt; i++) {
      orderkeys.add(getfisrtKey(allkeys));
    }
    return orderkeys;
  }

  private String getfisrtKey(Vector keys) {
    String key = "";
    for (int i = 0; i < keys.size(); i++) {
      if (key.equals("")) {
        key = keys.get(i) + "";
      }
      else if (this.isKeyNext(keys.get(i) + "", key)) {
        key = keys.get(i) + "";
      }
    }
    keys.remove(key);
//    System.out.println("" + key);
    return key;
  }

//  private Vector insertIntoOrderKeys(Vector orderkeys, String key) {
//    boolean isNext = false;
//    key = key.toUpperCase();
//    for (int i = 0; i < orderkeys.size(); i++) {
//      if (orderkeys) {
//
//      }
//    }
//
//  }

  private boolean isKeyNext(String keyref, String key) {
    keyref = keyref.toUpperCase();
    key = key.toUpperCase();
    if (key.indexOf("X") != -1 && keyref.indexOf("Y") != -1) {
      return false;
    }
    else if (key.indexOf("Y") != -1 && keyref.indexOf("X") != -1) {
      return true;
    }

    else if (key.indexOf("X") != -1 && keyref.indexOf("X") != -1) {
      long keyNumber = 0L;
      long keyrefNumber = 0L;
      try {
        keyNumber = Long.parseLong(key.substring(1, 4));
        keyrefNumber = Long.parseLong(keyref.substring(1, 4));
      }
      catch (NumberFormatException ex) {
      }
      if (keyNumber > keyrefNumber) {
        return true;
      }
      else {
        return false;
      }
    }
    else if (key.indexOf("Y") != -1 && keyref.indexOf("Y") != -1) {
      long keyNumber = 0L;
      long keyrefNumber = 0L;
      try {
        keyNumber = Long.parseLong(key.substring(1, 4));
        keyrefNumber = Long.parseLong(keyref.substring(1, 4));
      }
      catch (NumberFormatException ex1) {
      }
      if (keyNumber > keyrefNumber) {
        return true;
      }
      else {
        return false;
      }
    }
    else {
      return false;
    }

  }

  private Node[] getHandong(Node[] wpts) {
    Vector temp = new Vector();
    for (int i = 0; wpts != null && i < wpts.length; i++) {
      if (ItemValue.getWaypointKP(wpts[i]).equals(WptType.W5HanDong)) {
        temp.add(wpts[i]);
      }
    }
    wpts = new Node[temp.size()];
    temp.copyInto(wpts);
    return wpts;
  }

  private String getHandongNum(Node[] handongs) {
    if (handongs == null) {
      return "0";
    }
    else {
      return handongs.length + "";
    }
  }

  /**
   * 将航迹的首尾连接起来
   */
  private void fillBEInfo(Node luDuan, TxtElement txt, TxtElement qianLd) {
    Node[] wpts = null; //ItemValue.getTracksWaypoint(luDuan);
//    if (wpts == null || wpts.length < 2) {
    wpts = ItemValue.getWaypoint();

    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) {
      txt.setLdQIdianName(qianLd.getLdZhidianName());
      txt.setLdQidianZhuanghao(qianLd.getLdZhidianZhuanghao());
    }
    else {

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

      txt.setLdQIdianName(ItemValue.getWaypointName(begin));
      txt.setLdQidianZhuanghao("0");
    }

    Node end = be.getEPoint();

    txt.setLdZhidianName(ItemValue.getWaypointName(end));

    double length = ItemValue.getTracksDistance(luDuan) / 1000;
    double total = Double.parseDouble(txt.getLdQidianZhuanghao());

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

    txt.setLdZhidianZhuanghao(formater.format(length + total));
  }

  private String fillChongFuLuDuan(Node trk, TxtElement txt, String key,
                                   java.text.DecimalFormat formater, 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();
        txt.setLdNumber( (String) ItemValue.numberedTracks.get(key) +
                        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(reNumber, txt);
        }
        /**
         * 如果航迹的路段标记不为4段,则表示无重复路段
         * "Y002||003"
         * "Y002||003||CanNotBeCut"
         */
        else {
          fillChongFuLuDuan("", txt);
        }

        /**
         * 是否断头路
         */

//        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)) {
          txt.setIsDuantou("是");
        }
        else {
          txt.setIsDuantou("否");
        }
        return ldNumber;
      }

    }
    /**
     * 如果是村道
     */
    else {
      ldNumber = formater.format(i + 1);
      /**
       * 设置路段编码
       */

      txt.setLdNumber( (String) ItemValue.numberedTracks.get(key) +
                      formater.format(i + 1));
      /**
       * 是否断头路
       */
      txt.setIsDuantou("否");

      return ldNumber;
    }

  }

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

  private void fillChongFuLuDuan(String reLDNumber, TxtElement txt) {
    txt.setRepeatLxNumber(reLDNumber);
  }

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

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

}

⌨️ 快捷键说明

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