R语言中sfc几何对象Z坐标缺失及多线串转线串问题求助
R语言中sfc几何对象Z坐标缺失及多线串转线串问题求助
嘿,作为编程和R的新手,遇到这种几何格式的问题太正常啦!我来帮你搞定这两个小麻烦——把MULTILINESTRING转成你需要的LINESTRING,还有去掉那些没用的Z坐标~
问题1:将MULTILINESTRING转换为LINESTRING
你提到已经用QGIS炸开了线段,但读入R后还是MULTILINESTRING,大概率是部分要素仍包含多个线串,或者QGIS的处理没完全生效。用sf包的st_cast()函数就能轻松转换:
# 将MULTILINESTRING转为LINESTRING street_cakung <- st_cast(street_cakung, "LINESTRING")
转换完成后,可以用下面的代码确认几何类型:
# 检查转换后的几何类型 unique(st_geometry_type(street_cakung))
正常情况下输出应该是LINESTRING。
问题2:移除无用的Z坐标
你的数据Z坐标全是0,不仅没用,还可能干扰后续(比如spNetwork里的)分析。用st_zm()函数就能移除Z维度:
# 移除Z坐标,保留XY平面 street_cakung <- st_zm(street_cakung, drop = TRUE, what = "ZM")
验证维度是否正确:
# 检查几何维度 st_dimension(street_cakung)[1]
输出应该是2,代表XY二维。
额外小贴士
如果转换后仍有个别MULTILINESTRING要素,可以用下面的代码找出异常要素,单独排查:
# 找出剩余的MULTILINESTRING要素 problem_features <- street_cakung %>% filter(st_geometry_type(.) == "MULTILINESTRING") # 查看异常要素数量 nrow(problem_features)
备注:内容来源于stack exchange,提问作者Daksa Lintang
相关产品推荐
相关产品推荐

