<div dir="ltr"><div><div><div>Hi,<br><br></div>I did a K-Means clustering following the C++ example (<a href="https://lorensen.github.io/VTKExamples/site/Cxx/InfoVis/KMeansClustering/">https://lorensen.github.io/VTKExamples/site/Cxx/InfoVis/KMeansClustering/</a>).<br><br>        vtkTable kmeansInputData = new vtkTable();<br>        kmeansInputData.AddColumn(output.GetPointData().GetVectors()); // output object is a polydata with vectors attached resulting from previous calculation<br><br>        vtkKMeansStatistics kMeansStatistics = new vtkKMeansStatistics();<br>        kMeansStatistics.SetInputData(kmeansInputData);<br>        kMeansStatistics.SetColumnStatus(kmeansInputData.GetColumnName(0), 1);<br>        kMeansStatistics.SetColumnStatus(kmeansInputData.GetColumnName(1), 1);<br>        kMeansStatistics.SetColumnStatus(kmeansInputData.GetColumnName(2), 1);<br>        // kMeansStatistics.SetColumnStatus( "Testing", 1 );<br>        kMeansStatistics.RequestSelectedColumns();<br>        kMeansStatistics.SetAssessOption(true);<br>        kMeansStatistics.SetDefaultNumberOfClusters(3);<br>        kMeansStatistics.Update();<br><br>        kMeansStatistics.GetOutput().Dump(32, -1); // dump shows the clustering is OK<br><br>        vtkIntArray clusterArray = new vtkIntArray();<br>        clusterArray.SetNumberOfComponents(1);<br>        clusterArray.SetName("ClusterId");<br><br>        for(int r = 0; r < kMeansStatistics.GetOutput().GetNumberOfRows(); r++){<span class="gmail-hll"><span class="gmail-n"><br>         // at this point the C++ instruction to retrieve information is <br>         // vtkVariant</span> <span class="gmail-n">v</span> <span class="gmail-o">=</span> <span class="gmail-n">kMeansStatistics</span><span class="gmail-o">-></span><span class="gmail-n">GetOutput</span><span class="gmail-p">()</span><span class="gmail-o">-></span><span class="gmail-n">GetValue</span><span class="gmail-p">(</span><span class="gmail-n">r</span><span class="gmail-p">,</span><span class="gmail-n">kMeansStatistics</span><span class="gmail-o">-></span><span class="gmail-n">GetOutput</span><span class="gmail-p">()</span><span class="gmail-o">-></span><span class="gmail-n">GetNumberOfColumns</span><span class="gmail-p">()</span> <span class="gmail-o">-</span> <span class="gmail-mi">1</span><span class="gmail-p">);<br>         // ...<br></span></span></div>        }<br><div><br><div><span class="gmail-hll"><span class="gmail-p">AFAIK vtkVariant does not exists in Java. I tried to get row first using <br>          vtkAbstractArray a = kMeansStatistics.GetOutput().GetRow(r);<br></span></span></div><div><span class="gmail-hll"><span class="gmail-p"><span class="gmail-hll"><span class="gmail-p">My debugger indicates array a is instance of vtkFloatArray, but java cast doesn't work, thus I can't</span></span> retrieve the value<br></span></span></div>I guess SafeDownCast is the good method to do that, but can't find it in java wrapper.<br></div><br></div><div>So, I can't figure out the right way to retrieve individual value from a vtkTable in Java.<br><br></div><div>Any help would be really appreciated<br><br></div><div>jMax<br></div><div><br><br></div><br></div>