kicken / osm-parser
解析 OSM 数据转储文件的库。
dev-master
2023-09-28 14:45 UTC
Requires
- php: ^8.0
Requires (Dev)
- ext-xmlreader: *
- google/protobuf: ^3.22
Suggests
- ext-xmlreader: Required for XML file parsing
- ext-zlib: Required for PBF files with compressed data.
- google/protobuf: Required for PBF file parsing
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 慢且占用大量内存,因此应避免使用。