DuraMap-Xr은 DEM나 그리드 데이터를 생성하고 읽어들이면서 그리드 데이터의 값을 수정할 수 있는 그리드 레이어 기능을 제공합니다. 그리드 레이어로써 쉽게 ArcGIS에서 제공하는 FLT 파일을 DuraMap-Xr에서 읽어 표시하는 코드는 아래와 같습니다.
bool bOK = Xr1.Layers.AddGridMapLayer("grid", "FileName=d:/__data__/flt/rastert_r151.flt;OnMemory=0"); if(bOK) { Xr1.WaitForAllConnections(); GML.EnableCacheBitmap = true; Xr1.ZoomFullExtent(); }
코드를 살펴보면…. 먼저 1번 코드에서 AddGridMapLayer 매서드를 통해 그리드 레이어를 추가하며 이 매서드의 첫번째 인자는 레이어의 이름입니다. 중요한 것이.. 두번째 인자인데요. 오픈할 파일명과 이 파일에 대한 데이터를 메모리로 올릴지에 대한 여부를 지정하고 있습니다. 파일명을 지정하기 위해 FileName= 다음에 파일 경로를 지정하면 되고.. OnMemory= 뒤의 값이 1이면 메모리에 올린다는 의미이고 0이면 메모리에 올리지 않고 파일에서 바로 바로 데이터 값을 읽겠다는 의미입니다. 위의 코드에 대한 실행 결과는 아래와 같습니다.
실제로는 이렇게 이미 존재하는 파일을 읽는것뿐만이 아니라 새롭게 그리드 파일을 생성하는 경우가 빈번합니다. 아래의 코드는 새로운 그리드 데이터를 생성하는 API에 대한 예제입니다.
bool bOK = Xr1.Layers.AddGridMapLayer("grid", "FileName=d:/__data__/flt/test.flt;OnMemory=1;MinX=1000;MinY=1000;Resolution=10;ColumnsCount=100;RowsCount=100;NullValue=-9999"); if(bOK) { Xr1.WaitForAllConnections(); }
1번 코드에서 AddGridMapLayer의 두번째 인자가 그리드 데이터를 생성할때 필요한 인자값들입니다. 각 인자값에 대해 간단히 설명을 하면 다음과 같습니다.
- FileName 새롭게 생성할 그리드 데이터를 저장할 파일명이며, 이 FileName이 지정되지 않을 경우 메모리 상에서만 생성되고 파일로 저장하지 않겠다는 의미로 해석됩니다.
- OnMemory 새롭게 생성할 그리드 데이터를 메모리 상에 올릴지에 대한 여부로 1이면 메모리로 올리겠다는 의미이고 0이면 올리지 않겠다는 의미입니다. 만약 값이 0일 경우 FileName을 만든시 지정해 주어야 합니다.
- MinX 그리드 데이터에 대한 영역(MBR)에서 좌측하단에 대한 X 좌표입니다.
- MinY 그리드 데이터에 대한 영역(MBR)에서 좌측하단에 대한 Y 좌표입니다.
- Resolution 그리드 데이터에 대한 셀 해상도입니다.
- ColumnCount 그리드 데이터에 대한 가로측 방향의 셀 개수입니다.
- RowCount 그리드 데이터에 대한 세로측 방향의 셀 개수입니다.
- NullValue 그리드 데이터에 대한 셀에 값을 지정하지 않았을 경우 할당될 값입니다.
새롭게 생성된 그리드 데이터는 값이 전혀 할당되지 않았으므로 화면상에 아무것도 표시되지 않지만 분명히 주어진 공간상에 위치하고 있습니다. 이렇게 생성된 그리드 데이터에 대한 셀에 값을 읽고 쓰는 코드는 아래와 같습니다.
GridMapLayer GML = Xr1.Layers.GetLayerAsGridMap("grid"); GridCells Cell = GML.Cells; Cell.SetValue(100, 200, 45364.453); double value = Cell.GetValue(100, 200);
먼저 레이어의 이름으로 그리드 레이어 객체를 얻어오고 그리드 레이어의 셀값을 담고 있는 GridCells 객체를 얻어옵니다. 이렇게 얻어온 GridCells 객체를 통해 값을 설정하고 얻어올 수 있습니다.
이상으로 간단하게 그리드 레이어에 대한 소개를 마치고 다음으로 그리드 레이어를 응용해 공간상의 포인트 데이터를 이용해 IDW 분석을 하는 예제를 통해 그리드 레이어를 활용하는 것에 대해 살펴보도록 하겠습니다.