【问题标题】:Plot GeoIP data on a World Map在世界地图上绘制 GeoIP 数据
【发布时间】:2010-12-06 15:18:58
【问题描述】:

我需要一个库(最好用 Python 编写),它能够获取一系列 IP 地址(或地理坐标)并将它们绘制在世界地图上。

我已经找到this one,但是它以.svg 文件的形式输出数据,它根本无法处理大型数据集。

请注意,我需要可以下载并在本地运行的东西,因此没有数据上传到 3rd 方网络服务。

谢谢!

【问题讨论】:

    标签: python geolocation maps plot


    【解决方案1】:

    正如其他人所提到的,您可以获取位置并编写一些代码将它们放在地图上,但还有一种更简单的方法可以做到这一点。

    您可以使用 IPInfo 的免费 Map IPs 工具,该工具将创建 IP 地址的交互式地图。这是AWS IP Ranges 的示例。

    您可以复制/粘贴 IP 或通过 cURL 使用该工具。它将处理多达 50 万个 IP。

    $ cat ipList | curl -XPOST --data-binary @- "ipinfo.io/map?cli=1"
    

    免责声明:我在 IPInfo 工作。

    【讨论】:

    • ipinfo.io 正是我想要的。谢谢分享!!
    【解决方案2】:

    我最近使用了gmplot

    只需安装它

    pip install gmplot
    

    非常易于使用。您所要做的就是插入经度和纬度值,gmplot 会以 html 格式输出地图。

    这是一个最小的例子。让lat_valueslon_values 成为纬度和经度值的列表。

    from gmplot import gmplot
    import numpy as np
    
    center_lat = np.mean(lat_values)
    center_lon = np.mean(lon_values)
    zoom = 15
    
    gmap = gmplot.GoogleMapPlotter(center_lat, center_lon, zoom) 
    gmap.scatter(lat_values, lon_values)
    gmap.draw('my_map.html')
    

    就是这样!当然,您可以调整参数以增强视觉效果。请参阅crash course here

    【讨论】:

      【解决方案3】:

      您可能想看看mapsplotlib

      安装

      只有 Python 2.7!

      $ pip install mapsplotlib
      $ pip install pandas
      

      然后,您需要拥有一个 Google 静态地图 API 密钥,转至 https://console.developers.google.com

      用法

      import pandas as pd
      from mapsplotlib import mapsplot as mplt
      
      df = pd.read_csv("data.csv")
      
      mplt.register_api_key('your_google_api_key_here')
      mplt.density_plot(df['latitude'], df['longitude'])
      

      示例输出

      【讨论】:

        【解决方案4】:

        也许Basemap in Matplotlib 用于绘图。

        它可以做各种projections(不要介意丑陋的默认颜色)。而且你可以很好地控制你绘制的内容/方式。你甚至可以使用NASA Blue Marble imagery。当然,您还可以在地图上绘制标记、线条等using the plot command

        我没有通过它放置大量数据集,但由于它是 Matplotlib 的一部分,我怀疑它会做得很好。

        如果我没记错的话,尽管它是库的一部分,但默认情况下它不附带 Matplotlib。

        【讨论】:

          【解决方案5】:

          如果您愿意设置本地网络环境进行测试,谷歌地图 API 可以支持上述所有内容。 Python 的 API 有一个包装器,名为 pymaps

          API 文档中有一个示例,说明如何使用 Google 的地理编码器在给定特定输入地址的地图上绘制点:

          Google Maps API Example: Simple Geocoding

          【讨论】:

          • 据我了解,pymaps 只是一个使 Google Maps 使用更容易的包装器。但是,我想完全离线运行,而不向外部发送任何数据(例如发送到 Google)。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多