最初我从美国人口普查网站下载了一个TIGER形状文件。形状文件包含德克萨斯州哈里斯县的所有道路。它包含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,”Spatial“)不为TRUE”。现在我不经常使用形状文件,而且是GIS的新手。我正在寻找一些关于可能发生的事情的快速反馈/建议。显然R不会将数据框架识别为“空间”数据框架,但我不确定如何更改它。
我导入了数据文件,并使用
将属性转换为框架roads.data <- readORG(dsn="harris_shape_file/")
roads <- roads.data@data
我修改了数据如下......
# 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"