convert-geojson-topojson-csharp

GeoJSON được sử dụng để biểu thị các đối tượng địa lý với các đối tượng địa lý phi không gian. Trong khi đó, TopoJSON là một phần mở rộng của GeoJSON sử dụng Topo. Bạn có thể chuyển đổi GeoJSON sang TopoJSON cũng như TopoJSON sang GeoJSON theo yêu cầu của bạn. Hãy cùng chúng tôi khám phá chi tiết các trường hợp sử dụng sau:

GeoJSON và TopoJSON chuyển đổi lẫn nhau - Cài đặt API C# .NET

API Aspose.GIS for .NET có thể được sử dụng để thao tác hoặc chuyển đổi dữ liệu địa lý. Bạn có thể dễ dàng định cấu hình API bằng cách tải xuống tệp DLL của nó từ phần Tải xuống hoặc qua thư viện NuGet với lệnh cài đặt sau:

PM> Install-Package Aspose.GIS

Chuyển đổi GeoJSON sang TopoJSON Lập trình bằng C#

Chuyển đổi tệp GeoJSON sang TopoJSON rất hữu ích vì nó mã hóa các tính năng không gian địa lý và có kích thước tệp nhỏ hơn. Nó có kích thước tệp nhỏ hơn vì cấu trúc liên kết và loại bỏ dư thừa. Hơn nữa, ngay cả khi không có cấu trúc liên kết được chia sẻ, mã hóa độ chính xác cố định hiệu quả hơn mã hóa dấu chấm động của định dạng tệp GeoJSON. Bạn có thể chuyển đổi GeoJSON sang TopoJSON bằng các bước sau:

  1. Tải tệp GeoJSON đầu vào
  2. Chuyển đổi GeoJSON sang TopoJSON

Đoạn mã sau đây cho thấy cách chuyển đổi GeoJSON thành TopoJSON theo cách lập trình bằng C#:

// Tải tệp GeoJSON đầu vào
string sampleGeoJsonPath = dataDir + "sample.geojson";
var outputFilePath = dataDir + "convertedSample_out.topojson";

// chuyển đổi GeoJSON sang TopoJSON
VectorLayer.Convert(sampleGeoJsonPath, Drivers.GeoJson, outputFilePath, Drivers.TopoJson);

Chuyển đổi GeoJSON sang TopoJSON với Lượng tử hóa bằng C#

Chuyển đổi GeoJSON sang TopoJSON phổ biến vì hiệu quả có độ chính xác cố định và kích thước tệp nhỏ hơn. Hơn nữa, lượng tử hóa làm giảm độ chính xác của tọa độ. Kết quả là, nó tối ưu hóa kích thước tệp bằng cách biểu diễn các tọa độ dưới dạng số nguyên. Vì vậy, bạn có thể chuyển đổi GeoJSON thành TopoJSON bằng lượng tử hóa theo các bước dưới đây:

  1. Khởi tạo đối tượng lớp ConversionOptions
  2. Chỉ định số lượng tử hóa
  3. Hoặc đặt thuộc tính Transform
  4. Chuyển đổi GeoJSON sang TopoJSON với lượng tử hóa

Đoạn mã dưới đây cho thấy cách chuyển đổi GeoJSON sang TopoJSON với lượng tử hóa. Nó giải thích hai cách tiếp cận thay thế cho việc chuyển đổi:

// chuyển đổi GeoJSON thành TopoJSON với lượng tử hóa - chuyển đổi nhân đôi thành số nguyên để giảm kích thước tệp.

string SampleGeoJsonPath = dataDir + "sample.geojson";
var outputFilePath = dataDir + "convertedSampleWithQuantization_out.topojson";

// Khởi tạo đối tượng lớp ConversionOptions
var options = new ConversionOptions
{
    DestinationDriverOptions = new TopoJsonOptions
    {
        // Có hai cách để đặt các tham số lượng tử hóa - với thuộc tính Transform hoặc
        // với số lượng tử hóa. Ở đây chúng tôi chỉ định số lượng tử hóa.
        // Số lượng tử hóa chỉ định số lượng giá trị biểu hiện được trên mỗi thứ nguyên trong một kết quả
        // tọa độ.
        QuantizationNumber = 100_000,

        // Ngoài ra, thuộc tính 'Transform' có thể được đặt (nhưng không đồng thời với số lượng tử hóa).
        // Tham khảo thông số kỹ thuật của TopoJSON để biết thêm chi tiết về đối tượng biến đổi và lượng tử hóa.
        //
        // Transform = new TopoJsonTransform (
        //     xTranslate: 0,
        //     yTranslate: 0,
        //     xScale: 0.0001000010000100001,
        //     yScale: 0,0001000010000100001),
    }
};

VectorLayer.Convert(SampleGeoJsonPath, Drivers.GeoJson, outputFilePath, Drivers.TopoJson, options);

Chuyển đổi TopoJSON sang GeoJSON Lập trình trong C#

API Aspose.GIS for .NET hỗ trợ chuyển đổi tệp TopoJSON sang GeoJSON. Vì vậy, bạn có thể thêm tính năng này trong các ứng dụng .NET của mình. Hơn nữa, tệp GeoJSON thường được ưu tiên trong thao tác phía máy chủ đối với các hình học không yêu cầu cấu trúc liên kết. Bạn có thể làm theo các bước sau để chuyển đổi TopoJSON sang GeoJSON:

  1. Tải tệp TopoJSON đầu vào
  2. Chuyển đổi TopoJSON sang GeoJSON

Đoạn mã sau đây cho thấy cách chuyển đổi TopoJSON thành GeoJSON theo cách lập trình bằng C#:

// Tải tệp TopoJSON đầu vào
var sampleTopoJsonPath = dataDir + "sample.topojson";
var outputFilePath = dataDir + "convertedSample_out.geojson";

// Chuyển đổi TopoJSON sang tệp GeoJSON
VectorLayer.Convert(sampleTopoJsonPath, Drivers.TopoJson, outputFilePath, Drivers.GeoJson);

Sự kết luận

Trong bài viết này, bạn đã tìm hiểu sự khác biệt và phù hợp của các định dạng tệp GeoJSON và TopoJSON. Hơn nữa, bạn đã khám phá cách chuyển đổi chúng thành nhau theo yêu cầu của bạn. API Aspose.GIS for .NET có thể thực hiện chuyển đổi giữa các ứng dụng của bạn một cách hiệu quả và nhanh chóng. Hơn nữa, bạn có thể tìm hiểu thêm bằng cách truy cập API Tài liệu. Trong trường hợp có bất kỳ câu hỏi hoặc thắc mắc nào, vui lòng gửi thư lại cho chúng tôi tại Diễn đàn hỗ trợ miễn phí.

Xem thêm