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?

4 次查看(过去 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
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
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

请先登录,再进行评论。

更多回答(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