我正在尝试从特定 shapefile 中读取所有特征数据。在这种情况下,我使用 DotSpatial 打开文件,并且我正在迭代功能。这个特殊的 shapefile 只有 9mb 大小,而 dbf 文件是 14mb。大约有 75k 个特征需要循环。
请注意,这一切都是通过控制台应用程序以编程方式完成的,因此没有渲染或任何涉及的内容。
加载形状文件时,我重新投影,然后进行迭代。加载重新投影非常快。然而,一旦代码到达我的 foreach 块,加载数据需要将近 2 分钟的时间,并且在 VisualStudio 中调试时使用大约 2GB 的内存。对于相当小的数据文件来说,这似乎非常非常过分。
我已经从命令行在 Visual Studio 之外运行了相同的代码,但是时间仍然大约是 2 分钟,并且该进程需要大约 1.3GB 的内存。
有没有办法加快速度?
下面是我的代码:
// 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 即时窗口时,它超级超级快,完全没有延迟......