将GeoPHP getArea()值转换为平方公里或英亩

将GeoPHP getArea()值转换为平方公里或英亩,php,geojson,Php,Geojson,我正在使用来获取GeoJson多边形的面积 下面是我的函数 /** * gets the areas in acres for field geojson polygons * @return string */ public function polygon_area($json) { // get the geoPHP library require_once(__DIR__ . '/vendor/GeoPHP/geoPHP.inc'); // create

我正在使用来获取GeoJson多边形的面积

下面是我的函数

/**
 * gets the areas in acres for field geojson polygons
 * @return string
 */
public function polygon_area($json)
{

    // get the geoPHP library
    require_once(__DIR__ . '/vendor/GeoPHP/geoPHP.inc');

    // create the json array as string
    $geoJson = '{"type":"Polygon","coordinates":['.$json.']}';

    // create the polygon geoPHP object
    $polygon = geoPHP::load($geoJson,'json');

    // the area of the polygon
    $area = $polygon->getArea();

    // convert area into acres
    $acre = $area * 247.105;

    // return the geophp area
    return $area;

}
这是假设多边形json返回的面积为平方公里。但我不这么认为

请参见下面使用上述代码中的
$polygon->getArea()
函数返回的值

Area: 1.21816181142E-5
Area: 4.06926334051E-6
Area: 5.59853614135E-6                  
Area: 3.74998247921E-6         
Area: 5.91964048269E-6
Area: 2.50475049057E-6            
Area: 5.84341879772E-7
Area: 7.7207101441E-6
Area: 4.27298301986E-6
Area: 2.99669066806E-6
Area: 1.76724087666E-5
我不明白的是,这些面积是用什么计量单位计算的。有什么单位吗

当我转换成英亩,并且
四舍五入($acre,2)
值为零。这些多边形区域应为5-15英亩

有人知道如何将面积转换为英亩或平方公里吗


提前感谢。

GeoPHP将在面积计算中返回平方度。 看一看。它基于并添加了getSquareMeters()和getAcres()方法

在您的情况下,面积可以计算为:

// create the json array as string
$geoJson = '{"type":"Polygon","coordinates":['.$json.']}';

// create the polygon geoPHP object
$polygon = geoPHP::load($geoJson,'json');

// get the area in square meters
$areaSquareM = $polygon->getSquareMeters();

// convert to square kilometers
$areaSquareKm = $areaSquareM / 1000000;

// area in acres
$areaAcres = $polygon->getAcres();

注意:该库不支持多多边形类型,因此您必须循环几何图形并分别获取每个多边形的面积。

这看起来非常好!我只是在另一个atm项目上,但我会很快重新访问这个项目,并有和广告。谢谢你的洞察力。干杯