2012-04-13 44 views
3

可能这是一个愚蠢的问题,但我没有很多经验这样做。我需要从多边形中获取坐标以在R中创建轮廓。它是一个大约1000个点的复杂多边形,因此手动输入坐标是疯狂的。另外我需要提取轮廓内某些对象的xy位置。 我试图使用Illustrator和Inkscape创建一个包含所有信息的svg文件。考虑到svg文件包含所有信息,它看起来是一个很好的选择。有没有办法从路径或多边形点头中提取坐标?或者有其他更简单的方法来完成这个过程? 我真的很感谢任何帮助,因为我必须为大约30张图像做这件事。 干杯如何获取从svg文件到R的路径坐标

+0

指向示例文件的链接或重新创建一个文件的方法会使这个问题更容易回答。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2012-04-13 06:41:14

+0

对不起,没有给出svg文件,我复制了它的一部分: – 2012-04-13 06:47:19

+0

我不知道如何附加文件它有很多要点。这只是一个例子,我需要从多边形中获取坐标,然后从文本中获取坐标。我希望它有道理 – 2012-04-13 06:51:20

回答

6

您可以使用XML包提取坐标。

# Sample data 
library(RCurl) 
url <- "http://upload.wikimedia.org/wikibooks/en/a/a8/XML_example_polygon.svg" 
svg <- getURL(url) 

# Parse the file 
library(XML) 
doc <- htmlParse(svg) 

# Extract the coordinates, as strings 
p <- xpathSApply(doc, "//polygon", xmlGetAttr, "points") 

# Convert them to numbers 
p <- lapply(strsplit(p, " "), function(u) 
    matrix(as.numeric(unlist(strsplit(u, ","))),ncol=2,byrow=TRUE)) 
p 

但是,这忽略了要应用于多边形的任何转换。

+0

感谢它很好,我试图使用XML包,但我没有使用htmlParse,所以我认为这是问题。 – 2012-04-13 08:08:44