shapely相关操作

shapely相关操作

1. 将为折线的linestring分为多段直线

line = LineString([(114.18453629400005, 30.507459477000054),
 (114.18823357300005, 30.50530951700017),
 (114.19034520000002, 30.50882250000012)])
line

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uSeAJGKV-1686640879316)(./shapely相关操作.assets/image-20230613113435281.png)]

multi_list = []
for i in range(len(line.coords[:-1])):
    start, end = line.coords[i], line.coords[i+1]
    ls = LineString([start,end])
    multi_list.append(ls)
multi_list
[<shapely.geometry.linestring.LineString at 0x1f68a3f07f0>,
 <shapely.geometry.linestring.LineString at 0x1f68a0829e0>]

2. 延伸linestring

延伸前:

在这里插入图片描述

延伸后:

在这里插入图片描述

函数:(注意投影)

def extend_line_in_end(line, distance=10.2):
    """
    延长线段的两端
    ------
    line(linestring):投影过的线段
    distance(float):在两端延长的的长度
    """
    if not isinstance(line, LineString):
        raise ValueError("Input should be a LineString object")

    # 获取起点和终点
    start, end = line.coords[0], line.coords[-1]
    
    # 计算方向
    dx = end[0] - start[0]
    dy = end[1] - start[1]
    angle = math.atan2(dy, dx)

    # 计算新的起点和终点
    new_start = (start[0] - distance*math.cos(angle), start[1] - distance*math.sin(angle))
    new_end = (end[0] + distance*math.cos(angle), end[1] + distance*math.sin(angle))

    # 创建新的LineString
    new_line = LineString([new_start] + list(line.coords)[1:-1] + [new_end])
    
    return new_line
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shapely是一个Python库,用于处理和分析几何形状。在Shapely模块中,使用shapely.geometry.Polygon代表多边形,使用shapely.geometry.MultiPolygon代表多个多边形。可以使用Polygon类创建多边形对象,并且可以获取其相关属性。例如,可以使用area属性获取多边形的面积,使用length属性获取多边形的周长。可以使用exterior.coords获取多边形的外边界坐标,使用interiors获取多边形的内部环。还可以使用bounds属性获取多边形的边界框。 另外,Shapely还提供了一些函数来进行几何对象的转换。例如,可以使用asShape函数将类似于GeoJSON的对象转换为Shapely几何对象。还可以使用shape函数进行几何对象的转换。这些函数可以让您方便地将其他类型的几何对象转换为Shapely几何对象,以进行进一步的分析和处理。 此外,Shapely还提供了一些方法来判断点是否在多边形内部。例如,可以使用contains方法来判断某个点是否在多边形内部。contains方法接受一个Point对象作为参数,如果点在多边形内部,则返回True,否则返回False。 综上所述,通过使用Shapely库,您可以方便地创建、分析和处理几何形状,包括多边形,并进行一些常见的几何操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python之几何集合操作模块Shapely的简介](https://blog.csdn.net/jclian91/article/details/121887135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python模块之Shapely](https://blog.csdn.net/linzi1994/article/details/106484538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值