GIS软件工程实习报告(最短路径分析)
- 格式:doc
- 大小:909.00 KB
- 文档页数:26
实验十五:最短路径分析一、实验目的1、掌握各种类型的最短路径分析;2、理解网络分析原理。
二、实验准备数据准备:City.mdb软件准备:ArcGIS Desktop9.x,ArcCatalog三、实验内容根据不同的要求,获得到达指定目的地的最佳路径,并给出路径的长度;找出距景点最近的某设施的路径。
1、在网络中指定一个商业中心,分别求出在不同距离、时间的限制下从家到商业中心的最佳路径;2、给定访问顺序,按要求找出从家出发,逐个经过访问点,最终到达目的地的最佳路径;3、研究阻强的设置对最佳路径选择的影响。
四、实验步骤启动ArcMap ,打开city. mdb ,双击city数据库,加载数据。
对点状要素place符号化:以HOME字段,1值为家,0值为商业中心。
具体步骤见操作视频:最短路径分析.exe图1 无权重参照的最短路径显示(1)无权重最佳路径的生成1)在网络分析工具条上,选择旗标工具,将旗标放在“家”和想要取得“商业中心”点上。
2)选择Analysis/Options命令,打开Analysis Options对话框,确认Weights和Weight Filter 标签项全部是None,这种情况下进行的最短路径分析是完全按照这个网络自身的长短来确定。
3)在Track Task文本框中选择Find path。
单击solve按钮。
显示最短路径(图1),这条路径的总成本显示在状态栏中。
(2)加权最佳路径生成1)在设施网络分析工具条下,点选旗标工具,将旗标分别放在“家”和想去的某个“商业中心”的位置上。
2)选择Analysis/Options命令,打开Analysis Options对话框(图2)进入Weights标签页,在边的权重上,全部选择长度权重属性。
图2 长度权重属性设置3)在Track Task文本枢中选择Find path,单击solve按钮,则以长度为比重的最短路径将显示出来(图3),这条路径的总成本显示在状态栏中。
arcgis实习报告实习单位:XXX公司实习时间:2021年6月1日-2021年8月31日摘要:本实习报告旨在总结和分享在XXX公司的ArcGIS实习经历。
报告主要包括实习单位介绍、实习目标与计划、实习过程与经验总结以及对个人职业发展的启示等内容。
一、实习单位介绍XXX公司是一家以地理信息系统(GIS)为核心的科技公司,致力于为客户提供地理空间数据管理、地图制图和空间分析等解决方案。
公司拥有丰富的GIS项目经验和专业的技术团队,在行业内享有良好的声誉。
二、实习目标与计划1. 熟悉ArcGIS软件:通过实习,了解ArcGIS软件的基本功能和操作方法,并能熟练运用其进行地图制图、空间分析和数据管理等工作。
2. 参与实际项目:积极参与公司正在进行的GIS项目,学习并应用实际的工作技能,提升解决问题和协作能力。
3. 掌握GIS应用场景:通过实际案例的学习,了解GIS在不同领域的应用场景,例如城市规划、环境保护等,为将来的工作做好准备。
三、实习过程与经验总结1. 熟悉软件环境:首先,我了解并熟悉了ArcGIS软件的安装和配置,熟悉了软件界面和基本操作,学会了如何创建新的地图文档和图层。
2. 地图制图与编辑:在实习期间,我参与了一个城市地图制作项目。
我通过收集和整理地理空间数据,运用ArcGIS软件进行图层叠加、符号化和标注等操作,最终生成了一份精美的城市地图。
3. 空间分析与模型构建:在实习的后期,我参与了一个环境评估项目。
通过运用ArcGIS软件的空间分析工具,我成功进行了环境脆弱性评估,并构建了相应的空间模型,为项目团队提供了有价值的参考意见。
4. 学习与交流:在实习期间,我积极与实习导师和团队成员进行沟通和交流,向他们请教和学习,从他们身上获取了许多宝贵的经验和技巧。
四、对个人职业发展的启示通过这次ArcGIS实习,我深刻认识到地理信息系统的重要性和广泛应用的前景。
我积累了丰富的实际操作经验,并提高了解决问题和协作能力。
一、实习背景随着信息技术的飞速发展,地理信息系统(GIS)作为一种综合性的空间信息处理技术,已经成为现代社会不可或缺的技术工具。
为了更好地将所学知识与实践相结合,提高自身的专业技能,我在2023年暑假期间参加了为期一个月的地理信息系统实习。
本次实习旨在通过实际操作,深入了解GIS的基本原理、应用领域以及在实际工作中的运用。
二、实习目的1. 掌握GIS软件的基本操作,提高空间数据处理和分析能力;2. 了解GIS在各个领域的应用,拓展知识面;3. 培养团队协作和沟通能力,提高实际工作能力;4. 为今后从事GIS相关工作奠定基础。
三、实习内容1. GIS软件学习在实习期间,我主要学习了ArcGIS、MapInfo等GIS软件。
通过老师的讲解和实际操作,我掌握了以下内容:(1)ArcGIS软件:包括地图创建、数据编辑、空间分析、地图输出等基本操作;(2)MapInfo软件:包括地图创建、数据导入导出、空间查询、专题分析等基本操作。
2. 实际项目操作在实习过程中,我参与了以下实际项目:(1)城市土地利用现状调查:通过实地调研,收集城市土地利用数据,运用GIS 软件进行数据处理和分析,绘制土地利用现状图;(2)道路网络规划:根据实际需求,运用GIS软件对道路网络进行优化设计,提高道路通行效率;(3)水资源管理:利用GIS软件对区域水资源进行空间分析和评估,为水资源管理提供科学依据。
3. 团队协作与沟通在实习过程中,我与团队成员共同完成了各项任务。
通过沟通协调,我们共同解决了项目实施过程中遇到的问题,提高了团队协作能力。
四、实习成果1. 熟练掌握了ArcGIS、MapInfo等GIS软件的基本操作;2. 完成了城市土地利用现状调查、道路网络规划、水资源管理等实际项目;3. 提高了空间数据处理和分析能力,拓展了知识面;4. 培养了团队协作和沟通能力。
五、实习体会1. GIS技术在现代社会具有广泛的应用前景,掌握GIS技能对于今后从事相关工作具有重要意义;2. 实践是检验真理的唯一标准,通过实习,我深刻体会到理论知识与实际操作相结合的重要性;3. 团队协作和沟通能力在GIS工作中至关重要,要学会与他人共同解决问题;4. 培养自己的学习能力和创新精神,不断提高自身综合素质。
ARCGIS实习报告(精选5篇)第一篇:ARCGIS 实习报告Arcgis 实习第二次实习报告班级:地信121 姓名:闻元武学号:201201694 空间数据管理及属性编辑一.实验目的1.利用ArcCatalog管理地理空间数据库,理解personal Geodatabase空间数据库模型有关概念。
2.掌握在ArcMap中编辑属性数据的基本操作。
3.掌握根据GPS数据文件生成适量图层的方法和过程。
4.理解图层属性表间的连接(join)或关联(Link)关系。
二.实验要求1.阐述基本原理和概念(要素类,要素数据集)。
2.Geodatabase空间数据库模型的特点。
3.1:M 空间查询的实现原理及应用实例。
比较连接(Join)和关联(Link)关系的区别和应用。
三.实验内容1.启动ArcCatalog 打开一个地理数据库1.1当ArcCatlog打开后,连接到指定文件夹Exec2.1.2 打开个人空间数据库——National,mdb。
可以看到在National,mdb中包含有2个要素数据集,一个关系类和一个属性表。
2.预览地理数据库中的要素类2.1 ArcCatlog窗口右边的数据显示区内,点击“预览”选项切换到预览视图界面。
在目录树中,双击数据集要素集-WorldContainer,点击要素类-Container94激活它。
2.2 在2.1窗口的下方,预览下拉列表中选择“表格”,现在你可以看到 Countries94 的属性表。
查看它的属性字段信息。
2.3 在目录树下面,选择WorldCities。
查看他的属性信息。
3.创建缩图,并查看元数据3.1 在目录树中,选择地理数据库National中的要素类-Countries94,切换到“预览”视图,点击工具栏上的“放大镜”按钮,将图层放大到一定区域,然后再点生成并更新缩略图。
这时,切换到“内容”视图界面下,并在目录树中选择要素集——WorldContainer数据查看方式更改为缩略图方式。
实验一、矢量数据的空间分析练习1:市区择房分析操作步骤:首先打开ArcMap,打开E:\Chp7\Ex1\city。
mxd文件将文件加入到窗口中来,这时就将五个文件全部加入其中来了,如下图所示;(1)主干道噪音缓冲区的建立1)选择交通网络图层(network。
shp),打开图层的属性表,在右下角的打开option选项中,在菜单中选择select by attributes,在select by attributes对话框中,左边选择“TYPE”双击将其添加到对话框下面SQL算式表中,点中间“=",再单击Get unique values 将TYPE的全部属性值加入上面的列表框中,然后选择“ST”属性值,双击添加到SQL算式表中,单击APPL Y按钮,就将市区的主要道路选择出来了2)点击缓冲区按钮对选择的主干道进行缓冲区的建立,首先在缓冲区对象图层选择交通网络图层(network),然后将下面的Use Only the Selected Feature(仅对选择的要素进行分析)选中,单击next;3)确定尺寸单位,选择第一种缓冲区建立方法(At a specified distance),指定缓冲区半径为200米,单击next;4)由于不是分别考虑一个图层的各个不同的要素的目的,所以我们在这里选择的是第一种边界设定类型(Dissolve barriers between),然后指定好缓冲区文件的存放路径和文件名后,单击OK,完成主干道噪音污染缓冲区的建立。
(2)商业中心影响范围建立1)建立大型商业中心的影响范围。
首先点击缓冲区按钮,在缓冲区对象图层选择商业中心分布图层(network),单击next;2)确定尺寸单位,选择第一种缓冲区建立方法,以其属性字段YUZHI为缓冲区半径,单击next;后,单击OK,完成商业中心影响范围缓冲区的建立.(3)名牌高中的影响范围建立1)点击缓冲区按钮,在缓冲区对象图层选择名牌高中分布图层(school),单击next; 2)确定尺寸单位米,选择第一种缓冲区建立方法,指定750米作为半径,设置好后,单击next;后,单机OK,完成名牌高中的覆盖范围缓冲区的建立。
arcgis实习报告一、引言ArcGIS是一款功能强大的地理信息系统软件,能够帮助用户进行地理数据的收集、管理、分析和可视化展示。
本次实习我有幸在某地理信息公司进行ArcGIS实习,本报告将详细记录我在实习期间的工作内容和所取得的成果。
二、实习背景某地理信息公司是一家专业提供空间数据服务的公司,拥有丰富的地理数据资源和专业的技术团队。
在这里,我有机会接触到各种实际项目,并运用ArcGIS进行数据处理和分析,提高了自己的地理信息系统能力。
三、实习目标1. 熟悉ArcGIS软件界面和功能。
2. 学习地理数据的收集与整理。
3. 运用ArcGIS进行地理数据分析和可视化。
4. 参与实际项目并提供解决方案。
5. 提高团队协作与沟通能力。
四、实习过程与成果1. 熟悉ArcGIS软件在实习的初期,我通过学习ArcGIS官方文档和参加公司内部培训,快速掌握了ArcGIS软件的基本操作和常用功能。
包括地图浏览、数据导入、符号化、查询分析等,为后续的实际操作打下了基础。
2. 地理数据收集与整理在项目实施过程中,我参与了地理数据的采集与整理工作。
通过使用ArcGIS Collector等移动设备应用,我学会了如何在实地环境中收集各类地理数据,并进行加工整理。
同时,我还使用ArcGIS Desktop对采集到的数据进行质量检查和数据清洗。
3. 地理数据分析与可视化利用ArcGIS中的空间分析工具,我参与了多个项目的数据分析工作。
例如,对于某区域的居民点分布,我使用点密度分析工具生成了热力图,从而可以直观地了解人口密集区域。
此外,我还进行了地理数据的可视化工作,采用符号化和图层叠加等技术,将数据以地图形式展示出来,提高了数据的可读性和传达效果。
4. 实际项目参与与解决方案在实习期间,我参与了某个城市规划项目的实施,负责制作地理数据分析报告。
通过使用ArcGIS进行空间叠加分析、网络分析等,我成功提取了重要的规划区域、环境设施配套情况等关键信息。
GIS实习报告在大学的学习生涯中,实习是一个重要的环节,它能够将我们在课堂上学到的理论知识与实际应用相结合,让我们更深入地理解专业知识,并为未来的职业发展打下坚实的基础。
在实习时间,我有幸在实习单位名称进行了为期实习时长的 GIS(地理信息系统)实习。
通过这次实习,我不仅学到了许多实用的技能和知识,还对 GIS 行业有了更全面的认识和理解。
一、实习单位及工作内容介绍我实习的单位实习单位名称是一家在地理信息领域具有丰富经验和卓越技术实力的公司。
公司的业务涵盖了城市规划、国土资源管理、环境保护、交通运输等多个领域,为客户提供高质量的地理信息数据处理、系统开发和技术咨询服务。
在实习期间,我主要参与了以下几个项目:1、城市地下管线信息系统建设这个项目旨在建立一个完整、准确的城市地下管线数据库,并开发相应的管理系统,以实现对地下管线的信息化管理。
我的工作是协助项目团队进行地下管线数据的采集、整理和录入,同时参与系统的测试和优化工作。
2、土地利用现状调查与分析该项目需要对某地区的土地利用情况进行全面调查,通过遥感影像解译和实地调查相结合的方式,获取土地利用现状数据,并进行分析和评价。
我在项目中负责遥感影像的处理和解译工作,以及相关数据的统计和分析。
3、交通规划辅助决策系统开发这个项目旨在开发一个基于 GIS 的交通规划辅助决策系统,为交通规划部门提供科学的决策支持。
我参与了系统需求分析和设计工作,以及部分功能模块的开发和测试。
二、实习收获与体会1、专业技能的提升通过参与实际项目,我熟练掌握了多种 GIS 软件的操作和应用,如ArcGIS、SuperMap 等。
我学会了如何进行地理数据的采集、编辑、处理和分析,如何制作专题地图和空间分析报告,以及如何开发简单的GIS 应用系统。
这些技能的提升将对我今后的学习和工作产生积极的影响。
2、团队协作能力的增强在实习过程中,我与项目团队的成员密切合作,共同完成各项任务。
MAPGIS实习报告
我于2021年7月开始在MAPGIS公司实习,实习期为两个月。
在这段时间里,我主要负责了地理信息系统(GIS)的开发、数据处理和技术支持工作。
首先,我学习了基本的GIS概念和应用。
我了解了GIS的工作流程,包括数据收集、数据处理、数据分析和地图制作。
我学习了如何使用ArcGIS Pro和QGIS等GIS软件进行数据处理和地图制作,并掌握了地图投影、坐标系、数据格式转换等GIS操作技巧。
其次,我参与了一个GIS应用的开发项目。
这个项目是为当地政府开发一个在线地图平台,方便市民查询公共设施、公共交通和各类地理信息。
我主要负责了前端界面的开发和数据可视化的实现。
我使用了WebGIS开发框架,如OpenLayers和Leaflet,实现了地图的显示、数据查询、缩放和平移等功能。
我还使用了D3.js数据可视化库将统计数据展示在地图上,增强了地图交互性和用户体验。
最后,我还提供了技术支持服务。
我解答了客户和同事们对GIS软件和数据处理的疑问,并对他们提出的问题进行了解答和调试。
同时,我了解了一些GIS工作中的实际问题和挑战,例如数据质量、精度问题和大数据管理等。
这些经历让我更好地理解了GIS应用的实际价值和发展方向。
总的来说,这次实习让我学到了很多GIS技术和应用方面的知识,同时也锻炼了我的技术能力和应变能力。
我感谢MAPGIS公司为我提供了这个机会,并期待能继续在GIS领域深入学习和发展。
一、实习背景随着科技的飞速发展,地理信息系统(GIS)技术在各行各业的应用日益广泛。
为了更好地了解GIS软件在实际工作中的应用,提高自己的专业技能,我于20xx年x月至20xx年x月在XX公司进行了为期一个月的GIS软件实习。
二、实习目的1. 了解GIS软件的基本原理和功能,掌握常用的GIS软件操作。
2. 学习GIS数据采集、处理和分析的方法。
3. 培养实际应用GIS技术解决实际问题的能力。
4. 提高自己的团队协作和沟通能力。
三、实习内容1. GIS软件基本操作实习期间,我主要学习了ArcGIS软件的基本操作。
通过老师的讲解和实际操作,我掌握了以下内容:(1)ArcMap的基本界面和功能:地图创建、图层管理、地图符号化、坐标系统设置等。
(2)ArcToolbox的基本操作:空间分析、数据转换、数据管理等功能。
(3)ArcGIS Pro的高级功能:三维可视化、网络分析、空间统计等。
2. GIS数据采集与处理在实习过程中,我学习了GIS数据的采集与处理方法,包括:(1)野外数据采集:使用GPS设备采集地面控制点,进行地形测量等。
(2)遥感数据采集:利用遥感影像进行地表覆盖分类、土地调查等。
(3)数据处理:利用ArcGIS软件对采集到的数据进行编辑、拓扑检查、空间分析等。
3. GIS数据分析与应用实习期间,我参与了以下GIS数据分析与应用项目:(1)XX市土地利用现状调查:利用遥感影像和实地调查数据,分析土地利用现状,为土地利用规划提供依据。
(2)XX市交通网络分析:利用ArcGIS Pro进行网络分析,评估道路通行能力,为交通规划提供参考。
(3)XX市生态环境评价:利用GIS空间分析,评估生态环境质量,为环境保护提供依据。
4. 团队协作与沟通在实习过程中,我与团队成员密切配合,共同完成项目。
通过与同事的交流,我学会了如何更好地与他人沟通、协作,提高了自己的团队协作能力。
四、实习收获1. 专业知识方面:通过实习,我对GIS软件有了更深入的了解,掌握了ArcGIS软件的基本操作和高级功能,学习了GIS数据采集、处理和分析的方法,提高了自己的专业技能。
实验二网络分析实习报告一、实验目的网络分析是GIS空间分析的重要功能分。
有两类网络,一为道路(交通)网络,一为实体网络(比如,河流、排水管道、电力网络)。
此实验主要涉及道路网络分析,主要内容包括:●最佳路径分析,如:找出两地通达的最佳路径。
●最近服务设施分析,如:引导最近的救护车到事故地点。
●服务区域分析,如:确定公共设施(医院)的服务区域。
通过对本实习的学习,应达到以下几个目的:(1)加深对网络分析基本原理、方法的认识;(2)熟练掌握ARCGIS下进行道路网络分析的技术方法。
(3)结合实际、掌握利用网络分析方法解决地学空间分析问题的能力。
二、实验准备软件准备:ArcMap,要求有网络分析扩展模块的许可授权数据准备:Shape文件创建网络数据集(高速公路:Highways, 主要街道:Major Streets, 公园:Parks,湖泊:Lakes,街道:Streets)Geodatabase网络数据集:NetworkAnalysis.mdb:包含:街道图层:Streets仓库图层:Warehouses商店图层:Stores在ArcMap中加载启用NetWorkAnylyst网络分析模块:执行菜单命令[工具Tools]>>[Extensions], 在[Extensions]对话框中点击[NetworkAnalyst] 启用网络分析模块,即装入Network Analyst空间分析扩展模块。
道路网络分析步骤1. 创建分析图层2. 添加网络位置3. 设置分析选项4. 执行分析过程显示分析结果三、实验内容及步骤(一) 最佳路径分析根据给定的停靠点,查找最佳路径(最省时的线路)1.1 数据准备1.2 创建路径分析图层1.3 添加停靠点1.4 设置分析选项1.5 运行最佳路径分析得到分析结果1.6 设置路障(barrier)(二) 最近服务设施分析(查找最近的消防队)在这个实验中,当某个位置发生火灾时将找到距事故最近的四个消防队,并且可以进一步找到能够最快到达事故地点的路线.2.1 数据准备2.2 创建“最近服务设施分析图层”2.3 添加“服务设施”图层2.4 设定火灾事故发生地点2.5 设置分析选项四.实验感悟实验可以提高我的实践能力,我觉得我应该加强实验。
AE开发之基于几何网络的最短路径分析1、实习目的本次实习目的在于熟练掌握ArcGIS Engine开发工具并能够通过C#语言在VS 2010开发环境中完成查询几何网络的最短路径分析的功能。
2、实习时间2015年5月23日星期六3、实习容3.1实验环境操作系统:Windows 2007二次开发平台:VS 2010开发环境、ArcGIS Desktop10.0、AE开发组件3.2实验任务完成基于几何网络分析的最短路径查询功能,即实现通过在几何网络地图中指定起始点,能够查询经过起始点的最短路线,并能够通过缩放功能在地图窗口居中显示。
3.3实验步骤3.3.1新建项目选择\文件\新建项目,如图选择项目类型中Visual C#,再选择Windows Application,记为“FindShortPath”,点击确定。
3.3.2添加控件3.3.3控件绑定因为添加的控件只是单独存在,但是程序需要各控件间协同工作,因此要进行控件绑定。
3.3.4创建几何网络1.在ArcCataLog中新建个人地理数据库—“甘地的个人地理数据库”,然后新建要素数据集“road”,接着,鼠标右键选择要素数据集“road”,选择“导入要素类”,导入需要创建几何网络的要素类“主要公路”,输出要素类的名字改为“road”,如下图所示:2.鼠标右键选择要素数据集“road”,选择新建“几何网络”,则出现“新建几何网络”对话框,作如下图所示的一系列设置,最终得到几何网络“road_Net”。
至此,得到几何网络“road_Net”,如下图所示:3.3.5代码实现最短路径分析①设置ToolStrip1②添加代码private IActiveView m_ipActiveView;private IMap m_ipMap;//地图控件中地图private IGraphicsContainer pGC;//图形对象private bool clicked = false;int clickedcount = 0;private double m_dblPathCost = 0;private IGeometricNetwork m_ipGeometricNetwork;private IPointCollection m_ipPoints;//输入点集合private IPointToEID m_ipPointToEID;private IEnumNetEID m_ipEnumNetEID_Junctions;private IEnumNetEID m_ipEnumNetEID_Edges;private IPolyline m_ipPolyline;private IMapControl3 mapctrlMainMap = null;private void Form1_Load(object sender, EventArgs e){//对象初始化mapctrlMainMap = (IMapControl3)this.axMapControl1.Object;m_ipActiveView = axMapControl1.ActiveView;m_ipMap = m_ipActiveView.FocusMap;clicked = false;pGC = m_ipMap as IGraphicsContainer;}private void Findpath_Click(object sender, EventArgs e){mapctrlMainMap.CurrentTool = null;//设置鼠标样式axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;if (yerCount == 0){MessageBox.Show("请先加载几何网络数据!");return;}m_ipActiveView = axMapControl1.ActiveView;m_ipMap = m_ipActiveView.FocusMap;clicked = false;pGC = m_ipMap as IGraphicsContainer;ILayer ipLayer = m_ipMap.get_Layer(0);IFeatureLayer ipFeatureLayer = ipLayer as IFeatureLayer;IFeatureDataset ipFDS = ipFeatureLayer.FeatureClass.FeatureDataset;OpenFeatureDatasetNetwork(ipFDS);clicked = true;clickedcount = 0;pGC.DeleteAllElements();}private void SolvePath_Click(object sender, EventArgs e){axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;if (SolvePathGan("Weight"))//先解析路径{IPolyline ipPolyResult = PathPolyLine();//最后返回最短路径clicked = false;if (ipPolyResult.IsEmpty){MessageBox.Show("没有路径可到!!");}else{IRgbColor color = new RgbColorClass();color.Red = 255;color.Blue = 64;color.Green = 128;LineElementClass element = new LineElementClass();ILineSymbol linesymbol = new SimpleLineSymbolClass();linesymbol.Color = color as IColor;linesymbol.Width = 3;element.Geometry = m_ipPolyline;element.Symbol = linesymbol;pGC.AddElement(element, 0);m_ipActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);axMapControl1.FlashShape(element.Geometry);MessageBox.Show("路径经过" + m_ipEnumNetEID_Edges.Count + "条线" + "\r\n" + "经过节点数为" + m_ipEnumNetEID_Junctions.Count + "\r\n" + "路线长度为" + m_ipPolyline.Length.ToString("#######.##") + "\r\n", "几何路径信息");}}}//路径缩放功能private void SuoFang_Click(object sender, EventArgs e){if (m_ipPolyline == null){MessageBox.Show("当前没有执行路径查询!!!请确认!");}else{this.axMapControl1.Extent = m_ipPolyline.Envelope;}}#region 自定义路径查询函数public void OpenFeatureDatasetNetwork(IFeatureDataset FeatureDataset){CloseWorkspace();if (!InitializeNetworkAndMap(FeatureDataset))Console.WriteLine("打开network出错");}//关闭工作空间private void CloseWorkspace(){m_ipGeometricNetwork = null;m_ipPoints = null;m_ipPointToEID = null;m_ipEnumNetEID_Junctions = null;m_ipEnumNetEID_Edges = null;m_ipPolyline = null;}//初始化几何网络和地图private bool InitializeNetworkAndMap(IFeatureDataset FeatureDataset){IFeatureClassContainer ipFeatureClassContainer;IFeatureClass ipFeatureClass;IGeoDataset ipGeoDataset;ILayer ipLayer;IFeatureLayer ipFeatureLayer;IEnvelope ipEnvelope, ipMaxEnvelope;double dblSearchTol;INetworkCollection ipNetworkCollection = FeatureDataset as INetworkCollection;int count = ipNetworkCollection.GeometricNetworkCount;//获取第一个几何网络工作空间m_ipGeometricNetwork = ipNetworkCollection.get_GeometricNetwork(0);INetwork ipNetwork = m_work;if (m_ipMap != null){ipFeatureClassContainer = m_ipGeometricNetwork as IFeatureClassContainer;count = ipFeatureClassContainer.ClassCount;for (int i = 0; i < count; i++){ipFeatureClass = ipFeatureClassContainer.get_Class(i);ipFeatureLayer = new FeatureLayerClass();ipFeatureLayer.FeatureClass = ipFeatureClass;for (int j = 0; j < m_yerCount; j++){if (m_ipMap.get_Layer(j).Name.ToUpper() == .ToUpper()){continue;}}}}count = m_yerCount;ipMaxEnvelope = new EnvelopeClass();for (int i = 0; i < count; i++){ipLayer = m_ipMap.get_Layer(i);ipFeatureLayer = ipLayer as IFeatureLayer;ipGeoDataset = ipFeatureLayer as IGeoDataset;ipEnvelope = ipGeoDataset.Extent;ipMaxEnvelope.Union(ipEnvelope);}m_ipPointToEID = new PointToEIDClass();m_ipPointToEID.SourceMap = m_ipMap;m_ipPointToEID.GeometricNetwork = m_ipGeometricNetwork;double dblWidth = ipMaxEnvelope.Width;double dblHeight = ipMaxEnvelope.Height;if (dblWidth > dblHeight)dblSearchTol = dblWidth / 100;elsedblSearchTol = dblHeight / 100;m_ipPointToEID.SnapTolerance = dblSearchTol;return true;}//返回路径的几何体public IPolyline PathPolyLine(){IEIDInfo ipEIDInfo;IGeometry ipGeometry;if (m_ipPolyline != null) return m_ipPolyline;m_ipPolyline = new PolylineClass();IGeometryCollection ipNewGeometryColl = m_ipPolyline as IGeometryCollection;//引用传递ISpatialReference ipSpatialReference = m_ipMap.SpatialReference;IEIDHelper ipEIDHelper = new EIDHelper();ipEIDHelper.GeometricNetwork = m_ipGeometricNetwork;ipEIDHelper.OutputSpatialReference = ipSpatialReference;ipEIDHelper.ReturnGeometries = true;IEnumEIDInfo ipEnumEIDInfo = ipEIDHelper.CreateEnumEIDInfo(m_ipEnumNetEID_Edges);int count = ipEnumEIDInfo.Count;ipEnumEIDInfo.Reset();for (int i = 0; i < count; i++){string[] info;info = new string[count];ipEIDInfo = ipEnumEIDInfo.Next();ipGeometry = ipEIDInfo.Geometry;ipNewGeometryColl.AddGeometryCollection(ipGeometry as IGeometryCollection);info[i] = m_ipPolyline.Length.ToString();}return m_ipPolyline;}public bool SolvePathGan(string WeightName){try{int intJunctionUserClassID;int intJunctionUserID;int intJunctionUserSubID;int intJunctionID;IPoint ipFoundJunctionPoint;ITraceFlowSolverGEN ipTraceFlowSolver = new TraceFlowSolver() as ITraceFlowSolverGEN;INetSolver ipNetSolver = ipTraceFlowSolver as INetSolver;if (m_ipGeometricNetwork == null){return false;}INetwork ipNetwork = m_work;ipNetSolver.SourceNetwork = ipNetwork;INetElements ipNetElements = ipNetwork as INetElements;if (m_ipPoints == null){ MessageBox.Show("请选择点!!"); return false; }int intCount = m_ipPoints.PointCount;//这里的points 有值吗?////定义一个边线旗数组//*********最近点***************//////////IJunctionFlag[] pJunctionFlagList = new JunctionFlag[intCount];for (int i = 0; i < intCount; i++){INetFlag ipNetFlag = new JunctionFlag() as INetFlag;IPoint ipJunctionPoint = m_ipPoints.get_Point(i);//查找输入点的最近的网络点m_ipPointToEID.GetNearestJunction(ipJunctionPoint, out intJunctionID, out ipFoundJunctionPoint);ipNetElements.QueryIDs(intJunctionID, esriElementType.esriETJunction, out intJunctionUserClassID, out intJunctionUserID, out intJunctionUserSubID);erClassID = intJunctionUserClassID;erID = intJunctionUserID;erSubID = intJunctionUserSubID;IJunctionFlag pTemp = (IJunctionFlag)(ipNetFlag as IJunctionFlag);pJunctionFlagList[i] = pTemp;}ipTraceFlowSolver.PutJunctionOrigins(ref pJunctionFlagList);INetSchema ipNetSchema = ipNetwork as INetSchema;INetWeight ipNetWeight = ipNetSchema.get_WeightByName(WeightName);INetSolverWeights ipNetSolverWeights = ipTraceFlowSolver as INetSolverWeights;ipNetSolverWeights.FromToEdgeWeight = ipNetWeight;//开始边线的权重ipNetSolverWeights.ToFromEdgeWeight = ipNetWeight;//终止边线的权重object[] vaRes = new object[intCount - 1];//通过findpath得到边线和交汇点的集合ipTraceFlowSolver.FindPath(esriFlowMethod.esriFMConnected,esriShortestPathObjFn.esriSPObjFnMinSum,outm_ipEnumNetEID_Junctions, out m_ipEnumNetEID_Edges, intCount - 1, ref vaRes);m_dblPathCost = 0;for (int i = 0; i < vaRes.Length; i++){double m_Va = (double)vaRes[i];m_dblPathCost = m_dblPathCost + m_Va;}m_ipPolyline = null;return true;}catch (Exception ex){Console.WriteLine(ex.Message); return false;}#endregion}private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){if (clicked != true)return;IPoint ipNew;if (m_ipPoints == null){m_ipPoints = new Multipoint();}ipNew = m_ipActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);object o = Type.Missing;m_ipPoints.AddPoint(ipNew, ref o, ref o);IElement element;ITextElement textelement = new TextElementClass();element = textelement as IElement;clickedcount++;textelement.Text = clickedcount.ToString();element.Geometry = m_ipActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);pGC.AddElement(element, 0);m_ipActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}3.4实验结果在得到的窗口中加载“甘地的个人地理数据库”(在压缩包中有)中的几何网络“road_Net”,将几何网络地图加载到地图显示窗口中,如下图所示:点击图标添加起始点,效果如下图:然后点击图标,计算最短路径,效果如下图:最后点击图标得到最短路径的缩放,效果如下图:这样就完成了最短路径的查询分析和显示的功能。