首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >minimum_rotated_rectangle中的角度

minimum_rotated_rectangle中的角度
EN

Stack Overflow用户
提问于 2021-02-09 04:02:25
回答 1查看 380关注 0票数 0

我有一个简单的问题,但我找不到答案我正在寻找"minimum_rotated_rectangle“多边形相对于纬度或经度的主角

代码语言:javascript
复制
df4.minimum_rotated_rectangle

有人有这个现货吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 19:35:21

这是一个函数,它采用minimum_rotated_rectangle多边形,并基于较长的边计算其方位角(0-180)。

代码语言:javascript
复制
def _azimuth(point1, point2):
    """azimuth between 2 points (interval 0 - 180)"""
    import numpy as np

    angle = np.arctan2(point2[0] - point1[0], point2[1] - point1[1])
    return np.degrees(angle) if angle > 0 else np.degrees(angle) + 180

def _dist(a, b):
    """distance between points"""
    import math

    return math.hypot(b[0] - a[0], b[1] - a[1])

def azimuth(mrr):
    """azimuth of minimum_rotated_rectangle"""
    bbox = list(mrr.exterior.coords)
    axis1 = _dist(bbox[0], bbox[3])
    axis2 = _dist(bbox[0], bbox[1])

    if axis1 <= axis2:
        az = _azimuth(bbox[0], bbox[1])
    else:
        az = _azimuth(bbox[0], bbox[3])

    return az

示例:

代码语言:javascript
复制
import geopandas as gpd
df = gpd.read_file(gpd.datasets.get_path('nybb'))

# single geometry
mrr = df.geometry.iloc[0].minimum_rotated_rectangle
azimuth(mrr)
# 66.65508762854085

# whole dataframe
mrrs = df.geometry.apply(lambda geom: geom.minimum_rotated_rectangle)
df['az'] = mrrs.apply(azimuth)

ax = df.plot('az', legend=True)
mrrs.boundary.plot(ax=ax)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66108528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档