首页 > 解决方案 > 使用函数“as.owin”加载 .shp 文件时出错

问题描述

我正在使用“SpatialPolygonsDataFrame”类的“.shp”文件,我正在尝试应用它,一个名为“as.owin”的函数,如下面的代码所示。但是“as.owin”函数返回了下一个错误。

polygon <- readOGR(dsn = "C:/Users/Datos Geoespaciales/recintos_provinciales_inspire_peninbal_etrs89",layer = "recintos_provinciales_inspire_peninbal_etrs89", encoding = "UTF-8")
im <- as.owin(polygon, fatal = TRUE)

“as.owin.SpatialPolygons(abc, fatal = TRUE) 中的错误:只能将投影坐标转换​​为 spatstat 类对象”

我也尝试了函数“as.owin.SpatialPolygons”,但错误仍然相同

im <- as.owin.SpatialPolygons(polygon, fatal = TRUE)

“as.owin.SpatialPolygons(abc, fatal = TRUE) 中的错误:只能将投影坐标转换​​为 spatstat 类对象”

根据我在互联网上找到的一些信息,我使用函数 readShapeSpatial 加载了 .shp 文件,并且错误发生了变化。

polygon <- readShapeSpatial("C:/Users/Datos Geoespaciales/recintos_provinciales_inspire_peninbal_etrs89.shp")
im <- as.owin(polygon, fatal = TRUE)

“错误:'spatstat.options' 不是从 'namespace:spatstat' 导出的对象”

我还尝试更改 .shp 文件的 CRS,但错误仍然相同

utm <- "+proj=utm +zone=32 +datum=WGS84"
polygon <- spTransform(test_test, utm)
im <- as.owin(polygon, fatal = TRUE)

“错误:'spatstat.options' 不是从 'namespace:spatstat' 导出的对象”

我不确定,我做错了什么?,我将不胜感激。

标签: rgeospatialsf

解决方案


我采用了一种稍微不同的方法,即使用 读取和投影 shapefile sf,将其转换为Spatial*并创建一个owin. 见代表:

library(sf)
library(spatstat)
library(maptools)

# With sf
polygon <- st_read("recintos_provinciales_inspire_peninbal_etrs89.shp")
st_is_longlat(polygon)

#> [1] TRUE

# sf to sp
polygon_sp <- as(polygon, "Spatial")
# Error
im <- as.owin(polygon_sp, fatal = TRUE)

#> Error in as.owin.SpatialPolygons(polygon_sp, fatal = TRUE) : 
#>  Only projected coordinates may be converted to spatstat class objects

# Project EPSG:25830
polygon_utm <- st_transform(polygon, 25830)

st_is_longlat(polygon_utm)
#> [1] FALSE

# sf to sp
polygon_utm_sp <- as(polygon_utm, "Spatial")
# No error
im_utm <- as.owin(polygon_utm_sp, fatal = TRUE)

im_utm

#> window: polygonal boundary
#> enclosing rectangle: [-14129.5, 1126923.3] x [3892590, 4859517] units

推荐阅读