Как получить координаты слота каждого объекта пространственного полигона

У меня есть объект spacePolygons в R; но я не могу получить "координаты" для каждого объекта spatialPolygon

Вот мой сеанс R:

 [[1]]
    An object of class "Polygon"
    Slot "labpt":
    [1]  5.7828 20.5764

    Slot "area":
    [1] 0.16

    Slot "hole":
    [1] FALSE

    Slot "ringDir":
    [1] 1

    Slot "coords":
               x       y
     [1,] 5.6828 20.7764
     [2,] 5.7828 20.7764
     [3,] 5.8828 20.7764
     [4,] 5.9828 20.7764
     [5,] 5.9828 20.3764
     [6,] 5.8828 20.3764
     [7,] 5.7828 20.3764
     [8,] 5.6828 20.3764
     [9,] 5.5828 20.3764
    [10,] 5.5828 20.7764
    [11,] 5.6828 20.7764


    [[2]]
    An object of class "Polygon"
    Slot "labpt":
    [1]  3.715865 35.160271

    Slot "area":
    [1] 39.68

    Slot "hole":
    [1] FALSE

    Slot "ringDir":
    [1] 1

    Slot "coords":
                 x       y
      [1,] -0.7172 35.1764
      [2,] -0.8172 35.1764
      [3,] -0.9172 35.1764
      [4,] -1.0172 35.1764
      [5,] -1.1172 35.1764
      [6,] -1.1172 35.5764
      [7,] -1.2172 35.5764
      [8,] -1.2172 35.9764
      [9,] -1.2172 36.3764
     [10,] -1.3172 36.3764
     [11,] -1.3172 36.7764
     [12,] -1.4172 36.7764
     [13,] -1.5172 36.7764
     [14,] -1.6172 36.7764
     [15,] -1.6172 37.1764
     [16,] -1.5172 37.1764
     [17,] -1.4172 37.1764
     [18,] -1.3172 37.1764
     [19,] -1.2172 37.1764
     [20,] -1.1172 37.1764
     [21,] -1.0172 37.1764
     [22,] -0.9172 37.1764
     [23,] -0.8172 37.1764
     [24,] -0.7172 37.1764
     [25,] -0.6172 37.1764
     [26,] -0.5172 37.1764
     [27,] -0.4172 37.1764
     [28,] -0.3172 37.1764
     [29,] -0.2172 37.1764
     [30,] -0.1172 37.1764
     [31,] -0.0172 37.1764
     [32,]  0.0828 37.1764
     [33,]  0.1828 37.1764
     [34,]  0.2828 37.1764
     [35,]  0.3828 37.1764
     [36,]  0.4828 37.1764
     [37,]  0.5828 37.1764
     [38,]  0.6828 37.1764
     [39,]  0.7828 37.1764
     [40,]  0.8828 37.1764
     [41,]  0.9828 37.1764
     [42,]  1.0828 37.1764
     [43,]  1.1828 37.1764
     [44,]  1.2828 37.1764
     [45,]  1.3828 37.1764
     [46,]  1.4828 37.1764
     [47,]  1.5828 37.1764
     [48,]  1.6828 37.1764
     [49,]  1.7828 37.1764
     [50,]  1.8828 37.1764
     [51,]  1.9828 37.1764
     [52,]  2.0828 37.1764
     [53,]  2.1828 37.1764
     [54,]  2.2828 37.1764
     [55,]  2.3828 37.1764
     [56,]  2.4828 37.1764
     [57,]  2.5828 37.1764
     [58,]  2.6828 37.1764
     [59,]  2.7828 37.1764
     [60,]  2.8828 37.1764
     [61,]  2.9828 37.1764
     [62,]  3.0828 37.1764
     [63,]  3.1828 37.1764
     [64,]  3.2828 37.1764
     [65,]  3.3828 37.1764
     [66,]  3.4828 37.1764
     [67,]  3.5828 37.1764
     [68,]  3.6828 37.1764
     [69,]  3.7828 37.1764
     [70,]  3.8828 37.1764
     [71,]  3.9828 37.1764
     [72,]  4.0828 37.1764
     [73,]  4.1828 37.1764
     [74,]  4.2828 37.1764
     [75,]  4.3828 37.1764
     [76,]  4.4828 37.1764
     [77,]  4.5828 37.1764
     [78,]  4.6828 37.1764
     [79,]  4.7828 37.1764
     [80,]  4.8828 37.1764
     [81,]  4.9828 37.1764
     [82,]  5.0828 37.1764
     [83,]  5.1828 37.1764
     [84,]  5.2828 37.1764
     [85,]  5.3828 37.1764
     [86,]  5.4828 37.1764
     [87,]  5.5828 37.1764
     [88,]  5.6828 37.1764
     [89,]  5.7828 37.1764
     [90,]  5.8828 37.1764
     [91,]  5.9828 37.1764
     [92,]  6.0828 37.1764
     [93,]  6.1828 37.1764
     [94,]  6.2828 37.1764
     [95,]  6.3828 37.1764
     [96,]  6.4828 37.1764
     [97,]  6.5828 37.1764
     [98,]  6.6828 37.1764
     [99,]  6.7828 37.1764
    [100,]  6.8828 37.1764
    [101,]  6.9828 37.1764
    [102,]  7.0828 37.1764
    [103,]  7.1828 37.1764
    [104,]  7.2828 37.1764
    [105,]  7.3828 37.1764
    [106,]  7.4828 37.1764
    [107,]  7.5828 37.1764
    [108,]  7.6828 37.1764
    [109,]  7.7828 37.1764
    [110,]  7.8828 37.1764
    [111,]  7.9828 37.1764
    [112,]  8.0828 37.1764
    [113,]  8.1828 37.1764
    [114,]  8.2828 37.1764
    [115,]  8.3828 37.1764
    [116,]  8.4828 37.1764
    [117,]  8.5828 37.1764
    [118,]  8.6828 37.1764
    [119,]  8.7828 37.1764
    [120,]  8.8828 37.1764
    [121,]  8.9828 37.1764
    [122,]  9.0828 37.1764
    [123,]  9.1828 37.1764
    [124,]  9.2828 37.1764
    [125,]  9.3828 37.1764
    [126,]  9.4828 37.1764
    [127,]  9.5828 37.1764
    [128,]  9.6828 37.1764
    [129,]  9.7828 37.1764
    [130,]  9.8828 37.1764
    [131,]  9.9828 37.1764
    [132,] 10.0828 37.1764
    [133,] 10.1828 37.1764
    [134,] 10.2828 37.1764
    [135,] 10.3828 37.1764
    [136,] 10.4828 37.1764
    [137,] 10.5828 37.1764
    [138,] 10.6828 37.1764
    [139,] 10.7828 37.1764
    [140,] 10.8828 37.1764
    [141,] 10.9828 37.1764
    [142,] 11.0828 37.1764
    [143,] 11.1828 37.1764
    [144,] 11.2828 37.1764
    [145,] 11.3828 37.1764
    [146,] 11.4828 37.1764
    [147,] 11.5828 37.1764
    [148,] 11.6828 37.1764
    [149,] 11.7828 37.1764
    [150,] 11.8828 37.1764
    [151,] 11.9828 37.1764
    [152,] 11.9828 36.7764
    [153,] 11.9828 36.3764
    [154,] 11.9828 35.9764
    [155,] 11.9828 35.5764
    [156,] 11.9828 35.1764
    [157,] 11.8828 35.1764
    [158,] 11.7828 35.1764
    [159,] 11.6828 35.1764
    [160,] 11.5828 35.1764
    [161,] 11.4828 35.1764
    [162,] 11.3828 35.1764
    [163,] 11.2828 35.1764
    [164,] 11.1828 35.1764
    [165,] 11.0828 35.1764
    [166,] 10.9828 35.1764
    [167,] 10.8828 35.1764
    [168,] 10.7828 35.1764
    [169,] 10.6828 35.1764
    [170,] 10.5828 35.1764
    [171,] 10.4828 35.1764
    [172,] 10.3828 35.1764
    [173,] 10.2828 35.1764
    [174,] 10.1828 35.1764
    [175,] 10.0828 35.1764
    [176,]  9.9828 35.1764
    [177,]  9.8828 35.1764
    [178,]  9.7828 35.1764
    [179,]  9.6828 35.1764
    [180,]  9.5828 35.1764
    [181,]  9.4828 35.1764
    [182,]  9.3828 35.1764
    [183,]  9.2828 35.1764
    [184,]  9.2828 35.5764
    [185,]  9.1828 35.5764
    [186,]  9.0828 35.5764
    [187,]  8.9828 35.5764
    [188,]  8.8828 35.5764
    [189,]  8.7828 35.5764
    [190,]  8.6828 35.5764
    [191,]  8.6828 35.9764
    [192,]  8.5828 35.9764
    [193,]  8.5828 36.3764
    [194,]  8.4828 36.3764
    [195,]  8.3828 36.3764
    [196,]  8.2828 36.3764
    [197,]  8.1828 36.3764
    [198,]  8.0828 36.3764
    [199,]  8.0828 36.7764
    [200,]  7.9828 36.7764
    [201,]  7.8828 36.7764
    [202,]  7.8828 36.3764
    [203,]  7.8828 35.9764
    [204,]  7.7828 35.9764
    [205,]  7.7828 35.5764
    [206,]  7.6828 35.5764
    [207,]  7.5828 35.5764
    [208,]  7.4828 35.5764
    [209,]  7.4828 35.1764
    [210,]  7.3828 35.1764
    [211,]  7.2828 35.1764
    [212,]  7.1828 35.1764
    [213,]  7.0828 35.1764
    [214,]  6.9828 35.1764
    [215,]  6.8828 35.1764
    [216,]  6.7828 35.1764
    [217,]  6.7828 35.5764
    [218,]  6.8828 35.5764
    [219,]  6.8828 35.9764
    [220,]  6.7828 35.9764
    [221,]  6.7828 36.3764
    [222,]  6.6828 36.3764
    [223,]  6.5828 36.3764
    [224,]  6.4828 36.3764
    [225,]  6.4828 36.7764
    [226,]  6.3828 36.7764
    [227,]  6.2828 36.7764
    [228,]  6.1828 36.7764
    [229,]  6.0828 36.7764
    [230,]  5.9828 36.7764
    [231,]  5.9828 36.3764
    [232,]  5.9828 35.9764
    [233,]  5.8828 35.9764
    [234,]  5.7828 35.9764
    [235,]  5.7828 35.5764
    [236,]  5.7828 35.1764
    [237,]  5.6828 35.1764
    [238,]  5.5828 35.1764
    [239,]  5.4828 35.1764
    [240,]  5.3828 35.1764
    [241,]  5.2828 35.1764
    [242,]  5.1828 35.1764
    [243,]  5.0828 35.1764
    [244,]  4.9828 35.1764
    [245,]  4.9828 34.7764
    [246,]  4.8828 34.7764
    [247,]  4.7828 34.7764
    [248,]  4.6828 34.7764
    [249,]  4.6828 34.3764
    [250,]  4.5828 34.3764
    [251,]  4.4828 34.3764
    [252,]  4.4828 33.9764
    [253,]  4.3828 33.9764
    [254,]  4.2828 33.9764
    [255,]  4.2828 33.5764
    [256,]  4.1828 33.5764
    [257,]  4.0828 33.5764
    [258,]  3.9828 33.5764
    [259,]  3.9828 33.1764
    [260,]  3.8828 33.1764
    [261,]  3.7828 33.1764
    [262,]  3.6828 33.1764
    [263,]  3.5828 33.1764
    [264,]  3.4828 33.1764
    [265,]  3.3828 33.1764
    [266,]  3.3828 32.7764
    [267,]  3.2828 32.7764
    [268,]  3.1828 32.7764
    [269,]  3.0828 32.7764
    [270,]  3.0828 32.3764
    [271,]  2.9828 32.3764
    [272,]  2.8828 32.3764
    [273,]  2.7828 32.3764
    [274,]  2.7828 31.9764
    [275,]  2.6828 31.9764
    [276,]  2.5828 31.9764
    [277,]  2.4828 31.9764
    [278,]  2.3828 31.9764
    [279,]  2.3828 31.5764
    [280,]  2.2828 31.5764
    [281,]  2.1828 31.5764
    [282,]  2.0828 31.5764
    [283,]  1.9828 31.5764
    [284,]  1.8828 31.5764
    [285,]  1.7828 31.5764
    [286,]  1.6828 31.5764
    [287,]  1.5828 31.5764
    [288,]  1.4828 31.5764
    [289,]  1.3828 31.5764
    [290,]  1.2828 31.5764
    [291,]  1.1828 31.5764
    [292,]  1.0828 31.5764
    [293,]  0.9828 31.5764
    [294,]  0.8828 31.5764
    [295,]  0.7828 31.5764
    [296,]  0.6828 31.5764
    [297,]  0.5828 31.5764
    [298,]  0.4828 31.5764
    [299,]  0.3828 31.5764
    [300,]  0.2828 31.5764
    [301,]  0.1828 31.5764
    [302,]  0.0828 31.5764
    [303,] -0.0172 31.5764
    [304,] -0.0172 31.9764
    [305,] -0.1172 31.9764
    [306,] -0.2172 31.9764
    [307,] -0.3172 31.9764
    [308,] -0.4172 31.9764
    [309,] -0.5172 31.9764
    [310,] -0.6172 31.9764
    [311,] -0.7172 31.9764
    [312,] -0.7172 32.3764
    [313,] -0.8172 32.3764
    [314,] -0.9172 32.3764
    [315,] -1.0172 32.3764
    [316,] -1.0172 32.7764
    [317,] -1.1172 32.7764
    [318,] -1.1172 33.1764
    [319,] -1.0172 33.1764
    [320,] -1.0172 33.5764
    [321,] -0.9172 33.5764
    [322,] -0.8172 33.5764
    [323,] -0.8172 33.9764
    [324,] -0.7172 33.9764
    [325,] -0.6172 33.9764
    [326,] -0.5172 33.9764
    [327,] -0.4172 33.9764
    [328,] -0.3172 33.9764
    [329,] -0.3172 34.3764
    [330,] -0.2172 34.3764
    [331,] -0.2172 34.7764
    [332,] -0.3172 34.7764
    [333,] -0.4172 34.7764
    [334,] -0.5172 34.7764
    [335,] -0.5172 35.1764
    [336,] -0.6172 35.1764
    [337,] -0.7172 35.1764


    [[3]]
    An object of class "Polygon"
    Slot "labpt":
    [1]  1.199467 36.200642

    Slot "area":
    [1] 1.32

    Slot "hole":
    [1] TRUE

    Slot "ringDir":
    [1] -1

    Slot "coords":
               x       y
     [1,] 0.7828 35.5764
     [2,] 0.8828 35.5764
     [3,] 0.9828 35.5764
     [4,] 1.0828 35.5764
     [5,] 1.1828 35.5764
     [6,] 1.2828 35.5764
     [7,] 1.3828 35.5764
     [8,] 1.4828 35.5764
     [9,] 1.5828 35.5764
    [10,] 1.6828 35.5764
    [11,] 1.6828 35.9764
    [12,] 1.7828 35.9764
    [13,] 1.8828 35.9764
    [14,] 1.8828 36.3764
    [15,] 1.7828 36.3764
    [16,] 1.6828 36.3764
    [17,] 1.6828 36.7764
    [18,] 1.5828 36.7764
    [19,] 1.4828 36.7764
    [20,] 1.3828 36.7764
    [21,] 1.2828 36.7764
    [22,] 1.1828 36.7764
    [23,] 1.0828 36.7764
    [24,] 0.9828 36.7764
    [25,] 0.8828 36.7764
    [26,] 0.7828 36.7764
    [27,] 0.6828 36.7764
    [28,] 0.5828 36.7764
    [29,] 0.5828 36.3764
    [30,] 0.5828 35.9764
    [31,] 0.6828 35.9764
    [32,] 0.7828 35.9764
    [33,] 0.7828 35.5764


    [[4]]
    An object of class "Polygon"
    Slot "labpt":
    [1]  2.8828 33.6164

    Slot "area":
    [1] 0.4

    Slot "hole":
    [1] TRUE

    Slot "ringDir":
    [1] -1

    Slot "coords":
               x       y
     [1,] 2.5828 33.9764
     [2,] 2.5828 33.5764
     [3,] 2.6828 33.5764
     [4,] 2.6828 33.1764
     [5,] 2.7828 33.1764
     [6,] 2.8828 33.1764
     [7,] 2.9828 33.1764
     [8,] 3.0828 33.1764
     [9,] 3.0828 33.5764
    [10,] 3.1828 33.5764
    [11,] 3.1828 33.9764
    [12,] 3.0828 33.9764
    [13,] 2.9828 33.9764
    [14,] 2.8828 33.9764
    [15,] 2.7828 33.9764
    [16,] 2.6828 33.9764
    [17,] 2.5828 33.9764

поэтому я хочу извлечь "координаты" слота из [[1]] в фрейме данных, "координаты" слота из [[2]] в другом фрейме данных и так далее...

Может кто-то мне помочь, пожалуйста?

редактировать :

например, как извлекать координаты???

[1,] 5.6828 20.7764
         [2,] 5.7828 20.7764
         [3,] 5.8828 20.7764
         [4,] 5.9828 20.7764
         [5,] 5.9828 20.3764
         [6,] 5.8828 20.3764
         [7,] 5.7828 20.3764
         [8,] 5.6828 20.3764
         [9,] 5.5828 20.3764
        [10,] 5.5828 20.7764
        [11,] 5.6828 20.7764

person user26480    schedule 11.10.2014    source источник
comment
str объекта было бы лучше, чем полный дамп, и это возможный дубликат Получить значение слота объектов S4?   -  person hrbrmstr    schedule 11.10.2014
comment
на самом деле, у меня нет ни одной ул. Я хочу разобрать свой набор полигонов, Каждый из них должен либо извлечь координаты для каждого полигона, надеюсь, я понял?   -  person user26480    schedule 11.10.2014
comment
@ user26480: Он просит вас предоставить вывод str(object_name_whatever_it_might_be)   -  person IRTFM    schedule 12.10.2014


Ответы (2)


Объект SpatialPolygons представляет собой список polygons, каждый из которых является списком Polygons (да, разница только в написании заглавных букв...). Последний имеет координаты.

Вот пример провинций во Франции, скачанный с GADM:

library(raster)
FR <- getData('GADM',country='FRA',level=1)
length(FR@polygons)
# [1] 22
sapply(FR@polygons,function(p)length(p@Polygons))
#  [1]   1   1   1   2   1  28   2   2   1   1   2  16 245  10  11   3   1   2   1   8  28  23

Итак, FR — это объект spatialPolygons, представляющий французские провинции. Есть 22 polygons, представляющих провинции, и каждая из них имеет один или несколько Polygons, содержащих физические координаты (например, широту и долготу) границы. Может быть несколько Polygons, потому что географии могут быть несмежными (например, острова и т. д.). На самом деле в провинциях, не имеющих выхода к морю, обычно есть только один Polygon, тогда как в прибрежных провинциях их много.

Итак, вы хотите 22 фрейма данных, по одному для каждой провинции, или вам нужен фрейм данных для каждой географии?

Если вы знаете, что ваш объект spatiaPolygons имеет только один Polygon для каждого polygon, вы можете сделать это следующим образом:

result <- lapply(FR@polygons,function(p) data.frame(p@Polygons[[1]]@coords))

В данном случае я просто беру координаты первых Polygon в каждой провинции.

person jlhoward    schedule 11.10.2014

Разве это не просто так?

 name_of_list_of_objects[[1]]@coords

Обычно для объекта S4 есть функция извлечения, которая считается более безопасной и правильной, так что это может сработать:

coordinates( name_of_list_object[[1]] )

Итак, для нескольких элементов просто:

 lapply(name_of_list_of_objects, coordinates)
person IRTFM    schedule 11.10.2014
comment
Если я использую этот ответ для многоугольников, он, кажется, дает мне центр тяжести многоугольников, в то время как приведенный выше ответ дает каждый из углов, чего я и хотел. - person canderson156; 29.03.2020