com.supermap.realspace
类 Scene

java.lang.Object
  继承者 com.supermap.realspace.Scene

public class Scene
extends java.lang.Object

三维场景类。

SuperMap iObjects Java 三维场景的主体是一个模拟地球的三维球体(SuperMap Objects Java 以半径为6378137 米的球体来模拟地球),该球体具有地理参考,球体上的点采用经纬度进行定位,并且可以通过三维场景提供的球体上的经纬网格,方便地浏览;同时,使用全球的遥感影像图作为背景覆盖在球体表面,增强三维球体模拟的逼真性;除此之外,三维场景还模拟了地球所处的环境,包括:宇宙的星空,地球的大气环境,地球表面的雾环境等。三维场景还提供了相机的设置,相机可以用来控制对球体的观测角度、方位和观测范围,从而以不同的视角呈现球体的不同部位。

各种三维数据将通过三维场景填加到三维场景的基本组织架构上,即三维数据会依据地理参考信息,填加到SuperMap Objects Java 提供的球体上。

能够添加到三维场景中的数据包括:二维矢量数据集、三维几何对象、影像数据、地形数据、第三方三维模型数据以及KML文件。

新建三维窗口中的默认存在的三维场景

示例:
以下代码示范了三维窗口的显示以及将二维数据显示在三维场景中,假设 Space 数据源中存在一个名为 Capital_P 的矢量数据集。
 public void TestScene(DatasetVector targetDataset, Scene sceneObject) {
                // 进行三维场景的设置
                sceneObject.getAtmosphere().setVisible(true);
                Camera camera = new Camera(102, 31, 10000,AltitudeMode.RELATIVE_TO_GROUND, 0, 0);
                sceneObject.setCamera(camera);
                Fog fog = new Fog();
                fog.setFogMode(FogMode.LINEAR);
                fog.setEnable(true);
                sceneObject.setFog(fog);
                sceneObject.setScaleLegendVisible(true);
                sceneObject.setName("二维矢量数据的三维显示");

                // 返回显示在三维场景中的矢量数据集,并按照设置的风格显示在三维场景中
                Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector();
                GeoStyle3D geoStyle3D = new GeoStyle3D();
                geoStyle3D.setMarkerColor(Color.RED);
                geoStyle3D.setMarkerSize(10);
                layer3DSettingVector.setStyle(geoStyle3D);
                Layer3DDataset layer3DDatasetPoint = sceneObject.getLayers().add(targetDataset, layer3DSettingVector, true);
                layer3DDatasetPoint.updateData();

                // 全幅显示三维场景
                sceneObject.viewEntire();
                sceneObject.refresh();

                // 返回三维场景的XML形式的描述
                String descriptionScene = sceneObject.toXML();
                System.out.println("当前三维场景的信息:" + descriptionScene);
        }

嵌套类摘要
 class Scene.TerrainInfo
          场景中的地形信息类。
 
构造方法摘要
Scene()
          构造一个新的 Scene 对象。
Scene(Workspace workspace)
          根据指定的参数来构造一个 Scene 的新对象。
 
方法摘要
 void addFlownListener(FlownListener l)
          添加一个用于接收飞行结束事件(FlownEvent)的监听器。
 void addSceneClosedListener(SceneClosedListener l)
          添加一个用于接收三维场景关闭事件(SceneClosedEvent)的监听器。
 void addSceneOpenedListener(SceneOpenedListener l)
          添加一个用于接收三维场景打开事件(SceneOpenedEvent)的监听器。
 Slider addSlider(java.lang.String name)
          添加指定的滑块对象。
 Splitter addSplitter(java.lang.String name)
          添加分隔条对象。
static Point3D cartesianToGeographical(Point3D point, SceneType sceneType)
          将指定场景类型的地理坐标转成笛卡尔坐标。
static Rectangle2D ceilBounds(Rectangle2D bounds, int level)
          根据指定层数,计算指定地理范围(bounds)所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致。
 void close()
          关闭三维场景。
 double computeSphericalArea(Point2Ds points)
          计算由指定的点集合对象构成的多边形的球面面积。
 double computeSphericalDistance(Point2D point1, Point2D point2)
          计算指定两点间的球面距离。
 void dispose()
          释放该对象所占用的资源。
 void ensureVisible(Layer3D layer3d)
          根据合适的图层观察尺度来显示场景。
 void ensureVisible(Rectangle2D visibleBounds)
          根据给定的经纬度范围显示相应区域的场景。
 void ensureVisible(Rectangle2D visibleBounds, int milliseconds)
          根据指定的经纬度范围显示场景。
 void ensureVisible(Rectangle2D visibleBounds, int milliseconds, double height)
          根据给定的经纬度范围显示相应区域的场景,支持指定相机高度。
static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList, Point3D lonlat)
          将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标。
static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
          将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标,在指定场景的球体类型上加载。
 Selection3D[] findSelection(boolean hasObjectSelected)
          返回当前三维场景的选择集。
 void fly(Camera camera)
          根据指定的目标相机对象进行飞行。
 void fly(Camera camera, boolean isDirect)
          已过时。 
 void fly(Camera camera, int milliseconds)
          将相机对象按照指定的时间飞行到指定的目的地。
 void fly(Camera camera, int milliseconds, boolean isDirect)
          已过时。 
 void fly(Geometry targetObject, FlyingMode flyingMode)
          已过时。 
 void fly(Geometry targetObject, int milliseconds)
          已过时。 
 void fly(LookAt lookAt)
          根据指定的目标相机对象进行飞行。
 void fly(LookAt lookAt, int milliseconds)
          根据指定的目标相机对象和飞行时间进行飞行。
 void flyCircle(Geometry geometry, double speedRatio)
          围绕指定地点旋转飞行模式,飞行过程中可以控制飞行的速度。
 void flyCircle(Geometry geometry, double speedRatio, boolean isCycle)
          围绕指定地点旋转飞行(FlyingCircle模式),可以控制飞行速度以及设置是否循环旋转
 void flyPlay(Geometry line, double speedRatio, double distance)
          已过时。 
 boolean fromXML(java.lang.String xml)
          通过 XML 数据创建三维场景对象。
static Point3D geographicalToCartesian(Point3D point, SceneType sceneType)
          将笛卡尔坐标转成指定场景类型的地理坐标。
 double getAltitude(double longitude, double latitude)
          返回地面上某点的海拔高度。
 Atmosphere getAtmosphere()
          返回大气环境对象。
 Point3D getAutoLockOffset()
          返回相机相对于锁定对象的偏移量。
 float getBrightness()
          获取场景的亮度。
 Camera getCamera()
          返回当前场景的相机对象。
 double getCameraFOV()
          返回场景相机的视角,单位为度,范围为0-180度。
 CameraFOVModeType getCameraFOVMode()
          获取视场角模式。
 float getConstrast()
          获取场景的对比度。
static Matrix getENUTransformMatrix(Point3D point)
          传入椭球插入点的经纬度,获取插入点经纬度矩阵。
 EnvironmentLight getEnvironmentLight()
          获取环境光贴图。
 Camera getFirstPersonCamera()
          返回第一人称相机参数,区别于 getCamera() 方法。
 FlyManager getFlyManager()
          返回三维场景的飞行管理对象。
 Fog getFog()
          返回雾对象。
 double getFogVisibleAltitude()
          返回雾的可见高度,即离地球表面的海拔距离。
 double getFPS()
          返回当前场景的帧率,即帧/秒。
 float getGamma()
          获取场景的明度。
 GlobalImage getGlobalImage()
          返回 GlobalImage 对象。
 double getHeight(double longitude, double latitude)
          获取场景中地面和模型上指定点的海拔高度。
 double getHeight(double longitude, double latitude, boolean trackingLayerHeightAvailable)
          获取场景中地面和模型上指定点的海拔高度,设置跟踪图层是否参与拾取高度。
 float getHue()
          获取场景的色相。
 java.lang.String getIServerCacheDirectory()
          返回iServer服务缓存路径。
 LatLonGrid getLatLonGrid()
          返回经纬网对象。
 Layer3Ds getLayers()
          返回 3D 图层集合对象。
 LookAt getLookAt()
          获取当前场景的相机对象。
 double getMaxCameraDistance()
          返回场景相机的最大距离,单位为米。
 double getMinCameraDistance()
          返回场景相机的最小距离,单位为米。
 java.lang.String getName()
          返回当前三维场景的名称。
 Ocean getOcean()
          返回海洋对象。
 ParallaxMode getParallaxMode()
          返回立体显示模式的视差模式。
 PrjCoordSys getPrjCoordSys()
          获取或设置在平面三维模式时的投影坐标系对象。
 Query3D getQuery3D()
          获取空间查询对象。
 float getSaturation()
          获取场景的饱和度。
 SceneType getSceneType()
          返回场景类型。
 ScreenLayer3D getScreenLayer()
          返回屏幕图层。
 double getShadowVisibleDistance()
          返回阴影的可见距离,单位为米。
 Slider getSlider(java.lang.String name)
          获取指定的滑块对象。
 int getSliderCount()
          获取场景中滑块对象的个数。
 Splitter getSplitter(java.lang.String name)
          获取指定的分隔条对象。
 int getSplitterCount()
          获取当前场景中分隔条的个数。
 double getStereoEyeAngle()
          返回立体显示模式时两摄像机的交叉角度,单位为度。
 double getStereoEyeSeparation()
          返回立体显示模式时两摄像机的距离,单位为米。
 StereoMode getStereoMode()
          返回立体显示的模式。
 Sun getSun()
          返回太阳对象。
 double getTerrainExaggeration()
          返回地形所夸大的比例。
 Scene.TerrainInfo getTerrainInfo()
          获取场景中的地形信息,包括最大值,最小值。
 TerrainLayers getTerrainLayers()
          返回三维场景中的地形图层集合。
 javax.swing.Timer getTimer()
          返回用于控制场景渲染的定时器,用户可以用来模拟场景飞行以及修改更新的速度,目前是20毫秒执行一次刷新。
 TrackingLayer3D getTrackingLayer()
          返回 3D 跟踪图层对象。
 Underground getUnderground()
          返回 Underground 对象。
 Rectangle2D getViewBounds()
          获取当前场景的可视范围(Rectangle2D)。
 Workspace getWorkspace()
          返回三维场景所关联的工作空间。
 java.awt.Point globeToPixel(Point3D point)
          将三维点对象转换成屏幕点对象。
 boolean isCreateSkirt()
          获取场景是否创建地形裙边。
 boolean isCrossVisible()
          返回是否显示三维场景窗口中心位置标记。
 boolean isDepthPrecisionOptimization()
          获取场景是否开启深度优化,支持动态切换。
 java.lang.String iServerCacheDirectory()
          获取服务器缓存文件路径。
 boolean isFirstPersonView()
          返回当前场景是否被设置为第一人称操作模式。
 boolean isFullScreen()
          已过时。 
 boolean isOverlapDisplayed()
          返回压盖时是否显示。
 boolean isReceiveShadow()
          获取场景是否接收阴影。
 boolean isScaleLegendVisible()
          返回比例尺是否可见。
 boolean isStereoEnabled()
          返回是否开启立体显示功能。
 boolean isStereoModeSupported(StereoMode mode)
          返回当前系统是否支持所传入的立体显示模式。
 boolean isTransparencyOptimization()
          获取场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。
 boolean isZoomFlyPitching()
          获取场景是否放大至地表时执行俯仰操作。
static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList, Point3D lonlat)
          将经纬度的点转成以经纬度作为插入点的ENU坐标。
static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
          将经纬度的点转成以经纬度作为插入点的ENU坐标,在椭球上加载。
 boolean open(java.lang.String sceneName)
          打开指定名称的三维场景。
 boolean open(java.lang.String strServerUrl, java.lang.String strSceneName)
          通过iServer数据服务打开三维场景。
 boolean outputScenePicture(java.lang.String path, int xResolution, int yResolution)
          场景输出高分辨率图片。
 java.awt.image.BufferedImage outputSceneToBitmap()
          将三维场景输出为内存对象。
 void pan(double offsetLongitude, double offsetLatitude)
          根据给定的经向平移距离和纬向平移距离,平移三维场景。
 void pitch(double angle)
          根据给定的角度值,对三维场景进行倾斜,从而从不同角度观察三维场景中的对象。
 Point3D pixelToGlobe(java.awt.Point point)
          将屏幕点对象转换成三维点对象,该三维点对象包含了经纬度和海拔高度信息。
 Point3D pixelToGlobe(java.awt.Point point, PixelToGlobeMode mode)
          将屏幕点对象转换成三维点对象。
 boolean projectionImagesToXML(java.lang.String xmlPath)
          视频投放的结果输出到xml文件
static Point3D pseudoCartesianToSpherical(Point3D point)
          将伪直角坐标转换为经纬度坐标。
 void refresh()
          刷新三维场景。
 void removeFlownListener(FlownListener l)
          移除一个用于接收飞行结束事件(FlownEvent)的监听器。
 void removeSceneClosedListener(SceneClosedListener l)
          移除一个用于接收三维场景关闭事件(SceneClosedEvent)的监听器。
 void removeSceneOpenedListener(SceneOpenedListener l)
          移除一个用于接收三维场景打开事件(SceneOpenedEvent)的监听器。
 boolean removeSlider(java.lang.String name)
          移除指定的滑块对象。
 boolean removeSplitter(java.lang.String name)
          移除指定的分隔条对象。
 void roll(double angle)
          将三维场景绕场景中心进行一定角度的旋转。
 boolean roll(Point2D center, double angle)
          将三维场景绕某个中心点旋转。
 void rollEye(double angle)
          将三维场景绕视点进行一定角度的旋转。
 void setAutoLockOffset(Point3D point3D)
          设置相机相对于锁定对象的偏移量 通过调用该方法,可以在锁定目标对象时,改变相机对象相对于锁定对象的x轴、y轴、z轴偏移量,该偏移量暂时只适用于z轴。
 void setAutoLockTarget(GeoModel geoModel)
          设置被锁定对象 当场景不断变化时,通过锁定跟踪对象,可使相机相对于被锁定对象的相对位置保持不变。
 void setBrightness(float value)
          设置场景的亮度。
 void setCamera(Camera camera)
          设置当前场景的相机对象。
 void setCameraFOV(double value)
          设置场景相机的视角,单位为度,范围为 0-180 度。
 void setCameraFOVMode(CameraFOVModeType modeType)
          设置视场角模式。
 void setConstrast(float value)
          设置场景的对比度。
 void setCreateSkirt(boolean value)
          设置场景是否创建地形裙边。
 void setCrossVisible(boolean value)
          设置是否显示三维场景窗口中心位置标记。
 void setDepthPrecisionOptimization(boolean isDepthPrecisionOptimization)
          设置场景是否开启深度优化,支持动态切换。
 void setFirstPersonCamera(Camera value)
          设置第一人称相机参数,区别于 setCamera() 方法。
 void setFirstPersonView(boolean value)
          设置当前场景是否被设置为第一人称操作模式。
 void setFog(Fog fog)
          设置雾对象。
 void setFogVisibleAltitude(double value)
          设置雾的可见高度,即离地球表面的海拔距离。
 void setFullScreen(boolean value)
          已过时。 
 void setGamma(float value)
          设置场景的明度。
 void setHTCMoveSpeed(double speed)
          设置场景速度倍率。
 void setHue(float value)
          设置场景的色相。
 void setIServerCacheDirectory(java.lang.String value)
          设置 iServer 服务缓存路径。
 void setLookAt(LookAt lookAt)
          设置当前场景的相机对象。
 void setMaxCameraDistance(double value)
          设置场景相机的最大距离,单位为米。
 void setMinCameraDistance(double value)
          设置场景相机的最小距离,单位为米。
 void setName(java.lang.String value)
          设置当前三维场景的名称。
 void setOverlapDisplayed(boolean value)
          设置压盖时是否显示。
 void setParallaxMode(ParallaxMode parallaxMode)
          设置立体显示模式的视差模式。
 void setPrjCoordSys(PrjCoordSys tarPrjCoordSys)
          获取或设置在平面三维模式时的投影坐标系对象。
 void setReceiveShadow(boolean value)
          设置场景是否接收阴影。
 void setSaturation(float value)
          设置场景的饱和度。
 void setScaleLegendVisible(boolean value)
          设置比例尺是否可见。
 void setSceneType(SceneType value)
          设置三维场景的类型。
 void setServerCacheDirectory(java.lang.String value)
          设置服务器缓存文件路径。
 void setShadowVisibleDistance(double value)
          设置阴影的可见距离,单位为米。
 void setStereoEnabled(boolean value)
          设置是否开启立体显示功能。
 void setStereoEyeAngle(double value)
          设置立体显示模式时两摄像机的交叉角度,单位为度。
 void setStereoEyeSeparation(double value)
          设置立体显示模式时两摄像机的距离,单位为米。
 void setStereoMode(StereoMode stereoMode)
          设置立体显示的模式。
 void setTerrainExaggeration(double value)
          设置地形所夸大的比例。
 void setTransparencyOptimization(boolean isTransparencyOptimization)
          设置场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。
 void setWorkspace(Workspace workspace)
          设置三维场景所关联的工作空间。
 void setZoomFlyPitching(boolean value)
          设置场景是否放大至地表时执行俯仰操作。
static Point3D sphericalToCartesian(Point3D point)
          将经纬度坐标转换为球面笛卡尔坐标。
static Point3D sphericalToPseudoCartesian(Point3D point)
          将经纬度坐标转换为伪直角坐标。
 void stopFly()
          终止飞行操作,执行完后场景会处于静止状态。
static Rectangle2D toBounds(int level, int columnIndex, int rowIndex)
          根据缓存层数,列索引和行索引返回对应的地理范围。
 java.lang.String toXML()
          返回三维场景的的 XML 形式的描述。
 void viewEntire()
          全幅显示三维场景。
 void zoom(double ratio)
          根据给定的缩放比例,对三维场景进行缩放操作。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Scene

public Scene()
构造一个新的 Scene 对象。

该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl

抛出:
InvalidOperationException - 通过该构造函数创建的 Scene 对象,不能完成渲染的工作,执行 outputSceneToBitmap() 方法时。

Scene

public Scene(Workspace workspace)
根据指定的参数来构造一个 Scene 的新对象。

该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl

参数:
workspace - 指定的 workspace 对象。
抛出:
InvalidOperationException - 通过该构造函数创建的 Scene 对象,不能完成渲染的工作,执行 outputSceneToBitmap() 方法时。
方法详细信息

getCamera

public Camera getCamera()
返回当前场景的相机对象。Camera 相当于视点。

返回:
当前场景的相机对象。

setCamera

public void setCamera(Camera camera)
设置当前场景的相机对象。Camera 相当于视点。

参数:
camera - 当前场景的相机对象。

getAtmosphere

public Atmosphere getAtmosphere()
返回大气环境对象。

返回:
大气环境对象。

isScaleLegendVisible

public boolean isScaleLegendVisible()
返回比例尺是否可见。true 表示比例尺可见,false 表示不可见。

返回:
比例尺是否可见。

setScaleLegendVisible

public void setScaleLegendVisible(boolean value)
设置比例尺是否可见。true 表示比例尺可见,false 表示不可见。

参数:
value - 一个布尔值指定比例尺是否可见。

getLatLonGrid

public LatLonGrid getLatLonGrid()
返回经纬网对象。

返回:
经纬网对象。

getTrackingLayer

public TrackingLayer3D getTrackingLayer()
返回 3D 跟踪图层对象。

返回:
3D 跟踪图层对象。

getLayers

public Layer3Ds getLayers()
返回 3D 图层集合对象。

返回:
3D 图层集合对象。

getFog

public Fog getFog()
返回雾对象。通过设置场景中的 Fog 等对象,用来实现对三维场景效果的渲染。

返回:
雾对象。

setFog

public void setFog(Fog fog)
设置雾对象。

参数:
fog - 雾对象。

getScreenLayer

public ScreenLayer3D getScreenLayer()
返回屏幕图层。

返回:
屏幕图层。

getWorkspace

public Workspace getWorkspace()
返回三维场景所关联的工作空间。

返回:
三维场景所关联的工作空间。

setWorkspace

public void setWorkspace(Workspace workspace)
设置三维场景所关联的工作空间。

参数:
workspace - 三维场景所关联的工作空间。

getTerrainExaggeration

public double getTerrainExaggeration()
返回地形所夸大的比例。

返回:
地形所夸大的比例。
默认值:
默认值为 1。

setTerrainExaggeration

public void setTerrainExaggeration(double value)
设置地形所夸大的比例。

参数:
value - 地形所夸大的比例。

getTerrainLayers

public TerrainLayers getTerrainLayers()
返回三维场景中的地形图层集合。

返回:
三维场景中的地形图层集合。

getFogVisibleAltitude

public double getFogVisibleAltitude()
返回雾的可见高度,即离地球表面的海拔距离。单位为米。

返回:
雾的可见高度。单位为米。
默认值:
默认值为 20000,单位为米。

setFogVisibleAltitude

public void setFogVisibleAltitude(double value)
设置雾的可见高度,即离地球表面的海拔距离。单位为米。

参数:
value - 雾的可见高度。单位为米。

getFPS

public double getFPS()
返回当前场景的帧率,即帧/秒。

该数值通常用于判断三维场景的显示效率。

注意:该值小于20时,场景就会出现延迟的现象。

返回:
当前场景的帧率,即帧/秒。

getTimer

public javax.swing.Timer getTimer()
返回用于控制场景渲染的定时器,用户可以用来模拟场景飞行以及修改更新的速度,目前是20毫秒执行一次刷新。

返回:
用于控制场景渲染的定时器。

getCameraFOV

public double getCameraFOV()
返回场景相机的视角,单位为度,范围为0-180度。

返回:
场景相机的视角。单位为度。

setCameraFOV

public void setCameraFOV(double value)
设置场景相机的视角,单位为度,范围为 0-180 度。

参数:
value - 场景相机的视角。单位为度。
默认值:
默认值为 45 度,单位为度。

getMaxCameraDistance

public double getMaxCameraDistance()
返回场景相机的最大距离,单位为米。

返回:
场景相机的最大距离。单位为米。

setMaxCameraDistance

public void setMaxCameraDistance(double value)
设置场景相机的最大距离,单位为米。

参数:
value - 场景相机的最大距离。单位为米。

getMinCameraDistance

public double getMinCameraDistance()
返回场景相机的最小距离,单位为米。

返回:
场景相机的最小距离。单位为米。

setMinCameraDistance

public void setMinCameraDistance(double value)
设置场景相机的最小距离,单位为米。

参数:
value - 场景相机的最小距离。单位为米。

getName

public java.lang.String getName()
返回当前三维场景的名称。

返回:
当前三维场景的名称。

setName

public void setName(java.lang.String value)
设置当前三维场景的名称。

参数:
value - 当前三维场景的名称。

isOverlapDisplayed

public boolean isOverlapDisplayed()
返回压盖时是否显示。

这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。

返回:
压盖时是否显示。

setOverlapDisplayed

public void setOverlapDisplayed(boolean value)
设置压盖时是否显示。

这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。

参数:
value - 压盖时是否显示。

fly

@Deprecated
public void fly(Geometry targetObject,
                           FlyingMode flyingMode)
已过时。 

根据指定的飞行模式和目标对象进行飞行。

FlyingMode 模式设置为 FLYINGPLAY 时, 指定的目标对象(targetObject)只能是 GeoLineGeoLine3D 对象。

参数:
targetObject - 指定的目标对象。
flyingMode - 指定的飞行模式。该模式包括飞行路径、是否进行飞行过程回放以及是否循环飞行。
示例:
以下代码示范了如何根据给定的目标对象和飞行模式进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();

                        //构造两个三维点对象
                        Point3D point3DStart=new Point3D (-100,-100,-100);
                        Point3D point3DEnd=new Point3D (100,100,100);

                        //将两个三维点对象加入三维点对象集合
                        Point3Ds points3D = new Point3Ds();
                        points3D.add(point3DStart);
                        points3D.add(point3DEnd);

                        //用三维点对象集合构造一条三维线几何对象
                        GeoLine3D line3D = new GeoLine3D(points3D);
                        //使三维场景以飞行的方式沿着三维线几何对象移动
                        sceneObject.fly(line3D,FlyingMode.FLYINGPLAY);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

fly

public void fly(Camera camera)
根据指定的目标相机对象进行飞行。

参数:
camera - 指定的目标相机对象。
示例:
以下代码示范了如何根据指定的目标相机对象进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口,构造一个相机对象,并飞行到该相机对象
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();
                Camera camera = new Camera(102, 31, 10000,
                                AltitudeMode.RELATIVE_TO_GROUND, 0, 0);
                sceneObject.fly(camera);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

fly

@Deprecated
public void fly(Geometry targetObject,
                           int milliseconds)
已过时。 

根据指定的目标对象和飞行时间进行飞行。

参数:
targetObject - 指定的目标对象。
milliseconds - 指定的飞行到达目的地所耗费的时间。单位为毫秒。
示例:
以下代码示范了如何根据指定的目标对象和飞行时间进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();

                        //构造两个三维点对象
                        Point3D point3DStart=new Point3D (-100,-100,-100);
                        Point3D point3DEnd=new Point3D (100,100,100);

                        //将两个三维点对象加入三维点对象集合
                        Point3Ds  points3D = new Point3Ds();
                        points3D.add(point3DStart);
                        points3D.add(point3DEnd);

                        //用三维点对象集合构造一条三维线几何对象
                        GeoLine3D line3D = new GeoLine3D(points3D);
                        //使三维场景沿着三维线几何对象在5秒内飞行到三维线几何对象终点
                        sceneObject.fly(line3D,5000);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

fly

public void fly(Camera camera,
                int milliseconds)
将相机对象按照指定的时间飞行到指定的目的地。

参数:
camera - 指定的目标相机对象。
milliseconds - 相机飞行到指定目的地所耗费的时间。单位为毫秒。
示例:
以下代码示范了如何根据指定的目标相机对象在5秒的时间内飞行到该相机对象。
        public void TestSceneFly() {
                // 显示三维窗口,构造一个相机对象,并以5秒的时间飞行到该相机对象
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();
                Camera camera = new Camera(102, 31, 10000,
                                AltitudeMode.RELATIVE_TO_GROUND, 0, 0);
                sceneObject.fly(
    ,5000);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

pixelToGlobe

public Point3D pixelToGlobe(java.awt.Point point)
将屏幕点对象转换成三维点对象,该三维点对象包含了经纬度和海拔高度信息。

若屏幕点不在地球范围内则返回的三维点经纬度和高度为 Double.NaN,即不是数字的值。

参数:
point - 将被转换的屏幕点对象。
返回:
转换后的三维点对象。
示例:
以下代码示范了如何将屏幕点对象转换成三维点对象,假设已有存在地形数据 GlobalTerrain.sct。
        public void testPixelToGlobe(Scene sceneObject) {
                // 进行三维场景的设置
                sceneObject.getAtmosphere().setVisible(true);
                sceneObject.setTerrainExaggeration(3);

                // 地形图层到三维场景中
                TerrainLayers terrainLayers = sceneObject.getTerrainLayers();
                TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true);
                terrainLayer.setVisible(true);

                // 将屏幕点对象转换成三维点对象
                Point point = new Point(800, 600);
                Point3D point3D = sceneObject.pixelToGlobe(point);
                System.out.println("转换后的三维点对象为:" + point3D.toString());
                sceneObject.refresh();
        }

globeToPixel

public java.awt.Point globeToPixel(Point3D point)
将三维点对象转换成屏幕点对象。

当指定的三维点对象不在当前相机范围内的时候,改方法将返回(-1,-1),表示此点不可见。

参数:
point - 将被转换的三维点坐标对象,该点对象包含了经纬度和海拔高度信息。
返回:
转换后的屏幕点对象。
示例:
以下代码示范了如何将三维点对象转换成二维点对象,假设已有存在地形数据 GlobalTerrain.sct。
        public void TestGlobeToPixel(Scene sceneObject) {
                // 进行三维地图景场景的设置
                sceneObject.getAtmosphere().setVisible(true);
                sceneObject.setTerrainExaggeration(3);

                // 将地形图层添加到三维场景中
                TerrainLayers terrainLayers = sceneObject.getTerrainLayers();
                TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true);
                terrainLayer.setVisible(true);

                // 将三维点对象转换成二维点对象
                double altitudeValue = sceneObject.getAltitude(126, 31);
                Point3D point3D = new Point3D(126, 31, altitudeValue);
                Point point = sceneObject.globeToPixel(point3D);
                System.out.println("转换后的屏幕点对象为:" + point.toString());
                sceneObject.refresh();
        }

getAltitude

public double getAltitude(double longitude,
                          double latitude)
返回地面上某点的海拔高度。单位为米。

参数:
longitude - 地面上某点的经度。单位为度。
latitude - 地面上某点的纬度。单位为度。
返回:
如果有地形数据的情况下,返回地面上某点的海拔高度,否则没有地形数据时,返回0.0。不管地形拉伸倍数如何,返回的地形高度永远是实际的地形高度。
示例:
以下代码示范了如何返回地面上某点的海拔高度,假设已有存在地形数据 GlobalTerrain.sct。
        public void TestSceneGetAltitude(Scene sceneObject) {
                // 进行三维场景的设置
                sceneObject.getAtmosphere().setVisible(true);
                sceneObject.setTerrainExaggeration(3);

                // 添加地形图层到三维场景中
                TerrainLayers terrainLayers = sceneObject.getTerrainLayers();
                TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true);
                terrainLayer.setVisible(true);

                // 返回地面上某点的海拔高度
                double altitudeValue = sceneObject.getAltitude(116, 39);
                System.out.println("地面上东经116度,北纬39度的海拔高度为:" + altitudeValue);
        }

pan

public void pan(double offsetLongitude,
                double offsetLatitude)
根据给定的经向平移距离和纬向平移距离,平移三维场景。

下图为对三维场景进行平移操作的效果图:

参数:
offsetLongitude - 经向平移距离。单位为度。
offsetLatitude - 纬向平移距离。单位为度。

zoom

public void zoom(double ratio)
根据给定的缩放比例,对三维场景进行缩放操作。缩放比例的范围为负无穷大到1,其中当参数为(0,1)之间的数值时,场景按比例放大;参数为小于0数值时,场景按比例缩小,但在缩小到一定程度后不会再缩小。

下图为对三维场景进行缩放操作的效果图:

参数:
ratio - 缩放比例。缩放比例的范围为负无穷大到1,其中当参数为(0,1)之间的数值时,场景按比例放大;参数为小于0数值时,场景按比例缩小,但在缩小到一定程度后不会再缩小。
示例:
以下代码示范了按照一定的比例缩放当前三维场景。
        public void TestSceneZoom(Scene sceneObject) {
                // 按照一定的比例缩放当前三维场景
                sceneObject.zoom(0.5);
        }

ensureVisible

public void ensureVisible(Rectangle2D visibleBounds)
根据给定的经纬度范围显示相应区域的场景。

参数:
visibleBounds - 需要全幅显示的经纬度范围。
示例:
以下代码示范了如何根据给定的经纬度范围显示相应区域的场景
        public void TestSceneEnsureVisible(Scene sceneObject) {
                // 根据给定的经纬度范围显示相应区域的三维场景
                Rectangle2D viewRegion = new Rectangle2D(100, 20, 106, 36);
                sceneObject.ensureVisible(viewRegion);
        }

ensureVisible

public void ensureVisible(Rectangle2D visibleBounds,
                          int milliseconds,
                          double height)
根据给定的经纬度范围显示相应区域的场景,支持指定相机高度。

参数:
visibleBounds - 需要全幅显示的经纬度范围。
milliseconds - 到达指定目的地所耗费的时间。单位为毫秒。
height - 停留的相机高度。

pitch

public void pitch(double angle)
根据给定的角度值,对三维场景进行倾斜,从而从不同角度观察三维场景中的对象。

下图为对三维场景进行一定角度倾斜的效果图:

参数:
angle - 角度。单位为度。

viewEntire

public void viewEntire()
全幅显示三维场景。

下图为对三维场景进行全幅显示操作的效果图:

示例:
参见 Scene 类的示例。

refresh

public void refresh()
刷新三维场景。

示例:
参见 Scene 类的示例。

fromXML

public boolean fromXML(java.lang.String xml)
通过 XML 数据创建三维场景对象。

参数:
xml - XML 数据。
返回:
创建成功则返回 true,否则返回 false。

toXML

public java.lang.String toXML()
返回三维场景的的 XML 形式的描述。

返回:
三维场景的 XML 形式的描述。
示例:
参见 Scene 类的示例。

findSelection

public Selection3D[] findSelection(boolean hasObjectSelected)
返回当前三维场景的选择集。

该方法返回的是 Selection3D 类对象的数组,每一个 Selection3D 类对象为三维场景中一个图层中所有处于选中状态的对象集合。

参数:
hasObjectSelected - 指定三维场景中是否有对象被选中。当设置为 true,该方法返回的是场景中有选择对象的图层的选择集;设置为 false 时,返回场景中所有图层的选择集。
返回:
Selection3D 类对象数组,其中,每一个 Selection3D 类对象为三维场景中一个图层中所有处于选中状态的对象集合。

open

public boolean open(java.lang.String sceneName)
打开指定名称的三维场景。

参数:
sceneName - 指定的三维场景的名称。
返回:
成功返回 true,否则返回 false。

open

public boolean open(java.lang.String strServerUrl,
                    java.lang.String strSceneName)
通过iServer数据服务打开三维场景。

参数:
strServerUrl - iServer三维服务的URL。
strSceneName - 指定的三维场景名称。
返回:
打开成功返回 true,否则返回 false。

close

public void close()
关闭三维场景。


addFlownListener

public void addFlownListener(FlownListener l)
添加一个用于接收飞行结束事件(FlownEvent)的监听器。

参数:
l - 一个用于接收飞行结束事件的监听器。

removeFlownListener

public void removeFlownListener(FlownListener l)
移除一个用于接收飞行结束事件(FlownEvent)的监听器。

参数:
l - 一个用于接收飞行结束事件的监听器。

roll

public void roll(double angle)
将三维场景绕场景中心进行一定角度的旋转。

下图为三维场景绕场景中心进行一定角度旋转的效果图:

参数:
angle - 指定的角度。单位为度。

rollEye

public void rollEye(double angle)
将三维场景绕视点进行一定角度的旋转。

下图为三维场景绕视点进行一定角度旋转的效果图:

参数:
angle - 指定的角度。单位为度。

computeSphericalDistance

public double computeSphericalDistance(Point2D point1,
                                       Point2D point2)
计算指定两点间的球面距离。

参数:
point1 - 需要进行距离计算的一个点。
point2 - 需要进行距离计算的另外一个点。
返回:
指定两点间的球面距离,单位为米。

computeSphericalArea

public double computeSphericalArea(Point2Ds points)
计算由指定的点集合对象构成的多边形的球面面积。

参数:
points - 构成需要进行计算面积的多边形的点集合对象。
返回:
由点集合对象构成的多边形的球面面积,单位为平方米。

roll

public boolean roll(Point2D center,
                    double angle)
将三维场景绕某个中心点旋转。

下图为三维场景绕场景中心(即某个中心点)进行一定角度旋转的效果图:

参数:
center - 指定的中心点,该点采用经纬度坐标来表示。
angle - 三维场景的旋转角度。单位为度。
返回:
成功返回 true,否则返回 false。

stopFly

public void stopFly()
终止飞行操作,执行完后场景会处于静止状态。除了飞行外,该方法还可终止惯性转到以及回归到正北方向的转动状态。


outputSceneToBitmap

public java.awt.image.BufferedImage outputSceneToBitmap()
将三维场景输出为内存对象。

返回:
BufferedImage 对象。

fly

@Deprecated
public void fly(Camera camera,
                           boolean isDirect)
已过时。 

根据指定的目标相机对象进行飞行。

当目的地不在当前视野内时,isDirect 为 true 则直接飞过去,为 false 则先拉起再飞过去。

参数:
camera - 指定的目标相机对象。
isDirect - 该参数决定是直接飞行过去还是先拉起再飞行过去。
示例:
以下代码示范了如何根据指定的目标相机对象以先拉起再飞行过去的方式进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口,构造一个相机对象,并以先拉起再飞行过去的方式飞行到该相机对象
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();
                Camera camera = new Camera(102, 31, 10000,
                                AltitudeMode.RELATIVE_TO_GROUND, 0, 0);
                sceneObject.fly(camera,false);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

fly

@Deprecated
public void fly(Camera camera,
                           int milliseconds,
                           boolean isDirect)
已过时。 

该方法已过时。根据指定的目标对象和飞行时间进行飞行。

当目的地不在当前视野内时,isDirect 为 true 则直接飞过去,为 false 则先拉起再飞过去。

参数:
camera - 指定的目标对象。
milliseconds - 相机飞行到指定目的地所耗费的时间。单位为毫秒。
isDirect - 决定是直接飞行过去还是先拉起再飞行过去。
示例:
以下代码示范了如何根据指定的目标相机对象在5秒内以先拉起再飞行过去的方式进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口,构造一个相机对象,并在5秒内以先拉起再飞行过去的方式飞行到该相机对象
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();
                Camera camera = new Camera(102, 31, 10000,
                                AltitudeMode.RELATIVE_TO_GROUND, 0, 0);
                sceneObject.fly(camera,5000,false);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

addSceneOpenedListener

public void addSceneOpenedListener(SceneOpenedListener l)
添加一个用于接收三维场景打开事件(SceneOpenedEvent)的监听器。

参数:
l - 一个用于接收三维场景打开事件的监听器。

removeSceneOpenedListener

public void removeSceneOpenedListener(SceneOpenedListener l)
移除一个用于接收三维场景打开事件(SceneOpenedEvent)的监听器。

参数:
l - 一个用于接收三维场景打开事件的监听器。

addSceneClosedListener

public void addSceneClosedListener(SceneClosedListener l)
添加一个用于接收三维场景关闭事件(SceneClosedEvent)的监听器。

参数:
l - 一个用于接收三维场景关闭事件(SceneClosedEvent)的监听器。

removeSceneClosedListener

public void removeSceneClosedListener(SceneClosedListener l)
移除一个用于接收三维场景关闭事件(SceneClosedEvent)的监听器。

参数:
l - 一个用于接收三维场景关闭事件的监听器。

isCrossVisible

public boolean isCrossVisible()
返回是否显示三维场景窗口中心位置标记。

返回:
是否显示三维场景窗口中心位置标记。

setCrossVisible

public void setCrossVisible(boolean value)
设置是否显示三维场景窗口中心位置标记。

参数:
value - 是否显示三维场景窗口中心位置标记。

flyPlay

@Deprecated
public void flyPlay(Geometry line,
                               double speedRatio,
                               double distance)
已过时。 

沿线飞行模式,可以控制飞行速度和高度,只支持 GeoLineGeoLine3D 类型的线对象。

下图为沿着指定的三维线几何对象飞行的效果图:

参数:
line - 指定的沿线飞行的参考线。(注意:只支持 GeoLineGeoLine3D 类型)
speedRatio - 指定的默认飞行速度的倍数。
distance - 飞行中 Camera 与线上的观察点的距离。
示例:
以下代码示范了如何沿着指定的三维线几何对象以飞行速度的2倍进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();

                        //构造两个三维点对象
                        Point3D point3DStart=new Point3D (-100,-100,-100);
                        Point3D point3DEnd=new Point3D (100,100,100);

                        //将两个三维点对象加入三维点对象集合
                        Point3Ds  points3D = new Point3Ds();
                        points3D.add(point3DStart);
                        points3D.add(point3DEnd);

                        //用三维点对象集合构造一条三维线几何对象
                        GeoLine3D line3D = new GeoLine3D(points3D);
                        //沿着指定的三维线几何对象以飞行速度的2倍进行飞行,高度为100
                        sceneObject.fly(line3D,2,100);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

flyCircle

public void flyCircle(Geometry geometry,
                      double speedRatio)
围绕指定地点旋转飞行模式,飞行过程中可以控制飞行的速度。

下图为几何对象围绕指定地点旋转飞行的效果图:

参数:
geometry - 指定的目标几何对象
speedRatio - 指定的默认飞行速度的倍数
示例:
以下代码示范了如何围绕指定的三维线几何对象以飞行速度的2倍进行飞行。
        public void TestSceneFly() {
                // 显示三维窗口
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();

                        //构造两个三维点对象
                        Point3D point3DStart=new Point3D (-100,-100,-100);
                        Point3D point3DEnd=new Point3D (100,100,100);

                        //将两个三维点对象加入三维点对象集合
                        Point3Ds  points3D = new Point3Ds();
                        points3D.add(point3DStart);
                        points3D.add(point3DEnd);

                        //用三维点对象集合构造一条三维线几何对象
                        GeoLine3D line3D = new GeoLine3D(points3D);
                        //围绕指定的三维线几何对象以飞行速度的2倍进行飞行
                        sceneObject.flyCircle(line3D,2.0);

                // 释放占用的资源
                sceneControl.dispose();
        }
     

flyCircle

public void flyCircle(Geometry geometry,
                      double speedRatio,
                      boolean isCycle)
围绕指定地点旋转飞行(FlyingCircle模式),可以控制飞行速度以及设置是否循环旋转

参数:
geometry - 目标几何对象
speedRatio - 飞行默认速度的倍数
isCycle - 是否循环旋转

ensureVisible

public void ensureVisible(Rectangle2D visibleBounds,
                          int milliseconds)
根据指定的经纬度范围显示场景。

参数:
visibleBounds - 需要全副显示的经纬度范围。
milliseconds - 到达指定目的地所耗费的时间。单位为毫秒。

getOcean

public Ocean getOcean()
返回海洋对象。

返回:
海洋对象。

dispose

public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。


toBounds

public static Rectangle2D toBounds(int level,
                                   int columnIndex,
                                   int rowIndex)
根据缓存层数,列索引和行索引返回对应的地理范围。

参数:
level - 指定的缓存层数。
columnIndex - 指定的缓存图片的列索引。
rowIndex - 指定的缓存图片的行索引。
返回:
某层数下指定行列缓存图片所对应的地理范围。

ceilBounds

public static Rectangle2D ceilBounds(Rectangle2D bounds,
                                     int level)
根据指定层数,计算指定地理范围(bounds)所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致。该方法主要用于规整需要生成缓存数据的范围。

在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法对手动生成的缓存范围进行规整,以避免指定地理范围(bounds)的缓存图片的边界出现部分白图现象。

参数:
bounds - 某层数下指定的生成缓存的地理范围。
level - 指定的层数。
返回:
某层数下指定地理范围所对应行列缓存图片的地理范围,即行列缓存图片块划分的外边界。

ensureVisible

public void ensureVisible(Layer3D layer3d)
根据合适的图层观察尺度来显示场景。

参数:
layer3d - 需要显示的图层。

isStereoEnabled

public boolean isStereoEnabled()
返回是否开启立体显示功能。

返回:
是否开启立体显示功能。
默认值:
默认值为 false,即没有开启立体显示功能。

setStereoEnabled

public void setStereoEnabled(boolean value)
设置是否开启立体显示功能。只有将立体显示功能开启,所设置的立体显示效果才看通过场景进行观看。

参数:
value - 是否开启立体显示功能。
示例:
以下代码示范了如何设置场景的立体显示效果。
         public void setStereoDisplay() {
                // 显示三维窗口
                SceneControl sceneControl = new SceneControl();
                Scene sceneObject = sceneControl.getScene();

                        if(!sceneObject.isStereoEnabled())
                        {
                                // 开启立体显示功能
                                sceneObject.setStereoEnabled(true);
                        }
                        // 设置场景的立体显示模式为四缓存式立体
                        sceneObject.setStereoMode(StereoMode.QUAD_BUFFER);

                        // 设置场景的视差模式为正视差
                        sceneObject.setParallaxMode(ParallaxMode.POSITIVE_PARALLAX);

                        // 设置两摄像机的距离
                        sceneObject.setStereoEyeSeparation(0.06);

                        // 设置两摄像机的交叉角度
                        sceneObject.setStereoEyeAngle(-0.025);
         }
     

getStereoMode

public StereoMode getStereoMode()
返回立体显示的模式。

返回:
立体显示的模式。
默认值:
默认值为 ANAGLYPHIC

setStereoMode

public void setStereoMode(StereoMode stereoMode)
设置立体显示的模式。

参数:
stereoMode - 立体显示的模式。
示例:
请参见 setStereoEnabled() 方法的示例。

getStereoEyeSeparation

public double getStereoEyeSeparation()
返回立体显示模式时两摄像机的距离,单位为米。

返回:
立体显示模式时两摄像机的距离。单位为米。
默认值:
默认值为 0.05,单位为米。

setStereoEyeSeparation

public void setStereoEyeSeparation(double value)
设置立体显示模式时两摄像机的距离,单位为米。

两摄像机的距离在正视差模式(POSITIVE_PARALLAX)下的单位为厘米,因此正视差模式下,在大范围通过该方法设置两摄像机之间的距离没有效果。

参数:
value - 立体显示模式时两摄像机的距离。单位为米。
示例:
请参见 setStereoEnabled() 方法的示例。

getStereoEyeAngle

public double getStereoEyeAngle()
返回立体显示模式时两摄像机的交叉角度,单位为度。

该方法仅在正视差模式下有效,表示两摄像机的交叉角度大小,其意义在于调整双目视线的交点位置,可以增加或减弱景物的景深感。

返回:
立体显示模式时两摄像机的交叉角度。单位为度。
默认值:
默认值为 -0.012。单位为度。

setStereoEyeAngle

public void setStereoEyeAngle(double value)
设置立体显示模式时两摄像机的交叉角度,单位为度。

参数:
value - 立体显示模式时两摄像机的交叉角度。单位为度。
示例:
请参见 setStereoEnabled() 方法的示例。

getParallaxMode

public ParallaxMode getParallaxMode()
返回立体显示模式的视差模式。

返回:
立体显示模式的视差模式。
默认值:
默认值为 POSITIVE_PARALLAX

setParallaxMode

public void setParallaxMode(ParallaxMode parallaxMode)
设置立体显示模式的视差模式。

参数:
parallaxMode - 立体显示模式的视差模式。

isFullScreen

@Deprecated
public boolean isFullScreen()
已过时。 

返回是否以全屏幕的方式绘制场景。

返回:
是否以全屏幕的方式绘制场景。

setFullScreen

@Deprecated
public void setFullScreen(boolean value)
已过时。 

设置是否以全屏幕的方式绘制场景。

参数:
value - 是否以全屏幕的方式绘制场景。

isStereoModeSupported

public boolean isStereoModeSupported(StereoMode mode)
返回当前系统是否支持所传入的立体显示模式。

参数:
mode - 指定的需要判断的立体显示模式。
返回:
当前系统是否支持所传入的立体显示模式。

getUnderground

public Underground getUnderground()
返回 Underground 对象。

返回:
Underground 对象。

getGlobalImage

public GlobalImage getGlobalImage()
返回 GlobalImage 对象。

返回:
GlobalImage 对象。

setAutoLockTarget

public void setAutoLockTarget(GeoModel geoModel)
设置被锁定对象

当场景不断变化时,通过锁定跟踪对象,可使相机相对于被锁定对象的相对位置保持不变。

参数:
geoModel - 锁定对象

getAutoLockOffset

public Point3D getAutoLockOffset()
返回相机相对于锁定对象的偏移量。

通过调用该方法,可以在锁定目标对象时,改变相机相对于锁定对象的x轴、y轴和z轴偏移量,该偏移量暂时只适用于z轴。

返回:
相机相对于锁定对象的偏移量。
默认值:
该偏移量的默认值为x=0,y=0,z=0。

setAutoLockOffset

public void setAutoLockOffset(Point3D point3D)
设置相机相对于锁定对象的偏移量

通过调用该方法,可以在锁定目标对象时,改变相机对象相对于锁定对象的x轴、y轴、z轴偏移量,该偏移量暂时只适用于z轴。

通过为point3D对象的x、y、z赋值来设置相机相对于锁定对象的偏移量。

参数:
point3D - 相机相对于锁定对象的偏移量。

getIServerCacheDirectory

public java.lang.String getIServerCacheDirectory()
返回iServer服务缓存路径。

返回:
返回iServer服务缓存路径。

setIServerCacheDirectory

public void setIServerCacheDirectory(java.lang.String value)
设置 iServer 服务缓存路径。

参数:
value - iServer服务缓存路径。

setFirstPersonCamera

public void setFirstPersonCamera(Camera value)
设置第一人称相机参数,区别于 setCamera() 方法。

setCamera() 方法是以屏幕中心点作为基准点设置场景位置的。

setFirstPersonCamera() 方法是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。

参数:
value - 欲设置的第一人称相机参数结构体。

getFirstPersonCamera

public Camera getFirstPersonCamera()
返回第一人称相机参数,区别于 getCamera() 方法。

getCamera() 方法返回的是以屏幕中心点作为基准点的场景位置。

getFirstPersonCamera() 方法返回的是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。

返回:
当前场景的第一人称相机参数结构体。

getSun

public Sun getSun()
返回太阳对象。通过设置场景中的 Sun 等对象,用来实现对三维场景效果的渲染。

返回:
太阳对象。

getFlyManager

public FlyManager getFlyManager()
返回三维场景的飞行管理对象。

返回:
三维场景的飞行管理对象。

pixelToGlobe

public Point3D pixelToGlobe(java.awt.Point point,
                            PixelToGlobeMode mode)
将屏幕点对象转换成三维点对象。该方法可以用于判断所选择点位于模型之上或是地形之上。

参数:
point - 指定的屏幕点对象。
mode - 屏幕点对象转换为三维点对象的求交类型。
返回:
返回三维点对象。

isFirstPersonView

public boolean isFirstPersonView()
返回当前场景是否被设置为第一人称操作模式。

返回:
当前场景是否被设置为第一人称操作模式。

setFirstPersonView

public void setFirstPersonView(boolean value)
设置当前场景是否被设置为第一人称操作模式。

参数:
value - 当前场景是否被设置为第一人称操作模式。

getShadowVisibleDistance

public double getShadowVisibleDistance()
返回阴影的可见距离,单位为米。

返回:
阴影的可见距离。单位为米。
默认值:
默认值为2000,单位为米。

setShadowVisibleDistance

public void setShadowVisibleDistance(double value)
设置阴影的可见距离,单位为米。

参数:
value - 阴影的可见距离。单位为米。

getSceneType

public SceneType getSceneType()
返回场景类型。

返回:
返回场景类型。

fly

public void fly(LookAt lookAt)
根据指定的目标相机对象进行飞行。

参数:
lookAt - 指定的LookAt相机对象。

fly

public void fly(LookAt lookAt,
                int milliseconds)
根据指定的目标相机对象和飞行时间进行飞行。

参数:
lookAt - 指定的LookAt相机对象。
milliseconds - 相机飞行到指定目的地所耗费的时间。单位为毫秒。

getLookAt

public LookAt getLookAt()
获取当前场景的相机对象。

返回:
当前场景的相机对象。

setLookAt

public void setLookAt(LookAt lookAt)
设置当前场景的相机对象。

参数:
lookAt - 指定的相机对象。

addSplitter

public Splitter addSplitter(java.lang.String name)
添加分隔条对象。

参数:
name - 指定的分隔条名称。
返回:
添加成功的分隔条。

getSplitter

public Splitter getSplitter(java.lang.String name)
获取指定的分隔条对象。

参数:
name - 指定的分隔条名称。
返回:
分隔条对象。

removeSplitter

public boolean removeSplitter(java.lang.String name)
移除指定的分隔条对象。

参数:
name - 指定的分隔条名称。
返回:
布尔值,表示移除是否成功。

getSplitterCount

public int getSplitterCount()
获取当前场景中分隔条的个数。

返回:
分隔条个数。

addSlider

public Slider addSlider(java.lang.String name)
添加指定的滑块对象。

参数:
name - 指定的滑块名称。
返回:
添加成功的滑块对象。

getSlider

public Slider getSlider(java.lang.String name)
获取指定的滑块对象。

参数:
name - 指定的滑块名称。
返回:
滑块对象。

removeSlider

public boolean removeSlider(java.lang.String name)
移除指定的滑块对象。

参数:
name - 指定的滑块名称。
返回:
一个布尔值,表示移除是否成功。

getSliderCount

public int getSliderCount()
获取场景中滑块对象的个数。

返回:
滑块对象的个数。

setSceneType

public void setSceneType(SceneType value)
设置三维场景的类型。可以选择球体模式(Globe)和平面模式(Flat)两种。

参数:
value - 三维场景的类型。

sphericalToCartesian

public static Point3D sphericalToCartesian(Point3D point)
将经纬度坐标转换为球面笛卡尔坐标。

参数:
point - 待转换的坐标值。
返回:
笛卡尔坐标值。

sphericalToPseudoCartesian

public static Point3D sphericalToPseudoCartesian(Point3D point)
将经纬度坐标转换为伪直角坐标。

参数:
point - 待转换的坐标值。
返回:
伪直角坐标。

getHeight

public double getHeight(double longitude,
                        double latitude)
获取场景中地面和模型上指定点的海拔高度。

参数:
longitude - 指定点的经度。
latitude - 指定点的纬度。
返回:
指定点的海拔高度。

getHeight

public double getHeight(double longitude,
                        double latitude,
                        boolean trackingLayerHeightAvailable)
获取场景中地面和模型上指定点的海拔高度,设置跟踪图层是否参与拾取高度。

参数:
longitude - 指定点的经度。
latitude - 指定点的纬度。
trackingLayerHeightAvailable - 指定跟踪图层是否参与拾取高度。
返回:
指定点的海拔高度。

getBrightness

public float getBrightness()
获取场景的亮度。

返回:
场景的亮度。

setBrightness

public void setBrightness(float value)
设置场景的亮度。

参数:
value - 指定的亮度。

getConstrast

public float getConstrast()
获取场景的对比度。

返回:
场景的对比度。

setConstrast

public void setConstrast(float value)
设置场景的对比度。

参数:
value - 指定的对比度。

getGamma

public float getGamma()
获取场景的明度。

返回:
场景的明度。

setGamma

public void setGamma(float value)
设置场景的明度。

参数:
value - 指定的明度。

getHue

public float getHue()
获取场景的色相。

返回:
场景的色相。

setHue

public void setHue(float value)
设置场景的色相。

参数:
value - 指定的色相。

getSaturation

public float getSaturation()
获取场景的饱和度。

返回:
场景的饱和度。

setSaturation

public void setSaturation(float value)
设置场景的饱和度。

参数:
value - 指定的饱和度。

isCreateSkirt

public boolean isCreateSkirt()
获取场景是否创建地形裙边。当TIN地形存在裂缝时,创建裙边可避免显示裂缝,能够提升TIN地形效果。

返回:
是否创建地形裙边.

setCreateSkirt

public void setCreateSkirt(boolean value)
设置场景是否创建地形裙边。当TIN地形存在裂缝时,创建裙边可避免显示裂缝,能够提升TIN地形效果。

参数:
value - 是否创建地形裙边。

isReceiveShadow

public boolean isReceiveShadow()
获取场景是否接收阴影。

返回:
是否接收阴影。

setReceiveShadow

public void setReceiveShadow(boolean value)
设置场景是否接收阴影。

参数:
value - 是否接收阴影。

isZoomFlyPitching

public boolean isZoomFlyPitching()
获取场景是否放大至地表时执行俯仰操作。

返回:
是否放大至地表时执行俯仰操作。

setZoomFlyPitching

public void setZoomFlyPitching(boolean value)
设置场景是否放大至地表时执行俯仰操作。

参数:
value - 是否放大至地表时执行俯仰操作。

getTerrainInfo

public Scene.TerrainInfo getTerrainInfo()
获取场景中的地形信息,包括最大值,最小值。

返回:
场景中的地形信息。

iServerCacheDirectory

public java.lang.String iServerCacheDirectory()
获取服务器缓存文件路径。

返回:
服务器缓存文件路径。

setServerCacheDirectory

public void setServerCacheDirectory(java.lang.String value)
设置服务器缓存文件路径。

参数:
value - 指定的服务器缓存文件路径。

pseudoCartesianToSpherical

public static Point3D pseudoCartesianToSpherical(Point3D point)
将伪直角坐标转换为经纬度坐标。

参数:
point - 待转换的坐标值。
返回:
经纬度坐标。

outputScenePicture

public boolean outputScenePicture(java.lang.String path,
                                  int xResolution,
                                  int yResolution)
场景输出高分辨率图片。

参数:
path - 指定的图片存放路径。
xResolution - 指定的分辨率x值。
yResolution - 指定的分辨率y值。
返回:
false表示出图失败,true表示成功。

getViewBounds

public Rectangle2D getViewBounds()
获取当前场景的可视范围(Rectangle2D)。

返回:
当前场景的可视范围

getPrjCoordSys

public PrjCoordSys getPrjCoordSys()
获取或设置在平面三维模式时的投影坐标系对象。

目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。

返回:
在平面三维模式时的投影坐标系对象

setPrjCoordSys

public void setPrjCoordSys(PrjCoordSys tarPrjCoordSys)
获取或设置在平面三维模式时的投影坐标系对象。

目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。

参数:
tarPrjCoordSys - 在平面三维模式时的投影坐标系对象

ENUToLonLat

public static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList,
                                                       Point3D lonlat)
将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标。

参数:
ptList - 待转换的点列表。
lonlat - 指定插入点坐标。
返回:
转换后的经纬度坐标列表。

ENUToLonLat

public static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList,
                                                       Point3D lonlat,
                                                       SceneType sceneType)
将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标,在指定场景的球体类型上加载。

参数:
ptList - 待转换的点列表。
lonlat - 指定插入点坐标。
sceneType - 球体类型,包含圆球和椭球。
返回:
转换后的经纬度坐标列表。

lonLatToENU

public static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList,
                                                       Point3D lonlat)
将经纬度的点转成以经纬度作为插入点的ENU坐标。

参数:
ptList - 经纬度的三维点集。
lonlat - 输入一个经纬度的三维点作为插入点。
返回:
ENU坐标的三维点集。

lonLatToENU

public static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList,
                                                       Point3D lonlat,
                                                       SceneType sceneType)
将经纬度的点转成以经纬度作为插入点的ENU坐标,在椭球上加载。

参数:
ptList - 经纬度的三维点集。
lonlat - 输入一个经纬度的三维点作为插入点。
sceneType - 球体类型,包含圆球和椭球。
返回:
ENU坐标的三维点集。

isDepthPrecisionOptimization

public boolean isDepthPrecisionOptimization()
获取场景是否开启深度优化,支持动态切换。

返回:
是否开启深度优化

setDepthPrecisionOptimization

public void setDepthPrecisionOptimization(boolean isDepthPrecisionOptimization)
设置场景是否开启深度优化,支持动态切换。

参数:
isDepthPrecisionOptimization - 是否开启深度优化

isTransparencyOptimization

public boolean isTransparencyOptimization()
获取场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。

返回:
是否开启透明优化

setTransparencyOptimization

public void setTransparencyOptimization(boolean isTransparencyOptimization)
设置场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。

参数:
isTransparencyOptimization - 是否开启透明优化

getCameraFOVMode

public CameraFOVModeType getCameraFOVMode()
获取视场角模式。

返回:

setCameraFOVMode

public void setCameraFOVMode(CameraFOVModeType modeType)
设置视场角模式。

参数:
modeType -

setHTCMoveSpeed

public void setHTCMoveSpeed(double speed)
设置场景速度倍率。

参数:
speed -

projectionImagesToXML

public boolean projectionImagesToXML(java.lang.String xmlPath)
视频投放的结果输出到xml文件

参数:
xmlPath - xml文件全路径。
返回:
一个bool值,返回true表示视频投放的结果输出到xml文件成功,返回false表示失败。

getQuery3D

public Query3D getQuery3D()
获取空间查询对象。

返回:

getENUTransformMatrix

public static Matrix getENUTransformMatrix(Point3D point)
传入椭球插入点的经纬度,获取插入点经纬度矩阵。

参数:
point - 椭球插入点的经纬度
返回:
插入点的经纬度矩阵

cartesianToGeographical

public static Point3D cartesianToGeographical(Point3D point,
                                              SceneType sceneType)
将指定场景类型的地理坐标转成笛卡尔坐标。

参数:
point - 经纬度坐标
sceneType - 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。
返回:
笛卡尔坐标

geographicalToCartesian

public static Point3D geographicalToCartesian(Point3D point,
                                              SceneType sceneType)
将笛卡尔坐标转成指定场景类型的地理坐标。

参数:
point - 待转换的笛卡尔坐标
sceneType - 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。
返回:
地理坐标

getEnvironmentLight

public EnvironmentLight getEnvironmentLight()
获取环境光贴图。

返回:
环境光贴图