最近好多朋友找我聊Geo数据R代码的问题。
大家都说难。
真的难吗?
我觉得吧,难的是大家没找对路子。
以前我也纠结好久,满世界找教程,最后发现,其实核心就那几个点。
别被那些高大上的术语吓退,咱们直接上干货。
先说环境。
很多小白一上来就搞那些花里胡哨的配置。
比如什么Conda环境,什么复杂的路径依赖。
听我一句劝,先别搞那么复杂。
直接用RStudio,装上sf包,还有tmap,差不多就够了。
对,就是sf。
千万别再用旧版的sp包了,真的,太慢,而且代码看着就头疼。
sf包是现在的趋势,简单直观,就像操作普通表格一样操作地图。
我有个学生,以前做项目,非要用sp包。
结果处理一个几百兆的shapefile文件,电脑风扇转得像飞机起飞一样。
最后还报错,说是内存溢出。
后来换了我推荐的sf代码,秒出结果。
这就叫工欲善其事,必先利其器。
再说说坐标系统一。
这是最容易翻车的地方。
你想想,你手里的数据,有的是WGS84,有的是Web Mercator,还有国内特殊的GCJ-02。
混在一起画,那就不是地图,那是抽象艺术。
我之前帮一个电商客户做热力图。
他们的GPS数据,直接扔进R里画图。
结果发现,整个地图偏了十万八千里。
本来在北京,画到了非洲去了。
客户当时脸都绿了。
怎么解决?
用st_transform函数。
不管什么坐标系,先把它们统一到一个标准的投影里去。
比如最常用的EPSG:3857,或者按国家分的UTM分区。
这一步不能省,也不能偷懒。
不然你后续做缓冲区分析,距离计算,全是错的。
做图的时候,我也经常遇到颜色搭配的问题。
默认的颜色,真的挺丑的。
尤其是当你的数据分类比较多的时候,颜色容易打架。
这时候,可以看看RColorBrewer这个包。
里面有一些现成的配色方案,比如Set2,或者YlGnBu。
选对了颜色,你的图看起来就专业多了。
别小看配色。
有时候,读者能不能看懂你的图,全靠这个。
还有数据清洗环节。
地理数据往往脏得很。
多边形重叠,线状数据断开,这些毛病太常见了。
处理这些,得有点耐心。
可以用st_union合并重叠部分,用st_make_valid修复无效几何。
这一步很枯燥,但必须做。
不然后面出图的时候,那块地图就会有个大洞,或者线条飞出去了。
显得特别不靠谱。
记得去年有个案例,做城市绿地分析。
因为没清理好数据,导致有些公园被算成了两次面积。
结果分析报告里,绿地覆盖率虚高了15个百分点。
这在领导眼里,可是大事。
所以,Geo数据R代码不仅仅是写代码,更是逻辑严谨的体现。
最后,分享个小技巧。
别总盯着全局看。
有时候,局部放大看,才能发现问题。
用plot函数的时候,可以指定xlim和ylim,只画你需要的那一块。
这样调试起来快,也看得清楚。
总之,学这个玩意儿,别急。
多试,多报错,多查文档。
R语言的文档其实写得挺好的,虽然有时候英文有点绕。
但只要肯钻,总能找到解决办法。
希望大家都能画出漂亮又准确的地图。
毕竟,在这个看图的年代,一张好地图,胜过千言万语。
加油吧,各位数据民工。
本文关键词:Geo数据R代码