Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧转换为形状文件_R_Gis_Shapefile_Rgdal - Fatal编程技术网

R 将数据帧转换为形状文件

R 将数据帧转换为形状文件,r,gis,shapefile,rgdal,R,Gis,Shapefile,Rgdal,最初我从美国人口普查网站下载了一个老虎形状的文件。形状文件包含德克萨斯州哈里斯县的所有道路。它包含7个要素,1)识别号(FID),2)其形状(多段线),3)线性id,4)街道名称,5)路线类型代码,6)MAF/TIGER要素类代码,以及7)每条道路的距离(英尺) 我将其导入R,以便根据要素类代码分配速度,并计算每条道路上的行驶时间。我需要以形状文件的形式将其导入ArcGIS writeOGR(revised.data, "harris_shape_file", layer = "harris_t

最初我从美国人口普查网站下载了一个老虎形状的文件。形状文件包含德克萨斯州哈里斯县的所有道路。它包含7个要素,1)识别号(FID),2)其形状(多段线),3)线性id,4)街道名称,5)路线类型代码,6)MAF/TIGER要素类代码,以及7)每条道路的距离(英尺)

我将其导入R,以便根据要素类代码分配速度,并计算每条道路上的行驶时间。我需要以形状文件的形式将其导入ArcGIS

writeOGR(revised.data, "harris_shape_file", layer = "harris_travel_revised", driver = "ESRI Shapefile")
但是,这会抛出一个错误,说明“inherits(ojb,“space”)不正确”。现在我不经常使用形状文件,我是GIS的新手。我正在寻找一些关于可能发生的事情的快速反馈/建议。显然R不能识别数据帧是“空间”的,但我不知道如何改变它

我导入了数据文件,并使用

roads.data <- readORG(dsn="harris_shape_file/")
roads <- roads.data@data

roads.data你是如何修改的
data
?@symbolxau我把剩下的代码添加到了我的问题中。在我命名第7列之后,我使用了writeOGR。我想你可能把事情复杂化了。看看这个线程是否对您有帮助-我觉得您首先不需要将其转换为数据帧:(aka,您可以在shapefile属性表中添加一列,然后像在R中通常那样计算您需要的内容吗?)你可能只需要像这样的东西:
新路你是如何修改的
数据的?@symbolxau我把剩下的代码添加到了我的问题中。在我命名第7列之后,我使用了writeOGR。我想你可能把事情复杂化了。看看这个线程是否对您有帮助-我觉得您首先不需要将其转换为数据帧:(aka,您可以在shapefile属性表中添加一列,然后像在R中通常那样计算您需要的内容吗?)您可能只需要以下操作:
new\u
# mtfcc.codes are based off of unique mtfcc values, excluding parking lot 
# roads, government use, private roads, vehucular trails, bike paths and 
# pedestrian walkways.
mtfcc.codes <- c("S1400", "S1200", "S1100", "S1630", "S1730")

revised.data <- data.frame(matrix(nr=0, nc=6))
colnames(revised.data) <- c("LINEARID", "FULLNAME", "RTTYP", "MTFCC", "DISTANCE")

# assign speed limit based on mtfcc code
for(i in as.character(mtfcc.codes)){
  m.sub <- subset(roads, grepl(paste(i), roads[,4]))
  if(i == "S1400"){
    m.sub[,6] <- "25"
  }
  if(i == "S1200"){
    m.sub[,6] <- "45"
  }
  if(i == "S1100"){
    m.sub[,6] <- "65"
  }
  if(i == "S1630"){
    m.sub[,6] <- "25"
  }
  if(i == "S1730"){
    m.sub[,6] <- "15"
  }
  revised.data <- rbind(revised.data, m.sub)
  print(i)
}
colnames(revised.data)[6] <- "SPEED"

# calculate drive time on each route
revised.data[,5] <- as.numeric(as.character(revised.data[,5]))
revised.data[,6] <- as.numeric(revised.data[,6])

for(i in 1:nrow(revised.data)){
  revised.data[i,7] = revised.data[i,5]*(60/revised.data[i,6])
  print(i)
}

colnames(revised.data)[7] <- "TIME"