nasumilu / geometry
Component provides the basic geometry classes used in Geographical Information Systems (GIS).
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/nasumilu/geometry
Requires
- php: >=7.4 | 8.0
- doctrine/lexer: ^3.0.0
- symfony/serializer: ^7.0
Requires (Dev)
- phpunit/phpunit: 9.5.3
README
Description
nasumilu\geometry mostly provides an implementation of the OpenGISĀ® standards for geographic information, common architecture for PHP.
This component only provides a common framework used to develop platform specific implementation.
Basic usage
$options = [ '3d' => true, 'measured' => true, 'srid' => 3857 ]; $factory = new GeometryFactoryAdapter($options); $point = $factory->createPoint([ -93957413244860, -89692863500304, 58.464, 9863321.35 ]); echo $point->asText(); echo $point->asBinary(['hex_str' => true, 'endianness' => 'XDR']);
Output
POINTZM(-93957413244860 -89692863500304 58.464 9863321.35) 0000000bb9c2d55d0a8f63ef00c2d464cfd1240400404d3b645a1cac084162d0132b333333
Creating geometry from WKT
$point = $factory->create('POINTZM(-93957413244860 -89692863500304 58.464 9863321.35)'); echo $point->output('json', ['json_encode_options' => \JSON_PRETTY_PRINT]);
Output
{
"type": "point",
"binary_type": 1,
"crs": {
"srid": 3857,
"3d": true,
"measured": true,
"dimension": 4
},
"coordinates": [
-93957413244860,
-89692863500304,
58.464,
9863321.35
]
}
Download and Test
$ git clone git@github.com:nasumilu/geometry.git
$ cd geometry
$ composer update
$ cp phpunit.dist.xml phpunit.xml
$ vendor/bin/phpunit