这是一个前一个问题的后续,在这里我们评论说,使用欧几里德距离和lat,长坐标不能正确的结果。我在文档中看到,ELKI支持地理数据 (即int其距离函数)存在于各种聚类算法中。在ELKI的用户界面中,我可以看到有一些选项可以将默认的距离函数(欧几里得函数)替换为更适合的函数。我还看到,在这种情况下,您需要提供一个数据,这是有意义的,因为您必须告诉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呢?(我对此一无所知)
发布于 2014-05-14 17:49:10
默认的地球模型是SphericalVincentyEarthModel,它应该更快一些(但假设是一个球形地球,而不是一个球体);但是这应该不会有太大的区别,除非您需要精确的仪表:根据这个答案的说法,最大误差应该是距离的0.3%。
若要设置地球模型参数,请使用EarthModel.MODEL_ID作为选项ID。(LngLatDistanceFunction参数化引用)。当试图找到适当的选项ID时,请始终查看参数化器--我们正在缓慢地将所有选项ID移动到参数化器中。
https://stackoverflow.com/questions/23659456
复制相似问题