通过使用 AppManager 组件,可以在您自己的应用程序中支持 GDAL 扩展。您可以将其拖放到您的表单上。这允许来自 GDAL 数据扩展的支持,并且还将支持其他插件。这是将 AppManager 添加到表单上只有一个 Map 的新项目的基本演练。
1) 在 Visual Studio 工具箱中,右键单击并单击“选择项目”
2) 从对话框中,选择“浏览”并浏览到 DotSpatial.Controls.dll 库。
3) 根据需要单击确定关闭对话框并返回工具箱。
4)在Toolbox中找到刚刚添加的AppManager组件。
5) 将 AppManager 组件拖到您的表单上。(不是在地图上,而是在表格上)。一个新实例应出现在非可视组件列表中的表单下方。
6) 选择此组件以在“属性”对话框中查看其属性。
7)为appManager(或其他组件,如果您正在使用它们)设置地图。
8)GDAL组件甚至不需要为了工作而定义地图,它应该可以工作。但是您将需要 GDAL 扩展。您可以在“Windows 扩展”文件夹中找到 DotSpatial.Data.Rasters.GdalExtension。确保您的输出目录中有一个类似的文件夹,其中包含必要的 GdalExtension。一种方法是手动确保它位于您的最终分发文件夹中。
9)(可选)您可以使用的一个技巧,以确保您的发布文件夹中有 GDAL 插件,就是将库添加为内容。这样,无论您是在使用调试版本还是发布版本,它都将确保 GDAL 数据扩展使其进入输出文件夹。
10) 确保您正在使用的目录(如“Windows 扩展”)列在 AppManager 的 Directories 属性中。下图显示了默认文件夹,即“应用程序扩展”和“插件”。我认为它最初是“应用程序扩展”,但后来更新为“Windows 扩展”。不幸的是,我认为他们没有更新默认文件夹。
11)在某处的代码中(可能在表单构造函数中),您需要调用 appManager1.LoadExtensions(); 如果您不调用它,即使您将 GDAL 库作为项目的一部分,它也不会实际加载 GDAL 扩展。
12)在项目中添加一个SpatialDockManager、SpatialHeaderManager、SpatialStatusStrip。然后将这些分配给 AppManager 上的属性,就像您绘制地图一样。由于我无法理解并在我离开后实施的原因,之前的开放式设计结构已经改变,现在如果程序不包含这些东西但你尝试使用扩展,它会抛出消息框错误。“ProgressHandler”属性采用 SpatialStatusStrip。
在完成所有 12 个步骤(并在 x86 模式下运行项目)之后,您在初始问题中发布的光栅代码可以正常工作,您可以打开 geotifs。我还在尝试使其工作时将 GDAL 扩展推送到根“应用程序扩展”目录中,但我认为您不必这样做。如果它位于子文件夹中,它应该可以工作。