在利用GIS制图时,需要经常跟数据打交道。很多初级的制图人员都存在一种惯性思路,以为数据精度越高,出图的效果就越好。这是错误的观点。假如现在需要制作1:1w的地图,但手头上却只有1:500的地形图,数据精度虽然很高,但却无法在小比例尺下显示出来。

回到主题上,1:500的数据,大多数道路都是以面状显示。由于其精度高,有些数据甚至是不带线道路图层的,而在1w的地图下,道路以线状表达才是符合要求的。所以,这就需要涉及到地图制图的一个常规工作—地图缩编。

本文主要介绍如何从到路面直接提取出道路中心线,从而辅助小比例尺地图的制作。

由于面状数据一般都是不规则的,所以很难从其提取中心线,一般的GIS软件也没提供直接提取的工具。ArcGIS里面虽然也有一些工具可以辅助一下处理,例如在制图工具箱里面有一个提取中心线的工具,但这个工具的作用是通过道路边线(双线)提取中心线。也有人说ArcGIS里面同样是提供面转线工具,先用工具转一道再提取不就行了吗?可是问题来了,面转线工具传出来的数据是封闭线,而不是道路边线,提取中心线工具依然是不可用,除非在每个路面图形打断两端的封闭,不然无法进行提取,恰好打断工作又是非常的巨大。因此,该方法还是不可用。

为了解决这个问题,那就是ArcScan扩展模块。提到ArcScan扩展,很多专业人员第一时间反应是这只是个栅格矢量化工具,跟当前讨论的中心线提取似乎没有任何关系。只要深入了解ArcScan扩展的具体细节,我们不难发现其自动矢量化里面可以提取面要素和中心线,利用这一特性,我们就可以曲线去完成该任务了。

先来说说总体思路:

将路面(矢量面数据)转化为栅格数据,因为ArcScan只能对栅格数据进行处理,由于是从矢量转为栅格而非扫描,栅格质量一般会非常好;通过二值化栅格数据后,调整捕捉参数和提取参数,直接提取矢量中心线。步骤看似简单,但在实际操作中有很多细节需要注意,以下是详细步骤:单独加载路面数据,要先设置好纯色符号(建议为纯黑色),去掉轮廓线。这样是为了提升栅格数据质量,黑白分明,便于计算机识别像元。

设置好约束比例,例如2000。约束比例是为了在输出栅格图时控制质量。

点击全屏视图,导出地图,采用tiff方式记录坐标,格式设置为1位单色阈值(非常重要)。如果不选这项,默认出来是RGB三个通道的栅格数据,加载任何一个通道都没法实现栅格数据二值化,意味着无法使用ArcScan功能,所以此处必须要设置。

根据实际需要设置好dpi,这个是直接影响图形识别的因素。Dpi是根据具体的地图图幅进行设置,因此,可能需要尝试多次,找一个比较合适的值,这样图像才能清晰保存下来。

将导出的栅格地图加载到arcmap中,新建一个线要素图层,坐标系与栅格一致,一并加载。加载arcscan工具条,如下图

对栅格数据进行充分类,设置为两类,0和1 ,这就是二值化处理。如果不做分类,ArcScan同样不能识别栅格数据。

设置了分类后,arcscan工具条会显示栅格数据

打开编辑器,开始编辑,选中中心线图层。在arcscan工具条中可以显示预览

如果需要更详细的设置,在矢量化—选项中设置对应的输出图层由于提取的是中心线,矢量化方式就必须选中心线

预览效果如下

蓝色部分为没有捕捉到,可以设置一下工具条

将栅格捕捉适当调整一下,如下图

设置后的预览就不存在蓝色不能捕捉部分,如下图

达到效果后可以点击生成按钮生成最终的效果。

停止编辑并保存数据即可完成所有的提取工作。

直至该步就完成所有的操作,可见,处理一个实际的难题,不能光靠软件提供的工具,要巧妙地运用,做适当的处理,这样才能在意想不到的情况下解决难题。  BY 李远祥

gis生成道路中心线_ArcGIS方法-利用到路面提取道路中心线的方法相关推荐

  1. java获取文件名方法,利用Java获取文件名、类名、方法名和行号的方法小结

    大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: ...

  2. 基于Arcgis 利用道路面要素提取道路中心线的方法

    转载自李远祥博客:http://blog.csdn.net/liyuanxiang1984 http://blog.csdn.net/liyuanxiang1984/article/details/5 ...

  3. c语言指针生成numpy数组,利用ctypes获取numpy数组的指针方法

    利用ctypes获取numpy数组的指针方法 如下所示: import numpy as np from ctypes import * a = np.asarray(range(16), dtype ...

  4. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  5. 用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法

    目录 摘要 0. 测试数据生成 1. 直接使用ChatGPT进行处理. 2 使用ChatGPT生成python脚本进行处理 3对比分析 4 结束语 摘要 为测试ChatGP在word文档表格的处理能力 ...

  6. python创建数字列表_Python 生成一个从0到n个数字的列表4种方法小结

    Python 生成一个从0到n个数字的列表4种方法小结 我就废话不多说了,直接上代码吧! 第一种 def test1(): l = [] for i in range(1000): l = l + [ ...

  7. php生成产品编号,php中利用str_pad函数生成数字递增形式的产品编号

    php中利用str_pad函数生成数字递增形式的产品编号 解决办法:$str="QB".str_pad(($maxid[0]["max(id)"]+1),5,& ...

  8. 利用U盘进行软件加密的方法

    利用U盘进行软件加密的方法 一般的U盘不具备加密的功能,虽然U盘和加密狗外形有一些相似,但是内部完全不一样的,U盘只是一个存储器芯片和简单的附属电路,而现在的智能卡加密狗都具有一个单独的CPU或者加密 ...

  9. python中的iloc函数_详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据

    pandas的DataFrame对象,本质上是二维矩阵,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的名称.这样内部数据抽取既可以用"行列名称(对应.loc[]方法)",也 ...

  10. 利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-7-28日:用MSER算法也实现了车牌 ...

最新文章

  1. 京东软件测试工程师招聘,京东商城软件测试面试经验
  2. jQuery 双击事件(dblclick)时,不触发单击事件(click)
  3. react安装_超全面详细一条龙教程!从零搭建React项目全家桶(上篇)
  4. 一文看尽 JVM GC 调优
  5. 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
  6. php返回成功信息msg_使用PHP实现的服务端socket
  7. php app()路由,谷歌云应用引擎app.yaml php72与路由问题
  8. Julia : 进制之间转换
  9. 六轴UR机械臂标准DH正逆运动学公式推导+代码验证C++
  10. win10激活bug 任务栏假死点击无反应解决方案
  11. (6)微信UI自动化-搜索指定联系人(C#)
  12. STM32---定时器的ETR功能
  13. 51单片机——外部中断
  14. #Vue3篇:watch、watchEffect、watchPostEffect、watchSyncEffect的区别
  15. 【爬虫实战】Python 自制天气预报程序!爬取全国天气网
  16. Python 雪球API 股票价格监控预警程序脚本
  17. Beego框架logs模块
  18. 最近心血来潮想做黑客
  19. 游戏服务器多少钱一个月 游戏服务器配置怎么选择
  20. 原生Mysql之and和or混合使用

热门文章

  1. Dash-基础显示组件学习之Bar(柱形图、条形图、柱状图)Python-Dash-Bar-可视化数据分析
  2. Java学多久可以接项目_自学Java,多久可以找到工作?
  3. 全国计算机英语四六级准考证打印,周六开考!2020年11月四六级口语考试准考证打印通知!...
  4. Dataframe中添加一列
  5. Hive 面试题 | 连续登陆天数统计
  6. 简单webform前端页面布局以及后台代码
  7. 罗技F710 无线手柄在ROS下的配置使用总结
  8. TruckSim 建立牵引车模型(一)
  9. git删除远程创库命令
  10. 实例介绍fullpage.js常用的配置和方法