私は緯度と経度のデータを使用しています。ストックホルムのマップの各点で(その点の近接度に基づいて) 。私は、画像上で等間隔ではなく、等間隔に配置されている点にもっと興味があります。この意味では、赤道での緯度点間の距離が極円に沿った距離よりも長いことを理解しています。この質問には非常に重要です。緯度と経度、xとy、およびそれらをプロットする際の違い:geosphereとggmap
私の目標は、マップをx方向とy方向の両方向に約1km単位のグリッドに分割することでした。このように、私は最小と最大の緯度と経度をとり、ストックホルムの中心からxとyの距離を計算し、次に緯度と経度のスパンをxとy座標のスパンで(地圏を使って)分けました。プロットするときに点が等間隔になるようにしたかったからです(そうでなければ、赤道に近づくため地図の一番上のx点の距離が小さくなります)。
次に、これらの点をマップ上に(ggmapを使用して)プロットし、x方向よりy方向の点の間の距離が遠いことを観察しました。私は、地図を単純に歪んだ形で描くことができると考えていますが、それは信じるには少し歪んでいるようです。私は何か間違っているかもしれないと思うが、それが何であるかは分からない。以下
コードの例:
library("ggmap")
library("RgoogleMaps")
library("geosphere")
stockholm <- get_map("stockholm", zoom=11)
ggmap(stockholm)
places <- c('Tensta', 'Hanviken')
pos <- data.frame(Places = places, lat = NA, lon = NA, x = NA, y = NA)
reflatlon = getGeoCode('Stockholm, Sweden')
for(i in 1:length(places)) {
latlon <- getGeoCode(paste0(places[i], ', Stockholm'))
pos$lat[i] <- as.numeric(latlon[1])
pos$lon[i] <- as.numeric(latlon[2])
dist_y <- distGeo(c(latlon[1], reflatlon[2]), reflatlon) * sign(latlon[1] - reflatlon[1]) # same longitude
dist_x <- distGeo(c(reflatlon[1], latlon[2]), reflatlon) * sign(latlon[2] - reflatlon[2]) # same latitude
pos$x[i] <- dist_x
pos$y[i] <- dist_y
}
deglatperm <- (max(pos$lat) - min(pos$lat))/(max(pos$y) - min(pos$y)) # degrees latitude per metre
deglonperm <- (max(pos$lon) - min(pos$lon))/(max(pos$x) - min(pos$x)) # degrees longitude per metre
seqlat <- seq(min(pos$lat), max(pos$lat), by = deglatperm*1000) # sequence with a point every ~1km
seqlon <- seq(min(pos$lon), max(pos$lon), by = deglonperm*1000) # sequence with a point every ~1km
seqlatlon <- expand.grid(seqlat, seqlon)
names(seqlatlon) <- c('lat', 'lon')
ggmap(stockholm) + geom_point(aes(x = lon, y = lat), data=seqlatlon)
もし出力プロットからわかるように、X方向に比べてy方向の点の間の少なくとも二倍の距離があります。
要約すると、x座標とy座標は地球を使って得られます。マップはggmapを使用してプロットされます。
地圏に何か問題がありますか?または、緯度と経度のマップはです。が歪んでいますか?私がGoogle Mapsを開き、「距離の測定」ツールを上下左右および左右のポイントの間で使用すると、16.3 kmと16.9 kmの見積もりが得られますが、地球で得られる値は17と32 kmです(xとy )である。
誰かがここで何が起こっているか教えてもらえれば、私は非常に感謝しています!
偉大な答え - ありがとう!だから問題は私が地球圏を使っていることにありました。私は座標系が非常に複雑であることに気付きませんでしたが、それは後見で意味があります。 私が正しく行っていない場合、あなたはworld epsg:4362の座標をローカルepsg:3022地形座標系に変換しましたか? さらに、epsg:3022を選択する際に、spatialreference.orgを検索してこれを実行しましたか?私はストックホルムを検索し、この参考文献を入手しなかったが、11の異なるコードを得た。または、指定された地域で使用するepsgコードを見つけるための特定の/自動化された方法/場所がありますか? もう一度おねがいします! –
距離単位の座標系への変換が重要です。 RT90の座標系を見つけるために私は "スウェーデンの座標系"についてgoogleを検索しました。あなたはSR.orgにいくつかのRT座標系があることに気付くでしょう。私はまずSRでストックホルムを検索しようとしましたが、空手にも手を出しました。ローカル座標系を見つけるための特定の情報源についてはわかりません(しかし、projfinder.orgはその逆を行いますが、これはかなりクールです)。 EPSGは単なるカタログ番号です。各座標系はユニークで、ほとんどがEPSGによって認識されます。 「地理座標系」を検索します。重いもの。 – JMT2080AD
また、他の回答を探している場合は、GIS Stack Exchangeに投稿してください。これがあなたのために働くなら、あなたはそれを投票するか、それを答えにすることができます。 – JMT2080AD