«У объекта CRS есть комментарий, который теряется при выводе» в krige

#r #sf #rgdal #kriging #r-stars

Вопрос:

Я пытаюсь найти набор данных о качестве воды с указанием широты и долготы, используя CRS(» init=epsg:4326″).

 GGT <- read.csv("C:/Users/user/Data/newdata2019.csv")
coordinates(GGT) = ~Lon Lat
GGT <- st_as_sf(GGT)
st_crs(GGT) <- 4326

GGTgrid <- readOGR('C:/Users/user/Desktop/FisheryScience/Data/Maps/GGTgrid.shp')
GGTgrid1 <- st_as_stars(GGTgrid, crs = 4326)
st_crs(GGTgrid1) <- 4326
 

введите описание изображения здесь

-Вот как выглядит набор данных GGT

 vario <- variogram(log(DO_S)~1, GGT)
model_GGT <- fit.variogram(vario, model=vgm(psill = 1, model= 'Sph', range= 200, nugget =1))
plot(vario, model = model_GGT)
 

введите описание изображения здесь
-Кажется, здесь все работает нормально

Затем он показывает ошибку, когда я запускаю блок кода ниже

 krige_result <- krige(formula = log(DO_S)~1, GGT, GGTgrid1, model = model_GGT)
 

с длинными строками ошибок

Предупреждающее сообщение в proj4string(obj):
«Объект CRS имеет комментарий, который теряется при выводе»Предупреждающее сообщение в proj4string(obj):
«Объект CRS имеет комментарий, который теряется при выводе»Предупреждающее сообщение в proj4string(obj):

Ответ №1:

Предупреждения, которые вы получаете, указывают на то, что на вашу работу могут повлиять изменения, внесенные в PROJ 6 (и GDAL 3), принятые R-spatial и rspatial. Вы можете получить все подробности, используя эти две ссылки:

https://rgdal.r-forge.r-project.org/articles/CRS_projections_transformations.html

https://r-spatial.org/r/2020/03/17/wkt.html

Чтобы эти предупреждающие сообщения исчезли, вам просто нужно использовать объекты типа sf и stars (путем установки/загрузки пакетов с одинаковыми именами), которые учитывают эти последние изменения. Итак, я предлагаю вам использовать следующие несколько строк кода в начале вашего сценария, чтобы заменить ваши первые шесть строк кода. Это даст вам два объекта (т. е. GGT типа sf и GGTgrid1 типа stars ) :

 GGT <- read.csv("C:/Users/user/Data/newdata2019.csv")
coordinates(GGT) = ~Lon Lat
GGT <- st_as_sf(GGT)
st_crs(GGT) <- 4326

GGTgrid <- readOGR('C:/Users/user/Desktop/maps/GGTgrid.shp')
coordinates(GGTgrid) <- ~x y
GGTgrid1 <- st_as_stars(GGTgrid1, crs = 4326)
st_crs(GGTgrid1) <- 4326
 

Мне проще работать с реальными данными, чем «виртуально» работать с именами ваших объектов, поскольку у меня нет ваших исходных файлов. Поэтому я предпочитаю показать вам, как приступить к анализу данных «meuse», содержащихся в sp пакете.

По аналогии с reprex, который я вам даю, я думаю, что вы должны уметь управлять своими собственными файлами. И вы увидите, что больше не появится предупреждающее сообщение 🙂

Пожалуйста, найдите ниже мой репрекс.

Репрекс

  • Загрузка библиотеки и данных
 library(sp)
library(sf)
library(stars)
library(gstat)

data(meuse)                # loading the data (equivalent of your csv file)
coordinates(meuse) = ~x y  # you already know this step ;-)

# Just a look to the class of original data 
class(meuse)
#> [1] "SpatialPointsDataFrame"
#> attr(,"package")
#> [1] "sp"                # "meuse" is an object of class 'sp'


data(meuse.grid)           # loading the data (equivalent of your shp file)
gridded(meuse.grid) = ~x y

# Just a look to the class of original data 
class(meuse.grid)
#> [1] "SpatialPixelsDataFrame"
#> attr(,"package")
#> [1] "sp"                # "meuse" is an object of class 'sp'

 
  • Преобразование meuse данных в sf объект и meuse.grid данных в stars объект
 # Convert 'sp' object 'meuse' (i.e. SpatialPointsDataFrame) into 'sf' object
meuse <-  st_as_sf(meuse)

class(meuse) 
#> [1] "sf"         "data.frame"    # meuse is indeed of class 'sf'

# Convert 'sp' object 'meuse.grid' (i.e. SpatialPixelDataFrame) into 'stars' object
meuse.grid <-  st_as_stars(meuse.grid)

class(meuse.grid) 
#> [1] "stars"                       # meuse.grid is indeed of class 'stars'
 
  • Вычислите и постройте вариограмму
 vario <-  variogram(log(zinc)~1, meuse)
model_meuse <-  fit.variogram(vario, model = vgm(psill = 1, model = "Sph", range = 200, nugget = 1))
plot(vario, model = model_meuse)
 

  • Предсказания и отклонения Крига и графика
 krige_result <- krige(formula = log(zinc)~1, meuse, meuse.grid, model = model_meuse)
#> [using ordinary kriging]
class(krige_result)
#> [1] "stars"
krige_result
#> stars object with 2 dimensions and 2 attributes
#> attribute(s):
#>                  Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
#> var1.pred  4.77655207 5.2376428 5.5728908 5.7072284 6.1717618 7.4399908 5009
#> var1.var   0.08549102 0.1372838 0.1621815 0.1853301 0.2116141 0.5002793 5009
#> dimension(s):
#>   from  to offset delta refsys point values x/y
#> x    1  78 178440    40     NA    NA   NULL [x]
#> y    1 104 333760   -40     NA    NA   NULL [y]
 
 plot(krige_result[1]) # plot predictions
 

 plot(krige_result[2]) # plot variances
 

Создано 2021-10-19 с помощью пакета reprex (v2.0.1)

Комментарии:

1. Дай мне знать, если это сработает. Если да, пожалуйста, подумайте о том, чтобы отметить этот ответ как принятый. Если нет, пожалуйста, скажите мне, в чем проблема, с которой вы сталкиваетесь. Овации

2. Lovalery спасибо за вашу помощь и время, он дает ошибку при построении GGTgrid (список) объект не может быть преобразован в тип ‘double’ и код PbSph <- krige(DO_S~1, GGT, GGTgrid, model = sph.fit) , то он prings длинной череде ошибок «АСБ объект комментария, который теряется в выход»предупреждение в proj4string(объект): . PbKrig <- autoKrige(DO_S~1, GGT, GGTgrid1) этот код выводит ошибку в autoKrige(DO_S ~ 1, ГГТ, GGTgrid1): неверный ввод объектов: input_data или data_variogram не класса ‘SpatialPointsDataFrame’. ошибка.

3. Ладно, извини, я ввел тебя в заблуждение. Я только что отредактировал свой ответ выше. Прочитайте его еще раз с самого начала, потому что я изменил несколько строк кода, которые дал вам в первый раз. Вы увидите, что я сделал репрезентацию с комментариями, которая обычно должна позволять вам преуспеть в вашем анализе. Если у вас все еще есть какие-либо трудности, не стесняйтесь обращаться ко мне. Если все работает правильно, пожалуйста, отметьте ответ как принятый. Ваше здоровье.

4. Еще раз спасибо за ваше время и помощь в этом, и я прошу прощения за поздний ответ, так как мне нужно было срочно выполнить еще одно задание. Я попробовал выполнить действия, которые вы любезно объяснили, и получил ошибки в функции krige. Пожалуйста, взгляните на этот вопрос.

5. Не беспокойтесь о задержке. Я понимаю, что вы можете быть заняты другими делами. Спасибо за новую информацию в вашем вопросе. Честно говоря, в данный момент я не совсем понимаю, почему R все еще возвращает это предупреждающее сообщение. Тем не менее, это предупреждающее сообщение, а не сообщение об ошибке. Итак, вы получили результат в конце? И если да, то кажется ли это правильным?