prezent/phpwktadapter

使用这个简单的WKT PHP适配器库,可以将2D、3D和4D WKT(Well Known Text)/ EWKT(Extended Well-Known Text)对象字符串解析为几何对象。

v1.1.0 2023-08-16 11:45 UTC

This package is auto-updated.

Last update: 2024-09-16 14:58:38 UTC


README

已知的文本(WKT)是一种用于在地图上表示矢量几何对象、空间对象的参考系统以及空间参考系统之间转换的文本标记语言。

EWKT(Extended Well-Known Text),一种PostGIS特定的格式,包括空间参考系统标识符(SRID)和最多4个坐标值(XYZM),也得到支持(例如:SRID=31370;POINT(44 60))。

PHPWKTParser 提供了一个简单的使用助手类来读取WKT和EWKT,并将这种文本表示解析为包含解析后的WKT/EWKT定义的工作PHP数组。使用这个简单的WKT PHP适配器库将2D、3D和4D WKT(Well Known Text)/ EWKT(Extended Well-Known Text)对象字符串解析为几何对象。

安装

通过 composer 安装该包

composer require daandesmedt/phpwktadapter

确保在代码库的某个地方包含 composer 自动加载器

支持的几何形状

PHPWKTParser解析并返回的几何数组响应

PHPWKTParser 适配器的 read($wkt) 函数将返回一个关联数组,作为解析后的WKT/EWKT(在有效的情况下)的表示。

array(
    // the geometry object type
    "type"      =>  string,
    // integer or float values for POINT - nested array (integer or float) for other geometry types
    "value"     =>  array,
    // integer representing the EWKT SRID, null when not present 
    "srid"      =>  integer | null,
    // string (Z, M or ZM) representing the dimension, null when not present 
    "dimension" =>  string | null
)

工作示例

工作示例可以在 examples 文件夹中找到。

示例用法

<?php 

require __DIR__ . '/../vendor/autoload.php';

use daandesmedt\PHPWKTAdapter\WKTAdapter;

$adapter = new WKTAdapter();
$res = $adapter->read('SRID=31370;POINT(30 10)');
var_dump($res); 

处理异常

指定的WKT / EWKT中的无效格式将导致 WKTAdapter 抛出 UnexpectedValueException

<?php 

require __DIR__ . '/../vendor/autoload.php';

use daandesmedt\PHPWKTAdapter\WKTAdapter;

$adapter = new WKTAdapter();

try {
    $res = $adapter->read('SRID=31370;POINT(bad format)');
} catch (UnexpectedValueException $e) {
    var_dump($e->getMessage());
}