📄 readtrk.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 + -