spNetwork 的项目 SpatialLinesDataFrame

Project SpatialLinesDataFrame for spNetwork

我正在尝试使用 spNetworksnkde 功能来创建一个 KDE 来记录 DC 沿其道路网络的事故。在准备函数时,我正在为 nkde 创建 lixels,但是 运行ning lines_center(lixels) 总是给我一个错误。

lixels <- lixelize_lines(dc_lines,1000,mindist = 250)
samples <- lines_center(lixels)

每当我尝试 运行 lines_center(lixels) 时,我都会收到以下错误:

Error in maptools::SpatialLinesMidPoints(with_length) : 
  is.projected(sldf) is not TRUE
In addition: Warning message:
In RGEOSMiscFunc(spgeom, byid, "rgeos_length") :
  Spatial object is not projected; GEOS expects planar coordinates

我尝试查找各种​​技术,例如将 SpatialLinesDataFrame 转换为普通 Dataframe,st_as_sf,然后对其进行投影,但到目前为止没有任何效果,而且我总是遇到同样的错误。

我正在这样加载数据:

dc <- readOGR("assessment/test/Roads_2013", "Roads_2013")

由于上传的文件是一个 Large SpatialPolygonsDataFrame,我正在使用以下代码将其转换为 SpatialLines:

dc_lines <- as(dc, "SpatialLinesDataFrame")

知道我做错了什么或如何正确投射线条吗?

使用的shapefile在这里: https://opendata.dc.gov/datasets/roads

我是 spNetwork 开发人员。请考虑在 github 上发布您的问题以获得更快的响应。这里的问题是您的数据集不使用平面(X/Y 以米为单位的坐标)CRS,而是使用地理 CRS(Lon/Lat 以度为单位)。您需要使用 sp 包中的函数 spTransform 在适当的 CRS 中重新投影数据。这是带有一些示例的 link (https://www.rdocumentation.org/packages/rgdal/versions/1.5-28/topics/spTransform-methods)。

也许 EPSG:2927 可以作为 CRS 使用(我不熟悉美国使用的 EPSG)。

dc <- readOGR("assessment/test/Roads_2013", "Roads_2013")
dc_proj <- spTransform(dc, CRS("+init=epsg:2927"))