2

queryResult という都市のいくつかの場所のすべての緯度と経度を含むテーブルがあり、次のことを行います。

1 - 都市のラスター マップを取得します [たとえば、ブラックプール]

cityMapRaster = get_map(location = 'Blackpool', zoom = 12, source = 'google', maptype = 'roadmap')

dataToShow <- ggmap(cityMapRaster) + geom_point(aes(x = Longitude, y = Latitude), data = queryResult, alpha = .5, color = "darkred", size = 1)

print(dataToShow)

これにより、マップ上の次のポイントが返されます

ここに画像の説明を入力

ここで、これらすべての緯度と経度の外側の境界 [都市の境界線] を、次の期待される結果のように描画したいと考えています。

ブラックプール市ポリゴン

更新 1 : 入力データの提供と提案されたahullソリューションの適用:

ggmap(cityMapRaster) + geom_point(aes(x = Longitude, y = Latitude), data = queryResult, alpha = .5, color = "darkred") + ahull.gg

@spacedman と @cuttlefish44 によって提案された ahull ソリューションを適用したところ、予想されるポリゴンとは大きく異なる次の結果が得られました。

データへのハルの適用

すべての緯度と経度を含む .csv ファイルを次のリンクからダウンロードできます: Blackpool Lat,Lon

Google が推奨するエリア境界は次のようになります。

ここに画像の説明を入力

4

3 に答える 3

0

queryResultx と y のデータセットだと思います。私が見る限り、あなたの境界は凸包ではないので、alphahullパッケージを使用しました。

  ## example `queryResult`
set.seed(1)
df <- data.frame(Longitude = runif(200, -3.05, -2.97), Latitude = rnorm(200, 53.82, 0.02))

library(alphahull)

ahull.obj <- ahull(df, alpha = 0.03)
plot(ahull.obj)   # to check

  # ahull_track() returns the output as a list of geom_path objs
ahull.gg <- ahull_track(df, alpha=0.03, nps = 1000)
  ## change graphic param
for(i in 1:length(ahull.gg)) ahull.gg[[i]]$aes_params$colour <- "green3"

ggmap(cityMapRaster) + 
  geom_point(aes(x = Longitude, y = Latitude), data = df, alpha = .5, color = "darkred") +
  ahull.gg

ここに画像の説明を入力

  ## if you like not curve but linear
ashape.obj <- ashape(df, alpha = 0.015)
plot(ashape.obj)  # to check
ashape.df <- as.data.frame(ashape.obj$edge[,c("x1", "x2", "y1", "y2")])

ggmap(cityMapRaster) + 
  geom_point(aes(x = Longitude, y = Latitude), data = df, alpha = .5, color = "darkred") +
  geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), data = ashape.df, colour="green3", alpha=0.8)
于 2016-10-21T18:44:01.577 に答える
0

chullこれに対する凸包解を計算するために使用する方法の再現可能な例を次に示します。queryResultあなたがデータを提供しなかったので、私はいくつかのランダムポイントを生成します。

凹型のハル境界を好む場合は、@Spacedman からの回答を参照してください。

library(ggmap)
cityMapRaster = get_map(location = 'Blackpool', zoom = 12, source = 'google', maptype = 'roadmap')
extent = attr(cityMapRaster, "bb")
queryResult = data.frame(Longitude = rnorm(200, as.numeric(extent[2] + extent[4])/2, 0.01),
                         Latitude = rnorm(200, as.numeric(extent[1] + extent[3])/2, 0.02))

boundary = chull(as.matrix(queryResult))

ggmap(cityMapRaster) +
  geom_point(aes(x = Longitude, y = Latitude), 
             data = queryResult, alpha = .5, color = "darkred", size = 2) +
  geom_path(aes(x = Longitude, y = Latitude), data = queryResult[c(boundary, boundary[1]),])

ここに画像の説明を入力

于 2016-10-21T17:56:37.817 に答える