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

📄 readtrk.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 JAVA
字号:
package net.aetherial.gis.database.readFile;

import java.io.*;
import net.aetherial.gis.database.access.Connect;
import java.sql.*;

public class ReadTrk { //这个类的作用是从经纬通里提取航迹数据
  File f = null;
  //
  public String tracksName;
  public int tracksNum;
  public String trackPointName;
  public double lat, lon,alt;

  //
  public ReadTrk(String filePath) {
    f = new File(filePath);
  }

  public void read() { //读取文件,并输出到控制台
    try {
      Connect c = new Connect();
      Statement sql = c.getStatement();
      String sqlString ="";
      int ID=0;
      ResultSet rs = null;
      FileReader fr = new java.io.FileReader(f);
      BufferedReader br = new BufferedReader(fr);
      String line = "";
      int row = 0, start = 10;
      java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
      while (true) {
        if ( (line = br.readLine()) == null) {
          break;
        }
        if (row >= start) {
          line = line.trim();
          //=======================================这里写把此句分开的程序
          if (line.startsWith("\"")) { //如果以"号开头,说明是航迹名
            //System.out.println(line + "    //tracks name,length:" + line.length());
            this.getName(line);
            sqlString = "INSERT INTO tracks_name(name,addin,num) VALUES('" + this.tracksName +
            "','" +sqlDate+"',"+ this.tracksNum +")";
            sql.executeUpdate(sqlString);
            sqlString = "select * from tracks_name order by ID desc";
            rs= sql.executeQuery(sqlString);
            rs.next();
            ID = rs.getInt("ID");
          }
          else {
            //System.out.println(line + "    //tracks point,length:" +line.length());
            this.getPoint(line);
            sqlString = "INSERT INTO tracks_point(name,lat,lon,alt,tracks_name) VALUES('" + this.trackPointName +
            "','"+this.lat+"','" + this.lon +"','"+this.alt+"',"+ID+")";
            sql.executeUpdate(sqlString);
          }
        }
        //========================================
        row++;
      }
      c.setConnClose();
      fr.close();
      br.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void getName(String str) { //"04-08-27 1", 138
    String temp = str.substring(str.indexOf("\"") + 1);
    String name = temp.substring(0, temp.indexOf("\"")); //name
    temp = str.substring(str.indexOf(",") + 1, str.length());
    int num = Integer.parseInt(temp.trim()); //num
    System.out.println("Tracks name:\"" + name + "\",Tracks num:" + num);
    this.tracksName = name;
    this.tracksNum = num;
  }

  public void getPoint(String str) { //T N N3182.08265 E11731.02522 1899-12-29 4:00:00 00013
    String temp1 = str.substring(5, str.indexOf("E") - 1).trim();
    String temp2 = str.substring(str.indexOf("E") + 1, 29).trim();
    String temp3 = str.substring(29, 47).trim();
    String temp4 = str.substring(47, str.length()).trim();
    double lat = Double.parseDouble(temp1) / 100;
    double lon = Double.parseDouble(temp2) / 100;
    double alt = this.getAlt(temp4);
    System.out.println("lat:" + lat + ",lon:" + lon + ",name:" + temp3 +
                       ",alt:" + alt);
    this.trackPointName = temp3;
    this.lat = lat;
    this.lon = lon;
    this.alt = alt;
  }
  public double getAlt(String altString){
      int pos = altString.indexOf("-");
      if(pos == -1){//说明是正数
        return Double.parseDouble(altString);
      }else{
        altString =altString.substring(pos,altString.length());
        return Double.parseDouble(altString);
      }
    }
  public static void main(String args[]) {
    ReadTrk rt = new ReadTrk(
        "C:\\Documents and Settings\\Administrator\\桌面\\test2.trk");
    rt.read();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -