⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trktoxml.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 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 + -