1

以下 MATLAB 脚本在 300x400 数组中生成随机位置,并使用 1-12 的值对这些位置进行编码。 如何将此非空间数组转换为 geotiff?我希望使用 geotiff 输出来进行一些试验分析。任何投影坐标系(例如 UTM)都可以用于此分析。

我尝试使用geotiffwrite()以下实现但没有成功:

out = geotiffwrite('C:\path\to\file\test.tif', m)

这会产生以下错误:

>> test
Error using geotiffwrite
Too many output arguments.

编辑:

我遇到的主要问题是缺乏对该geotiffwrite()函数的输入。我不确定如何处理这个问题。例如,我没有AR变量,因为数组没有空间参考。只要每个像素都在某处进行地理参考,我不在乎空间参考是什么。这样做的目的是创建一个示例数据集,我可以使用 MATLAB 空间函数进行试验。


% Generate a totally black image to start with.
m = zeros(300, 400, 'uint8');

% Generate 1000 random locations.
numRandom = 1000;
linearIndices = randi(numel(m), 1, numRandom);

% Set those locations to be "white".
m(linearIndices) = randi(12, [numel(linearIndices) 1]);

% Display it.  Random locations will appear white.
image(m);
colormap(gray);  
4

1 回答 1

1

我相信你的问题有一个非常简单的答案。out调用时跳过- 变量geotiffwrite。也就是说,使用:

geotiffwrite('C:\path\to\file\test.tif', m)

代替

out = geotiffwrite('C:\path\to\file\test.tif', m)

这是使用 的工作代码示例geotiffwrite,取自文档。如您所见,那里没有输出变量:

basename = 'boston_ovr';
imagefile = [basename '.jpg'];
RGB = imread(imagefile);
worldfile = getworldfilename(imagefile);
R = worldfileread(worldfile, 'geographic', size(RGB));
filename = [basename '.tif'];
geotiffwrite(filename, RGB, R)
figure
usamap(RGB, R)
geoshow(filename)

更新:

根据文档,您至少需要 3 个输入参数。正确的语法是:

geotiffwrite(filename,A,R)
geotiffwrite(filename,X,cmap,R)
geotiffwrite(...,Name,Value)

从文档:

geotiffwrite(filename,A,R)将地理参考图像或数据网格 , A空间参考R, 写入输出文件 ,filename

请访问此链接以查看如何使用该功能。

于 2014-02-06T17:36:44.130 回答