XDL Manual

XDL MapView È°¿ë ù¹ø°

(piXoneer XDL Tutorial)

 

 

 

 

 

 

NXMapView¸¦ È°¿ëÇÏ¿© À§¼º¿µ»ó »ùÇÃÀÇ Æ¯Á¤ ¹êµå¸¦ ¼±ÅÃÇØ

RGB³ª Gray·Î µµ½ÃÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¼³¸íÇÕ´Ï´Ù.

 

 

2017. 01.

¼öÁ¤ 2019. 02.

   

 

 

¸ñÂ÷

 

1      »ç¿ë Çϱâ... 4

1.1    XDL ¿£Áø... 4

1.2    NXMapView»ç¿ëÀ» À§ÇÑ °³¹ß ȯ°æ ¼³Á¤... 4

1.3    ¸Þ´º »ý¼ºÇϱâ... 9

1.4    NXMapViewÄÁÆ®·Ñ ¿Ã¸®±â... 9

1.5    NXMapViewÀ̹ÌÁö ÆÄÀÏ µµ½ÃÇϱâ... 13

 

 

 


 1      »ç¿ë Çϱâ

1.1    XDL ¿£Áø

¼³Ä¡ ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio 2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼­ »ç¿ë °¡´ÉÇÏ´Ù.

¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2010À» ±âÁØÀ¸·Î ÇÏ°Ú´Ù.

 

1.2    NXMapView»ç¿ëÀ» À§ÇÑ °³¹ß ȯ°æ ¼³Á¤

1.2.1         Visual Studio 2010À» ½ÇÇàÇÑ´Ù.

1.2.2         ¸Þ´º [ÆÄÀÏ]-[»õ·Î ¸¸µé±â]-[ÇÁ·ÎÁ§Æ®]¸¦ ¼±ÅÃÇÑ´Ù.

 

 

1.2.3         [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚ¿¡¼­ ¿ÞÂÊÀÇ ÅÛÇø´ â¿¡¼­ ¡°Visual C#¡±À» ¼±ÅÃÇÏ°í, ´ëÈ­»óÀÚ Áß°£ÀÇ ¸ñ·Ï¿¡¼­ ¡°Windows Forms ÀÀ¿ë ÇÁ·Î±×·¥¡±À» ¼±ÅÃÇÑ´Ù. ÇÁ·ÎÁ§Æ®ÀÇ À̸§À» »ç¿ëÀÚ°¡ ¿øÇÏ´Â °æ·Î·Î À̵¿ÇÑ ´ÙÀ½ ¡°XDL_MapView1¡± ÀÔ·ÂÇÏ°í [»õ ÇÁ·ÎÁ§Æ®] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

ÇÁ·ÎÁ§Æ® À̸§Àº Visual Studio°¡ »ý¼ºÇÏ´Â À̸§À¸·Î ±âº»À¸·Î ÇÏ°Ú´Ù. ÀÌ ¹®¼­¿¡¼­´Â ´ëÈ­»óÀÚ ¿À¸¥ÂÊ ¾Æ·¡¿¡ ÀÖ´Â ¡°¼Ö·ç¼Ç¿ë µð·ºÅ͸® ¸¸µé±â¡±´Â ¼±ÅÃÇÏÁö ¾Ê°Ú´Ù.

¡°È®ÀΡ± ¹öÆ°À» ´©¸£¸é ÇÁ·ÎÁ§Æ®°¡ ±âº»ÀûÀ¸·Î »ý¼ºµÇ°í, È­¸é¿¡ FormÀ» µðÀÚÀÎÇÒ ¼ö ÀÖ´Â È­¸éÀÌ ¶á´Ù. ¸¸¾à ¾Æ·¡¿Í °°ÀÌ Form µðÀÚÀÎÈ­¸éÀÌ »ý¼ºµÇÁö ¾ÊÀ¸¸é, [¼Ö·ç¼Ç Ž»ö±â] â¿¡¼­ ¡°Form1.cs¡±¸¦ ¸¶¿ì½º ´õºíŬ¸¯À» ÇÏ¿© µðÀÚÀÎÈ­¸éÀ» ¿¬´Ù.

 

 

1.2.4         [µµ±¸»óÀÚ]ÀÇ [Ç׸ñ¼±ÅÃ]À» ¼±ÅÃÇÑ´Ù.

 

 

¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ¾Æ·¡¿Í °°ÀÌ [µµ±¸»óÀÚ Ç׸ñ¼±ÅÃ] ´ëÈ­»óÀÚ°¡ ³ªÅ¸³ª¸ç, ´ëÈ­»óÀÚ ¾Æ·¡ÂÊ¿¡ ÀÖ´Â ¡°Ã£¾Æº¸±â¡± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

 

¿­±â ´ëÈ­»óÀÚ¿¡¼­ ¡°C:\Pixoneer\XDL1.2\bin\NXMap.dll¡± ÆÄÀÏÀ» ¼±ÅÃÇÑ ÈÄ ¡°¿­±â¡±¸¦ Ŭ¸¯ÇÏ°í, [µµ±¸»óÀÚÇ׸ñ¼±ÅÃ] ´ëÈ­»óÀÚÀÇ ¡°È®ÀΡ± ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

 

.Net Framework ±¸¼º¿ä¼Ò ÅÇ¿¡ ´Ù¾çÇÑ ·¹À̾î¿Í NXMapView°¡ ¼³Á¤µÈ´Ù. ¡°È®ÀΡ±¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

 [µµ±¸»óÀÚ] ¿¡ ´Ù¾çÇÑ MapLayerµé°ú NXMapView°¡ Ãß°¡µÊÀ» È®ÀÎÇÑ´Ù.

 

1.2.5         ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]ÀÇ ¿À¸¥ÂÊ ¸¶¿ì½º Ŭ¸¯À» ÅëÇØ [ÂüÁ¶Ãß°¡]¸¦ ¼±ÅÃÇÑ´Ù.

1.2.6         [ã¾Æº¸±â]ÅÇÀ¸·Î À̵¿ÇÑ ÈÄ ¡°C:\Pixoneer\XDL1.2\bin\¡±°æ·Î·Î À̵¿ÇÑ´Ù. CtrlÅ°¸¦ ´©¸¥ ä ¿¬¼ÓÀ¸·Î ¡°NXDL.dll¡±, ¡°NXDLcc.dll¡±, ¡°NXDLgr.dll¡±, ¡°NXDLio.dll¡±, ¡°NXDLrs.dll¡±À» ¼±ÅÃÇÑ ÈÄ ¡°È®ÀΡ±¹öÆ°À» ¼±ÅÃÇÑ´Ù.

 

 

1.2.7         ¼Ö·ç¼Ç Ž»ö±âÀÇ ÇÁ·ÎÁ§Æ® ÇϺÎÀÇ [ÂüÁ¶]Ç׿¡ NXDL, NXDLcc, NXDLgr, NXDLio, NXDLrs°¡ Ãß°¡µÇ¾úÀ½À» È®ÀÎÇÑ´Ù.

 

 

1.3    ¸Þ´º »ý¼ºÇϱâ

1.3.1         [µµ±¸»óÀÚ]ÀÇ  MenuStripÀ» ¼±ÅÃÇÏ°í Form1ÀÇ »ó´ÜºÎ¿¡ µå·¡±×ÇÏ¿© À§Ä¡½ÃŲ´Ù.

 

  

 

1.4    NXMapViewÄÁÆ®·Ñ ¿Ã¸®±â

1.4.1         [µµ±¸»óÀÚ]ÀÇ [ÀϹÝ]¿¡¼­ ¸¶¿ì½º ¿ÞÂÊ Å¬¸¯ÇÏ¿© NXMapView¸¦ ¼±ÅÃÇÑ´Ù.

 

 

1.4.2         NXMapView¸¦ ¼±ÅÃÇÑ Ã¤·Î µå·¡±×ÇÏ¿© Form1¿¡ ¿Ã¸° ÈÄ ¼±Åà ÇØÁ¦ÇÑ´Ù. Form1À§¿¡ NXMapView ÄÁÆ®·ÑÀÌ »ý¼ºµÈ´Ù.

1.4.3           »ý¼ºµÈ NXMapViewÄÁÆ®·ÑÀÇ ¿ì »ó´Ü¿¡ ¢º±âÈ£¸¦ Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ [ºÎ¸ðÄÁÅ×ÀÌÅÍ¿¡¼­ µµÅ·]¹öÆ°ÀÌ »ý¼ºµÇ´Âµ¥ ÀÌ ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.

 

1.4.4           NXMapVeiwÄÁÆ®·ÑÀÌ Form1¿¡ µµÅ·ÀÌ µÇ¾î ÀüüÄÁÆ®·Ñ ¿µ¿ªÀ¸·Î È®´ë µÈ´Ù.

 

 

Fom1.Designer.cs¿¡¼­ º¸¸é ´ÙÀ½°ú °°ÀÌ ÄÁÆ®·Ñ nxMapView1 ¸â¹öº¯¼ö°¡ Ãß°¡µÊÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. NXMapView´Â ´Ù¾çÇÑ NXMapLayerXXXXXµéÀ» ´ãÀ»¼ö ÀÖ´Â ÄÁÅ×À̳ÊÀÌ´Ù. Áï, NXMapView´Â ´Ù¾çÇÑ °èÃþÀÇ ·¹À̾î·Î ±¸¼ºÇÏ¿© ¿µ»óµµ½Ã¿¡ ´ëÇÑ ´Ù¾çÇÑ ±â´ÉÀ» ±¸ÇöÀÌ °¡´ÉÇÏ´Ù.

 

¡¦
private System.Windows.Forms.MenuStrip menuStrip1;
private Pixoneer.NXDL.NXMap.NXMapView nxMapView1;
¡¦

 

1.4.5           [µµ±¸»óÀÚ] [ÀϹÝ]¿¡¼­ NXMapLayerComposites¸¦ µå·¡±×ÇÏ¿© NXMapViewÄÁÆ®·Ñ À§¿¡¼­ µå·¡±× ÇØÁ¦ÇÑ´Ù. [Composites Layer] ÄÁÆ®·ÑÀÌ »ý¼ºµÈ´Ù.

 

Fom1.Designer.cs¿¡¼­ º¸¸é ´ÙÀ½°ú °°ÀÌ ÄÁÆ®·Ñ nxMapLayerComposites1 ¸â¹öº¯¼ö°¡ Ãß°¡µÊÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. NXMapLayerCompositesÀº ¿µ»óÀÇ ¹êµåµéÀ» ÇÕ¼º½ÃÄѼ­ È­¸é¿¡ µµ½ÃÇÏ´Â ±â´ÉÀ» ¼öÇàÇÏ´Â ÄÁÆ®·ÑÀÌ´Ù.

 

¡¦
private System.Windows.Forms.MenuStrip menuStrip1;
private Pixoneer.NXDL.NXMap.NXMapView nxMapView1;
private Pixoneer.NXDL.NXMap.NXMapLayerComposites nxMapLayerComposites1;

 

1.4.6           [F5]Å°º¸µå¸¦ ´­·¯ ½ÇÇàÇØ º»´Ù. ´ÙÀ½°ú °°ÀÌ °ËÁ¤»ö È­¸éÀÌ ³ª¿Â´Ù.

 

 

 

1.5    NXMapViewÀ̹ÌÁö ÆÄÀÏ µµ½ÃÇϱâ

1.5.1           ¸Þ´º¿¡ [File]°ú [Open]¸¦ ÀÔ·ÂÇÏ°í [Open]¸Þ´º¸¦ ´õºí Ŭ¸¯ÇÏ¿© ÀÚµ¿ ÇÔ¼ö¸¦ »ý¼ºÇÑ´Ù.

 

 

1.5.2           »ç¿ëÇÒ ³×ÀÓ½ºÆäÀ̽º¸¦ Ãß°¡ÇÑ´Ù.

using Pixoneer.NXDL;        // ±âº» ÇÔ¼ö °ü·Ã ±â´É
using Pixoneer.NXDL.NCC;    // ÁÂÇ¥ ½Ã½ºÅÛ °ü·Ã ±â´É
using Pixoneer.NXDL.NIO;    // ÆÄÀÏ ÀÔÃâ·Â °ü·Ã ±â´É
using Pixoneer.NXDL.NRS;    // Remote Sensing °ü·Ã ±â´É
using Pixoneer.NXDL.NGR;    // Graphic°ü·Ã ±â´É
using Pixoneer.NXDL.NXMap;  // MapView °ü·Ã ±â´É

 

1.5.3           ¿µ»ó ÀÔÃâ·ÂÀ» ´ã´çÇÒ XRasterIO°´Ã¼¸¦ ¼±¾ðÇÏ°í Form1»ý¼ºÀÚ¿¡¼­ °´Ã¼¸¦ »ý¼ºÇÏ°í ÃʱâÈ­¸¦ ¼öÇàÇÑ´Ù.

public partial class Form1 : Form
{
        public XRasterIO m_RasterIO;    //¿µ»óÀÇ ÀÔÃâ·ÂÀ» ´ã´çÇÒ °´Ã¼ ¼±¾ð

        public Form1()
        {
            InitializeComponent();

            String StrError;
            m_RasterIO = new XRasterIO();   // °´Ã¼ »ý¼º
            if (m_RasterIO.Initialize(out StrError) == false// ¿µ»ó ÀÔÃâ·Â °´Ã¼ ÃʱâÈ­
            {
                MessageBox.Show(StrError);
            }

            nxMapLayerComposites1.LayerVisible = true; // ¿µ»ó·¹À̾ º¸À̵µ·Ï ¼Ó¼ºÀ» º¯°æ
        }

1.5.4           ÇÔ¼ö ¾È¿¡ ÆÄÀÏÀ» OpenÇÏ¿© µµ½ÃÇÒ Äڵ带 ÀÔ·ÂÇÑ´Ù

private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 1. ÆÄÀÏ OpenÀ» ¼öÇàÇÑ´Ù.
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "XDM file(*.xdm)|*.XDM||";
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() != DialogResult.OK) return;

    string strFilePath = openFileDialog.FileName;

    // 2. FileDriverManger¸¦ ÅëÇØ XRSLoadFileÀ» »ý¼ºÇÑ´Ù.
    string strError;
    XRSLoadFile xrsFileInput = m_RasterIO.LoadFile(strFilePath, out strError, false, eIOCreateXLDMode.All_NoMsg);
    if (xrsFileInput == null) return;

    // 3. ±âÁ¸¿¡ »ý¼ºµÇ¾î ÀÖ´Â Composite°¡ ÀÖ´Ù¸é LockÀ» °É¾î µµ½Ã ¼öÇàÀ» Àá½Ã ¸ØÃá´Ù. 
    nxMapLayerComposites1.Lock();

    // 4. nxMapLayerComposites1°³Ã¼¿¡ Á¸ÀçÇÏ´Â XDMCompManager¸¦ ²¨³½´Ù. XDMCompManager°¡ ½ÇÁ¦·Î CompositeµéÀÇ °ü¸®¸¦ ¼öÇàÇÑ´Ù. 
    XDMCompManager xdmCompManager = nxMapLayerComposites1.GetXDMCompManager();

    // 5. ±âÁ¸¿¡ Composite°¡ Á¸ÀçÇÑ´Ù¸é ¸ðµÎ »èÁ¦ÇÑ´Ù.
    for (int i = 0; i < xdmCompManager.NumComp; i++)
    {
        XDMComposite comp = xdmCompManager.GetXDMCompositeAt(i);
        comp.Dispose();
    }
    xdmCompManager.RemoveXDMCompositeAll();

    // 6. XDMComposite¸¦ »ý¼ºÇÑ´Ù. .
    XDMComposite newComp = new XDMComposite();

    // 7. ·ÎµùµÈ ÆÄÀÏ·Î ºÎÅÍ ¹êµåÀÇ °¹¼ö°¡ Ä®¶ó·Î ±×¸±°ÍÀÎÁö Èæ¹éÀ¸·Î ±×¸±°ÍÀÎÁö¸¦ ÆÇ´ÜÇÑ´Ù.
    // ¸¸¾à 3°³ ¹Ì¸¸ÀÎ °æ¿ì´Â Gray¸ðµå·Î ±×¸®°í, 3°³ ÀÌ»óÀÎ °æ¿ì´Â Ä®¶ó·Î ±×¸°´Ù.
    int nNumBand = xrsFileInput.NumBand;
    if (nNumBand < 3)   // 3°³ ¹Ì¸¸ÀÇ ¹êµå¸¦ °¡Áö°í ÀÖ´Â °æ¿ì
    {
        // Default·Î 0¹ø° ¹êµå¸¦ Gray¸ðµå·Î ±×¸°´Ù. 
        XDMBand band = xrsFileInput.GetBandAt(0);

        // ¹êµå À̸§À» ±×´ë·Î CompositeÀ̸§À¸·Î ¼³Á¤
        newComp.Name = band.BandName;

        // Gray Mode·Î ±×¸®´Â°ÍÀ» ¼³Á¤
        newComp.Mode = eCompMode.Gray;

        // CompositeÀÇ 0¹ø¿¡ Band¼³Á¤, Gray¸ðµå¿¡¼­´Â 0¹ø ¹êµå¸¸À» ÀνÄÇÑ´Ù. 
        newComp.SetBand(ref band, 0);
        // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀÇ ¹üÀ§ ¼³Á¤(Á¤±ÔºÐÆ÷ 95% ¿µ¿ª)
        newComp.SetCutType(eCompCutType.Ct95, 0);
        // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀû¿ë½Ã Àüü ¿µ¿ª¿¡ ´ëÇÑ Histogram(Band)¼³Á¤, VisibleÀº ÇöÀç ¿µ¿ª
        newComp.SetStretchCoverage(eCompStretchCoverage.Band, 0);
        // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀÇ StretchÇüÅ ¼³Á¤(GaussianÀ¸·Î ¼³Á¤)
        newComp.SetStretchType(eCompStretchType.Gaussian, 0);

    }
    else // 3°³ ÀÌ»óÀÇ ¹êµå¸¦ °¡Áö°í ÀÖ´Â °æ¿ì 
    {
        XDMBand band1 = xrsFileInput.GetBandAt(0);
        XDMBand band2 = xrsFileInput.GetBandAt(1);
        XDMBand band3 = xrsFileInput.GetBandAt(2);
        newComp.Name = xrsFileInput.FileName; // ÆÄÀÏ À̸§À» CompoisteÀ̸§À¸·Î ¼³Á¤

        newComp.Mode = eCompMode.RGB;  // RGB Mode·Î ±×¸®´Â°ÍÀ» ¼³Á¤
        newComp.SetBand(ref band3, 0); // CompositeÀÇ 0¹ø¿¡ Band¼³Á¤, Blue Channel¼³Á¤ 
        newComp.SetBand(ref band2, 1); // CompositeÀÇ 1¹ø¿¡ Band¼³Á¤, Green Channel¼³Á¤
        newComp.SetBand(ref band1, 2); // CompositeÀÇ 2¹ø¿¡ Band¼³Á¤, Red Channel¼³Á¤
                
        for (int i = 0; i < 3; i++)
        {
            // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀÇ ¹üÀ§ ¼³Á¤(Á¤±ÔºÐÆ÷ 95% ¿µ¿ª)
            newComp.SetCutType(eCompCutType.Ct95, i);
            // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀû¿ë½Ã Àüü ¿µ¿ª¿¡ ´ëÇÑ Histogram(Band)¼³Á¤, VisibleÀº ÇöÀç ¿µ¿ª
            newComp.SetStretchCoverage(eCompStretchCoverage.Band, i);
            // ¿µ»ó Enhancement¸¦ À§ÇØ HistogramÀÇ StretchÇüÅ ¼³Á¤(GaussianÀ¸·Î ¼³Á¤)
            newComp.SetStretchType(eCompStretchType.Gaussian, i);
        }
    }

    // 8. »ý¼ºµÈ Composite¸¦ XDMCompManger°´Ã¼¿¡ Ãß°¡ÇÑ´Ù. 
    xdmCompManager.AddXDMComposite(ref newComp);
        
    // 9. Àüü È­¸é º¸±â¸¦ ¼³Á¤ÇÑ´Ù.
    nxMapLayerComposites1.ZoomFit();

    // 10. È­¸é ¾÷µ¥ÀÌÆ®¸¦ ¼öÇàÇÑ´Ù. 
    nxMapLayerComposites1.Invalidate();

    // 11. ¼³Á¤µÈ Lock¸¦ ÇØÁ¦ÇÑ´Ù. 
    nxMapLayerComposites1.UnLock();
}

 

1.5.5           [F5]¸¦ ´­·¯ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù.

 

1.5.6           [File]-[Open]À» ´­·¯ ¿µ»óÀ» ¼±ÅÃÇÑ´Ù. ´Ù¿î·Îµå ¹ÞÀº ¡°etm.xdm¡±À» ¼±ÅÃÇÑ´Ù.

 

 

1.5.7           [File]-[Open]À» ´­·¯ ¿µ»óÀ» ¼±ÅÃÇÑ´Ù. ´Ù¿î·Îµå ¹ÞÀº ¡°dem.xdm¡±À» ¼±ÅÃÇÑ´Ù.