3

履歴:静的なGoogleマップpngからラスターデータを抽出し、を介してRデバイスにロードしましたggimage

library (png)
library (ggmap)

rasterArray <- readPNG ("My.png")

x = c (40.702147,40.718217,40.711614)
y = c (-74.012318,-74.015794,-73.998284)

myData <- data.frame (x, y)

print (ggimage (rasterArray, fullpage = TRUE, coord_equal = FALSE) 
    + geom_point (aes (x = x, y = y), data = myData, colour = I("green"), 
      size = I(5), fill = NA))

私は実行dputしましたrasterArrayが、出力は20 MBであり、ここに投稿することはできません。
ところで、これはその静的マップのURLです:

質問:マップを含むRデバイスに「GPS座標」をピクセル単位でプロットするには、次のようにする必要がscaleありdata.frameますか?

私はこのページを見ました:http ://www-personal.umich.edu/~varel/rdatasets/Langren1644.html ここに示されているようにスケーリングを行う必要がありますか?

はいの場合、これを実行するには、関数のマニュアルページ以外に何scaleを理解する必要がありますか?

私は間違った木に吠えていますか?

4

1 に答える 1

22

あなたの間違いは次のとおりだったと思います。

  • 画像に地理データをプロットしようとしていますが、その画像は地図の座標を認識していません
  • データフレーム内の緯度と経度を転置する可能性があります

代わりに、2つのステップでそれを行う方法を次に示します。

  1. でマップを取得し、get_map()を使用してディスクに保存しますsave()
  2. でデータをプロットしますggmap()

まず、地図を入手します。

library (ggmap)


# Read map from google maps and save data to file

mapImageData <- get_googlemap(
  c(lon=-74.0087986666667, lat=40.7106593333333), 
  zoom=15
)
save(mapImageData, file="savedMap.rda")

次に、新しいセッションで:

# Start a new session (well, clear the workspace, to be honest)

rm(list=ls())

# Load the saved file

load(file="savedMap.rda")

# Set up some data

myData <- data.frame(
    lat = c (40.702147, 40.718217, 40.711614),
    lon = c (-74.012318, -74.015794, -73.998284)
)


# Plot

ggmap(mapImageData) +
    geom_point(aes(x=lon, y=lat), data=myData, colour="red", size=5)

ここに画像の説明を入力してください

于 2012-07-25T15:13:45.463 に答える