1

这是对上一个问题的跟进,我们在其中评论说,使用带有经纬度坐标的欧几里得距离不会产生正确的结果。我在文档中读到ELKI 启用地理数据,即int它的距离函数,存在于各种聚类算法中。在 ELKI 的用户界面中,我可以看到有一些选项可以将默认距离函数 (euclidian) 替换为更合适的函数。我还看到,在这种情况下,您需要提供一个数据,这是有道理的,因为您必须告诉 ELKI 数据是如何投影的。我在 UI 中的选项是使用“geo.LngLatDistanceFunction”,因为我使用的是 (x,y) 坐标并使用“WGS84SpheroidEarthModel”,因为数据位于 epsg:4326 中。我正在尝试在 Java 中相应地对我的算法进行参数化,但我不知道该怎么做:如果我像这样初始化我的参数:

ListParameterization params2 = new ListParameterization();
    params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.MINPTS_ID, minPoints);
params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN.Parameterizer.EPSILON_ID, epsilon);

我可以这样设置距离函数吗?

params2.addParameter(de.lmu.ifi.dbs.elki.algorithm.DistanceBasedAlgorithm.DISTANCE_FUNCTION_ID, 
            de.lmu.ifi.dbs.elki.distance.distancefunction.geo.LngLatDistanceFunction.class);

geo.model 呢?(我对此一无所知)

4

1 回答 1

2

默认地球模型是 SphericalVincentyEarthModel,据说速度更快(但假设是球形地球,而不是椭球体);但这不应该有太大的区别,除非你需要精确到米:根据这个答案,最大误差应该是距离的 0.3% 。

要设置地球模型参数,请EarthModel.MODEL_ID用作选项 ID。(由 的 Parameterizer 引用LngLatDistanceFunction)。当试图找到合适的选项 ID 时,请始终查看参数化器 - 我们正在慢慢地将所有选项 ID 移动到参数化器中。

于 2014-05-14T17:49:10.230 回答