如何将IP转换为地址,然后按城市分组这些地址?

时间:2016-08-04 19:37:51

标签: r google-maps geospatial cartodb

我有一个由IP地址和相应值组成的数据帧。我想将这些IP地址(转换为地理空间坐标)和相应的值可视化为气泡图。

问题是其中一些IP地址位于同一个城市。这意味着我在几乎完全相同的区域内有多个气泡,我宁愿看到这个气泡组合成一个气泡。

到目前为止,我尝试过转换IP地址 - >拉特和长(ip2coordinates来自RDSTK) - >地址(使用coordinates2politics中的RDSTK),然后使用CartoDB将这些城市名称转换为坐标并将其绘制在那里。

我已经运行coordinates <- lapply(ips$field_1, ip2coordinates),但它没有返回数据帧,而是返回一个长(无用)列表。

我正在尝试做什么的替代方法是什么?

1 个答案:

答案 0 :(得分:3)

不需要笨重的DSTK:

pts <- hexbin(ip_geo$longitude, ip_geo$latitude, xbins=5)
from_hex <- data_frame(x=pts@xcm, y=pts@ycm, n=pts@count)

gg <- ggplot()
gg <- gg + geom_map(data=world_map, map=world_map,
                    aes(long, lat, map_id=region),
                    colour="#2b2b2b", size=0.15, fill=NA)
gg <- gg + geom_point(data=from_hex, aes(x, y, size=n),
                      shape=21, stroke=0.5, color="#b2182b", fill="#b2182b22")
gg <- gg + scale_size_continuous(trans="sqrt")
gg <- gg + coord_proj("+proj=wintri")
gg <- gg + ggthemes::theme_map()
gg

enter image description here

或者,他们:

{{1}}

enter image description here

你也可以逐个地区(国家,州等),然后在每个地区的中心绘制圆圈。