在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:geokit开源软件地址:https://gitee.com/mirrors/geokit开源软件介绍:GeokitGeokit is a PHP toolkit to solve geo-related tasks like:
InstallationInstall the latest version with Composer. composer require geokit/geokit Check the Packagist page for allavailable versions. ReferenceDistanceA Distance instance allows for a convenient representation of a distance unit ofmeasure. 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(); A Distance can also be created from a string with an optional unit. 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'); PositionA Note, that
use Geokit\Position;$position = new Position(181, 91);$x = $position->x(); // Returns 181.0$y = $position->y(); // Returns 91.0$longitude = $position->longitude(); // Returns -179.0, normalized$latitude = $position->latitude(); // Returns 89.0, normalized BoundingBoxA BoundingBox instance represents a rectangle in geographical coordinates,including one that crosses the 180 degrees longitudinal meridian. It is constructed from its left-bottom (south-west) and right-top (north-east)corner points. 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); With the use Geokit\Distance;$expandedBoundingBox = $boundingBox->expand( Distance::fromString('10km'));$shrinkedBoundingBox = $boundingBox->shrink( Distance::fromString('10km')); The $polygon = $boundingBox->toPolygon(); PolygonA Polygon instance represents a two-dimensional shape of connected line segmentsand may either be closed (the first and last point are the same) or open. use Geokit\BoundingBox;use Geokit\Polygon;use Geokit\Position;$polygon = Polygon::fromPositions( Position::fromXY(0, 0), Position::fromXY(1, 0), Position::fromXY(1, 1));$closedPolygon = $polygon->close();/** @var Position $position */foreach ($polygon as $position) {}$polygon->contains(Position::fromXY(0.5, 0.5)); // true/** @var BoundingBox $boundingBox */$boundingBox = $polygon->toBoundingBox(); FunctionsGeokit provides several functions to perform geographic calculations. Distance calculations
use function Geokit\distanceHaversine;use function Geokit\distanceVincenty;$distance1 = distanceHaversine($from, $to);$distance2 = distanceVincenty($from, $to); Both functions return a Distance instance. TransformationsThe use Geokit\Distance;use Geokit\Position;use function Geokit\circle;$circlePolygon = circle( Position::fromXY(8.50207515, 49.50042565), Distance::fromString('5km'), 32); Other calculationsOther useful functions are:
LicenseCopyright (c) 2011-2022 Jan Sorgalla.Released under the MIT License. |
请发表评论