extracting lat/lon from tif file using matlab

조회 수: 17 (최근 30일)
Seyedeh Fardis
Seyedeh Fardis 2023년 10월 24일
댓글: Cris LaPierre 2023년 10월 25일
I have a tif file with a map of locations that has data. I want the lat/lon of that locations using matlab.
I ploted that in matlab using this code
[tifImage, R] = geotiffread('NA_CONUS_border.tif');
>> tifImageDouble = double(tifImage);
>> figure;
mapshow(tifImageDouble, R);
title('Georeferenced TIFF Image');
locations with data has [R,G,B]=[1 1 1].
I want to Convert pixel coordinates to geographic coordinates [lat lon].
does anyone have any idea how to do that?
  댓글 수: 5
Dyuman Joshi
Dyuman Joshi 2023년 10월 24일
@Seyedeh Fardis Please attach the tif file (as asked earlier as well).
And mention which version of MATLAB you are using.
Seyedeh Fardis
Seyedeh Fardis 2023년 10월 24일
I'm using R2020a .

댓글을 달려면 로그인하십시오.

답변 (2개)

Cris LaPierre
Cris LaPierre 2023년 10월 24일
편집: Cris LaPierre 2023년 10월 24일
See this answer, which was updated in 2022.
I will mention that I did have to set the 'OutputType' to get it to work.
unzip("NA_CONUS_border.tif")
% Read image file using readgeoraster
fname = "NA_CONUS_border.tif";
[A,R] = readgeoraster(fname,"OutputType","double");
mapshow(A,R)
% Create grid of X,Y values
[x,y] = worldGrid(R);
% Convert grid of X,Y values to latitude/longitude
[lat,lon] = projinv(R.ProjectedCRS,x,y);
% Extract lat/lon locations of white line
NA_lat = lat(A==1);
NA_lon = lon(A==1);
% Plot extracted latitude/longitude on geographic axes
figure
geoscatter(NA_lat,NA_lon,'.')
geobasemap satellite
title("geographic axes")
  댓글 수: 2
Seyedeh Fardis
Seyedeh Fardis 2023년 10월 25일
Thank you for that! does tif file contain data as well? I have a dataset and I want to see which data is for which node. I'm not sure if that data is available is tif file as well. if yes, how I can load then in matlab in ordeer of lat/lon?
Cris LaPierre
Cris LaPierre 2023년 10월 25일
You could check what information is available using geotiffinfo

댓글을 달려면 로그인하십시오.


DGM
DGM 2023년 10월 24일
I never really use mapping stuff, so take this with a grain of salt.
fname = 'NA_CONUS_border.tif';
[tifImage, R] = geotiffread(fname);
S = geotiffinfo(fname);
tifImage = double(tifImage); % contains unique values [0 1 2] (a label array??)
mapshow(tifImage, R);
title('Georeferenced TIFF Image');
% get pixels that are exactly 1
% this ignores the fact that pixels >1 will also be white.
% adjust the test accordingly
[row col] = find(tifImage == 1);
% convert to lat/lon
[x y] = pix2map(S.RefMatrix,row,col);
[lat lon] = projinv(S,x,y);
  댓글 수: 1
Seyedeh Fardis
Seyedeh Fardis 2023년 10월 25일
Thank you for that! does tif file contain data as well? I have a dataset and I want to see which data is for which node. I'm not sure if that data is available is tif file as well. if yes, how I can load then in matlab in ordeer of lat/lon?

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by