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?

8 views (last 30 days)
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.

Accepted Answer

Sulaymon Eshkabilov
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
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 Comments
Sulaymon Eshkabilov
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

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!