bool ModelIO::readCSV(QString & fileURL, pcl::PointCloud<PointType>::Ptr cloud)
	{
		QFile file(fileURL);
		if (file.open(QIODevice::ReadOnly | QIODevice::Text))
		{
			QTextStream in(&file);
			QRegExp separator(QStringLiteral(","));
			float x,y,z;

			while (!in.atEnd()) {
				QString line = in.readLine();
				QStringList list = line.split(separator);
				if (!(parseToFloat(list[0], x) && parseToFloat(list[1], y) && parseToFloat(list[2], z)))
				{
					addStatus(QObject::tr("Invalid number in file: ") + line);
					return false;
				}
				cloud->push_back(PointType(x, y, z));
			}

			cloud->width = cloud->size();
			cloud->height = 1;
			cloud->is_dense = true;

			return true;
		}
		else
		{
			addStatus(QObject::tr("Can not open file."));
			return false;
		}
	}
Exemplo n.º 2
0
float GPS::getLatitudeOrLongitude(){
    int i, count;
    char chars[100];
    for (i = 0; i < 100; i++){
        chars[i] = -1;
    }
    if(waitForNextCharAvailable()){
        char c = getNextChar();
        int i = 0;
        while (i < 100 && c != ',' && waitForNextCharAvailable()){
            chars[i] = c;
            c = getNextChar();
            i++;
        }
        if (c != ',' && i < 100) chars[0] = -1;
    }
    count = 0;
    while (count < sizeof(chars)/sizeof(char) && chars[count] >= 0) count++;
    if (count == 0) return -1;
    char *ret = (char*)malloc(sizeof(char) * i);
    for(i = 0; i < count; i++){
        ret[i] = chars[i];
    }
    if(!areDigits(ret)) return -1;
    free(ret);
    return parseToFloat(ret, count);
}