四川省城市和自治州距离计算 - 基于经纬度坐标的数学建模与 MATLAB 实现
利用 MATLAB 计算四川省城市或自治州到目标坐标点的距离
本文利用 MATLAB 代码,通过 Haversine 公式,计算四川省 18 个地级市、3 个自治州的经纬度坐标位置到给定目标坐标点的距离,并找出距离最短的城市或自治州。
1. 数据准备
首先,将四川省 18 个地级市、3 个自治州的经纬度坐标存储在一个矩阵中,记为 'matrix',其中每行为一个城市或自治州的经纬度坐标。
2. 设定目标坐标点
设定一个目标坐标点,记为 'target',表示需要求距离最短的坐标点。
3. 计算距离
使用 Haversine 公式计算目标坐标点与 'matrix' 中每个城市或自治州的距离,并将结果存储在一个距离向量中,记为 'distance'。
4. 寻找最近的城市或自治州
找到 'distance' 向量中最小值,即为目标坐标点到最近城市或自治州的距离。
5. 输出结果
找到 'distance' 向量中最小值对应的位置,即为目标坐标点距离最近的城市或自治州的位置。
输出该城市或自治州的名称及其经纬度坐标,以及目标坐标点与该城市或自治州的距离。
MATLAB 代码
% 城市及自治州的经纬度位置坐标
matrix = [30.572815, 104.066800;
29.562800, 106.552780;
30.679940, 104.067923;
31.467450, 104.679114;
30.048318, 103.958732;
30.795281, 106.084738;
28.769675, 104.572928;
30.049520, 101.961199;
31.214013, 107.467880;
31.131140, 104.370268;
30.305018, 102.033575;
27.882960, 102.267467;
30.413271, 103.462489;
30.000000, 103.000000;
29.355530, 101.778228;
31.899413, 102.221374;
26.580886, 101.343105;
30.041590, 103.858862;
28.962719, 105.444722;
30.126227, 105.702746;
26.580886, 104.852463;
29.648939, 103.761263;
27.300601, 105.291643;
28.871810, 105.441790;
28.882889, 105.304113;
30.359780, 97.008522;
26.897570, 100.231647;
30.800965, 106.930480];
% 目标坐标点
target = [30.000000, 103.000000];
% 计算距离向量
R = 6371; % 地球半径
lat1 = deg2rad(target(1));
lon1 = deg2rad(target(2));
lat2 = deg2rad(matrix(:, 1));
lon2 = deg2rad(matrix(:, 2));
dlat = lat2 - lat1;
dlon = lon2 - lon1;
a = sin(dlat/2).^2 + cos(lat1).*cos(lat2).*sin(dlon/2).^2;
c = 2*atan2(sqrt(a), sqrt(1-a));
distance = R*c;
% 找到最小值及其位置
[min_distance, min_index] = min(distance);
% 输出结果
if min_index <= 18
disp(['距离 ' num2str(matrix(min_index, :)) ' 最近的城市是:' num2str(min_distance) ' 公里']);
else
disp(['距离 ' num2str(matrix(min_index, :)) ' 最近的自治州是:' num2str(min_distance) ' 公里']);
end
总结
本篇文章利用 MATLAB 代码,通过 Haversine 公式,计算四川省 18 个地级市、3 个自治州的经纬度坐标位置到给定目标坐标点的距离,并找出距离最短的城市或自治州。该方法简单易懂,可用于各种地理位置的距离计算。
原文地址: https://www.cveoy.top/t/topic/nJhy 著作权归作者所有。请勿转载和采集!