Мне было интересно, использовал ли кто-либо ggmap
радиус круга вокруг точки lat/long? Например, я хотел бы построить конкретную точку, а затем нарисовать и затенять в радиусе 2500 футов вокруг этой точки. У меня есть идея в моей голове о том, как это сделать, используя формулу окружности большего круга, но полагал, что я сначала проверил бы это.Радиус круга вокруг точки lat/long на созданном ggmap графике
2
A
ответ
1
Я работал над созданием простого хака, а не круга, который я себе представлял, но он будет работать пока.
library(ggmap)
##__________________________________________________________________
### earth.dist I found on r-bloggers. I believe it now belongs to the fossil package.
earth.dist <- function (lat1,long1,lat2, long2)
{
rad <- pi/180
a1 <- lat1 * rad
a2 <- long1 * rad
b1 <- lat2 * rad
b2 <- long2 * rad
dlon <- b2 - a2
dlat <- b1 - a1
a <- (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2
c <- 2 * atan2(sqrt(a), sqrt(1 - a))
R <- 6378.145
d <- R * c
# this I changed to return feet instead of KM
return(d* 3280.8)
}
##__________________________________________________________________
## Function to output polygon to map
BoxGon <- function(Lat,Long,feet){
for(i in 1:1000){
point = Long - i/1000
Dist <- earth.dist(Lat,Long, Lat,point)
if(Dist > feet){
West <- cbind(Lat,point)
break}
}
for(i in 1:1000){
point = Long + i/1000
Dist <- earth.dist(Lat,Long, Lat,point)
if(Dist > feet){
East <- cbind(Lat,point)
break}
}
for(i in 1:1000){
point = Lat + i/1000
Dist <- earth.dist(Lat,Long, point,Long)
if(Dist > feet){
North <- cbind(point,Long)
break}
}
for(i in 1:1000){
point = Lat - i/1000
Dist <- earth.dist(Lat,Long, point,Long)
if(Dist > feet){
South <- cbind(point,Long)
break}
}
return(rbind(West,North,East,South,West))
}
##__________________________________________________________________
df = BoxGon(37.295844, -121.898057,5000)
df = as.data.frame(df)
colnames(df) <- c('Latitude','Longitude')
map <- get_map(location = 'san,jose', zoom = 12)
map <- ggmap(map)
# we select - 1 because once we map in pairs. IE once we have the last record there is nothing for that record to map to
for(i in 1:nrow(df)-1){
latlon <- head(df,2)
map <- map + geom_polygon(data=latlon,aes(x=Longitude,y=Latitude),alpha=0.1,size = 1,colour="green",fill="green")
df = df[-1,]
print(i)
}
map <- map + geom_polygon(aes(x=-121.898057,y=37.295844),alpha=0.1,size = 6,colour='Purple',fill='Purple')
Смежные вопросы
- 1. Радиус круга вокруг угла прямоугольника
- 2. Круг вокруг точки на графике
- 3. Радиус Google Maps вокруг точки
- 4. Вывод Неправильный при вычислении точки вокруг круга
- 5. Поворот круга вокруг другого круга
- 6. Радиус розыгрыша вокруг точки в карте Google
- 7. Участок круга с определенным радиусом вокруг точки на карте в ggplot2
- 8. Как построить точки вокруг круга в R
- 9. Обтекание/изгиб текста вокруг круга на графике (R)
- 10. Определите, достигли ли мышь круга вокруг точки
- 11. рисование круга радиуса R вокруг точки
- 12. Как нарисовать гладкий путь через точки вокруг круга
- 13. Android: верните радиус круга?
- 14. Радиус вокруг касания позиции
- 15. Как изменить радиус круга вокруг маркера в API Карт Google
- 16. Точки сочленения на графике
- 17. Как увеличить радиус в круговом графике
- 18. Выравнивание элементов вокруг круга
- 19. Сделать радиус круга На основе viewportwidth (vw)
- 20. Уменьшить радиус круга на mousemove kineticjs
- 21. JavaFX увеличивает радиус круга, нажимая на него
- 22. API Google Android превышает радиус круга
- 23. Рисовать радиус 15 км вокруг точки в Android
- 24. рисунок цветных полос вокруг круга
- 25. Найти радиус найденного круга opencv
- 26. Как отслеживать радиус расширяющегося круга
- 27. Радиус круга легенд Google Chart
- 28. Вычислить радиус вокруг точки GPS lat/lon в PHP
- 29. Как вычислить радиус вокруг точки в Android MapView?
- 30. неискаждаемые точки круга