博主10-31日的更新链接如下:就是原模原样的代码,但是把R空间参考改了,可以储存地理坐标或者投影坐标了

点云生成栅格数据补充+带有地理坐标,2021-10-31_~追风筝的猫的博客-CSDN博客


点云栅格化,即把点数据划分为若干个大小相等的格网单元,并将一定的属性值填充进入格网单元内,如高程值、强度值等,最终形成一个带有坐标系的影像。


按照点云中的xyz坐标值,直接判断放到相应的栅格中,即可实现点云栅格化。

博主很长一段时间研究格网中怎么放入坐标系,怎么储存带有坐标系的地理影像,但是都以失败告终,所以在这个博客中,主要是存放一段Matlab结合GIS生成栅格数据的代码。


值得说明的是:点本身是不具备物理意义的,因此博主在写的过程中,借助了R语言的参考,将原本的每个点,转换成了圆盘,这样每个圆盘就有实际的位置,有了物理意义,并且,当点稀疏且分辨率过高时,圆盘可以有效减少栅格化过程中产生的凹坑和空白线条。


%raster
% 栅格化点云数据
% 格网平均值、格网最大值、格网最小值
clear
[X,Y,Z] = sphere(100);
a = [X(:),Y(:),Z(:)];
pcshow(a)% 提取xyz三维坐标
x = a(:,1);
y = a(:,2);
z = a(:,3);% 圆盘大小为10cm
r = 0.1;
% 8个点的间距
p = 45;
% 创建新的集合
b = [];% 读取点云的xy极限值
max_x = max(x);
min_x = min(x);
max_y = max(y);
min_y = min(y);% 栅格化点云的分辨率
cells = 0.1;% 计算格网的长度
lenx = ceil((max_x - min_x)/cells);
leny = ceil((max_y - min_y)/cells);
grid = zeros(leny,lenx);% 制作圆盘
tic
temp1 = [a(:,1)+r*cosd(67.5),a(:,2)+r*sind(67.5),a(:,3)];
temp2 = [a(:,1)+r*cosd(22.5),a(:,2)+r*sind(22.5),a(:,3)];
temp3 = [a(:,1)-r*cosd(67.5),a(:,2)+r*sind(67.5),a(:,3)];
temp4 = [a(:,1)-r*cosd(22.5),a(:,2)+r*sind(22.5),a(:,3)];
temp5 = [a(:,1)+r*cosd(22.5),a(:,2)-r*sind(22.5),a(:,3)];
temp6 = [a(:,1)+r*cosd(67.5),a(:,2)-r*sind(67.5),a(:,3)];
temp7 = [a(:,1)-r*cosd(22.5),a(:,2)-r*sind(22.5),a(:,3)];
temp8 = [a(:,1)-r*cosd(67.5),a(:,2)-r*sind(67.5),a(:,3)];
b = [b;temp1;temp2;temp3;temp4;temp5;temp6;temp7;temp8;];
toc
clear temp1 temp2 temp3 temp4 temp5 temp6 temp7 temp8tic
for j = 1:lenylimity1 = (j-1) * cells + min_y;limity2 = j * cells + min_y;c = b(b(:,2)>=limity1 & b(:,2)<limity2,:);for i = 1:lenxlimitx1 = (i-1) * cells + min_x;limitx2 = i * cells + min_x;d = c(c(:,1)>=limitx1 & c(:,1)<limitx2,:);if isempty(d) == 1grid(j,i) = NaN;else% 以最大值作为每个格网的值grid(j,i) = max(d(:,3));endend
end
toc
% grid = cell2mat(grid);
% 翻转格网
grid = flipud(grid);
imshow(grid)% R是参数,reference,在arcgis中用ascii转栅格中使用
R = {
strcat('NCOLS',32,num2str(leny));
strcat('NROWS',32,num2str(lenx));
strcat('XLLCORNER',32,num2str(min_x));
strcat('YLLCORNER',32,num2str(min_y));
strcat('CELLSIZE',32,num2str(cells));
strcat('NODATA_VALUE',32,'NULL')
}% 接下来使用save函数保存grid

产生数据如下:

栅格化结果:


打开保存的txt栅格数据,然后再排头加上R参数。比如下图,然后储存。

打开ArcGIS,搜索找到ASCII转栅格工具,输入数据为导出的txt数据,即可转换。

这里博主的惰性犯了,下面是GIS的帮助文档可看。

栅格转 ASCII—帮助 | ArcGIS for Desktop

不过这个转换好像有点玄学,博主试了很多次才成功。


如果一直是这样操作会很麻烦把,但是博主暂时没有更好的办法了,如果各位有建议,或者办法,可以给博主留言,一起讨论。

点云数据在Matlab生成格网数据-2021-10-18相关推荐

  1. MATLAB根据经纬度格网数据画地图

    worldmap([20 60],[70 140])%描绘出中国地图的轮廓 %陆地水格网数据显示 geoshow(gca,data,refvec,'DisplayType','texturemap') ...

  2. 超详细的ArcGIS生成格网知识汇总

    1. 概述 格网是使用建立格网图层地理处理工具(ArcGIS for Desktop Standard 许可等级)和格网定义文件创建的,格网定义文件中包含了规范中的全部详情.该文件中存储了各个格网的规 ...

  3. Arcgis更换布局模板_超详细的ArcGIS生成格网知识汇总

    1. 概述 格网是使用建立格网图层地理处理工具(ArcGIS for Desktop Standard 许可等级)和格网定义文件创建的,格网定义文件中包含了规范中的全部详情.该文件中存储了各个格网的规 ...

  4. arcgis fishnet 单位_ArcGIS中使用Create Fishnet生成格网

    ArcGIS 中使用 Create Fishnet 生成格网 1. 如果单元格的宽和高定义为 0 ,那么必须指定行与列的数目以及格网对角的坐标 2. 格网的范围可以手动输入,也可以引用已有数据为模板. ...

  5. Fledermaus和Surfer合作处理离散和格网数据

    最近因为涉及到巨量的点数据处理,使用了一下Fledermaus,它的能力确实出众. Fledermaus是IVS 3D公司出品的一套功能强大的交互式3维数据可视化系统.它可以帮助用户完成包括海洋(海岸 ...

  6. MATLAB生成三维体数据

    MATLAB生成三维体数据 一.三维体数据的生成 二.多二维矩阵生成三维体数据 三.多二维图像生成三维体数据 四.DICOM序列生成三维体数据 五.其他 by HPC_ZY 之前写了医学影像三维重建的 ...

  7. AVISO卫星测高格网数据下载与读取

    法国 AVISO(Archiving, Validation and Interpretation of Satellite Oceanographic)提供的格网化数据(MSLA).该数据融合了 T ...

  8. pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1)、索引不移动,移动之后无值的赋值为NaN、将原数据列与偏移后的数据列相加生成新的数据列

    pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1).索引不移动,移动之后无值的赋值为NaN.将原数据列与偏移后的数据列相加生成新的数据列 目录

  9. EXCEL中设置后面单元格的数据由前面单元格的数据带出

    EXCEL中设置后面单元格的数据由前面单元格的数据带出 1:新建一个基础数据 2:在[基础数据]中建立基础数据 3:新建一个sheet命令为[操作],并在第一列单位格设置为序列,序列的基础数据在[基础 ...

最新文章

  1. PHP MemCached win安装
  2. 哪些情况是友情链接作弊?总结了11种方法!
  3. Python输出py文件模拟代码高亮
  4. 安卓 屏蔽子控件点击事件
  5. python入门基础系列_Python3基础系列-基本入门语法
  6. 素数对(信息学奥赛一本通-T1403)
  7. Error: .eslintrc.js » eslint-config-standard: Environment key “es2021“ is unknown 版本兼容问题
  8. python基础(四)运算
  9. 推荐系统遇上深度学习(七)--NFM模型理论和实践
  10. b站怎么删自己的专栏_麦当劳B站直播翻车,品牌B站营销到底应该怎么做?
  11. gopython 获取python 全局线程锁失败_Python之路(第四十三篇)线程的生命周期、全局解释器锁...
  12. 测试驱动开发之初窥门径
  13. 成功解决python.exe 无法找到入口 无法定位程序输入点
  14. 洛谷-2822 组合数问题
  15. 中望3D 2021 插入基准面 - 三点法
  16. Android实现个人中心设置界面
  17. 音符起始点检测(音频节奏检测)(5)
  18. LinuxProbe学习笔记(九)
  19. 热血传奇服务端装备穿戴触发脚本
  20. 。iod_IOD '09,第二天:Maria Winans谈信息主导的即时通讯转型

热门文章

  1. 前端----HTML/CSS 圆角边框
  2. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图
  3. 手机号空号批量检测接口
  4. 电容-去耦和退耦的注意事项
  5. 360影视大全下载|360影视大全电脑版下载
  6. 2017年Java就业前景和工资待遇
  7. 如何运行android sdk sample中的单元测试
  8. python 战棋游戏代码实现
  9. Python程序练习题
  10. Android必备:签名整理