2021-08-30 : 更新经纬度坐标转换误差问题,修正创建地图方位 y+ 方向北向
2021-08-24:更新解决中文路径编码错误问题
直接从max中生成openstreetmap城市数据,目前只支持OSM 的 XML格式,即从www.openstreetmap.org 下载的文件
版本需求:
本脚本需要python支持,即使用版本不低于3dsmax2015版本(官方在2015版本才加入python的支持)
本人只测试了2017 - 2020 版本,2015与2016请自行测试 ( 理论可以,不排除有python接口在2015与2016版本之间有变动
如有问题评论留言或加联系:406316519@qq.com)
注意:
使用本工具建议重新新建场景
另外:
本工具创建的数据全部基于osm生成
对于建筑部分自动创建为闭合曲线
对于建筑挤出高度如果OSM本身存在高度标签数据(如:height=200),则标记的高度挤出
如果没有高度但是存在层数的建筑(如: building:levels = 15),则按照层数乘以米数(15x3=45)进行挤出
缺省高度的则可以选择随机范围挤出。
对于场景单位转换这里采用1长度单位为米进行经纬度转换,OSM的标签数据全部保存到每个物体的额外属性区,可以自行通过脚本进行 TAG 标签过滤,本工具内部也提供了一个过滤选择器,可以通过简单的语法进行过滤选择出需要的数据,部分过滤选择按钮就不再实现。
如需了解每个标签的含义,请自行到openstreetmap的wiki百科查看标签的含义。
使用流程:
1.从openstreetmap.org上手动下载边界数据 , 如导出为 HK.osm
2.打开 osmxml_build 拾取下载的osm文件等待创建完成,创建前可以选择是否挤出建筑
3. 可以打开标签显示,选中的物体自动显示其标签数据
尊敬的游客,告诉您一个秘密,这里隐藏了6张非常重要的演示图,需要您登录后才可见。
过滤标签的使用方法 :
标签规则:
一次规则添加只能单行,多行无效或者不符合格式
空格可以连续多个隔开
! 开头表示不能包含某个标签
如: ! building 表示tag中不能包含building标签
= 赋值表示标签必须等于某个具体值
如: building = yes 表示building值必须等于yes
!= 标签不能等于某个具体值
@ 只要标签存在即可
如 : @ building 不用管后续的值,只要标签含building即可
* 用于标签值关键字匹配,无需完全相同
如: name:zh * 京港澳 G4 深南大道 只要name:zh包含任意一个值的道路即可
清洗选择场景中数据需要对OSM标签有一定的了解,这里列举了一些简单的应用案例。
1. 我如何过滤选择场景中所有建筑? 或者只选择 学校建筑、商业建筑....
一般来说osm的建筑数据用 building=... 表示,如果tag标签存在这个键值对,那说明这个就是建筑或者建筑的某一部分
所以可以加入标签规则只要存在 building 即可 , 输入 @ building 然后点击 <加入标签规则>
最后点击 <选择复合标签的物体> 场景中所有带该标签的物体都被选中
如果需要更进一步选择,比如建筑中又再选出是学校的建筑,可以使用 building=school
2. 我如何过滤选择所有道路?
道路在osm中标有效标签是 highway = ...
用 @ highway 可以选择带该标签的所有物体
自动生成路线导航 程序化道路 建筑体 高架桥一键生成 车流路景???
后期版本加入更多精彩功能 敬请期待!