您的位置:首页 > 编程语言 > Java开发

WorldWind Java 版学习:3、配置文件的读取

2012-11-07 16:22 441 查看
1、在 WorldWindow 启动过程中,直接读取的配置文件有三个:

一个是在程序启动前,使用静态模块配置程序的配置文件

System.setProperty("gov.nasa.worldwind.app.config.document","gov/nasa/worldwindx/applications/worldwindow/config/worldwindow.worldwind.xml");

一个是私有静态成员变量设置的与应用程序有关的配置文件

private static final String APP_CONFIGURATION = "gov/nasa/worldwindx/applications/worldwindow/config/AppConfiguration.xml";

一个是 Configuration 类中私有静态成员变量设置的配置文件

private static final String CONFIG_WW_DOCUMENT_NAME = "config/worldwind.xml";

2、在入口 main 函数调用前,程序会调用 Configuration 的 isWindowsOS 方法判断系统的类型,此时加载 Configuration 类,进而调用其构造函数,在 Configuration 的构造函数中,会读取之前设置的配置文件名,然后将配置文件 worldwindow.worldwind.xml 和 worldwind.xml 加入到配置文件列表中,最后逐一读取配置文件

3、在 worldwindow.worldwind.xml 文件中,主要配置了程序启动时的初始图层

<LayerList href="gov/nasa/worldwindx/applications/worldwindow/config/InitialLayerConfiguration.xml"/>

在 InitialLayerConfiguration.xml 文件中配置了各个图层的标题,类型,相关的其他配置文件和状态

<Layer className="gov.nasa.worldwind.layers.Earth.BMNGOneImage" title="Earth Image" actuate="onLoad" />

<Layer href="config/Earth/BMNGWMSLayer.xml" title="Blue Marble" actuate="onLoad" />

其中与影像调度、地型渲染相关的就是在 Blue Marble 图层,也就是 BMNGWMSLayer.xml 文件中配置的

4、在 worldwind.xml 文件中,配置了 WorldWind 程序的地型配置文件以及与场景数据有关的对象的类型

<Property name="gov.nasa.worldwind.avkey.EarthElevationModelConfigFile" value="config/Earth/EarthElevationModelAsBil16.xml"/>

在构造 WWPanelImpl 时,会构造 Model 类对象,在这里是 BasicModel 对象

<Property name="gov.nasa.worldwind.avkey.ModelClassName" value="gov.nasa.worldwind.BasicModel"/>

在构造 BasicModel 时,会构造 Globe 类对象,在这里是 Earth 对象

<Property name="gov.nasa.worldwind.avkey.GlobeClassName" value="gov.nasa.worldwind.globes.Earth"/>

在构造 Earth 时,会调用父类 EllipsoidalGlobe 的 makeElevationModel 方法构造 ElevationModel 类对象

在 makeElevationModel 方法中,首先取到地型配置文件,然后使用工厂模式,调用 BasicFactory 的 create 方法构造 ElevationModel 类对象

在 BasicFactory 的 create 方法中,会构造 Factory 类对象,在这里是 BasicElevationModelFactory 类对象

<Property name="gov.nasa.worldwind.avkey.ElevationModelFactory" value="gov.nasa.worldwind.terrain.BasicElevationModelFactory"/>

依次调用了 createFromConfigSource 、doCreateFromElement 方法通过读取地型配置文件 EarthElevationModelAsBil16.xml 构造 ElevationModel 对象,最后调用 createCompoundModel 方法构造了 CompoundElevationModel 类对象(<ElevationModel version="1" modelType="Compound">),调用 createNonCompoundModel 方法构造了 WMSBasicElevationModel 对象(<Service serviceName="OGC:WMS" version="1.3">)

在构造 WMSBasicElevationModel 时,通过 wmsGetParamsFromDocument 方法读取了配置参数,然后调用了父类 BasicElevationModel 的构造函数,使用读取的配置参数构造了 LevelSet 类对象,此时已读取到第 0 层的经纬度差为20°,所以 WorldWind 第 0 层的地型切分为 9 X 18(<LevelZeroTileDelta><LatLon units="degrees" latitude="20" longitude="20" /></LevelZeroTileDelta>)

5、在 AppConfiguration.xml 文件中,配置了与应用程序有关的一些对象的类型

<Feature className="gov.nasa.worldwindx.applications.worldwindow.core.WWPanelImpl"/>

在进入 main 函数后,会调用 Controller 对象的 start 方法,继而构造了 AppConfiguration 对象,然后调用了该对象的 configure 方法,然后依次调用 configureFeatures、registerConfiguration 方法读取了配置文件,然后调用了 controller 中的 register 对象构造和注册了相应的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: