Python: 根据相反的地理坐标绘制区域

Python: Drawing an area based on opposite geographic coordinates

我尝试绘制并连接矩形中的点,但我做错了。

我有这样的坐标向量:

x = [6.2372045620000005, 6.237194762000001, 6.237194762000001, 6.2372045620000005]

y = [51.071833453, 51.071835828999994, 51.071833453, 51.071835828999994]

首先,我绘制点数据:

plt.scatter(x, y, color = 'blue')

然后,我尝试在点之间添加线,这样就形成了一个矩形。不幸的是,下面这个不能正常工作。

plt.scatter(x, y, color = 'blue')
plot.plot(x,y)

你知道我做错了什么吗?这当然是一件简单的事情,但我坚持了下来..

感谢您的帮助和评论。

通常假设任何形状的坐标都已经排序。

如果您确信自己有一个矩形(所有角都是正确的,而不是某些四边形),您可以使用 x 和 y 坐标的 min/max 值来获得正确的角点。给定您已经在 post:

中定义的坐标
import matplotlib.patches as patches
import matplotlib.pyplot as plt

xmin = min(x)
xmax = max(x)
xsize = xmax - xmin

ymin = min(y)
ymax = max(y)
ysize = ymax - ymin

使用 Matplotlib,您可以使用 Rectangle 补丁,例如:

fig, ax = plt.subplots(dpi=86)
ax.scatter(x, y, color='blue')

rect = patches.Rectangle(
    (xmin, ymin), xsize, ysize, 
    lw=2, edgecolor='r', facecolor='none',
)
ax.add_patch(rect)

Polygon 补丁,适用于任意形状。这两种方法都适用于这种情况:

points = [
    (xmin, ymin),
    (xmax, ymin),
    (xmax, ymax),
    (xmin, ymax),
]

poly = patches.Polygon(
    points, lw=2, edgecolor='r', facecolor='#ff000011', closed=True,
)
ax.add_patch(poly)

如果您确实有一些不太规则的形状,例如四边形,计算凸包可能有助于获得正确的坐标顺序。参见示例:
Convex hull of 4 points