World Wind Java开发之十二——加载粗制三维模型(ExtrudedPolygon)(转)
ww可以根据DLG图批量生成假三维模型,这对于小区等特征相似的建筑物模型的构建是非常有用的。下面来看如何一步步实现假三维模型的加载:
1、Shp文件的制作


2、代码实现
- /**
- *
- * @方法名称: init3DModel ;
- * @方法描述: 导入简易三维模型 ;
- * @参数 :@param filePath :shp文件路径
- * @返回类型: void ;
- * @创建人:bluce;
- * @创建时间:2015年2月3日 下午6:10:22;
- * @throws
- */
- private void init3DModel(String filePath)
- {
- Shapefile shapefile = new Shapefile(filePath);
- RenderableLayer layer = new RenderableLayer();
- layer.setName("简易三维模型");
- layer.setPickEnabled(true);
- try
- {
- while (shapefile.hasNext())
- {
- ShapefileRecord record = shapefile.nextRecord();
- layer.addRenderable(makeShape(record));
- }
- wwPanel.getWorldWindowGLCanvas().getModel().getLayers()
- .add(layer);
- }
- finally
- {
- shapefile.close();
- }
- }
- /**
- *
- * @方法名称: makeShape ;
- * @方法描述: 根据shp文件每条记录创建模型 ;
- * @参数 :@param record
- * @参数 :@return
- * @返回类型: ExtrudedPolygon ;
- * @创建人:bluce;
- * @创建时间:2015年2月3日 下午6:11:08;
- * @throws
- */
- private ExtrudedPolygon makeShape(ShapefileRecord record)
- {
- String IMAGE_PATH = "F:\\data\\wwj\\build123sm.jpg";
- Double height = null;
- String[] heightKeys = new String[]
- { "height", "Height", "HEIGHT" };
- for (String key : heightKeys)
- {
- Object o = record.getAttributes().getValue(key);
- if (o != null)
- {
- height = Double.parseDouble(o.toString());
- }
- }
- // 顶部属性
- ShapeAttributes capAttrs = new BasicShapeAttributes();
- capAttrs.setOutlineMaterial(Material.GRAY);
- capAttrs.setInteriorMaterial(Material.CYAN);
- // 边属性
- ShapeAttributes sideAttributes = new BasicShapeAttributes();
- sideAttributes.setInteriorMaterial(Material.LIGHT_GRAY);
- sideAttributes.setOutlineMaterial(Material.DARK_GRAY);
- sideAttributes.setImageSource(IMAGE_PATH);
- // 创建拉伸多边形
- VecBuffer vb = record.getPointBuffer(0);
- Polygon pgonAirspace = new Polygon(vb.getLocations()); // 根据点串构建多边形
- //纹理
- ArrayList<String> textures = new ArrayList<String>();
- for (int i = 0; i < pgonAirspace.getLocations().size(); i++)
- {
- textures.add(IMAGE_PATH);
- }
- ExtrudedPolygon polygon = new ExtrudedPolygon(
- pgonAirspace.getLocations(), height, textures);
- polygon.setCapAttributes(capAttrs);
- polygon.setSideAttributes(sideAttributes);
- polygon.setAltitudeMode(WorldWind.CLAMP_TO_GROUND);
- return polygon;
- }
效果如下图所示:

3、问题
- ArrayList<String> textures = new ArrayList<String>();
- for (int i = 0; i < pgonAirspace.getLocations().size() - 1; i++)
- {
- textures.add(IMAGE_PATH);
- }

World Wind Java开发之十二——加载粗制三维模型(ExtrudedPolygon)(转)的更多相关文章
- World Wind Java开发之十五——加载三维模型(转)
之前的一篇博客是关于加载粗三维模型的,见http://blog.csdn.net/giser_whu/article/details/43452703,这个地方还存在着不能加载纹理的问题,一直没呢解决 ...
- World Wind Java开发之十四——添加WMS地图服务资源(转)
数据是GIS的核心,没有数据一切无从谈起,Internet上有很多在线WMS地图服务资源,我们可以好好利用这些数据资源,比如天地图.必应地图.NASA.OGC数据服务等等. 在我们国家常用的还是天地图 ...
- Java开发学习(十二)----基于注解开发依赖注入
Spring为了使用注解简化开发,并没有提供构造函数注入.setter注入对应的注解,只提供了自动装配的注解实现. 1.环境准备 首先准备环境: 创建一个Maven项目 pom.xml添加Spring ...
- World Wind Java开发之十五——载入三维模型
之前的一篇博客是关于载入粗三维模型的,见http://blog.csdn.net/giser_whu/article/details/43452703,这个地方还存在着不能载入纹理的问题,一直没呢解决 ...
- World Wind Java开发之十——AnalyticSurface栅格渲染(转)
http://blog.csdn.net/giser_whu/article/details/43017881 1.AnalyticSurfaceDemo ArcGIS下对栅格的各种分级渲染效果是非常 ...
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十二周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十二周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
- Java进阶(五十二)利用LOG4J生成服务日志
Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...
- 分享:Java 开发精美艺术二维码
博客地址:https://ainyi.com/58 Java 开发精美艺术二维码 看到网络上各种各样的二维码层出不穷,好像很炫酷的样子,一时兴起,我也要制作这种炫酷二维码效果 例如: 根据以往例子 根 ...
随机推荐
- Boost Python官方样例(二)
返回值 使用return_by_value有点像C++ 11的auto关键字,可以让模板自适应返回值类型(返回值类型必须是要拷贝到新的python对象的任意引用或值类型),可以使用return_by_ ...
- Libvirt外部快照
外部快照的创建 实验环境 CentOS 7 升级QEMU CentOS 7自带的qemu版本太低需要升级 $ sudo yum install -y gcc $ sudo yum install -y ...
- yarn快速使用及实践建议
什么是 yarn? 简单来说,yarn 是一个与 npm 功能相同的工具,用于前端项目的依赖管理.在使用 npm 的项目中,使用 npm 命令的地方都可以使用 yran 来代替. 为什么要使用 yar ...
- svn图标修复
https://blog.csdn.net/doubleface999/article/details/55798736 前一阵用上了win8,装了最新版本的Tortoise SVN,但发现文件夹和文 ...
- 51nod1043(数位dp)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1043 题意:中文题诶- 思路:数位dp 我们用dp[i][j ...
- 日志记录:MySQL系列之十一
一.SQL命令历史 ~/.mysql_history 记录了在mysql中执行的命令历史 二.事务日志 transaction log:事务型存储引擎自行管理和使用 在一个事务提交后还没有存到磁盘的情 ...
- CDN-内容发布网络
整理<CDN技术详解>一书中重要的内容. 互联网与万维网 广义的互联网,由两层组成:一层是以TCP/IP为代表的网络层:另一层是以万维网WWW为代表的应用层.辨识互联网和万维网的区别,是认 ...
- Jmeter 线程组、运行次数参数化(转)Jpara1=4 -Jpara2=5
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
- Jmeter常用线程组设置及场景运行时间计算
Jmeter中通过线程组来模拟大用户并发场景,今天主要介绍三个常用的线程组,帮助我们设计更加完善的测试场景,另外介绍下场景执行时间如何计算. 一.Thread Group 取样器错误后要执行的动作 ...
- 【JavaScript权威指南】——逻辑与(&&)
三种用法总结: 1.布尔值计算: [成员]={false,true} 2.“真值”,“假值”计算: [假值]={false,null,undefined,0,-0,NaN,""} ...