matlab读取有经纬度的txt格网文件
时间: 2023-09-20 09:11:55 浏览: 101
如果你的 txt 格网文件是经纬度格式,你可以按照以下步骤读取:
1. 打开文件
使用 `fopen` 函数打开文件:
```matlab
fid = fopen('filename.txt', 'r');
```
2. 读取文件头
读取文件头信息,包括经纬度坐标范围、每个格网的大小等信息。假设文件头信息的前五行分别是:
```
NCOLS 360
NROWS 180
XLLCORNER -180
YLLCORNER -90
CELLSIZE 1
```
则可以通过以下代码读取文件头信息:
```matlab
header = cell(5,1);
for i=1:5
header{i} = fgetl(fid);
end
ncols = sscanf(header{1}, '%*s %d');
nrows = sscanf(header{2}, '%*s %d');
xllcorner = sscanf(header{3}, '%*s %f');
yllcorner = sscanf(header{4}, '%*s %f');
cellsize = sscanf(header{5}, '%*s %f');
```
3. 读取数据
根据文件中的经纬度坐标范围和每个格网的大小,可以计算出每个格网的经纬度坐标。假设文件中的数据是以行优先(row-major)的顺序存储的,则可以按照行优先的顺序读取数据:
```matlab
data = zeros(nrows, ncols);
for i=1:nrows
row_data = fscanf(fid, '%f', [1, ncols]);
data(i,:) = row_data;
end
```
4. 关闭文件
最后,使用 `fclose` 函数关闭文件:
```matlab
fclose(fid);
```
完整的代码如下:
```matlab
fid = fopen('filename.txt', 'r');
header = cell(5,1);
for i=1:5
header{i} = fgetl(fid);
end
ncols = sscanf(header{1}, '%*s %d');
nrows = sscanf(header{2}, '%*s %d');
xllcorner = sscanf(header{3}, '%*s %f');
yllcorner = sscanf(header{4}, '%*s %f');
cellsize = sscanf(header{5}, '%*s %f');
data = zeros(nrows, ncols);
for i=1:nrows
row_data = fscanf(fid, '%f', [1, ncols]);
data(i,:) = row_data;
end
fclose(fid);
```
希望这个回答能够帮到你!
阅读全文