How to plot a mashgrid within an ir-regular shape?

19 views (last 30 days)
Hi everyone,
I am looking to plot a meshgrid figure with an irregualr shape and then need to need the grids within a bounded regions along with the central location of each grid point.
Here is what i did so far:
% Step 1: Create a rectangualr meshgrid considering the region of
% ir-regualr bounded area
clear all
clc
x=72.68:0.005:72.97;
y=34:0.005:34.7;
n = length(x ) ;
m = length(y ) ;
[X,Y] = meshgrid(x,y ) ;
plot(X,Y,'r',X',Y','r ')
%Result is as below
Step 2: Plot dimensions of the bounded area over the meshgrid map
clear all
clc
x=72.68:0.005:72.97;
y=34:0.005:34.7;
n = length(x ) ;
m = length(y ) ;
[X,Y] = meshgrid(x,y ) ;
plot(X,Y,'r',X',Y','r ')
hold on
data=readmatrix('dam_area.csv');
x1=data(:,1);
y1=data(:,2);
z1=data(:,3)*0;
plot(x1, y1, 'blue')
%Result as below
What I need at the first stage?
I want to delete all the grid outside the bounded area and only keep the griids inside the bounded area.
expected results as below (@KSSV help in plotting this, but not very sure about the approach)
What else I need?
I require to know the central value (lat, long values, assume z here zero) of each grid (with the bounded area) so i can use thouse central values to plot other parameteres with the same grids.
Thank you!
(Data is attached).

Accepted Answer

KSSV
KSSV on 17 May 2023
Edited: KSSV on 17 May 2023
clc; clear ;
x=72.68:0.005:72.97;
y=34:0.005:34.7;
n = length(x ) ;
m = length(y ) ;
[X,Y] = meshgrid(x,y ) ;
data=readmatrix('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1385964/area.csv/area.csv');
x=data(:,1);
y=data(:,2);
z=data(:,3);
F = scatteredInterpolant(x,y,z) ;
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
Z = F(X,Y) ;
%x = axil_long ; y = axil_lat ; z = time_axil(:,1) ;
[in,on] = inpolygon(X,Y,x,y) ;
idx = in|on ;
X(~idx) = NaN ;
Y(~idx) = NaN ;
Z(~idx) = NaN ;
figure
h = pcolor(X,Y,Z) ;
h.EdgeColor = 'none';
figure
plot(X,Y,'r',X',Y','r ')
xlabel('Longitude (E{\circ})')
ylabel('Latitude (N{\circ})')
axis([72.68 72.97 34 34.7])
  8 Comments
Andi
Andi on 17 May 2023
@KSSV Thanks for the updated results, I am trying to test it on the actual data set. Meanwhile, I also updated my primary question for clarity.
Andi
Andi on 18 May 2023
@KSSV I attempt to fix the probelm with the gridding approch but it did not work well, so i move to another approch.
Step 1: Plooting the boundary of ir-regular shape
data=readmatrix('dam_area.csv');
x=data(:,1);
y=data(:,2);
z=data(:,3);
plot(x, y, 'blue')
hold on
Step 2: Plotting the z-parameteres as a color color within the bounded area
dat=readmatrix('combine.csv');
x1=dat(:,2);
y1=dat(:,3);
c1=dat(:,4);
plot(x1, y1, 'blue')
scatter(x1,y1,[],c1,'filled')
colorbar
colormap jet
hold off
What I required:
  1. Interpolate all the scatter points and make a surface plot (figure attached below).
  2. The mesh grid is this bounded area and gets the central point of each mesh grid along with the average value of the z-parameter.
Thanks

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!