Finding LAT LONG inside a circle of a given LAT LONG .

1 回表示 (過去 30 日間)
M M Nabi
M M Nabi 2021 年 2 月 20 日
回答済み: M M Nabi 2021 年 2 月 24 日
I have a LAT LONG (point A). I have another set of LAT LONG. I want to find LAT LONG points within 5km radius of point A.
How can I do that?

採用された回答

Bruno Luong
Bruno Luong 2021 年 2 月 20 日
編集済み: Bruno Luong 2021 年 2 月 20 日
% Random data
lonA=rand*360;
latA=rand*180-90;
n = 10000;
lonP=rand(1,n)*360;
latP=rand(1,n)*180-90;
earthradius = 6357;
rA = 1000; % distance from A
[xA,yA,zA] = sph2cart(deg2rad(lonA),deg2rad(latA),1);
[x,y,z] = sph2cart(deg2rad(lonP(:)),deg2rad(latP(:)),1);
P = [x,y,z];
A = [xA,yA,zA];
% W. Kahan method
alpha = 2*atan(vecnorm(A-P,2,2) ./ vecnorm(A+P,2,2));
inrA = abs(alpha) <= rA/earthradius; % logical array, 1 if the distance from A is <= rA
close all
hold on
plot3(xA,yA,zA,'r+', 'Linewidth', 3);
plot3(x(inrA),y(inrA),z(inrA),'k.');
plot3(x(~inrA),y(~inrA),z(~inrA),'.','Color',0.8+[0 0 0]);
axis equal

その他の回答 (1 件)

M M Nabi
M M Nabi 2021 年 2 月 24 日
It works better like that..
[deg,~] = distance(STATION_LAT_A,STATION_LON_A, sp_lat_all, sp_lon_all);
D = deg2km(deg);
I=find(D<9);

カテゴリ

Help Center および File ExchangeData Import and Analysis についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by