2017-08-13 54 views
0

我正在嘗試使用傳單包在R中繪製GeoJSON。以下是代碼和錯誤。無法在R中使用傳單包使用GeoJSON

library(geojsonio) 
    library(leaflet) 
    library(data.table) 
    library(plyr) 
    library(rgdal) 
    library(sp) 
    library(RColorBrewer) 
    library(rgeos) #for simplification 
    library(leafletR) 
    library(sf) 
    library(jsonlite) 
    library(RJSONIO) 

    mydata <- fromJSON("https://gist.githubusercontent.com/senthilthyagarajan/eb7a2771eab4639e94d5f9eaad28cb33/raw/1cfe355a56d2c1856a70a5389a4eadf06d782748/data.geojson",flatten=TRUE) 


    leaflet(mydata) %>% 
     addPolygons(color = "#444444", weight = 1, smoothFactor = 0.5, 
        opacity = 1.0, fillOpacity = 0.5, 
        fillColor = ~colorQuantile("YlOrRd", nghbrhd)(nghbrhd), 
        highlightOptions = highlightOptions(color = "white", weight = 2, 
                 bringToFront = TRUE)) 


    Error: lexical error: invalid char in json text. 
              FeatureCollection 
         (right here) ------^ 

請忽略上面提到的軟件包的長列表。

回答

1

您的數據需要是「SpatialPolygonsDataFrame」類型。當我在上面運行你的代碼時,mydata的類型是list,它會產生錯誤。我使用geojsonio包中的geojson_read讀取數據(指定sp:spatialpolygons數據類型)並獲得傳單圖。 Flatten不是geojson_read函數中的參數,但如果感興趣,可以查看parse參數以轉換數據框中的geojson對象。

library(leaflet) 
mydata <- geojsonio::geojson_read("https://gist.githubusercontent.com/senthilthyagarajan/eb7a2771eab4639e94d5f9eaad28cb33/raw/1cfe355a56d2c1856a70a5389a4eadf06d782748/data.geojson",what = "sp") 

leaflet(mydata) %>% 
    addPolygons(color = "#444444", weight = 1, smoothFactor = 0.5, 
       opacity = 1.0, fillOpacity = 0.5, 
       fillColor = ~colorQuantile("YlOrRd", nghbrhd)(nghbrhd), 
       highlightOptions = highlightOptions(color = "white", weight = 2, 
                bringToFront = TRUE)) 

enter image description here

+0

謝謝。我運行了和你一樣的代碼,現在得到這個錯誤: '錯誤:參數'txt'必須是JSON字符串,URL或文件。 此外:警告消息: In if(!is.na(data [[n]])){: 條件長度大於1且僅使用第一個元素 – SNT

+0

@SNT:其中一個包您之前已經加載了與geojsonio軟件包的衝突。重新啓動你的R會話並重新運行我上面的代碼(我還添加了傳單庫,因此只有重啓環境中的傳單和geojsonio庫可最大限度地減少衝突)。 – sparkh2o

+0

非常感謝。他們是一種調試諸如斷點之類的衝突的方法。 – SNT