m6米乐在线登录入口介绍 /
在地理信息系统(GIS)的广阔领域中,面状要素的中心线提取是一项至关重要的技术。无论是蜿蜒的道路、曲折的河流,还是城市的街区轮廓,这些面状要素的中心线都是我们理解和分析地理空间的关键。通过这一过程,我们能够从复杂的面状数据中提取出简洁而精确的线性特征,为GIS的数据处理和应用提供了坚实的基础。我们将一起学习几种不同的方法,来实现这一功能。无论你是GIS的新手,还是资深的地图爱好者,相信都能在这里找到你感兴趣的内容。
图片
为什么要提取中心线?中心线的提取不仅简化了数据结构,还增强了我们对地理现象的洞察力,例如以下几个方面:数据抽象:中心线的提取帮助我们将面状要素抽象为线性要素,简化了数据的复杂性,便于进行进一步的分析和处理。空间关系明确:中心线清晰地界定了面状要素的几何中心,为理解要素之间的空间关系提供了直观的参考。分析效率提升:中心线作为GIS分析的基础,使得网络分析、路径规划等操作更加高效和精确。可视化增强:中心线的提取增强了地理数据的可视化效果,使得地图上的信息传达更为清晰和直观。决策支持:为城市规划、环境管理、交通规划等领域的决策者提供了准确、可靠的空间数据支持。通过中心线的提取,GIS用户能够更深入地理解地理空间的结构和动态,为地理信息的科学管理和有效应用奠定了基础。
图片
方法一这个方法仅适用于ArcGIS pro中,ArcMap中并没有这个功能,我愿称它为最优解法,可以直接从面状要素中提取出中心线。
步骤一:将面要素合并
在ArcGIS pro的编辑窗口下选择你所有的面要素进行合并(当然如果你的数据质量很高不需要有这一步骤)。
在弹出的对话框中核实数量后点击合并就完成了,然后点击保存编辑。
图片
步骤二:运行多边形到中心线
在ArcGIS pro的视图窗口下打开地理处理的界面。
搜索“polygon to Centerline”工具,放入你的要素然后运行就行了,这里要注意输出一定是指向数据库的要素类,不能输出shp文件。
图片
图片
方法二此法适于数据量小、质量好的道路面数据。数据不佳时,可能仅得轮廓。为避免此问题,需编辑数据,为道路开缺口,但道路众多,编辑耗时。故该方法仅适于量少质高的数据。
步骤一:使用【面转线】工具
在ArcMap或ArcGIS pro的工具箱或工具栏中,找到并选择“数据管理工具”->“要素”->“要素转线”。
在弹出的对话框中,选择要转换的面状要素图层作为输入。
然后点击“确定”开始转换。生成的线要素将沿着面状要素的边界。
图片
步骤二:数据预处理(可选)
检查数据:如果原始面状数据质量不高,需要进行手动编辑。
编辑数据:使用编辑工具打开道路面数据的缺口,避免提取整个面状轮廓。这也是他的局限性所在,只能有缺口才能识别到。
保存编辑:确保编辑后的数据保持拓扑正确性,并保存更改。
图片
步骤三:使用【提取中心线】工具
在ArcMap的工具箱或工具栏中,找到并选择“制图工具”->“制图综合”->“提取中心线”。
选择输入:选择上一步生成的线状要素数据集作为输入。
根据需求配置工具参数,如中心线提取的最小与最大宽度,也就是你整个数据中最窄的地方和最宽的地方分别填入。
图片
图片
方法三这个方法嘛源远流长,我想大家都会了,就是利用ArcScan来进行中心线的提取,这个方法效果也还不错,属于是“古法炮制”了。
步骤一:数据标识化处理
在ArcGIS环境中,为提升数据的可识别性与处理效率,我们引入一个新字段“recg”,并通过字段计算器统一赋值为“1”。此步骤旨在通过明确的标识增强数据的辨识度,为后续处理奠定坚实基础。
图片
步骤二:面要素栅格化转换
利用ArcToolbox中的“转换工具”->“转为栅格”->“面转栅格”工具,将经过标识的面要素转换为栅格数据。在此过程中,选定“recg”字段作为值字段,并精确设置像元大小以优化数据精度(参考取值1,黑乎乎的栅格出炉)。栅格化转换不仅规范了数据形态,还便于后续进行更高级别的空间分析。
图片
步骤三:栅格数据重分类处理
利用ArcToolbox中的“3D Analyst 工具”->“栅格重分类”->“重分类”工具,执行栅格数据重分类操作。此步骤旨在简化栅格数据,通过明确设定新值“1”与“0”,区分道路核心区域与非核心区域,为道路中心线的精确提取创造有利条件。
图片
步骤四:ArcScan工具与新建线要素
通过“自定义”工具条下的“拓展模块”选项,激活ArcScan工具,并调整工具栏布局以便快速访问(也就是鼠标右键空白处把ArcScan勾选上)。ArcScan作为ArcGIS中针对矢量化操作的高级模块,能够有效支持复杂地理数据的精准矢量化处理。并且新建一个线要素类。
图片
步骤五:中心线矢量化提取
新建线要素类作为中心线的存储容器,并启动编辑会话。随后,在ArcScan工具的指引下,设置矢量化选项,选定中心线提取方法,并精细调整相关参数以确保提取结果的准确性。执行“生成要素”操作,ArcScan将基于栅格数据自动或半自动生成中心线矢量数据。
图片
图片
方法四这个可以在ArcMap中实现一键提取中心线,不过效果有点捉襟见肘,但是可以继续进行线平滑等工具进行优化。就是利用ArcGIS的Python站点包arcpy来执行一系列的空间分析步骤,将多边形数据转换为栅格数据,进一步通过二值化、细化(骨架化)和转换栅格数据为矢量线数据,从而得到面要素的中心线。
import arcpyfrom arcpy import envfrom arcpy.sa import *import tempfiledef polygon_to_raster(polygon_shapefile, output_raster, cell_size): arcpy.env.workspace = env.workspace = arcpy.Describe(polygon_shapefile).path output_raster = output_raster[:13] arcpy.PolygonToRaster_conversion(polygon_shapefile, 'FID', output_raster, cell_assignment='CELL_CENTER', priority_field='', cellsize=cell_size)def raster_binarization(input_raster, output_raster): arcpy.env.workspace = env.workspace = arcpy.Describe(input_raster).path out_con = Con(Raster(input_raster) > 0, 1, 0) out_con.save(output_raster)def skeletonize_raster(input_raster, output_raster): arcpy.env.workspace = env.workspace = arcpy.Describe(input_raster).path arcpy.CheckOutExtension('Spatial') out_skeleton = Thin(Raster(input_raster), 'ZERO', 'NO_FILTER') out_skeleton.save(output_raster)def raster_to_polyline(input_raster, output_polyline): arcpy.env.workspace = env.workspace = arcpy.Describe(input_raster).path arcpy.RasterToPolyline_conversion(input_raster, output_polyline, 'ZERO', 1, 'SIMPLIFY')if __name__ == '__main__': input_polygon = arcpy.GetParameterAsText(0) temp_dir = tempfile.mkdtemp() intermediate_raster = arcpy.CreateUniqueName('inter_ras', temp_dir) binarized_raster = arcpy.CreateUniqueName('bin_ras', temp_dir) skeleton_raster = arcpy.CreateUniqueName('skel_ras', temp_dir) output_polyline = arcpy.GetParameterAsText(1) cell_size = int(arcpy.GetParameterAsText(2)) polygon_to_raster(input_polygon, intermediate_raster,cell_size) raster_binarization(intermediate_raster, binarized_raster) skeletonize_raster(binarized_raster, skeleton_raster) raster_to_polyline(skeleton_raster, output_polyline) arcpy.AddMessage('Centerline extraction completed successfully.')步骤一:就这一个步骤~
源码我已经贴出来了,有兴趣的可以继续优化一下,让ArcMap也能实现第一个方法的效果最好咯。当然我也把它做成了脚本工具箱,理论上精度值设置越小越高提取越准确,提取完可以进行平滑或者其他处理,以下就是使用演示。
图片
图片
结语亲爱的读者们,随着这篇文章的结束,我们的GIS中心线提取之旅也暂时画上了句号。但探索的脚步从未停歇,每一次的学习和实践都是我们前进的动力。希望这些方法能够为你的GIS项目带来新的视角和效率。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。下一篇:没有了