SVG анализ пути в R - PullRequest
       0

SVG анализ пути в R

0 голосов
/ 03 октября 2018

У меня есть следующий объект пути SVG в R, с шириной хода 300:

[\"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\",\"M1594 698L1594 698L1594 698L1594 698L1594 698L1594 698L1587 698L1582 698L1578 700L1571 708L1563 725L1561 765L1561 818L1561 864L1561 903L1563 929L1566 953L1566 968L1566 984L1566 990L1571 999L1575 1007L1583 1010\"] 

Моя конечная цель - вычислить область, покрытую пятном.В данный момент я застрял с этим форматом данных.Любые идеи о том, как преобразовать этот объект в формат, который позволяет пространственный анализ в R?

1 Ответ

0 голосов
/ 03 октября 2018

В пути 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, и вы получите два пути, которые выглядят следующим образом:

enter image description here

Возможно, имеется полный обработчик пути SVGв R - вы искали?Я уверен, что есть по крайней мере один в Python и, вероятно, несколько в Javascript.Используйте один из них, если ваши пути более сложны и имеют больше возможных символов управления путями SVG, кроме M и L.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...