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

📄 createbianma.java

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

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import net.aetherial.gis.surface.ItemValue;
import java.util.StringTokenizer;
import java.util.Vector;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class CreateBianma {
  public CreateBianma() {
  }

//  <gml_ldnumber>Y001||005</gml_ldnumber>
  public void initBM(Node[] trks) {
    if (trks == null) {
      return;
    }
    else {
      for (int i = 0; i < trks.length; i++) {
        ItemValue.setTracks_ld_Number(trks[i],
                                      ItemValue.getTracksNumber(trks[i]) + "||" +
                                      this.getLDNumber(i + 1));
      }
    }
  }

  //  <gml_ldnumber>Y001||005</gml_ldnumber>
  public void initBM(Vector trks) {
    if (trks == null) {
      return;
    }
    else {
      for (int i = 0; i < trks.size(); i++) {
        ItemValue.setTracks_ld_Number( (Node) trks.get(i),
                                      ItemValue.
                                      getTracksNumber( (Node) trks.get(i)) +
                                      "||" + this.getLDNumber(i + 1));
      }
    }
  }

  public boolean isTrackHasBeenBM(Node trk) {
    if (trk != null) {
      String ldBianma = ItemValue.getTracks_ld_original_number(trk).trim();
      if (ldBianma.equals("")) {
        return false;
      }
      else {
        if (ldBianma.indexOf("||") == -1) {
          return false;
        }else{
          return true;
        }
      }
    }
    else {
      return false;
    }
  }

  /**
   * <gml_ldnumber>Y001||005</gml_ldnumber>
   * return (Max+1) eg:"005" --> "006"
   * 返回最大+1的路段编码,而不返回路线编码
   */
  public String getNewLDNumber(Node[] trks) {
    int largest = 0;
    if (trks == null) {
      return getLDNumber(largest);
    }
    else {
      for (int i = 0; i < trks.length; i++) {
        largest = Math.max(largest,
                           getLDNumber(ItemValue.getTracks_ld_original_number(
            trks[i])));
      }
    }
    return getLDNumber(largest + 1);
  }

  /**
   * 取得同编号,编码最大+1的路线+路段编码
   */
  public String getSameLxsLxLdNewNumber(Node trk) {
    int temp = 0;
    String primalNumber = ItemValue.getTracksNumber(trk).trim();
    Node[] trks = ItemValue.getTracks();
    for (int i = 0; trks != null && i < trks.length; i++) {
      if (ItemValue.getTracksNumber(trks[i]).trim().equals(primalNumber)) {
        temp = Math.max(temp, Integer.parseInt(this.getLDNumber(trks[i])));
      }
    }
    temp++;
//    System.out.println("getSameLxsLxLdNewNumber:" + temp);
    return this.getLxLdNumber(trk, this.getLDNumber(temp));
  }

  protected void setBMToRepeatLD(Node source, Node target) {
    if (source == null || target == null) {
      return;
    }
    else {
      ItemValue.setTracks_ld_Number(source,
                                    ItemValue.getTracks_ld_original_number(
          source) + "||" +
                                    ItemValue.getTracks_ld_original_number(
          target));
      setToNotBeCut(target);
    }
  }

  /**
   * "Y002||003||Y009||001"
   * 如果是标准的重复路段编码,返回重复的值,eg:"Y009||001"
   * 否则,返回""
   */
  public String getRepeateLXLDNumber(String ldNumber) {
    if (ldNumber.equals("")) {
      return "";
    }
    if (ldNumber.indexOf("||") == -1) {
      return "";
    }

    StringTokenizer st = new StringTokenizer(ldNumber, "||");
    if (st.countTokens() != 4) {
      return "";
    }
    st.nextToken();
    st.nextToken();
    return st.nextToken() + "||" + st.nextToken();
  }

  /**
   * 设置航迹不能被切割
   */
  public void setToNotBeCut(Node trk) {
    String ldNumber = ItemValue.getTracks_ld_original_number(trk);
    if (ldNumber.equals("")) {
      return;
    }
    if (ldNumber.indexOf("||") == -1) {
      return;
    }

    StringTokenizer st = new StringTokenizer(ldNumber, "||");
    if (st.countTokens() != 4) {
      ItemValue.setTracks_ld_Number(trk, ldNumber + "||CanNotBeCut");
    }
  }

  /**
   * 设置航迹为断头路
   */
  public void setToRupture(Node trk) {
    String ldNumber = ItemValue.getTracks_ld_original_number(trk);
    if (ldNumber.equals("")) {
      return;
    }
    if (ldNumber.indexOf("||") == -1) {
      return;
    }

    StringTokenizer st = new StringTokenizer(ldNumber, "||");
    if (st.countTokens() != 4) {
      ItemValue.setTracks_ld_Number(trk, ldNumber + "||Rupture");
    }
  }

  /**
   * 航迹是否是断头路
   */
  public boolean isTrackRupture(Node trk) {
    String ldNumber = ItemValue.getTracks_ld_original_number(trk);
    if (ldNumber.equals("")) {
      return false;
    }
    if (ldNumber.indexOf("||") == -1) {
      return false;
    }

    StringTokenizer st = new StringTokenizer(ldNumber, "||");
    if (st.countTokens() == 3) {
      st.nextToken();
      st.nextToken();
      if (st.nextToken().trim().equals("Rupture")) {
        return true;
      }
    }
    return false;

  }

  /**
   * 航迹是否能被切割
   */
  public boolean isTrackCanBeCut(Node trk) {
    String ldNumber = ItemValue.getTracks_ld_original_number(trk);
    if (ldNumber.equals("")) {
      return true;
    }
    if (ldNumber.indexOf("||") == -1) {
      return true;
    }

    StringTokenizer st = new StringTokenizer(ldNumber, "||");
    if (st.countTokens() != 2) {
      return false;
    }
    else {
      return true;
    }
  }

  private String getLxLdNumber(Node trk, String ldNumber) {
    return ItemValue.getTracksNumber(trk) + "||" + ldNumber;
  }

  /**
   * <gml_ldnumber>Y001||005</gml_ldnumber>
   * return 005;
   * 返回整数值得路段编号,如:005
   * 或者
   *
   */

  public String getLDNumber(Node trk) {
//    System.out.println("    ->" + ItemValue.getTracks_ld_original_number(trk));
    return this.getLDNumber(this.getLDNumber(ItemValue.
                                             getTracks_ld_original_number(trk)));
  }

  /**
   * <gml_ldnumber>Y001||005</gml_ldnumber>
   * return 5;
   * 返回整数值得路段编号,如:5
   *
   */
  private int getLDNumber(String lDNumber) {
    if (lDNumber.equals("")) {
      return 0;
    }
    if (lDNumber.indexOf("||") == -1) {
      return 0;
    }

    StringTokenizer st = new StringTokenizer(lDNumber, "||");
    st.nextToken();
    String number = "";
    try {
      number = st.nextToken();
    }
    catch (Exception ex) {
      number = "0";
    }
    return Integer.parseInt(number);
  }

  private String getLDNumber(int data) {
    if (data < 10) {
      return "00" + data;
    }
    else if (data < 100) {
      return "0" + data;
    }
    else {
      return "" + data;
    }
  }

  public static void main(String args[]) {
    CreateBianma cb = new CreateBianma();
    System.out.println(cb.getLDNumber(cb.getLDNumber(cb.getRepeateLXLDNumber(
        "Y002||003||Y009"))));
    System.out.println(cb.getLDNumber(cb.getLDNumber(cb.getRepeateLXLDNumber(
        "Y002||003||Y009||098"))));
  }
}

⌨️ 快捷键说明

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