最佳匹配位置数据——两个表

14日视图(30天)
艾哈迈德FAKHRI
艾哈迈德FAKHRI 2021年6月9日
编辑: 亚当Danz 2021年6月10日
我已经在某些站点位置信息(经度和纬度),我想比较这两个国家数据库了解 地方当局 这些网站+他们的 邮政编码
我有两个表:
Sitename纬度经度
14182 -彭布罗克炼油厂51.686081-5.0271217
8059 -新橄榄球52.376283-1.2860374
8037 - ketton 52.636537 - -0.54737666
邮政编码地方当局经度纬度
CV212一橄榄球-1.28855552.376856
TR262金桥康沃尔郡-5.49094450.207428
SY10rn 7萨罗普羊-3.06770352.917641
SA715 sj彭布罗克郡-5.0271351.686093
PE93 sx拉特兰郡-0.546252.636828
最佳匹配的 这两个 经度和纬度数据从第一个和第二个表,邮编和地方当局。
请注意,经度和纬度并不完全匹配,但将略有不同因此我希望尽可能最佳匹配的基于信息。
请参阅Excel表包含的所有数据。
我很感激你的帮助。
非常感谢
1评论
艾哈迈德FAKHRI
艾哈迈德FAKHRI 2021年6月9日
嗨,我感激你的帮助。对不起,标签如果你正忙着请忽略它。

登录置评。

接受的答案

图像分析
图像分析 2021年6月10日
我不是一个3你要的人才,但也许你会喜欢我的回答。看看是你想要的东西。如果是这样,请接受答案。如果没有,告诉我需要什么不同的。
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%创建引用查找表
%邮编地方当局经度纬度
% CV21 2 ry橄榄球-1.288555 - 52.376856
% TR26 2金桥康沃尔-5.490944 - 50.207428
% SY10 7 rn什罗浦郡-3.067703 - 52.917641
% SA71 5 sj彭布罗克郡-5.02713 - 51.686093
% PE9 3 sx拉特兰-0.5462 - 52.636828
lookUpTable =表(“大小”4],[5日,
“Variabletypes”,{“字符串”,“字符串”,“双”,“双”},
“VariableNames”,{“邮政编码”,“LocalAuthority”,“经”,“纬度”});
lookUpTable。邮政编码= [“CV21 2的国家”;“TR26 2金桥”;“SY10 7 rn”;“SA71 5 sj”;“PE9 3 sx”];
lookUpTable。LocalAuthority = [“橄榄球”;“康沃尔郡”;“什罗浦郡”;“彭布罗克郡”;“拉特兰”];
lookUpTable。经度= [-1.288555; -5.490944; -3.067703; -5.02713; -0.5462];
lookUpTable。纬度= [52.376856; 50.207428; 52.917641; 51.686093; 52.636828]
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%未知网站创建一个表,我们将试图找到参考表。
% Sitename经度纬度
% 14182 -彭布罗克炼油厂51.686081 - -5.0271217
% 8059 - 52.376283 - -1.2860374新橄榄球
% 8037 - ketton 52.636537 - -0.54737666
tableOfUnknowns =表(“大小”,3,3,
“Variabletypes”,{“字符串”,“双”,“双”},
“VariableNames”,{“Sitename”,“经”,“纬度”});
tableOfUnknowns。Sitename = [“14182 -彭布罗克炼油厂”;“8059 -新橄榄球”;“8037 - ketton”];
tableOfUnknowns。经度= [-5.0271217; -1.2860374; -0.54737666];
tableOfUnknowns。纬度= [51.686081; 52.376283; 52.636537]
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%跑下未知数看到表如果是相当接近
%的任何引用查找表的行。
行=身高(tableOfUnknowns);
行= 1:行
流(“处理行# % d % d。\ n ',行,行);
%的距离(半径)这一行的所有引用的行。
deltaLat = lookUpTable。纬度- tableOfUnknowns.Latitude(row);
deltaLon = lookUpTable。经度- tableOfUnknowns.Longitude(row);
距离=√deltaLat。^ 2 + deltaLon。^ 2);
%的最小距离
[minDistance, rowOfMin] = min(距离);
closestPostcode = lookUpTable.Postcode (rowOfMin);
closestLocalAuthority = lookUpTable.LocalAuthority (rowOfMin);
流(“最近的地方当局% s % s,邮编% s。\ n % f度分离。\ n”,
tableOfUnknowns.Sitename(行),closestLocalAuthority、closestPostcode minDistance);
结束
你会看到
lookUpTable =
5×4表
邮编LocalAuthority经度纬度
__________售予替
“CV21 2 ry”“橄榄球”-1.288555 - 52.376856
康沃尔郡“TR26 2金桥”-5.490944 - 50.207428
萨罗普羊“SY10 7 rn”-3.067703 - 52.917641
彭布罗克郡“SA71 5 sj”-5.02713 - 51.686093
拉特兰“PE9 3 sx”-0.5462 - 52.636828
tableOfUnknowns =
3×3表
Sitename经度纬度
_________________________ ___________ _____
-5.0271217 - 51.686081 14182 -彭布罗克炼油厂
“8059 -新橄榄球”-1.2860374 - 52.376283
“8037 - ketton”-0.54737666 - 52.636537
处理3的行# 1。
最近的地方当局14182 -彭布罗克炼油厂是彭布罗克郡,邮编SA71 sj 5。
他们相距0.000015度。
处理的行# 2 3。
最近的地方当局8059 -新橄榄球橄榄球,邮编CV21 2的国家。
他们相距0.002582度。
处理3的行# 3。
最近的地方当局8037 - ketton拉特兰,邮编PE9 3 sx。
他们相距0.001212度。
4评论
图像分析
图像分析 2021年6月10日
我同意亚当。我知道这样是不计算距离 大多数 精确的方式(也许是映射工具箱有更精确的公式)。然而我认为距离足够小(全球近),实际上我认为 主要 需要没有找到超级准确的距离,但是找到最接近的地方当局。由于距离可能不是彼此接近,精度不只是发现的问题 最亲密的 的位置。它会找到最近的一个无论距离是有点不准确。

登录置评。

答案(1)

亚当Danz
亚当Danz 2021年6月10日
我使用 pdist2 计算两两之间的距离你的坐标列表和数据库中的表形成一个矩阵” D ”distanaces(他们都是积极的)。对于每一行(或列,这取决于你如何进入输入 pdist2 ),你就会寻找最低使用的索引 [~,minidx] = min (D) 最小值(D, 2)
然而,据我所知的地图坐标,它们不是线性的,所以你需要将其转换成笛卡尔坐标系使用 latlon2local 我认为 。或者,而不是使用 pdist2 您可以使用 距离 球面上的计算距离。
我没有使用以外的经验与方法 pdist2 笛卡尔坐标。
如果你试一试,我碰到一个特定的问题 可能 能够提供进一步的建议。
1评论
艾哈迈德FAKHRI
艾哈迈德FAKHRI 2021年6月10日
许多谢谢亚当我将试试

登录置评。

下载188bet金宝搏


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!