matlab怎么合并两个shp地图_没想到使用R画地图数据这么简单

本文介绍了如何使用R语言绘制地图,包括读取shp文件并进行展示。通过`readShapePoly`函数加载地图数据,然后利用`plot`函数生成地图。为了改善地图的形状失真问题,建议使用`maps`和`mapdata`包,并通过`map`函数结合地理坐标系来绘制更准确的地图。
摘要由CSDN通过智能技术生成

用R画地图数据

首先,先下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下。

bd8e5663e1aed5af6cc65bcb77614a0f.png

用R绘制地图比较简单。比如画一下全国范围的区域,可以用如下代码:

library(maptools)

mydat = readShapePoly("china-province-border-data.tar/china/bou2_4p.shp") #地图包位置,根据自己的角标位置设置

plot(mydat)

生成的图如下:

459bc3779fb2ad541156b7168438e520.png

但是,可以看出这样绘制的地图的形状有些扁平。这是因为,在绘图的过程中,默认把经度和纬度作为普通数据,均匀平等对待,绘制在笛卡尔坐标系上造成的。其实,地球的球面图形如何映射到平面图上,在地理学上是有一系列不同的专业算法的。地图不应该画在普通的笛卡尔坐标系上,而是要画在地理学专业的坐标系上。

也可以安装maps和mapdata这两个包,然后输入下面的命令:

install.packages(mapdata)

install.packages("mapdata")

library(maps)

library(mapdata)

map("china")

生成的图如下:

25d093c8583797f429022df7bd7c07c9.png

其中map()函数还可以加上很多参数,大致如下:

map(database = "world

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值