GeokitPHP 地理工具包
Geokit 是一個(gè) PHP 工具包,用于解決與地理相關(guān)的任務(wù),例如:
- 距離計(jì)算。
- 航向、中點(diǎn)和終點(diǎn)計(jì)算。
- 矩形邊界框計(jì)算。
安裝
使用 Composer 安裝最新版本
composer require geokit/geokit
檢查 Packagist 頁(yè)面以獲取所有可用版本。
參考
距離
距離實(shí)例允許方便地表示距離測(cè)量單位。
use Geokit\Distance;
$distance = new Distance(1000); // Defaults to meters
// or
$distance = new Distance(1, Distance::UNIT_KILOMETERS);
$meters = $distance->meters();
$kilometers = $distance->kilometers();
$miles = $distance->miles();
$yards = $distance->yards();
$feet = $distance->feet();
$inches = $distance->inches();
$nauticalMiles = $distance->nautical();
距離也可以從帶有可選單位的字符串中創(chuàng)建。
use Geokit\Distance;
$distance = Distance::fromString('1000'); // Defaults to meters
$distance = Distance::fromString('1000m');
$distance = Distance::fromString('1km');
$distance = Distance::fromString('100 miles');
$distance = Distance::fromString('100 yards');
$distance = Distance::fromString('1 foot');
$distance = Distance::fromString('1 inch');
$distance = Distance::fromString('234nm');
位置
APosition是在x(或longitude)和y(或latitude)坐標(biāo)中表示地理位置的基本結(jié)構(gòu) 。
- 經(jīng)度范圍在 -180 度和 180 度之間,包括端值。高于 180 或低于 -180 的經(jīng)度被歸一化。例如,480、840 和 1200 都將歸一化為 120 度。
- 緯度范圍在 -90 度和 90 度之間(含)。高于 90 或低于 -90 的緯度被歸一化。例如,100 將歸一化為 80 度。
use Geokit\Position;
$position = Position::fromXY(181, 91);
$x = $position->x(); // Returns -179.0, normalized
$y = $position->y(); // Returns 89.0, normalized
邊界框
BoundingBox 實(shí)例表示地理坐標(biāo)中的一個(gè)矩形,包括一個(gè)跨越 180 度縱向子午線的矩形。
它由左下(西南)和右上(東北)角點(diǎn)構(gòu)成。
use Geokit\BoundingBox;
use Geokit\Position;
$southWest = Position::fromXY(2, 1);
$northEast = Position::fromXY(2, 1);
$boundingBox = BoundingBox::fromCornerPositions($southWest, $northEast);
$southWestPosition = $boundingBox->southWest();
$northEastPosition = $boundingBox->northEast();
$center = $boundingBox->center();
$span = $boundingBox->span();
$boolean = $boundingBox->contains($position);
$newBoundingBox = $boundingBox->extend($position);
$newBoundingBox = $boundingBox->union($otherBoundingBox);
使用expand()和shrink()方法,可以按一定距離擴(kuò)展或縮小 BoundingBox 實(shí)例。
use Geokit\Distance;
$expandedBoundingBox = $boundingBox->expand(
Distance::fromString('10km')
);
$shrinkedBoundingBox = $boundingBox->shrink(
Distance::fromString('10km')
);
評(píng)論
圖片
表情
