mbolli/php-geobuf 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mbolli/php-geobuf

最新稳定版本:v0.2.0

Composer 安装命令:

composer require mbolli/php-geobuf

包简介

PHP library for the geobuf compact geospatial format

README 文档

README

php-geobuf test suite Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

PHP library for the geobuf compact geospatial format.

This is essentially a PHP port of the great pygeobuf.

Geobuf stores GeoJSON 6-8 times smaller and TopoJSON 2-3 times smaller. Depending on the $precision attribute, lossless compression is possible. More information about Geobuf is available in the JS implementation or the Python implementation.

Quick size comparison: An example 745 kB GeoJSON was converted to a 90 kB Geobuf file – more than 8 times less.

Beware: Experimental state – it works for my purposes but there probably are some bugs.

Installation

composer require mbolli/php-geobuf

Usage

The following methods are exposed:

Encoder

  • encode() reads a JSON string. Returns a geobuf-encoded string
    • string $dataJson a JSON string
  • encodeToFile() reads a JSON string and writes to a file. Returns the filesize of the resulting file or false
    • string $filePath where to store the resulting geobuf file
    • string $dataJson a JSON string
  • encodeFileToBufFile() reads from a JSON file and writes to a file. Returns the filesize of the resulting file or false
    • string $jsonFile path to the JSON file
    • string $geobufFile where to store the resulting geobuf file
  • encodeFileToBuf() reads from a JSON file. Returns a geobuf-encoded string
    • string $fileName path to the JSON file

All encoding methods support the following two non-mandatory arguments:

  • int $precision max number of digits after the decimal point in coordinates, 6 by default (10 cm).
  • int $dim number of dimensions in coordinates, 2 by default.

Decoder

  • decodeToArray() returns a PHP array
    • string $encodedInput geobuf input
  • decodeFileToArray() returns a PHP array
    • string $fileName path to the geobuf file
  • decodeToJson() returns a JSON string
    • string $encodedInput geobuf input
  • decodeFileToJson() returns a JSON string
    • string $fileName path to the geobuf file
  • decodeFileToJsonFile() writes to a file and returns the filesize of the resulting JSON file or false
    • string $geobufFile path to the geobuf file
    • string $jsonFile where to store the resulting JSON file

Example

<?php require_once('./vendor/autoload.php'); $jsonFile = './my.geojson'; $geobufFile = basename($jsonFile) . '.geobuf'; try { // encodes a json string to geobuf $geobufString = \MBolli\PhpGeobuf\Encoder::encode( file_get_contents($jsonFile), // (string) a json string  6, // (int) precision: max number of digits after the decimal point in coordinates, 6 by default 2 // (int) dimensions: number of dimensions in coordinates, 2 by default. ); // decodes a geobuf file to json $jsonString = \MBolli\PhpGeobuf\Decoder::decodeToJson( file_get_contents($geobufFile) // (string) expects a geobuf string ) } catch (\MBolli\PhpGeobuf\GeobufException $e) { var_dump($e); } catch (\Throwable $e) { var_dump($e); }

Contribute

Pull requests are encouraged. Code style is enforced by PHP-CS-Fixer:

composer run lint # lint source files and show problems (read-only) composer run lint-diff # lint source files and show diff to the files fixed state (read-only) composer run fix # lint source files and fix the problems composer run test # execute all tests composer run analyse # run phpstan static analyzer

If the PR is about the Encoder or Decoder, please add a test JSON to the tests/geojson folder. The test suite will automatically pick it up and test it when executed.

Background: Proto compilation

Classes were generated by the proto compiler using this command:

bin/protoc --proto_path=src --php_out=build src/geobuf.proto

Used was this proto file, lightly modified from the mapbox/geobuf proto file for proto3 compatibility and automated namespace generation.

统计信息

  • 总下载量: 27.26k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: ISC
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固