我需要一个库(最好用 Python 编写),它能够获取一系列 IP 地址(或地理坐标)并将它们绘制在世界地图上。
我已经找到了这个,但是它将数据输出为 .svg 文件,它根本无法处理大型数据集。
请注意,我需要可以下载并在本地运行的东西,因此没有数据上传到第三方网络服务。
谢谢!
我需要一个库(最好用 Python 编写),它能够获取一系列 IP 地址(或地理坐标)并将它们绘制在世界地图上。
我已经找到了这个,但是它将数据输出为 .svg 文件,它根本无法处理大型数据集。
请注意,我需要可以下载并在本地运行的东西,因此没有数据上传到第三方网络服务。
谢谢!
也许Matplotlib中的底图用于绘图。
它可以进行各种投影(不要介意丑陋的默认颜色)。而且你可以很好地控制你绘制的内容/方式。您甚至可以使用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 工作。
如果您愿意设置本地 Web 环境进行测试,谷歌地图 API 可以支持上述所有内容。Python 的 API 有一个包装器,称为pymaps。
API 文档有一个示例,说明如何使用 Google 的地理编码器在给定特定输入地址的地图上绘制点:
你可能想看看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')
而已!当然,您可以调整参数以增强视觉效果。请参阅此处的速成课程。