文章最後更新於 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 檔案的範例:
<pre class="wp-block-syntaxhighlighter-code">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 (<span class="katex math inline">{point.latitude},</span>{point.longitude}) -> <span class="katex math inline">{point.elevation}`);
});
});
});
// 遍歷所有標記
gpx.waypoints.forEach(waypoint => {
console.log(`waypoint</span>{waypoint.name} -> (<span class="katex math inline">{waypoint.latitude},</span>{waypoint.longitude})`);
});
</pre>
這個範例將解析給定的 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 的會員,擁有超過 15 年的軟體開發經驗。職涯中曾參與 Yahoo 關鍵字廣告、電子商務與搜尋相關專案,近年則在虛擬貨幣交易所專注於大數據與 AI 資料服務,帶領團隊開發具影響力的產品與解決方案。
在工作之外,我熱愛音樂,平時喜歡彈吉他、創作與演奏;運動方面偏好羽球、高爾夫球,也投入在美股與虛擬貨幣的投資領域。最享受的,是透過交流與分享,把知識與經驗轉化成更多可能性。
最新文章
- 2026 年 7 月 5 日高併發系統設計服務韌性設計模式:Bulkhead、RateLimiter 與更多
- 2025 年 10 月 12 日Scrum 方法論為什麼 Scrum 團隊會失敗?——從「儀式」回到「實戰」的長期觀察與修復手冊
- 2025 年 8 月 17 日軟體開發最佳實踐【軟體開發必讀】程式人生中的七大浪費:你是不是天天在做白工?
- 2025 年 2 月 8 日人工智能(AI)高效使用DeepSeek R1的7個核心技巧與地雷提示詞解析|2025實戰指南