danmatthews / phpgpx
此包已被废弃,不再维护。没有建议的替代包。
一个简单的PHP库,用于从sibyx/phpgpx分叉的GPX导入/导出
1.0-RC1
2017-02-19 21:37 UTC
Requires
- php: >=5.4
- lib-libxml: *
Requires (Dev)
- phpunit/phpunit: 5.*
This package is auto-updated.
Last update: 2023-10-24 19:02:47 UTC
README
一个用PHP编写的简单库,用于读取和创建GPX文件。
该库目前被标记为候选版本,但已在多个项目中投入生产使用,没有任何问题。《文档》可通过GitHub页面生成的Jekyll访问。
欢迎贡献和反馈!请检查TODO事项。我将很高兴看到每个功能或拉取请求。
功能
- 完全支持官方规范。
- 统计计算。
- 扩展。
- JSON & XML & PHP Array 输出。
支持的扩展
统计计算
- 距离 (m)
- 平均速度 (m/s)
- 平均配速 (s/km)
- 最小/最大海拔 (m)
- 开始/结束 (DateTime对象)
- 持续时间 (秒)
示例
打开GPX文件并加载基本统计数据
<?php use phpGPX\phpGPX; $gpx = new phpGPX(); $file = $gpx->load('example.gpx'); foreach ($file->tracks as $track) { // Statistics for whole track $track->stats->toArray(); foreach ($track->segments as $segment) { // Statistics for segment of track $segment->stats->toArray(); } }
写入文件
<?php use phpGPX\phpGPX; $gpx = new phpGPX(); $file = $gpx->load('example.gpx'); // XML $file->save('output.gpx', phpGPX::XML_FORMAT); //JSON $file->save('output.json', phpGPX::JSON_FORMAT);
从头创建文件
<?php use phpGPX\Models\GpxFile; use phpGPX\Models\Link; use phpGPX\Models\Metadata; use phpGPX\Models\Point; use phpGPX\Models\Segment; use phpGPX\Models\Track; require_once '/vendor/autoload.php'; $sample_data = [ [ 'longitude' => 9.860624216140083, 'latitude' => 54.9328621088893, 'elevation' => 0, 'time' => new \DateTime("+ 1 MINUTE") ], [ 'latitude' => 54.83293237320851, 'longitude' => 9.76092208681491, 'elevation' => 10.0, 'time' => new \DateTime("+ 2 MINUTE") ], [ 'latitude' => 54.73327743521187, 'longitude' => 9.66187816543752, 'elevation' => 42.42, 'time' => new \DateTime("+ 3 MINUTE") ], [ 'latitude' => 54.63342326167919, 'longitude' => 9.562439849679859, 'elevation' => 12, 'time' => new \DateTime("+ 4 MINUTE") ] ]; // Creating sample link object for metadata $link = new Link(); $link->href = "https://sibyx.github.io/phpgpx"; $link->text = 'phpGPX Docs'; // GpxFile contains data and handles serialization of objects $gpx_file = new GpxFile(); // Creating sample Metadata object $gpx_file->metadata = new Metadata(); // Time attribute is always \DateTime object! $gpx_file->metadata->time = new \DateTime(); // Description of GPX file $gpx_file->metadata->description = "My pretty awesome GPX file, created using phpGPX library!"; // Adding link created before to links array of metadata // Metadata of GPX file can contain more than one link $gpx_file->metadata->links[] = $link; // Creating track $track = new Track(); // Name of track $track->name = sprintf("Some random points in logical order. Input array should be already ordered!"); // Type of data stored in track $track->type = 'RUN'; // Source of GPS coordinates $track->source = sprintf("MySpecificGarminDevice"); // Creating Track segment $segment = new Segment(); foreach ($sample_data as $sample_point) { // Creating trackpoint $point = new Point(Point::TRACKPOINT); $point->latitude = $sample_point['latitude']; $point->longitude = $sample_point['longitude']; $point->elevation = $sample_point['elevation']; $point->time = $sample_point['time']; $segment->points[] = $point; } // Add segment to segment array of track $track->segments[] = $segment; // Recalculate stats based on received data $track->recalculateStats(); // Add track to file $gpx_file->tracks[] = $track; // GPX output $gpx_file->save('CreatingFileFromScratchExample.gpx', \phpGPX\phpGPX::XML_FORMAT); // Serialized data as JSON $gpx_file->save('CreatingFileFromScratchExample.json', \phpGPX\phpGPX::JSON_FORMAT); // Direct GPX output to browser header("Content-Type: application/gpx+xml"); header("Content-Disposition: attachment; filename=CreatingFileFromScratchExample.gpx"); echo $gpx_file->toXML()->saveXML(); exit();
当前支持的输出格式
- XML
- JSON
安装
您可以使用composer轻松安装phpGPX库。
composer require sibyx/phpgpx
贡献者
- Jakub Dubec - 初始工作,维护
- Lukasz Lewandowski
我编写了这个库作为我在Backbone s.r.o.工作的一部分。
许可
此项目根据MIT许可条款授权。