Daha çox

Planlaşdırma xəritəsi, R-də kriging nəticəsində meydana gəldi


Qiymətlərlə ölçülmüş bir xəritə qurmaq istəyirəm. Enlemler, enlemler ve qiymetlerin bir məlumat bazası var:

> str (data) 'data.frame': 1253 obs. 3 dəyişəndən: $ lon: num 11.2 11.1 11 11 11.3… $ lat: num 49.6 49.4 49.3 49.4 49.3… $ qiymət: num 1.4 1.37 1.4 1.36 1.4…> baş (məlumat) lon lat qiyməti 1 11.21702 49.58926 1.395000 2 11.07774 49.37093 1.369000 3 11.04533 49.33787 1.397000 4 10.97310 49.43500 1.357333 5 11.34080 49.31650 1.399000 6 11.20708 49.36844 1.399000

İkinci addımım, məlumat çərçivəsini məkan məlumat növünə çevirməkdir:

koordinatlar (data) = ~ lon + lat proj4string (data) = CRS ("+ proj = longlat + ellps = WGS84 + datum = WGS84")

Və hiylə qurmaq üçün:

spplot (məlumat, tərəzi = siyahı (çəkmək = T), sp.layout = siyahı ("nöqtə nöqtələri", məlumat,), main = "Mənim Məlumatım")

(Almaniyanın kiçik bir xəritəsinə bənzəməlidir)

Bu nöqtədə ballarım qara ilə (ən aşağı qiymət) sarıya (ən yüksək qiymət) qədər rənglənmiş bir süjet aldım. Ancaq süjetimdə çoxlu boşluq var. İndi ağ boşluğu fərziyyələrlə doldurmaq istəyirəm, buna görə sonunda bir istilik xəritəsinə bənzəyir.

"Kriging" haqqında bəzi məqalələri oxudum, amma bunu necə kodlayacağımdan əmin deyiləm. Bir raster lazım olduğunu da oxudum. Buna görə bu məqaləyə uyğun olaraq aşağıdakı sətirləri interpolasiya etmədən düzensiz nöqtə məlumatlarından necə düzəltmək lazım olduğunu sınadım:

s100 <- as.matrix (as.data.frame (data), ncol = 3, byrow = TRUE) e <- ölçü (s100 [, 1: 2]) r <- raster (e, ncol = 10, nrow = 2) x <- rasterləşdir (s100 [, 1: 2], r, fun = "orta")

Qiymətləri kriginqlə interpolasiya etmək üçün əvvəlcə coğrafi koordinatlarınızı proqnozlaşdırılan koordinatlara çevirməlisiniz. Onlara sahib olduğunuzu fərz etsək, aşağıda belə bir tapşırığı yerinə yetirməyin bir yolunu göstərən təkrarlana bilən bir nümunə var.

library (sp) # interpolyasiya edilə bilən dəyişənlər olan #Spatial data. # Sink sütunu istifadə edəcəyik; 'qiymət' üçün ekvivalent olaraq. data (meuse) # geometr ilə data.frame (proqnozlaşdırılan koordinatlar) koordinatları (meuse) = ~ x + y # SpatialPointsDataFrame obyekt başlığındakı data.frame obyektini dəyişdirin (meuse [, c (4)], 3) # İlk üç sətri göstərin , proqnozlaşdırılan koordinatlar və sink dəyərləri ilə. koordinatları sink (181072, 333611) 1022 (181025, 333558) 1141 (181165, 333537) 640 # Bu, proqnozlaşdırma şəbəkəsi, yəni interpolyasiya edilmiş dəyərlərin çap ediləcəyi yerdir. data (meuse.grid) gridded (meuse.grid) = ~ x + y # data.frame obyektini SpatialPixelsDataFrame obyektinə çevirin. süjet (meuse.grid) # budur dediyiniz 'raster' (ızgara), ehtiyacınız var.

İndi funksiyanı istifadə edəcəyikautoKrigemeuse verilənlər bazasının sink dəyərlərindən istifadə edərək adi bir kriginq həyata keçirmək və interpolasiya nəticəsini proqnozlaşdırma şəbəkəsinə ('meuse.grid') yazdırmaq.

kitabxana (avtomapap) # Adi kriginqi yerinə yetirin və nəticələrini "autoKrige" tipli obyektin içərisində saxla "list" kriging_result = autoKrige (zinc ~ 1, meuse, meuse.grid) plot (kriging_result)

Buyurunuz:

Ancaq indi, 'meuse.grid' məlumatları ilə olduğu kimi onsuz da mövcud proqnozlaşdırma cədvəlinizin olmadığını düşünək. Beləliklə, proqnoz şəbəkəsinin necə qurulacağını göstərən bir nümunə:

data (meuse) # Proqnozlaşdırma şəbəkə xüsusiyyətlərinin təyin edilməsi min_x = min (meuse $ x) #minimun x koordinat min_y = min (meuse $ y) #minimun y koordinat x_length = max (meuse $ x - min_x) #astreat amplitude y_length = max (meuse $ y - min_y) # şiddət amplituda hüceyrəsi = 100 # piksel ölçüsü ncol = dəyirmi (x_length / cellsize, 0) # ızgaradakı sütun sayı = dairə (y_length / cellsize, 0) # ızgara koordinatlarındakı sıra sayı ( meuse) = ~ x + y proj4string (meuse) = CRS ("+ proj = utm + ellps = WGS84 + datum = WGS84") # proqnozlaşdırılan koordinatları ilə CRS təyin edin. grid = GridTopology (cellcentre.offset = c (min_x, min_y), cellsize = c (cellsize, cellsize), cells.dim = c (ncol, nrow)) # GridTopolgy obyektini SpatialPixelsDataFrame obyektinə çevirin. grid = SpatialPixelsDataFrame (grid, data = data.frame (id = 1: prod (ncol, nrow)), proj4string = CRS (proj4string (meuse))) plot (grid)

Və sonra adi kriging addımlarını iləautoKrigefunksiya. Bu vəziyyətdə, interpolasiya bütün qrikulyatada həyata keçiriləcəkdir, amma ən doğru şey adi kriginqi yalnız məlumatların mövcud olduğu yerlərdə həyata keçirmək olacaqdır. Beləliklə, aşağıda göstərilən kod proqnozlaşdırma şəbəkəsinin miqyasını kəsmək üçün bir shapefile istifadə etmək barədə bir nümunə göstərir (təkrarlanmaz).

# Shapefile oxuyun və SpatialPolygons obyektinə çevirin. # OP halında, formalı sənəd Almaniyanın inzibati sərhədi olmalıdır. shp = readOGR (dsn = "…", layer = "shp") shp = shp @ çoxbucaqlılar shp = SpatialPolygons (shp, proj4string = CRS ("+ proj = utm + ellps = WGS84 + datum = WGS84")) # əmin olun shapefile məlumatdan və proqnozlaşdırma cədvəlindən eyni CRS-yə malikdir. # Forma şəkli ilə proqnozlaşdırma şəbəkəsini kəsin. grid = grid [! is.na (over (grid, shp)))]

Məndə 'meuse' verilənlər bazasının sərhədləri olan shapefile olsaydı, bu əmr əmrə bərabər bir cədvəl çıxarardı.süjet (meuse.grid). Bu yazı, kəsmənin necə işlədiyini göstərir.


Videoya baxın: Kriging (Oktyabr 2021).