У нас есть растровый файл с географической привязкой и список координат широты и долготы, которые мы хотим построить поверх этого растрового файла, чтобы получить растровые значения по этим координатам.
Вот список координат:
mapshow(lon,lat,'DisplayType','point') %x,y
Конечно, долгота находится между -180 и +180 и широтой между -90 и + 90.
А вот и растровый файл:
proj = geotiffinfo('global2001.tif');
[raster_tiff,cmap_tiff,reference_tiff] = geotiffread('global2001.tif');
figure
mapshow(raster_tiff,cmap_tiff,reference_tiff)
proj = FileModDate: '20-nov-2018 14:15:52'
FileSize: 121625752
Format: 'tif'
FormatVersion: []
Height: 40032
Width: 80062
BitDepth: 8
ColorType: 'indexed'
ModelType: 'ModelTypeProjected'
PCS: ''
Projection: ''
MapSys: ''
Zone: []
CTProjection: 'CT_Sinusoidal'
ProjParm: [7×1 double]
ProjParmId: {7×1 cell}
GCS: 'WGS 84'
Datum: 'World Geodetic System 1984'
Ellipsoid: 'WGS 84'
SemiMajor: 6378137
SemiMinor: 6.3568e+06
PM: 'Greenwich'
PMLongToGreenwich: 0
UOMLength: 'metre'
UOMLengthInMeters: 1
UOMAngle: 'degree'
UOMAngleInDegrees: 1
TiePoints: [1×1 struct]
PixelScale: [3×1 double]
SpatialRef: [1×1 map.rasterref.MapCellsReference]
RefMatrix: [3×2 double]
BoundingBox: [2×2 double]
CornerCoords: [1×1 struct]
GeoTIFFCodes: [1×1 struct]
GeoTIFFTags: [1×1 struct]
И теперь мы проецируем координаты, используя ту же проекцию, что и растровый файл:
mstruct = geotiff2mstruct(proj);
% get current axis
axesm('MapProjection',mstruct.mapprojection,'Frame','on')
h=get(gcf,'CurrentAxes');
assert(ismap(h)==1,'Current axes must be map axes.')
mstruct=gcm;
[x,y] = mfwdtran(mstruct,lat,lon,h,'none');
figure
mapshow(x,y,'DisplayType','point') %x,y
В результате на этом рисунке
Проблема в том, что проекционные координаты идут от -3 до +3 и от -1 до +1и ось в растровом файле изменяется от -2 до +2, но до степени 7, поэтому, если мы нанесем эти точки поверх этого растра, мы увидим все как одну единственную точку где-нибудь в Атлантике.
В конце концов, мы хотим использовать функцию latlon2pix, чтобы получить значения пикселей в каждом из tон координирует точки, но, во-первых, мы должны быть способны соединить две вещи.Есть идеи?
Функция геошоу не работает.У нас достаточно оперативной памяти ...