以下のような重み付きカートグラムを作成するには、どのアルゴリズムを使用できますか?
R のコード、.NET ライブラリ、および PostGIS を使用してシェープファイル プロットを生成できます。ただし、これらのゆがんだシェープファイル プロットを生成するために使用されるアルゴリズムの実装を見つけるために使用する検索用語が見つかりません。必ずしも世界地図だけをプロットしようとしているわけではないので、任意のシェープファイルを操作できる必要があります。
OPのコメントで述べたように、これらはエリアカートグラムと呼ばれます。私が知っている最も優れた実装は、魔法のD3 ライブラリに依存するcartogram.jsです。そのページがたまたまダウンした場合は、「D3 area cartograms」をグーグルで検索することで同様のページを見つけることができるはずです。それでうまくいかない場合、このトピックに関する元の論文はDougenik 1985でした。
AndyによるD3.jsの回答は優れていますが、完全を期すために、優れたオープンソースGISアプリケーションであるQGISのPythonプラグインからの実装であるCartogram algorithmがここにあります。元の論文とアルゴリズムはコメントで引用されています。QGIS プラグインの完全なソース コード ディレクトリは次のとおりです: https://code.google.com/p/ftools-qgis/source/browse/trunk/cartogram/?r=115
あなたが C# を要求したこと、およびコードにいくつかの QGIS ジオメトリ オブジェクトがあることを認識していますが、TransformGeometry メソッドはアルゴリズムがどのように機能するかを示しており、QGIS はシェープファイルを読み取り、他の GIS スタイル処理を実行したい場合は、QGIS は次のようになります。良いオプションです。