필터 지우기
필터 지우기

How to calculate the latitudinal and longitudinal coverage of the area of the circle that subtends an angle of 4 degree at the location on the surface of the Earth?

조회 수: 6 (최근 30일)
How to calculate the latitudinal and longitudinal coverage of the area of the circle that subtends an angle of 4 degree at the location on the surface of the Earth?
For example, [-11.9459279123647, -76.84862390044384] are the geographical lat-long of the location of the ground station on the surface of the Earth. Consider it taking an observation above 100 km from the surface of the Earth with 4 degree field of View. Applying parallax method, I calculated that at 100 km altitude the radius of the circle will be (100km * sin(4 degree)) = 3.49 km, and hence the area of the circle will be (pi*r^2) = 38.24551 km^2.
Now, I would like to obtain the range of geographical latitude and longitude that will be covered under this circle at 100 km.
Similarly I would like to obtain the coverage at 200 km, 300 km and so on. But, first things first. Let's start from just 100 km. I can loop it for diffrernt altitudes by my own.
Any suggestions are appreciated.

채택된 답변

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2024년 1월 3일
It is something like this way:
% Given Data:
centerLatLong = [-11.9459279123647, -76.84862390044384]; % Latitude and Longitude of the center
ALT100 = 100; % Altitude in 100km
ALT200 = 200; % Altitude in 200km
ALT300 = 300; % Altitude in 300km
Angle = 4; % Field of view angle in degrees
ALT = [ALT100, ALT200, ALT300];
% Plot Line Style Options:
L = {};
LT = '--:-.-';
MT = 'vodp';
CT ='rgbk';
LW = 3:-.75:.5;
for ii = 1:numel(ALT)
% Radius of the circular area:
R = ALT(ii) * sind(Angle);
% Latitudinal and longitudinal coverage:
latCoverage = asin(R / 6371) * (180 / pi); % 6371 km is Approx. Earth radius
longCoverage = R / (6371 * cosd(centerLatLong(1)));
% Range of latitudes and longitudes covered:
minLat = centerLatLong(1) - latCoverage;
maxLat = centerLatLong(1) + latCoverage;
minLong = centerLatLong(2) - longCoverage;
maxLong = centerLatLong(2) + longCoverage;
LATCov = [minLat; maxLat];
LONCov =[minLong; maxLong];
STYLO = [CT(ii), LT(ii), MT(ii)];
plot(LONCov, LATCov, STYLO, 'LineWidth',LW(ii))
L{ii} = ['Altitute at ' num2str(ALT(ii)) ' km'];
hold on
legend(L{:}, 'Location', 'Best')
% Display the results:
disp(['Coverage in ' num2str(ALT(ii)) ' km altitude']);
disp(['Latitude Range: ', num2str(LATCov(1)), ' to ', num2str(LATCov(2))]);
disp(['Longitude Range: ', num2str(LONCov(1)), ' to ', num2str(LONCov(2))]);
end
Coverage in 100 km altitude
Latitude Range: -12.0087 to -11.8832
Longitude Range: -76.8497 to -76.8475
Coverage in 200 km altitude
Latitude Range: -12.0714 to -11.8205
Longitude Range: -76.8509 to -76.8464
Coverage in 300 km altitude
Latitude Range: -12.1341 to -11.7577
Longitude Range: -76.852 to -76.8453
xlabel('Longitude')
ylabel('Latitude')
grid on
  댓글 수: 6
Sulaymon Eshkabilov
Sulaymon Eshkabilov 2024년 1월 3일
If you want the values of R as well, this is the change in the code:
for ii = 1:numel(ALT)
% Radius of the circular area:
R(ii) = ALT(ii) * sind(Angle);
fprintf('Radius: %f km at the Altitude of %d km \n', R(ii), ALT(ii));
% Latitudinal and longitudinal coverage:
latCoverage = asin(R(ii)/ 6371) * (180 / pi); % 6371 km is Approx. Earth radius
longCoverage = R(ii)/ (6371 * cosd(centerLatLong(1)));
...
end
megha
megha 2024년 1월 3일
@Sulaymon Eshkabilov Thanks for replying to my comment!
Well, I needed locus of points - which I was able to figure out myself. Thanks again!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Earth and Planetary Science에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by