【问题标题】:How Can I Determine a Region, Country, and Continent Based on a City Using Python?如何使用 Python 根据城市确定地区、国家和大陆?
【发布时间】:2011-01-30 18:59:23
【问题描述】:

所以,我有一堆城市和州/地区组合的列表(其中一些城市没有配对的州/地区),我想用这些来填写国家、大陆和州/region 未提供)信息。在适合多个地区的情况下,我愿意接受其中的任何一个,尽管最大的一个会是最好的。让我这样做的最简单的 Python 库是什么?

一个例子:给定“伊斯坦布尔”,我想要类似的东西:

{istanbul, istanbul province, turkey, europe}

【问题讨论】:

  • 我认为你选择了一个很好的例子来说明与这种简单分类相关的问题。您是否知道博斯普鲁斯海峡将伊斯坦布尔省分为两部分:欧洲一侧和亚洲一侧;-)

标签: python


【解决方案1】:

感谢KimvaisLennart Regebro,我找到了一种非常简单的方法来做我想做的事情,我想在这里为遇到同样问题的其他人发布基本步骤。

  1. 安装 geopy (http://code.google.com/p/geopy/)

  2. 使用以下内容:

     from geopy import geocoders
    
     gn = geocoders.Google()
     place, (lat, lng) = gn.geocode("istanbul")
     print place
    

这个打印:Istanbul/Istanbul Province, Turkey,这太棒了,正是我想要的(没有大陆部分,但我自己很容易做到,只需要一个国家/大陆组合列表(是的,我知道土耳其是在 2 个不同的大洲。我很高兴将它放在一个用于我的目的,因为这对我来说并不重要)。

【讨论】:

  • 你是如何将Turkey 映射到一个大陆的?
  • @MattO'Brien 正是我所说的——得到了国家 -> 大陆的列表,将其编入字典,然后对其进行查询。
【解决方案2】:

你根本不需要任何库,真的。您需要的是地理位置列表。如果您没有可以使用的在线地理定位服务,它将为您完成这些事情,可通过 http(以及因此 urllib)访问。您可能需要一个库来解释响应,例如 XML。

【讨论】:

  • 你能举一个这些服务的例子吗?
  • @Eli:谷歌地图有一个:code.google.com/apis/maps/documentation/geocoding,Kimvais 提到 Geonames.org geonames.org/export/geonames-search.html 可以返回您要查找的数据类型。
  • @Lennart:谷歌地理编码只能从谷歌地图使用,或者你违反了他们的服务条款。 openstreetmap 在这方面要好得多,但解析结果是纯粹的痛苦。
  • @Lennart:来自code.google.com/apis/maps/documentation/geocodingNote: the Geocoding API may only be used in conjunction with a Google map; geocoding results without displaying them on a map is prohibited. For complete details on allowed usage, consult the Maps API Terms of Service License Restrictions.
  • 其他服务条款的说法完全不同,所以我想这需要澄清一下。
【解决方案3】:

我猜geopygeonames 的接口可能有用

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多