爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10161|回复: 0

[经验总结] 判断线段是否经过某区域

[复制链接]

新浪微博达人勋

发表于 2020-9-24 11:41:47 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 柿子柿子柿子 于 2020-9-24 11:44 编辑

在研究判断台风路径是否经过或蹭过某片区域的时候,找了一圈好像只找到了个线段与矩形区域是否重叠的经验贴。
然后就在这个经验贴的基础上实验了一下,发现此方法可行。

使用的是matplotlib.path下的一个类的方法。
然后下面实验的程序输出的结果为:
True
True
True
False
True

===========下面是程序===========
# -*-coding:utf-8 -*-
import matplotlib.path as ppath
import numpy as np

if __name__ == '__main__':

    # 圆
    circle = ppath.Path.unit_circle()

    # 两个正方向框
    _path1 = np.array([[0,0], [0,1], [1,1], [1,0], [0,0]])
    _code1 = np.array([1,2,2,2,79], dtype = np.uint8)
    _path2 = _path1.copy()
    _path2[:,0] = _path2[:,0] + 3
    _code2 = _code1.copy()
    _rec = ppath.Path(np.vstack((_path1, _path2)), np.hstack((_code1, _code2)))

    # 线段
    line = ppath.Path([[3.2,0.5], [3.5,0.7]])
    print(_rec.intersects_path(line))
    line = ppath.Path([[-1,0], [1,2]])
    print(_rec.intersects_path(line))
    #
    line = ppath.Path([[-1,1], [-1,-1]])
    print(circle.intersects_path(line))
    line = ppath.Path([[-1,1], [1,2]])
    print(circle.intersects_path(line))
    line = ppath.Path([[-1,-1], [1,2]])
    print(circle.intersects_path(line))


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表