12

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

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

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

谢谢!

4

5 回答 5

11

也许Matplotlib中的底图用于绘图。

它可以进行各种投影(不要介意丑陋的默认颜色)。而且你可以很好地控制你绘制的内容/方式。您甚至可以使用NASA 蓝色大理石图像。当然,您可以使用 plot 命令在地图上绘制标记、线条等。

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

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

于 2009-10-14T13:23:08.587 回答
3

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

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

地图 ips 工具预览

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

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

免责声明:我在 IPInfo 工作。

于 2021-05-11T07:17:04.497 回答
2

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

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

Google Maps API 示例:简单地理编码

于 2009-10-14T11:53:14.360 回答
2

你可能想看看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'])

示例输出

在此处输入图像描述

于 2017-11-17T13:49:11.733 回答
1

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

而已!当然,您可以调整参数以增强视觉效果。请参阅此处的速成课程

于 2018-06-20T09:50:34.170 回答