我确实有1x1米的DEM和.las组成的.las中的原始LiDAR点云。我需要提取河堤(堤坝的最高点)到矢量特征(点,折线)。
对算法或现有工具有任何想法吗?
堤防在第一个图像上为浅灰色,下面是堤防示例区域的点云图像。在蓝色的河中心线。
从DEM提取线性特征的任何工具吗?
我相信我需要像ENVI的空间特征提取模块(第7页)之类的东西,但是没有ENVI的部分,因为我负担不起:)
我确实有1x1米的DEM和.las组成的.las中的原始LiDAR点云。我需要提取河堤(堤坝的最高点)到矢量特征(点,折线)。
对算法或现有工具有任何想法吗?
堤防在第一个图像上为浅灰色,下面是堤防示例区域的点云图像。在蓝色的河中心线。
从DEM提取线性特征的任何工具吗?
我相信我需要像ENVI的空间特征提取模块(第7页)之类的东西,但是没有ENVI的部分,因为我负担不起:)
Answers:
这完全取决于您在哪里画线。无论如何,使用Spatial Analyst中可用的形态函数,尤其是阈值(执行“ <”和“>”本地操作)和“ RegionGroup”来识别和提取组件,可以轻松解决此问题。
尽管我无权访问DEM进行说明,但第一张图像几乎足以胜任该工作。例如,这是红色带的区域分组版本的序列(值的范围从0.0 =黑色到1.0 =白色),从阈值0开始,从左到右,从上到下,以0.02为增量移动:
(这些图像在此处进行了缩小以进行复制:所有分析都是在原始图像的分辨率下进行的。)
第二行开始时,堤防围绕黑色区域的边界出现(阈值= 0.08)。在第三行的开始处(阈值= 0.16),堤坝形成自己的分量(深蓝色),并且在这一点上可以很容易地提取为单独的网格或多边形(在边界检测步骤之后,它们的边界可以提取为折线) )。最后一行仅保留最宽的堤坝(阈值= 0.24及更大)。 您将需要选择一个适当的阈值以准确获得所需的内容。
在原始的DEM中,高程起着强度的作用,因此这些程序对DEM本身应同样有效。如果DEM具有较大范围(包括远离河流或堤防的地物),则可以选择相关特征作为与河流特征所在的组件相邻的那些特征。
可以通过应用小的腐蚀(负缓冲)和等效的膨胀(正缓冲)来消除RegionGroup发现的不需要的薄区域。可以根据大小标准(细胞总数或面积)排除不需要的小区域。通过将DEM与区域最大网格(使用堤坝作为区域)进行比较,可以找到每个堤坝上的最高点(如果确实需要)。
顺便说一下,此图像序列是在Mathematica 8 中生成的。以下是为希望采用此选项的用户提供的命令。
original = Import["http://i.stack.imgur.com/gV7Du.jpg"];
{r, g, b} = ColorSeparate[original];
frames = ParallelTable[Colorize[MorphologicalComponents[Binarize[r, t/100]],
ColorFunction -> "ThermometerColors"], {t, 0, 30, 2}];
Rasterize @ TableForm[Partition[frames, 4]]
总时钟时间(导入图像后)为0.94秒,其中一半用于缩小和导出所有16张图像:形态运算趋于快速(这很好,因为LIDAR DEM可能很大)。
我阅读了有关该工作的各种算法(即,按照@Hornbydds 链接)。
我尝试了几次尝试,得出的最佳结果是SAGA提供的“标准地形分析”。这是我的工作以及原因:
堤防通常是河道附近的最高特征,因此我通过翻转DEM(MapAlgebra DEM * -1或夸大坡度-10)将其转变为河道。从这一点来看,我可以使用任何一种水文工具集(ArcHydro,HEC-GeoRas或SAGA水文工具)。我选择了SAGA /地形分析-化合物分析/标准地形分析,因为它只需点击几下即可生成河网。河网是我想要实现的目标,因为它会产生折线,这些折线表示水流的最佳路线,在堤防倒转的情况下,可以给出最高点。
生成的形状文件有点混乱(许多较小的折线),但是经过一些调整后,效果令人满意。另一个烦人的事是1个堤坝是由300条短折线组成的,但是我认为我会找到一些解决方法。
这是结果示例:
当然,这是一个很粗糙的解决方案,我可能会进一步调查该问题,但我认为值得分享。
以下内容与原始DEM的某种组合应有助于突出显示所需的栅格信息,而将其余信息丢弃。可以以不同的比例和邻域大小执行这些操作,以改善效果。
完成此操作后,重分类和轮廓线应为堤防本身提供合理的轮廓。如果堤坝是平坡的,并且您想要更大的覆盖范围,则还可以尝试一些曲率和坡度之和,按一定比例缩放,甚至可以单独绘制坡度轮廓并将它们结合在一起。
这是有关使用Spatial Analyst从栅格DEM提取矢量山脊线的教程,该教程应非常适用: