GeoJSONは、非空間的特徴を持つ地理的特徴を表すために使用されます。一方、TopoJSONは、トポロジを利用するGeoJSONの拡張機能です。要件に応じて、GeoJSONをTopoJSONに変換したり、TopoJSONをGeoJSONに変換したりできます。次のユースケースを詳しく見ていきましょう。
- GeoJSONとTopoJSONの相互変換– C#.NET APIのインストール
- C#を使用してプログラムでGeoJSONをTopoJSONに変換する
- C#を使用した量子化でGeoJSONをTopoJSONに変換する
- C#でプログラムによりTopoJSONをGeoJSONに変換する
GeoJSONとTopoJSONの相互変換– C#.NET APIのインストール
Aspose.GIS for .NET APIを使用して、地理データを操作または変換できます。 ダウンロードセクションからDLLファイルをダウンロードするか、次のインストールコマンドを使用してNuGetギャラリーからAPIを簡単に構成できます。
PM> Install-Package Aspose.GIS
C#を使用してプログラムでGeoJSONをTopoJSONに変換する
GeoJSONからTopoJSONへのファイル変換は、地理空間機能をエンコードし、ファイルサイズが小さいため便利です。トポロジーと冗長性の排除により、ファイルサイズは小さくなります。さらに、共有トポロジがない場合でも、GeoJSONファイル形式の浮動小数点エンコーディングよりも修正精度エンコーディングの方がはるかに効率的です。次の手順で、GeoJSONをTopoJSONに変換できます。
- 入力GeoJSONファイルをロードします
- GeoJSONをTopoJSONに変換する
次のコードスニペットは、C#を使用してプログラムでGeoJSONをTopoJSONに変換する方法を示しています。
// 入力GeoJSONファイルをロードします
string sampleGeoJsonPath = dataDir + "sample.geojson";
var outputFilePath = dataDir + "convertedSample_out.topojson";
// GeoJSONをTopoJSONに変換します
VectorLayer.Convert(sampleGeoJsonPath, Drivers.GeoJson, outputFilePath, Drivers.TopoJson);
C#を使用した量子化でGeoJSONをTopoJSONに変換する
GeoJSONからTopoJSONへの変換は、固定精度の効率とファイルサイズの小ささから人気があります。さらに、量子化は座標の精度を低下させます。その結果、座標を整数で表すことにより、ファイルサイズを最適化します。したがって、以下の手順で量子化を使用してGeoJSONをTopoJSONに変換できます。
- ConversionOptionsクラスオブジェクトを初期化します
- 量子化番号を指定する
- または、Transformプロパティを設定します
- 量子化を使用してGeoJSONをTopoJSONに変換する
以下のコードは、GeoJSONを量子化を使用してTopoJSONに変換する方法を示しています。変換の2つの代替アプローチについて説明します。
// 量子化を使用してGeoJSONをTopoJSONに変換します-ファイルサイズを縮小するためにdoubleを整数に変換します。
string SampleGeoJsonPath = dataDir + "sample.geojson";
var outputFilePath = dataDir + "convertedSampleWithQuantization_out.topojson";
// ConversionOptionsクラスオブジェクトを初期化します
var options = new ConversionOptions
{
DestinationDriverOptions = new TopoJsonOptions
{
// 量子化パラメータを設定する方法は2つあります-Transformプロパティまたは
// 量子化数付き。ここでは、量子化数を指定します。
// 量子化数は、結果の次元ごとの表現可能な値の数を指定します
// 座標。
QuantizationNumber = 100_000,
// または、「変換」プロパティを設定することもできます(ただし、量子化数と同時に設定することはできません)。
// 変換オブジェクトと量子化の詳細については、TopoJSON仕様を参照してください。
//
// Transform = new TopoJsonTransform(
// xTranslate:0、
// yTranslate:0、
// xScale:0.0001000010000100001、
// yScale:0.0001000010000100001)、
}
};
VectorLayer.Convert(SampleGeoJsonPath, Drivers.GeoJson, outputFilePath, Drivers.TopoJson, options);
C#でプログラムによりTopoJSONをGeoJSONに変換する
Aspose.GIS for .NET APIは、TopoJSONからGeoJSONへのファイル変換をサポートしています。したがって、この機能を.NETアプリケーションに追加できます。さらに、GeoJSONファイルは通常、トポロジを必要としないジオメトリのサーバー側操作で優先されます。 TopoJSONからGeoJSONへの変換については、次の手順に従うことができます。
- 入力TopoJSONファイルをロードします
- TopoJSONからGeoJSONへの変換
次のコードは、C#を使用してプログラムでTopoJSONをGeoJSONに変換する方法を示しています。
// 入力TopoJSONファイルをロードします
var sampleTopoJsonPath = dataDir + "sample.topojson";
var outputFilePath = dataDir + "convertedSample_out.geojson";
// TopoJSONをGeoJSONファイルに変換する
VectorLayer.Convert(sampleTopoJsonPath, Drivers.TopoJson, outputFilePath, Drivers.GeoJson);
結論
この記事では、GeoJSONとTopoJSONのファイル形式の違いと適合性について学習しました。さらに、要件に応じてそれらを相互に変換する方法を検討しました。 Aspose.GIS for .NET APIは、アプリケーションで相互変換を効率的かつ迅速に実行できます。さらに、APIドキュメントにアクセスして詳細を確認できます。ご不明な点やご不明な点がございましたら、無料サポートフォーラムまでお気軽にご連絡ください。