文章最後更新於 2023 年 1 月 11 日
什麼是GPX?
GPX (GPS Exchange Format) 是一種用於交換 GPS 資料的標準格式,它是一個基於 XML 的開放標準。你可以使用各種程式語言來解析 GPX 檔案。下面是一些常用的方法:
- 在 Python 中,你可以使用 gpxpy 庫來解析 GPX 檔案。它是一個用於解析和生成 GPX 檔案的簡單工具,可以輕鬆地讀取、修改和寫入 GPX 檔案。
- 在 JavaScript 中,你可以使用 js-gpx 庫來解析 GPX 檔案。它是一個用於 JavaScript 的輕量級 GPX 解析器,可以在客戶端或服務器上使用。
- 在 Java 中,你可以使用 GpxParser 庫來解析 GPX 檔案.
如果你有足夠的 XML 基礎,可以使用 XML 解析庫來手動解析 GPX 文件。
如何解析GPX?
用 Python 解析 GPX 的範例
以下是使用 Python 和 gpxpy 庫解析 GPX 檔案的範例:
import gpxpy
# 讀取 GPX 檔案
with open('example.gpx', 'r') as gpx_file:
gpx = gpxpy.parse(gpx_file)
# 遍歷所有路徑和路徑記錄
for track in gpx.tracks:
for segment in track.segments:
for point in segment.points:
print('Point at ({0},{1}) -> {2}'.format(point.latitude, point.longitude, point.elevation))
# 遍歷所有標記
for waypoint in gpx.waypoints:
print('waypoint {0} -> ({1},{2})'.format(waypoint.name, waypoint.latitude, waypoint.longitude))
這個範例將解析給定的 GPX 檔案(這裡是 “example.gpx”),並遍歷其中的所有路徑、路徑記錄和標訖。 每個路徑記錄點的經緯度和海拔高度都會被列印出來。 每個標記的名稱、經緯度也會被列印出來。
你可以根據自己的需要更改這個範例。比如说你可以根據你需要的資訊來進行遍歷路徑記錄點和標記,進行資料處理.
另外,gpxpy 庫還提供了許多其他的功能來輕鬆地修改和寫入 GPX 檔案, 可以上gpxpy的github查看文件以及更多的範例。
用 JavaScript 解析 GPX 的範例
以下是使用 JavaScript 和 js-gpx 庫解析 GPX 檔案的範例:
const GPX = require('js-gpx');
const fs = require('fs');
// 讀取 GPX 檔案
const gpxData = fs.readFileSync('example.gpx', 'utf8');
// 解析 GPX 檔案
const gpx = new GPX(gpxData);
// 遍歷所有路徑和路徑記錄
gpx.tracks.forEach(track => {
track.segments.forEach(segment => {
segment.points.forEach(point => {
console.log(`Point at (${point.latitude}, ${point.longitude}) -> ${point.elevation}`);
});
});
});
// 遍歷所有標記
gpx.waypoints.forEach(waypoint => {
console.log(`waypoint ${waypoint.name} -> (${waypoint.latitude}, ${waypoint.longitude})`);
});
這個範例將解析給定的 GPX 檔案(這裡是 “example.gpx”),並遍歷其中的所有路徑、路徑記錄和標記。 每個路徑記錄點的經緯度和海拔高度都會被列印出來。 每個標記的名稱、經緯度也會被列印出來。
就如同 python 範例,你也可以根據自己的需要更改這個範例。 你可以根據你需要的資訊來進行遍歷路徑記錄點和標記,進行資料處理.
需要注意的是,在使用上述程式碼之前,需要先安裝 “js-gpx” 和 “fs” 這兩個library
npm install js-gpx fs
用 Java 解析 GPX 格式 的範例
以下是使用 Java 和 GpxParser 庫解析 GPX 檔案的範例:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import net.sf.gpxparser.GPXParser;
import net.sf.gpxparser.ParseException;
import net.sf.gpxparser.Parser;
import net.sf.gpxparser.Track;
import net.sf.gpxparser.TrackSegment;
import net.sf.gpxparser.gpx.GPX;
import net.sf.gpxparser.gpx.TrackPoint;
public class GPXReader {
public static void main(String[] args) throws Exception {
File gpxFile = new File("example.gpx");
InputStream inputStream = new FileInputStream(gpxFile);
GPXParser parser = new Parser();
GPX gpx = parser.parseGPX(inputStream);
//遍歷所有路徑和路徑記錄
List<Track> tracks = gpx.getTracks();
for (Track track : tracks) {
for (TrackSegment segment : track.getTrackSegments()) {
for (TrackPoint point : segment.getTrackPoints()) {
System.out.println("Point at (" + point.getLatitude() + ", " + point.getLongitude() + ") -> "
+ point.getElevation());
}
}
}
//遍歷所有標記
List<net.sf.gpxparser.gpx.Waypoint> waypoints = gpx.getWaypoints();
for (net.sf.gpxparser.gpx.Waypoint waypoint : waypoints) {
System.out.println("waypoint " + waypoint.getName() + " -> (" + waypoint.getLatitude() + ", "
+ waypoint.getLongitude() + ")");
}
}
}
這個範例會解析給定的 GPX 檔案(這裡是 “example.gpx”),並遍歷其中的所有路徑、路徑記錄和標記。 每個路徑記錄點的經緯度和海拔高度都會被列印出來。 每個標記的名稱、經緯度也會被列印出來。
就如同 python 範例,你也可以根據自己的需要更改這個範例。 你可以根據你需要的資訊來進行遍歷路徑記錄點和標記,進行資料處理。
需要注意的是,在使用上述程式碼之前,你需要先在項目中添加 GpxParser 庫的依賴。你可以透過 maven 或 gradle 來安裝它。
如果使用Maven:
<dependency>
<groupId>net.sf.gpxparser</groupId>
<artifactId>gpxparser</artifactId>
<version>1.4</version>
</dependency>
如果使用Gradle:
implementation 'net.sf.gpxparser:gpxparser:1.4'
希望這些範例對您有所幫助!
關於作者
- 我是Oscar (卡哥),前Yahoo Lead Engineer、高智商同好組織Mensa會員,超過十年的工作經驗,服務過Yahoo關鍵字廣告業務部門、電子商務及搜尋部門,喜歡彈吉他玩音樂,也喜歡投資美股、虛擬貨幣,樂於與人分享交流!
最新文章
- 2024 年 8 月 26 日Java如何在 Java Spring Boot 中輕鬆使用 @Cacheable 提高應用效能
- 2024 年 8 月 25 日技術文章新手必看:MongoDB 實用入門指南 – 從零開始學習 NoSQL 數據庫
- 2024 年 7 月 18 日未分類ChatGPT, Claude AI 進階提示詞技巧:掌握AI對話的藝術 (Prompt Engineering)
- 2024 年 6 月 11 日程式設計Java 中的 volatile
如果對文章內容有任何問題,歡迎在底下留言讓我知道。
如果你喜歡我的文章,可以按分享按鈕,讓更多的人看見我的文章。
網友留言