我需要一款库(最好用Python编写),能够将一系列IP地址(或地理坐标)绘制在世界地图上。
我已经找到了这个,但它输出的数据是.svg格式的文件,而且无法处理大量数据集。
请注意,我需要能够在本地下载和运行的东西,因此不要上传数据到第三方Web服务。
谢谢!
我已经找到了这个,但它输出的数据是.svg格式的文件,而且无法处理大量数据集。
请注意,我需要能够在本地下载和运行的东西,因此不要上传数据到第三方Web服务。
谢谢!
也许可以在 Matplotlib 中使用 Basemap 进行绘图。
它可以进行各种投影(不用在意丑陋的默认颜色)。并且您可以很好地控制您要绘制的内容和方式。您甚至可以使用 NASA蓝色大理石图像。当然,您还可以使用plot命令在地图上绘制标记、线条等。
我没有将大型数据集放入其中,但考虑到它是Matplotlib的一部分,我认为它会表现得很好。
如果我没记错的话,尽管它是库的一部分,但默认情况下它不随Matplotlib一起发布。
正如其他人提到的,您可以获取位置信息并编写一些代码将它们放在地图上,但也有一种更简单的方法。
您可以使用 IPInfo 的免费Map IPs 工具,该工具将创建一个 IP 地址交互式地图。这是一个示例,显示了 AWS IP Ranges。
您可以复制/粘贴 IP 地址或通过 cURL 使用该工具。它可以处理多达 500K 个 IP 地址。
$ cat ipList | curl -XPOST --data-binary @- "ipinfo.io/map?cli=1"
免责声明: 我就职于IPInfo。
您可能想看一下mapsplotlib
。
仅支持Python 2.7!
$ pip install mapsplotlib
$ pip install pandas
您需要获取一个谷歌静态地图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'])
gmplot
。pip install gmplot
gmplot
就能生成一个 html 格式的地图。lat_values
和 lon_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')
就是这样!当然,你可以调整参数以增强视觉效果。请参见此处的快速入门。