地理点超出预期边界

Posted

技术标签:

【中文标题】地理点超出预期边界【英文标题】:Geographic points extend beyond expected boundary 【发布时间】:2021-01-14 10:55:42 【问题描述】:

我有一个包含在 GeoDataFrame 中的美国位置的点几何。 我想将其绘制为美国地图上的散点图。 我的代码是:

import numpy as np
import geopandas as gpd
import libpysal
import contextily as ctx
import matplotlib.pyplot as plt
from shapely.ops import cascaded_union

gdf = gpd.GeoDataFrame(point_geometry, geometry='geometry')
boundary = gpd.read_file(libpysal.examples.get_path('us48.shp'))
fig, ax = plt.subplots(figsize=(50, 50))
boundary.plot(ax=ax, color="gray")
gdf.plot(ax=ax, markersize=3.5, color="black")
ax.axis("off")
plt.axis("equal")
plt.show()

在图表上检查后,这些点超出了我的预期范围。 有什么我想念的吗? 是否需要创建边界来限制点的分散?

【问题讨论】:

把两个数据集放在同一个坐标系吗? 如果我的回答不起作用,请给我反馈。 【参考方案1】:

情节看起来不错。我想你想排除美国本土以外的点。这些点显然在夏威夷、阿拉斯加和加拿大。

从带有point 几何gdfpolygon 几何边界 的地理数据框中,您可以创建一个适当的边界,用于限制点的分散。

# need this module
from shapely.ops import cascaded_union

# create the conterminous USA polygon
poly_union = cascaded_union([poly for poly in boundary.geometry])

# get a selection from `gdf`, taking points within `poly_union` 
points_within = gdf[gdf.geometry.within(poly_union)]

现在,points_within 是一个地理数据框,您可以使用它来绘制而不是 gdf

points_within.plot(ax=ax, markersize=3.5, color="black")

【讨论】:

感谢您提供此信息,我没想到阿拉斯加和夏威夷仍然是美国的一部分,其中一些地点在加拿大。现在这一切都说得通了。

以上是关于地理点超出预期边界的主要内容,如果未能解决你的问题,请参考以下文章

如何计算两个地理坐标的距离?

通过距离和方位从已知位置查找点坐标的地理算法

如何将地理坐标转化为矢量边界信息

计算地理点之间角度的正确方法

地理网格搜索算法

python - 地理分箱 - 地理边界内的平均值