📄 fileusejdom.java
字号:
package net.aetherial.gis.surface;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import net.aetherial.gis.garmin.*;
public class FileUseJDom {
private int cutCount = 0;
Element root = null;
Document d = null;
public long IDleast = 0;
public long IDlargest = 0;
//public FileUseJDom() {
//}
public FileUseJDom(FileReader fr) {
try {
Reader r = new BufferedReader(fr);
SAXBuilder builder = new SAXBuilder();
d = builder.build(r);
root = d.getRootElement();
}
catch (Exception e) {
e.printStackTrace();
}
}
public FileUseJDom(File f) {
try {
Reader r = new BufferedReader(new FileReader(f));
SAXBuilder builder = new SAXBuilder();
d = builder.build(r);
root = d.getRootElement();
}
catch (Exception e) {
e.printStackTrace();
}
}
public FileUseJDom(String content) {
try {
//Reader r = new BufferedReader(new FileReader(filePath));
StringReader sr = new StringReader(content);
SAXBuilder builder = new SAXBuilder();
d = builder.build(sr);
root = d.getRootElement();
}
catch (Exception e) {
e.printStackTrace();
}
}
public FileUseJDom(InputStream in) {
try {
//Reader r = new BufferedReader(new FileReader(filePath));
//StringReader sr = new StringReader(content);
SAXBuilder builder = new SAXBuilder();
d = builder.build(in);
root = d.getRootElement();
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 归纳的关于读取每项元素的方法
*/
private Element get_jihua_Element(Element track, String gml) {
Element e = null;
e = track.getChild(gml);
if (e == null) {
e = new Element(gml);
}
return e;
}
/**
* 读取航迹
*/
public void getTracks() {
ItemValue.idPairs = new Hashtable();
org.w3c.dom.Element e = null;
Element track = null;
Element trackName = null, number = null, id = null, grade = null, type = null,
width = null, structure = null, status = null, t1 = null, t2 = null, t3 = null,
t4 = null, t5 = null, t6 = null, t7 = null, construct = null,
jihua_licheng = null,
jihua_touzi = null, jihua_kaigong = null, jihua_wangong = null,
jihua_lumian = null, jihua_luji = null, jihua_leixing = null,
jihua_beizhu = null, jihua_bianhao = null, jihua_juli = null, yanghu = null,
lujiWith = null, gaijian = null, ldnumber = null;
Element trackPoints = null, aPoint = null;
Element x = null, y = null, z = null, time = null;
List tracks = root.getChildren("track");
List coords = null;
Iterator i = tracks.iterator();
Iterator j = null;
String idTemp = "";
long thisIdTemp = 0;
while (i.hasNext()) {
track = (Element) i.next();
//得到航迹的基本属性
trackName = track.getChild("gml_name");
number = track.getChild("gml_number");
id = track.getChild("gml_id");
if (id == null) {
id = new Element("gml_id");
}
{
idTemp = id.getTextTrim();
idTemp = idTemp.replaceAll("new", "");
if (idTemp.equals("")) {
idTemp = "" + 1;
}
thisIdTemp = Long.parseLong(idTemp);
if (this.IDleast == 0) {
this.IDleast = thisIdTemp;
}
else {
if (this.IDleast > thisIdTemp) {
this.IDleast = thisIdTemp;
}
}
if (this.IDlargest < thisIdTemp) {
this.IDlargest = thisIdTemp;
}
}
ItemValue.idPairs.put(id.getTextTrim(), "" + (ItemValue.tracksNum + 1));
t1 = track.getChild("gml_t1");
if (t1 == null) {
t1 = new Element("gml_t1");
}
t2 = track.getChild("gml_t2");
if (t2 == null) {
t2 = new Element("gml_t2");
}
t3 = track.getChild("gml_t3");
if (t3 == null) {
t3 = new Element("gml_t3");
}
t4 = track.getChild("gml_t4");
if (t4 == null) {
t4 = new Element("gml_t4");
}
t5 = track.getChild("gml_t5");
if (t5 == null) {
t5 = new Element("gml_t5");
}
t6 = track.getChild("gml_t6");
if (t6 == null) {
t6 = new Element("gml_t6");
}
t7 = track.getChild("gml_t7");
if (t7 == null) {
t7 = new Element("gml_t7");
}
ldnumber = track.getChild("gml_ldnumber");
if (ldnumber == null) {
ldnumber = new Element("gml_ldnumber");
}
construct = this.get_jihua_Element(track, "gml_construct");
jihua_licheng = this.get_jihua_Element(track, "gml_jihua_licheng");
jihua_touzi = this.get_jihua_Element(track, "gml_jihua_touzi");
jihua_kaigong = this.get_jihua_Element(track, "gml_jihua_kaigong");
jihua_wangong = this.get_jihua_Element(track, "gml_jihua_wangong");
jihua_lumian = this.get_jihua_Element(track, "gml_jihua_lumian");
jihua_luji = this.get_jihua_Element(track, "gml_jihua_luji");
jihua_leixing = this.get_jihua_Element(track, "gml_jihua_leixing");
jihua_beizhu = this.get_jihua_Element(track, "gml_jihua_beizhu");
jihua_bianhao = this.get_jihua_Element(track, "gml_jihua_bianhao");
jihua_juli = this.get_jihua_Element(track, "gml_jihua_juli");
//System.out.println("gml_id"+id.getTextTrim());
yanghu = this.get_jihua_Element(track, "gml_yanghu");
lujiWith = this.get_jihua_Element(track, "gml_lujiWith");
gaijian = this.get_jihua_Element(track, "gml_gaijian");
grade = track.getChild("gml_grade");
type = track.getChild("gml_type");
width = track.getChild("gml_width");
structure = track.getChild("gml_structure");
status = track.getChild("gml_status");
//
trackPoints = track.getChild("gml_LineString");
coords = trackPoints.getChildren("gml_coord");
j = coords.iterator();
if (!ItemValue.nianBao && ItemValue.baoBu) {
trackName.setText("[村道]" + trackName.getText());
number.setText("");
grade.setText("村道");
}
if (ItemValue.nianBao && ItemValue.ganXian) {
number.setText(ItemValue.ganXianName);
if (number.getTextTrim().length() > 1) {
if ("G".equalsIgnoreCase("" + number.getTextTrim().charAt(0))) {
grade.setText("国道");
}
if ("S".equalsIgnoreCase("" + number.getTextTrim().charAt(0))) {
grade.setText("省道");
}
if ("X".equalsIgnoreCase("" + number.getTextTrim().charAt(0))) {
grade.setText("县道");
}
if ("Y".equalsIgnoreCase("" + number.getTextTrim().charAt(0))) {
grade.setText("乡道");
}
}
}
//System.out.println("trackName:"+trackName.getTextTrim());
if (ItemValue.test == true) {
e = GarminGMLDoc.addXmlTrack(this.setNameToGPSMap(trackName.getTextTrim()),
(String) ItemValue.idPairs.get(id.
getTextTrim()), //id.getTextTrim(),
number.getTextTrim().replaceAll("g", "G").
replaceAll("s", "S").replaceAll("x", "X").
replaceAll("y", "Y").replaceAll("c", "C"),
ldnumber.getTextTrim(),
grade.getTextTrim(),
type.getTextTrim(),
width.getTextTrim(),
structure.getTextTrim(),
status.getTextTrim(),
t1.getTextTrim(),
t2.getTextTrim(),
t3.getTextTrim(),
t4.getTextTrim(),
t5.getTextTrim(),
t6.getTextTrim(),
t7.getTextTrim(),
construct.getTextTrim(),
jihua_licheng.getTextTrim(),
jihua_touzi.getTextTrim(),
jihua_kaigong.getTextTrim(),
jihua_wangong.getTextTrim(),
jihua_lumian.getTextTrim(),
jihua_luji.getTextTrim(),
jihua_leixing.getTextTrim(),
jihua_beizhu.getTextTrim(),
jihua_bianhao.getTextTrim(),
jihua_juli.getTextTrim(),
yanghu.getTextTrim(),
lujiWith.getTextTrim(),
gaijian.getTextTrim());
}
else {
e = GarminGMLDoc.addXmlTrack(trackName.getTextTrim().replaceAll(" ", "").
replaceAll("(", "(").replaceAll(")", ")"),
(String) ItemValue.idPairs.get(id.
getTextTrim()), //id.getTextTrim(),
number.getTextTrim().replaceAll("g", "G").
replaceAll("s", "S").replaceAll("x", "X").
replaceAll("y", "Y").replaceAll("c", "C"),
ldnumber.getTextTrim(),
grade.getTextTrim(),
type.getTextTrim(),
width.getTextTrim(),
structure.getTextTrim(),
status.getTextTrim(),
t1.getTextTrim(),
t2.getTextTrim(),
t3.getTextTrim(),
t4.getTextTrim(),
t5.getTextTrim(),
t6.getTextTrim(),
t7.getTextTrim(),
construct.getTextTrim(),
jihua_licheng.getTextTrim(),
jihua_touzi.getTextTrim(),
jihua_kaigong.getTextTrim(),
jihua_wangong.getTextTrim(),
jihua_lumian.getTextTrim(),
jihua_luji.getTextTrim(),
jihua_leixing.getTextTrim(),
jihua_beizhu.getTextTrim(),
jihua_bianhao.getTextTrim(),
jihua_juli.getTextTrim(),
yanghu.getTextTrim(),
lujiWith.getTextTrim(),
gaijian.getTextTrim());
}
ItemValue.tracksNum++;
while (j.hasNext()) {
aPoint = (Element) j.next();
//得到每个点的基本属性
x = aPoint.getChild("X");
y = aPoint.getChild("Y");
z = aPoint.getChild("Z");
time = aPoint.getChild("Time");
//
//System.out.println("x:"+x.getTextTrim()+",y:"+y.getTextTrim()+",z:"+z.getTextTrim()+",time:"+time.getTextTrim());
GarminGMLDoc.addXmlTrackPoint(e, Float.parseFloat(x.getTextTrim()),
Float.parseFloat(y.getTextTrim()),
Float.parseFloat(z.getTextTrim()),
time.getTextTrim());
}
}
}
public String setNameToGPSMap(String wptName) {
wptName = wptName.trim();
wptName = wptName.replace('(', '(');
wptName = wptName.replace(')', ')');
wptName = wptName.replace('/', '-');
wptName = wptName.replace('\\', '-');
wptName = wptName.replaceAll("--", "-");
return wptName;
}
public String autoNum(Element waypointName) {
if (ItemValue.cuting == true) {
return (cutCount++) + waypointName.getTextTrim();
}
else {
return waypointName.getTextTrim();
}
}
private Element get_wpt_element(Element e, Element coord, String gmlName) {
e = coord.getChild(gmlName); //TracksID
if (e == null) {
e = new Element("TracksID");
}
return e;
}
public void getWaypoints() throws Exception {
org.w3c.dom.Element e = null;
Element waypoint = null;
Element waypointName = null;
Element x = null, y = null, z = null, time = null, rs = null, rwa = null,
rwb = null, kp = null, id = null;
Element xzc = null, qiaoliang = null, suidao = null, dukou = null;
Element coord = null;
List waypoints = root.getChildren("waypoint");
Iterator i = waypoints.iterator();
while (i.hasNext()) {
waypoint = (Element) i.next();
waypointName = waypoint.getChild("gml_Point").getChild("gml_name");
coord = waypoint.getChild("gml_Point").getChild("gml_coord");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -