我可以确认这是工作@takashi描述,非常感谢!
您可以在Point组件的字段中输入“z”(如果需要,还可以输入任何其他组件),以直接从键板保留表。
或者,您可以使用CoordinateExtractor从结果点提取z坐标。
我想你是对的,但在pointcloudcoer下,我没有选择“z”的选项,但它有“normal_z”,我想这就是为什么要使用NeighborFinder。这是否意味着我的LAS文件少了什么?不工作。我不知道它是与我的初始PointCloudSplitter有关,还是与其他什么有关。
如果你有"
{我}。z" (i = 0-4), you can then calculate the average of them with the ListSummer and the ExpressionEvaluator, for example.
查看FME数据检查器中的特性信息窗口。您可以看到列表元素的值(z{0}。* * *,z {1}。***, etc.) there.该列表有5个元素(z{0}…z{4}),所以你已经成功地找到了离基点最近的5个点。
但是,不存在名为“z{i}.normal_z”的元素。这意味着源点云没有“normal_z”组件。
我认为您应该从点云中提取“z”(仰角)组件,而不是“normal_z”。你不?
再次检查这个屏幕截图。
嗨@takashi,
我试着按照您的建议运行脚本,但是仍然缺少一些东西。
我使用了NeighborFinder和这些参数:
我想要的结果是运行一个脚本,这样我就可以从最近的激光雷达点(最接近矢量shp文件)提取平均z值。在下面的图中,我有一个来自data inspector的屏幕截图,我不知道如何得到一个平均z值的列
我认为这种配置适合你的要求。
您认为我的pointcloudcoer是正确的吗?当我测试它以输出shp文件时,ArcMap中的属性表没有列出任何激光雷达值的详细信息。
如果将列表名设置为最近的候选列表名参数,则通过匹配端口输出的功能部件将具有一个列表属性,该属性包含找到的邻居功能部件的属性。
另外,我认为你必须把原始的点发送到NeighborFinder的基础端口,因为你需要找到离这个点最近的点(而不是它的缓冲区)。
我想我没有把问题解释清楚
我试图从激光雷达数据中保留z值,想要平均5个最近的激光雷达点z值,并将其与点向量数据的z值进行比较。
pointcloudcoer保留z值,但是NeighborFinder删除它们,只提供最近的x和y值。
我使用了以下代码:
你可以:
-夹挤压缓冲对象。
计算距离。(我不太喜欢。)
-创建表面或DEM和剪辑。计算平均z。
您可以使用pointcloudcoer将点云分解为单独的点特性,然后应用NeighborFinder从给定点找到最近的点。
请注意,由于pointcloudcocoer将点云中的所有点转换为单独的点特性,如果您将整个点云发送到转换器中,可能需要很长时间才能完成转换。因此,我认为在使用裁剪器之前,最好先用给定点的缓冲区来裁剪点云。