首页 > 代码库 > World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景
World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景
首先,看下本篇博客要达到的效果图:
下面逐步分析如何加载影像及高程文件。
1、WorldWind Java导入数据包
在src源码文件中找到dataimport包,这个包里面的示例代码演示了如何向WW上加载影像及高程文件。可以看到有import和install两种方式,import是简单的以图层的形式加载到WW上;install是指当文件较大时,将文件以本地缓存的方式加载,这里先以import方式导入影像及高程文件。源码比较简单,这里就不再过多解析了。
2、WWJ加载影像文件
直接给出源码,注释很清晰,不再赘述
/** * * @方法名称: importImagery ; * @方法描述: 导入影像文件 ; * @参数 :@param imageFilePath :影像文件路径 * @参数 :@param worlGlCanvas :WorldWind 画布对象 * @返回类型: void ; * @创建人:奔跑的鸡丝 ; * @创建时间:2014-12-2 下午3:12:30; * @throws */ private void importImagery(String imageFilePath, final WorldWindowGLCanvas worlGlCanvas) { try { // 读取数据并将其保存在一个缓存文件夹中 File sourceFile = ExampleUtil.saveResourceToTempFile(imageFilePath, ".tif"); /** * 首先创建一个raster reader读取栅格文件。raster reader由当前的栅格数据读取工作空间来创建 */ DataRasterReaderFactory readerFactory = (DataRasterReaderFactory) WorldWind.createConfigurationComponent(AVKey.DATA_RASTER_READER_FACTORY_CLASS_NAME); DataRasterReader reader = readerFactory.findReaderFor(sourceFile, null); // 读取栅格数据之前,先验证改文件包含imagery AVList metadata = http://www.mamicode.com/reader.readMetadata(sourceFile, null);>这里栅格数据的读取类似ArcEngine中的工作空间的概念;另外需要注意Sector类是表述由经纬度包含的范围。
3、WWJ加载高程文件
/** * * @方法名称: importElevation ; * @方法描述: 导入高程数据 ; * @参数 :@param elevationFilePath :高程文件路径 * @参数 :@param wGlCanvas :WW画布对象 * @返回类型: void ; * @创建人:奔跑的鸡丝 ; * @创建时间:2014-12-2 下午4:42:26; * @throws */ private void importElevation(String elevationFilePath, WorldWindowGLCanvas wGlCanvas) { try { File sourceFile = ExampleUtil.saveResourceToTempFile( elevationFilePath, ".tif"); // 由数据源创建一个高程模型:LocalElevationModel final LocalElevationModel elevationModel = new LocalElevationModel(); elevationModel.addElevations(sourceFile); SwingUtilities.invokeLater(new Runnable() { public void run() { // 获取WW当前的高程模型 Globe globe = worldWindowGLCanvas.getModel().getGlobe(); ElevationModel currentElevationModel = globe.getElevationModel(); // 将新创建的高程模型加入Globe中(也可以是取代当前的高程模型) if (currentElevationModel instanceof CompoundElevationModel) ((CompoundElevationModel) currentElevationModel).addElevationModel(elevationModel); else globe.setElevationModel(elevationModel); // 飞行至当前视图 Sector modelSector = elevationModel.getSector(); ExampleUtil.goTo(worldWindowGLCanvas, modelSector); } }); } catch (Exception e) { e.printStackTrace(); } }运行后,加载影像和相应的DEM文件即可构建三维场景。欢迎大家留言交流,需要的请留邮箱!
World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。