모바일 NexGen은 모바일 GIS 솔루션으로 공간 데이터 편집이 가능하며 기본적인 공간 데이터 편집 기능 외에도 공간 데이터를 자르거나 병합하는 등의 고급 편집 기능도 제공합니다. 아래의 동영상은 하나의 폴리곤을 원하는 형상을 갖도록 자르고 병합하는 공간 편집 기능에 대한 소개입니다.
아래는 글은 모바일 넥스젠의 기본적인 공간 데이터 편집에 대한 소개입니다.

공간정보시스템 / 3차원 시각화 / 딥러닝 기반 기술 연구소 @지오서비스(GEOSERVICE)
모바일 NexGen은 모바일 GIS 솔루션으로 공간 데이터 편집이 가능하며 기본적인 공간 데이터 편집 기능 외에도 공간 데이터를 자르거나 병합하는 등의 고급 편집 기능도 제공합니다. 아래의 동영상은 하나의 폴리곤을 원하는 형상을 갖도록 자르고 병합하는 공간 편집 기능에 대한 소개입니다.
아래는 글은 모바일 넥스젠의 기본적인 공간 데이터 편집에 대한 소개입니다.
모바일 NexGen 관리자는 단말기를 통해 편집한 공간 데이터와 수집한 현장 데이터를 사용자 PC에 내려 받을 수 있는 프로그램입니다. 아래는 모바일 넥스젠과 관리자 프로그램 간의 업무 흐름에 대한 도식도입니다.

단말기를 사용자 PC의 USB에 연결하여 바로 데이터를 내려받을 수 있으며, 편집된 공간 데이터는 SHP 파일 형식으로 저장할 수 있으며, 수집한 위치 기반 현장 데이터에 대해서는 그 목적에 맞게 SHP, CSV, 이미지, 동영상 파일들로 저장됩니다.
모바일 넥스젠 앱이 설치된 단말기에서 공간 데이터를 편집하는 기능에 대한 소개는 다음 URL을 통해 살펴볼 수 있습니다.
또한 현장에서 다양한 데이터를 수집하는 기능에 대한 소개는 다음 URL을 통해 살펴볼 수 있습니다.
.NET 5부터는 JSON을 해석하는 API가 기본적으로 제공되는 듯 하지만, 아직도 내 PC에는 .NET 5가 기본적으로 설치되어 있지 않으므로 다른 방안이 필요했고 Newtonsoft.Json이라는 매우 뛰어난 JSON 라이브러리가 있어 이를 사용하게 되었습니다.
설치는 간단이 Visual Studio의 Package Manager 기능을 통해 설치할 수 있으며 NuGet 사이트에서 제공하는 정보를 통해 쉽게 설치할 수 있습니다.
이제 다음과 같은 JSON을 해석해 봅시다. 이 JSON은 test.json이라는 파일이 저장되어 있습니다.
{
"form0": {
"metadata": {
"title": "테스트"
}
},
"form1": {
"metadata": {
"title": "연락처"
}
}
}
위에서 form0과 form1에 대한 정보를 얻어와야 하고, 각가게 대한 title 값을 얻어와야 합니다. 코드는 아래와 같습니다.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
...
var strFormJson = Utility.ReadAllTextFromFile("test.json");
var jsonForm = JObject.Parse(strFormJson);
var iter = jsonForm.GetEnumerator();
while(iter.MoveNext())
{
var keyValue = iter.Current;
MessageBox.Show(keyValue.Key + " " + keyValue.Value["metadata"]["title"].ToString());
}
JSON에 대해 배열에 대한 처리는 JArray로 타입을 변환하면 됩니다. 코드의 예는 다음과 같습니다.
var jsonLayers = JObject.Parse(strLayersJson);
var arrayJsonLayers = jsonLayers["layers"] as JArray;
var iterLayers = arrayJsonLayers.GetEnumerator();
while(iterLayers.MoveNext())
{
var value = iterLayers.Current;
var layerName = value["name"].ToString();
...
}
시간이 좀더 흘려 .NET 5가 사용자의 PC에 기본적으로 설치되는 날이 오면 .NET 5에서 제공하는 JSON API를 사용하시기 바랍니다.
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화하여 공간 데이터와 함께 저장되므로 다양하게 처리되어 활용될 수 있습니다.