[vtkusers] Extract csv row and column into points
Polly Pui
polly_sukting at hotmail.com
Fri Nov 9 10:16:25 EST 2018
Hi,
Thanks for your reply.
Is it possible to have more elaborations from you?
How can I get the number of points from vtkTableToPolyData?
I got an error saying that vtkTableToPolyData has no members of GetNumberOfPoints.
I need those points to proceed to KmeansStatistics.
This is my code:
......
std::string inputFilename = argv[1];
vtkSmartPointer<vtkDelimitedTextReader> reader =
vtkSmartPointer<vtkDelimitedTextReader>::New();
reader->SetFileName(inputFilename.c_str());
reader->SetFieldDelimiterCharacters(" ");
reader->DetectNumericColumnsOn();
reader->Update();
int numberOfRows = reader->GetOutput()->GetNumberOfRows();
vtkSmartPointer<vtkTableToPolyData> inputData =
vtkSmartPointer<vtkTableToPolyData>::New();
inputData->SetInputConnection(reader->GetOutputPort);
for (int c = 0; c < 3; ++c)
{
std::stringstream colName;
colName << "coord " << c;
vtkSmartPointer<vtkDoubleArray> doubleArray =
vtkSmartPointer<vtkDoubleArray>::New();
doubleArray->SetNumberOfComponents(1);
doubleArray->SetName(colName.str().c_str());
doubleArray->SetNumberOfTuples(inputData->GetNumberOfPoints());
for (int r = 0; r < inputData->GetNumberOfPoints(); ++r)
{
double p[3];
inputData->GetPoint(r, p);
doubleArray->SetValue(r, p[c]);
}
inputData->AddColumn(doubleArray);
}
vtkSmartPointer<vtkKMeansStatistics> kMeansStatistics =
vtkSmartPointer<vtkKMeansStatistics>::New();
#if VTK_MAJOR_VERSION <= 5
kMeansStatistics->SetInput(vtkStatisticsAlgorithm::INPUT_DATA, inputData);
#else
kMeansStatistics->SetInputData(vtkStatisticsAlgorithm::INPUT_DATA, inputData);
#endif
kMeansStatistics->SetColumnStatus(inputData->GetColumnName(0), 1);
kMeansStatistics->SetColumnStatus(inputData->GetColumnName(1), 1);
kMeansStatistics->SetColumnStatus(inputData->GetColumnName(2), 1);
kMeansStatistics->RequestSelectedColumns();
kMeansStatistics->SetAssessOption(true);
kMeansStatistics->SetDefaultNumberOfClusters(1);
//kMeansStatistics->SetMaxNumIterations(15);
kMeansStatistics->Update();
Thanks again.
Regards,
Polly
________________________________
From: Cory Quammen <cory.quammen at kitware.com>
Sent: Friday, November 9, 2018 10:07 PM
To: Polly Pui
Cc: vtkusers
Subject: Re: [vtkusers] Extract csv row and column into points
vtkDelimitedTextReader -> vtkTableToPolyData is a pipeline that should make this much simpler.
On Fri, Nov 9, 2018 at 1:14 AM Polly Pui <polly_sukting at hotmail.com<mailto:polly_sukting at hotmail.com>> wrote:
Hi,
Is there any clue that i can extract the row and column data from a csv file and read them as points?
Currently I am using vtkpoints to read points by inserting points manually to my .cpp .
Is it possible for me to call the csv directly and read the data (eg. column 3-5, row 2-10)?
I attach my code here.
......
int main(int, char*[])
{
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(8.4312, -36.489, -1500.7);
points->InsertNextPoint(8.8408, -37.726, -1500.4);
points->InsertNextPoint(11.372, -37.787, -1501.5);
points->InsertNextPoint(11.263, -36.384, -1501.9);
points->InsertNextPoint(9.3914, -40.819, -1500.8);
points->InsertNextPoint(11.685, -42.482, -1502.7);
points->InsertNextPoint(14.235, -38.096, -1503.5);
points->InsertNextPoint(13.972, -43.051, -1504.2);
points->InsertNextPoint(9.22, -43.904, -1504);
vtkSmartPointer<vtkTable> inputData =
vtkSmartPointer<vtkTable>::New();
for (int c = 0; c < 3; ++c)
{
std::stringstream colName;
colName << "coord " << c;
vtkSmartPointer<vtkDoubleArray> doubleArray =
vtkSmartPointer<vtkDoubleArray>::New();
doubleArray->SetNumberOfComponents(1);
doubleArray->SetName(colName.str().c_str());
doubleArray->SetNumberOfTuples(points->GetNumberOfPoints());
for (int r = 0; r < points->GetNumberOfPoints(); ++r)
{
double p[3];
points->GetPoint(r, p);
doubleArray->SetValue(r, p[c]);
}
inputData->AddColumn(doubleArray);
}
Thank you very much.
Regards,
Polly
_______________________________________________
Powered by www.kitware.com<http://www.kitware.com>
Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Search the list archives at: http://markmail.org/search/?q=vtkusers
Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/vtkusers
--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://public.kitware.com/pipermail/vtkusers/attachments/20181109/2bef4fb5/attachment.html>
More information about the vtkusers
mailing list