精华内容
下载资源
问答
  • python计算多边形面积

    2021-02-18 11:25:57
    本文提供一个简单的方法计算多边形面积,参考维基百科 实现代码: def polygon_area(polygon): """ compute polygon area polygon: list with shape [n, 2], n is the number of polygon points """ area = 0 ...

    本文提供一个简单的方法计算多边形面积,参考维基百科

    在这里插入图片描述

    实现代码:

    def polygon_area(polygon):
        """
        compute polygon area
        polygon: list with shape [n, 2], n is the number of polygon points
        """
        area = 0
        q = polygon[-1]
        for p in polygon:
            area += p[0] * q[1] - p[1] * q[0]
            q = p
        return area / 2.0
        
    polygon = np.array([[0, 0], [-1, 1], [0, 2], [1, 1]]).astype("float32")
    area = polygon_area(polygon)
    print(area)
    # 2.0
    
    展开全文
  • 最近业务上有一个需求,给出多边形面积。Google了一下,发现国内论坛给的算法都是你抄我我抄你,也不验证一下是否正确,然后传播到国内各个角落。。。真是无力吐槽了。直接纯英文Google。发现了一个非常快捷的面积...

    最近业务上有一个需求,给出多边形面积。

    Google了一下,发现国内论坛给的算法都是你抄我我抄你,也不验证一下是否正确,

    然后传播到国内各个角落。。。真是无力吐槽了。

    直接纯英文Google。发现了一个非常快捷的面积算法。直接附上链接

    L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMjAwMzU3LzIwMTkwMy8xMjAwMzU3LTIwMTkwMzEzMTY1NTEzOTg4LTE0MTMwMTM0NjIucG5n.jpg

    这个算法,算面积是不是就很简单了:

    def polygon_area(points):

    """返回多边形面积

    """

    area = 0

    q = points[-1]

    for p in points:

    area += p[0] * q[1] - p[1] * q[0]

    q = p

    return area / 2

    【改革春风吹满地 HDU - 2036 】【计算几何-----利用叉积计算多边形的面积】

    利用叉积计算多边形的面积 我们都知道计算三角形的面积时可以用两个邻边对应向量积(叉积)的绝对值的一半表示,那么同样,对于多边形,我们可以以多边形上的一个点为源点,作过该点并且过多边形其他点中的某一个的 ...

    利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

    poj 1265 Area【计算几何:叉积计算多边形面积+pick定理计算多边形内点数+计算多边形边上点数】

    题目:http://poj.org/problem?id=1265 Sample Input 2 4 1 0 0 1 -1 0 0 -1 7 5 0 1 3 -2 2 -1 0 0 -3 -3 1 0 ...

    js版根据经纬度计算多边形面积(墨卡托投影)

    [摘要:var earthRadiusMeters = 6371000.0; var metersPerDegree = 2.0 * Math.PI * earthRadiusMeters / 360 ...

    POJ 3907 Build Your Home | 计算多边形面积

    给个多边形 计算面积 输出要四舍五入 直接用向量叉乘就好 四舍五入可以+0.5向下取整 #include #include #includ ...

    [C语言] 关于计算多边形面积的一点问题

    [一道练习题] 面基 时间限制:1000ms   内存限制:65536kb 通过率:107/134 (79.85%)    正确率:107/319 (33.54%) 题目描述 按顺时针或逆时针顺序输入 ...

    leaflet计算多边形面积

    上一篇介绍了使用leaflet绘制圆形,那如何计算圆形的面积呢? 1.使用数学公式计算,绘制好圆形后,获取中心点以及半径即可 2.使用第三方工具计算,如turf.js. 这里turf的area方法入参 ...

    利用python计算windows全盘文件md5值的脚本

    import hashlib import os import time import configparser import uuid def test_file_md5(file_path): t ...

    poj 1654:Area 区域 ---- 叉积(求多边形面积)

    Area   Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19398   Accepted: 5311 利用叉积求多边形面 ...

    随机推荐

    通过Queue的构造函数的可选参数maxsize来设定队列长度

    创建一个"队列"对象 import Queuemyqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无 ...

    Java 使用Redis缓存工具的图文详细方法

    开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...

    Win10安装framework3.5

    .NET少不了framewrok,其版本也比较多,默认情况下win7及上版本没有安装framework3.5,但有些软件又需要它,比如arcgis软件在安装时会检测是否存在3.5,如果没有,将不会正常 ...

    soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现

    1.首先 要添加一个全局 自定义变量 Custom Properties   2.用transfer property 将取来的值 放入到变量 getToken 里   3.在另一个testc ...

    vmware 连网

    Nat 这 种方式下,虚拟机的网卡连接到宿主的 VMnet8 上.此时系统的 VMWare NAT Service 服务就充当了路由器的作用,负责将虚拟机发到 VMnet8 的包进行地址转换之后发到实 ...

    UVa 496 Simply Subsets (STL&set_intersection)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...

    Hive中抽取连续多天登录用户

    昨天群上有人发个阿里的面试题,题目描述大概如下: 数据源:用户登录表,只有俩个字段,uid和dt 试用HQL抽取出连续登录了K天的用户uid 第一个想法就是直接用一个UDF解决,按uid分组,把dt收 ...

    AI学习吧-结算中心

    结算中心流程 在结算中心中,主要是对用户添加到购物车商品的结算,由于用户可能添加了多个课程,但是,结算时会选择性的进行支付.在结算时会选中课程id,和对应的价格策略.在后台,首先会对用户进行校验,验证 ...

    002 Hello Spring Security

    在前面已经搭建过环境框架,现在在demo模块下写一个简单的案例,让整个环境跑起来. 一:启动Demo项目 1.新建类 在这前,先建立包. 2.启动类程序 package com.cao; import ...

    PHP 数组转XML 格式

    function buildXml( $data, $wrap= 'xml' ){ $str = "<{$wrap}>"; if( is_array( $data ) ...

    展开全文
  • for i in range(1,len(points)-1): p2 = points[1] p3 = points[2] #计算向量 vecp1p2 = Point(p2.x-p1.x,p2.y-p1.y) vecp2p3 = Point(p3.x-p2.x,p3.y-p2.y) #判断顺时针还是逆时针,顺时针面积为正,逆时针面积为...

    数学解决方法:

    # -*- coding: cp936 -*- import math

    class Point():

    def __init__(self,x,y):

    self.x = x

    self.y = y

    def GetAreaOfPolyGon(points):

    area = 0

    if(len(points)<3):

    raise Exception("error")

    p1 = points[0]

    for i in range(1,len(points)-1):

    p2 = points[1]

    p3 = points[2]

    #计算向量

    vecp1p2 = Point(p2.x-p1.x,p2.y-p1.y)

    vecp2p3 = Point(p3.x-p2.x,p3.y-p2.y)

    #判断顺时针还是逆时针,顺时针面积为正,逆时针面积为负

    vecMult = vecp1p2.x*vecp2p3.y - vecp1p2.y*vecp2p3.x #判断正负方向比较有意思

    sign = 0

    if(vecMult>0):

    sign = 1

    elif(vecMult<0):

    sign = -1

    triArea = GetAreaOfTriangle(p1,p2,p3)*sign

    area += triArea

    return abs(area)

    def GetAreaOfTriangle(p1,p2,p3):

    '''计算三角形面积 海伦公式'''

    area = 0

    p1p2 = GetLineLength(p1,p2)

    p2p3 = GetLineLength(p2,p3)

    p3p1 = GetLineLength(p3,p1)

    s = (p1p2 + p2p3 + p3p1)/2

    area = s*(s-p1p2)*(s-p2p3)*(s-p3p1) #海伦公式

    area = math.sqrt(area)

    return area

    def GetLineLength(p1,p2):

    '''计算边长'''

    length = math.pow((p1.x-p2.x),2) + math.pow((p1.y-p2.y),2) #pow 次方

    length = math.sqrt(length)

    return length

    def main():

    p1 = Point(1,1)

    p2 = Point(2,1)

    p3 = Point(2,2)

    p4 = Point(1,2)

    points = [p1,p2,p3,p4]

    area = GetAreaOfPolyGon(points)

    print(math.ceil(area))

    assert math.ceil(area)==1

    if __name__ == '__main__':

    main()

    展开全文
  • python计算多边形面积骚操作一、原理二、python实现的多种方法及测试1、法一2、法二3、法一、法二对比测试:三、结论 写在前面 这是一篇关于求多边形面积的文章,这类求面积原理基本都是积分/面积分解。常用于语义/...


    写在前面
    这是一篇关于求多边形面积的文章,这类求面积原理基本都是积分/面积分解。常用于语义/实例分割中求取object的面积。

    一、原理

    参考文章:【国际数学竞赛】任意多边形面积计算公式

    二、python实现的多种方法及测试

    1、法一

    来源:stackoverflow

    def component_polygon_area(poly):
        """Compute the area of a component of a polygon.
        Args:
            x (ndarray): x coordinates of the component
            y (ndarray): y coordinates of the component
    
        Return:
            float: the are of the component
        """ 
        x = poly[:,0]
        y = poly[:,1]
        return 0.5 * np.abs(
            np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1)))  # np.roll 意即“滚动”,类似移位操作
            # 注意这里的np.dot表示一维向量相乘
    

    测试:

    import numpy as np
    x = np.random.rand(36,2)
    area = component_polygon_area(x)
    print("area",area)
    

    输出:
    在这里插入图片描述

    2、法二

    def calculate_triangle_area(poly_a, poly_b, poly_c):
        triangle_area = 0.5*((poly_b[0] - poly_a[0])*(poly_c[1] - poly_a[1]) -
                            (poly_b[1] - poly_a[1])*(poly_c[0] - poly_a[0]))
        return triangle_area
    def cal_area(poly):
            sum_area = 0
            for i in range(1,poly.shape[0]-1):
                temp = poly[i+1]
                sum_area += calculate_triangle_area(poly[0],poly[i],temp)
            return abs(sum_area)
    

    测试:

    x = np.random.rand(36,2)
    area =cal_area(x)
    print("area",area)
    

    输出:
    在这里插入图片描述

    3、法一、法二对比测试:

    在这里插入图片描述

    三、结论

    法一和法二两种方式计算的结果差不多,误差在小数点后14位以后了;
    法一代码少,计算虽稍显复杂,但仍推荐使用(谁让咱们是程序猿呢 o(╥﹏╥)o))~

    展开全文
  • 最近业务上有一个需求,给出多边形面积。 Google了一下,发现国内论坛给的算法都是你抄我我抄你,也不验证一下是否正确, 从 博客园到csdncsdn 然后传播到国内各个角落。。。真是无力吐槽了。 直接纯英文Google...
  • https://www.cnblogs.com/zzcpy/p/10524348.html 维基百科-鞋带公式:... def polygon_area(points): """返回多边形面积 """ area = 0 q = points[-1] for p in points: area += p[0] * q[1] - p[1] * q[0]
  • 发现一个很有意思且有用的多边形面积计算方式 - 鞋带公式.鞋带公式的表达式为:可以理解为,是把每个顶点向x轴做垂线,每个边和坐标轴构成的梯形面积矢量和,结果就是多边形面积.也可理解为用最大矩形的面积减去各个...
  • 多边形面积求解的方法很多,其中比较多见的就是增加一个点P,然后分别连接多边形各个定点与P点,然后计算每个三角形的符号面积(面积有正负之分),求和就可以计算出面积。鉴于上面的方法,我们也可以用另外一种更...
  • python计算任意多边形面积

    千次阅读 热门讨论 2019-03-05 18:02:57
    然后看到这个大神的博客(《计算任意多边形面积》),我就服气了。 我把代码转换为python: # 计算任意多边形面积,顶点按照顺时针或者逆时针方向排列 def compute_polygon_area(points): point_num = len(points...
  • 利用python计算任意多边形面积

    千次阅读 2019-05-24 18:10:08
    利用python计算任意多边形面积python代码. 将n边形分割为n-2个三角形,利用向量叉乘法计算三角形面积分别计算每个三角形面积后累加得多边形面积。 第一次写博客,见笑了。 python代码. import math import re ...
  • Python计算任意多边形面积算法

    万次阅读 2013-02-20 17:22:07
    多边形面积求解的方法很多,其中比较多见的就是增加一个点P,然后分别连接多边形各个定点与P点,然后计算每个三角形的符号面积(面积有正负之分),求和就可以计算出面积。  鉴于上面的方法,我们也可以用...
  • n=eval(input()) s=eval(input()) import math area=(ns**2)/(4math.tan(math.pi/n)) print(“该正5边形的面积为:”,end="") print("{:.2f}".format(area))
  • 计算任意多边形面积Python实现

    千次阅读 2019-02-18 19:56:30
    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, …, vn-1},则多边形的边为E={<v0, v1>, <v1, v2>, <v2, v3>,...,<vn...
  • 假设您以GeoJSON格式表示科罗拉多州{"type": "Polygon","coordinates": [[[-102.05, 41.0],[-102.05, 37.0],[-109....您可以使用pyproj投影坐标和Shapely来查找任何投影多边形面积:co = {"type": "Polygon", "coo...
  • 图像处理中经常遇到,两个凹多边形交叉的面积计算python实现多边形交叉面积计算。实例
  • 基本上,我想知道一个0.25°lat x 0.25°lon贴片在世界各地的...在我有多边形角点的lat/lon值,并按如下方式计算它们的面积:from pyproj import Projfrom shapely.geometry import shapedef getArea(coords):c = {...
  • 主要介绍了Python求凸包及多边形面积教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • The title basically says it ... I need to calculate the area inside a polygon on the Earth's surface using Python. Calculating area enclosed by arbitrary polygon on Earth's surface says something abo...
  • 如果pip直接安装失败,则采用手动安装的形式,需要浏览网站Python Extension Packages for Windows – Christoph Gohlke 寻找合适的版本进行下载,有32位和64位以及python2和3的不同版本 找到相对应的whl文件,以...
  • 计算多边形(polygon)的面积其实很简单,假设是n边形,分割为n-2个三角形,积分别计算每个三角形面积后累加得多边形面积。 如下图所示: 那么如何计算三角形的面积呢? △ABC的面积是“向量AB”和“向量AC”两...
  • Python | 任意多边形间的重叠面积计算

    千次阅读 热门讨论 2019-10-19 23:49:03
    简介 跟某人讨论一个排样问题。 他说,算法搜索速度很慢,每两个物体间的重叠面积计算时间若按1s来算,300个物体需要...给定的数据为多边形的各个顶点,为N*2的矩阵,N 为多边形的顶点个数,计算任意两个多边形重叠...
  • 本文使用三角形面积累计法计算多边形面积,就是将多边形按照一个顶点,分割成多个三角形,计算三角形的面积,累加,得到多边形的面积。 当然,这个算法也有一些缺点,当这个多边形比较奇怪的时候,不能将多边形按照...
  • The title basically says it ... I need to calculate the area inside a polygon on the Earth's surface using Python. Calculating area enclosed by arbitrary polygon on Earth's surface says something abo...
  • 计算多边形面积

    2016-11-08 13:03:00
    2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,439
精华内容 575
关键字:

python计算多边形的面积

python 订阅