loskoderos/gpx-php

dev-master 2023-06-27 16:12 UTC

This package is not auto-updated.

Last update: 2024-10-01 22:13:35 UTC


README

PHP的GPX库

这是什么?

GPX(GPS交换格式)是旅行/冒险/越野圈中共享GPS轨迹的事实上标准文件格式。该库包含一个GPX读取器和写入器,允许您在PHP应用程序中轻松处理GPX文件。

gpxphp.jpg

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