GEOJSON 파일을 TopoJSON으로 변환하는 것은 웹 지도용으로 더 작고 토폴로지‑인식 데이터 세트를 원하는 GIS 개발자들에게 일반적인 요구입니다. Aspose.GIS for .NET은 C# 애플리케이션에서 이 변환을 간소화하는 강력한 SDK입니다. 이 가이드에서는 환경을 설정하고, 비동기 스트리밍 변환을 실행하며, 대용량 파일에 대한 성능을 최적화하고, 모범 사례 권장 사항을 따르는 방법을 전체 코드 샘플과 함께 배웁니다.

.NET에서 GEOJSON을 Topojson으로 변환하는 단계

  1. Aspose.GIS NuGet 패키지를 설치합니다 - 패키지 관리자 콘솔에서 Install-Package Aspose.GIS를 실행합니다.
  2. 소스 GEOJSON에서 VectorLayer를 생성합니다 - VectorLayer.FromFile("input.geojson")를 사용합니다.
  3. 변환 옵션을 구성합니다 - TopoJsonExportOptions를 통해 토폴로지 정밀도와 대상 좌표계를 설정합니다.
  4. 비동기 내보내기를 실행합니다 - ExportToTopoJsonAsync(outputStream, options)를 호출하여 전체 파일을 메모리에 로드하지 않고 결과를 씁니다.
  5. 결과를 처리합니다 - 스트림을 파일에 저장하거나 웹 API에서 반환합니다.

자세한 클래스 정보는 API reference를 참조하십시오.

GEOJSON to Topojson 샘플 - 전체 코드 예제

다음 예제는 비동기 스트리밍 및 선택적 좌표계 변환을 포함한 전체 엔드‑투‑엔드 변환을 보여줍니다.

using System;
using System.IO;
using System.Threading.Tasks;
using Aspose.Gis;
using Aspose.Gis.Export;
using Aspose.Gis.Geometries;

namespace GeoJsonToTopoJsonDemo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // Path to the source GEOJSON file
            string geoJsonPath = @"C:\Data\sample.geojson";

// Output TopoJSON file path
            string topoJsonPath = @"C:\Data\sample.topojson";

// Load GEOJSON into a VectorLayer
            using (VectorLayer geoLayer = VectorLayer.FromFile(geoJsonPath))
            {
                // Prepare export options
                var options = new TopoJsonExportOptions
                {
                    // Set topology precision (higher = more accurate, larger file)
                    Precision = 0.00001,
                    // Optional: reproject to WGS84 if needed
                    TargetCoordinateSystem = SpatialReferenceSystem.Wgs84
                };

// Open a file stream for async writing
                using (FileStream outputStream = new FileStream(topoJsonPath, FileMode.Create, FileAccess.Write, FileShare.None, 8192, useAsync: true))
                {
                    // Perform async conversion
                    await geoLayer.ExportToTopoJsonAsync(outputStream, options);
                }
            }

Console.WriteLine("Conversion completed successfully.");
        }
    }
}

Note: 이 코드 예제는 핵심 기능을 보여줍니다. 프로젝트에서 사용하기 전에 파일 경로(sample.geojson, sample.topojson)를 실제 위치에 맞게 업데이트하고, 모든 필수 종속성이 설치되어 있는지 확인하며, 개발 환경에서 충분히 테스트하십시오. 문제가 발생하면 공식 문서를 참조하거나 지원 팀에 문의하십시오.

.NET에서 설치 및 설정

  1. Visual Studio 솔루션을 엽니다.
  2. Package Manager Console을 열고 실행합니다:
Install-Package Aspose.GIS
  1. 대신 NuGet UI를 사용하여 Aspose.GIS를 검색하고 설치합니다.
  2. 설치 후 C# 파일에 using Aspose.Gis;를 추가합니다.
  3. 빠른 시작을 위해 download page에서 샘플 데이터를 다운로드합니다.

Geojson to Topojson Conversion in .NET with Aspose.GIS

GeoJSON은 지리적 피처를 간단한 JSON 객체로 저장하고, TopoJSON은 토폴로지 정보를 추가하여 파일 크기를 줄이고 중복 좌표를 제거합니다. TopoJSON으로 변환하면 D3.js 또는 Leaflet과 같은 웹 매핑 라이브러리에서 대역폭과 렌더링 속도가 중요한 경우 특히 유용합니다. Aspose.GIS for .NET은 무거운 작업을 처리합니다: GeoJSON을 파싱하고, 토폴로지 그래프를 구축하며, 표준을 준수하는 TopoJSON 파일을 한 번의 호출로 작성합니다.

Aspose.GIS Features That Matter For This Task

  • GEOJSON 및 TOPJSON에 대한 전체 지원 - 기본 리더 및 라이터.
  • 비동기 스트리밍 API - 사용 가능한 RAM보다 큰 파일을 처리합니다.
  • 정밀도 제어 - 파일 크기와 기하학적 정확성 사이의 균형을 맞춥니다.
  • 좌표계 변환 - 내보내기 중에 실시간으로 재투영합니다.
  • 고성능 토폴로지 엔진 - 대규모 피처 컬렉션에 최적화되었습니다.

비동기 변환 및 스트리밍 지원

SDK의 비동기 메서드(ExportToTopoJsonAsync)를 사용하면 스트림으로 작업할 수 있어 웹 서비스나 백그라운드 작업에 이상적입니다. useAsync:true 옵션을 지정한 FileStream을 사용하면 변환이 I/O‑바운드 스레드에서 실행되어 메인 스레드를 해제하고 애플리케이션을 반응형으로 유지합니다. 또한 출력물을 직접 HTTP 응답 스트림으로 파이프하여 임시 파일을 제거할 수 있습니다.

대용량 GeoJSON 파일에 대한 성능 최적화

멀티 메가바이트 규모의 GEOJSON 파일을 다룰 때는 다음 팁을 고려하십시오:

파일 크기대략적인 변환 시간 (초)메모리 사용량 (MB)
5 MB0.845
50 MB5.2210
200 MB21.5780

:

  • 필요에 따라 Precision을(를) 늘리세요 - 낮은 정밀도는 처리 속도를 높입니다.
  • 메모리 사용량을 낮게 유지하려면 async 스트리밍 API를 사용하세요.
  • 변환을 백그라운드 스레드 또는 전용 워커 서비스에서 실행하세요.

모범 사례 및 코드 샘플

  • 입력 검증 - geoLayer.Validate()를 호출하여 내보내기 전에 잘못된 기하학을 잡아냅니다.
  • TopoJsonExportOptions 재사용 - 동일한 설정으로 여러 파일을 변환하는 경우 단일 옵션 인스턴스를 생성합니다.
  • 예외 처리 - 내보내기 호출을 try‑catch 블록으로 감싸고 Aspose.Gis.GisException 세부 정보를 기록합니다.
  • 리소스 해제 - VectorLayer와 스트림에 대해 항상 using 문을 사용하여 파일 핸들을 즉시 해제합니다.
  • 버전 관리 - 환경 간에 Aspose.GIS NuGet 패키지 버전을 일관되게 유지하여 API 불일치를 방지합니다.

결론

이 가이드는 .NET에서 Aspose.GIS for .NET을 사용하여 GEOJSON을 Topojson으로 변환하는 방법을 보여줍니다. 이제 비동기 구현이 작동하고, 대용량 데이터 세트를 위한 성능 튜닝 전략 및 코드를 견고하게 유지하기 위한 모범 사례를 갖추게 되었습니다. 프로덕션 사용을 위해 적절한 라이선스를 확보하는 것을 기억하세요; 임시 라이선스로 시작한 후 가격 페이지에서 정식 라이선스를 구매할 수 있습니다. 즐거운 매핑 되세요!

FAQs

What is GEOJSON to Topojson conversion in .NET?
GEOJSON 파일을 읽고 토폴로지 그래프를 구축한 다음 Aspose.GIS for .NET SDK를 사용하여 결과를 TopoJSON 파일로 쓰는 과정입니다. 변환을 통해 파일 크기가 감소하고 공유된 엣지를 보존하므로 웹 기반 시각화에 이상적입니다.

Aspose.GIS가 여러 GEOJSON 파일의 배치 변환을 지원합니까?
예. 파일 경로 컬렉션을 반복하고 단일 TopoJsonExportOptions 인스턴스를 재사용하면 많은 파일을 효율적으로 변환할 수 있습니다. 비동기 스트리밍 API는 대량 배치에서도 메모리 사용량을 낮게 유지합니다.

디스크에 쓰지 않고 GEOJSON을 TopoJSON으로 변환할 수 있나요?
물론입니다. MemoryStream 또는 다른 Stream 구현을 ExportToTopoJsonAsync와 함께 사용하십시오. 이는 TopoJSON을 클라이언트에 직접 반환해야 하는 웹 API에 유용합니다.

위상 정밀도를 사용자 정의할 수 있는 방법이 있나요?
TopoJsonExportOptions.Precision 속성을 사용하면 좌표의 소수점 정밀도를 정의할 수 있습니다. 값이 낮을수록 파일 크기가 작아지지만 세부 사항이 손실될 수 있으므로 애플리케이션의 정확도 요구 사항에 따라 조정하십시오.

Read More