Как экспортировать ОЧЕНЬ большой SpatialPolygonDataFrame как шейп-файл? - PullRequest
0 голосов
/ 07 февраля 2020

Я создал несколько полигонов, представляющих "оболочки", которые сгруппированы в изоплеты с использованием пакета R tlocoh. Теперь я хочу экспортировать эти полигоны в виде шейп-файлов для лучшей визуализации. Функция lhs.exp.shp в tlocoh должна быть в состоянии сделать это легко (и делала это для меня раньше), однако, на этот раз (и многочисленные попытки после этого) это привело к фатальной ошибке со следующим всплывающим сообщение об ошибке: «Сеанс RStudio R перестал работать. Из-за проблемы программа перестала работать правильно. Пожалуйста, закройте программу. ” Посмотрев в функцию, я обнаружил, что она использует rgdal::writeOGR в качестве основы - затем я извлек полигоны в виде списка SpatialPolygonDataFrame объектов, и провел его непосредственно через rgdal::writeOGR, и получил та же фатальная ошибка (и та же для raster::shapefile).

Я думаю, что эта ошибка связана с нехваткой памяти при попытке экспортировать большое количество полигонов одновременно. Если это не так, то, пожалуйста, дайте мне знать тоже!

Поэтому я бы хотел поместить SpatialPolygonDataFrame в 5 различных уровней изоплетов, перечисленных в iso$polygons, и объединить полигоны внутри. Например, iso$polygons[[1]] - это первый из пяти уровней изоплет. Для каждого изотопного уровня объедините многоугольники в каждом списке в один многоугольник, чтобы затем экспортировать, например, объедините 84 многоугольника в iso@polygons[[5]]@Polygons в один многоугольник. Экспорт одного полигона в виде шейп-файла. Наконец, заканчивайте 5 шейп-файлами для каждого уровня изоплеты.

Я боролся с этим в течение дней , и я просто не могу понять это правильно.

Любая / вся помощь будет принята с благодарностью!

Примечание: Я обновил все свои пакеты и R (R version 3.6.2 (2019-12-12) -- "Dark and Stormy Night")

Снимок экрана с макетом данных:

screen shot of data structure

Фрагмент структуры:

List of 1
 $ AWT_NAN00238_datetime.pts1035.k5.s0.kmin0:List of 19
  ..$ id       : chr "AWT_NAN00238_datetime"
  ..$ pts      :Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  .. .. ..@ data       :'data.frame':   1035 obs. of  3 variables:
  .. .. .. ..$ ptid: int [1:1035] 1 2 3 4 5 6 7 8 9 10 ...
  .. .. .. ..$ id  : Factor w/ 1 level "AWT_NAN00238_datetime": 1 1 1 1 1 1 1 1 1 1 ...
  .. .. .. ..$ dt  : POSIXct[1:1035], format: "2016-12-04 15:53:33" "2016-12-05 15:53:33" "2016-12-07 15:53:32" "2016-12-08 15:53:32" ...
  .. .. ..@ coords.nrs : num(0) 
  .. .. ..@ coords     : num [1:1035, 1:2] 311987 312715 312717 311363 310279 ...
  .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. ..$ : chr [1:1035] "1" "2" "3" "4" ...
  .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..@ bbox       : num [1:2, 1:2] 308360 7144236 313431 7147789
  .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. .. .. ..$ : chr [1:2] "min" "max"
  .. .. ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. .. .. ..@ projargs: chr "+proj=utm +south +zone=36J +ellps=WGS84"
  ..$ anv      : NULL
  ..$ rw.params:'data.frame':   1 obs. of  4 variables:
  .. ..$ id              : Factor w/ 1 level "AWT_NAN00238_datetime": 1
  .. ..$ time.step.median: num 28775
  .. ..$ d.bar           : num 372
  .. ..$ vmax            : num 0.0843
  ..$ mode     : chr "k"
  ..$ k        : num 5
  ..$ r        : NULL
  ..$ a        : NULL
  ..$ auto.a   : NULL
  ..$ s        : num 0
  ..$ kmin     : num 0
  ..$ dups     :List of 2
  .. ..$ dups.idx: num 465
  .. ..$ offset  : num 1
  ..$ desc     : chr "Hulls created from 1035 locations of AWT_NAN00238_datetime using the Fixed-k method (k=5, s=0, kmin=0, 1 duplic"| __truncated__
  ..$ hulls    :Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
  .. .. ..@ data       :'data.frame':   1035 obs. of  11 variables:
  .. .. .. ..$ pts.idx     : num [1:1035] 1 2 3 4 5 6 7 8 9 10 ...
  .. .. .. ..$ ptid        : int [1:1035] 1 2 3 4 5 6 7 8 9 10 ...
  .. .. .. ..$ nnn         : num [1:1035] 6 6 6 6 6 6 6 6 6 6 ...
  .. .. .. ..$ area        : num [1:1035] 10751 11565 10876 4020 15640 ...
  .. .. .. ..$ perim       : num [1:1035] 505 439 633 327 494 ...
  .. .. .. ..$ tspan       : num [1:1035] 795 879 870 820 643 ...
  .. .. .. ..$ nep         : int [1:1035] 6 6 6 6 6 6 6 6 6 6 ...
  .. .. .. ..$ scg.enc.mean: num [1:1035] 0.0353 0.0221 0.0574 0.0189 0.026 ...
  .. .. .. ..$ scg.enc.sd  : num [1:1035] 0.02621 0.02494 0.04259 0.00877 0.01987 ...
  .. .. .. ..$ scg.nn.mean : num [1:1035] 0.0353 0.0221 0.0574 0.0189 0.026 ...
  .. .. .. ..$ scg.nn.sd   : num [1:1035] 0.02621 0.02494 0.04259 0.00877 0.01987 ...
  .. .. ..@ polygons   :List of 1035

--------------------

..$ hm.params: NULL
  ..$ gen.date : chr "Fri Feb 07 11:50:34 2020"
  ..$ isos     :List of 1
  .. ..$ iso.srt-area.iso-q.h1035.i5:List of 9
  .. .. ..$ ufipt         : chr "Density Isopleths"
  .. .. ..$ desc          : chr "These isopleths were constructed from 1035 hulls sorted by area. Isopleth levels indicate the proportion of tot"| __truncated__
  .. .. ..$ iso.method    : chr "pt.quantiles"
  .. .. ..$ sort.metric   : chr "area"
  .. .. ..$ hmap          : NULL
  .. .. ..$ polys         :Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
  .. .. .. .. ..@ data       :'data.frame': 5 obs. of  7 variables:
  .. .. .. .. .. ..$ iso.level: num [1:5] 0.1 0.25 0.5 0.75 0.95
  .. .. .. .. .. ..$ area     : num [1:5] 5830 40157 257998 946716 4856549
  .. .. .. .. .. ..$ edge.len : num [1:5] 1436 5777 20649 42911 78045
  .. .. .. .. .. ..$ nep      : num [1:5] 105 259 520 777 984
  .. .. .. .. .. ..$ ptp      : num [1:5] 0.101 0.25 0.502 0.751 0.951
  .. .. .. .. .. ..$ hm.val   : num [1:5] 369 1140 3951 9347 39994
  .. .. .. .. .. ..$ num.hulls: int [1:5] 84 221 439 678 948
  .. .. .. .. ..@ polygons   :List of 5
  .. .. .. .. .. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. ..@ Polygons :List of 13
  .. .. .. .. .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. .. .. .. ..@ labpt  : num [1:2] 312380 7145467
  .. .. .. .. .. .. .. .. .. .. ..@ area   : num 324
  .. .. .. .. .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. .. .. .. .. ..@ coords : num [1:6, 1:2] 312383 312376 312361 312380 312398 ...
  .. .. .. .. .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : NULL
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. .. .. .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. .. .. .. ..@ labpt  : num [1:2] 309441 7146001
  .. .. .. .. .. .. .. .. .. .. ..@ area   : num 666
  .. .. .. .. .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. .. .. .. .. ..@ coords : num [1:9, 1:2] 309448 309442 309425 309411 309433 ...
  .. .. .. .. .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : NULL
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. .. .. .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. .. .. .. ..@ labpt  : num [1:2] 311971 7145977
  .. .. .. .. .. .. .. .. .. .. ..@ area   : num 502
  .. .. .. .. .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. .. .. .. .. ..@ coords : num [1:7, 1:2] 311992 311965 311961 311954 311974 ...
  .. .. .. .. .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : NULL
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. .. .. .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. .. .. .. ..@ labpt  : num [1:2] 309876 7145897
  .. .. .. .. .. .. .. .. .. .. ..@ area   : num 482
  .. .. .. .. .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. .. .. .. .. ..@ coords : num [1:8, 1:2] 309891 309885 309877 309859 309864 ...
  .. .. .. .. .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : NULL
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"
  .. .. .. .. .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. .. .. .. .. ..@ labpt  : num [1:2] 311752 7145868
  .. .. .. .. .. .. .. .. .. .. ..@ area   : num 476
  .. .. .. .. .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. .. .. .. .. ..@ coords : num [1:11, 1:2] 311776 311782 311759 311755 311737 ...
  .. .. .. .. .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : NULL
  .. .. .. .. .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y"

-------------------------
...