[연구논문] 모바일 관광을 위한 위치 기반 서비스 기술

약 2년전 연구과제 사업의 산출물 중 하나로 발행된 논문입니다. 모바일 환경에서 사용자의 위치 정확도를 향상하기 위한 방안으로 사용자가 갈 수 있는 길에 대한 네트워크 데이터를 구축하고 이 네트워크 데이터와 이동 속도 등을 고려하여 사용자의 위치 정확도를 높이기 위한 알고리즘 개발과 실제 구현에 대한 연구과제였습니다.

이 연구과제에서 네트워크 데이터를 구축하기 위한 과정 중 자동화를 위해 DuraMap-Xr을 이용하였고 정확도 향상 알고리즘과 모바일에서의 활용에 대한 프로그램은 BlackPoint-Xr을 이용하였습니다. 아래의 URL은 실제 논문에 대한 다운로드 URL입니다.

사용자 삽입 이미지

연구 과제가 마무리될 쯤 언제 시간이 되면 이곳 블로그를 통해 공유해야겠다 했는데, 잊고 있다가 모바일 GIS로 구글링을 하다가 다시 제게 역으로 검색되어 이제서야 올려봅니다.

[C#] 관리자 권한으로 실행하기

관리자 권한이 없는 상태에서 시스템의 정보를 읽거나 쓰려고 할때 프로그램이 올바르게 작동하지 않습니다. 이럴때 프로그램이 실행되면서, 관리자 권한으로 상승시키는 것이 필요한데요. C#에서 이러한 내용에 대한 코드를 정리합니다. 모든 코드는 Program.cs에서 이루어집니다. 먼저 using 절에 다음과 같은 네임스페이스를 추가합니다.

using System.Security.Principal;
using System.Diagnostics;

그리고 현재 관리자 권한 상태인지의 여부를 파악하는 함수를 추가합니다.

public static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();

    if (null != identity)
    {
        WindowsPrincipal principal = new WindowsPrincipal(identity);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }

    return false;
}

Program.cs 파일의 Main 함수의 시작 부분에 다음의 코드를 추가합니다.

if (IsAdministrator() == false)
{
    try
    {
        ProcessStartInfo procInfo = new ProcessStartInfo();
        procInfo.UseShellExecute = true;
        procInfo.FileName = Application.ExecutablePath;
        procInfo.WorkingDirectory = Environment.CurrentDirectory;
        procInfo.Verb = "runas";
        Process.Start(procInfo);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }

    return;
}

[C#] Text 파일 쓰기

C#에서 텍스트에 대한 인코딩을 지정하면서 텍스트 파일을 생성하고 텍스트를 기록하는 코드에 대해 정리해 봅니다.

using (System.IO.StreamWriter file = 
    new System.IO.StreamWriter(
        GeodataFileName, false, Encoding.GetEncoding("EUC-KR")))
{
    file.WriteLine("안녕하세요.");
}

위의 코드는 인코딩을 EUC-KR로 하기 위해 StreamWriter의 생성자에의 세번째 인자에 인코딩 정보를 전달했으며 두번째 인자를 false로 하여 텍스트 파일이 새롭게 생성되도록 하고 있습니다. 만약 두번째 인자를 true로 지정하면 기존의 파일에 텍스트 값을 덧붙여(Append) 기록하게 됩니다.

[C#] 실행 파일과 관련된 폴더(디렉토리) 정보 (실행파일 경로, 현재 작업 경로)

C#에서 실행 파일로써 자신(Exe 파일)이 존재하는 경로를 얻는 방식은 WinForm인 경우와 WPF인 경우에 따라 달라집니다. 먼저 WinForm인 경우는 다음과 같습니다.

Application.StartupPath

// or

Application.ExecutablePath // 실행 파일(.exe)까지 붙여짐

WPF인 경우는 다음과 같습니다.

AppDomain.CurrentDomain.BaseDirectory

실행 파일, 즉 프로세스는 또 하나 중요한 의미를 갖는 폴더가 있는데요. 그것은 현재 자신이 작업을 하고 있는 폴더 경로입니다. 이 작업 폴더를 얻는 코드는 아래와 같습니다.

System.Environment.CurrentDirectory

// or

System.IO.Directory.GetCurrentDirectory() 

작업 폴더를 얻는 코드로써 WinForm인 경우만 사용할 수 있는 코드는 아래와 같습니다.

Application.StartupPath 

// or

string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
path = System.IO.Path.GetDirectoryName(path);