C#에서 Shapefile 생성 및 읽기

Shapefile 형식은 지리 정보를 표시하는 데 사용되는 지리 공간 벡터 데이터 형식입니다. Shapefile에 포인트, 라인, 폴리곤 피처의 위치, 지오메트리, 속성을 저장할 수 있습니다. 이 기사에서는 C#에서 Shapefile을 만들고 읽는 방법을 배웁니다.

이 문서에서는 다음 주제를 다룹니다.

  1. 셰이프파일이란?
  2. 셰이프 파일 사용 방법
  3. Shapefile 생성 및 읽기를 위한 C# API – .NET GIS 라이브러리
  4. C#을 사용하여 Shapefile 만들기
  5. C#의 기존 ShapeFile에 기능 추가
  6. C#을 사용하여 Shapefile 읽기

쉐이프파일이란?

shapefile은 GIS 응용 프로그램에서 사용할 벡터 데이터 형태의 지리 정보를 나타냅니다. ESRI와 다른 소프트웨어 제품 간의 상호 운용성을 용이하게 하기 위해 ESRI에 의해 개방형 사양으로 개발되었습니다. 여기에는 지도에 점, 선 또는 다각형을 그리는 기하학적 데이터와 데이터 속성이 포함됩니다. Shapefile은 ArcGISQGIS와 같은 여러 GIS 소프트웨어 프로그램에서 직접 읽을 수 있습니다.

셰이프 파일을 사용하는 방법

독립형 shapefile(.shp)은 소프트웨어 응용 프로그램에서 사용할 수 없습니다. 그러나 GIS 소프트웨어에서 사용할 수 있는 유효한 shapefile에는 다음과 같은 추가 필수 파일이 포함되어야 합니다.

Shapefile 생성 및 읽기를 위한 C# API – .NET GIS 라이브러리

shapefile을 생성하거나 읽기 위해 Aspose.GIS for .NET API를 사용할 것입니다. 추가 소프트웨어 없이 지도를 렌더링하고, 지리 데이터를 만들고, 읽고, 변환할 수 있습니다. 여러 다른 지원되는 파일 형식과 함께 shapefile 작업을 지원합니다.

API의 VectorLayer 클래스는 벡터 레이어를 나타냅니다. 파일에 저장된 지리 기능 모음으로 작업할 수 있는 다양한 속성과 방법을 제공합니다. 이 클래스의 Create() 메서드를 사용하면 지원되는 벡터 레이어를 생성할 수 있습니다. 드라이버 클래스는 지원되는 모든 형식에 대한 드라이버를 제공합니다. API의 Feature 클래스는 지오메트리와 사용자 정의 속성으로 구성된 지리적 특징을 나타냅니다.

API의 DLL을 다운로드하거나 NuGet을 사용하여 설치하십시오.

PM> Install-Package Aspose.GIS

C#을 사용하여 셰이프 파일 만들기

다음 단계에 따라 프로그래밍 방식으로 shapefile을 쉽게 만들 수 있습니다.

  1. 먼저 VectorLayer.Create() 메서드를 사용하여 레이어를 만듭니다.
  2. 다음으로 레이어의 속성 컬렉션에 FeatureAttributes를 추가합니다.
  3. 그런 다음 ConstructFeature() 메서드를 사용하여 Feature 클래스의 인스턴스를 만듭니다.
  4. 그런 다음 다른 속성의 값을 설정합니다.
  5. 마지막으로 Add() 메서드를 사용하여 기능을 추가합니다.

다음 코드 샘플은 C#에서 shapefile을 만드는 방법을 보여줍니다.

// 이 코드 예제는 새 shapefile을 만드는 방법을 보여줍니다.
// 새 셰이프 파일 만들기
using (VectorLayer layer = VectorLayer.Create(@"C:\Files\GIS\NewShapeFile_out.shp", Drivers.Shapefile))
{
    // 기능을 추가하기 전에 속성 추가
    layer.Attributes.Add(new FeatureAttribute("name", AttributeDataType.String));
    layer.Attributes.Add(new FeatureAttribute("age", AttributeDataType.Integer));
    layer.Attributes.Add(new FeatureAttribute("dob", AttributeDataType.DateTime));

    // 기능 추가 및 값 설정
    Feature firstFeature = layer.ConstructFeature();
    firstFeature.Geometry = new Point(33.97, -118.25);
    firstFeature.SetValue("name", "John");
    firstFeature.SetValue("age", 23);
    firstFeature.SetValue("dob", new DateTime(1982, 2, 5, 16, 30, 0));
    layer.Add(firstFeature);

    // 다른 기능 추가 및 값 설정
    Feature secondFeature = layer.ConstructFeature();
    secondFeature.Geometry = new Point(35.81, -96.28);
    secondFeature.SetValue("name", "Mary");
    secondFeature.SetValue("age", 54);
    secondFeature.SetValue("dob", new DateTime(1984, 12, 15, 15, 30, 0));
    layer.Add(secondFeature);
}
Create-Shapefile-using-CSharp

C#을 사용하여 Shapefile을 만듭니다.

C#을 사용하여 기존 ShapeFile에 기능 추가

아래 단계에 따라 기존 shapefile에 새로운 기능을 추가할 수도 있습니다.

  1. 먼저 Drivers.Shapefile.EditLayer() 메서드를 사용하여 shapefile을 로드합니다.
  2. 다음으로 ConstructFeature() 메서드를 사용하여 Feature 클래스의 인스턴스를 만듭니다.
  3. 그런 다음 다른 속성의 값을 설정합니다.
  4. 마지막으로 Add() 메서드를 사용하여 기능을 추가합니다.

다음 코드 샘플은 C#을 사용하여 기존 shapefile에 기능을 추가하는 방법을 보여줍니다.

// 이 코드 예제는 shapefile을 편집하는 방법을 보여줍니다.
// 파일 경로
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// 쉐이프파일 레이어 편집
using (var layer = Drivers.Shapefile.EditLayer(path))
{
    // 기능 추가
    var feature = layer.ConstructFeature();
    feature.Geometry = new Point(34.81, -92.28);
    object[] data = new object[3] { "Alex", 25, new DateTime(1989, 4, 15, 15, 30, 0) };
    feature.SetValues(data);
    layer.Add(feature);
}

C#을 사용하여 셰이프 파일 읽기

다음 단계에 따라 shapefile에서 속성을 읽을 수 있습니다.

  1. 먼저 Drivers.Shapefile.OpenLayer() 메서드를 사용하여 shapefile을 로드합니다.
  2. 레이어의 각 기능을 반복합니다.
  3. 속성을 반복하고 속성 세부 정보를 표시합니다.
  4. 마지막으로 포인트 지오메트리를 확인하고 포인트를 읽습니다.

다음 코드 샘플은 C#을 사용하여 shapefile을 읽는 방법을 보여줍니다.

// 이 코드 예제는 새 shapefile을 읽는 방법을 보여줍니다.
// 파일 경로
string path = Path.Combine(dataDir, "NewShapeFile_out.shp");

// 레이어 열기
var layer = Drivers.Shapefile.OpenLayer(path);

foreach (Feature feature in layer)
{
    foreach (var attribute in layer.Attributes)
    {
        // 속성 세부정보 표시
        Console.WriteLine(attribute.Name + " : " + feature.GetValue(attribute.Name));
    }

    // 포인트 지오메트리 확인
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // 포인트 읽기
        Point point = (Point)feature.Geometry;
        Console.WriteLine(point.AsText() + " X: " + point.X + " Y: " + point.Y);
        Console.WriteLine("---------------------");
    }
}
name : John
age : 23
dob : 1982-02-05T16:30:00
POINT (33.97 -118.25) X: 33.97 Y: -118.25
---------------------
name : Mary
age : 54
dob : 1984-12-15T15:30:00
POINT (35.81 -96.28) X: 35.81 Y: -96.28
---------------------
name : Alex
age : 25
dob : 04/15/1989 15:30:00
POINT (34.81 -92.28) X: 34.81 Y: -92.28

무료 라이선스 받기

평가 제한 없이 라이브러리를 사용해 보려면 무료 임시 라이센스를 얻으십시오.

결론

이 기사에서 우리는 방법을 배웠습니다

  • 프로그래밍 방식으로 새 모양 파일을 만듭니다.
  • shapefile에 새로운 기능을 추가하십시오.
  • 쉐이프 파일 레이어 편집;
  • shapefile 레이어를 열고 C#을 사용하여 속성을 읽습니다.

또한 문서를 사용하여 다른 여러 GIS 파일 형식으로 작업하는 방법과 Aspose.GIS for .NET API에 대해 자세히 알아볼 수 있습니다. 모호한 점이 있는 경우 포럼에서 언제든지 문의하십시오.

또한보십시오