Daha çox

Məsafəyə görə konsentrik dairələrlə coğrafi istilik xəritələri?


Bir şəhər mərkəzinin yaxınlığındakı lat / lon üzərində bəzi ölçülü (mənzil qiymətlərinə başlamaq üçün) üst-üstə düşən bir coğrafi istilik xəritəsi ('ggmap' istifadə edərək) yaratmaq istəyirəm. Sonra nə qədər uzaq olduğuna dair bir fikir əldə etmək üçün bərabər məsafəli aralıq dairələri (yəni hər dairəyə 10 mil) yaratmaq istəyirəm. İstilik xəritəmin ölçünün alçaqdan yuxarıya doğru göydən qırmızıya keçməsini istərdim. Bir gündür bununla mübarizə aparıram və əlimə gələni:

tələb (ggmap) tələb (ggplot2) ggmap (NewYork) + stat_density2d (data = pozitsiyalar, mapping = aes (x = lon, y = lat, fill =… level…), geom = "polygon", alfa = 0.2) + geom_point (forma = 1, aes (x = mənzil.data.NY $ Boylam, y = mənzil.data.NY $ Enlem, ölçü = sqrt (məsafə)), məlumat = mövqelər, alfa = .9, rəng = "qara") + scale_size (üçündür = c (3,20)) + laboratoriyalar (x = "Boylam", y = "Enlem", doldurma = "Mənzil  n Qiymət Sıxlığı") + ggtitle ("Məsafəyə görə mənzil qiymətləri  n New York, Dekabr 2014 ")

Kod aşağıdakıları edir:

  1. Yaradılan GoogleMap faylını bir təbəqə kimi yükləyin
  2. Qiymət istilik xəritələri yaradın
  3. Şəhərin mərkəzindən radius ~ məsafəli konsentrik dairələr əlavə edin (İŞLƏMƏYİZ)
  4. Dairələri miqyaslayın (və ya az cəhd edin)
  5. Süjetin daha aydın olması üçün etiket əlavə edin
  6. Süjet başlığı əlavə edin

Kod aşağıdakı nəticəni verir:


Budur bir təklif. Mən dairələri yaradıramgFuffervə sonra onları ggmap üçün WGS84-də təkzib edin.

İstilik xəritəsinin rənglərini dəyişdirmək üçünmiqyaslı_doldurma ().

library (ggmap) library (sp) library (rgdal) library (rgeos) # NY koordinatlarını əldə edin nyc <- geocode ("New York") # spatialPoint obyekt koordinatları yaradın (nyc) <- ~ lon + lat proj4string (nyc) < - CRS ("+ init = epsg: 4326") # Google Mercator-a yenidən işləmə (metr) nyc.mrc <- spTransform (nyc, CRS = CRS ("+ init = epsg: 3857")) # konsentrik üzüklər (millə) : dist.miles <- seq (10, 50, 10) # dairə koordinatları ilə bir verilənlər bazası yaradın circ.df <- do.call (rbind, lapply (dist.miles, function (n) {circ <- gBuffer (nyc) .mrc, width = n * 1609.344, quadsegs = 20) circ.wgs <- spTransform (circ, CRS = CRS ("+ init = epsg: 4326")) coords <- lapply ([email protected], function (x ) {x @ Çoxbucaqlı [[1]] @ koordinatlar}) data.frame (x = koordinatlar [[1]] [, 1], y = koordinatlar [[1]] [, 2], məsafə = n)}) ) # mətn mövqeyi text.pos <- cbind (məcmu (y ~ məsafə, məlumat = circ.df, FUN = min), x = nyc $ lon, sıra.names = NULL) # saxta bir istilik xəritəsi set.seed (1) xy <- data.frame (x = runif (100, -74.5, -73.5), y = runif (100, 40.2, 41.2)) # bazemap almaq ny.map <- get_map ("New York", zoom = 8) # plot ggmap (ny.map) + stat_density2d (data = xy, mapping = aes (x = x, y = y, fill =… level…), geom = "polygon", alfa = 0.2) + scale_fill_gradient (low = ") mavi ", yüksək =" qırmızı ") + geom_path (data = circ.df, aes (x = x, y = y, group = məsafə), alfa = 0.5) + geom_text (data = text.pos, aes (x = x, y = y, etiket = pasta0 (məsafə, "mi")))


Videoya baxın: çevrə, radius, diametr, vətər, toxunan, kəsən, daxili bucaq, mərkəzi bucaq (Oktyabr 2021).