2015-09-10 144 views
8

我正在考慮rChart/LeafLet創建一個閃亮的應用程序在我的縣房屋銷售。在任何時候都有幾百間房屋可供出售。想要爲所有人繪製街道地址到地理位置(經緯度)並將其顯示在地圖上。所以,我正在尋找可以將街道地址映射到地理位置的r軟件包,服務或數據庫。街道地址到地理定位緯度/長

+4

'nominatim':https://github.com/hrbrmstr/nominatim; 'ggmap :: geocode'; 'geocodeHERE :: geocodeHERE_simple'; 'geonames'包;還有'google r街道地址地理位置' – hrbrmstr

+0

帶有代碼示例的優秀文章(使用軟件包ggmap):http://www.shanelynn.ie/massive-geocoding-with-r-and-google-maps/ –

回答

4

我使用谷歌的地理定位,這是簡單的設置和易於實現在幾乎任何項目:

https://developers.google.com/maps/documentation/geocoding/intro

+2

爲了將來的參考,屬於評論,但我想你沒有足夠的代表來做這件事。 – jlhoward

+1

感謝哈維。 goole地圖將請求的數量限制爲每天10個/秒或2500個。這很好。有沒有辦法做出批量請求。假設我發送100個街道地址並獲得100個lon/lat回來? – Antex

+0

對不起,我應該提到有一個限制。但對於小型應用程序來說,它並不需要擔心。我設法通過循環請求在iOS應用中執行多個操作。雖然您可能不得不限制速度,但由於多個連接太快可能會導致您鎖定。對不起,我不知道R的具體細節! – Harvey

11

下面是根據哈維的建議的功能。它會查找地址並給出第一個結果的座標。看看函數中x的結構,看看你能得到的其他信息。

geocodeAdddress <- function(address) { 
    require(RJSONIO) 
    url <- "http://maps.google.com/maps/api/geocode/json?address=" 
    url <- URLencode(paste(url, address, "&sensor=false", sep = "")) 
    x <- fromJSON(url, simplify = FALSE) 
    if (x$status == "OK") { 
    out <- c(x$results[[1]]$geometry$location$lng, 
      x$results[[1]]$geometry$location$lat) 
    } else { 
    out <- NA 
    } 
    Sys.sleep(0.2) # API only allows 5 requests per second 
    out 
} 

例如:

R> geocodeAdddress("Time Square, New York City") 
[1] -73.98722 40.7575 
+0

爲什麼我們在包存在時爲了完全相同的功能而構建函數? – hrbrmstr

+0

@hrbrmstr我不知道那個包,謝謝你的提升。 – christoph

+0

你能分享包名choff嗎? – Antex

相關問題