📄 createbianma.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 + -