Как читать, строить и конвертировать WKT в таблицу в R? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть WKT файл с несколькими сотнями POLYGON((...,...,...)) записей. Существует ли пакет R для чтения, построения и преобразования таких данных? Я не нашел ничего явного. Просто хочу избегать работы со строками, когда может быть более сложный существующий подход. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

одна опция использует wellknown, которая имеет fxn для просмотра данных с leaflet

library(wellknown)
str <- "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"
wktview(str)

enter image description here

и вы можете извлечь координаты, если вы конвертируете в геойсон, например,

wkt2geojson(str)$geometry$coordinates
0 голосов
/ 05 ноября 2018

Хорошо, я нашел два пакета, которые привели меня к простому решению. Вот код для извлечения координат из типа POLYGON((...,...)) WKT.

str="POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"

library(rgeos)
# For this library you need to `sudo apt-get install libgeos++-dev` in Linux
test <-readWKT(str)
library(sp)
plot(test)
coords <- as.data.frame(coordinates(test@polygons[[1]]@Polygons[[1]])) # Extracts coordinates of the polygon

РЕДАКТИРОВАТЬ: вышеупомянутое применяется к единственному объекту строки / WKT. Следующий код может быть применен к файлу WKT, создавая список матриц:

df <- read.table("yourfile.wkt",header = F, sep = "\t")
wow <- apply(df, 1, function(x) readWKT(as.character(x))) # Applies readWKT to every row of your df, i.e. to each WKT object
works = list()
for (i in 1:length(wow)) { 
  works[[i]] <- as.data.frame(coordinates(wow[[i]]@polygons[[1]]@Polygons[[1]]))
} # Loop populates a list with the coordinate matrices of each object of type polygon
...