形状多边形包含的问题,似乎没有正确标记所有包含的点
Problem with shapely polygon contain, seems not to correctly flag all contained points
假设我们有一个包含多边形的 100x100 网格。
现在,如果我们为包含在多边形中的所有可能的 (x,y) 点 [x,y 是整数] 着色,我们应该期望多边形有点 painted/filled
但是我得到的图像从来没有正确落入并填充多边形!这是 shapely 的限制还是我做错了什么?!
(请注意我需要它用于其他目的,而不仅仅是绘制多边形)
polygon and filled area not overlapping
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
points = np.random.randint(0,100, (10,2)) # 10 random points
poly = shapely.geometry.MultiPoint(points).convex_hull.buffer(1) # a polygon
grid_points = [ shapely.geometry.Point(x,y) for x in range(100) for y in range(100)]
in_poly = np.array([poly.contains(point) for point in grid_points])
#plot
plt.imshow(in_poly.reshape(100,100), origin='lower')
plt.plot(*poly.exterior.xy)
这似乎符合您的要求 - 替换这一行(在 for 循环中交换 y 和 x):
grid_points = [ shapely.geometry.Point(x,y) for y in range(100) for x in range(100)]
一些注意事项:
我安装的 shapely 具有此模块名称(几何拼写不同,因此您可能需要在上面的行中更改名称):
import shapely.geometry
感谢您添加第二个 plot 命令 - 这帮了很多忙。
沿途有些东西有不同的主要顺序(行与列),因此上面的行更改为列主要。
您可能希望通过对外部图进行逆运算来进行补偿。
(原版(带有新的随机形状),已更新,带有外观)
假设我们有一个包含多边形的 100x100 网格。 现在,如果我们为包含在多边形中的所有可能的 (x,y) 点 [x,y 是整数] 着色,我们应该期望多边形有点 painted/filled
但是我得到的图像从来没有正确落入并填充多边形!这是 shapely 的限制还是我做错了什么?! (请注意我需要它用于其他目的,而不仅仅是绘制多边形)
polygon and filled area not overlapping
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
points = np.random.randint(0,100, (10,2)) # 10 random points
poly = shapely.geometry.MultiPoint(points).convex_hull.buffer(1) # a polygon
grid_points = [ shapely.geometry.Point(x,y) for x in range(100) for y in range(100)]
in_poly = np.array([poly.contains(point) for point in grid_points])
#plot
plt.imshow(in_poly.reshape(100,100), origin='lower')
plt.plot(*poly.exterior.xy)
这似乎符合您的要求 - 替换这一行(在 for 循环中交换 y 和 x):
grid_points = [ shapely.geometry.Point(x,y) for y in range(100) for x in range(100)]
一些注意事项:
我安装的 shapely 具有此模块名称(几何拼写不同,因此您可能需要在上面的行中更改名称):
import shapely.geometry
感谢您添加第二个 plot 命令 - 这帮了很多忙。
沿途有些东西有不同的主要顺序(行与列),因此上面的行更改为列主要。
您可能希望通过对外部图进行逆运算来进行补偿。
(原版(带有新的随机形状),已更新,带有外观)