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