
人物简介
杜雨是EasyCharts团队的一员,同时,他在R语言中文社区开设了专栏。他对Excel图表制作、R语言数据展示和地理信息数据展示情有独钟。在地理信息数据展示方面,他积累了丰富的操作经验,并形成了自己独特的见解。不久的将来,他将向大家分享他在R语言地图绘制方面的实用技巧。
地图制作过往经验
过去,杜雨在运用ggplot2软件中的geom_polygon()功能制作地图时,未曾遭遇过投影方面的问题。在制作国家地图时,只需将coord_map函数的参数设置为polyconic,即可实现多圆锥投影的常规效果;而在绘制平面视角的世界地图时,无需对coord_map的默认参数进行更改,因为其默认即为墨卡托投影;若需得到三维椭球体投影的世界地图,只需将coord_map的参数更改为ortho即可。
geom_polygon()的弊端

使用geom_polygon()函数绘制地图,成本相对较高。这主要因为geom_polygon与GIS系统中的数据模型,比如sp、sf等,存在兼容性问题。使用这些模型需要投入很多时间,首先得从数据里提取出构成geom_polygon的点、线和多边形数据,接着按照ggplot2的标准来绘制图形,这一系列步骤相当复杂。
R语言中GIS数据模型包

R语言中有两个库特别适用于GIS数据的建模,它们是sp库和sf库。在ggplot2的早期版本里,geom_polygon函数对sp库的数据有较强的依赖,同时它也能够处理sf库的数据。sf库的一个显著优点是,当使用geom_sf函数时,输入的数据模型无需经过额外的清洗或转换,该函数能够自动识别。此外,无需详述具体经纬度或分组信息。只需确定美学上的对应关系,geom_sf系统便会自动完成剩余任务。

投影信息处理
地图资料若结构完备,投影上的问题通常不会很严重。然而,若原始资料中缺乏投影数据,例如shp文件中缺少.prj文件,我们便需制作投影文件,或手动调整至正确的坐标系统。此外,还可以利用st_crs函数来验证导入的sf对象是否包含投影信息。
投影后使用图层函数的要点

经过投影处理后的坐标系统已通过投影算法实现了转换。因此,在应用geom_text等图层功能时,必须确保所选的经纬度点与几何对象的投影一致。使用sf包提供的点中心计算方法,操作变得更为简单快捷。在为各省份设置数据标识时,可以利用sf包中的st_centroid函数,该函数能够确定每一项地理属性的中心位置。此外,sf包里的投影配置包括两种表述方式,即EPSG代码,也称作WKID或SRID。在使用sf模型时,需要确认素材内是否存在预设的投影。若存在,即可直接进行转换;若不存在,建议先将素材转换至WGS84(4236)坐标系,然后再进行其他坐标系的转换。
在使用R语言处理和展示地理信息时,你是否曾遭遇过与地图投影相关的问题困扰?
