我正在将 R 脚本转换为 Python,并且
st_coordinates
有多种用途。我知道 geopandas
在 get_coordinates
中具有类似的功能,但 st_coordinates
显然返回一个名为 M
的列。有谁知道这一栏代表什么?
我找不到与此相关的任何文档,仅在返回的 L1、L2 和 L3 列上找到。作为参考,
st_coordinates
正在传递一个仅具有 LineString 几何图形的 sf 对象。
由于计算限制,我无法运行 R 来尝试此代码。
基本上,所见即所得。如果
sf::st_coordinates()
返回列 M
和/或 Z
,则除了常规 X/Y 尺寸外,您的特征对象还具有 M 和/或 Z 尺寸。
?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
创建于 2024-04-24,使用 reprex v2.1.0