|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.realspace.Scene
public class Scene
三维场景类。
SuperMap iObjects Java 三维场景的主体是一个模拟地球的三维球体(SuperMap Objects Java 以半径为6378137 米的球体来模拟地球),该球体具有地理参考,球体上的点采用经纬度进行定位,并且可以通过三维场景提供的球体上的经纬网格,方便地浏览;同时,使用全球的遥感影像图作为背景覆盖在球体表面,增强三维球体模拟的逼真性;除此之外,三维场景还模拟了地球所处的环境,包括:宇宙的星空,地球的大气环境,地球表面的雾环境等。三维场景还提供了相机的设置,相机可以用来控制对球体的观测角度、方位和观测范围,从而以不同的视角呈现球体的不同部位。
各种三维数据将通过三维场景填加到三维场景的基本组织架构上,即三维数据会依据地理参考信息,填加到SuperMap Objects Java 提供的球体上。
能够添加到三维场景中的数据包括:二维矢量数据集、三维几何对象、影像数据、地形数据、第三方三维模型数据以及KML文件。
新建三维窗口中的默认存在的三维场景
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 |
构造方法详细信息 |
---|
public Scene()
该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl
。
InvalidOperationException
- 通过该构造函数创建的 Scene 对象,不能完成渲染的工作,执行 outputSceneToBitmap()
方法时。public Scene(Workspace workspace)
该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl
。
workspace
- 指定的 workspace 对象。
InvalidOperationException
- 通过该构造函数创建的 Scene 对象,不能完成渲染的工作,执行 outputSceneToBitmap()
方法时。方法详细信息 |
---|
public Camera getCamera()
public void setCamera(Camera camera)
camera
- 当前场景的相机对象。public Atmosphere getAtmosphere()
public boolean isScaleLegendVisible()
public void setScaleLegendVisible(boolean value)
value
- 一个布尔值指定比例尺是否可见。public LatLonGrid getLatLonGrid()
public TrackingLayer3D getTrackingLayer()
public Layer3Ds getLayers()
public Fog getFog()
public void setFog(Fog fog)
fog
- 雾对象。public ScreenLayer3D getScreenLayer()
public Workspace getWorkspace()
public void setWorkspace(Workspace workspace)
workspace
- 三维场景所关联的工作空间。public double getTerrainExaggeration()
public void setTerrainExaggeration(double value)
value
- 地形所夸大的比例。public TerrainLayers getTerrainLayers()
public double getFogVisibleAltitude()
public void setFogVisibleAltitude(double value)
value
- 雾的可见高度。单位为米。public double getFPS()
该数值通常用于判断三维场景的显示效率。
注意:该值小于20时,场景就会出现延迟的现象。
public javax.swing.Timer getTimer()
public double getCameraFOV()
public void setCameraFOV(double value)
value
- 场景相机的视角。单位为度。public double getMaxCameraDistance()
public void setMaxCameraDistance(double value)
value
- 场景相机的最大距离。单位为米。public double getMinCameraDistance()
public void setMinCameraDistance(double value)
value
- 场景相机的最小距离。单位为米。public java.lang.String getName()
public void setName(java.lang.String value)
value
- 当前三维场景的名称。public boolean isOverlapDisplayed()
这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。
public void setOverlapDisplayed(boolean value)
这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。
value
- 压盖时是否显示。@Deprecated public void fly(Geometry targetObject, FlyingMode flyingMode)
当 FlyingMode
模式设置为 FLYINGPLAY
时, 指定的目标对象(targetObject)只能是 GeoLine
或 GeoLine3D
对象。
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(); }
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(); }
@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(); }
public void fly(Camera camera, int milliseconds)
camera
- 指定的目标相机对象。milliseconds
- 相机飞行到指定目的地所耗费的时间。单位为毫秒。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(); }
public Point3D pixelToGlobe(java.awt.Point point)
若屏幕点不在地球范围内则返回的三维点经纬度和高度为 Double.NaN,即不是数字的值。
point
- 将被转换的屏幕点对象。
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(); }
public java.awt.Point globeToPixel(Point3D point)
当指定的三维点对象不在当前相机范围内的时候,改方法将返回(-1,-1),表示此点不可见。
point
- 将被转换的三维点坐标对象,该点对象包含了经纬度和海拔高度信息。
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(); }
public double getAltitude(double longitude, double latitude)
longitude
- 地面上某点的经度。单位为度。latitude
- 地面上某点的纬度。单位为度。
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); }
public void pan(double offsetLongitude, double offsetLatitude)
下图为对三维场景进行平移操作的效果图:
offsetLongitude
- 经向平移距离。单位为度。offsetLatitude
- 纬向平移距离。单位为度。public void zoom(double ratio)
下图为对三维场景进行缩放操作的效果图:
ratio
- 缩放比例。缩放比例的范围为负无穷大到1,其中当参数为(0,1)之间的数值时,场景按比例放大;参数为小于0数值时,场景按比例缩小,但在缩小到一定程度后不会再缩小。public void TestSceneZoom(Scene sceneObject) { // 按照一定的比例缩放当前三维场景 sceneObject.zoom(0.5); }
public void ensureVisible(Rectangle2D visibleBounds)
visibleBounds
- 需要全幅显示的经纬度范围。public void TestSceneEnsureVisible(Scene sceneObject) { // 根据给定的经纬度范围显示相应区域的三维场景 Rectangle2D viewRegion = new Rectangle2D(100, 20, 106, 36); sceneObject.ensureVisible(viewRegion); }
public void ensureVisible(Rectangle2D visibleBounds, int milliseconds, double height)
visibleBounds
- 需要全幅显示的经纬度范围。milliseconds
- 到达指定目的地所耗费的时间。单位为毫秒。height
- 停留的相机高度。public void pitch(double angle)
下图为对三维场景进行一定角度倾斜的效果图:
angle
- 角度。单位为度。public void viewEntire()
下图为对三维场景进行全幅显示操作的效果图:
Scene
类的示例。public void refresh()
Scene
类的示例。public boolean fromXML(java.lang.String xml)
xml
- XML 数据。
public java.lang.String toXML()
Scene
类的示例。public Selection3D[] findSelection(boolean hasObjectSelected)
该方法返回的是 Selection3D
类对象的数组,每一个 Selection3D
类对象为三维场景中一个图层中所有处于选中状态的对象集合。
hasObjectSelected
- 指定三维场景中是否有对象被选中。当设置为 true,该方法返回的是场景中有选择对象的图层的选择集;设置为 false 时,返回场景中所有图层的选择集。
Selection3D
类对象数组,其中,每一个 Selection3D
类对象为三维场景中一个图层中所有处于选中状态的对象集合。public boolean open(java.lang.String sceneName)
sceneName
- 指定的三维场景的名称。
public boolean open(java.lang.String strServerUrl, java.lang.String strSceneName)
strServerUrl
- iServer三维服务的URL。strSceneName
- 指定的三维场景名称。
public void close()
public void addFlownListener(FlownListener l)
FlownEvent
)的监听器。
l
- 一个用于接收飞行结束事件的监听器。public void removeFlownListener(FlownListener l)
FlownEvent
)的监听器。
l
- 一个用于接收飞行结束事件的监听器。public void roll(double angle)
下图为三维场景绕场景中心进行一定角度旋转的效果图:
angle
- 指定的角度。单位为度。public void rollEye(double angle)
下图为三维场景绕视点进行一定角度旋转的效果图:
angle
- 指定的角度。单位为度。public double computeSphericalDistance(Point2D point1, Point2D point2)
point1
- 需要进行距离计算的一个点。point2
- 需要进行距离计算的另外一个点。
public double computeSphericalArea(Point2Ds points)
points
- 构成需要进行计算面积的多边形的点集合对象。
public boolean roll(Point2D center, double angle)
下图为三维场景绕场景中心(即某个中心点)进行一定角度旋转的效果图:
center
- 指定的中心点,该点采用经纬度坐标来表示。angle
- 三维场景的旋转角度。单位为度。
public void stopFly()
public java.awt.image.BufferedImage outputSceneToBitmap()
BufferedImage
对象。@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(); }
@Deprecated public void fly(Camera camera, int milliseconds, boolean isDirect)
当目的地不在当前视野内时,isDirect 为 true 则直接飞过去,为 false 则先拉起再飞过去。
camera
- 指定的目标对象。milliseconds
- 相机飞行到指定目的地所耗费的时间。单位为毫秒。isDirect
- 决定是直接飞行过去还是先拉起再飞行过去。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(); }
public void addSceneOpenedListener(SceneOpenedListener l)
SceneOpenedEvent
)的监听器。
l
- 一个用于接收三维场景打开事件的监听器。public void removeSceneOpenedListener(SceneOpenedListener l)
SceneOpenedEvent
)的监听器。
l
- 一个用于接收三维场景打开事件的监听器。public void addSceneClosedListener(SceneClosedListener l)
SceneClosedEvent
)的监听器。
l
- 一个用于接收三维场景关闭事件(SceneClosedEvent
)的监听器。public void removeSceneClosedListener(SceneClosedListener l)
SceneClosedEvent
)的监听器。
l
- 一个用于接收三维场景关闭事件的监听器。public boolean isCrossVisible()
public void setCrossVisible(boolean value)
value
- 是否显示三维场景窗口中心位置标记。@Deprecated public void flyPlay(Geometry line, double speedRatio, double distance)
GeoLine
和 GeoLine3D
类型的线对象。
下图为沿着指定的三维线几何对象飞行的效果图:
line
- 指定的沿线飞行的参考线。(注意:只支持 GeoLine
和 GeoLine3D
类型)speedRatio
- 指定的默认飞行速度的倍数。distance
- 飞行中 Camera 与线上的观察点的距离。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(); }
public void flyCircle(Geometry geometry, double speedRatio)
下图为几何对象围绕指定地点旋转飞行的效果图:
geometry
- 指定的目标几何对象speedRatio
- 指定的默认飞行速度的倍数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(); }
public void flyCircle(Geometry geometry, double speedRatio, boolean isCycle)
geometry
- 目标几何对象speedRatio
- 飞行默认速度的倍数isCycle
- 是否循环旋转public void ensureVisible(Rectangle2D visibleBounds, int milliseconds)
visibleBounds
- 需要全副显示的经纬度范围。milliseconds
- 到达指定目的地所耗费的时间。单位为毫秒。public Ocean getOcean()
public void dispose()
public static Rectangle2D toBounds(int level, int columnIndex, int rowIndex)
level
- 指定的缓存层数。columnIndex
- 指定的缓存图片的列索引。rowIndex
- 指定的缓存图片的行索引。
public static Rectangle2D ceilBounds(Rectangle2D bounds, int level)
在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法对手动生成的缓存范围进行规整,以避免指定地理范围(bounds)的缓存图片的边界出现部分白图现象。
bounds
- 某层数下指定的生成缓存的地理范围。level
- 指定的层数。
public void ensureVisible(Layer3D layer3d)
layer3d
- 需要显示的图层。public boolean isStereoEnabled()
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); }
public StereoMode getStereoMode()
ANAGLYPHIC
public void setStereoMode(StereoMode stereoMode)
stereoMode
- 立体显示的模式。setStereoEnabled()
方法的示例。public double getStereoEyeSeparation()
public void setStereoEyeSeparation(double value)
两摄像机的距离在正视差模式(POSITIVE_PARALLAX)
下的单位为厘米,因此正视差模式下,在大范围通过该方法设置两摄像机之间的距离没有效果。
value
- 立体显示模式时两摄像机的距离。单位为米。setStereoEnabled()
方法的示例。public double getStereoEyeAngle()
该方法仅在正视差模式下有效,表示两摄像机的交叉角度大小,其意义在于调整双目视线的交点位置,可以增加或减弱景物的景深感。
public void setStereoEyeAngle(double value)
value
- 立体显示模式时两摄像机的交叉角度。单位为度。setStereoEnabled()
方法的示例。public ParallaxMode getParallaxMode()
POSITIVE_PARALLAX
public void setParallaxMode(ParallaxMode parallaxMode)
parallaxMode
- 立体显示模式的视差模式。@Deprecated public boolean isFullScreen()
@Deprecated public void setFullScreen(boolean value)
value
- 是否以全屏幕的方式绘制场景。public boolean isStereoModeSupported(StereoMode mode)
mode
- 指定的需要判断的立体显示模式。
public Underground getUnderground()
public GlobalImage getGlobalImage()
public void setAutoLockTarget(GeoModel geoModel)
当场景不断变化时,通过锁定跟踪对象,可使相机相对于被锁定对象的相对位置保持不变。
geoModel
- 锁定对象public Point3D getAutoLockOffset()
通过调用该方法,可以在锁定目标对象时,改变相机相对于锁定对象的x轴、y轴和z轴偏移量,该偏移量暂时只适用于z轴。
public void setAutoLockOffset(Point3D point3D)
通过调用该方法,可以在锁定目标对象时,改变相机对象相对于锁定对象的x轴、y轴、z轴偏移量,该偏移量暂时只适用于z轴。
通过为point3D对象的x、y、z赋值来设置相机相对于锁定对象的偏移量。
point3D
- 相机相对于锁定对象的偏移量。public java.lang.String getIServerCacheDirectory()
public void setIServerCacheDirectory(java.lang.String value)
value
- iServer服务缓存路径。public void setFirstPersonCamera(Camera value)
setCamera()
方法。
setCamera() 方法是以屏幕中心点作为基准点设置场景位置的。
setFirstPersonCamera() 方法是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。
value
- 欲设置的第一人称相机参数结构体。public Camera getFirstPersonCamera()
getCamera()
方法。
getCamera() 方法返回的是以屏幕中心点作为基准点的场景位置。
getFirstPersonCamera() 方法返回的是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。
public Sun getSun()
public FlyManager getFlyManager()
public Point3D pixelToGlobe(java.awt.Point point, PixelToGlobeMode mode)
point
- 指定的屏幕点对象。mode
- 屏幕点对象转换为三维点对象的求交类型。
public boolean isFirstPersonView()
public void setFirstPersonView(boolean value)
value
- 当前场景是否被设置为第一人称操作模式。public double getShadowVisibleDistance()
public void setShadowVisibleDistance(double value)
value
- 阴影的可见距离。单位为米。public SceneType getSceneType()
public void fly(LookAt lookAt)
lookAt
- 指定的LookAt相机对象。public void fly(LookAt lookAt, int milliseconds)
lookAt
- 指定的LookAt相机对象。milliseconds
- 相机飞行到指定目的地所耗费的时间。单位为毫秒。public LookAt getLookAt()
public void setLookAt(LookAt lookAt)
lookAt
- 指定的相机对象。public Splitter addSplitter(java.lang.String name)
name
- 指定的分隔条名称。
public Splitter getSplitter(java.lang.String name)
name
- 指定的分隔条名称。
public boolean removeSplitter(java.lang.String name)
name
- 指定的分隔条名称。
public int getSplitterCount()
public Slider addSlider(java.lang.String name)
name
- 指定的滑块名称。
public Slider getSlider(java.lang.String name)
name
- 指定的滑块名称。
public boolean removeSlider(java.lang.String name)
name
- 指定的滑块名称。
public int getSliderCount()
public void setSceneType(SceneType value)
value
- 三维场景的类型。public static Point3D sphericalToCartesian(Point3D point)
point
- 待转换的坐标值。
public static Point3D sphericalToPseudoCartesian(Point3D point)
point
- 待转换的坐标值。
public double getHeight(double longitude, double latitude)
longitude
- 指定点的经度。latitude
- 指定点的纬度。
public double getHeight(double longitude, double latitude, boolean trackingLayerHeightAvailable)
longitude
- 指定点的经度。latitude
- 指定点的纬度。trackingLayerHeightAvailable
- 指定跟踪图层是否参与拾取高度。
public float getBrightness()
public void setBrightness(float value)
value
- 指定的亮度。public float getConstrast()
public void setConstrast(float value)
value
- 指定的对比度。public float getGamma()
public void setGamma(float value)
value
- 指定的明度。public float getHue()
public void setHue(float value)
value
- 指定的色相。public float getSaturation()
public void setSaturation(float value)
value
- 指定的饱和度。public boolean isCreateSkirt()
public void setCreateSkirt(boolean value)
value
- 是否创建地形裙边。public boolean isReceiveShadow()
public void setReceiveShadow(boolean value)
value
- 是否接收阴影。public boolean isZoomFlyPitching()
public void setZoomFlyPitching(boolean value)
value
- 是否放大至地表时执行俯仰操作。public Scene.TerrainInfo getTerrainInfo()
public java.lang.String iServerCacheDirectory()
public void setServerCacheDirectory(java.lang.String value)
value
- 指定的服务器缓存文件路径。public static Point3D pseudoCartesianToSpherical(Point3D point)
point
- 待转换的坐标值。
public boolean outputScenePicture(java.lang.String path, int xResolution, int yResolution)
path
- 指定的图片存放路径。xResolution
- 指定的分辨率x值。yResolution
- 指定的分辨率y值。
public Rectangle2D getViewBounds()
public PrjCoordSys getPrjCoordSys()
目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。
public void setPrjCoordSys(PrjCoordSys tarPrjCoordSys)
目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。
tarPrjCoordSys
- 在平面三维模式时的投影坐标系对象public static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList, Point3D lonlat)
ptList
- 待转换的点列表。lonlat
- 指定插入点坐标。
public static java.util.ArrayList<Point3D> ENUToLonLat(java.util.ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
ptList
- 待转换的点列表。lonlat
- 指定插入点坐标。sceneType
- 球体类型,包含圆球和椭球。
public static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList, Point3D lonlat)
ptList
- 经纬度的三维点集。lonlat
- 输入一个经纬度的三维点作为插入点。
public static java.util.ArrayList<Point3D> lonLatToENU(java.util.ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
ptList
- 经纬度的三维点集。lonlat
- 输入一个经纬度的三维点作为插入点。sceneType
- 球体类型,包含圆球和椭球。
public boolean isDepthPrecisionOptimization()
public void setDepthPrecisionOptimization(boolean isDepthPrecisionOptimization)
isDepthPrecisionOptimization
- 是否开启深度优化public boolean isTransparencyOptimization()
public void setTransparencyOptimization(boolean isTransparencyOptimization)
isTransparencyOptimization
- 是否开启透明优化public CameraFOVModeType getCameraFOVMode()
public void setCameraFOVMode(CameraFOVModeType modeType)
modeType
- public void setHTCMoveSpeed(double speed)
speed
- public boolean projectionImagesToXML(java.lang.String xmlPath)
xmlPath
- xml文件全路径。
public Query3D getQuery3D()
public static Matrix getENUTransformMatrix(Point3D point)
point
- 椭球插入点的经纬度
public static Point3D cartesianToGeographical(Point3D point, SceneType sceneType)
point
- 经纬度坐标sceneType
- 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。
public static Point3D geographicalToCartesian(Point3D point, SceneType sceneType)
point
- 待转换的笛卡尔坐标sceneType
- 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。
public EnvironmentLight getEnvironmentLight()
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |