monster3d/gis-calculator

简单的GIS计算器

v1.1.1.000 2019-08-03 06:22 UTC

This package is auto-updated.

Last update: 2024-08-29 05:12:33 UTC


README

Build Status codecov

描述

简单的GIS数据计算

特性

距离

距离模块添加了计算两点之间距离的能力

使用

<?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 */

警告:默认使用公制系统,单位为米

设置

如果需要更改此模块的默认设置

前往方式

    // 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);
    }

支持的设置

  • 四舍五入 SettingsKeys::ROUND 设置整数值 1,2,3...n
  • 公制 SettingsKeys::METRIC 从选择 Metric::CENTIMETERSMetric::KILOMETERS 设置值

GIS与

带有快速查找沿半径圆周上所需点的GIS模块的能力

使用

    // 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
    }

相交

相交模块可以轻松确定两条线是否相交

使用

    // 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
    }

使用Composer安装此包

通过Composer安装此包。编辑您的项目composer.json文件以要求monster3d/gis-calculator

composer.json

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "monster3d/gis-calculator": "*"
    }
}

或命令行

composer require monster3d/gis-calculator

贡献

....