在世界地图上绘制GeoIP数据

时间:2009-10-14 10:49:22

标签: python geolocation maps plot

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

我已经找到了this one,但它将数据输出为.svg文件,而它根本无法处理大型数据集。

请注意,我需要可以下载并在本地运行的内容,因此不会将数据上传到第三方Web服务。

谢谢!

5 个答案:

答案 0 :(得分:11)

Basemap中的Matplotlib可能是绘图。

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

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

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

答案 1 :(得分:3)

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

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

map ips tool preview

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

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

免责声明:我在 IPInfo 工作。

答案 2 :(得分:2)

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

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

Google Maps API Example: Simple Geocoding

答案 3 :(得分:2)

您可能需要查看documentation for "get a document"

安装

只有PYTHON 2.7!

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'])

然后,您需要拥有Google Static Maps API密钥,转到http://fiware-cygnus.readthedocs.io

用法

{{1}}

示例输出

mapsplotlib

答案 4 :(得分:0)

我最近使用了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