簡體   English   中英

RDSTK:反向地理編碼lat / lon到city(使用coordinate2politics)

[英]RDSTK: Reverse geocode lat/lon to city (using coordinates2politics)

我正在研究R的Shiny應用程序,我正在嘗試使用RDSTK軟件包來反轉地理編碼lat / lon對的列表,並從json結果中獲取CITY並將其保存到列表中。 工作流程是:

  1. SQLDF用於選擇日期范圍內的所有記錄。
  2. 反轉地理編碼記錄並將列添加到具有特定城市的數據框。
  3. 再次使用SQLDF來獲取城市計數。

我在理解如何獲取JSON輸出,將其轉換為數據幀,然后將其重新綁定到原始數​​據框時遇到了很多麻煩。 任何幫助將非常感激! 見下面的代碼供參考:

數據框:

df <- data.frame(lat=c(34.048381, 37.757836, 40.729855, 42.356391),
             lon=c(-118.266164, -122.441033, -73.987921, -71.062307))

我能夠從返回的JSON列表中提取城市,但我不能為我的生活,找出如何多次為更大的緯度/經度對列表做這件事。 搜索stackoverflow主要導致在R之外的dstk。

我理想的輸出是:

lat        lon           city
34.048381  -118.266164   Los Angeles
37.757836  -122.441033   San Francisco
40.729855  -73.987921    New York
42.356391  -71.062307    Boston

我也試過這個例子: R:如何使用Data Science Toolbox GeoCode一個簡單的地址,雖然我似乎無法為coordinate2politics重新設計它。

有什么輸入?

FWIW,這是使用Google API的一個簡單替代方案:

library(ggmap)
res <- lapply(with(df, paste(lat, lon, sep = ",")), geocode, output = "more")
transform(df, city = sapply(res, "[[", "locality"))
# lat        lon          city
# 1 34.04838 -118.26616   los angeles
# 2 37.75784 -122.44103 san francisco
# 3 40.72986  -73.98792      new york
# 4 42.35639  -71.06231        boston

聽起來很酷。 我最近在RDSTK遇到了一些麻煩...我假設股票服務器不再適合你,正如作者的博客描述的那樣 太糟糕了。

這是兩個解決方法。 您可以使用tigerfile中的city places文件獲取原始lat / lon對,並在sp包中使用%over%,然后從返回的形狀中提取名稱。 這應該比重復調用API更快。

但是,我對R中的開放式地理編碼器有同樣的需求,並且有一些選擇。 查看在LukeA的答案中引用的ggmap - 可以使用DSTK(現已不存在),並且只是幾個調用的google API的簡單界面。 另請參閱這篇精彩的帖子,描述如何使用人口普查局的地理編碼器API 寫一個小的包裝函數來處理JSON,你很高興。 截至2016年1月1日,該代碼對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM