自动构面算法

关于GIS,虽然类库中已经封装了很多GIS算法,程序员不需要自己来写算法,而通过调用即可实现,然而,有些算法可能不满足需求,还是需要自己动手来写。自动构面算法是GIS算法中很关键的一个算法,测绘人员一般通过DWG格式提交给数据处理人员的,而在DWG数据中,不存在“面”这个几何实体,如何根据封闭的边缘线生成正确的面,成为地理数据生产过程必须解决的问题。我将分章为大家介绍,自动构面算法的实现。
首先,需要建立 线 和 点 的数据结构:
public class Edge //边的数据结构
{
private int edgeid;
public int EdgeID
{
get { return edgeid; }
set { edgeid = value; }
}
//边的实体
private IPolyline edgePolyline;

public IPolyline EdgePolyline
{
get { return edgePolyline; }
set { edgePolyline = value; }
}

private int starpoint;

public int Starpoint
{
get { return starpoint; }
set { starpoint = value; }
}

private int endPoint;

public int EndPoint
{
get { return endPoint; }
set { endPoint = value; }
}

//边的方向
private bool direction = false;

public bool Direction
{
get { return direction; }
set { direction = value; }
}

//边的逆方向是否已经搜索
private bool reverseDirection = false;

public bool ReverseDirection
{
get { return reverseDirection; }
set { reverseDirection = value; }
}

时间: 2024-09-28 17:33:19

自动构面算法的相关文章

文本自动分割算法

1.需求 在数据清洗(ETL),日志文件分析,分隔符信息提取时,我们都会遇到如下常见的文本数据: 中楼层/14层,东西,西直门南大街 3号院,1985年建,板楼 中楼层/23层,南北,通惠南路6号,2003年建,板楼 中楼层/12层,南北,通惠南路6号 1号院,2003年建,塔楼- 一个常见的处理思路,是按照分隔符,对文本进行切割.对于上面的文本,可以采用/,两种符号来切割.变成如下的表格样式,之后进行数据处理便非常容易了. 所以我开玩笑的说,一门语言中split函数可能是用的最多的.在文本处理

致佳音: 推箱子游戏自动求解算法设计(一)

本来酷爱音乐, 老衲也想谱一曲<献给爱丽丝>之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文. 希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤-- 本文分以下四个小节: 一.平面寻路算法(Alpha Star) 二.闭合图形填充算法(扫描线种子填充) 三.推箱子求解 四.执行效率的优化 日本人有个程序叫Sokuban Automatic Solver,文件名是sokoban722.exe我附带在资源里面 不过日本人的东西没有开源,我们也不知道它里面的花花

致佳音: 推箱子游戏自动求解算法设计(二)

这一个小节我们说一说传说中的A×算法,其实之前也上传过类似的小件件,这里我们就去剖析一下它 毕竟在游戏程序,我们要从一点移动到另一点,并得到最短路程的轨迹,类似这种算法还有好几种,执行效率都差不多,不过大多不能得到轨迹 首先,从一点移动到另一点,最快就是直接走过去了,就像小男生爱上小女生,最好的办法就是直接走到她面前说:我爱你 不过理想状态,几乎是没有的,弯路那是必然的经过,有曲线,其实更美-- 那么弯路该怎么走呢,是不是先去背景看下毛主席,再去三亚晒个太阳,再回来告诉她外面的世界好美,不,不,

unity3D引擎:2D游戏自动瞄准算法实现

转:http://blog.csdn.net/naitu/article/details/39555373 在很多飞行射击类游戏里,都有敌人向玩家自动瞄准并开火的功能.在这里本人用unity3D引擎新版本的2D系统来实现这个功能. 首先,让我们了解一下原理的理论知识.我们可以把敌人和玩家放到一个坐标系中,敌人是坐标是的原点((0,0)点),玩家是在这个坐标系中的一点.然后把二者在坐标系中构建成直角三角形来计算坐标系的X轴旋转多少角度指向玩家. 现在假设玩家分别放在坐标系的四个象限中,假设第一象限

致佳音: 推箱子游戏自动求解算法设计(四)

这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程 前面已经说过过,判断局面重复的最好标准不是局面完全一致,而是坐标排序相同且角色坐标通行 如下图,角色无论怎么移动,不推动箱子的时候,都能回到原来的位置,算作同一个局面: 再如下图,两个箱子互换位置,结果与没有移动箱子是一样的,所以排序箱子坐标以后一致,还是相同局面 问:有必要判断局面重复吗?是不是只是提升一下效率? 答:不是为了提升效率,而是为了能解出来,如果使用递归,重复的局面反复耗尽堆栈,而队列则耗尽内存 正如上图,反复推这两个箱子

致佳音: 推箱子游戏自动求解算法设计(三)

这一节我们说说闭合曲线的填充,为什么会有这个东西呢 当我们递归一个场景时,我们以推动箱子为标志,如果不推动箱子,那么跑到哪里都白跑,而出现重复的判别最好就是所有坐标相同 包括这些坐标互换位置(排序结果相同),而后一个场景搬运工坐标能移动到另一个场景搬运工的位置(求解算法部分再详细说) 由于场景有多个箱子,每个箱子可以有几个方向移动,反复的寻路效率不高,起初我想删除路径部分,只检测能否移动到目标 来提升执行效率,就是偷懒一下,然后想想既然是礼物,偷懒也不是分时候,也有脸献给别人于是废弃了A×算法

致佳音: 推箱子游戏自动求解算法设计(五)

说了这么多,这一节是本文最后一节啦,就是程序的进一步优化. 这一节呢,还分那么几个小意思,- -! 1.程序逻辑和机制的优化 2.源码级代码的优化 3.针对CPU和操作系统的编译优化 问:大侠,我是过来人,排序哈希我渐渐习惯了,不痛了,还有哪些地方可以更刺激的 答:前面我们提到检测局面重复,不要让后面的局面有跟走过的局面一样,导致无限的堕落,无法自拔,还有一样是可以算作重复的 那就是失败的局面,即没有一个箱子可以有效推的局面,再出现这个局面就不要分析了,直接删掉吧,那么我们就要再创建一个失败 局

顾广华白细胞图像的自动分割算法的相关改进

1.以寻找极点为基础,参考半径根据终止条件(质心是否改变)进行动态的改变,如不变并且还存在至少3个以上的极点,就需增大参考半径,以使因为参考半径太小而被丢弃的正确极点,重新处于有效状态. 2.当出现凹进去的区域时,可以通过圆形度增大和极值点变少两个条件,有效的去除凹进去的那个极值点,因为若选择了凹进去的极值点,圆形度几乎不会增大并且极值点也不会减少,根据此就可以排除凹进去的极值点,因为如果选择了外面正确的极值点,凹进去的极值点和外面两个极值点就会消失,从而在极值点方面就至少会少3个,圆形度自然也

国内首次深度学习自动驾驶,阿波罗不再只是计划:来自百度开发者中心的观察报告

导读:从世界上首个可在真实道路上实现端到端模式的高级自动驾驶模型Road Hackers,到百度和汽车零部件厂商合作开发的车载可计算平台 BCU,从诞生之初就备受关注的"阿波罗计划"逐渐揭开了它神秘的面纱.而正如百度智能汽车事业部总经理顾维灏在主题演讲中所说,这些,不过仍是阿波罗计划的凤毛麟角. 2017年6月8日,上海 CES Asia 现场. 作为新智元特派员,我置身于上海新国际展览中心 N3 智能驾驶主题馆,被众多汽车品牌的未来炫酷车型所包围.一瞬间,仿佛回到了一个多月前同样在这