C#에서 Spatialite 사용하기

Spatialite는 SQLite를 기반으로 하므로 먼저 SQLite를 설치해야 합니다. SQLite 사이트에서 Precompiled Binaries for 32-bit Windows (.NET Framework 4.6) 중 두번째인 sqlite-netFx46-binary-Win32-2015-1.0.113.0.zip 다운로드 받습니다. (Visual Studio에서 .NET WinForm 프로젝트에서 사용할 것인데 .NET 버전은 4.6으로 하고 32Bits로 설정함). 압축을 풀고 System.Data.SQLite.dll 파일 프로젝트 참조에 추가하고, SQLite.Interop.dll 파일은 프로젝트의 실행 파일이 생성되는 Debug 및 Release에 복사하면 SQLite의 기본 기능은 사용할 수 있게 됩니다.

이제 Spatialite를 사용하기 위해서는 이 파일을 다운로드 받아 압축을 풀고 전체 파일을 프로젝트의 실행 파일이 생성되는 Debug 및 Release 폴더에 복사합니다. 최종적으로 아래처럼 파일이 구성될 것입니다. (복사되어진 파일은 선택 상태로 둠)

이제 다음 코드를 테스트하면 정상 작동됩니다.

conn = new SQLiteConnection("Data Source=d:/db.sqlite;Version=3;");
conn.Open();

conn.LoadExtension("mod_spatialite");

String sql = "select sig_cd, ST_AsText(geometry) from TL_SCCO_SIG";
//String sql = "select sig_cd, geometry from TL_SCCO_SIG";
SQLiteCommand cmd = new SQLiteCommand(sql, conn);
SQLiteDataReader rdr = cmd.ExecuteReader();
            
while (rdr.Read())
{
    MessageBox.Show(rdr["sig_cd"] + " " + rdr.GetString(1));
    break;
}

rdr.Close();
conn.Close();
conn.Dispose();

위의 코드 중 4번 코드가 Spatialite 모듈을 확장 기능으로 적재합니다.

모바일 넥스젠의 현장 데이터 수집

안드로이드 기반의 GIS 솔루션인 모바일 넥스젠은 위치를 기반으로 다양한 데이터를 현장에서 바로 수집할 수 있습니다. 아래는 현장에서 지정된 건물에 대한 데이터를 입력받아 수집하는 내용에 대한 시연 동영상입니다.

수집할 수 있는 데이터에는 사진, 동영상과 위의 시연 영상처럼 미리 준비된 입력 폼 양식입니다. 입력 폼 양식에 대한 입력 필드는 문자열, 숫자, 사진, 날짜, 시간, 참/거짓, 선택입력 등이 가능하여 매우 다양한 데이터도 효과적이고 유연하게 수집할 수 있습니다.

이처럼 수집된 데이터는 DB화하여 공간 데이터와 함께 저장되므로 다양하게 처리되어 활용될 수 있습니다.

모바일 넥스젠의 공간 데이터 편집

모바일 넥스젠은 안드로이드 기반의 GIS 솔루션으로, 현장에서 주위의 실제 지형, 지물의 형태를 파악하여 공간 데이터를 구축할 수 있습니다. 아래는 시연 동영상은 모바일 넥스젠을 이용하여 단말기에서 건물의 형상을 편집하고 새로운 건물에 대한 도형을 추가하는 기능과 각 도형에 대한 속성 데이터를 편집하는 내용을 소개합니다.

공간 데이터의 편집 시에 보다 정확하고 효율적인 실행을 위해 편집 이력에 대한 Undo / Redo와 정점 및 선분에 대한 스냅핑(Snapping) 기능을 지원합니다. 아울러 이렇게 편집된 공간 데이터는 SHP 파일 형태로 변환되어 PC 등으로 저장할 수 있습니다.

모바일 넥스젠의 레이어 관리 및 속성 확인

모바일 넥스젠의 지도는 레이어 단위로 구성되어 순차적으로 중첩(Overlay)되어 표시됩니다. 레이어는 아래의 UI를 통해 제목과 심벌을 확인할 수 있으며 각 레이어 별로 시각화 여부를 지정할 수 있습니다.

지도를 구성하는 레이어는 공간 데이터에 대한 그래픽 요소와 각 공간 데이터와 1:1로 연결되는 속성 데이터로 구성되는데, 이를 피쳐(Feature)라고 합니다. 각 지도 상에 표시되는 피쳐에 대한 속성의 확인은 언제라도 해당 피쳐의 도형을 터치하면 확인이 가능합니다.

아래의 시연 동영상은 모바일 넥스젠의 레이어 관리와 레이어를 구성하는 피쳐의 속성을 확인하는 기능에 대한 소개입니다.