cityengine2012 教程4 导入街道(数据)

0
分享 2015-06-13
内容:
Part 1:导入DXF 街道数据
Part 2:导入OMS街道数据
Part 3:导入shapefile接到数据(和GDB,地理数据库)


Part1:导入DXF 街道数据
CityEngine 街道网络
CityEngine街道网络书属性化的图形,由街道节点(十字路口)和端点(街道段)构成。他们可以和街道生长特征相联系,在CityEngine中创建,或者通过输入外部数据,如DXF数据。
为CityEngine准备数据
例如,海滨城市的主要道路结构被使用他的道路和几何形状勾勒而成。

从CAD中导出DXF文件
当导出街道网络数据时,确保单位和cityengine保持一致,因为他总是解释成米这种单位。你可能想在文本编辑器中打开DXF数据,查看他的定点数据,来确定维度是否被读取。在这个例子中,我们用10米分辨率的数据来得到我们想要的纬度信息(查看屏幕截图导出选项)。
​一些端点数据在导出时被链接:

​在DXF文件输出窗口的参数设置如下:

在cityengine中导入 DXF文件
▶ 打开场景文件sesame_01.cej
▶ 定位到data文件夹中的DXF文件sesame_streetsketch.dxf
▶ 右击文件,选择import…


​▶ 确保’ Run Graph Cleanup Tool after Import’被勾选
▶ 点击next
▶ 勾选Intersect Segments、Snap Nodes toSegments 和 Merge Nodes
▶ 设置Snapping distance为1,Merging Distance为5
▶ 点击finish
一个新的图层‘sesame_streetsketch’出现在Scene Editor视窗中。另外,你也可以直接打开场景文件sesame_02.cej来查看输入数据后的场景效果。
生成次要街道
一旦主要的街道被导入,那么你就可以开始改善街道网络并且生成次要街道。Cityengine中的街道生长算法是视图填充存在的封闭斑块,所以你可以反复的用街道来填充街区。
▶ 清楚你要新建次要街道的街区
▶ 使用图形编辑工具新建两个单一的小街道,也就是(a,指定街区中一般方向的街道;b,为街道生长算法定义一个起始节点)
▶ 手动的创建一些街道段
▶ 选择这些(街道)段(Q键)然后开始用‘Grow Streets’对话框来填充空白的区域。




​场景文件‘sesame_03.cej’包含完成的街道网络。
最后结果
场景文件‘sesame_12.cej’包含完成的提取和再次斑块分割的街道网络,就如下图一样。
被赋予次要街道的Sesame City图层和赋予建筑绿地模型的Sesame City图层



Part 2:导入OSM街道数据
打开街道地图
OSM是基于XML的用于地图的矢量数据格式。它定义了三个基本的类型:节点,路,和封闭的路这些被用来描述所有的元素。
1)节点(nodes):这些点用来划分段。
2)路(ways):点的有序的列表,在编辑中被线段连接显示。
3)封闭的路(closedway):封闭的路是一个完全封闭的环,他们被用来描述类似于公园,湖和岛屿这类区域。
从open street map导出一个OSM文件
在cityengine工程中data文件夹中找到.osm文件
导入一个OSM文件到cityengine
▶ 打开一个新的场景文件File > New... > CityEngine > CityEngine scene
▶ 把文件拖拽到3D视窗中。
▶ 在OSM导入视窗中,选择导入图层。一般,高速公路图层上的街道,建筑图层上的建筑。使用select/deselect all按钮来进行相关选择。
▶ 相关其他设置如下。
▶ 点击完成。

▶ 选择建议的投影:‘WGS 1984 UTM Zone 33N’.
▶ 点击OK
两个新的图层(街道网和图形)出现在场景编辑窗口中,并且OSM数据可以在3D视窗中看到,一句道路的街道中心线自动创建街道图形。
▶ 重命名图形网络图层(graph network layer)为‘OSM_Streests’
▶ 重命名图形图层(shape layer)为‘OSM_shapes’

街道宽度
如果你仔细看一下相关的街道图形,你将会注意到他们不同的宽度。当地图OSM标签选项是可用的,导入OSM数据,cityengine从OSM街道类型来定义街道宽度,以此来创建图层属性。
▶ 选择一个街道段,在Inspector窗口中查看他的参数。
在下面的例子中,一个有着‘tertiary’高速公路类型的街道被指定街道和人行道的宽度参数,依据导入的OSM图层‘OSM_Streets’。


你可以通过手动来修改街道宽度参数,使其获得一个新的属性值(这个属性将会改变用户设置user-set属性),或者使用工具栏中的街道编辑工具条。
OSM属性制图
在Scene Editor窗口选择一个新的新的图形网络,在Inspector中查看图层的属性代码。
之前选择的道路段是第三级的道路,在streetWidthByClass函数中定义为6,你可以依据你的要求来改变。



冲突数据
有时候导入的OSM数据不一定完全正确,也会有BUG(比如:重叠的道路)。开口的块区和红色标记的线,意味着无法连接的街段或者重叠的街道,哪些可能导致无效的块区。有一些方法用来处理这些冲突:
▶ 使用Cleanup Graph Tool,并且设置不同的参数
▶ 在导入窗口中试图选择少量的街道
▶ 把街道和人行道设置成较小的值(目的是更少的重叠街道)
▶ 导入后手动清除那些邻近的十字路口,邻近的平行街道。
例子如下:未连接的图形节点,清理前后对比。



注意:OSM街道数据肯能包含街段在不同的高程上。鉴于这个信息在OSM数据上不可用,cityengine把所有的数据导入到统一高程。
用卫星影像添加一个地图图层
▶ File > Import... > CityEngine Layers > Texture Import
▶ 选择‘pompeii_satellite.jpg’
▶ 使用建议的坐标系统‘WGS 1984 UTM Zone 33N’
▶ 大小和offset自动填充。
▶ 点击完成新的纹理图层的创建


关联模型
▶ 选择所有的图形(shape)
▶ 指定规则文件‘osm_generic.cga’,鉴于有些shape已经有个一些无效的规则设置,所以在出现在窗口中选择SKIP
▶ 点击generate
你可能会注意到,只有街道被链接了。建筑物shape似乎没没连接,选择其中的一个建筑物shape,你会发现他没有指定start rules。
▶ 在viewport视窗中右击一个选择的建筑物shape,Select > Select Objectswith Same Start Rule,浙江会选择那些没有start rules的shape。
▶ 在inspector窗口中点击select按钮,在弹出的窗口中选择lot,
▶ Generate again

Part 3导入shape街道数据(和GDB)
因为导入shape街道数据和GDB基本相同,所以这里就不演示后者了。
Shapefile数据
▶ 在工程中找到street.shp数据
▶ Shape文件有一个以.prj为后缀的文件,他是保证有一个正确的地理参考(坐标系统)。数据中包含多段线,在cityengine中作为街道。数据集包含一的width的属性,cityengine将用它来控制街道宽度。
在arcmap中展示的shape文件属性表

导入数据
▶ 创建一个新的空的cityengine场景(scene)
▶ 把shape文件拽进场景中,使用默认的设置,在这个案例中是没事的。
▶ 在导入过程中,cityengine将会让你选择场景坐标系统,使用之前shape文件定义的默认投影,在这里是一个不错的选择。
注意:这个例子中shape文件包括width属性来控制街道宽度。数据如果没有这个属性将会采用默认属性。街道宽度可以手动修改。让我们来仔细看一下cityengine怎么手动修改。
清除(cleanup
导入的街道数据显示出一些冲突,用红色标记,使用Cleanup Graph Operation将会自动修复那些冲突(全选—右击—Cleanup Graph)。
指定规则文件
▶ 选择所有的shape
▶ 把‘sesame_01.cga’文件拖拽到场景中。
▶ 简单的街道模型就被连接了。(比较连接前后,下面两个图的区别)




文章来源:http://blog.sina.com.cn/s/blog_497c741a0102vmgd.html

0 个评论

要回复文章请先登录注册