【发布时间】:2016-01-25 02:04:14
【问题描述】:
我正在使用纽约市出租车数据集。数据集的列包括日期时间、取件纬度/经度、下落纬度/经度等。现在我想对纬度/经度进行反向地理编码以找到自治市镇/社区。我遇到了geopy,发现这样的东西非常有效:
from geopy.geocoders import Nominatim
geolocator = Nominatim()
borough = []
loc = ['40.764141, -73.954430', '40.78993085, -73.9496098723']
for l in loc:
sub = str(geolocator.reverse(l))
borough.append(sub.split(', ')[2])
borough
## ['Upper East Side', 'East Harlem']
这是完美的,正是我想要的。但是,我的数据集有几百万行,并且由于这是一个在线 API,因此不可行。有没有更好的方法来做到这一点?
【问题讨论】:
-
如果您可以获得行政区的 shapefile(应该不会太难),您可以使用各种 shapefile 操作工具来确定给定点是否在给定行政区的形状内。
-
听起来很有趣。如果您不介意,您能否提供更多详细信息?
-
参见例如this page。如果你用谷歌搜索“确定点是否在 shapefile 形状”或类似的查询,你可以找到很多东西。由于纽约市的行政区都是县,因此从美国人口普查之类的东西中获取其边界的 shapefile 应该相当容易。
-
试图在一个巨大的数据集上做同样的过程。你解决了吗?
-
我下载了这个文件:data.cityofnewyork.us/City-Government/Neighborhood-Names-GIS/…。它包含邻域名称及其质心。然后,我使用this 问题中的答案找到质心最近的邻域,然后将数据点分类到该邻域。
标签: python google-maps gis geocoding