[GIS] DuraMap-Xr의 공간 데이터 편집 기능에 대한 간단한 시연

DuraMap-Xr에 대한 공간 편집 기능 문의가 있어 간단하게 만들어 본 동영상을 공유해 봅니다. SHP 파일에 대한 편집 내용으로.. 크게 새로운 공간 데이터 추가와 기존 데이터의 편집 기능을 소개하고 편집 기능에서 매우 활용도가 큰 정점(Vertex)와 선분(Edge)에 대한 스냅(Snap) 기능과 편집된 이력에 대한 Undo/Redo에 대한 시연 내용으로 구성되어 있습니다.

[Flash] http://www.gisdeveloper.co.kr/wp-content/uploads/1/1195370430.swf

DuraMap-Xr은 PC에 저장된 공간 데이터뿐만 아니라 공간 데이터 서버에 존재하는 공간 데이터에 대해서도 편집이 가능합니다. 동영상의 용량 문제로 급하게 만들어 충분한 내용을 전달하지 못해 아쉽지만.. 위의 시연 내용으로 DuraMap-Xr에 대한 공간 데이터 편집 기능에 대한 튜토리얼을 작성해 보다 자세하게 소개하도록 할 예정입니다..

[GIS] Polygon To Point

많은 경우에 Polygon 형태의 SHP 파일을 Point 형태의 SHP 파일로 변환해야할 필요가 있습니다. 이때 폴리곤을 포인트로 변환하기 위해 폴리곤의 중심섬(Centroid)을 생각할 수 있는데.. 이 툴은 폴리곤에 대한 SHP 파일을 각 폴리곤의 중심점으로 하여 포인트 SHP 파일로 변환해주는 툴입니다. 포인트로 변환된 SHP 파일에 대한 속성 파일인 DBF에는 단순히 FID 값만이 저장되는데.. 이에 대해서는 원본 폴리곤 SHP 파일에 대한 DBF를 변환된 포인트 SHP 파일과 확장자만 다르게 하여 변경해주면 속성값을 그대로 유지해주는 효과가 있습니다. 아래는 간단한 사용예입니다.

사용자 삽입 이미지
사실 이 툴은 ArcGIS에서 이와 동일한 기능을 하는 FeatureToPoint라는 툴박스의 기능이 제대로 작동하지 않는 문제가 있다고 하여 DuraMap-Xr로 해당 기능을 만든 프로그램입니다. 이 프로그램을 다운로드 하기 위해서 아래의 링크를 통해 받으시기 바랍니다. 참고로 이 프로그램을 실행하기 위해서는 DuraMap-Xr 맵엔진을 등록하여야 하며 이 사이트에서 다운로드 받으실 수 있습니다.

[GIS] DuraMap-Xr, 위성/항공 이미지 레이어

범용 GIS 엔진인 DueaMap-Xr은 위성영상이나 항공영상에 대한 이미지 데이터를 표시하기 위해 ImageMapLayer를 지원합니다. 흔히 GIS 업계에서 공간 좌표를 메타데이터로 가지는 이미지 데이터의 포맷으로 geotiff를 사용합니다. tiff는 볼래 Tag라는 개념으로 이미지 데이터에 대한 데이터로써의 메타 데이터를 제공할 수 있는 구조이면서 동시에 하나의 파일에 여러개의 이미지를 저장하고 있는 구조입니다. 파일 하나에 대해 여러개의 이미지 각각을 페이지(page)라고 합니다.

DuraMap-Xr은 이러한 공간 좌표를 가지고 있는 geotiff를 레이어로써 추가하여 살펴볼 수 있으며, 동시에 일반 이미지에 대해서도 별도의 월드(world) 파일을 통해 공간 좌표를 부여하여 화면상에 표시할 수 있습니다. 그러므로 geotiff처럼 파일안에 공간 좌표에 대한 정보가 없을 경우라도 간단히 월드 파일을 작성하여 공간 좌표 데이터를 이미지에 부여할 수 있습니다. 이 두가지 방법 모두에 대해 DuraMap-Xr은 지원하므로 사용자는 자신이 가지고 있는 이미지 데이터에 대해 수치지도와 같은 공간 데이터와 함께 공간상으로 매칭하여 살펴볼 수 있는 기능을 제공합니다.

간단히 월드 파일에 대해 설명드리도록 하겠습니다. 월드 파일의 확장자는 각 이미지 포맷에 따라 다른데.. 여기에는 일정한 규칙이 존재합니다. 즉, tif는 tfw, bmp는 bpw, jpg는 jgw, gif는 gfw, png는 pgw가 됩니다. 물론… DuraMap-Xr은 이에 대한 모든 월드 파일과 이미지 포맷을 지원합니다. 그리고 이 월드 파일은 텍스트 형식으로써 메모장을 통해 살펴보면.. 한 예로 다음과 같은 형식입니다.

0.250000
0.000000
0.000000
-0.250000
277200.125000
519583.875000

가장 첫번째 값인 0.250000은 가로 방향에 대한 셀 해상도이며 네번째인 -0.250000은 세로 방향에 대한 셀 해상도로써 음수인 이유는 그 진행방향이 위에서 아래이기 때문입니다. 흔히 GIS의 지도 좌표는 세로 방향이 아래에서 위쪽 방향으로 점점 증가하는데 이와 반대이기 때문입니다. 그리고 다섯번째와 여섯번째는 이미지의 좌상단에 있는 픽셀의 공간 좌표에 해당합니다. 여기서 설명하지 않은 두번째와 세번째는 영상에 대한 기울기와 회전정보입니다.

이 글은 월드 파일을 가지고 있는 tif 파일을 이미지 레이어로 추가하는 방법에 대해 살펴보겠습니다. 월드 파일에 대한 정보를 자체적으로 포함하고 있는 geotiff에 대해서도 이와 동일한 방법으로 사용되며, 만약 월드 파일이 존재하지 않는 단순한 이미지 파일인 경우에도 원점을 (0, 0)으로 하며 해상도를 픽셀단위로 하여 레이어로 추가할 수 있습니다. 먼저 아래와 같이 폼을 디자인합니다.

사용자 삽입 이미지
가장 첫번째 버튼인 Add GeoTiff는, 정확히 말해 geotiff는 아니지만 월드 파일을 가지고 있는 tiff 파일을 레이어로 추가하는 버튼입니다. 앞서 말씀드렸듯이.. geotiff에 대해서도 동일한 코드로 레이어로써 추가할 수 있습니다. Add GeoTiff에 대한 코드는 다음과 같습니다.

axXr1.Layers.RemoveAllLayer();
axXr1.Layers.AddImageMapLayer("img", "D:\\__Data__\\geotif\\o26007.tif");
axXr1.WaitForAllConnections();
axXr1.ZoomFullExtent();

1번 코드를 통해 이미 추가한 레이어를 모두 제거하고, 2번 코드를 통해 img라는 레이어 이름으로 지정된 파일 경로에 대한 이미지 파일을 레이어로 추가합니다. 3번 코드는 레이어를 완전히 추가될때까지 대기합니다. 위의 코드에 대한 버튼을 클릭한 결과는 아래와 같습니다.

사용자 삽입 이미지
화면상의 이미지를 확대/축소/이동하는 이미지 버튼에 대한 코드는 앞서 이미 설명했으므로 여기서는 생략하도록 하고… 다음으로 월드 파일이 없는 JPG 파일을 추가해 보도록 하겠습니다. 여기서는 이미지 영상을 통해 추가한 레이어를 통해 이미지를 회색계열이나 반전.. 그리고 밝기나 명암, 감마값 설정등을 하기 위한 코드를 설명드리기 위함입니다. 이를 위해 지도 이미지가 아닌 보다 재미있는 이미지를 사용하도록 하겠습니다. Add JPG 버튼에 대한 코드는 다음과 같습니다. 앞서 Add GeoTiff 버튼와 이미지 파일명만 다를뿐 동일합니다.

axXr1.Layers.RemoveAllLayer();
axXr1.Layers.AddImageMapLayer("img", "d:\\__Data__\\1220715771.jpg");
axXr1.WaitForAllConnections();
axXr1.ZoomFullExtent();

실행 결과는 다음과 같습니다.

사용자 삽입 이미지
깜찍한 세끼 개구리에 대한 이미지입니다. 딱딱한 지도만 보다가 이런 이미지를 보니 기분이 발랄해 지는 기분이였는데요. 여러분은 어떠신지 모르겠습니다. 이제 이 이미지에 대해서 2가지 이미지 조정을 수행해 보도록 하겠습니다. 먼저 Grey 버튼에 대한 코드입니다.

XrMapLib.ImageMapLayer lyr = axXr1.Layers.GetLayerAsImageMap("img");
if (lyr != null)
{
    lyr.Grey = !lyr.Grey;
    axXr1.Update();
}

이 버튼은 영상 이미지를 회색계열로 변경하는 기능입니다. 먼저 1번 코드를 통해 ImageMapLayer 타입의 객체를 얻어오고 Grey 속성값을 true/false로 지정하여 회색계열 여부를 지정합니다. 결과는 다음과 같습니다.

사용자 삽입 이미지
다음은 Invert 버튼에 대한 코드입니다.

XrMapLib.ImageMapLayer lyr = axXr1.Layers.GetLayerAsImageMap("img");
if (lyr != null)
{
    lyr.Invert = !lyr.Invert;
    axXr1.Update();
}

앞서 Grey 버튼에 대한 코드와 매우 유사하며 단지 4번 코드에서 Invert 속성을 통해 이미지의 반전 여부를 지정합니다. 결과는 다음과 같습니다.

사용자 삽입 이미지
이외에도 ImageMapLayer의 속성중에 Gamma, Contrast, Brightness 값을 통해 각각 감마값을 통한 밝기 조절(범위: 0~무한대값), 명암조절(범위: -100~100), 밝기조절(범위: -100~100)을 수정할 수 있습니다. 이렇게 변형된 이미지를 다시 원래의 이미지 색조로 되돌리기 위해서 SetDefaultColor 매서드를 호출하기만 하면 됩니다.

[GIS] DuraMap-Xr로 만든 지도 스타일 샘플 이미지들..

좀더 자세히 말씀드리면.. DuraMap-Xr로 만든 BeautifyMap-Xr로 디자인된 지도 이미지입니다. 제공받은 데이터를 가공하지 않고 그대로 사용하여 BeautifyMap-Xr의 기능을 십분발휘하지 못해 아쉬운 면이 크지만.. DuraMap-Xr로 이런 느낌의 지도 스타일을 사용자에게 제공할 수 있다는 점을 공유해 봅니다.

BeautifyMap-Xr은 이렇게 제작된 스타일의 지도를 사용자가 원하는 크기의 타일 이미지로 조각내 저장하는 기능을 가지고 있습니다. 이런 타일 이미지는 추후 웹이나 모바일 환경에서 지도 서비스를 위한 데이터 파일로 활용됩니다. 참고로 구글이나 다음, 네이버 등과 같은 PC 기반의 지도 서비스에서는 타일 이미지 크기를 256×256이며 모바일 환경에서는 이보다는 작은 64×64나 32×32 등으로 지정되어 제작됩니다..

끝으로 DuraMap-Xr의 기술지원과 BeautifyMap-Xr의 사용에 대해서는 지오서비스(hjkim@geoservice.co.kr)로 문의하시기 바랍니다. (문의하실때는 문의하시는 분의 성함, 소속된 단체명 정도는 간단하게 남겨주시기 바랍니다)

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지