根据GPS数据链接城市和气象站

时间:2015-12-17 08:57:53

标签: r knn

我有一个包含城市和gps坐标的数据集:

Amsterdam   52.221537   6.893662
Enschede    52.370216   4.895168

不同的气象站;

Schiphol    52.307687   52.307687
Almelo      52.367027   6.668492

我现在要做的是将这些城市与附近最近的气象站联系起来。所以阿姆斯特丹市应该与史基浦和恩斯赫德与阿尔默洛联系。

我认为我必须在这里应用某种类似KNN的算法。我可以用来轻松匹配车站和城市的套餐反馈吗?

2 个答案:

答案 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)]
})