我需要一个能够获取一系列IP地址(或地理坐标)并在世界地图上绘制它们的库(最好用Python编写)。
我已经找到了this one,但它将数据输出为.svg文件,而它根本无法处理大型数据集。
请注意,我需要可以下载并在本地运行的内容,因此不会将数据上传到第三方Web服务。
谢谢!
答案 0 :(得分:11)
Basemap中的Matplotlib可能是绘图。
它可以做各种projections(不介意丑陋的默认颜色)。而且你可以很好地控制你的情节/方式。您甚至可以使用NASA Blue Marble imagery。当然,您可以在地图using the plot command上绘制标记,线条等。
我没有通过它放置大量数据集,但由于它是Matplotlib的一部分,我怀疑它会做得很好。
如果我没记错,尽管是图书馆的一部分,默认情况下它不附带Matplotlib。
答案 1 :(得分:3)
正如其他人提到的,您可以获取位置并编写一些代码将它们放在地图上,但还有一种更简单的方法可以做到这一点。
您可以使用 IPInfo 的免费 Map IPs 工具,该工具将创建 IP 地址的交互式地图。这是 AWS IP Ranges 的示例。
您可以复制/粘贴 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的地理编码器在给定特定输入地址的地图上绘制点:
答案 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}}
答案 4 :(得分:0)
我最近使用了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')
就是这样!当然,您可以调整参数以增强视觉效果。参见crash course here。