R语言对地形数据进行三维可视化

数据分析 同时被 2 个专栏收录
124 篇文章 16 订阅
123 篇文章 43 订阅
通过R语言,可以对DEM数据进行可视化,无论是二维的可视化还是三维的可视化,都得心应手,先看看效果:

1、二维可视化:栅格渲染+等高线


2、三维可视化:网格白膜



3、三维渲染可视化。



下面通过R语言脚本,来解释如何制作这样的可视化效果:


##########################################

#### 新西兰的芒格法奥火山地形可视化   ####

##########################################

 

#首先加载volcano.csv数据,并且设置没有列头名称

volcanodem <- read.csv("E:/volcanodem", header=FALSE)

 

#将数据集转换为矩阵

volcano <- as.matrix(volcanodem)

 

#设置高程值

z <- volcano

#x坐标,每个网格为10米分辨率,方向由南向北

x <- 10*(1:nrow(z))   

#y坐标,每个网格为10米分辨率,方向由东向西

y <- 10*(1:ncol(z))    

 

## 二维可视化:栅格+等高线(见图片1)

par(mar=rep(0.5,4))              

image(x, y, z, col=terrain.colors(100), axes=F)

contour(x, y, z, levels=seq(from=min(z), to=max(z), by=10),axes=F, add=T)

 

## 三维可视化(见图片2)

par(mar=rep(0,4))    

#三维网格模式显示(白膜)

persp(x,y,z,theta=120,phi=15,scale=F,axes=F)

 

 

## 带色带的三维模式渲染(见图片3)

#设置高程值为2倍拉伸

z <- 2 * volcano

x <- 10 * (1:nrow(z))

y <- 10 * (1:ncol(z))

 

## 创建一份新的用于绘制的网格数据集

#z0是用于设置栅格边缘的颜色

z0 <- min(z) - 20

#用z0的颜色,把整个栅格包裹起来

z <- rbind(z0, cbind(z0, z, z0), z0)

#用x的最小值和最大值,把x包裹起来,对应上面那个z0

x <- c(min(x) - 1e-10, x, max(x) + 1e-10)

#用y的最小值和最大值,把x包裹起来,对应上面那个z0

y <- c(min(y) - 1e-10, y, max(y) + 1e-10)

 

## 创建用于显示颜色的矩阵

#默认全部使用绿色

fcol <- matrix("green3", nr = nrow(z)-1, nc = ncol(z)-1)

#用灰色把所有的绿色都包裹起来,即设置四周的边界值

fcol[ , i2 <- c(1,ncol(fcol))] <- "gray"

fcol[i1 <- c(1,nrow(fcol)) , ] <- "gray"

 

## Take average of four neighboring values for palette

##将上面设置的默认色,用都取相邻的四个格网颜色的平均值进行替换

zi <- (volcano[ -1,-1] + volcano[ -1,-61] + volcano[-87,-1] + volcano[-87,-61])/4

pal <- terrain.colors(20)[cut(zi, quantile(zi, seq(0,1, len = 21)), include.lowest = TRUE)]

fcol[-i1,-i2] <- pal

 

## 绘图

par(mar=rep(0,4))

persp(x, y, z, theta=120, phi=15, col = fcol, scale = FALSE, shade = 0.4, border = NA)

最后来一张珠穆朗玛峰的:



脚本和数据下载地址:
http://ncportal.esrichina.com.cn/arcgis/home/item.html?id=9cb5eb34f95f4a9b85fc3d523019098d

  • 7
    点赞
  • 5
    评论
  • 21
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
本书较全面地介绍了R应用于空间数据分析的原理和方法。在介绍R中空间数据类、方法、空间对象、空间点类、空间线类、空间面类及空间网格的基础上,首先介绍了空间数据可视化空间数据的导人导出、空间数据的处理及定制多点数据、六角形网格、时空网格及大型网格数据类的方法;然后介绍了空间点模式分析、插值与地统计分析、面数据空间自相关分析和面数据建模;最后介绍了空间数据分析在疾病数据制图及分析中的应用。 本书适合作为“空间信息处理”和“空间信息可视化”课程的教材,通过大量的实例展示了 空间分析方法的应用领域及其价值,较全面地展示了R在空间统计与分析中的成果与前景。本书配套网站包括了书中的所有实例、所涉及的包和数据集,对读者学习和研究将有很大帮助。 目录 第一部分 r的空间数据处理 第1章 空间数据介绍 1.1 空间数据分析 1.2 为什么要用r 1.2.1 概述 1.2.2 为什么使用r进行空间数据分析 1.3 r和gis 1.3.1 什么是gis 1.3.2 面向服务的架构 1.3.3 进一步了解gis 1.4 空间数据的类型 1.5 存储和显示 1.6 空间数据分析应用 1.7 r空间资源 1.7.1 在线资源 1.7.2 本书的结构 第2章 r的空间数据类 2.1 概述 2.2 r中的类和方法 2.3 spatial对象 2.4 spatialpoints类 2.4.1 方法 2.4.2 空间数据数据框 2.5 spatiallines类 2.6 spatialpolygons类 2.6.1 spatialpolygons dataframe对象 2.6.2 孔和环方向 2.7 spatialgrid和spatialpixel对象 第3章 空间数据可视化 3.1 传统绘图系统 3.1.1 绘制点、线、多边形和网格 3.1.2 坐标轴和布局元素 3.1.3 坐标轴标签和参考网格中的度 3.1.4 绘图尺寸、绘图区域、地图比例以及多图绘制 3.1.5 绘图属性和地图图例 3.2 使用spplot的trellis/lattice绘制 3.2.1 一个直观的trellis示例 3.2.2 绘制点、线、面和网格 3.2.3 对图添加参考物和布局元素 3.2.4 安排面板布局 3.3 绘图交互 3.3.1 基本图形的交互 3.3.2 spplot和lattice的绘图交互 3.4 彩色调色板和类区间 3.4.1 彩色调色板 3.4.2 类区间 第4章 空间数据导入/导出 4.1 坐标参考系 4.1.1 使用epsg清单 4.1.2 proj.4 crs规范 4.1.3 投影和坐标转换 4.1.4 度、分和秒 4.2 矢量文件格式 4.2.1 使用rgdal包中的ogr驱动程序 4.2.2 其他的导入/导出函数 4.3 栅格文件格式 4.3.1 使用rgdal包中的gdal驱动 4.3.2 编写一个google earth影像覆盖 4.4 grass 百老街霍乱数据 4.5 其他的导入/导出接口 4.5.1 分析和可视化应用 4.5.2 terralib和art 4.5.3 其他gis和web地图系统 4.6 安装rgdal包 第5章 空间数据处理高级方法 5.1 支撑 5.2 叠置 5.3 空间取样 5.4 拓扑检查 5.4.1 多边形合并 5.4.2 孔状态检查 5.5 组合空间数据 5.5.1 组合位置数据 5.5.2 组合属性数据 5.6 辅助函数 第6章 定制空间数据类和方法 6.1 使用类和方法编程 6.1.1 s3型类和方法 6.1.2 s4型类和方法 6.2 程序包trip中的动物足迹数据 6.2.1 通用函数和构造函数 6.2.2 trip对象的方法 6.3 多点数据空间多重点 6.4 六边形网格 6.5 时-空网格 6.6 蒙特卡洛模拟的空间分析 6.7 大型网格的处理 第二部分 空间数据分析 第7章 空间点模式分析 7.1 概述 7.2 空间点模式分析包 7.3 点模式的初步分析 7.3.1 完全空间随机模式 7.3.2 g函数:最近邻事件距离 7.3.3 f函数:一个点到其最邻近事件的距离 7.4 空间点过程的统计分析 7.4.1 同质泊松过程 7.4.2 非同质泊松过程 7.4.3 强度的估计 7.4.4 非同质泊松过程的似然 7.4.5 二阶特性 7.4.6 非同质的k函数 7.5 在空间流行病中的一些应用 7.5.1 病例控制研究 7.5.2 二元回归估计 7.5.3 使用广义加模型的二元
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

虾神说D

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值