📄 trktoxml.java
字号:
package net.aetherial.gis.dataType;
import java.io.*;
import net.aetherial.gis.surface.DialogProgress;
public class TrkToXML {
private File trk = null;
String xml = "";
int row =0;
DialogProgress dp = null;
private boolean begin =false;
private int PointNum =0;
public String getXml() {
return xml;
}
public TrkToXML(File trkFile) {
this.trk = trkFile;
}
public TrkToXML(File trkFile,DialogProgress dp) {
this(trkFile);
this.dp = dp;
}
public void xmlString(){
xml = xml + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
xml = xml + "<GarminDataCollection>\r\n";
}
public BufferedReader getBufferedReader(File f){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(f));
}
catch (FileNotFoundException ex) {
}
return br;
}
private String readFile(File f) {
String content = "";
String line;
try {
//BufferedReader br = new BufferedReader(new java.io.FileReader(f));
FileInputStream in = new FileInputStream(f);
int l =Integer.parseInt(f.length()+"");
byte[] b = new byte[l];
int inttemp;
if(l>0){
while (true) {
if ( (inttemp = in.read(b)) == -1) {
break;
}
content = content + (line = new String(b, "GB2312"));
;
//dif.jTextArea1.append(line+"\n");
dp.jTextField1.setText(line);
//System.out.println(line);
}
}
//content=new String(content.getBytes("UTF-8"));
//System.out.println(content);
}
catch (Exception ex) {
ex.printStackTrace();
}
return content;
}
public void dealLine(String line){
row++;
if (line.startsWith("\"")) {
xml = xml + "<track>\r\n";
xml = xml + " <gml_name>" + line.substring(1, line.indexOf("\"", 1)).trim() +
"</gml_name>\r\n";
dp.jTextField1.setText(line.substring(1, line.indexOf("\"", 1)).trim());
xml = xml + " <gml_number> </gml_number>\r\n";
xml = xml + " <gml_grade> </gml_grade>\r\n";
xml = xml + " <gml_type> </gml_type>\r\n";
xml = xml + " <gml_width> </gml_width>\r\n";
xml = xml + " <gml_structure> </gml_structure>\r\n";
xml = xml + " <gml_status> </gml_status>\r\n";
xml = xml + " <gml_LineString>\r\n";
PointNum = Integer.parseInt(line.substring(line.indexOf(",") + 1,
line.length()).trim());
begin = true;
}
else if (begin == true) {
xml = xml + " <gml_coord>\r\n";
xml = xml + " <X>" +
Double.parseDouble(line.substring(line.indexOf("E") + 1,
line.indexOf("E") + 12)) / 100 +
"</X>\r\n";
dp.jTextField1.setText("<X>" +
line.substring(line.indexOf("E") + 1,
line.indexOf("E") + 12));
xml = xml + " <Y>" +
Double.parseDouble(line.substring(line.indexOf("N", 4) + 1,
line.indexOf("E") - 1)) / 100 +
"</Y>\r\n";
xml = xml + " <Z>" +
getZ(line.substring(line.length() - 5, line.length())) + "</Z>\r\n";
xml = xml + " <Time> </Time>\r\n";
xml = xml + " </gml_coord>\r\n";
PointNum--;
if (PointNum <= 0) {
xml = xml + " </gml_LineString>\n</track>\r\n";
}
}
}
public void refactory(boolean stream){
String line = "";
dp.jLabel1.setText("正在转换航迹....");
String content = this.readFile(trk);
int pos =0;
while(true){
pos = content.indexOf("\r\n");
if(pos!=-1){
line = content.substring(0,pos);
this.dealLine(line);
content = content.substring(pos+2,content.length());
}
else{
//line =content;
//this.dealLine(line);
break;
}
}
}
public void refactory(){
String line ="";
boolean begin =false;
int PointNum =0;
dp.jLabel1.setText("正在转换航迹....");
BufferedReader br = this.getBufferedReader(trk);
try {
while(true){
line = br.readLine();
if(line ==null)
break;
row++;
if(line.startsWith("\"")){
xml = xml + "<track>\r\n";
xml = xml + " <gml_name>" + line.substring(1,line.indexOf("\"",1)).trim() + "</gml_name>\r\n";
dp.jTextField1.setText(line.substring(1,line.indexOf("\"",1)).trim());
xml = xml + " <gml_number> </gml_number>\r\n";
xml = xml + " <gml_grade> </gml_grade>\r\n";
xml = xml + " <gml_type> </gml_type>\r\n";
xml = xml + " <gml_width> </gml_width>\r\n";
xml = xml + " <gml_structure> </gml_structure>\r\n";
xml = xml + " <gml_status> </gml_status>\r\n";
xml = xml + " <gml_LineString>\r\n";
PointNum = Integer.parseInt(line.substring(line.indexOf(",")+1,line.length()).trim());
begin = true;
}else if(begin==true){
xml = xml + " <gml_coord>\r\n";
xml = xml + " <X>"+Double.parseDouble(line.substring(line.indexOf("E")+1,line.indexOf("E")+12))/100+"</X>\r\n";
dp.jTextField1.setText("<X>"+line.substring(line.indexOf("E")+1,line.indexOf("E")+12));
xml = xml + " <Y>"+Double.parseDouble(line.substring(line.indexOf("N",4)+1,line.indexOf("E")-1))/100+"</Y>\r\n";
xml = xml + " <Z>"+getZ(line.substring(line.length()-5,line.length()))+"</Z>\r\n";
xml = xml + " <Time> </Time>\r\n";
xml = xml + " </gml_coord>\r\n";
PointNum--;
if(PointNum<=0){
xml = xml + " </gml_LineString>\n</track>\r\n";
}
}
}
}
catch (IOException ex) {
}
}
public int getZ(String str){
if(str.indexOf("-")==-1){
return Integer.parseInt(str);
}else{
return Integer.parseInt(str.substring(str.indexOf("-"),str.length()));
}
}
public static void main(String ats[]){
TrkToXML ttx = new TrkToXML(new File("D:\\GIS\\GPS测量数据\\包河\\经纬通地图\\all.trk"));
ttx.refactory();
System.out.println(ttx.xml);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -