Я занимаюсь преобразованием сценариев R в Python, и st_coordinates
можно использовать по-разному. Я знаю, что geopandas
имеет аналогичную функциональность в get_coordinates
, но st_coordinates
, по-видимому, возвращает столбец с именем M
. Кто-нибудь знает, что представляет собой этот столбец?
Я не смог найти никакой документации по этому поводу, только по возвращаемым столбцам L1, L2 и L3. Для справки: st_coordinates
передается SF-объект, имеющий только геометрию LineString.
Из-за вычислительных ограничений я не могу запустить R, чтобы опробовать этот код.
По сути, что вы видите, то и получаете. Если sf::st_coordinates()
возвращает столбец M
и/или Z
, ваш объект-объект имеет размер M и/или Z в дополнение к обычным размерам X/Y.
?st_coordinates()
:
Матрица с координатами (X, Y, возможно Z и/или M) в строках, за которыми, возможно, следуют целочисленные индикаторы L1,...,L3, которые указывают, к какой структуре принадлежит координата [...]
library(sf)
#> Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
# starting with some simple wkt representation of a multilinestring
wkt <- "MULTILINESTRING((0 0, 0 1), (1 1, 1 2, 1 3))"
# some workaround to add M dimension to your multilinestring
x1 <- wkt |>
st_as_sfc() |>
st_zm(drop = FALSE, what = "Z") |>
st_as_text() |>
stringr::str_replace('MULTILINESTRING Z', 'MULTILINESTRING M') |>
st_as_sfc()
# result: XYM
x1
#> Geometry set for 1 feature
#> Geometry type: MULTILINESTRING
#> Dimension: XYM
#> Bounding box: xmin: 0 ymin: 0 xmax: 1 ymax: 3
#> m_range: mmin: 0 mmax: 0
#> CRS: NA
#> MULTILINESTRING M ((0 0 0, 0 1 0), (1 1 0, 1 2 ...
# there it is, the M column
st_coordinates(x1)
#> X Y M L1 L2
#> [1,] 0 0 0 1 1
#> [2,] 0 1 0 1 1
#> [3,] 1 1 0 2 1
#> [4,] 1 2 0 2 1
#> [5,] 1 3 0 2 1
# same for z dimension
x2 <- st_zm(x1, drop = TRUE, what = "ZM") |> st_zm(drop = FALSE, what = "Z")
# result: XYZ
x2
#> Geometry set for 1 feature
#> Geometry type: MULTILINESTRING
#> Dimension: XYZ
#> Bounding box: xmin: 0 ymin: 0 xmax: 1 ymax: 3
#> z_range: zmin: 0 zmax: 0
#> CRS: NA
#> MULTILINESTRING Z ((0 0 0, 0 1 0), (1 1 0, 1 2 ...
# and there is your Z
st_coordinates(x2)
#> X Y Z L1 L2
#> [1,] 0 0 0 1 1
#> [2,] 0 1 0 1 1
#> [3,] 1 1 0 2 1
#> [4,] 1 2 0 2 1
#> [5,] 1 3 0 2 1
Created on 2024-04-24 with reprex v2.1.0
ах, это имеет смысл! Мне не хватает M-значений, поэтому, когда я импортирую свои данные, я углублюсь в это. Для всех пользователей geopandas, которые видят это, может помочь следующая ссылка: gis.stackexchange.com/questions/458357/…
Возможно, актуально: Что такое модель измерения «XYZM»?