Daha çox

Ggmap: radiusun məsafəni (mil və ya km) təmsil etdiyi dairə simvolu yaradın


Verilən enlik və uzunluq nöqtəsinin ətrafına dairə ölçüsünün (radius) məsafəni mil və ya km-də əks etdirdiyi bir dairə əlavə etməyə çalışıram.

Dairə əlavə edə biləcəyim ggmap istifadə edərək bu misalı düşünə bildim. ancaq məsafəni təmsil etməsi üçün nə etməliyəm. Nəticədə dairənin hüdudlarını mərkəzdən 20 mil məsafədə təmsil etməsini istərdim.

Aşağıdakı kod:

kitabxana (ggmap) kitabxana (ggplot2) d <- data.frame (lat = c (33.79245), lon = c (-84.32130)) emory <- get_map ("Atlanta, Georgia", zoom = 12) p <- ggmap ( emory) p <- p + geom_point (data = d, aes (x = lon, y = lat), color = "red", size = 20, alfa = 0.5) p

Həqiqi problem, lat / lon proyeksiyası olan bir xəritədə (ümumiyyətlə EPSG: 4326) 40 mil diametrli bir dairə qurmaqdır, çünki yerli xəritə vahidləri dərəcədir. Buna görə, mənə elə gəlir ki, ən sadə həll dərəcələrə deyil, sayğaclara əsaslanan (asanlıqla milə çevrilə bilən) fərqli bir proyeksiya ilə işləməkdir.
Buna alternativ olaraqget_map, ilə işləyə bilərsəngmapetibarən dismo Google Maps məlumatlarının alınmasına imkan verən paket. Bunu etiraf etməliyəmget_mapdaha yüksək bir məkan qətnaməsi ilə nəticələnir və işləyərkən daha asan idarə olunurggplot, lakin nümayiş məqsədləri üçün,gmaphiylə də etməlidir. Hər halda, məlumatları Google Xəritədən götürmək olduqca oxşayır ...

# Google Map of Atlanta library (dismo) emory <- gmap ("Atlanta, Georgia", zoom = 10, scale = 2)

Sonra, müəyyənləşdirərək mərkəzi yerinizi həqiqi bir məkan obyektinə çevirməlisinizkoordinatlarproyeksiya. Sonrakı tamponlama və planlama məqsədləri üçün Google Maps 'RasterLayer' obyektinin koordinat istinad sisteminə (CRS) yenidən hazırlamalısınız.

d <- data.frame (lat = c (33.79245), lon = c (-84.32130)) koordinatları (d) <- ~ lon + lat proyeksiya (d) <- "+ init = epsg: 4326" d_mrc <- spTransform (d, CRS = CRS (proyeksiya (emory)))

Lat / lon yerinizi Google-ın metrlərlə gələn Mercator proyeksiyasına çevirdiyiniz üçün, milləri metrlərə çevirən kiçik bir köməkçi funksiyası təyin edə bilərsiniz (və ya sadəcə onlayn bir dönüşüm vasitəsi istifadə edirsiniz). Beləliklə metrlərlə alınan məsafəyə əsaslanaraq,gFufferetibarən rgeos paket dairəvi formalı 'SpatialPolygons' obyekti yaradacaq.

# Mildən metrə dönüşüm mil2metr <- funksiya (x) {x * 1609.344} # Bufer yaradılması d_mrc_bff <- gBuffer (d_mrc, width = mile2meter (20))

İndi lazım olan hər şeyi yığdığınız üçün, nəhayət, hiylə qurmağın vaxtı gəldi.

kitabxana (tərəzi) # 'alfa ()' funksiyası sahəsi (emory) sahəsi (d_mrc_bff, col = alpha ("mavi", .35), əlavə = TRUE) nöqtələri üçün (d_mrc, cex = 2, pch = 20)


Videoya baxın: Driving time interpolation map in R using OSRM, leaflet, raster, ggmap (Oktyabr 2021).