2012-04-13 8 views
3

Vielleicht ist es eine dumme Frage, aber ich habe nicht viel Erfahrung dabei. Ich muss die Koordinaten von einem Polygon erhalten, um eine Kontur in R zu erstellen. Es ist ein komplexes Polygon von ungefähr 1000 Punkten, so dass die Koordinaten manuell eingegeben werden, ist verrückt. Außerdem muss ich die xy Position einiger Objekte innerhalb der Kontur extrahieren. Ich habe versucht, Illustrator und Inkscape zu verwenden, um eine Svg-Datei zu erstellen, die alle Informationen enthält. Es sieht wie eine gute Option aus, da die Svg-Datei alle Informationen enthält. Gibt es eine Möglichkeit, die Koordinaten aus den Pfad- oder Polygonnicken zu extrahieren? Oder gibt es einen anderen einfacheren Weg, diesen Prozess zu machen? Ich werde wirklich jede Hilfe schätzen, weil ich es für ungefähr 30 Bilder tun muss. ProstWie bekomme ich Koordinaten eines Pfades von Svg-Datei in R

+0

Ein Link zu einer Beispieldatei oder eine Möglichkeit, einen neu zu erstellen, würde dies viel einfacher zu beantworten machen. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

Ok Entschuldigung für nicht die Svg-Datei, ich kopierte einen Abschnitt davon: –

+0

Ich weiß es nicht Wie man die Datei anhängt, hat es viele Punkte. Dies ist nur ein Beispiel, ich brauche die Koordinaten aus dem Polygon und dann die Koordinaten aus dem Text. Ich hoffe es macht Sinn –

Antwort

6

Sie können das XML Paket verwenden, um die Koordinaten zu extrahieren.

# 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 

Dies ignoriert jedoch jede Transformation, die auf das Polygon angewendet werden soll.

+0

Danke, es funktioniert gut, ich habe versucht, es mit dem XML-Paket zu tun, aber ich habe nicht htmlParse, so dass ich denke, das war das Problem. –

Verwandte Themen