|
|
NXPlanet
|
public class NXPlanetView : Panel
The NXPlanetView type exposes the following members.
| Name | Description | |
|---|---|---|
| NXPlanetView | NXPlanetView 객체를 생성하고 데이터 멤버를 초기화한다. 기본 생성자. | |
| NXPlanetView(XFrameCaptureBuffer, Boolean) | 화면에 표시하지 않고 프레임버퍼로 그릴 뷰를 만든다. |
| Name | Description | |
|---|---|---|
| AutoFocus | 현재 뷰에서 마우스의 이동에 따라 초점을 강제적으로 가져올지 여부를 확인하거나 설정한다. 다른 컨트롤에(입력 컨트롤 등) 입력초점을 남기려면 false로 설정한다. | |
| AutoRefreshRate | 자동 화면 갱신 속도를 초당 갱신 횟수로 설정한다. 0이면 자동 갱신을 하지 않는다. (기본값: 0) | |
| Brightness | 밝기 조절을 확인하거나 설정한다. | |
| CallbackMode | 콜백 모드: 그래픽 엔진의 주 쓰레드에서 렌더링 엔진을 통해 순차적으로 뷰 렌더링을 제어하는 모드. 콜백 모드가 아닌 쓰레드 모드: 별도의 뷰 전용 쓰레드에서 렌더링을 제어하는 모드. 기본값은 콜백 모드이며 쓰레드 모드는 현재 실험적인 기능이다. | |
| Contrast | 대비 값을 확인하거나 설정한다. | |
| DisplayMode | 배경지도의 색상 도시 모드를 확인하거나 설정한다. | |
| EarthMode | Planet의 유형을 확인하거나 설정한다. | |
| EnableGroundEffect | 안개, 태양광 효과와 같은 그라운드 쉐이더 효과를 적용할지 여부를 설정한다. 기본값은 적용하지 않는 것이고, 이 경우 배경지도가 Planet2D와 같이 원본 영상처럼 보인다. | |
| EnableLightingEffect | 빛 효과(주변광(ambient), 분사광(diffuse), 반사광(specular)) 적용여부를 설정한다. Planet3D 모드에서만 적용된다. | |
| EnableSkyEffect | 안개, 태양광 효과와 같은 하늘 쉐이더 효과를 적용할지 여부를 설정한다. 기본값은 효과를 적용하는 것이고 Planet3D 모드에서만 적용된다. | |
| ForceDraw | true 로 설정하면 View 컨트롤이 보이지 않게 설정되어 있어도 화면 내용을 렌더링한다. | |
| FrameCapture | 프레임 갈무리 버퍼. 프레임 갈무리 버퍼를 지정하면 렌더 화면을 프레임버퍼(FBO)를 사용해서 저장한다. | |
| GridType | 격자 기준선(grid) 유형을 확인하거나 설정한다. | |
| HeightFactor | Planet3D 모드에서의 고도값 증가 또는 감소 비율. 0보다 작거나 1인 경우에는 원본 값을 사용하여 렌더링하도록 한다. | |
| InverseMouseButton | 마우스의 오른쪽 버튼과 왼쪽버튼의 이벤트 기능을 확인하거나 설정한다. 기본값은 false이고 이 경우 마우스 왼쪽 버튼으로 영상 이동을, 오른쪽 버튼으로는 회전을 할 수 있다. | |
| InverseMouseWheel | 마우스 휠을 이용한 확대/축소 이벤트 방향을 확인하거나 설정한다. 기본값은 false이고 이 경우 마우스 휠을 땅길 때 확대되고, 밀 때 축소된다. | |
| LayerCount | 뷰의 레이어 개수를 가져온다. | |
| LayoutMode | 레이아웃의 모드를 확인하거나 설정한다. | |
| MaxDisplayLevel2D | Planet2D 모드에서 배경지도 렌더링을 위한 최대 도시 레벨을 확인한다. | |
| Planet2DProjection | 2D 지도 투영(Map Projection) 방식을 확인한다. 2D 지도 투영 방식은 Planet 환경설정 파일의 Planet2DProjection 태그에서 설정할 수 있다. | |
| RelativeHeight | 상대적인 높이 레이아웃을 확인하거나 설정한다 (0.0~1.0) 의미(0%~100%). | |
| RelativeLeft | 상대적인 왼쪽 레이아웃을 확인하거나 설정한다 (0.0~1.0) 의미(0%~100%). | |
| RelativeTop | 상대적인 오른쪽 레이아웃을 확인하거나 설정한다 (0.0~1.0) 의미(0%~100%). | |
| RelativeWidth | 상대적인 폭 레이아웃을 확인하거나 설정한다 (0.0~1.0) 의미(0%~100%). | |
| RestrictRenerArea | 화면에 도시되는 영역을 제한하거나 설정을 확인한다. | |
| Rotatable | 회전 기능을 확인하거나 설정한다. | |
| Saturation | 채도 값을 확인하거나 설정한다. | |
| ShowControlPoint | Planet3D 모드의 화면을 기울이거나(tilting) 또는 확대/축소할 때 중심점을 도시할지 여부를 설정하거나 확인한다. | |
| ShowGrid | 그리드 레이어의 표시 여부를 확인하거나 설정한다. | |
| ShowPBP | 지명(PBP : Pixoneer Base Placename)을 화면에 도시할지의 여부를 설정하거나 확인한다. | |
| ShowPBV | 지도 벡터(PBV : Pixoneer Base Vector)를 화면에 도시할지의 여부를 설정하거나 확인한다. | |
| ShowStar | 배경 별의 도시 여부를 확인하거나 설정한다. | |
| ShowStatusInfo | 현재 도시 상태 정보를 확인하거나 설정한다. | |
| SingleBaseMap | 개별젹인 배경지도를 사용할 수 있도록 설정하거나 설정여부를 확인한다. | |
| ToolboxAreaUnit | 영역 계산시 단위를 확인하거나 설정한다. | |
| ToolboxDistUnit | 거리 계산시 단위를 확인하거나 설정한다. | |
| ToolboxMode | 도구상자의 작업 모드를 확인하거나 설정한다. | |
| ToolboxOverLayers | 도구 상자의 렌더링 순서를 확인한다. true인 경우 PlanetView에 추가된 레이어가 렌더링된 후 도시된다.
기본값은 false. | |
| ToolboxSet | Planet의 툴박스의 속성을 가져온다. | |
| UsePrivateEffects | 뷰 전용 플래닛 효과 사용 설정. 다중 뷰 환경에서 태양 위치 등 각종 효과를 다르게 줄 때 활용한다. (기본값: false) | |
| ViewAreaFOV | 뷰의 각도를 확인하거나 설정한다. | |
| ViewAreaID | 뷰의 ID를 확인한다. | |
| ViewshedTool | 뷰의 shed 툴을 가져온다. | |
| ZoomCenterMode | 마우스 휠에 따른 화면 확대축소의 기준을 확인하거나 설정한다. | |
| ZoomWheelMode | 마우스 휠에 대한 기본 줌 모드를 설정한다. | |
| ZoomWheelStaticFactor | 마우스 휠에 대한 기본 확대/축소 비율을 설정한다. 0~1 사이값이 유효하다.(0인 경우 확대/축소변환 없음, 1인 경우 2배 확대/축소) |
| Name | Description | |
|---|---|---|
| AddRenderLayer(NXPlanetLayer) | 뷰에 레이어를 추가한다. | |
| AddRenderLayer(NXRenderLayer) | 뷰에 레이어를 추가한다. | |
| CalcSize | 뷰의 사이즈를 다시 계산하며, 엔진에 의해 자동 호출 된다. | |
| CalculateCADRGScale | CADRG 축척에 따른 비율을 계산한다. CADRG NS PixelSize과의 비율을 이용하여 축척을 계산하여 반환한다. | |
| CalculateScale | 현재 뷰의 스케일을 계산한다. | |
| CaptureScreen | 현재 화면을 그대로 캡쳐한다. | |
| CaptureScreen(String, Int32, Int32, Int32, Int32, Int32, Int32, XFrameCaptureBuffereCaptureMode, String, XThread) | Planet View에 도시되어 있는 내용을 해상도 조절하여 저장한다. Planet2D 모드에서만 가능 | |
| CaptureScreenByBlock(String, Int32, Int32, Int32, Int32, Int32, Int32, XFrameCaptureBuffereCaptureMode, NXPlanetView, String, XThread) | Planet View에 도시되어 있는 내용을 임시 PlanetView 를 이용하여 해상도 조절하여 저장한다. 임시 PlanetView 의 Width, Height 는 256 보다 큰 값으로 각각 설정한다. Planet2D 모드에서만 가능 | |
| CaptureScreenByBlock(String, Int32, Int32, Int32, Int32, Int32, Int32, XFrameCaptureBuffereCaptureMode, NXPlanetView, String, XThread, Int32) |
Planet View에 도시되어 있는 내용을 임시 PlanetView 를 이용하여 해상도 조절하여 저장한다. 임시 PlanetView 의 Width, Height 는 256 보다 큰 값으로 각각 설정한다. Planet View에서 선택한 영역의 데이타를 임시 PlanetView에 block별(256*256)로 도시한 뒤 캡쳐한다. 이렇게 캡쳐한 block별 영상을 merge 하여 하나의 영상 파일로 저장한다. Planet2D 모드에서만 가능 | |
| ChangeLayerOrder | 렌더 레이어의 순서를 바꿔준다. | |
| ClearLayer | 뷰에 연결된 모든 레이어를 삭제한다. | |
| GeographicToScreen | 위경도 좌표를 스크린 좌표로 변환한다. | |
| GeographicToWorld | 위경도 좌표를 세계 좌표로 변환한다. | |
| GetCameraState | 현재 카메라의 상태를 가져온다. | |
| GetDrawArgs | PlanetView 컨트롤 및 렌더링 정보가 담긴 Draw argument를 가져온다. | |
| GetFreezeViewArea | 뷰의 고정여부를 가져온다. | |
| GetHandle | 뷰의 컨트롤 핸들을 가져온다. | |
| GetIndexMapMode | 인덱스 맵 모드를 가져온다. | |
| GetLayer | 렌더 레이어를 가져온다. | |
| GetLayerOrder | 현재 렌더 레이어의 순서를 가져온다. | |
| GetMapAlitutdeFromCADRGScale | CADRG 축척을 기준으로 카메라 높이를 계산한다. CADRG NS PixelSize와의 비율로 해상도를 계산하고 이에 대한 카메라 높이를 반환한다. | |
| GetMapAltitude(Double) | 입력 축척에 대응하는 카메라의 높이를 가져온다. | |
| GetMapAltitude(NXPlanetVieweMapScale) | 입력 축척에 대응하는 카메라의 높이를 가져온다. | |
| GetMouseControlMode | 마우스 제어 상태를 가져온다. | |
| GetPTMOverlayLayer | Planet의 지형 관리자로부터 중첩 레이어(NXOverlayLayer)를 가져온다. | |
| GetWOS | 뷰의 WOS를 가져온다( World offset and Scale). | |
| IsUnderMouse | 마우스아래 뷰가 있는지 확인한다. | |
| LookTarget | 바라보는 위치와 거리, 방위각과 고도 값에 의해 현재 카메라 상태를 설정한다. [Planet 3D뷰를 위함] | |
| MaxZoomIn | 고도를 통해 최대 줌인을 설정한다. | |
| MaxZoomOut | 고도를 통해 최대 줌 아웃을 설정한다. | |
| RefreshBaseMap | 특정 위치와 해상도에 대한 기본 배경 지도를 갱신 요청한다. | |
| RefreshLOD | LOD를 기반으로 화면을 갱신하여 도시하도록 요청한다. | |
| RefreshScreen | 화면을 갱신하여 도시하도록 요청한다. | |
| Release | 뷰에 연결된 엔진과 갈무리 버퍼의 연결을 끊고 모든 레이어를 삭제한다. | |
| RemoveRenderLayer(NXPlanetLayer) | 뷰에 레이어를 분리한다. | |
| RemoveRenderLayer(NXRenderLayer) | 뷰에 레이어를 분리한다. | |
| RequestRender(UInt64) | 새로 렌더링을 요청한다. 카메라 설정 등을 바꾸고 요청 식별자를 특정해서 부를 수 있다. | |
| RequestRender(UInt64, Boolean) | 요청 식별자를 특정해서 새로 렌더링을 요청하고 실제 렌더링이 될 때까지 기다릴 수 있다. | |
| ScreenToGeographic | 스크린 좌표를 위경도 좌표로 변환한다. | |
| ScreenToWorld | 스크린 좌표를 세계 좌표로 변환한다. | |
| SetCameraPosition(XGeoPoint, XAngle) | 현재 카메라의 상태를 눈의 위치와 방위각에 의해 설정하며, 기본 기울기의 값은 0 이다 [Planet 2D뷰를 위함] | |
| SetCameraPosition(XGeoPoint, XGeoPoint) | 카메라 위치와 대상(LookAt)의 위치를 입력하여 카메라의 상태를 설정한다. 카메라 위치를 기준으로 up 벡터를 계산하여 사용한다. [Planet 3D뷰를 위함] | |
| SetCameraPosition(XGeoPoint, XGeoPoint, XVertex3d) | 카메라 위치와 대상(LookAt)의 위치를 입력하여 카메라의 상태를 설정한다. [Planet 3D뷰를 위함] | |
| SetCameraPosition(XGeoPoint, XAngle, XAngle, XAngle) | 현재 카메라의 상태를 눈의 위치와 그리고 yaw, pitch, roll에 의해 설정한다. 시선은 아래 방향(D)이다. [Planet 3D뷰를 위함] | |
| SetCameraPosition(XGeoPoint, XAngle, XAngle, XAngle, Boolean) | 현재 카메라의 상태를 눈의 위치와 그리고 yaw, pitch, roll에 의해 설정한다. [Planet 3D뷰를 위함] | |
| SetCameraState | 현재 카메라의 상태를 설정한다. | |
| SetEarthShow | 지구 레이어를 표시 또는 숨기기 여부를 설정한다. | |
| SetFreezeViewArea | 뷰를 고정시킬지 여부를 설정한다 | |
| SetIndexMapMode | 인덱스 맵 모드를 설정한다 | |
| SetLightingFactor | 빛 효과를 위한 주변광, 분사광(diffuse), 반사광(specular) 비율을 설정한다. | |
| SetMouseControlMode | 확대축소, 회전, 이동의 마우스 제어 상태를 설정한다. | |
| SetPBEDefaultDataSet | 새로운 PBE 데이터 소스를 설정한다. 기존에 이용하는 PBE 데이터는 삭제되고 새로운 데이터를 로딩하여 도시한다. | |
| SetPBIDefaultDataSet | 새로운 PBI 데이터 소스를 설정한다. 기존에 도시되는 PBI 데이터는 삭제되고 새로운 데이터를 로딩하여 도시한다. | |
| SetPBPDefaultDataSet | 새로운 PBP 데이터 소스를 설정한다. 기존에 도시되는 PBP 데이터는 삭제되고 새로운 데이터를 로딩하여 도시한다. | |
| SetPBVDefaultDataSet | 새로운 PBV 데이터 소스를 설정한다. 기존에 도시되는 PBV 데이터는 삭제되고 새로운 데이터를 로딩하여 도시한다. | |
| SetRenderArea | 화면에 렌더링되는 영역을 설정한다. Planet2D 모드에서만 적용된다. RestrictRenderArea를 참으로 설정하면 이 함수를 통해 설정된 값으로 렌더링 영역이 제한된다. | |
| SetRenderSkip | 렌더링 주기를 설정한다. | |
| SetSunFollowCamera | 태양의 위치를 카메라의 위치와 동일하게 설정할지를 설정한다. Planet3D 모드에서만 지원 | |
| SetSunPosition(XGeoPoint) | 대기 효과(밤/낮)를 위한 태양의 위치를 설정한다. | |
| SetSunPosition(XGeoPoint, Single) | 대기 효과(밤/낮)를 위한 태양의 위치를 설정한다. | |
| SetUnderMouse | 내부 함수, 마우스 아래에 있는 뷰의 상태를 설정한다. | |
| SetViewZoomCenterPosition | 해당 좌표를 기준으로 마우스 휠 줌을 한다. | |
| SetWorkSpaceHgt | 카메라의 높이 구간을 설정한다 | |
| SetWorkSpaceLat | 카메라의 위도 구간을 설정한다. | |
| SetWorkSpaceLon | 카메라의 경도 구간을 설정한다 | |
| UpdatePBPDataSet | PBP 데이터소스를 갱신한다. | |
| UpdatePBVDataSet | PBV 데이터소스를 갱신한다. | |
| WorldToGeographic | 세계 좌표를 위경도 좌표로 변환한다. | |
| WorldToScreen | 세계 좌표를 스크린 좌표로 변환한다. |
| Name | Description | |
|---|---|---|
| OnInitialized | 뷰의 초기화가 완료되면 발생한다. | |
| OnKeyDown | 키보드의 키가 다운될 때 발생한다. | |
| OnKeyUp | 키보드의 키가 업될 때 발생한다. | |
| OnMouseWheel | 마우스 휠이 사용될 때 발생한다. | |
| OnSetDatasetEnd | 뷰의 배경지도 데이터설정이 끝나면 발생한다. |
partial class FormMain { private Pixoneer.NXDL.NXPlanet.NXPlanetView nxPlanetView2D; private void InitializeComponent() { this.nxPlanetView2D = new Pixoneer.NXDL.NXPlanet.NXPlanetView(); this.nxPlanetView2D.BackColor = System.Drawing.SystemColors.ActiveCaptionText; this.nxPlanetView2D.Brightness = 1F; this.nxPlanetView2D.Contrast = 1F; this.nxPlanetView2D.Dock = System.Windows.Forms.DockStyle.Fill; this.nxPlanetView2D.EarthMode = Pixoneer.NXDL.NXPlanet.NXPlanetView.eEarthMode.Planet2D; this.nxPlanetView2D.LayoutMode = Pixoneer.NXDL.NXPlanet.NXPlanetView.eLayoutMode.Windows; this.nxPlanetView2D.Location = new System.Drawing.Point(0, 0); this.nxPlanetView2D.Name = "nxPlanetView2D"; this.nxPlanetView2D.RelativeHeight = 1D; this.nxPlanetView2D.RelativeLeft = 0D; this.nxPlanetView2D.RelativeTop = 0D; this.nxPlanetView2D.RelativeWidth = 1D; this.nxPlanetView2D.Rotatable = true; this.nxPlanetView2D.Saturation = 1F; this.nxPlanetView2D.ShowGrid = true; this.nxPlanetView2D.ShowStatusInfo = false; this.nxPlanetView2D.Size = new System.Drawing.Size(406, 577); this.nxPlanetView2D.TabIndex = 0; this.nxPlanetView2D.ToolboxAreaUnit = Pixoneer.NXDL.NXPlanet.NXPlanetView.eToolboxAreaUnit.SquareMeter; this.nxPlanetView2D.ToolboxDistUnit = Pixoneer.NXDL.NXPlanet.NXPlanetView.eToolboxDistUnit.Meter; this.nxPlanetView2D.ToolboxMode = Pixoneer.NXDL.NXPlanet.NXPlanetView.eToolboxMode.None; this.nxPlanetView2D.ViewAreaID = 0; } private void FormMain_Load(object sender, EventArgs e) { nxPlanetView2D.SetCameraPosition(XGeoPoint.FromDegree(127.4, 38.0, 1500000), XAngle.FromDegree(0.0)); nxPlanetView2D.AddRenderLayer(ref nxPlanetLayer2D); } private void FormMain_FormClosing(object sender, FormClosingEventArgs e) { if (!Pixoneer.NXDL.Xfn.DesignMode && Pixoneer.NXDL.NXPlanet.NXPlanetView.m_PlanetEngine != null) { Pixoneer.NXDL.NXPlanet.NXPlanetView.m_PlanetEngine.Dispose(); if (nxPlanetLayer2D != null) nxPlanetLayer2D.Dispose(); Pixoneer.NXDL.NXPlanet.NXPlanetView.m_PlanetEngine = null; nxPlanetView2D = null; nxPlanetLayer2D = null; Xfn.Close(); } } private void ADDButton_Click(object sender, EventArgs e) { FolderBrowserDialog dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; string selected = dialog.SelectedPath; string tocFile = string.Empty; string[] SearchFile = Directory.GetFiles(selected, "*.toc"); foreach (string filename in SearchFile) { string ff = filename.ToLower(); if (ff.IndexOf(".toc") >= 0) { tocFile = ff; break; } } if( tocFile == string.Empty ) { MessageBox.Show("Not Exist Toc File", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ListToc.Items.Add(tocFile); bool bRes = NXPlanetEngine.RemovePBIGroup(nRPFGroupID); if (bRes == false) { MessageBox.Show("Remove PBI Group Fail : " + String.Format("{0}", nRPFGroupID), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } nxPlanetView2D.SetPBIDefaultDataSet("1"); XPBTDataGroup rpfGroup = new XPBTDataGroup(); rpfGroup.ID = 2; rpfGroup.Name = "RPF CADRG"; rpfGroup.Show = true; XPBTDataSource src = new XPBTDataSource(); src.Type = ePBTSourceType.RPF; src.CachingFlag = false; src.CachingFolder = ""; for (int i = 0; i < ListToc.Items.Count; i++) { src.URL += ListToc.Items[i] as string; //if( i != ListToc.Items.Count-1 ) src.URL += "|"; } rpfGroup.Sources.Add(src); NXPlanetEngine.AddPBIGroup(ref rpfGroup); nxPlanetView2D.SetPBIDefaultDataSet("1+2"); } private void RemoveButton_Click(object sender, EventArgs e) { if (ListToc.SelectedIndex > 0) { MessageBox.Show("None Selected Item", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (ListToc.Items.Count == 1) { return; } ListToc.Items.RemoveAt(ListToc.SelectedIndex); bool bRes = NXPlanetEngine.RemovePBIGroup(nRPFGroupID); if (bRes == false) { MessageBox.Show("Remove PBI Group Fail : " + String.Format("{0}", nRPFGroupID), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } nxPlanetView2D.SetPBIDefaultDataSet("1"); XPBTDataGroup rpfGroup = new XPBTDataGroup(); rpfGroup.ID = 2; rpfGroup.Name = "RPF CADRG"; rpfGroup.Show = true; XPBTDataSource src = new XPBTDataSource(); src.Type = ePBTSourceType.RPF; src.CachingFlag = false; src.CachingFolder = ""; for (int i = 0; i < ListToc.Items.Count; i++) { src.URL += ListToc.Items[i] as string; //if( i != ListToc.Items.Count-1 ) src.URL += "|"; } rpfGroup.Sources.Add(src); NXPlanetEngine.AddPBIGroup(ref rpfGroup); nxPlanetView2D.SetPBIDefaultDataSet("1+2"); } }