📄 extracttrackinfo.java
字号:
package net.aetherial.gis.our.auto.extend;
import net.aetherial.gis.our.auto.*;
import net.aetherial.gis.our.FrameOur;
import net.aetherial.gis.surface.ItemValue;
import java.io.File;
import java.util.regex.Pattern;
import org.w3c.dom.Node;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class ExtractTrackInfo
extends Auto {
int tracks = 0;
boolean all = false;
boolean none = true;
boolean part = false;
boolean empty = false;
double fuHeLiChen = 0.0;
double length = 0.0;
String[][] tracksInfo = new String[12][10];
public ExtractTrackInfo() {
super();
tracks = 0;
all = false;
none = true;
part = false;
empty = false;
fuHeLiChen = 0.0;
length = 0.0;
for (int i = 0; i < tracksInfo.length; i++) {
for (int j = 0; j < tracksInfo[i].length; j++) {
tracksInfo[i][j] = "";
}
}
}
public void extract(String[] args) {
//ExtractTrackInfo cp = new ExtractTrackInfo();
String kpType = "行政村|自然村|学校";
String gpsFolder = "F:\\新建文件夹\\cf";
if (args.length < 2) {
System.out.println("too few arguments");
//System.exit(0);
}
String input = args[0];
String output = args[1];
try {
setFrameOur(new FrameOur());
setInputDirectory(input);
// for (int i = 0; i < cp.input.length; i++) {
open(new File(input));
String outputName = output;
java.io.PrintStream bw = new java.io.PrintStream(new java.io.
FileOutputStream(
new File(output), true));
Node[] tracks = ItemValue.getTracks();
this.empty = (tracks == null) || (tracks.length == 0);
int xzcTracks = 0;
for (int t = 0; tracks != null && t < tracks.length; t++) {
Node currentTrk = tracks[t];
double orignalLength = 0;
String name = ItemValue.getTracksName(currentTrk);
if (name.indexOf("(拟建)") > -1) {
this.tracks++;
String startP = "", endP = "", keyP = "";
Node[] waypoints = null;
Node[] tempTracks = ItemValue.getTracks();
for (int s = 0; s < tempTracks.length; s++) {
if (name.indexOf(ItemValue.getTracksName(tempTracks[s])) > -1 &&
!name.equals(ItemValue.getTracksName(tempTracks[s]))) {
orignalLength = ItemValue.getTracksDistance(tempTracks[s]);
waypoints = ItemValue.getTracksWaypoint(tempTracks[s]);
break;
}
}
if (waypoints == null) {
waypoints = ItemValue.getTracksWaypoint(currentTrk);
}
Node[] xzc = null;
if (waypoints != null) {
xzc = ItemValue.getXingZCInWaypoint(waypoints);
}
String xzcStr = "";
for (int w = 0; xzc != null && w < xzc.length; w++) {
xzcStr += ItemValue.getWaypointName(xzc[w]) + ", ";
}
if (waypoints != null) {
if (waypoints.length > 2) {
startP = ItemValue.getWaypointName(waypoints[0]);
endP = ItemValue.getWaypointName(waypoints[waypoints.length - 1]);
for (int k = 1; k < waypoints.length - 1; k++) {
if (kpType.indexOf(ItemValue.getWaypointKP(waypoints[k])) > -1) {
keyP += ItemValue.getWaypointName(waypoints[k]) + ", ";
}
}
}
}
name = name.substring(0, name.indexOf("(拟建)"));
name = name
.replaceAll("村委会","村")
.replaceAll("行政村", "村")
.replaceAll("村支部","村")
.replaceAll("村委", "村")
.replaceAll("村部", "村");
xzcStr = xzcStr
.replaceAll("村委会","村")
.replaceAll("行政村", "村")
.replaceAll("村支部","村")
.replaceAll("村委", "村")
.replaceAll("村部", "村");
startP = startP
.replaceAll("村委会","村")
.replaceAll("行政村", "村")
.replaceAll("村支部","村")
.replaceAll("村委", "村")
.replaceAll("村部", "村");
endP = endP
.replaceAll("村委会","村")
.replaceAll("行政村", "村")
.replaceAll("村支部","村")
.replaceAll("村委", "村")
.replaceAll("村部", "村");
keyP = keyP
.replaceAll("村委会","村")
.replaceAll("行政村", "村")
.replaceAll("村支部","村")
.replaceAll("村委", "村")
.replaceAll("村部", "村");
bw.println(
"" +
args[2] + "\t" +
this.tracks + "\t" +
name + "\t" + //航迹名称
ItemValue.getTracksGrade(currentTrk) + "\t" + //公 路 性 质/行政等级
( (xzcStr.length() > 0) ? xzcStr : "无") + "\t" + //途经行政村名称
ItemValue.getTracksT5(currentTrk) + " \t" + //线路等级/技术等级
(orignalLength == 0 ? ItemValue.getTracksDistance(currentTrk) :
orignalLength) / 1000 + "\t" + // 测量长度
ItemValue.getTracksDistance(currentTrk) / 1000 + "\t" + //建设长度
ItemValue.getTracks_jitongbu_luji_With(currentTrk) + " \t" + //路基宽度
ItemValue.getTracksWidth(currentTrk) + " \t" + //路面宽度
ItemValue.getTracksType(currentTrk).replaceAll("砂石路", "砂石") +
"\t" + //路面类型
ItemValue.getTracksStatus(currentTrk) + "\t" + //路面现状
startP + "\t" + //起点
endP + "\t" + //终点
keyP + "" //主要控制点
);
if (xzcStr.length() > 0) {
xzcTracks++;
this.part = true;
this.fuHeLiChen += ItemValue.getTracksDistance(currentTrk) / 1000;
}
none = !all && !part && !empty;
if (this.tracks < tracksInfo[0].length) {
tracksInfo[0][this.tracks] = name;
tracksInfo[1][this.tracks] = ItemValue.getTracksT2(currentTrk);
tracksInfo[2][this.tracks] = ItemValue.getTracksGrade(currentTrk);
tracksInfo[3][this.tracks] = ( (xzcStr.length() > 0) ? xzcStr : "无");
tracksInfo[4][this.tracks] = ItemValue.getTracksT5(currentTrk);
tracksInfo[5][this.tracks] = "" +
ItemValue.getTracksStringDistance(currentTrk);
tracksInfo[6][this.tracks] = ItemValue.getTracks_jitongbu_luji_With(
currentTrk);
tracksInfo[7][this.tracks] = ItemValue.getTracksWidth(currentTrk);
tracksInfo[8][this.tracks] = ItemValue.getTracksType(currentTrk).
replaceAll("砂石路", "砂石");
tracksInfo[9][this.tracks] = startP;
tracksInfo[10][this.tracks] = endP;
tracksInfo[11][this.tracks] = keyP;
}
}
this.length += ItemValue.getTracksDistance(currentTrk) / 1000;
}
if (tracks != null && xzcTracks == tracks.length) {
all = true;
}
if(tracks != null && this.tracks == 0 && tracks.length > 0){
System.err.println(input+" contains "+ tracks.length +" tracks but no track specified as (拟建)");
}
}
catch (Exception ex) {
System.out.println(input);
ex.printStackTrace();
}
if (empty) {
all = part = none = false;
}
if (all) {
part = none = empty = false;
}
if (part) {
all = none = empty = false;
}
if (none) {
all = part = empty = false;
}
}
public static void main(String[] args) {
ExtractTrackInfo cp = new ExtractTrackInfo();
cp.extract(args);
}
public int getTracks() {
return tracks;
}
public boolean isPart() {
return part;
}
public boolean isNone() {
return none;
}
public double getLength() {
return length;
}
public boolean isAll() {
return all;
}
public String[][] getTracksInfo() {
return tracksInfo;
}
public boolean isEmpty() {
return empty;
}
public double getFuHeLiChen() {
return fuHeLiChen;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -