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