#!/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编程项目,专注于实现出租车的路径匹配算法。这个项目可能涉及地理信息系统(GIS)、数据处理以及优化算法,以帮助出租车司机找到最佳路线或者为乘客提供...
本项目以“北京地铁计费系统”为例,利用Python实现了Dijkstra算法,为乘客提供了计算任意两个地铁站之间最低费用的解决方案。 首先,Dijkstra算法的基本思想是从起点开始,逐步扩展最短路径到图中的其他节点。它...
7. **Python编程**:Python是一种高级编程语言,因其简洁的语法和丰富的库支持,常用于科学计算和数据处理,包括组合优化问题。 8. **物流优化**:CVRP的解决方案对于提高物流效率、降低成本和减少碳排放具有实际...
3. **字符串处理**:理解字符串的切片、拼接、查找、替换等操作,以及正则表达式用于复杂文本匹配和处理。 4. **函数和模块**:深入学习函数的使用,包括默认参数、可变参数、命名参数,以及模块的导入和使用,如...
4. Python编程:Python作为一种高级、易读的编程语言,提供了丰富的库和工具,如NumPy、Pandas和matplotlib,用于数据处理、计算和可视化。在这个项目中,可能使用这些库来实现算法并展示结果。 5. 编码策略:在GA...
2. **Python编程**:Python是用于数据分析和科学计算的强大工具,具有丰富的库支持如Pandas、NumPy、Matplotlib等。文件中的代码使用Python编写,展示了如何利用这些库进行数据处理和可视化。 3. **数据集**:项目...
### Python学习路线图详解 #### 一、Python简介与预备知识 - **Python语言特性**: - **简单性**:语法简洁明了,易于学习。 - **易读性**:强调代码可读性,代码块通过缩进来区分。 - **动态性**:动态类型语言...
接下来,创建适应度函数计算路线的总距离。然后,定义选择、交叉和变异操作的函数。最后,通过循环迭代执行遗传算法流程,直到满足停止条件(如达到一定的代数或找到满意的解)。 **CSV城市文件** 在本例中,城市...
3. 路径规划API:如果用户需要了解从自己的位置到房源的路线,可以通过输入起点和终点的坐标,调用路径规划API计算出最佳的行驶路线和距离。 在实现过程中,通常需要注册高德地图开发者账号,获取API密钥,并在...
- **匹配**:解决匹配问题,如匈牙利算法等。 4. **操作**:支持网络的基本操作,如添加、删除节点和边,以及计算网络的度、邻接矩阵等。 5. **可视化**:通过与`networkx`或`matplotlib`等可视化库集成,可以...
在这个项目中,开发者可能通过收集环境数据(如图像),训练神经网络模型,让模型学习如何解析图像并做出相应的驾驶决策,例如避开障碍物、保持路线等。 基于提供的标签,我们可以推测以下关键知识点: 1. **...
5. **近似算法**:这类算法如 Christofides 算法,通过构建最小生成树和匹配来构造近似解。虽然不能保证找到最优解,但它们能在有限的时间内提供接近最优解的路线。 6. **遗传编程**:遗传编程是遗传算法的一种变体...
2. **版本兼容性**:确保Python环境与库的版本匹配,避免兼容性问题。 3. **错误处理**:在处理过程中可能出现的错误,如文件格式不正确、网络连接问题等,需要编写适当的异常处理代码。 总的来说,`pydriosm`是...
这是一个经典的优化问题,旨在找到访问多个城市的最短路线,其中每个城市只能访问一次,并最终返回起点。在此项目中,GA被用作解决该问题的智能算法。 **遗传算法(Genetic Algorithm)**是模拟自然选择和遗传过程...
- **模式匹配技术**:主要是指计算机将输入的语言内容与预设的单词模式、表达式等进行匹配的技术。这种技术常用于文本搜索、关键词提取等场景。 #### 四、NLTK工具集 - **NLTK简介**:NLTK(Natural Language ...
2. 计算适应度:根据每条路线的总距离计算其适应度值。 3. 选择:按照适应度值选择优秀的路线进入下一代。 4. 交叉:对选出的路线进行交叉操作,生成新的个体。交叉通常采用均匀交叉或部分匹配交叉等策略。 5. 变异...
使用上一年的匹配日期计算每个气象站的降雨量。 计算了每日正常值。 正常值是最低,平均和最高温度的平均值。 使用熊猫打印降水数据的摘要统计信息。 车站分析 设计了一个查询来计算总站数。 设计查询以查找最...
Python的函数式编程特性使得状态空间的表示和递归计算变得直观。 再者,回溯法和贪心策略也是常见的算法思想,用于解决组合优化问题和寻找最优解。Python的迭代器和生成器在实现这些算法时能有效管理内存,避免全量...
2. 适应度评估:计算每个个体的适应度值,如总行驶距离越小,适应度越高。 3. 选择操作:根据适应度值进行选择,常用策略有轮盘赌选择、锦标赛选择等。 4. 交叉操作:选择两个个体进行基因交叉,生成新的个体。在...