monster3d / gis-calculator
Simple gis calculator
v1.1.1.000
2019-08-03 06:22 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-08-29 05:12:33 UTC
README
Description
Simple gis data calculation
Feature
Distance:
Distance module add ability calculation distance between two points
Use:
<?php // include a autoloader include "vendor/autoload.php"; // Use main facade $gitCalculator = new \GisCalculator\GisCalculator(); // Use simple point builder $pointA = \GisCalculator\GisCalculator::makePoint(56.836341, 60.621788); $pointB = \GisCalculator\GisCalculator::makePoint(56.827314, 60.625178); $distance = $gitCalculator->getDistance($pointA, $pointB); //** $distance float 750.8 */
Warning: metric system uses meters as default
Settings
If need change default settings this module
Go way:
// Use main facade $gitCalculator = new \GisCalculator\GisCalculator(); // Call target module by name $distance = $gitCalculator->getModule('distance'); if (null !== $distance) { //Get private setting manager $setting = $distance->getSetting(); //Add setting key 'round' value 3 $setting->setValue(\GisCalculator\Core\SettingsKeys::ROUND, 3); }
Support settings
- Round
SettingsKeys::ROUND
set integer value 1,2,3...n - Metric
SettingsKeys::METRIC
set value from selectMetric::CENTIMETERS
orMetric::KILOMETERS
Gis With:
The gis module with the ability to quickly find the desired points in the circle along the radius
Use:
// Use main facade $gitCalculator = new \GisCalculator\GisCalculator(); // Create center point $center = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); // Create search point $point = \GisCalculator\GisCalculator::makePoint(56.830160, 60.630271); // Create need search radius = 10 km $radius = \GisCalculator\GisCalculator::makeRadius(10, \GisCalculator\Core\Metric::KILOMETERS); // Search point in radius $search = $gitCalculator->gisWithPointInRadius($center, $point, $radius); if ($search) { print_r('Ok, point enters radius'); } // Can aslo use collection $center = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); $point1 = \GisCalculator\GisCalculator::makePoint(56.830160, 60.630271); $point2 = \GisCalculator\GisCalculator::makePoint(56.826579, 60.637781); $point3 = \GisCalculator\GisCalculator::makePoint(56.662034, 60.434503); // Create collection $pointCollection = new \GisCalculator\Element\CollectionPoints(); $pointCollection ->setPoint($point1) ->setPoint($point2) ->setPoint($point3); // Radius can use any metrict km, cm and etc... $radius = \GisCalculator\GisCalculator::makeRadius(10, \GisCalculator\Core\Metric::KILOMETERS); $searchPoints = $gitCalculator->gisWithCollectionInRadius($center, $radius, $pointCollection); foreach($searchPoints as $point) { // Give all points that were found in radius }
Intersect:
The intersection module can easily determine if two lines intersect
Use:
// Use main facade $gitCalculator = new \GisCalculator\GisCalculator(); // Create point A as from $pointA1 = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); // Create point A as to $pointA2 = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); // Create point B as from $pointB1 = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); // Create point B as to $pointB2 = \GisCalculator\GisCalculator::makePoint(56.830794, 60.636087); // Run main facade method $intersect = $gisCalculator->findGisPointIntersection($pointA1, $pointA2, $pointB1, $pointB2); if (null !== $intersect) { // This point where there was an intersection or null }
Require this package with Composer
Install this package through Composer. Edit your project's composer.json file to require monster3d/gis-calculator
composer.json
{ "name": "yourproject/yourproject", "type": "project", "require": { "monster3d/gis-calculator": "*" } }
Or command line
composer require monster3d/gis-calculator
Contribution
....