我有一个包含城市和gps坐标的数据集:
Amsterdam 52.221537 6.893662
Enschede 52.370216 4.895168
不同的气象站;
Schiphol 52.307687 52.307687
Almelo 52.367027 6.668492
我现在要做的是将这些城市与附近最近的气象站联系起来。所以阿姆斯特丹市应该与史基浦和恩斯赫德与阿尔默洛联系。
我认为我必须在这里应用某种类似KNN的算法。我可以用来轻松匹配车站和城市的套餐反馈吗?
答案 0 :(得分:0)
这可能有助于或至少帮助您入门
library(weatherData)
getStationCode("Amsterdam")
[1] " NEW AMSTERDAM 81058 06 15N 057 18W 2 X 7 GY" " AMSTERDAM/SCHIPH EHAM 06240 52 19N 004 47E 9 X T 6 NL"
Weather <- getSummarizedWeather("CYQY", "2015-07-26", "2015-07-28", opt_custom_columns=F)
Weather
Date Max_TemperatureC Mean_TemperatureC Min_TemperatureC
1 2015-07-26 17 14 11
2 2015-07-27 16 14 12
3 2015-07-28 20 17 14
有关详细信息,请查看包https://cran.r-project.org/web/packages/weatherData/index.html
的手册答案 1 :(得分:0)
此处无需群集。只需计算气象站与每个城市之间的距离,然后选择最近的城市。通过简单几何,距离可以计算为
sqrt((cityLong - stationLong)^2 + (cityLat - stationLat)^2)
假设您将数据存储在两个数据框中,这将获得每个工作站的城市
apply(stations,1,function(station){
distance <- apply(cities,1,function(city){
(city["long"]-station["long"])^2+(city["lat"]-station["lat"])^2
})
cities$name[which.min(distance)]
})