WPF - XDL Tutorial (piXoneer XDL Tutorial)
NXPlanetView¸¦ È°¿ëÇÏ¿© 2D ¹× 3D ȯ°æ¿¡¼ ´Ù¾çÇÑ ÃøÁ¤¹æ¹ýÀ» ±¸ÇöÇØ º¸°í, »ç¿ëÀÚ Á¤ÀÇ ¼³Á¤ÇÑ Á¤Á¡¿¡ ´ëÇÑ °Å¸® ¹× °¢µµ ÃøÁ¤µµ ±¸ÇöÇØ º¾´Ï´Ù.
2019. 04.
|
1 »ç¿ëÇϱâ
1.1 XDL ¿£Áø¼³Ä¡ ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio 2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼ »ç¿ë °¡´ÉÇÏ´Ù. ¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2015À» ±âÁØÀ¸·Î ÇÏ°Ú´Ù. 2 NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±âl º» ¿¹Á¦ ÇÁ·Î±×·¥Àº NXPlanetViewÀÇ ±âº» ÃøÁ¤ ¸ðµå¸¦ ¼³Á¤ÇÏ¿© ±æÀÌ, ¸éÀû µîÀ» ÃøÁ¤ÇØ º¸°í, ¼¼ Á¡À» ÀÌ¿ëÇÑ °Å¸® ¹× °¢µµ¸¦ »ç¿ëÀÚ Äڵ带 ÀÌ¿ëÇÏ¿© µµ½ÃÇÏ°í ÃøÁ¤ÇØ º¸µµ·Ï ÇÑ´Ù. 2.1 ±âº» ÇÁ·Î±×·¥ ÀÛ¼º2.1.1 Visual Studio 2015À» ÀÌ¿ëÇÏ¿© ¿¹Á¦ ¡°XDL_PlanetView1¡±ÀÇ ¡°±âº» ÇÁ·Î±×·¥ ÀÛ¼º¡± ¹æ¹ýÀ» Âü°í·Î ±âº» ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.
2.2 ÇÁ·Î±×·¥ µðÀÚÀÎ
2.2.1 MainWindow.xaml â¿¡¼ ±âº»À¸·Î »ý¼ºµÈ Grid ·¹À̾ƿô¿¡ Grid.RowDefinitionÀ» ÀÌ¿ëÇÏ¿© Grid¸¦ µÎ °³·Î ³ª´©¾î »ý¼ºÇÑ´Ù. ù ¹ø° Grid¿¡ Menu¸¦ ¹èÄ¡ÇÑ´Ù.2D measurement´Â ¾Æ·¡¿Í °°Àº ÇϺΠ¸Þ´º¸¦ °®´Â´Ù. ¾Æ·¡ Ç¥¸¦ Âü°íÇÏ¿© ¸Þ´º¸¦ »ý¼ºÇϵµ·Ï ÇÑ´Ù.
3D measurement¿¡¼ÀÇ ¸Þ´º ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù. ¾Æ·¡ÀÇ Ç¥¸¦ Âü°í ÇÏ¿© ¸Þ´º¸¦ ±¸¼ºÇÑ´Ù.
¸¶Áö¸·À¸·Î »ç¿ëÀÚ Á¤ÀÇ ¸Þ´º¸¦ »ý¼ºÇÑ´Ù.
2.2.2 ´ÙÀ½À¸·Î µÎ ¹ø° Row Grid¿¡ Grid.ColumnDefinitionÀ» ÀÌ¿ëÇÏ¿© ¼¼ °³ÀÇ ColumnÀ» »ý¼ºÇÑ´Ù. ù ¹ø° Column¿¡´Â NXPlanetView¿Í NXPlanetLayer¸¦ ¹èÄ¡ÇÏ°í µÎ ¹ø° ColumnÀº GridSpiltterÀ» ³õ´Â´Ù. ¼¼ ¹ø° ColumnÀº NXPlanetView À» ¹èÄ¡ÇÑ´Ù.2.2.3 nxPlanetView3D ÄÁÆ®·ÑÀ» ¼±ÅÃÇÏ°í [¼Ó¼º] âÀÇ ¡°EarthMode¡±¸¦ ¡°Planet3D¡±·Î ¼³Á¤ÇÑ´Ù.NXPlanetViewÀÇ EarthMode´Â ¡°Planet2D¡±ÀÌ´Ù. Earth¸ðµå¸¦ ¡°Planet3D¡±·Î ¼³Á¤Çϸé PlanetView´Â 3Â÷¿ø µµ½Ã ¸ðµå·Î º¯°æµÈ´Ù.
2.2.4 ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
2.3 ±â´É ¹× À̺¥Æ® Ãß°¡2.3.1 Window âÀ» ¼±ÅÃÇÏ°í [¼Ó¼º] â - [À̺¥Æ® ] ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ ¡°Loaded¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯ÇÑ´Ù.¡°Loaded¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯Çϸé, ¡°Window_Loaded¡± ÇÔ¼ö°¡ ÀÚµ¿ÀûÀ¸·Î Ãß°¡µÇ°í ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÀûÀÎ ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï MainWindow.xaml.csÀÇ ÄÚµå·Î À̵¿ÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡¿Í °°ÀÌ Äڵ带 Ãß°¡ÇÑ´Ù.
2.3.2 ¡°2D Measurement/3D Measurement/»ç¿ëÀÚ Á¤ÀÇ¡±ÀÇ ÇÏÀ§ ¸Þ´º¸¦ ¼±ÅÃÇÑ ÈÄ ´õºí Ŭ¸¯ÇÑ´Ù.¸Þ´º¿¡¼ ¸¶¿ì½º·Î ´õºí Ŭ¸¯ÇÏ¸é ¡°Click¡±¿¡ ´ëÇÑ À̺¥Æ® ÇÔ¼ö°¡ ÀÚµ¿ Ãß°¡µÈ´Ù.
2.3.3 °¢ ¸Þ´º¿¡ µû¸¥ nxPlanetView2D¿Í nxPlanetView3DÀÇ ToolboxMode¸¦ ¼³Á¤ÇÑ´Ù.NXPlanetViewÀÇ ÃøÁ¤¸ðµå·Î´Â 2Á¡À» ÀÌ¿ëÇÑ °Å¸® ÃøÁ¤(NXPlanetView.eToolboxMode. DistanceMeasurer), ´ÙÁß Á¡À» ÀÌ¿ëÇÑ °Å¸® ÃøÁ¤(eToolboxMode.PathMeasurer), ´ÙÁß Á¡À» ÀÌ¿ëÇÑ ¸éÀû ÃøÁ¤(eToolboxMode.AreaMeasurer), µÎ Á¡ÀÇ °Å¸®¸¦ ¹ÝÁö¸§À¸·Î ÇÑ ¿øÇü ÃøÁ¤(eToolboxMode.CircleMeasurer), µÎ Á¡À¸·Î ÀÌ·ç¾îÁø º¤ÅÍ¿Í ÁøºÏ¹æÇâ°úÀÇ °¢µµ ÃøÁ¤(eToolboxMode.AngleMeasurer), ¼¼ Á¡À¸·Î ÀÌ·ç¾îÁø °¢µµ ÃøÁ¤(eToolboxMode.AngleMeasurer2) µîÀÌ ÀÖ´Ù. ÃøÁ¤ °á°ú¸¦ Ç¥½ÃÇÏ´Â µ¥¿¡ ÃøÁ¤ ´ÜÀ§¸¦ ¼³Á¤ÇÏ·Á¸é, ¸éÀû¿¡ ´ëÇؼ´Â NXPlanetViewÀÇ ToolboxAreaUnit ¼Ó¼ºÀ» NXPlanetView.eToolboxAreaUnit °ªÀ¸·Î ¼³Á¤ÇÏ¸é µÇ°í, °Å¸®¿¡ ´ëÇؼ´Â NXPlanetViewÀÇ ToolboxDistUnit ¼Ó¼ºÀ» NXPlanetView.eToolboxDistUnit °ªÀ¸·Î ¼³Á¤ÇÑ´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.
2.3.4 »ç¿ëÀÚ Á¤ÀÇ ÃøÁ¤À» À§ÇÑ º¯¼ö¸¦ Ãß°¡ÇÏ°í UserDefinedMeasureMenuItem À̺¥Æ® ÇÔ¼ö¿¡¼ ÃʱâÈÇÑ´Ù.»ç¿ëÀÚ Á¤ÀÇ ÃøÁ¤ ¿©ºÎ¸¦ ¼³Á¤ÇÏ´Â ¡°bool userMeasure¡±¿Í °¢µµ ÃøÁ¤À» À§ÇÑ ¼¼ º¯¼ö ¡°XGeoPoint posMeasure0, posMeasure1, posMeasure2¡±¸¦ »ý¼ºÇÏ°í ÃʱâÈÇÑ´Ù.
2.3.5 °¢µµ ¹× °Å¸®¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼ö¸¦ ÀÌ¿ëÇϱâ À§Çؼ ¡°NXDLcc.dll¡±À» ÂüÁ¶¿¡ Ãß°¡ÇÑ´Ù.WGS84ü¸¦ ¹Ý¿µÇÑ °Å¸®¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼ö´Â Xcc.CalcGeodeticDistanceÀ̸ç, °¢µµ¸¦ ÃøÁ¤ÇÏ´Â ÇÔ¼ö´Â Xcc.CalcGeodeticAngleÀÌ´Ù. À̸¦ À§ÇØ NXDLcc.dllÀ» ÂüÁ¶¿¡ Ãß°¡ÇÏ°í, ¡°using Pixoneer.NXDL.NCC;¡± ±¸¹® ¶ÇÇÑ Ãß°¡ÇÑ´Ù. 2.3.6 nxPlanetLayer2DÀ» ¼±ÅÃÇÏ¿© ¡°OnWndProc¡± À̺¥Æ®¿Í ¡°OnRender¡± À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÏ¿© Äڵ带 ÀÛ¼ºÇÑ´Ù.OnWndProc À̺¥Æ®´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â ViewÀÇ À©µµ¿ì À̺¥Æ®¸¦ ¿ÜºÎ¿¡¼ ¹Þ¾Æ¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. OnRender´Â NXPlanetLayer°¡ Ãß°¡µÇ¾î ÀÖ´Â ViewÀÇ RenderingÀÌ ¿Ï·áµÈ ÈÄ ¾îÇø®ÄÉÀ̼ǿ¡¼ Ãß°¡ÀûÀÎ ÀÛ¾÷À» ±¸ÇöÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ »ç¿ëÇÏ¸é µÈ´Ù. ¿ÞÂÊ ¹öÆ°ÀÌ Å¬¸¯ÇÒ ¶§¸¶´Ù °¢µµ ÃøÁ¤À» À§ÇÑ Á¡À» Â÷·Ê´ë·Î ¼³Á¤ÇÏ°í 3Á¡ÀÌ ¸ðµÎ ¼³Á¤µÇ¸é °è»ê°á°ú¸¦ Visual Studio 2015 Ãâ·Ââ¿¡ Ãâ·ÂÇϵµ·Ï ÇÑ´Ù. ¶ÇÇÑ 2Á¡ ÀÌ»óÀÎ °æ¿ì ȸ鿡 ºÓÀº ¼±À¸·Î µµ½ÃÇÑ´Ù. ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.
2.3.7 ¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.2D MeasurementÀÇ ¡°°Å¸®(Æú¸®¶óÀÎ) ÃøÁ¤¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¸é¼ ÃøÁ¤ÇÏ°íÀÚ ÇÏ´Â Á¤Á¡À» ¼³Á¤ÇÑ´Ù. ¾Æ·¡ ±×¸²°ú °°ÀÌ ÃøÁ¤ °á°ú°¡ °¢ ¼±ºÐ ¿ä¼Ò¿¡ µµ½ÃµÈ´Ù.
3D MeasurementÀÇ ¡°°¢µµ ÃøÁ¤(ÁøºÏ¹æÇâ)¡± ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ nxPlanetView3D À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ°í ¸¶¿ì½º¸¦ ¿òÁ÷À̸é ÁøºÏ¹æÇâ°ú ÀÌ·ç´Â °¢µµ°¡ ȸ鿡 µµ½ÃµÇ¸ç ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´õºí Ŭ¸¯ÇÏ¿© ÃøÁ¤À» Á¾·áÇÑ´Ù.
»ç¿ëÀÚ Á¤ÀÇ ¸Þ´ºÀÇ ¡°°Å¸® ¹× °¢µµ ÃøÁ¤¡±À» ¼±ÅÃÇÑ µÚ nxPlanetView2D À§¿¡¼ ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯Çϸé 2Á¡ ÀÌ»óºÎÅÍ È¸é¿¡ ºÓÀº ½Ç¼±ÀÌ µµ½ÃµÇ°í, 3Á¡ÀÌ ¼±ÅõǸé Visual Studio 2015ÀÇ Ãâ·Ââ¿¡ ÃøÁ¤°á°ú°¡ ³ªÅ¸³´Ù.
ÃøÁ¤°á°úÀÇ ´ÜÀ§´Â °Å¸®ÀÇ °æ¿ì meter, °¢µµÀÇ °æ¿ì ¢ª(degree)ÀÌ´Ù.
|