В пути SVG «M» означает «перейти к», а «L» означает «линия к».У вас есть два пути, они оба используют только один M, а затем кучу Ls, так что вы можете декодировать их, не понимая и не анализируя все возможности путей SVG.
Если вы разделите эту вещь, которую вы разместили на дваR строк вы можете получить вектор из двух строк, например:
> s
[1] "M2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2227 800L2216 800L2208 800L2197 803L2181 814L2164 830L2142 852L2117 877L2093 901L2071 923L2055 939L2039 950L2032 958L2024 966L2017 981L2013 989"
[2] "M1594 698L1594 698L1594 698L1594 698L1594 698L1594 698L1587 698L1582 698L1578 700L1571 708L1563 725L1561 765L1561 818L1561 864L1561 903L1563 929L1566 953L1566 968L1566 984L1566 990L1571 999L1575 1007L1583 1010"
Затем вы разбиваете строки на M или L, что дает вам координаты в таких символах, как "1594 698", которые вы затем разделяете напробелы, которые затем преобразуются в числовые, которые затем можно преобразовать в матрицу из двух столбцов.Итак, для первого:
> matrix(as.numeric(unlist(strsplit(strsplit(s[1],"[ML]")[[1]]," "))), ncol=2, byrow=TRUE)
[,1] [,2]
[1,] 2227 800
[2,] 2227 800
[3,] 2227 800
[4,] 2227 800
[5,] 2227 800
Первые одиннадцать очков все идентичны.Повторите это для s[1]
, используя базовую обработку данных R, и вы получите два пути, которые выглядят следующим образом:
Возможно, имеется полный обработчик пути SVGв R - вы искали?Я уверен, что есть по крайней мере один в Python и, вероятно, несколько в Javascript.Используйте один из них, если ваши пути более сложны и имеют больше возможных символов управления путями SVG, кроме M и L.