phpgeo menyediakan abstraksi pada koordinat geografis (termasuk dukungan untuk ellipsoid berbeda) dan memungkinkan Anda menghitung jarak geografis antar koordinat dengan presisi tinggi.
Versi PHP minimum yang diperlukan adalah 8.1. phpgeo diuji hingga PHP 8.3.
Fitur baru hanya akan masuk ke cabang utama dan tidak akan di-backport.
Dimungkinkan untuk menginstal phpgeo versi lama untuk versi PHP yang lebih lama. Silakan lihat tabel berikut untuk matriks kompatibilitas:
Versi PHP | Versi phpgeo | Status Dukungan | Instal Komposer |
---|---|---|---|
8.3 | 5.x | aktif | composer require mjaschen/phpgeo |
8.2 | 5.x | aktif | composer require mjaschen/phpgeo |
8.1 | 5.x | aktif | 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 | akhir kehidupan | composer require mjaschen/phpgeo:^3.0 |
7.1 | 2.x | akhir kehidupan | composer require mjaschen/phpgeo:^2.0 |
7.0 | 2.x | akhir kehidupan | composer require mjaschen/phpgeo:^2.0 |
5.6 | 1.x | akhir kehidupan | composer require mjaschen/phpgeo:^1.0 |
5.5 | 1.x | akhir kehidupan | composer require mjaschen/phpgeo:^1.0 |
5.4 | 1.x | akhir kehidupan | composer require mjaschen/phpgeo:^1.0 |
Dokumentasi tersedia di phpgeo.marcusjaschen.de.
Menggunakan Composer, tambahkan saja ke composer.json
Anda dengan menjalankan:
composer require mjaschen/phpgeo
Perbarui batasan versi di composer.json
proyek dan jalankan composer update
atau minta versi baru dengan menjalankan:
composer require mjaschen/phpgeo:^5.0
phpgeo memiliki beberapa perubahan yang mengganggu pada baris rilis 5.x. Silakan merujuk ke daftar berikut untuk melihat apa yang berubah dan apa yang perlu Anda lakukan untuk meningkatkan versi kode Anda.
Mengubah | Keterangan | Tindakan |
---|---|---|
metode setPoint1() dan setPoint2() dihapus dari Line | Kelas Line sekarang tidak dapat diubah. | Gunakan konstruktor untuk membuat instance Line baru. |
menghapus dukungan untuk PHP 7.3, 7.4 dan 8.0 | Versi PHP lama tidak lagi didukung. | Tingkatkan ke setidaknya PHP 8.1. |
Dimulai dengan versi 2.0.0 phpgeo dilisensikan di bawah lisensi MIT. Versi yang lebih lama berlisensi GPL.
Info: Silakan kunjungi situs dokumentasi untuk dokumentasi lengkap dan terkini dengan banyak contoh!
phpgeo menyediakan fitur-fitur berikut (ikuti tautan untuk contoh):
18° 54′ 41″ -155° 40′ 42″
)Daftar ini tidak lengkap, silakan kunjungi situs dokumentasi untuk melihat dokumentasi dan contoh selengkapnya!
Gunakan objek kalkulator secara langsung:
<?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)
atau panggil metode getDistance()
pada objek Koordinat dengan memasukkan objek kalkulator:
<?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)
Polylines dapat disederhanakan untuk menghemat ruang penyimpanan atau bandwidth. Penyederhanaan dilakukan dengan algoritma Ramer – Douglas – Peucker (algoritma AKA 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 memiliki implementasi poligon yang dapat digunakan untuk menentukan apakah suatu titik terdapat di dalamnya atau tidak. Sebuah poligon terdiri dari setidaknya tiga titik. Poin adalah turunan dari kelas Coordinate
.
Peringatan: Perhitungan akan memberikan hasil yang salah jika poligon memiliki titik di kedua sisi meridian 180/-180 derajat.
<?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
Anda dapat memformat koordinat dalam gaya yang berbeda.
<?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 ] }
Sebelum mengirimkan permintaan penarikan, pastikan untuk menjalankan semua pemeriksaan dan pengujian dan memastikan semuanya berwarna hijau.
composer ci:lint
composer ci:psalm
composer ci:tests
Untuk menjalankan semua pemeriksaan dan pengujian sekaligus, cukup gunakan composer ci
.
Tentu saja, test runner dapat digunakan secara langsung, misalnya untuk PHPUnit:
./vendor/bin/phpunit
Mazmur:
./vendor/bin/psalm
Dimungkinkan untuk menjalankan seluruh matriks pengujian CI secara lokal dengan act :
act --rm -P ubuntu-latest=shivammathur/node:latest