根据 geoip 数据生成国家地图
Posted
技术标签:
【中文标题】根据 geoip 数据生成国家地图【英文标题】:Generate countries map based on geoip data 【发布时间】:2012-07-26 18:39:11 【问题描述】:我在这个话题上搜索了很多,但没有找到答案。
我有自己的统计数据包,用于保存用户的 geoip 数据(以及一堆其他数据)。我正在使用 maxmind geoip 库来获取这些信息。
因此,在我的后端,我将这些数据可视化为基本上有两列的文本,一列是国家名称,另一列是来自该国家/地区的访问次数。
我想用这些数据生成地图。 类似于世界地图,其中突出显示了我访问过的国家/地区。 热图会很好,但不是必需的。
我真的不在乎它是用 php(GD 图像库)还是 jquery 生成的,因为我已经将这两种技术用于统计后端。但我真的很想在没有谷歌分析或他们的图形 API 的情况下这样做。
【问题讨论】:
【参考方案1】:我会试着假设。我会尝试这样做的方式...
-
获取 FullHD(或高分辨率世界地图)
我会在 WGS84 标准中保留坐标(浮点值,否则很容易转换)
我会尝试将真实坐标接近图像比例,但在此之前...
这项工作的主要部分是数学。我其实不是数学家,但我知道应该在这里应用它以及为什么。
这里的主要目标是在平面上投影坐标,bec。 WGS84
使用 扁球体 作为参考面(与 radius = 6378137 m
; flattering = 1/298.257223563
),因此它不是理想的圆周,应该考虑在内。 + 图像应该以某种方式绑定GEO
(您应该知道此图像的角角坐标@least。如果是这样,这是最简单的情况)。
这种情况的计算量不是很大,一切都导致了基本的平面几何。
这是可以帮助您处理地理空间数据的库http://www.gdal.org/。
我的建议是,如果您对此一无所知,请咨询该领域的一些专家(可能是某些大学/学院中的 SatCom 规范或 MobCom 规范)(或尝试 Google如果您对math
和GEO
足够熟悉)并要求一个数学模型将GPS
坐标投影到flat surface
,您一定会得到答案。
如果您不需要非常高的准确性,请自己尝试一下,也许您会走运。
如果您对数学有足够的了解,您可以在 MatLab(在这种情况下更适用)或 Mathcad 中尝试自己,并尝试自己在栅格上定位几个点。
如果你能在不久的将来找到答案,我会很高兴你把它贴在这里或与我分享你对特定案例的解决方案。
【讨论】:
谢谢保罗,我会考虑你的建议。 不客气!祝你好运!【参考方案2】:我需要最后在这里回答我自己的问题。对于其他偶然发现此问题的人:
我一直在使用带有 topojson 扩展名的 d3js 库。 https://github.com/mbostock/topojson
【讨论】:
以上是关于根据 geoip 数据生成国家地图的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 创建自己的 Facade 扩展 geoip 根据 IP 获取国家地域城市信息
Logstash利用GeoIP库显示地图以及通过useragent显示浏览器