现在我有一个 GeoJson 文件和使用 shapely 的以下函数:
它接受坐标并返回社区名称
def get_neighb(lat, lon):
"""Input Latitude and Longitude, Returns Neighborhood Name"""
point = Point(lon, lat)
found = False
for feature in geo_data['features']:
polygon = shape(feature['geometry'])
if polygon.contains(point):
return(feature['properties']['neighborhood'])
found = True
if found is False:
return('NA')
# Initialize list
tn = ['']*data.shape[0]
for i in range(len(tn)):
tn[i] = get_neighb(data.latitude[i], data.longitude[i])
这可行,但它真的很慢,关于如何加快它的任何想法,目前在 4,000,000 行上运行它。
最佳答案
您必须找到一种策略来不检查每一行。最简单的方法可能是将所有形状转储到地理感知数据库中并对其进行查询。像 post-gis 或 Elasticsearch 之类的东西。
另一种策略可能是找到所有邻域的质心,然后使用 KD 树仅过滤质心附近的邻域。
关于python - 如何在Python中对大量点进行反向地理编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42707359/