在世界地图上绘制GeoIP数据

12 投票
5 回答
12873 浏览
提问于 2025-04-15 15:03

我需要一个库(最好是用Python写的),可以把一系列的IP地址(或者地理坐标)在世界地图上标出来。

我已经找到过这个,但是它输出的数据是.svg文件,而且处理大数据集的时候根本不行。

请注意,我需要的是可以下载并在本地运行的东西,所以不想把数据上传到第三方网站。

谢谢!

5 个回答

2

如果你愿意为测试设置一个本地的网络环境,谷歌地图的API可以支持上面提到的所有功能。对于Python来说,有一个叫做 pymaps 的工具可以帮助你使用这个API。

在API的文档中,有一个示例教你如何使用谷歌的地理编码器,根据输入的地址在地图上标记点:

谷歌地图API示例:简单的地理编码

3

正如其他人提到的,你可以获取位置数据,然后写一些代码把它们放到地图上,但其实还有更简单的方法。

你可以使用IPInfo提供的免费工具Map IPs,这个工具可以创建一个互动的IP地址地图。比如说,这里有一个AWS IP范围的例子。

map ips tool preview

你可以直接复制粘贴IP地址,或者通过cURL这个工具来使用。它可以处理多达50万个IP地址。

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

免责声明: 我在IPInfo工作。

11

也许可以使用Basemap这个工具,它是Matplotlib的一部分,用来绘图。

它可以做各种各样的地图投影(别在意默认的颜色不好看)。你可以很好地控制你想怎么绘图,甚至可以使用NASA的蓝色地球图像。当然,你也可以在地图上用绘图命令来标记、画线等等。

我没有用它处理过特别大的数据集,但因为它是Matplotlib的一部分,我觉得它应该表现不错。

如果我没记错的话,尽管它是这个库的一部分,但默认情况下并不会和Matplotlib一起安装。

撰写回答