phpgeo proporciona abstracciones de coordenadas geográficas (incluido soporte para diferentes elipsoides) y le permite calcular distancias geográficas entre coordenadas con alta precisión.
La versión mínima requerida de PHP es 8.1. phpgeo está probado hasta PHP 8.3.
Las nuevas características solo irán a la rama principal y no serán respaldadas.
Es posible instalar versiones anteriores de phpgeo para versiones anteriores de PHP. Consulte la siguiente tabla para ver la matriz de compatibilidad:
Versión PHP | Versión phpgeo | Estado de soporte | Instalación del compositor |
---|---|---|---|
8.3 | 5.x | activo | composer require mjaschen/phpgeo |
8.2 | 5.x | activo | composer require mjaschen/phpgeo |
8.1 | 5.x | activo | composer require mjaschen/phpgeo |
8.0 | 4.x | composer require mjaschen/phpgeo:^4.0 | |
7.4 | 4.x | composer require mjaschen/phpgeo:^4.0 | |
7.3 | 4.x | composer require mjaschen/phpgeo:^4.0 | |
7.2 | 3.x | fin de la vida | composer require mjaschen/phpgeo:^3.0 |
7.1 | 2.x | fin de la vida | composer require mjaschen/phpgeo:^2.0 |
7.0 | 2.x | fin de la vida | composer require mjaschen/phpgeo:^2.0 |
5.6 | 1.x | fin de la vida | composer require mjaschen/phpgeo:^1.0 |
5.5 | 1.x | fin de la vida | composer require mjaschen/phpgeo:^1.0 |
5.4 | 1.x | fin de la vida | composer require mjaschen/phpgeo:^1.0 |
La documentación está disponible en phpgeo.marcusjaschen.de.
Usando Composer, simplemente agrégalo a tu composer.json
ejecutando:
composer require mjaschen/phpgeo
Actualice la restricción de versión en el composer.json
del proyecto y ejecute composer update
o solicite la nueva versión ejecutando:
composer require mjaschen/phpgeo:^5.0
phpgeo tiene algunos cambios importantes en la línea de lanzamiento 5.x. Consulte la siguiente lista para ver qué ha cambiado y qué debe hacer para actualizar su código.
Cambiar | Descripción | Acción |
---|---|---|
Métodos setPoint1() y setPoint2() eliminados de Line | La clase Line ahora es inmutable. | Utilice el constructor para crear una nueva instancia de Line . |
se eliminó el soporte para PHP 7.3, 7.4 y 8.0 | Ya no se admiten versiones anteriores de PHP. | Actualice al menos a PHP 8.1. |
A partir de la versión 2.0.0, phpgeo tiene la licencia MIT. Las versiones anteriores tenían licencia GPL.
Información: Visite el sitio de documentación para obtener documentación completa y actualizada con muchos ejemplos.
phpgeo proporciona las siguientes características (siga los enlaces para ver ejemplos):
18° 54′ 41″ -155° 40′ 42″
)Esta lista está incompleta. Visite el sitio de documentación para obtener la cantidad completa de documentación y ejemplos.
Utilice el objeto calculadora directamente:
<?php
use Location Coordinate ;
use Location Distance Vincenty ;
$ coordinate1 = new Coordinate ( 19.820664 , - 155.468066 ); // Mauna Kea Summit
$ coordinate2 = new Coordinate ( 20.709722 , - 156.253333 ); // Haleakala Summit
$ calculator = new Vincenty ();
echo $ calculator -> getDistance ( $ coordinate1 , $ coordinate2 ); // returns 128130 . 850 (meters ; ≈ 128 kilometers)
o llame al método getDistance()
de un objeto Coordinate inyectando un objeto de calculadora:
<?php
use Location Coordinate ;
use Location Distance Vincenty ;
$ coordinate1 = new Coordinate ( 19.820664 , - 155.468066 ); // Mauna Kea Summit
$ coordinate2 = new Coordinate ( 20.709722 , - 156.253333 ); // Haleakala Summit
echo $ coordinate1 -> getDistance ( $ coordinate2 , new Vincenty ()); // returns 128130 . 850 (meters ; ≈ 128 kilometers)
Las polilíneas se pueden simplificar para ahorrar espacio de almacenamiento o ancho de banda. La simplificación se realiza con el algoritmo de Ramer-Douglas-Peucker (también conocido como algoritmo de Douglas-Peucker).
<?php
use Location Coordinate ;
use Location Polyline ;
use Location Distance Vincenty ;
$ polyline = new Polyline ();
$ polyline -> addPoint ( new Coordinate ( 10.0 , 10.0 ));
$ polyline -> addPoint ( new Coordinate ( 20.0 , 20.0 ));
$ polyline -> addPoint ( new Coordinate ( 30.0 , 10.0 ));
$ processor = new Simplify ( $ polyline );
// remove all points which perpendicular distance is less
// than 1500 km from the surrounding points .
$ simplified = $ processor -> simplify ( 1500000 );
// simplified is the polyline without the second point ( which
// perpendicular distance is ~ 1046 km and therefore below
// the simplification threshold)
phpgeo tiene una implementación de polígono que se puede utilizar para determinar si un punto está contenido en él o no. Un polígono consta de al menos tres puntos. Los puntos son instancias de la clase Coordinate
.
Advertencia: El cálculo da resultados incorrectos si los polígonos tienen puntos a ambos lados del meridiano de 180/-180 grados.
<?php
use Location Coordinate ;
use Location Polygon ;
$ geofence = new Polygon ();
$ geofence -> addPoint ( new Coordinate (- 12.085870 ,- 77.016261 ));
$ geofence -> addPoint ( new Coordinate (- 12.086373 ,- 77.033813 ));
$ geofence -> addPoint ( new Coordinate (- 12.102823 ,- 77.030938 ));
$ geofence -> addPoint ( new Coordinate (- 12.098669 ,- 77.006476 ));
$ outsidePoint = new Coordinate (- 12.075452 , - 76.985079 );
$ insidePoint = new Coordinate (- 12.092542 , - 77.021540 );
var_dump ( $ geofence -> contains ( $ outsidePoint )); // returns bool ( false ) the point is outside the polygon
var_dump ( $ geofence -> contains ( $ insidePoint )); // returns bool ( true ) the point is inside the polygon
Puede formatear una coordenada en diferentes estilos.
<?php
use Location Coordinate ;
use Location Formatter Coordinate DecimalDegrees ;
$ coordinate = new Coordinate ( 19.820664 , - 155.468066 ); // Mauna Kea Summit
echo $ coordinate -> format ( new DecimalDegrees ());
<?php
use Location Coordinate ;
use Location Formatter Coordinate DMS ;
$ coordinate = new Coordinate ( 18.911306 , - 155.678268 ); // South Point , HI , USA
$ formatter = new DMS ();
echo $ coordinate -> format ( $ formatter ); // 18° 54′ 41″ -155° 40′ 42″
$ formatter -> setSeparator ( " , " )
-> useCardinalLetters ( true )
-> setUnits ( DMS :: UNITS_ASCII );
echo $ coordinate -> format ( $ formatter ); // 18° 54' 41" N , 155° 40 ' 42" W
<?php
use Location Coordinate ;
use Location Formatter Coordinate GeoJSON ;
$ coordinate = new Coordinate ( 18.911306 , - 155.678268 ); // South Point , HI , USA
echo $ coordinate -> format ( new GeoJSON ()); // { " type " : " point " , " coordinates " : [ -155.678268, 18.911306 ] }
Antes de enviar una solicitud de extracción, asegúrese de ejecutar todas las comprobaciones y pruebas y asegurarse de que todo esté verde.
composer ci:lint
composer ci:psalm
composer ci:tests
Para ejecutar todas las comprobaciones y pruebas a la vez, simplemente use composer ci
.
Por supuesto, es posible utilizar los ejecutores de prueba directamente, por ejemplo, para PHPUnit:
./vendor/bin/phpunit
Salmo:
./vendor/bin/psalm
Es posible ejecutar toda la matriz de prueba de CI localmente con act :
act --rm -P ubuntu-latest=shivammathur/node:latest