Различный рисунок отображается между mapshow () и imshow () для (geo) tif файла? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь импортировать данные из файла .tif, сгенерированного в ArcGIS, в MATLAB. Я знаю, как должно выглядеть окончательное изображение, потому что есть версия в формате .pdf данных с сеткой, размещенная с данными, которые я скачал (поэтому я могу проверить, правильно ли я это сделал).

Мне удалось загрузить файл .tif, но в зависимости от того, как я читаю данные и как я их рисую, результаты выглядят совсем иначе. Я знаю, что изображение, которое я хочу, ближе к изображению в imread () и нанесено с помощью imshow (). Два изображения, сгенерированные здесь, и версия .pdf, которую я пытаюсь воссоздать, прилагаются. Мне интересно,

(1), как окрасить эти данные и

(2), если различия между этими двумя изображениями являются просто цветовой шкалой. Следует отметить, что исходный файл .pdf окрашен в цвет, но ни мои переменные 'X', ни 'gridd' не имеют третьего измерения, которое содержало бы информацию о цвете.

filename= 'Na_dep_2017.tif';  % My file 
infoii = imfinfo(filename,'tif'); % Get info about my file 

[gridd,R] = geotiffread(filename); % Load in geocoded tiff file. 
gridd(gridd==str2num(infoii.GDAL_NODATA))=NaN; % Set NANs where we have no data. 

[X,cmap] = imread(filename); % Load it in as an image. 
X(X==str2num(infoii.GDAL_NODATA))=NaN; % Set NANs where we have no data. 

figure(1) 
subplot(1,2,1)
imshow(X,cmap); title('Loaded with imread(), plotted with imshow()')

subplot(1,2,2)
mapshow(double(gridd),R);
title('Loaded with geotiffread(), plotted with mapshow()')

Два разных изображения, которые я делаю и фактическое изображение

1 Ответ

0 голосов
/ 22 января 2020

Я не думаю, что при загрузке данных фактически изменяется изображение, которое вы получаете, но, похоже, оно влияет на черно-белый максимум / мин, с которым отображается изображение. Поэтому два изображения принципиально не отличаются. Я использовал один из этих методов и не беспокоился о том, чтобы раскрасить изображение, используя каналы rgb, потому что я фактически получил поверхность данных, из которой сделано изображение, путем загрузки данных. Я использовал pcolor () для отображения переменной 'gridd' со стандартной картой цветов MATLAB следующим образом.

    filename= 'Na_dep_2017.tif';  % My file 
    infoii = imfinfo(filename,'tif'); % Get info about my file 

    [gridd,R] = geotiffread(filename); % Load in geocoded tiff file. 
    gridd(gridd==str2num(infoii.GDAL_NODATA))=NaN; % Set NANs where we have no data. 

    figure(1) 
    h=pcolor(flipud(double(gridd))); 
    set(h, 'EdgeColor', 'none'); % Makes tightly gridded figure not all black.
    colormap(jet)
...