将数千个坐标进行反向地理编码,只获取国家信息

5

我有超过34,000个地理坐标数据,格式为.csv,每个坐标需要返回所属国家。

我正在使用Python的Geocoder库,但Google API每天查询限制为2500次,因此需要两周来完成。

与此问题相关的精确代码似乎并不重要。

我想知道,是否可以完全绕过Geocoder库或Google API,因为我只需要国家,而不是街道地址或其他详细信息?某种程度上说,各国的坐标似乎是常识。

我能够在相对较短的时间内获取相同数据的.kml格式。

我还没有找到这个问题的答案。欢迎任何建议和编辑,也请指向其他现有答案。谢谢!

1个回答

6
您可以使用 geopandas 库并使用其中的 world 数据集:
import geopandas as gpd

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

现在,您可以将坐标加载到 pandas 数据框中,并将它们转换为 POINT 几何对象。
df = pd.read_csv('my_points.csv')
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude))

上述代码假设您的点列名为LongitudeLatitude

现在,您可以连接您的点并获取它们所居住的国家:

result = gpd.sjoin(gdf, world, how='left')

1
谢谢,它起作用了!只有一个小问题,即gpd.crs='init'world.crs='epsg:4326'。这导致了一个警告,大致是“坐标参考系统(CRS)不匹配!”,显然sjoin不能在两个具有不匹配CRS的数据帧上工作。在执行sjoin之前,我添加了gdf.crs = {'init' :'epsg:4326'},然后得到了结果。 - altynbei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接