python - 如何在Python中对大量点进行反向地理编码?

标签 python geojson geocode shapely

现在我有一个 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/

相关文章:

javascript - 如何引用现有 GeoJSON 传单对象的数据?

d3.js - 在 d3.js 中绘制已经投影的 geoJSON map

google-maps - Google Geocode api 为特定地址返回不正确的结果

google-maps - 将邮政编码作为值传递给地址参数时,Google Maps API 地理编码不返回结果

Javascript - 从对象数组中获取下一个字母

ios - 如何在自定义 map 上显示用户位置?

python - 在 python 中设置具有完整微秒精度的文件的 mtime

python - 我可以在本地计算机上使用Apache Spark处理100 GB的数据吗?

python - 打印出以 's' 开头的单词时,我的 jupyter 笔记本没有响应是代码错误还是笔记本问题?

python - 在 Python 2.7 中引发异常后未释放对象