.txt XYZ坐标转换为DEM - MATLAB

soat7uwm  于 2023-08-06  发布在  Matlab
关注(0)|答案(1)|浏览(221)

我有一个.txt文件,其中包含给定景观的x,y,z坐标。我正试着把它转换成DEM这样我就可以进一步操作它了。到目前为止,我一直在ArcGIS中进行转换,但我想在Matlab中进行转换。
下面是我的代码:

a=load('topo_2000.txt');
x=a(:,1);
x=x(1:101);
y=a(:,2);
y=y(1:101:end);
z=a(:,3);
z_grid=reshape(z,[length(x),length(y)]);

xyz = pointCloud(z_grid);

DEM = GRIDobj(xyz);

字符串
它返回以下错误消息:

Error using pointCloud/validateAndParseInputs
Invalid argument at position 1. Expected input 'xyzPoints' to be of size M-by-3 or M-by-N-by-3.

Error in pointclouds.internal.pointCloudBase (line 83)
            [xyzPoints, C, nv, I, rangeData] = this.validateAndParseInputs(varargin{:});

Error in pointCloud (line 14)
            this = this@pointclouds.internal.pointCloudBase(varargin{:});

Error in fromModel (line 23)
xyz = pointCloud(z_grid);


从我所收集的信息来看,这意味着我创建点云的方式有问题,但我不知 prop 体是什么或如何修复它。我试过在没有修改z_grid的情况下运行它,如下所示,但也不起作用。
下面是我的.txt文件的一个示例块:

0   100 0.6847
100 100 1.94
200 100 2.7184
300 100 3.2816
400 100 3.3127
500 100 3.4899
600 100 3.6633

ycl3bljg

ycl3bljg1#

我通过修改代码解决了这个问题,如下所示(以防其他人有类似的问题):

a=load('C:\full\path\to\to\file.txt');
x = a(:, 1);
y = a(:, 2);
z = a(:, 3);

[xq, yq] = meshgrid(min(x):100:max(x), min(y):100:max(y));
%with 100=my step size, i.e. the original resolution of my point grid
zq = griddata(x, y, z, xq, yq);

DEM = GRIDobj(xq, yq, zq);

字符串

相关问题