地図上にジオメトリを描画する方法
地図上で幾何学的オブジェクトを作成および表示するには、まずジオメトリオブジェクトの作成を開始する必要があります。使用できる方法は2つあります。
- 各ジオメトリフィーチャタイプ用のコンストラクタ この方法では、各ジオメトリフィーチャタイプにカスタムコンストラクタを使用します。たとえば、ポイントを作成するには、次のコードを使用します。
Point point = new Point(40.7128, -74.006);
ただし、この方法は、ポリラインやコレクションなどの複雑なオブジェクトを作成する場合、管理が難しくなり、煩雑になる可能性があります。その結果、開発者は多くのコードを追加する必要があり、コードの可読性が低下する可能性があります。初期化中のデータ整合性を確保することも困難です。たとえば、内部に穴のある多角形を作成する次の例を検討してください。
Polygon polygon = new Polygon();
LinearRing ring = new LinearRing();
ring.AddPoint(50.02, 36.22);
ring.AddPoint(49.99, 36.26);
ring.AddPoint(49.97, 36.23);
ring.AddPoint(49.98, 36.17);
ring.AddPoint(50.02, 36.22);
LinearRing hole = new LinearRing();
hole.AddPoint(50.00, 36.22);
hole.AddPoint(49.99, 36.20);
hole.AddPoint(49.98, 36.23);
hole.AddPoint(50.00, 36.24);
hole.AddPoint(50.00, 36.22);
polygon.ExteriorRing = ring;
polygon.AddInteriorRing(hole);
このアプローチのもう1つの欠点は、初期化データの均一性の欠如です。プロジェクト内に定数またはファイルのレポジトリを作成することはできません。
- WKT (Well-Known Text) この方法では、WKT(Well-Known Text)からジオメトリを生成します。WKTは、ジオメトリを作成するための標準化された方法を提供します。次のコードは、ポイントとラインを作成する方法を示しています。
var point = Geometry.FromText("POINT (23.5, 25.3)");
var line = Geometry.FromText("LINESTRING Z (0.1 0.2 0.3, 1 2 1, 12 23 2)");
このアプローチは、文字列を解析する必要があるため、わずかにパフォーマンスが低下する可能性がありますが、より複雑なオブジェクトの作成が簡素化されます。
WKTの詳細については、次の記事を参照してください。「WKTおよびWKBからの/へのデータの輸出と輸入」。
地図上にジオメトリオブジェクトを表示する ジオメトリオブジェクトを作成したら、次のステップはそれを地図上に表示することです。地図は、さまざまなソースや形式からロードされたレイヤーを表示できますが、InMemoryLayerはソースを必要としないレイヤーです。
ジオメトリオブジェクトを表示するには、InMemoryLayerを作成し、オブジェクトを追加します。
using (var layer = Drivers.InMemory.CreateLayer())
{
Feature feature = layer.ConstructFeature();
feature.Geometry = Geometry.FromText("POINT (23.5, 25.3)");
layer.Add(feature);
}
これで、このレイヤーを地図上に表示し、SVGなどのサポートされている形式でファイルを作成することができます。
using (var map = new Map(500, 500))
{
map.Add(layer);
map.Render(filesPath, Renderers.Svg);
}
レイヤーを追加して地図上に表示すると、サポートされている形式のいずれかで保存できます。この例では、潜在的なBitmapサポートの問題を回避するためにSVG形式が選択されています。Net 6.0にはBitmapサポートが制限されており、クライアント側のBlazor WebAsmでBitmap画像をレンダリングできないなどの制限が生じる可能性があります。したがって、地図を保存する形式を選択するときは、ターゲットプラットフォームの制限を考慮し、それと互換性のある形式を選択することが重要です。
この記事では、デフォルトのプレーンなスタイルで地図上にジオメトリオブジェクトを作成および表示する方法について説明します。ただし、Asposeライブラリは、ニーズに合わせてカスタマイズできる幅広いスタイリングオプションを提供します。これらのオプションを探索するには、Aspose.MapRenderingドキュメントを参照することをお勧めします。このドキュメントには、さまざまなスタイリング手法を使用して地図の視覚的な魅力を高める方法に関する詳細な情報が記載されています。
要約すると、地図上にジオメトリオブジェクトを作成するには、各ジオメトリフィーチャタイプ用のコンストラクタを使用するか、WKTからジオメトリを生成できます。オブジェクトを表示するには、レイヤーに配置し、デフォルトのマップスタイリングでレイヤーを地図上に表示します。SVGなどのサポートされている形式で地図を保存し、ライブラリを使用してスタイリングオプションを探索します。さらに、ライブラリは、ドキュメントで提供されているリンクをクリックすることで、完成した例を確認する機会を提供しており、これらの手法を独自のプロジェクトに実装する方法を理解するのに役立ちます。