2017-09-10 6 views
0

現在、ある領域(ポリゴン)から別の領域(ポリゴン)への移動をマップするためのリーフレットのフローマップを作成しようとしています。不正なポリゴンを指す派生空間線

library(sp) 
library(rgdal) 
library(tidyverse) 
library(leaflet) 

私はポリゴンのイギリスの地方自治体(LAS)のthis shapefileを使用している、と私はラインを導出していますが、それらの座標から。

Map <- readOGR(dsn = "Map", layer = "LEA_Boundaries") 
Map <- Map[!is.na(Map$lad16cd),] 

私は私は私のラインの開始および終了ポイントを導出する元と宛先ポリゴンは緯度と経度(複数可)を使用し、別の1つの多角形の中心から線を作成したいです。 地図のデータスロットからLAの名前をサンプリングし、サンプリングして出発点と終点のLAを作成し、開始LAの座標をマージし、終点LAの座標を次のようにマージします:

私はそれがよりアクセス可能だとプログラミングを除外A私はここに使用します空間のラインを作成するには、2つの別々の道、1はベジエ行を追加するカスタム関数で、他は gcIntermediate()だったが、試してみました。この後
StartingLA <- sample([email protected]$lad16nm, 100000, replace = TRUE) 
NextLA <- sample(StartingLA, 100000, replace = TRUE) 
Movement <- data.frame(StartingLA, NextLA) 
LD <- merge(Movement, [email protected][,c("lad16nm", "long", "lat")], by.x = "StartingLA", by.y = "lad16nm") %>% 
     merge([email protected][,c("lad16nm", "long", "lat")], by.x = "NextLA", by.y = "lad16nm", suffixes = c("",".y")) 

関数のエラー

flow <- gcIntermediate(LD[,c("long", "lat")], LD[,c("long.y", "lat.y")], sp = TRUE, addStartEnd = TRUE) 

地図自体のためです。ポリゴンにポップアップラベルを追加して、どのポリゴンがどのポリゴンであるかを確認します。

leaflet() %>% 
    addProviderTiles(providers$CartoDB.PositronNoLabels) %>% 
    addPolygons(data = Map, weight = 1, col = "#000000", fillOpacity = 0, popup = [email protected]$lad16nm) %>% 
    addPolylines(data = flow) 

次に、行を作成するために使用されたデータを見ていきます。

LD 

私のマップでは、次の1つのポリゴンを結合する青い線があります。しかしStartingLALDの場合は「East Sussex」、 NextLAの場合は「Hillingdon」ですが、バーミンガムとワンズワースの間を指しています。

これは私のカスタム関数をベジェ線に合わせることでも当てはまりました。これは前に起こったことかもしれないと思うかもしれませんが、すべてのデータはSpatialLinesにラインが作られるまで正しいものです。すべてが乾杯になる。

私はどこに間違っているのかについての洞察はありますか?

ありがとうございます。

答えて

1

Map @ Dataオブジェクトの座標は、使用例に適していません。

グリニッジは、例えば、ドンカスターにしっかりと位置する座標-1.108940, 53.52697を持っています。おそらく以前の処理ステップでは、座標とIDは何となく分かりませんでしたか?いずれの場合においても

は、それがMapオブジェクトにrgeos::gCentroidを使用して使用して再計算する座標にして、データファイルに問題のある列を置き換える今、おそらく最速/最も簡単です:

rgeos::gCentroid(Map,byid = T) 
関連する問題