Simple gis data calculation
Distance module add ability calculation distance between two points
<?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
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);
}
- Round
SettingsKeys::ROUND
set integer value 1,2,3...n - Metric
SettingsKeys::METRIC
set value from selectMetric::CENTIMETERS
orMetric::KILOMETERS
The gis module with the ability to quickly find the desired points in the circle along the radius
// 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
}
The intersection module can easily determine if two lines intersect
// 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
}
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
....