1

我正在尝试进行点模式分析。为此,我必须转换 SpatialPolygonsDataFrame,使其包含投影坐标而不是弯曲坐标。但是我不断收到同样的错误:

as.owin.SpatialPolygons(Netherlands_flat) 中的错误:只能将投影坐标转换​​为 spatstat 类对象

这是我用于边框的数据:

download.file("http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_1_states_provinces.zip",destfile="ne_10m_admin_1_states_provinces.zip")
unzip("ne_10m_admin_1_states_provinces.zip",exdir="NaturalEarth")
border <- shapefile("NaturalEarth/ne_10m_admin_1_states_provinces.shp")

#extract the border of the Netherlands 
Netherlands <- border[paste(border$iso_a2)=="NL",]

我能够用事件来绘制荷兰的情节。

#Plot 
plot(babesia$Longitude, babesia$Latitude, pch="+",cex=0.5, xlim=c(3.360782, 7.227095), ylim = c(50.723492, 53.554584))
plot(Netherlands, add = T)

有活动的荷兰

但是在使用 Spatstat 包时,我一直遇到这个错误。

我试过这段代码来转换坐标

coord_netherlands <- coordinates(Netherlands)
proj4string(Netherlands)
summary(Netherlands)

Netherlands_flat <- spTransform(coord_netherlands, CRS("+proj=longlat +datum=WGS84 +no_defs"))
Netherlands <- as.owin(Netherlands_flat)

as.owin.SpatialPolygons(Netherlands_flat) 中的错误:只能将投影坐标转换​​为 spatstat 类对象

有谁知道如何解决这个问题?非常感谢您!

4

1 回答 1

1

你快到了。您只需要在调用时投影到另一个坐标系spTransform。您目前要求提供地球球体模型上的地理坐标(长、纬度)。相反,您应该要求一个平面 (x,y) 坐标系。这可能是荷兰适当区域中的 utm 坐标,或者可能有更好的选择。您的事件还需要从 (long,lat) 转换为相同的坐标系。也许您可以查看 spatstat 包的 shapefile 小插图作为示例。或查看本网站上的 spatstat 标签。我在我的手机上,我不能提供详细的帮助。祝你好运。

如果您的事件被data.frame调用xy,您可以像这样投影到 UTM 区域 31N:

xy <- data.frame(lon = 1:2, lat = 1:2)
coordinates(xy) <- ~lon+lat
proj4string(xy) <- CRS("+proj=longlat +datum=WGS84")
xy
# SpatialPoints:
#      lon lat
# [1,]   1   1
# [2,]   2   2
# Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84
# +ellps=WGS84 +towgs84=0,0,0 
events.utm <- spTransform(xy, CRS("+proj=utm +zone=31N +datum=WGS84"))
events.utm
# SpatialPoints:
#           lon      lat
# [1,] 277438.3 110598.0
# [2,] 388786.7 221094.9
# Coordinate Reference System (CRS) arguments: +proj=utm +zone=31N
# +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
于 2020-06-16T16:44:38.060 回答