Python计算的面积值与实际值之间的差异

时间:2016-12-02 02:53:19

标签: python gis area shapely

我对Python计算区域的不准确性和实际值有疑问。我搜索了很多关于它但我没有找到任何东西。我担心这种差异使我的下一次计算不准确。 这是我用它计算半径为1.5的圆的面积的代码:

class Local::Class {
  has %.set is SetHash;
  submethod BUILD (:$set) {
    %!set{$set.SetHash.keys} = True xx *;
  }
}

我得到的结果是:

from shapely.geometry import Point, Polygon

a = Point(1, 1).buffer(1.5)

print (a.area)

但是半径为1.5的圆的面积的实际值是:

7.05723410373

有人可以为我解释这个差异吗?我应该更改计算机上的任何默认值吗? 此处还有我的计算机的pi()*(1.5^2) = 7.0685834705 值:

pi()

与实际import math print (math.pi) 值完全相同:

pi()

1 个答案:

答案 0 :(得分:1)

来自Shapely User Manual

object.buffer(distance, resolution=16, cap_style=1, join_style=1, mitre_limit=1.0)
    Returns an approximate representation of all points within a given distance of the this geometric object.

根据文档,返回的值只是一个近似值。文档中的更下面是一个圆圈示例:

The default (resolution of 16) buffer of a point is a polygonal patch with 99.8% of the area of the circular disk it approximates.

>>> p = Point(0, 0).buffer(10.0)
>>> len(p.exterior.coords)
66
>>> p.area
313.65484905459385

同样,文档声明它只是一个近似值。 7.068的99.8%,半径为1.5的实际值约为7.054,这是正在计算的值。

您可以通过传递更高的分辨率来提高准确度:

a = Point(1, 1).buffer(1.5, resolution=32)