4

最近、R-Bloggers.com の投稿から leafletjs.com について知りました。私が実現したいチュートリアルの 1 つは、リーフレット ( http://leafletjs.com/examples/choropleth.html ) を使用してインタラクティブなコロプレス マップを作成することです。)。R の rjson パッケージを使用して、リーフレットが読み取る data.js ファイルを作成しています。リーフレットで提供された形状ファイルを読み取り可能な JSON ファイルとして使用することに成功しましたが、データ フレーム (「data.csv」) から JSON ファイルに追加のプロパティをマージしようとすると、プロセスを繰り返すことができません。この場合、rGIS を実行して、データ フレームにリストされている各学校の缶の数に関するデータを添付しました。私が達成したいのは、高校の学区 (NAME 変数で識別される) と「缶」の合計を表示するリーフレットにコロプレス マップを作成することです。問題は、 writeOGR が情報をポリゴンではなくポイントとしてエクスポートすることだと思いますか?

{
    "type": "Feature",
    "properties": {
        "name": "Alabama",
        "density": 94.65
    },
    "geometry": ...
    ...
}

    ###load R scripts from dropbox
    dropbox.eval <- function(x, noeval=F) {
    require(RCurl)
    intext <- getURL(paste0("https://dl.dropboxusercontent.com/",x), ssl.verifypeer = FALSE)
    intext <- gsub("\r","", intext)
    if (!noeval) eval(parse(text = intext), envir= .GlobalEnv)
    return(intext)
    }

    ##pull scripts from dropbox 
    dropbox.eval("s/wgb3vtd9qfc9br9/pkg.load.r")    
    dropbox.eval("s/tf4ni48hf6oh2ou/dropbox.r")

    ##load packages
    pkg.load(c(ggplot2,plyr,gdata,sp,maptools,rgdal,reshape2,rjson))

    ###setup data frames
    dl_from_dropbox("data.csv","dx3qrcexmi9kagx")
    data<-read.csv(file='data.csv',header=TRUE)

    ###prepare GIS shape and data for plotting
    dropbox.eval("s/y2jsx3dditjucxu/dlshape.r")     
    temp <- tempfile()
    dlshape(shploc="http://files.hawaii.gov/dbedt/op/gis/data/highdist_n83.shp.zip", temp)
    shape<- readOGR(".","highdist_n83") #HDOE high school districts  
    shape@proj4string 

    shape2<- spTransform(shape, CRS("+proj=longlat +datum=NAD83"))


    data.2<-ddply(data, .(year, schoolcode, longitude, latitude,NAME,HDist,SDist), summarise,
            total = sum(total),
            cans= sum(cans))


    ###merging back shape properties and data frame
    coordinates(data.2) <-~longitude + latitude
    shape2@data$id <- rownames(shape2@data)

    sh.df <- as.data.frame(shape2)

    sh.fort <- fortify(shape2 , region = "id" )

    sh.line<- join(sh.fort, sh.df , by = "id" )



    mapdf <- merge( sh.line , data.2 , by.x= "NAME", by.y="NAME" , all=TRUE)

    mapdf <- mapdf[ order( mapdf$order ) , ]


    ###exporting merged data frame as JSON
mapdf.sp <- mapdf
coordinates(mapdf.sp) <- c("long", "lat")
writeOGR(mapdf.sp, "hssra.geojson","mapdf", driver = "GeoJSON")

しかし、私の特徴は絶えず繰り返されているようです。次のように機能情報を集約するにはどうすればよいですか。

var statesData = {"type":"FeatureCollection","features":[
{"type":"Feature","id":"01","properties":{"name":"Alabama","density":94.65},
 "geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],
[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],
[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],
[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],
[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],
[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],
[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],
[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],
[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],
[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}},


{"type":"Feature","id":"02","properties":{"name":"Alaska","density":1.264},
 "geometry":{"type":"MultiPolygon","coordinates":[[[[-131.602021,55.117982],
[-131.569159,55.28229],[-131.355558,55.183705],[-131.38842,55.01392],
[-131.645836,55.035827],[-131.602021,55.117982]]],[[[-131.832052,55.42469],
[-131.645836,55.304197],[-131.749898,55.128935],[-131.832052,55.189182],
[-131.832052,55.42469]]],[[[-132.976733,56.437924],[-132.735747,56.459832],
[-132.631685,56.421493],[-132.664547,56.273616],[-132.878148,56.240754],
[-133.069841,56.333862],[-132.976733,56.437924]]],[[[-133.595627,56.350293],
4

1 に答える 1

4

私は最終的にこの質問を解決しました。

私が基本的に行ったことは、基本的に data.2 df をシェープ ファイルに結合することでした。 (shape2@data<-join(shape2@data,data.2)

次に、rgdal パッケージを使用して、OGR を JSON 形式で (JSON ドライバーを使用して) *.js 拡張子で書き込みます。

これが他の人に役立つことを願っています。

于 2013-07-03T00:57:40.323 に答える