Bunu sp
ve maptools
paketlerini kullanarak yapabilirsiniz. maptools
'da writePointsShape()
ve writeLinesShape()
gibi kullanışlı işlevler vardır ve bunlar ESRI şekil dosyası biçimine yazılır.
Bunu yapmadan önce, grafik köşelerinden lat/lon bilgilerini ayıklamak ve köşeler için SpatialPoints
nesnesine ve kenarlar için SpatialLinesDataFrame
nesnesine yerleştirmek gerekir.
Bu kod, aşağıdaki örnekte için çok basit igraph
nesne üretir:
Şimdi
library(igraph)
## Produce a ring graph with 4 vertices
x <- graph.ring(4)
## Add lat/lon information to vertices
V(x)$lat <- c(50, 50, 51, 51)
V(x)$lon <- c(40, 41, 41, 40)
, kenarları için SpatialLinesDataFrame
nesne oluşturmak Son olarak, köşe
library(sp)
library(maptools)
## Create SpatialPoints object containing coordinates
xV <- SpatialPoints(cbind(V(x)$lon, V(x)$lat))
## Write vertices to a shapefile
writePointsShape(xV, fn="vertices")
için
SpatialPoints
nesne oluşturmak. Bu biraz dağınık, ama henüz koordinatlar verilen bir SpatialLines nesnesi üretmek için hızlı bir yol bulmak için henüz.
## Create SpatialLinesDataFrame object describing edges
edges <- get.edgelist(x)+1
edges <- cbind(edgeNum=1:nrow(edges), v1=edges[,1], v2=edges[,2])
xE <- apply(edges, 1, function(i) Lines(Line(cbind(c(V(x)$lon[i["v1"]], V(x)$lon[i["v2"]]), c(V(x)$lat[i["v1"]], V(x)$lat[i["v2"]]))), ID=as.character(i["edgeNum"])))
xE <- SpatialLinesDataFrame(SpatialLines(xE), data=data.frame(edgeNum=1:nrow(edges)))
## Write edges to a shapefile
writeLinesShape(xE, fn="edges")
Çok teşekkür ederim. Bunu şimdi deneyeceğim. – Seen
Lat ve Lon'u çevirdiyse. Şimdi düzeltildi. Benden sonra tekrar et: (Lon = X, Lat = Y) :) – digitalmaps
validity içinde hata.Method (object): Coords eksik değerleri içeremez. Hat için "uygulama" işlevini böyle alırım. Değerleri kontrol edebileceğim herhangi bir öneriniz var mı? Maalesef, R ... – Seen