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?
9 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
Sulaymon Eshkabilov
on 3 Jan 2024
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
xlabel('Longitude')
ylabel('Latitude')
grid on
6 Comments
Sulaymon Eshkabilov
on 3 Jan 2024
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
More Answers (0)
See Also
Categories
Find more on Earth and Planetary Science in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!