从坐标向量中提取坐标并保存到文件

Posted

技术标签:

【中文标题】从坐标向量中提取坐标并保存到文件【英文标题】:Extract co-ordinates from a vector of co-ordinates and save to file 【发布时间】:2012-10-04 09:34:30 【问题描述】:

我有一个向量,其中包含一个列表坐标 ...x1,y1 ; x2,y2....xn,yn

我正在尝试提取作为坐标的每个单独元素,然后将它们保存为文件,作为易于阅读的漂亮描绘的坐标对。或者我保存它们会有什么好处,这样我就可以在 excel e.t.c 中绘制一些东西(作为 x 和 y 值的列)。

我的原始向量大小是31,最初构造为

vector<vector<Point> > myvector( previous vector.size() );

【问题讨论】:

@hmjd 我猜“如何从向量中提取单个元素”? 是的......在这种情况下,单个元素是一个坐标,我想将“分解列表”分成单个坐标对。如果我尝试将此向量保存为 xml/yml,它只会打印一个数字列表,这些数字是我的点对,但没有正确划分(1,2,3,4 保存为 1,2,3,4等等 【参考方案1】:

在 C++ 中写入 Excel 文件很容易。您可以按如下方式进行。

      #include<iostream>
      #include<fstream>
      #include<vector>

      using namespace std;

      vector<Point> myVec;

      void main()
      
         ofstream fout("C:/output.xls");

         for(unsigned int i=0; i<myVec.Size(); i++)
         
             int x = myVec[i].x;
             int y = myVec[i].y;

             fout<<x;      //Write value of x in first column

             fout<<"\t";   //Jump to next column

             fout<<y;      //Write value of y in next column

             fout<<endl;   //Jump to first column of next row
         

         fout.close();
       

使用 Microsoft Excel 打开输出文件时,可能会显示警告。你可以忽略它。

【讨论】:

感谢这是一个很好的答案,这是我最终需要做的......但是我不知道如何访问每个元素对......例如我调用 myVec.[i].front ().x 来访问第一对。这可以完美地保存到excell ...我似乎无法调用 myVec[i].x (错误是该类没有成员'x')..... . 但不知道如何扫描到第二对并最终到最后 你使用的vector的内部数据类型是什么?是Point 还是别的什么? 是的,我认为它是一个 ,但格式为“vector > myVec” 如果你 cout myVec[i] 它将输出一个大小为 1 的向量......并且 cout myVec 的内容将转储大约 50 个坐标的整个列表......它看到我可能必须以某种方式将向量切片.... 这意味着它是一个Point数据类型的二维数组。如果您尝试存储坐标,那么我建议创建 vector&lt;Point&gt;vector&lt;vector&lt;int&gt;&gt;【参考方案2】:

在 for 循环中使用 std::vector&lt;std::vector&lt;Point&gt;&gt;::const_iterator 来遍历坐标列表的所有元素。

【讨论】:

【参考方案3】:

您可以使用at[] 运算符并迭代向量的元素。然后按照您的要求将每一个保存到文件或 Excel 表中。

【讨论】:

我可以访问元素列表,其中一个元素是与 myVec[i] 的坐标对......但它只是转储整个列表......我认为它由 0 行组成...... .【参考方案4】:

“提取”向量中的元素(一种可能的方式!):

std::vector<anObj> myVec;
//...fill the vector...
//get the elements:
for(int i = 0; i < myVec.length(); i++)

     int x = myVec.at(i).x;
     int y = myVec.at(i).y;
     //do something else

在 C++ 中使用 Excel 有点复杂。有关托管和非托管方式,请参阅一些 examples。

【讨论】:

调用 myVec.at(i).x 会出现以下错误“类没有成员 x”... 可能我需要将原始向量分成单独的“元素”或坐标对? 这只是一个例子!此代码中的“x”只是假设性的。您必须使用指针类中的变量,并且必须包含该类才能以这种方式使用它!

以上是关于从坐标向量中提取坐标并保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

从 SVG 文件中提取路径的坐标

编程实战——python识别图像中的坐标点并保存坐标数据

如何将枚举类型向量的向量保存在

halcon提取边缘怎么保存到CAD格式文件

如何在arcgis下使shp文件自动生成点的X.Y坐标

获取 GPS 坐标并保存为文本文件