特定のシェープファイルからすべてのフィーチャ データを読み込もうとしています。この場合、DotSpatial を使用してファイルを開き、機能を繰り返し処理しています。この特定のシェープファイルのサイズはわずか 9 MB で、dbf ファイルは 14 MB です。ループする機能はおよそ 75,000 あります。
これはすべてコンソール アプリを介してプログラムで行われるため、レンダリングなどは一切行われないことに注意してください。
形状ファイルをロードするときに、再投影してから繰り返します。再投影の読み込みは非常に高速です。ただし、コードが foreach ブロックに到達するとすぐに、データの読み込みに丸 2 分近くかかり、VisualStudio でのデバッグ時に約 2 GB のメモリを使用します。これは、かなり小さいデータ ファイルに対して、非常に過剰に思えます。
コマンド ラインから Visual Studio の外部で同じコードを実行しましたが、時間はまだ約 2 分で、プロセスには約 1.3 GB のメモリが必要です。
とにかくこれをスピードアップする方法はありますか?
以下は私のコードです:
// Load the shape file and project to GDA94
Shapefile indexMapFile = Shapefile.OpenFile(shapeFilePath);
indexMapFile.Reproject(KnownCoordinateSystems.Geographic.Australia.GeocentricDatumofAustralia1994);
// Get's slow here and takes forever to get to the first item
foreach(IFeature feature in indexMapFile.Features)
{
// Once inside the loop, it's blazingly quick.
}
興味深いことに、VS イミディエイト ウィンドウを使用すると、非常に高速で、まったく遅延がありません...