2012-04-13 70 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