2016-08-03 7 views
0

私は、米国のRの地図上に複数のロングポイントとラットポイントをプロットしようとしています。各ポイントには特定の半径があり、私も視覚化しようとしています。それらは、long、lat、およびradのヘッダの下のテーブルに格納されます。また、国境を横切る半径を持つ点を特定したいと思います。半径のマップ上にプロットする

私はマップ上にポイントを持っていますが、複数のポイントの半径を得ることはできないように見え、半径を横切るポイントを返します。 enter image description here

library("maps") 
library("mapproj") 
library("mapdata") 
data("stateMapEnv") 

dat <- read.csv("R/longlat.csv",header = T) 

map('state',fill = T, col = "white") 

points(dat$lng,dat$lat,col = "red", cex = 0.6, pch = 20) 

plotCircle <- function(lonDec, latDec, mile) { 
    ER <- 3959 
    angdeg <- seq(1:360) 
    lat1rad <- latDec*(pi/180) 
    lon1rad <- lonDec*(pi/180) 
    angrad <- angdeg*(pi/180) 
    lat2rad <- asin(sin(lat1rad)*cos(mile/ER) + cos(lat1rad)*sin(mile/ER)*cos(angrad)) 
    lon2rad <- lon1rad + atan2(sin(angrad)*sin(mile/ER)*cos(lat1rad),cos(mile/ER)-sin(lat1rad)*sin(lat2rad)) 
    lat2deg <- lat2rad*(180/pi) 
    lon2deg <- lon2rad*(180/pi) 
    polygon(lon2deg,lat2deg,lty = 2 , col = alpha("blue",0.35)) 
    } 

agents <- mapproject(dat$lng,dat$lat) 
points(agents, col = "red", cex = 0.4, pch = 20) 

plotCircle(dat$lng,dat$lat,dat$rad) 

答えて

0

I managed to plot the points with your code and another dataset (cf.image)... Can you share your data with us, so that we can check what's wrong, please?

私はあなたが探している答えはhereだと思います。

plotCircle <- function(LonDec, LatDec, Km) { 
    ER <- 6371 
    AngDeg <- seq(1:360) 
    Lat1Rad <- LatDec*(pi/180) 
    Lon1Rad <- LonDec*(pi/180) 
    AngRad <- AngDeg*(pi/180) 
    Lat2Rad <-asin(sin(Lat1Rad)*cos(Km/ER)+cos(Lat1Rad)*sin(Km/ER)*cos(AngRad)) 
    Lon2Rad <- Lon1Rad+atan2(sin(AngRad)*sin(Km/ER)*cos(Lat1Rad),cos(Km/ER)-sin(Lat1Rad)*sin(Lat2Rad)) 
    Lat2Deg <- Lat2Rad*(180/pi) 
    Lon2Deg <- Lon2Rad*(180/pi) 
    polygon(Lon2Deg,Lat2Deg,lty=2) 
} 
+0

https://github.com/conradhopp/lnglatdat/blob/master/longlat.csv 私はNAのが問題だと思いますか? – CHopp

+0

私は今問題を引き起こしていた#NAでしたが、半径をプロットし、傍受するポイントを特定することにはまだ興味があります! – CHopp

+0

私は単一点のための機能を持っているが、私は持っているリストのためにそれを働かせることができないようだ。私はRが地図上のポイントをつなぐように見える不思議な隙間ができます。 plotCircle(dat $ lng、dat $ lat、dat $ rad) 私はこの関数をどのように呼び出すのですか? – CHopp

関連する問題