📄 cutbyzhuanghao.java
字号:
package net.aetherial.gis.jiaotongbu.input.analyse;
import net.aetherial.gis.output.toLd.cut.CutByNode;
import java.util.Vector;
import org.w3c.dom.Node;
import net.aetherial.gis.cutAndLink.cut.CutToSection;
import net.aetherial.gis.surface.ItemValue;
import net.aetherial.gis.output.toLd.cut.RelateWPTAfterCut;
import net.aetherial.gis.jiaotongbu.input.type.Luduan;
import net.aetherial.gis.cutAndLink.zhuanghao.Zhuanghao;
import net.aetherial.gis.jiaotongbu.input.publicuse.Permanence;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class CutByZhuanghao {
private Vector zhuanghaos = new Vector();
private Vector luduan = new Vector();
public CutByZhuanghao() {
}
//
// public void printZhuanghaos() {
// for (int i = 0; i < this.zhuanghaos.size(); i++) {
// if (i % 2 == 0) {
// System.out.println("");
// }
// System.out.print("\t" + ( (Zhuanghao)this.zhuanghaos.get(i)).getData());
// }
// }
//
// public void printLuduans() {
// for (int i = 0; i < this.luduan.size(); i++) {
// System.out.print( ( (Luduan)this.luduan.get(i)).getQidianScaleZhuanghao() +
// "\t" +
// ( (Luduan)this.luduan.get(i)).getZhidianScaleZhuanghao());
// }
// }
private void printLuduanZhuanghao(Zhuanghao qidian, Zhuanghao zhidian) {
String n = "";
n = n + "[桩号错误]\t";
n = n + "起点:" + qidian.getZhuanghaoName() + " " + qidian.getMeterData();
n = n + "止点:" + zhidian.getZhuanghaoName() + " " + zhidian.getMeterData();
Permanence.addLog(n);
}
public void cut(Node track) {
CutToSection cut = null;
Node newTrk = null;
Node[] allwpts = ItemValue.getWaypoint();
for (int i = 0; allwpts != null && i < allwpts.length; i++) {
ItemValue.setWaypointTracksID(allwpts[i], "-2");
}
AddZhuanghao create = new AddZhuanghao();
create.setCurrentTrk(track);
Node qidian = null;
Node zhidian = null;
boolean canRemoveInitTrk = true;
// this.printLuduans();
// this.printLuduans();
// System.exit(0);
// this.reInitZhuanghao(track);
for (int i = 0; i < zhuanghaos.size(); i++) {
/**
* 如果下个桩号存在
*/
if (i + 1 <= zhuanghaos.size() - 1) {
// Permanence.addLog("\tTrack distance = " +
// ItemValue.getTracksDistance(track));
qidian = create.createZhuanghaoNode( (Zhuanghao)this.zhuanghaos.get(i));
zhidian = create.createZhuanghaoNode( (Zhuanghao)this.zhuanghaos.get(i +
1));
if (qidian == null || zhidian == null) {
this.printLuduanZhuanghao( (Zhuanghao)this.zhuanghaos.get(i),
(Zhuanghao)this.zhuanghaos.get(i + 1));
if (qidian == null && zhidian == null) {
Permanence.addLog("\t起点\\止点均为null");
}
else if (qidian == null && zhidian != null) {
Permanence.addLog("\t起点为null");
}
else {
Permanence.addLog("\t止点为null");
}
canRemoveInitTrk = false;
}
else {
cut = new CutToSection();
cut.setStartEnd(qidian, zhidian); //?
cut.setTrack(track);
newTrk = cut.createNewDocNode();
this.initNewTrk(newTrk,
this.getZhuanghaoInLuduan( (Zhuanghao)this.zhuanghaos.
get(i), (Zhuanghao)this.zhuanghaos.get(i + 1)), allwpts);
ItemValue.setWaypointTracksID(qidian, ItemValue.getTracksID(newTrk));
ItemValue.setWaypointTracksID(zhidian, ItemValue.getTracksID(newTrk));
this.deleteDisOf0(newTrk);
}
}
}
if (zhuanghaos.size() >= 2 && canRemoveInitTrk) {
ItemValue.removeTrack(track);
/**
* 删除掉默认的航点,在切割航迹的时候是复制航点的。
*/
for (int i = 0; allwpts != null && i < allwpts.length; i++) {
ItemValue.removeWaypoint(allwpts[i]);
}
}
/**
* 肯定有剩余航迹段,该如何处理,是否生成一个新的GPS文件?
*/
}
private boolean deleteDisOf0(Node newTrack) {
double dis = ItemValue.getTracksDistance(newTrack);
if (dis == 0) {
ItemValue.removeTrack(newTrack);
return true;
}
else {
return false;
}
}
private void addZhuanghaos(Zhuanghao zh) {
if (this.zhuanghaos.size() == 0) {
this.zhuanghaos.add(zh);
}
else {
for (int i = 0; i < this.zhuanghaos.size(); i++) {
if (zh.isEquals( (Zhuanghao)this.zhuanghaos.get(i))) {
return;
}
}
this.zhuanghaos.add(zh);
}
}
private void initNewTrk(Node newTrack, Luduan luduan, Node[] waypoints) {
(new RelateWPTAfterCut()).relateWptToTrk(waypoints, newTrack);
if (luduan == null) {
return;
}
String lxBianhao = luduan.getLuduanBianhao().trim();
lxBianhao = lxBianhao.substring(0, 4);
String ldBianhao = luduan.getLuduanBianhao().trim();
ldBianhao = ldBianhao.substring(ldBianhao.length() - 3, ldBianhao.length());
String repeatLx = luduan.getChongfuluxian().trim();
if (!repeatLx.equals("")) {
repeatLx = repeatLx.substring(0, 4);
ItemValue.setTracks_ld_Number(newTrack,
lxBianhao + "||" + ldBianhao + "||" +
repeatLx);
}
else {
ItemValue.setTracks_ld_Number(newTrack, lxBianhao + "||" + ldBianhao);
}
ItemValue.setTracksT5(newTrack, luduan.getJishudengji());
ItemValue.setTracksType(newTrack, luduan.getMiancengleixing());
ItemValue.setTracksWidth(newTrack, luduan.getLumianKuandu());
ItemValue.setTracks_jitongbu_luji_With(newTrack, luduan.getLujiKuandu());
if (luduan.getShifouDuantou().trim().equals("是")) {
ItemValue.setTracks_ld_Number(newTrack,
ItemValue.
getTracks_ld_original_number(newTrack) +
"||capture");
}
String nianfen = luduan.getShijian().replaceAll("年", "");
ItemValue.setTracksT6(newTrack, "Sun Jan 01 00:00:00 CST " + nianfen);
ItemValue.setTracksName(newTrack, luduan.getLuxianJiancheng());
Permanence.addLog("[分段成功]\t" + ItemValue.getTracksName(newTrack) + "\t" +
luduan.getQidianMingcheng() + " -- " +
luduan.getZhidianMingcheng() + "\t" + ItemValue.getTracksStringDistance(newTrack) +"公里");
}
private Luduan getZhuanghaoInLuduan(Zhuanghao qidian, Zhuanghao zhidian) {
Luduan temp = null;
Zhuanghao zh = null;
boolean findQidian = false;
for (int i = 0; i < this.luduan.size(); i++) {
temp = (Luduan)this.luduan.get(i);
zh = new Zhuanghao();
zh.setData(temp.getQidianScaleZhuanghao());
zh.setZhuanghaoName_fuhe(temp.getQidianMingcheng());
if (qidian.getMeterData() == zh.getMeterData()) {
findQidian = true;
}
zh = new Zhuanghao();
zh.setData(temp.getZhidianScaleZhuanghao());
zh.setZhuanghaoName_fuhe(temp.getZhidianMingcheng());
// this.addZhuanghaos(zh);
if (findQidian && (zhidian.getMeterData() == zh.getMeterData())) {
return temp;
}
}
return null;
}
/**
*
*/
private void initZhuanghao() {
Luduan temp = null;
Zhuanghao zh = null;
for (int i = 0; i < this.luduan.size(); i++) {
temp = (Luduan)this.luduan.get(i);
zh = new Zhuanghao();
zh.setData(Double.parseDouble(temp.getQidianZhuanghao()));
zh.setZhuanghaoName_fuhe(temp.getQidianMingcheng());
zh.setData(temp.getQidianScaleZhuanghao());
this.addZhuanghaos(zh);
zh = new Zhuanghao();
zh.setData(Double.parseDouble(temp.getZhidianZhuanghao()));
zh.setZhuanghaoName_fuhe(temp.getZhidianMingcheng());
zh.setData(temp.getZhidianScaleZhuanghao());
this.addZhuanghaos(zh);
}
}
private void reInitZhuanghao(Node trk) {
Zhuanghao zh = null;
double max = 0.0, trkDis = ItemValue.getTracksDistance(trk);
for (int i = 0; i < this.zhuanghaos.size(); i++) {
zh = (Zhuanghao)this.zhuanghaos.get(i);
max = Math.max(max, zh.getMeterData());
}
if (max > trkDis) {
double scale = trkDis / max;
Vector temp = new Vector();
for (int i = 0; i < this.zhuanghaos.size(); i++) {
zh = (Zhuanghao)this.zhuanghaos.get(i);
zh.setData(zh.getData() * scale);
temp.add(zh);
}
this.zhuanghaos.removeAllElements();
for (int i = 0; i < temp.size(); i++) {
this.zhuanghaos.add(temp.get(i));
}
}
}
public void setLuduan(Vector luduan) {
this.luduan = luduan;
this.initZhuanghao();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -