将 GeoPHP getArea() 值转换为 km2 或 Acres
Convert GeoPHP getArea() values into km2 or Acres
我正在使用 GeoPHP 获取 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 返回的面积为平方公里。但我不这么认为。
查看下面使用上述代码的 GeoPHP $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
我不明白的是,使用GeoPHP计算这些面积是什么计量单位。有任何单位的文件吗?
当我转换为英亩时,round($acre, 2)
结果为零。这些多边形区域应在 5-15 英亩之间。
有谁知道如何将面积转换为英亩或平方公里?
提前致谢。
GeoPHP returns 面积计算中的平方度。
查看 https://github.com/spinen/laravel-geometry. It build upon phayes/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();
注意:该库不支持 MultiPolygon 类型,因此您必须循环几何并分别获取每个多边形的面积。
我正在使用 GeoPHP 获取 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 返回的面积为平方公里。但我不这么认为。
查看下面使用上述代码的 GeoPHP $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
我不明白的是,使用GeoPHP计算这些面积是什么计量单位。有任何单位的文件吗?
当我转换为英亩时,round($acre, 2)
结果为零。这些多边形区域应在 5-15 英亩之间。
有谁知道如何将面积转换为英亩或平方公里?
提前致谢。
GeoPHP returns 面积计算中的平方度。 查看 https://github.com/spinen/laravel-geometry. It build upon phayes/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();
注意:该库不支持 MultiPolygon 类型,因此您必须循环几何并分别获取每个多边形的面积。