地理信息技术——平民化时代的来临(三)

本文探讨了在Windows环境下使用GDI+高效绘制GIS地理对象的关键技术,包括点、线、面的绘制方法及模型转换策略,强调了GDI+在坐标变换上的优势与绘制效率的权衡。

本节主要的问题就是关于如何组织地理对象,以及如何绘制这些对象。地理对象是GIS分析的基础,在上节已经简单论述过这些地理对象,地理对象是可操作的,包括空间分析,数据处理,对象显示等等。为了绘制这些地理对象,我们这里假定开发环境是Windows,绘制引擎采用GDI+。为什么采用GDI+?因为GDI绘制的效果不行,如果画线,你会发现会有很多锯齿,如果地图绘制的线型比较粗,那锯齿效果明显太明显了,用户肯定抱怨死,GDI+的另一个优点是坐标变换比较方面。有优点肯定有缺点,画得好看必然费时,所以绘制效率不是很高,但是这个影响不大。

绘制地理对象的关键是模型转换。GDI+的可绘制对象和我们自定义的地理模型对象并不完全一致,这是需要转换的。上文中我们简单定义的地理对象有,点,线,面这三种,分别用Point, Polyline,Polygon表示,这三类是高级对象,在高级对象的背后,我们可以定义一些低级的对象,这些低级对象可以构造出这些高级对象,而我们的绘制过程只处理高级对象。

Point的绘制。在GIS中,Point包含X,Y坐标。GDI+绘制点没有直接的方法需要用符号表示,而符号可以有很多,最简单可以是一个圈,丰富些,我们可以读取字体库,例如我可以读取TrueType中的一个圈符号,绘制在地图上代表一个城市。下面的图上,我在东经116.3,北纬39.9的位置绘制了一个五角星的符号代表某城市。

第一步,把北京的地理坐标按照我第一篇所讲转到屏幕坐标

第二步,在字符集中找到代表五角星的TrueType符号的unicode编码

第三步,用GDI+ 的drawstring方法绘制五角星符号

Polyline的绘制,其实我在绘制大洲界限的时候已经使用。Polyline又名多义线,他也可以有多个低等级的对象来构建,具体可以参考ESRI的文档。GDI+绘制的时候可以用GraphicsPath来绘制,当然如果多义线存在多个Part(所谓Part就是多个独立的线来表示一个整体的多义线)。

Polygon的绘制是比较复杂的。相对于多义线,Polygon也可以由多个Part构成,例如环,其实是由两个独立的多边形组合而成,只是内外顺序不一致。当然最复杂的情况是Polygon由环和岛同时组成,如果能确定组成Polygon的多边形的线序,那就把GIS比较困难的部分解决了。

下图我构造了一个Polygon,它是一个环,由三个线序不同的多边形按顺序组合而成。

第一步,仍然是坐标转换(地理坐标到屏幕坐标)

第二步,得到每个多边形(其实就是能构成Polygon的多个Part)

第三步,调整每个多边形的线序(按规则来,可以设最外层是顺时针,其次是逆时针,再其次是顺时针...)

第四步,在GraphicsPatch中绘制出来,就能得到如下的效果

其实如果要达到商业化的应用,还有很多工作要做,例如效率,你必须设计出对应地理模型的高效的存储容器。这个其实也不难,可以把上述过程和开源的OGR结合到一起来解决,这就是下一个主题,如何采用OGR来扩展GIS数据格式的读取。

基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系与实际应用场景,强调“借力”工具与创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计与实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现与创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理与代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试与复现,同时注重从已有案例中提炼可迁移的科研方法与创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究与改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性与调参技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值