[GIS] CSV2SHP ㅡ 텍스트 파일을 SHP 파일로 변환하는 툴

텍스트 파일(CSV 포맷)로 구성된 좌표와 속성 데이터를 포인트 타입의 SHP 파일로 변환하는 툴입니다. GIS 분야에서 많은 공간 데이터가 오픈되고 있고 이러한 공간 데이터를 서비스하기 위한 형태로 재가공하기 위해 필요한 툴입니다.

사용자 삽입 이미지
듀라맵(http://www.gisdeveloper.co.kr/notice/574) 컴포넌트를 활용하였으므로 먼저 듀라맵을 등록하셔야 합니다. SHP 파일은 속성 데이터와 좌표 데이터가 분리되어 저장되므로 반드시 텍스트 파일에는 좌표 데이터가 지정되어야 합니다.

제 스스로가 GIS 업무를 위해 만들 툴이므로 다른 분들이사용함에 있어 문제가 발생할 수 있습니다. 사용상에 문제가 있을 경우 피드백 주시면 파악하여 반영하도록 하겠습니다.

CSV 포맷(Format)의 문자열(String) 파싱(Parse, Parsing)

CSV 형태로 된 문자열을 파싱하기 위한 C#언어로 작성된 함수입니다. 예전에 XrGeocoder 프로그램을 개발할때 사용했던 함수로.. 또 다른 프로젝트에서 사용되면서 함수만을 분리해 정리해 봅니다.>/p>

private List SeperateStringWithComma(String value)
{
    bool inQuotes = false;
    char delim = ',';
    List strings = new List();

    StringBuilder sb = new StringBuilder();
    foreach (char c in value)
    {
        if (c == '\'' || c == '"')
        {
            if (!inQuotes)
                inQuotes = true;
            else
                inQuotes = false;
        }

        if (c == delim)
        {
            if (!inQuotes)
            {
                strings.Add(sb.Replace("'", string.Empty).Replace("\"", string.Empty).ToString());
                sb.Remove(0, sb.Length);
            }
            else
            {
                sb.Append(c);
            }
        }
        else
        {
            sb.Append(c);
        }
    }

    strings.Add(sb.Replace("'", string.Empty).Replace("\"", string.Empty).ToString());
    return strings;
}

위의 함수를 사용하는 예제는 다음과 같습니다.

String csv = "2011-01-01,18,2008,개인,인천,중구,~,2010-12-31,233400,남자";
List values = SeperateStringWithComma(csv);

int cntValues = values.Count;
for (int i = 0; i < cntValues; i++)
{
    MessageBox.Show(values[i]);
}