st_坐标返回什么?

问题描述 投票:0回答:1

我正在将 R 脚本转换为 Python,并且

st_coordinates
有多种用途。我知道
geopandas
get_coordinates
中具有类似的功能,但
st_coordinates
显然返回一个名为
M
的列。有谁知道这一栏代表什么?

我找不到与此相关的任何文档,仅在返回的 L1、L2 和 L3 列上找到。作为参考,

st_coordinates
正在传递一个仅具有 LineString 几何图形的 sf 对象。

由于计算限制,我无法运行 R 来尝试此代码。

r geospatial geopandas r-sf
1个回答
0
投票

基本上,所见即所得。如果

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

© www.soinside.com 2019 - 2024. All rights reserved.