c# – 从Dotspatial中的FilePath加载栅格数据

我在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工具箱中,右键单击并单击“选择项目”

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

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

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

5)将AppManager组件拖到表单上. (不在地图上,但在表格上).表单下方的新实例应显示在非可视组件列表中.

6)选择此组件以在“属性”对话框中查看其属性.

7)设置appManager(或其他组件,如果您正在使用它们)的地图.

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

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

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

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

12)将SpatialDockManager,SpatialHeaderManager,SpatialStatusStrip添加到项目中.然后将这些属性分配给AppManager上的属性,就像执行地图一样.由于我离开之后并且在我离开后实现的原因,先前开放式设计结构已经改变,现在如果程序不包含这些内容但是您尝试使用扩展,它将抛出消息框错误. “ProgressHandler”属性采用SpatialStatusStrip.

在完成所有这12个步骤(并在x86模式下运行项目)后,您在初始问题中发布的栅格代码可以正常工作,您可以打开地理位置.我还将GDAL扩展推送到根“Application Extensions”目录,同时尝试让它工作,但我认为你不必这样做.如果它在子文件夹中,它应该工作.

上一篇:云安全公司Lacework D 轮融资13亿美元


下一篇:激活个体力量,区块链 DAO 架构给 Stacker Ventures 等一个弯道超车的机会