How to fill/interpolate missing data to nearest geospatial coordinate?

조회 수: 8 (최근 30일)
Hello,
I am trying to interpolate some missing values (NAN) in a dataset that contains Irrigation Well Data with the following columns: Longitude, Latitude, and Pump Rate for each irrigation well. There are no missing Longitude or Latitude values but there are some missing Pump Rate Values. What I would like to do is to fill the missing pump rate values to be interpolated to the nearest Irrigation Well spatially.
I am unsure what function to use and how to do this. I have tried looking at the fillmissing, interp3, and scatterinterpolant but I am not sure what to use or how to use it (i have read through the pages for each and watched videos but am still confused).
Can someone please let me know what function to use and how to use it?
Thank you!!!

채택된 답변

Vaibhav
Vaibhav 2024년 2월 8일
Hi Michelle
You can use "scatteredInterpolant" function for interpolate missing pump rate values.
The "scatteredInterpolant" function works with unstructured data in N dimensions (in your case, 2 dimensions for the spatial coordinates) and can interpolate values at query points based on the values at the known points.
You can refer to the below steps:
  • Separate your known and unknown pump rate data. Let's say you have a matrix wellData with columns for Longitude, Latitude, and Pump Rate.
knownData = wellData(~isnan(wellData(:,3)), :); % Rows without NaN in Pump Rate
unknownData = wellData(isnan(wellData(:,3)), :); % Rows with NaN in Pump Rate
  • Use the known data to create the interpolant function.
F = scatteredInterpolant(knownData(:,1), knownData(:,2), knownData(:,3), 'nearest'); % 'nearest' for nearest neighbor interpolation
  • Use the interpolant to estimate the missing pump rate values.
interpolatedPumpRates = F(unknownData(:,1), unknownData(:,2));
  • Replace the NaN values in the original data with the interpolated values.
wellData(isnan(wellData(:,3)), 3) = interpolatedPumpRates;
When opting for the "nearest" method, you assign the unknown pump rate the value of the closest known pump rate geographically. If you desire a different interpolation approach, such as considering a weighted average of nearby points, you can choose "linear" or "natural" instead of 'nearest' when generating the scatteredInterpolant.
Hope this helps!
  댓글 수: 1
Michelle Pruss
Michelle Pruss 2024년 2월 8일
This worked!! Thank you so much for showing and explaining each step I really appreciate it!!!

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

추가 답변 (1개)

KSSV
KSSV 2024년 2월 8일
% Prepare dummy data
[X,Y] = meshgrid(1:10,1:10) ;
Z = rand(size(X)) ;
% Make random nan's
idx = sort(randsample(numel(X),20)) ;
Z(idx) = NaN ;
% Fill the nans
% interpolation
F = scatteredInterpolant(X(~isnan(Z)),Y(~isnan(Z)),Z(~isnan(Z))) ;
Z(idx) = F(X(idx),Y(idx)) ;

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by