【问题标题】:How to reverse geocode lat/lon into boroughs efficiently如何有效地将地理编码纬度/经度转换为自治市镇
【发布时间】: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


【解决方案1】:

您可以尝试Reverse Geocoder,因为我相信它提供了您需要的功能。
它采用纬度/经度坐标并返回(离线)最近的城镇/城市、国家、行政 1 和 2 区域。

【讨论】:

  • 请花一点时间解释一下反向地理编码器的作用,因为这是一个仅链接的答案,不受欢迎。答案应该能够在不依赖外部资源的情况下存在。
  • 反向地理编码器采用纬度/经度坐标并返回最近的城镇/城市、国家、行政 1 和 2 区域。
【解决方案2】:

查看this answer 了解一个好方法。不过,您可能必须为这些形状定义自己的多边形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多