Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get coordinates of a path from svg file into R

Tags:

r

svg

inkscape

May be it is a silly question but I don't have a lot of experience doing this. I need to get the coordinates from a polygon to create a contour in R. It is a complex polygon of about 1000 points so to input the coordinates manually is crazy. Also I need to extract the xy position of some objects inside the contour. I tried to use Illustrator and Inkscape to create an svg file that contains all the information. It looks like a good option considering that the svg file contains all the information. Is there a way to extract the coordinates from the path or polygon nods? or there is any other simpler way to do this process? I will really appreciate any help because I have to do it for around 30 images. Cheers

like image 944
Eduardo Garza Avatar asked Apr 13 '12 06:04

Eduardo Garza


1 Answers

You can use the XML package to extract the coordinates.

# 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

However, this ignores any transformation to be applied to the polygon.

like image 136
Vincent Zoonekynd Avatar answered Nov 15 '22 00:11

Vincent Zoonekynd