CityEngne十字路口道路拓宽处理.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CityEngne十字路口道路拓宽处理

? 目的:满足路口处道路变宽、车道数增加的需求 思路:由于道路数据在进入CityEngine时己经按照道路的宽度处理好相应的形数据,因而只有改变路口处道路宽度来满足相应的需求。据此主要有以下几个方面的技术:提取线图层的交点、加宽起始点与距离的设定、线的打断以及相应宽度的赋予。在CE方面主要要做的是如何根据车道路数进行划分与贴图。 下面要把上面提供的几个技术方面及其实现过程来介绍路口加宽处理的流程: 提取线图层的交点:通过提取线图层的交点来判断那些是路口。其过程如下: 1.?预处理数据 在arcmap中编辑shapefile文件,全部选中要素,点击打断线工具,在交点处打断线,保存结果,我这里保存到了test.shp。 ? 2.?在arccatalog中右键点击刚才保存的文件,选新建网络数据集,一路next和yes,别管内容。 ? 这样就生成了结合点文件test_ND_Junctions.shp,但这还不是我们要的线交点文件,因为里边有悬挂结点和自相交结点。 ? 3.?用空间连接(Analysis Tools\Overlay\Spatial Join),将test_ND_Junctions.shp和test.shp连接,生成文件test_Junctions_SpatialJoin.shp。打开此文件属性表,发现多了一个字段join_count: ? 这个字段的数值就是点和多少条线相连的数。 4.?编辑test_Junctions_SpatialJoin.shp,按属性选择join_count小于2的点,删除,剩下的点就是我们要的线的交点,保存文件。 加宽起始点与距离的设定:通过线图层的交点按一定的半径做缓存的方式来设定加宽的距离。 ? 线的打断与相应宽度的赋予 1.?利用擦除工具()擦除缓冲区以内的数据,此部分道路宽度不发生变化。 ? 2.?利用相交分析()获取缓冲区以内的数据。 ? 3.?对路口处的数据进行加宽处理,通过得到intersect数据的属性表进行计算按实际需要增加相应的宽度值。 4.?相交得到的结果和控除得到的结果整理到同一个图层中去。 ? 此数据导入到CityEngine里的时候就会出现路口加宽的shp数据出来。 根据车道路数进行划分与贴图 CityEngine通过对路面进行不同的划分并进行做相应的贴图是其实现道路建模的主旨所在。这里能过一段代码来说明其主要过程。 /** ?* File:??? rule.cga ?* Created: 21 Jul 2012 15:49:08 GMT ?* Author:? Rukun Xu ?*/ version 2011.2 lenAlongU=geometry.du(0,unitSpace)?//计算当前段道路的长度 lenAlongV=geometry.dv(0,unitSpace)?//计算当前段道路的宽度 attr CDS=2?//读取数据中当前路段的车道数,其默认值为2 attr Med_wid=0.5?//国道中心双实线的宽度 //对路边人行道路进行贴图 Sidewalk--? ?normalizeUV(0, uv, collectiveAllFaces) ?scaleUV(0, rint(lenAlongU/20),1) ?texture(walkside.png) ? //道路上的贴图实现 Street-- ?split(v,unitSpace,0){(lenAlongV-Med_wid)/2:Maneeuvering | Med_wid: Median| ~1:Maneeuvering } //把道路分成中心双实线和两边的机动车道三个部分,并对每个部分进行不同的贴图 Maneeuvering-- ?normalizeUV(0, uv, collectiveAllFaces) ?scaleUV(0, rint(lenAlongU/20),CDS/2-0.1) ?texture(road.png) Median-- ?normalizeUV(0, uv, collectiveAllFaces) ?scaleUV(0, rint(lenAlongU/10),1) ?texture(kdmdl029.jpg)? ?? //对交叉口进行贴图 Crossing-- ?setupProjection(0,scope.xy,4,4) ?texture(road2.png) ?projectUV(0) ? 处理前效果图 处理后效果图 ?

文档评论(0)

yx118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档