【问题标题】:How to get latitude, longtitude from country, region code using pygeoip如何使用pygeoip从国家、地区代码获取纬度、经度
【发布时间】:2014-05-02 11:20:06
【问题描述】:

我有这样的 GeoIP 城市和地区代码:

region_code:H9
country_code:GB

我拥有的城市和地区代码是在过去某个时间通过 GeoIP 从 IP 地址获得的。但是,IP 地址并未保留。 我相信应该可以索引到 GeoLite City 数据库并使用此信息检索纬度和经度,但我在 pygeoip 包装器中看不到任何开箱即用的东西。有谁知道怎么做?

【问题讨论】:

    标签: python geoip


    【解决方案1】:

    GeoIP City 提供从 IP 地址到位置(包括坐标)的映射。例如:

    >>> gi = pygeoip.GeoIP('GeoIPCity.dat')
    >>> gi.record_by_addr('64.233.161.99')
    {
        'city': u'Mountain View',
        'region_code': u'CA',
        'area_code': 650,
        'time_zone': 'America/Los_Angeles',
        'dma_code': 807,
        'metro_code': 'San Francisco, CA',
        'country_code3': 'USA',
        'latitude': 37.41919999999999,
        'postal_code': u'94043',
        'longitude': -122.0574,
        'country_code': 'US',
        'country_name': 'United States',
        'continent': 'NA'
    }
    >>> gi.time_zone_by_addr('64.233.161.99')
    'America/Los_Angeles'
    

    但是,它不提供从区域代码到坐标的映射。为此,我建议使用GeoNames

    【讨论】:

    • 抱歉,如果我的问题不清楚:我所拥有的城市名称和地区代码是过去某个时候通过 IP 地址从 IP 地址获得的。但是,IP 地址并未保留。因此,我试图以另一种方式返回。数据必须在数据库中;但正如你所说,也许这并不简单。我认为我无法轻松使用 GeoNames,因为我拥有的国家/地区代码特定于 GeoIP
    • 地区代码和国家代码不具体。国家代码是 ISO,地区代码是除美国和加拿大以外的所有地方的 FIPS 代码,它们是 ISO。 GeoNames 支持 FIPS 和 ISO。在他们的高级数据集中,他们有从 FIPS 和 ISO 到区域的映射,但您也可以使用他们的免费数据重建它。
    • This CSV 也可能有用。
    • 所以国家和地区代码的组合不是唯一的??当然,“美国”中只有一个“CA”??如果没有其他人弹出使用 GeoIP 数据库中已有数据的方法,则提供的信息很有用(已对您的答案表示赞同)将接受您的答案!或者你说的是没有与美国加利福尼亚州相关的纬度/经度信息。
    • 对不起,我的意思是说国家和地区代码不是 MaxMind 特定的。他们使用 ISO 和 FIPS 标准(有几个例外,例如 A1 用于代理)。另一种可能对您有用的方法是使用 MaxMind 提供的 GeoIP City CSV 来获取此信息。如果您是客户,您应该可以访问付费版本。否则,有GeoLite CSV。
    猜你喜欢
    • 2017-02-22
    • 2016-04-26
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多