gpt4 book ai didi

c# - 从 Dotspatial 中的文件路径加载栅格数据

转载 作者:太空狗 更新时间:2023-10-30 00:51:13 29 4
gpt4 key购买 nike

我在 DotSpatial 中有这行简单的代码

var raster = Raster.OpenFile("X://Data//4mr_project.tif");

为什么栅格只是得到空值??

我在同一目录中还有 .aux.ovr.tfw 文件。

已编辑:

我发现下面的行工作正常:

var featureSet = FeatureSet.Open("X:\\Test Data\\shap\\edited.shp")

因为 Dotspatial 默认可以加载 .shp 文件。但是加载.tif格式的栅格数据,Dotspatial需要GDAL扩展。现在的问题是如何使用 C#Dotspatial 中手动加载 GDAL 扩展。

最佳答案

通过使用 AppManager 组件,您自己的应用程序可以支持 GDAL 扩展。您可以将其拖放到您的表单上。这允许来自 GDAL 数据扩展的支持,并且还将支持其他插件。这是将 AppManager 添加到窗体上只有一个 map 的新项目的基本演练。

1) 在 Visual Studio 工具箱中,右键单击并单击“选择项”

Choose Items

2) 从对话框中选择“浏览”并浏览到 DotSpatial.Controls.dll 库。

Dotspatial.Controls.dll

3) 根据需要单击确定以关闭对话框并返回到工具箱。

4) 在工具箱中找到您刚刚添加的 AppManager 组件。

AppManager

5) 将 AppManager 组件拖到您的窗体上。 (不是在 map 上,而是在表格上)。一个新实例应该出现在非可视组件列表中的表单下方。

6) 选择此组件以在“属性”对话框中查看它的属性。

7) 为 appManager(或其他组件,如果您正在使用它们)设置 map 。

Define Map

8) GDAL 组件甚至不需要定义 Map 就可以工作,它应该可以工作。但是您将需要 GDAL 扩展。您可以在“Windows 扩展”文件夹中找到 DotSpatial.Data.Rasters.GdalExtension。确保您的输出目录中有一个类似的文件夹,其中包含必要的 GdalExtension。一种方法是手动确保它位于您的最终分发文件夹中。

9) (可选)您可以使用的一个技巧是将库添加为内容,以确保您的发布文件夹中有 GDAL 插件。这样,无论您是在调试版本还是发布版本,它都将确保 GDAL 数据扩展使其进入输出文件夹。

Copy Content

10) 确保您正在使用的目录(如“Windows 扩展”)列在 AppManager 的目录属性中。下图显示了默认文件夹“Application Extensions”和“Plugins”。我认为它最初是“应用程序扩展”,但后来更新为“Windows 扩展”。不幸的是,我认为他们没有更新默认文件夹。

Directories

11) 在某处的代码中(可能在表单构造函数中)您需要调用 appManager1.LoadExtensions();如果您不调用它,即使您将 GDAL 库作为项目的一部分,它实际上也不会加载 GDAL 扩展。

12) 在项目中添加SpatialDockManager、SpatialHeaderManager、SpatialStatusStrip。然后将这些分配给 AppManager 上的属性,就像您对 map 所做的那样。由于我不明白的原因,在我离开后实现,以前开放式的设计结构发生了变化,现在如果程序不包含这些东西,但您尝试使用 Extensions,它会抛出消息框错误。 “ProgressHandler”属性采用 SpatialStatusStrip。

完成所有 12 个步骤(并在 x86 模式下运行项目)后,您在初始问题中发布的光栅代码有效,您可以打开 geotifs。我还尝试将 GDAL 扩展推送到根“应用程序扩展”目录中,但我认为您不必这样做。如果它在子文件夹中,它应该可以工作。

关于c# - 从 Dotspatial 中的文件路径加载栅格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122130/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com