数据可视化:使用TopoJSON画图
来源:互联网 发布:网络监控是什么 编辑:程序博客网 时间:2024/05/21 17:39
因为项目的原因,需要用到D3,这两天刚开始学习,昨天遇到了一个问题:项目需要用到的地图文件是TopoJSON类型的,而在网上找了好多例子,用到的文件全部是GeoJSON格式的,这也没办法,谁让TopoJSON只在D3中常用呢,虽然到现在也没有完美的解决遇到的问题,不过由于时间原因,要去忙其他工作了,还是把这次解决问题的步骤记录下来,过两天有时间了继续学习!
一、GeoJSON和TopoJSON的区别
这个问题参见这篇文章:GeoJSON和TopoJSON的区别,在此特别感谢馒头大大的这个系列文章,给我D3的学习提供了很大的便利。
不过这篇文章里面对于TopoJSON的描述非常简单,在网上找了N久,终于又找到了段描述的话:TopoJSON模式,以我这少半吊子的英文水平,勉强给翻译下来了:
【Topojson是一种使用拓扑编码方式的GeoJSON扩展,而不是代表着离散的几何图形(也可以称为几何体,因为json中的数据实际上是立体的),几何图形在TopoJSON中被一种叫做arcs(弧线,也是TopoJSON中的结构)的共享连接线联系在一起。Arcs实际上是点的集合,把图形用线连接起来可以叫做弧线。每条弧线只会被定义一次(这一点跟GeoJSON不通,GeoJSON的边界可能会被多次重绘),但是可以在不通的形状中多次引用,因此减少了数据冗余而缩小了文件大小。另外,TopoJSON促使应用程序使用拓扑结构,例如使用保留拓扑结构(topology-preserving)的简单形状、自动着色(d3中常用)、统计地图等。TopoJSON说明的引用实现是可行的,作为一个命令行工具将GeoJSON(或者ESRI形状文件)转换成TopoJSON,然后在客户端Javascript库重新将TopoJSON转回GeoJSON。】
翻译地不是很通顺,不过理解了就行了,另外,有两点需要注意的:1.GeoJSON中的type用Feature,而TopoJSON中则用Polygon或者MultiPolygon,这也是两者的重要区别,不过这条算我白说,源码开头就有声明;2.GeoJSON和TopoJSON之间可以转换,如果不是考虑json文件大小和页面响应速度的话,实际上使用GeoJSON还是比较简单的,在mapshaper.org/这个页面可以进行转换。
二、使用TopoJSON画图:
以上,搞明白了两者的区别之后,就开始找代码copy吧,许多创造都是从copy开始的,这句话我喜欢。浏览了很多页面之后,突然发现了一个页面,里面包含了大量的d3.js示例,比如http://bl.ocks.org/mbostock/4183330和http://bl.ocks.org/mbostock/4183330,事实上,也只有两个copy完代码之后运行效果最接近原始效果,虽然也有许多瑕疵,不过先记录下来,有时间继续研究。
- 数据可视化:使用TopoJSON画图
- python seaborn 共享x轴画图 数据可视化
- 13.5 使用 Excel 可视化数据
- 13.5 使用 Excel 可视化数据
- 数据可视化学习:使用API
- 使用TensorBoard进行数据可视化
- matlab已知数据使用不同颜色线条画图
- 7种python 可视化 库的比较(针对同一数据画图)
- 【可视化】数据图表可视化
- 使用失真门户可视化时变数据
- 使用IPython探索和可视化数据
- 大数据可视化工具Hue安装使用
- 数据可视化:dc.js的使用
- 如何使用zeppelin实现大数据可视化
- 使用D3.js进行数据可视化
- 【干货】Python使用matplotlib实现数据可视化
- tensorflow使用tensorboard实现数据可视化
- 【tensorflow学习】使用tensorboard实现数据可视化
- 通知notification
- swift教程-使用UIGestureRecognizer
- 虚拟主机数据库备份
- [latex]图片
- js 正则表达式的问题
- 数据可视化:使用TopoJSON画图
- SequenceInputStream合并流的使用
- poj 3286
- 硬件电路设计方面的几个注意事项
- Android开发者指南(9) —— ProGuard
- MM模块几个移动类型之间的区别
- 数组分割(动态规划问题)
- hive partition 动态分区时字符乱码,无法删除
- HDU 1867 A + B for you again (KMP)