【问题标题】:Python - shapely: Iterating with method "difference" return unexpected resultPython - 匀称:使用方法“差异”进行迭代返回意外结果
【发布时间】:2018-11-07 09:08:43
【问题描述】:

我实际上是在 python 上使用 shapely。

事情是这样的:

我有一个大多边形,比如说

import matplotlib.pyplot as plt
import shapely
from shapely.geometry import Polygon
LAND = Polygon([(0, 0), (0, 20), (20, 20), (20, 0)])

我有一个随机生成的多边形列表

import random
def generate_polygons(box_size=10, amount=15):
    """
    A function that generate an amount of polygon randomly
    in a square of size = box_size
    """
    polygons = []
    for i in range(amount):
        x = random.randint(0, box_size - 2)
        y = random.randint(0, box_size - 2)
        dx = 2
        dy = 2
        polygons.append(Polygon([(x, y), (x, y+dy), (x+dx, y+dy), (x+dx, y)]))
    return polygons

我想区分 LAND 和多边形列表

diff = LAND
polygons = generate_polygons(20, 15)

for polygon in polygons:
    diff = diff.difference(polygon)

让我们绘制结果 这是多边形:

FIG, AXS = plt.subplots()

if (isinstance(polygons, shapely.geometry.polygon.Polygon)):
    X, Y = polygons.exterior.xy
    AXS.fill(X, Y, 'b')
else:
    for polygon in polygons:
        X, Y = polygon.exterior.xy
        AXS.fill(X, Y, 'b')

plt.show()

这里是差异:

FIG, AXS = plt.subplots()

if (isinstance(diff, shapely.geometry.polygon.Polygon)):
    X, Y = diff.exterior.xy
    AXS.fill(X, Y, 'r', alpha=0.5)
else:
    for polygon in diff:
        X, Y = polygon.exterior.xy
        AXS.fill(X, Y, 'r', alpha=0.5)

plt.show()

polygon in blue, diff in red

我不明白为什么它给我这个结果,有人有想法吗?

【问题讨论】:

    标签: python polygon difference shapely


    【解决方案1】:

    最后的答案是,Shpely 做了这个操作,但是 pyplot 不能绘制它!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多