How to read ASCII grid format
30 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I am confused about how to read this ASCII grid I have.
Let's call it A.asc A has a resolution of 0.5 x 0.5 degrees
ncols 720
nrows 360
xllcorner -180.25
yllcorner -89.75
cellsize 0.5
NODATA_value -9999
I am confused about the gridding format because this dataset should be worldwide and have even intervals of 0.5
How should I make the latitude and longitude vectors?
If I use linspace, I will not get a 360x1 vector evenly spaced by 0.5
Does it go from -180.25 to 0? If so, then what happened to the coordinates between 0 and 180?
Thank you,
Melissa
3 commentaires
Stephen23
le 24 Fév 2016
Hi , i wanna ask you the same question , I want to extract a matrix based on a large matrix that I have in ascii format, the problem is that I dont have the number of row or column of the matrix I just have the geographic coordinates, so how to do? Thank you
Réponse acceptée
Mohammad Abouali
le 13 Jan 2015
Modifié(e) : Mohammad Abouali
le 14 Jan 2015
% Read your data
[Data,RefMat]= arcgridread('youtfile.shp');
% prepare a lat/lon grid
[nrows,ncols,~]=size(Data);
[row,col]=ndgrid(1:nrows,1:ncols);
[lat,lon]=pix2latlon(RefMat,row,col);
% NOTE: lat(:,1) and lon(1,:)' are the vectors that you are looking
% display a sample field
figure,
worldmap([min(lat(:)) max(lat(:))],[min(lon(:)) max(lon(:))])
geoshow(lat,lon,Data(:,:,1),'DisplayType','surface');
% display on a globe (more fancy)
figure
axesm('globe','Geoid',earthRadius)
meshm(Data(:,:,1), RefMat)
view(3)
set(gca,'Box','off')
1 commentaire
Mohammad Abouali
le 14 Jan 2015
Modifié(e) : Mohammad Abouali
le 14 Jan 2015
% NOTE: lat(:,1) and lon(1,:)' are the vectors that you are looking
Plus de réponses (1)
Mohammad Abouali
le 13 Jan 2015
Modifié(e) : Mohammad Abouali
le 13 Jan 2015
A bit of explanation for ESRI Arc ASCII Grid Format:
At the end you get an image of with nRows x nCols So it means your data is 360x720.
If you check after No Data there should be n*360 lines and 720 number on each line. (n is number of bands).
xll,yll, and cell size are obvious.
I usually turn No-Data to NaN. NODATA_value means anywhere you see that number it wasn't any data for it.
Note that the ascii file is written like an image. So the left most number on the line is for on the west side and the right most number on the line is for the east side.
Also first line is on top (so north) and the last line in the file is located on the south part of your image. Therefore your lat/lon or coordinates would be
lon=(0:-1:-(nrows-1)).*cellsize + yllcorner + cellsize/2
lat=(0:ncols).*celsize + xllcorner + cellsize/2
note the cellsize/2 because x/yllcorner is the lower left corner of the cell. If instead of x/yllcorner you had x/yllcenter then it was the center of the cell.
You longitude seems to be from -180 to 179.5 (cell centers) So the entire globe.
But I see that your yllcorner is -89.75. That is kinda strange. If it is indeed like that some how your ascii file is written from south to north, which is not usual. Check if it was -89.75 or +89.75.
You can write your own reader, it is very easy. Or you can use the MATLAB's arcgridread().
3 commentaires
Mohammad Abouali
le 13 Jan 2015
Modifié(e) : Mohammad Abouali
le 13 Jan 2015
That's the reference matrix. if you have the row and col number of a pixel then the lat/lon coordinate would be:
[lon lat] = [row col 1] * R
You can use it to calculate the coordinate of each pixel, or show the data on the coordinate. Check mapshow() or geoshow() for some examples.
That's strange though that the yllcorner starts from the south. ESRI ASCII standard says that it should start from north. Although, I have to say that Lat=90.5 doesn't exist.
If your original question is answered please accept the answer. If you have further question, please start a new questions.
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!