How to extract data for some particular region from 1 dimenational satellite data (spatial)

I have level 2 satellite data. There are 3 variables, two of them are latitude and longitude and the other one is the physical variable (methane concentration). I have to extract the data from this global set of data for Delhi region. But the problem is that concentration has only one dimension, so I could not extract the data for my desired region. I have attahed the lat, lon, var and the shapefile for which I need to extract the data. It will be really helpful if anyone could please help me in this problem that will be really nice. Thank you.

 Accepted Answer

load('sat_data.mat')
whos()
Name Size Bytes Class Attributes ans 1x37 74 char lat 458842x1 1835368 single lon 458842x1 1835368 single w 1x1 34626 struct xch4 458842x1 1835368 single
w
w = struct with fields:
Geometry: 'Polygon' BoundingBox: [2×2 double] X: [76.8869 76.8914 76.8954 76.8997 76.9065 76.9104 76.9168 76.9257 76.9218 76.9368 76.9438 76.9523 76.9608 76.9679 76.9763 76.9894 76.9949 77.0046 77.0184 77.0337 77.0432 77.0586 77.0654 77.1095 77.1241 77.1320 77.1377 77.1394 77.1385 … ] Y: [29.4777 29.4728 29.4733 29.4789 29.4857 29.4857 29.4830 29.4810 29.4751 29.4696 29.4633 29.4629 29.4674 29.4719 29.4673 29.4560 29.4530 29.4517 29.4522 29.4547 29.4532 29.4463 29.4457 29.4488 29.4529 29.4505 29.4466 29.4421 29.4369 … ] ID_0: 105 ISO: 'IND' NAME_0: 'India' ID_1: 10 NAME_1: 'Delhi' ID_2: 111 NAME_2: 'Delhi' TYPE_2: 'District' ENGTYPE_2: 'District' NL_NAME_2: '' VARNAME_2: ''
idx = inpolygon(lon,lat,w.X,w.Y);
scatter3(lon(idx),lat(idx),xch4(idx))

3 Comments

Thank you for your response sir. But sir I need spatial plot wtih pcolor, as this plot will be spatial plot. I have attched the example of one such kind of spatial plot. Thank you sir.
load('sat_data.mat')
idx = inpolygon(lon,lat,w.X,w.Y);
lon = double(lon);
lat = double(lat);
xch4 = double(xch4);
I = scatteredInterpolant(lon(idx),lat(idx),xch4(idx),'linear','none');
ulon = unique(lon(idx));
ulat = unique(lat(idx));
[x,y] = meshgrid(ulon,ulat);
p = pcolor(ulon,ulat,I(x,y));
set(p,'EdgeColor','none');
colorbar()
Thank you for your response sir. I have tried this thing. But later I have seen that griddata gave me better interpolation over the region of my interest. So, I have used griddata for solving the problem.

Sign in to comment.

More Answers (0)

Categories

Asked:

on 23 Jan 2022

Commented:

on 28 Jan 2022

Community Treasure Hunt

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

Start Hunting!