`
shaojiashuai123456
  • 浏览: 262194 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

计算路线匹配python

 
阅读更多
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#@author shaoshuai

import sys
import os
import traceback
import logging
import re
from osgeo import ogr
import common_logging

logger = logging.getLogger()

class CommonLine(object):
    """
    CommonLine 用来记录线路的轨迹,可以扩充轨迹宽度变成面,查看点是否在面里
    """
    def __init__(self, buffer_size = 1):
        """ 初始化, mutil_line:记录线路  mutil_buffer_line:记录扩充后的面"""
        self.mutil_line = ogr.Geometry(ogr.wkbMultiLineString)
        self.mutil_buffer_line = self.mutil_line.Buffer(buffer_size)
        self.buffer_size = buffer_size


    def add_line(self, cm_start, cm_end):
        """添加线路,更新数据"""
        line = ogr.Geometry(ogr.wkbLineString)
        line.AddPoint(cm_start[0], cm_start[1])
        line.AddPoint(cm_end[0], cm_end[1])
        self.mutil_line.AddGeometry(line)
        self.mutil_buffer_line = self.mutil_line.Buffer(self.buffer_size)


    def set_buffer_size(self, buffer_size):
        """扩展面大小,注意是2倍的扩展"""
        self.mutil_buffer_line = self.mutil_line.Buffer(buffer_size)
        self.buffer_size = buffer_size


    def get_buffer_size(self):
        return self.buffer_size;


    def line_contains_point(self, cm_point):
        point = ogr.Geometry(ogr.wkbPoint)
        point.AddPoint(cm_point[0], cm_point[1])
        return self.mutil_line.Contains(point)
        

    def buffer_contians_point(self, cm_point):
        """判断点是否在面中"""
        point = ogr.Geometry(ogr.wkbPoint)
        point.AddPoint(cm_point[0], cm_point[1])
        return self.mutil_buffer_line.Contains(point)


    def get_area(self):
        return self.mutil_buffer_line.GetArea()


if __name__ == '__main__':
    list_point = [(1, 1), (2, 2), (3, 3)]
    common_line = CommonLine()
    for i in range(len(list_point) - 1):
        common_line.add_line(list_point[i], list_point[i + 1])
   
    print common_line.get_area()
    list_test_point = [(1, 1), (3, 3), (0, 0), (4, 4), (0.5, 0.5), (2, 1)]
    list_test_res = ["true", "true", "false", "false", "true", "true"]

    for (point, hope_res) in zip(list_test_point, list_test_res):
        res = common_line.buffer_contians_point(point)
        print "res:%s, hope:%s" % (res, hope_res)

 

分享到:
评论

相关推荐

    出租车项目python路径匹配.zip

    【标题】:“出租车项目python路径匹配.zip”是一个Python编程项目,专注于实现出租车的路径匹配算法。这个项目可能涉及地理信息系统(GIS)、数据处理以及优化算法,以帮助出租车司机找到最佳路线或者为乘客提供...

    北京地铁计费系统--python实现dijkstra算法

    本项目以“北京地铁计费系统”为例,利用Python实现了Dijkstra算法,为乘客提供了计算任意两个地铁站之间最低费用的解决方案。 首先,Dijkstra算法的基本思想是从起点开始,逐步扩展最短路径到图中的其他节点。它...

    解决容量车辆路径问题的 python 解决方案_CVRP_python_代码_下载

    7. **Python编程**:Python是一种高级编程语言,因其简洁的语法和丰富的库支持,常用于科学计算和数据处理,包括组合优化问题。 8. **物流优化**:CVRP的解决方案对于提高物流效率、降低成本和减少碳排放具有实际...

    100天学成python高手,里面详细定制了每一天的学习路线,自学成python高手不在话下

    3. **字符串处理**:理解字符串的切片、拼接、查找、替换等操作,以及正则表达式用于复杂文本匹配和处理。 4. **函数和模块**:深入学习函数的使用,包括默认参数、可变参数、命名参数,以及模块的导入和使用,如...

    基于遗传算法的具有时间窗的车辆路径问题解决方案的Python实现

    4. Python编程:Python作为一种高级、易读的编程语言,提供了丰富的库和工具,如NumPy、Pandas和matplotlib,用于数据处理、计算和可视化。在这个项目中,可能使用这些库来实现算法并展示结果。 5. 编码策略:在GA...

    python-数据挖掘分析可视化-武汉市出租车轨迹的数据挖掘与分析(数据集+代码+分析结果).zip

    2. **Python编程**:Python是用于数据分析和科学计算的强大工具,具有丰富的库支持如Pandas、NumPy、Matplotlib等。文件中的代码使用Python编写,展示了如何利用这些库进行数据处理和可视化。 3. **数据集**:项目...

    Python学习路线图.pdf

    ### Python学习路线图详解 #### 一、Python简介与预备知识 - **Python语言特性**: - **简单性**:语法简洁明了,易于学习。 - **易读性**:强调代码可读性,代码块通过缩进来区分。 - **动态性**:动态类型语言...

    python遗传算法旅行商代码.zip

    接下来,创建适应度函数计算路线的总距离。然后,定义选择、交叉和变异操作的函数。最后,通过循环迭代执行遗传算法流程,直到满足停止条件(如达到一定的代数或找到满意的解)。 **CSV城市文件** 在本例中,城市...

    高德API + Python 解决租房问题_实验楼

    3. 路径规划API:如果用户需要了解从自己的位置到房源的路线,可以通过输入起点和终点的坐标,调用路径规划API计算出最佳的行驶路线和距离。 在实现过程中,通常需要注册高德地图开发者账号,获取API密钥,并在...

    Python库 | scikit-network-0.7.1.tar.gz

    - **匹配**:解决匹配问题,如匈牙利算法等。 4. **操作**:支持网络的基本操作,如添加、删除节点和边,以及计算网络的度、邻接矩阵等。 5. **可视化**:通过与`networkx`或`matplotlib`等可视化库集成,可以...

    OpenCV-Python-Neural-Network-Autonomous-RC-Car.zi_OpenCV Pytho

    在这个项目中,开发者可能通过收集环境数据(如图像),训练神经网络模型,让模型学习如何解析图像并做出相应的驾驶决策,例如避开障碍物、保持路线等。 基于提供的标签,我们可以推测以下关键知识点: 1. **...

    使用Python实现的旅行商问题的多种求解算法.zip

    5. **近似算法**:这类算法如 Christofides 算法,通过构建最小生成树和匹配来构造近似解。虽然不能保证找到最优解,但它们能在有限的时间内提供接近最优解的路线。 6. **遗传编程**:遗传编程是遗传算法的一种变体...

    Python库 | pydriosm-1.0.1-py3-none-any.whl

    2. **版本兼容性**:确保Python环境与库的版本匹配,避免兼容性问题。 3. **错误处理**:在处理过程中可能出现的错误,如文件格式不正确、网络连接问题等,需要编写适当的异常处理代码。 总的来说,`pydriosm`是...

    GA-for-mTSP-master_GA_python_tsp_

    这是一个经典的优化问题,旨在找到访问多个城市的最短路线,其中每个城市只能访问一次,并最终返回起点。在此项目中,GA被用作解决该问题的智能算法。 **遗传算法(Genetic Algorithm)**是模拟自然选择和遗传过程...

    AI Python编程学习课件-第5章自然语言处理

    - **模式匹配技术**:主要是指计算机将输入的语言内容与预设的单词模式、表达式等进行匹配的技术。这种技术常用于文本搜索、关键词提取等场景。 #### 四、NLTK工具集 - **NLTK简介**:NLTK(Natural Language ...

    遗传算法tsp案例

    2. 计算适应度:根据每条路线的总距离计算其适应度值。 3. 选择:按照适应度值选择优秀的路线进入下一代。 4. 交叉:对选出的路线进行交叉操作,生成新的个体。交叉通常采用均匀交叉或部分匹配交叉等策略。 5. 变异...

    夏威夷气候分析:使用Python和SQLAlchemy对气候数据库进行气候分析和数据探索

    使用上一年的匹配日期计算每个气象站的降雨量。 计算了每日正常值。 正常值是最低,平均和最高温度的平均值。 使用熊猫打印降水数据的摘要统计信息。 车站分析 设计了一个查询来计算总站数。 设计查询以查找最...

    Algorithms-in-Python

    Python的函数式编程特性使得状态空间的表示和递归计算变得直观。 再者,回溯法和贪心策略也是常见的算法思想,用于解决组合优化问题和寻找最优解。Python的迭代器和生成器在实现这些算法时能有效管理内存,避免全量...

    VRPTW-ga:带时间窗的车辆路径问题-使用Python的遗传算法解决方案

    2. 适应度评估:计算每个个体的适应度值,如总行驶距离越小,适应度越高。 3. 选择操作:根据适应度值进行选择,常用策略有轮盘赌选择、锦标赛选择等。 4. 交叉操作:选择两个个体进行基因交叉,生成新的个体。在...

Global site tag (gtag.js) - Google Analytics