这个变压器是因为弗梅拉克用户组。
我正在绘制犯罪热点地图。使用其他地理信息系统,我可以很容易地进行核密度类型分析,它将创建密集区域的轮廓。我想在FME中做这个,但我在挣扎!有什么想法吗?
FME确实有DensityCalculator变压器,但这有点不同。基本上,我们需要计算密度(或聚类),取每个点,评估同一区域内相似点的密度。
此转换器接受任何一组点特征作为输入。
上面:在我的测试案例中,我使用了一组地址点。
你可以看到地址簇在哪里,但是我们能把它写成一种更好的可视化格式吗?
是的,我们可以!该变压器的输出可以是一组轮廓,或者表面特征。You could write this to many formats,包括真正的三维可视化。
上面:在Adobe Viewer中打开3D PDF输出。这显示了表面和轮廓,当然,你可以只使用其中一个。
关于产出的一个问题是它看起来相当平坦,即使在最密集的地区。为了反击这一点,Z值都被放大了10倍。
方法很简单(见附件:clusterModeller.zip文件)我只找到一个给定半径内每个点的邻居数量,并将该值用作DEM/曲面模型中的Z。诀窍是找到最好的半径以获得良好的结果。此转换器为用户提供输入该值的能力,or will calculate one automatically based on the average distance between the input points.
这是变压器的整体。You can see how it is made up of two main parts.
上面:自定义转换器定义。
让我们仔细看看蓝色部分书签,因为这是所有真正的工作发生的地方。
上面:处理部分。
这开始于邻域 变压器。Rather than the normal Base/Candidate use,我们使用的是“仅限候选人”模式下的邻居查找程序。我们为查找邻居设置了一个最大半径(我称之为“公差”),并设置了一个列表属性来存储结果。
这个列表元素计数器 然后用于查找列表中有多少条目-即有多少邻居聚集在这一点上,在规定的公差范围内。不匹配点(没有相邻点的点)设置为0。
这个3DR Transformer只需将每个点的z坐标设置为该值,以及定标器 乘以10以强调结果。
最后,SurfaceModeller将点及其Z值转换为数字高程模型(DEM),并使用该模型创建一组轮廓和一个三角网曲面。这些轮廓是与几乎任何格式都兼容的简单线条特征。表面是真正的三维特征,与支持3D的格式兼容(PDF,Geodatabase3dsetc).
你可能会问,"what did the red section of workspace do?".如果用户没有设置公差,我们就在这里计算公差。
上面: The tolerance calculation section.
这里邻域 再次使用,但这次我们想找出每个点和它最近的邻居之间的距离。
Then a统计计算器 和一个表达式评估器 are used to calculate a tolerance value based on the average distance between points.
这个特征合并 then attaches that tolerance value back onto the original features.
有一些明显的局限性,但我可能应该指出:
因为我拍了上面的截图,我做了以下更新:
因为这不是一个特定的项目,所以我并不打算做进一步的更新。但是我可以……