匀称地表示多边形不包含在另一个

问题描述 投票:0回答:1

我有两个多边形,我正在尝试使用 shapely 来告诉我一个多边形是否接触到另一个多边形。

这是代码:

#!/usr/bin/env python

import shapely
import matplotlib.pyplot as plt


def main():
    a = shapely.geometry.Polygon((
        (239948.84366885605,6247904.745529621),(238281.02710020886,6250794.291071406),
        (238693.67295395266,6251899.199182685),(238292.52776364237,6253065.862501571),
        (239369.8867152306,6255078.983834209),(241149.62036734243,6258808.484109194),
        (246601.12030818601,6254149.774368979),(247369.5081433506,6252263.219573404),
        (246378.77811632192,6251486.8296787),(246522.3713691934,6251301.933776115),
        (245312.5127001227,6249410.396470293),(243242.96423660984,6248751.24094899),
        (239948.84366885605,6247904.745529621)
    ))
    b = shapely.geometry.Polygon((
        (243324,6254378),(243324,6254378),(243330,6254383),(243330,6254383),(243324,6254378)
    ))

    print(a.contains(b))
    print(a.intersects(b))
    print(a.overlaps(b))

    plt.plot(*a.exterior.xy, c='red')
    plt.plot(*b.exterior.xy, c='green')
    plt.gca().axis("equal")
    plt.show()

if __name__ == '__main__':
    main()

它输出:

False
False
False

然而我们可以在绘制的图像上看到多边形 b 确实在多边形 a 内 :

see screenshot

我期望多边形 b 在多边形 a 内,因此该程序输出:

True
True
True
python matplotlib polygon shapely
1个回答
0
投票

阅读@blunova 的评论后,问题似乎是面积为零的多边形。

我加了

b = b.buffer(0.01)

现在可以了!

© www.soinside.com 2019 - 2024. All rights reserved.