GEOJSON ファイルを TopoJSON に変換することは、Web マップ向けにより小さくトポロジー対応のデータセットを求める GIS 開発者にとって一般的なニーズです。 Aspose.GIS for .NET は、C# アプリケーションでこの変換を簡素化する強力な SDK です。このガイドでは、環境の設定方法、非同期ストリーミング変換の実行、 大きなファイル向けのパフォーマンス最適化、ベストプラクティスの推奨事項を学び、完全なコードサンプルで実例を確認できます。
.NET で GEOJSON から Topojson への変換を実行する手順
- Aspose.GIS NuGet パッケージをインストール - パッケージ マネージャ コンソールで
Install-Package Aspose.GISを実行します。 - ソース GEOJSON から
VectorLayerを作成 -VectorLayer.FromFile("input.geojson")を使用します。 - 変換オプションを構成 -
TopoJsonExportOptionsを使用してトポロジー精度と対象座標系を設定します。 - 非同期エクスポートを実行 -
ExportToTopoJsonAsync(outputStream, options)を呼び出して、ファイル全体をメモリにロードせずに結果を書き込みます。 - 結果を処理 - ストリームをファイルに保存するか、Web API から返します。
詳細なクラス情報については、API リファレンスをご覧ください。
GEOJSON から 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.");
}
}
}
注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパス(
sample.geojson、sample.topojson)を実際の場所に合わせて更新し、すべての必須依存関係がインストールされていることを確認し、開発環境で十分にテストしてください。問題が発生した場合は、公式ドキュメント または サポートチーム にお問い合わせください。
.NET のインストールとセットアップ
- Visual Studio ソリューションを開きます。
- Package Manager Console を開き、実行します:
Install-Package Aspose.GIS
- 代わりに、NuGet UI を使用して Aspose.GIS を検索し、インストールします。
- インストール後、C# ファイルに
using Aspose.Gis;を追加します。 - クイックスタートとして、ダウンロードページ からサンプル データをダウンロードしてください。
.NET と Aspose.GIS を使用した Geojson から Topojson への変換
GeoJSON は地理的なフィーチャーをシンプルな JSON オブジェクトとして保存し、TopoJSON はトポロジー情報を追加してファイルサイズを削減し、重複した座標を排除します。TopoJSON への変換は、帯域幅や描画速度が重要な D3.js や Leaflet などのウェブマッピングライブラリで特に有用です。Aspose.GIS for .NET が重い処理を担当し、GeoJSON を解析し、トポロジーグラフを構築し、標準準拠の TopoJSON ファイルをワンコールで書き出します。
Aspose.GIS このタスクに重要な機能
- GEOJSON と TOPJSON のフルサポート - ネイティブのリーダーとライター。
- 非同期ストリーミング API - 利用可能な RAM より大きなファイルを処理します。
- 精度制御 - ファイルサイズと幾何精度のバランスを取ります。
- 座標系変換 - エクスポート時にリアルタイムで再投影します。
- 高性能トポロジーエンジン - 大規模なフィーチャコレクション向けに最適化されています。
Async Conversion and Streaming Support
SDK の非同期メソッド (ExportToTopoJsonAsync) はストリームでの操作を可能にし、Web サービスやバックグラウンドジョブに最適です。useAsync:true を指定した FileStream を使用すると、変換は I/O バウンド スレッドで実行され、メインスレッドが解放されアプリケーションの応答性が保たれます。また、出力を直接 HTTP 応答ストリームにパイプでき、一時ファイルを不要にします。
大規模GeoJSONファイルのパフォーマンス最適化
マルチメガバイトのGEOJSONファイルを扱う際は、次のヒントを検討してください。
| ファイルサイズ | 推定変換時間 (秒) | メモリ使用量 (MB) |
|---|---|---|
| 5 MB | 0.8 | 45 |
| 50 MB | 5.2 | 210 |
| 200 MB | 21.5 | 780 |
ヒント:
- 必要に応じて
Precisionを増やしてください - 精度を下げると処理が高速化します。 - メモリフットプリントを低く保つために async streaming API を使用してください。
- 変換はバックグラウンドスレッドまたは専用のワーカーサービスで実行してください。
ベストプラクティスとコードサンプル
- 入力を検証 - エクスポート前に
geoLayer.Validate()を呼び出し、形状が不正なジオメトリを検出します。 TopoJsonExportOptionsを再利用 - 同じ設定で多数のファイルを変換する場合は、オプションインスタンスを1つだけ作成します。- 例外を処理 - エクスポート呼び出しを try‑catch ブロックでラップし、
Aspose.Gis.GisExceptionの詳細をログに記録します。 - リソースを破棄 -
VectorLayerとストリームには常にusingステートメントを使用し、ファイルハンドルを速やかに解放します。 - バージョン管理 - 環境間で Aspose.GIS NuGet パッケージのバージョンを統一し、API の不整合を防ぎます。
結論
このガイドでは、.NET で Aspose.GIS for .NET を使用して GEOJSON から Topojson への変換方法を示しました。これで、動作する非同期実装、大規模データセット向けのパフォーマンスチューニング戦略、そしてコードを堅牢に保つためのベストプラクティスが揃いました。製品環境で使用する際は適切なライセンスを取得してください。まずは temporary license で開始し、後で pricing page からフルライセンスを購入できます。マッピングをお楽しみください!
よくある質問
.NET における GEOJSON から TopoJSON への変換とは何ですか?
これは、GEOJSON ファイルを読み取り、トポロジー グラフを構築し、Aspose.GIS for .NET SDK を使用して結果を TopoJSON ファイルとして書き出すプロセスです。この変換によりファイルサイズが削減され、共有エッジが保持されるため、Web ベースの可視化に最適です。
Aspose.GISは複数のGEOJSONファイルのバッチ変換をサポートしていますか?
はい。ファイルパスのコレクションをループし、単一の TopoJsonExportOptions インスタンスを再利用することで、多数のファイルを効率的に変換できます。非同期ストリーミング API は、大規模バッチでもメモリ使用量を低く抑えます。
ディスクに書き込まずに GEOJSON を TopoJSON に変換できますか?
もちろんです。MemoryStream またはその他の Stream 実装を ExportToTopoJsonAsync と共に使用してください。これは、TopoJSON をクライアントに直接返す必要がある Web API に便利です。
トポロジーの精度をカスタマイズする方法はありますか?TopoJsonExportOptions.Precision プロパティを使用すると、座標の小数点精度を定義できます。値を小さくするとファイルサイズは小さくなりますが、詳細が失われる可能性があります。アプリケーションの精度要件に応じて調整してください。
