loskoderos / gpx-php
PHP的GPX库
dev-master
2023-06-27 16:12 UTC
Requires
- php: >=7.4
- loskoderos/generic-php: dev-master
This package is not auto-updated.
Last update: 2024-10-01 22:13:35 UTC
README
PHP的GPX库
这是什么?
GPX(GPS交换格式)是旅行/冒险/越野圈中共享GPS轨迹的事实上标准文件格式。该库包含一个GPX读取器和写入器,允许您在PHP应用程序中轻松处理GPX文件。
GPX用于什么?一般来说,它是共享GPS设备记录的路线和轨迹的常用格式。在旅行时,您可以使用GPS设备持续记录您的当前位置,然后将该轨迹导出为GPX格式供其他软件使用或与他人分享。
关于GPX格式的更多信息:https://en.wikipedia.org/wiki/GPS_Exchange_Format http://www.topografix.com/GPX/1/1
安装
GPX-PHP仍在开发中,但如果您想尝试它,您可以使用Composer轻松安装。
composer config minimum-stability dev
composer require loskoderos/gpx-php:dev-master
读取GPX文件
示例代码用于读取GPX文件的文本内容并列出坐标点。
<?php use LosKoderos\GPX\GPXReader; require '../vendor/autoload.php'; $reader = new GPXReader(); $gpx = $reader->readFromFile('garmin.gpx'); foreach ($gpx->routes as $route) { echo sprintf("[%0.8f, %0.8f] %s\n", (float) $route->points[0]->latitude, (float) $route->points[0]->longitude, $route->name); }
写入GPX文件
该库包含表示GPX规范中找到的每个实体的模型。您可以通过逐个添加元素来创建GPX。
<?php use LosKoderos\GPX\GPXWriter; use LosKoderos\GPX\Model\GPX; use LosKoderos\GPX\Model\Track; use LosKoderos\GPX\Model\TrackSegment; use LosKoderos\GPX\Model\Waypoint; require '../vendor/autoload.php'; $gpx = new GPX(); $gpx->creator = 'gpx-php'; $segment = new TrackSegment(); $waypoint = new Waypoint(); $waypoint->latitude = 50.0583; $waypoint->longitude = 19.8006; $waypoint->time = new \DateTime("+1 minutes"); $segment->points->add($waypoint); $waypoint = new Waypoint(); $waypoint->latitude = 50.0584; $waypoint->longitude = 19.8007; $waypoint->time = new \DateTime("+2 minutes"); $segment->points->add($waypoint); $waypoint = new Waypoint(); $waypoint->latitude = 50.0588; $waypoint->longitude = 19.8009; $waypoint->time = new \DateTime("+3 minutes"); $segment->points->add($waypoint); $track = new Track(); $track->segments->add($segment); $gpx->tracks->add($track); $writer = new GPXWriter(); echo $writer->writeToFile($gpx, 'out.gpx');
创建GPX的另一种方法是简单地将GPX作为数组传递给写入器。
<?php use LosKoderos\GPX\GPXWriter; use LosKoderos\GPX\Model\GPX; require '../vendor/autoload.php'; const DATA = [ 'version' => '1.1', 'creator' => 'gpx-php', 'metadata' => [ 'name' => 'Sample track', 'author' => [ 'name' => 'Johnnie Walker', 'email' => ['id' => 'johnie', 'domain' => 'walker.tld'] ] ], 'tracks' => [ [ 'name' => 'Track 1', 'segments' => [ [ 'points' => [ [ 'latitude' => 50.0583, 'longitude' => 19.8006, 'time' => new \DateTime("+1 minutes") ], [ 'latitude' => 50.0584, 'longitude' => 19.8007, 'time' => new \DateTime("+2 minutes") ], [ 'latitude' => 50.0588, 'longitude' => 19.8009, 'time' => new \DateTime("+3 minutes") ], ] ] ] ] ] ]; $gpx = new GPX(DATA); $writer = new GPXWriter(); echo $writer->writeToString($gpx);
贡献
欢迎贡献,请提交一个pull请求。
许可
MIT