kicken/osm-parser

解析 OSM 数据转储文件的库。

dev-master 2023-09-28 14:45 UTC

This package is auto-updated.

Last update: 2024-08-28 16:45:36 UTC


README

使用简单的迭代器接口解析 Open Street Map XML 或 PBF 文件。

示例

德克萨斯州奥斯汀的转储 中提取所有命名节点。

$iter = new Kicken\OSMParser\Parser\XML('Austin.osm');
foreach ($iter as $entity){
    if ($entity instanceof Kicken\OSMParser\Data\Node && $entity->getTag('name')){
        echo "\t", $entity->getTag('name'), ' @ (', $entity->getLat(), ',', $entity->getLon(), ')', PHP_EOL;
    }
}

资源需求

虽然 PBF 文件在磁盘上占用的空间较小,但解析它们需要 显著 更多的资源。我使用 PHP 8.2.3 和英特尔 i7-1260P 笔记本电脑上的示例代码测试了这两个解析器,并得到了以下结果

XML 格式快速且占用内存最少,因为它可以像发现它们一样流式传输,而不是一次性加载到内存中。如果使用原生扩展,PBF 格式也很快,但需要更多的内存,因为许多节点必须首先加载到内存中然后输出。没有原生扩展的 PBF 慢且占用大量内存,因此应避免使用。