# How to search closest coordinate values in a Lat Long Z data

조회 수: 2(최근 30일)
Mustafa Alper Cetintas 2021년 7월 23일
댓글: Image Analyst 2021년 7월 23일
Hello all,
I have a realtime Lat,Long and depth array data stream as the antenna platform moves around the interested area. Then I need to find every intersecting coordinate couples from the position data while it is moving. There will not always be overlapping points, in this case, I need to find Lat-Long points which are close to each other as much as possible. Could not find the suitable MATLAB function for this operation, or can I ask is there a specific function to do this process ?. I would be appreciated for any suggestion for this operation.
Thank you for you time for this.

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

### 답변(2개)

KSSV 2021년 7월 23일
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

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

Scott MacKenzie 2021년 7월 23일
편집: Scott MacKenzie 2021년 7월 23일
You can do this with the pdist2 function. For latitude and longitude, usually the haversine method is used. Google it if you want the details. Unfortunately, haversine is not provided as a distance option in pdist2. But, the function is easy to write and can be passed in as a handle to pdist2.
Here's an example using the latitudes and longitudes for five Canadian Cities. You'll need to do some post processing to determine "closeness" between cities (or antenna platforms as noted in your question).
% Toronto, Victoria, Regina, Winnepeg, Quebec City (city hall)
lat = [43.653214 48.429986 50.442545 49.872654 46.811837];
lon = [-79.384051 -123.368147 -104.61133 -97.163108 -71.208415];
M = [lat' lon'];
n = numel(lat);
% build triangle in D for distances between cities
D = NaN(n);
for i=1:n
D(i,i+1:end) = pdist2(M(i,:), M((i+1):end,:), @haversine);
end
D
D = 5×5
1.0e+03 * NaN 3.3883 2.0427 1.5154 0.7297 NaN NaN 1.3708 1.9028 3.8369 NaN NaN NaN 0.5342 2.4664 NaN NaN NaN NaN 1.9381 NaN NaN NaN NaN NaN
function [dist] = haversine(ZI, ZJ)
lat1 = ZI(1,1);
lon1 = ZI(1,2);
lat2 = ZJ(:,1);
lon2 = ZJ(:,2);
dist = 2 * 6371 * asin(sqrt(sind((lat2-lat1)/2)^2 + cosd(lat1) * cosd(lat2) * sind((lon2 - lon1)/2)^2));
end
##### 댓글 수: 1표시숨기기 없음
Image Analyst 2021년 7월 23일
If
1. all you want is to know the closest city and
2. there are just a few cities that are not at really similar distances and
3. don't really care about whether the found distance is super accurate in terms of great circle distance,
then you probably don't have to worry about haversine, though it looks simple enough to include.

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

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by