如何根据纬度和经度计算多边形的面积?

6 python algorithm

我有以下方法来检查是否是points多边形

from shapely import wkt

def validate_polygon(points):
    try:
        wkt.loads("POLYGON((%s))" % points)
    except Exception as ex:
        raise WrongRequestDataError("Incorrect points format. " + str(ex))
Run Code Online (Sandbox Code Playgroud)

polygon如果面积大于 400 平方英里,如何计算并抛出异常?

我尝试检查一下:

polygon = wkt.loads("POLYGON((%s))" % "34.093523 -118.274893,34.091414 -118.275887,34.092082 -118.278062,34.093867 -118.276609,34.093523 -118.274893")
print(polygon.area)

4.406979500001112e-06
Run Code Online (Sandbox Code Playgroud)

但似乎答案不正确,或者该值使用什么类型的单位以及如何将其转换为平方英里或公里^2?

udo*_*udo 5

通常你会这样计算面积:

from shapely.geometry import Polygon
points = [(34.093523, -118.274893), (34.091414, -118.275887), (34.092082, -118.278062), (34.093867, -118.276609), (34.093523, -118.274893)]
polygon = Polygon(points)
# the area in square degrees
area_sdeg = polygon.area
Run Code Online (Sandbox Code Playgroud)

注意:对于以平方米为单位的面积计算,您必须使用https://gist.github.com/robinkraft/c6de2f988c9d3f01af3c中所述的投影