PHPackages                             franksierra/osm-pbf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. franksierra/osm-pbf

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

franksierra/osm-pbf
===================

Works with Open Street Map .osm.pbf compressed files.

1.0.4(2y ago)93.8k2[1 issues](https://github.com/franksierra/osm-pbf/issues)[1 PRs](https://github.com/franksierra/osm-pbf/pulls)MITPHPPHP &gt;=5.6CI failing

Since Jul 15Pushed 2y ago1 watchersCompare

[ Source](https://github.com/franksierra/osm-pbf)[ Packagist](https://packagist.org/packages/franksierra/osm-pbf)[ Docs](https://github.com/franksierra/osm-pbf)[ RSS](/packages/franksierra-osm-pbf/feed)WikiDiscussions master Synced yesterday

READMEChangelog (1)Dependencies (2)Versions (6)Used By (0)

OSM PBF (Open Street Map Protofol Buffer Files)
===============================================

[](#osm-pbf-open-street-map-protofol-buffer-files)

[![Software License](https://camo.githubusercontent.com/9cc14ca833d07b746a04751d9405b9a7901deead948731e44616098c89c8d27c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6672616e6b7369657272612f6f736d2d7062662e7376673f7374796c653d706f706f7574)](LICENSE.md)[![Latest Version on Packagist](https://camo.githubusercontent.com/23fcbaf0f0dcfa2b019f3be62bdeeab0e203286f1b5395ad0b108b04ecb3fbe7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6672616e6b7369657272612f6f736d2d7062662e7376673f7374796c653d706f706f7574)](https://packagist.org/packages/franksierra/osm-pbf)[![Total Downloads](https://camo.githubusercontent.com/bf1b287cc9666ca82a2106fbd3700628e7a01cad6ff2fa3cacc581c47d370f3d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6672616e6b7369657272612f6f736d2d7062662e7376673f7374796c653d706f706f7574)](https://packagist.org/packages/franksierra/osm-pbf)

This package gives you the ability to work with Open Street Maps Protocol Buffer Files , .osm.pbf. I get them from  and I haven't tried processing planet.osm

Installation
------------

[](#installation)

Require this package with composer.

```
composer require franksierra/osm-pbf
```

Usage
-----

[](#usage)

You can read osm.pbf files using the Reader class:

```
use OsmPbf\Reader;
```

Create a binary handle to the .osm.pbf file and pass it in the `Reader()` Constructor:

```
$file_handler = fopen("PathToFile.osm.pbf", "rb");
$pbfreader = new Reader($file_handler);
```

Call the function `readFileHeader()` to get some useful information about the file that is being read

```
$file_header = $pbfreader->readFileHeader();
```

Functions to get the boundaries box:

```
$file_header->getBbox()->getLeft();
$file_header->getBbox()->getBottom();
$file_header->getBbox()->getRight();
$file_header->getBbox()->getTop();
```

Functions to get replication information (WIP: Updating the dataset):

```
$file_header->getOsmosisReplicationTimestamp();
$file_header->getOsmosisReplicationSequenceNumber();
$file_header->getOsmosisReplicationBaseUrl();
```

Starting the data read: You could use the `skipToBlock($index)` function to start at any given index (Maybe resume a failed operation):

```
$pbfreader->skipToBlock(0);
while ($pbfreader->next()) {
    $elements = $pbfreader->getElements();
    $this->processElements($elements);
}
```

The function `processElements($elements)` should be your own implementation but could be something like this:

```
private function processElements($elements)
    {
        $type = $elements['type'];

        $records = [];
        $tags = [];
        $nodes = [];
        $relations = [];

        foreach ($elements['data'] as $element) {
            $insert_element = [
                'id' => $element['id'],
                'changeset_id' => $element['changeset_id'],
                'visible' => $element['visible'],
                'timestamp' => $element['timestamp'],
                'version' => $element['version'],
                'uid' => $element['uid'],
                'user' => $element['user'],
            ];
            if ($type == "node") {
                $insert_element["latitude"] = $element["latitude"];
                $insert_element["longitude"] = $element["longitude"];
            }
            if (isset($element["timestamp"])) {
                $insert_element["timestamp"] = str_replace("T", " ", $element["timestamp"]);
                $insert_element["timestamp"] = str_replace("Z", "", $element["timestamp"]);
            }
            $records[] = $insert_element;

            foreach ($element["tags"] as $tag) {
                $insert_tag = [
                    $type . "_id" => $element["id"],
                    "k" => $tag["key"],
                    "v" => $tag["value"]
                ];
                $tags[] = $insert_tag;
            }
            foreach ($element["nodes"] as $node) {
                $insert_node = [
                    $type . "_id" => $element["id"],
                    "node_id" => $node["id"],
                    "sequence" => $node["sequence"]
                ];
                $nodes[] = $insert_node;
            }

            foreach ($element["relations"] as $relation) {
                $insert_relation = [
                    $type . "_id" => $element["id"],
                    "member_type" => $relation["member_type"],
                    "member_id" => $relation["member_id"],
                    "member_role" => $relation["member_role"],
                    "sequence" => $relation["sequence"]
                ];
                $relations[] = $insert_relation;
            }
        }
    }
```

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity29

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~416 days

Total

5

Last Release

879d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4095810?v=4)[Frank Sierra](/maintainers/franksierra)[@franksierra](https://github.com/franksierra)

---

Top Contributors

[![franksierra](https://avatars.githubusercontent.com/u/4095810?v=4)](https://github.com/franksierra "franksierra (37 commits)")[![Cruiser13](https://avatars.githubusercontent.com/u/2771909?v=4)](https://github.com/Cruiser13 "Cruiser13 (1 commits)")

---

Tags

osmOpenStreetMapopen street mappbf

### Embed Badge

![Health badge](/badges/franksierra-osm-pbf/health.svg)

```
[![Health](https://phpackages.com/badges/franksierra-osm-pbf/health.svg)](https://phpackages.com/packages/franksierra-osm-pbf)
```

###  Alternatives

[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

85036.3k](/packages/flow-php-flow)[kenguest/services-openstreetmap

More information available at https://pear.php.net/package/Services\_OpenStreetMap

20341.5k](/packages/kenguest-services-openstreetmap)[jweiland/maps2

Maps2 - Create maps with Marker, Area, Routes or Radius based on Google Maps or OpenStreetMap

1595.0k19](/packages/jweiland-maps2)[mediawiki/maps

Adds various mapping features to MediaWiki

84152.3k3](/packages/mediawiki-maps)[gonoware/laravel-maps

Maps for your Laravel application

1728.0k](/packages/gonoware-laravel-maps)[clarifai/clarifai-php-grpc

Clarifai PHP gRPC client

1229.6k](/packages/clarifai-clarifai-php-grpc)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
