芳草伴青山, 雲影入湖心, 松梢鶴嘯長, 蘆屋酣夢沉。

0%

OS X系统自带的Python会预装nose,但这个nose的coverage插件是用不了的,尽管可以通过nosetests –plugins看到Plugin coverage在列表中。万能的Google加Stackoverflow只找到一个问题,是通过pip install coverage解决的,但居然在我这里无效,而且如果pip install nose也不会有任何反应,因为pip会认为Requirement already satisfied。那么最后怎么解决呢?只能pip install –upgrade nose,把它升到最新的1.3.7,然后就ok了。大胆猜测,应该通过pip uninstall再重新install一遍也可以解决。

随手记的东西,就不整理格式了。

数据准备

1
2
3
4
$ dropdb yourdatabase
$ createdb -O youruser yourdatabase
$ psql -d yourdatabase -c "CREATE EXTENSION postgis;"
$ postgis_restore.pl "yourdatabase_backup_data.backup" | psql -h localhost -p 5432 -U youruser yourdatabase 2> errors.txt

在使用pgis_fn_nn进行最近邻搜索的时候,有个问题需要fix,就是它先创建了一个pgis_nn类型,用于保存查找到的要素id和距离值:

1
2
CREATE TYPE pgis_nn AS
(nn_gid integer, nn_dist numeric(16,5));

但是其中的nn_gid被定义成integer类型在目前的很多情况下都太短了,比如在处理OSM数据的时候,osm_id就都是64位的bigint,所以这里需要把nn_gid的类型改成bigint,否则会在运行时报类似这样的错误:

1
2
3
4
ERROR: value "2714664549" is out of range for type integer
SQL 状态: 22003
上下文:PL/pgSQL function _pgis_fn_nn(geometry,double precision,integer,integer,character varying,character varying,character varying,character varying) line 15 at FOR over EXECUTE statement
SQL function "pgis_fn_nn" statement 1

通过osm2pgsql导入postgis的OSM数据表osm_line和osm_point其实并不能直接等同于直接支持路径规划选点和结果显示的street_lines和street_junctions。osm2pgsql文档中说的很明白:

This table (指planet_osm_point) contains all nodes with tags which were imported. Nodes without tags (as those whose only purpose is to define the position of a way) are not imported.

也就是说,在osm_point中找最近邻的路径起止点是不科学的。所以需要自己在构造multimodal网络的同时记录下所有street_junction信息,然后导入数据库。

刚刚完成了《CartoCSS指南》的第一遍翻译校对整理工作。主要是对其中的翻译进行了梳理,统一了大部分术语和格式,删除了不存在翻译异议的原文。但粗略浏览了一下,发现还有个别原文段落忘了删掉,会在第二遍校对的时候进行处理。

下面会随即启动第二遍审校整理工作,主要是对目前还存在较多翻译异议的部分(主要是3.7节-关于合成操作4.2节-地图配色技巧)敲定内容。并且需要把概述部分尽量完成。这部分工作需要辛苦Anran Yang同学帮忙了。

第二遍审校之后,1.0版即可发布。

Mapbox真是个快速变化的公司,还没几个月呢,Mapbox Studio的文档就又来了一次翻天覆地的大改版。给《CartoCSS中文指南》的编译工作带来了不小的冲击。目前,还是立足于完成之前的计划,然后再根据最新的变化来修订内容。毕竟现在一份内容完整,结构合理,思路清晰的稿子还没有出来。我相信后面的工作主要都是小修小补,除非Mapnik和CartoCSS又出现重大更新。

关于“大数据”,我认为就像当年“云计算”一样,很多人在还没有弄清楚其背后的相关技术之前就纷纷义无反顾的跳进去了。最近准备做一些multimodal routing的后续工作,仅仅是出于兴趣,发现需要用到一些data science领域的东西,产生了一些疑惑,然后翻出了一篇stackoverflow上What is the difference between Big Data and Data Mining问题的回复,说的挺好,要点如下:

Big data is everything

大数据是一个商业术语。现在什么都是大数据,一个U盘可以是一个“私有云”,一块硬盘就可以装下“大数据”。

Data mining is the old big data

在大数据这个词出现以前,同样的东西和事情叫做“数据挖掘”。数据挖掘这个术语也是一个曾经被过度使用的词,但它所用到的具体技术和现在的大数据没什么区别。只是现在市场、销售和推广部门又需要新的概念去忽悠客户了,所以出现了“大数据”,一如曾经出现的商业智能(BI)什么的一样。

Most “big” data mining isn’t big

绝大多数的所谓“大”数据,其实一点也不大。KDnuggets的调查结果是目前进行分析的最大数据集大小平均仅为1到10GB。这比10年前做分析用的数据集当然已经大了很多,但距离EB(等于1024PB,等于1024*1024TB)级还差好远。这样规模的数据集对于很多复杂分析方法来说,已经不小了。

Most “big data” isn’t data mining

现在经常谈论的“大数据”其实都无关数据挖掘,而仅仅是在数据的存储和管理层面。目前,数据量意义上的大数据是真实存在的,比如Google,CERN都拥有巨大规模的数据。大数据的相关技术也是真实存在的,比如Hadoop。但人们通常在使用这些技术的时候头脑并不清醒,缺乏理智。如果规模达不到100个节点,那完全可以不用Hadoop,有的是其它更好的替代方案。目前的绝大多数应用场景只能称为Extract, Transform, Load (ETL)。不同的地方仅仅是它们把数据抽到Hadoop,而不是传统的数据仓库里而已。

Data quality suffers with size

大量数据中的偏见噪声问题是大数据应用中的两个基本问题。修正偏见、清洗数据都是在开始后面的分析之前先要做的重要任务,但人们却往往忽略它们,而它们本身也的确都是难度很大的工作。

Hadoop != data mining

Hadoop本身不做数据挖掘。但有一些工具尝试对Hadoop中存储的数据进行挖掘和分析,例如Apache的Mahout项目。但实际上Mahout更多的是一个机器学习工具,而机器学习也不等于数据挖掘,它们俩的关系是数据挖掘有时会用到一些机器学习中的方法。Mahout中的一些部分(例如聚类)还远未成熟。关键的原因在于(注意,重点来了):Hadoop适用于线性问题,而绝大多数数据挖掘问题都是非线性的。非线性算法很难不加修改就直接用于处理规模巨大的数据集——你需要仔细设计一种近似的线性算法,并且在近似所带来的精确性降低与可计算性之间寻找平衡。而数据挖掘里面这种非线性问题相当的多,所以目前可以说在Hadoop上进行数据挖掘的实质性工作尚未开始。尽管现在有很多人在做这个,也有很多公司在卖相关的产品,但目前还没见到哪个打上“大数据”标签的版本比“不大数据“的版本更好用。但既然有人想买,那么就会有公司继续卖;既然搞这个能赚学术分,那就会有人继续写paper,无论这些东西是不是真的有用。这就是生活。

当然也有一些成功的例子,比如Google search,CERN,以及图像识别等等。但这些成功案例中无一例外都是基于清洗过的数据来进行挖掘和分析的,这一点请务必注意。

目前,《CartoCSS指南》编译的进度仍然落后于原计划,但是在进行中的。目前书中各章节的具体进度如下:

  1. 概述:本部分内容需要完全原创,而且对全书将起到重要的引领作用,因此需要投入较多精力考虑如何撰写。正在和Anran Yang讨论其中的内容。
  2. 快速入门:这部分已经完成译稿和第一遍审校。
  3. 基本用法:除了3.7节Composting的内容还在斟酌外,其它节已基本完成第一稿。
  4. 高级技巧:目前还在紧张的审校,工作量较大,而且难度也较大。难度主要体现在要把一些晦涩的内容用中文浅显易懂的解释清楚。Mapbox的CartoCSS原始文档概念混乱的问题给我们带来了很多的麻烦。
  5. 语言参考:基于原有的HiGIS版,这部分内容已经完成。

这就是目前的进度情况。原定的3月31日没能完成第一版,目前也暂时不能给出第一版完成的确切时间表。最主要的原因是在编译工作进行到目前这个阶段的时候,我们都发现了要把这些文档组织成一份像书一样系统的指南时,除了翻译还有很多工作要做。而Mapbox目前的文档质量尚不足以完整包含我们所需的内容,特别是在整体的概念框架的建立、对术语的一致性控制等方面非常欠缺。关于这个问题,可参见我和Anran Yang在issue 3中的讨论。目前但按照我们的本意,是希望能提供一份系统的、具有指导性的、浅显易懂的CartoCSS指南。所以,恐怕还要一段时间才能完成第一版。我在这里对各位关注本书的读者表示歉意。

和树妈带着小树一起回到了天津的家,感觉好像很久没有回来了。为期一个月的寒假都将在这里度过,好像更久没有在家呆这么长时间了。

CartoCSS的翻译没能完成1月底之前完成初稿的预订计划,还剩下高级技巧一章的大部分没有完成。在家里干活的效率不可能很高,所以就只能尽量往前推了。

反乌三部曲都看完了,都是很优秀的经典作品,但如果非要排个序的话,我个人觉得还是:

  1. 1984
  2. 美妙的新世界
  3. 我们

我的阅读顺序是1-3-2,不过其实如果时间有限的话可以只读1-2,因为奥威尔在写《1984》的时候其实受到了扎米亚京的很多影响。

看过之后忽然觉得kindle里没什么好看的书了,导致睡前很空虚,居然已经开始刷知乎日报了。不行,得赶紧补两本电子书进去,或者开始啃本硬货。

没几天功夫,就又是10+Chrome标签页,10+Pocket未读文章,5000+Reeder未读文章了。还有Coursera的两门课、至少4本同时在看的纸书、至少2期没看的CCF通讯。。。OTL

这种感觉好像之前是在读博士的时候有过,现在又来了,是好事吗?这不熬夜怎么可能看得完啊。。。

  1. 人生的航向会在适当的时候进行调整,这很正常
  2. 每种选择都有代价,不选择也是一种选择
  3. 追随自己的内心,当断则断
  4. 保持旺盛的求知欲,永不停歇的学习
  5. 家庭的团结和稳定是底线