mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-11 00:09:04 -05:00
Add method to convert QgsPointCloudAttributeCollection to QgsFields
This commit is contained in:
parent
d6c0b2f0a8
commit
78cb67a95d
@ -150,6 +150,11 @@ Returns -1 if a matching attribute was not found.
|
|||||||
int pointRecordSize() const;
|
int pointRecordSize() const;
|
||||||
%Docstring
|
%Docstring
|
||||||
Returns total size of record
|
Returns total size of record
|
||||||
|
%End
|
||||||
|
|
||||||
|
QgsFields toFields() const;
|
||||||
|
%Docstring
|
||||||
|
Converts the attribute collection to an equivalent QgsFields collection.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -153,6 +153,16 @@ int QgsPointCloudAttributeCollection::indexOf( const QString &name ) const
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QgsFields QgsPointCloudAttributeCollection::toFields() const
|
||||||
|
{
|
||||||
|
QgsFields fields;
|
||||||
|
for ( const QgsPointCloudAttribute &attribute : mAttributes )
|
||||||
|
{
|
||||||
|
fields.append( QgsField( attribute.name(), attribute.variantType(), attribute.displayType() ) );
|
||||||
|
}
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void _attribute( const char *data, std::size_t offset, QgsPointCloudAttribute::DataType type, T &value )
|
void _attribute( const char *data, std::size_t offset, QgsPointCloudAttribute::DataType type, T &value )
|
||||||
{
|
{
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "qgis.h"
|
#include "qgis.h"
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
|
#include "qgsfields.h"
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
@ -164,6 +165,11 @@ class CORE_EXPORT QgsPointCloudAttributeCollection
|
|||||||
//! Returns total size of record
|
//! Returns total size of record
|
||||||
int pointRecordSize() const { return mSize; }
|
int pointRecordSize() const { return mSize; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts the attribute collection to an equivalent QgsFields collection.
|
||||||
|
*/
|
||||||
|
QgsFields toFields() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int mSize = 0;
|
int mSize = 0;
|
||||||
QVector<QgsPointCloudAttribute> mAttributes;
|
QVector<QgsPointCloudAttribute> mAttributes;
|
||||||
|
|||||||
@ -43,6 +43,7 @@ class TestQgsPointCloudAttribute: public QObject
|
|||||||
void testVariantType();
|
void testVariantType();
|
||||||
void testIsNumeric();
|
void testIsNumeric();
|
||||||
void testCollection();
|
void testCollection();
|
||||||
|
void testToFields();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -187,5 +188,25 @@ void TestQgsPointCloudAttribute::testCollection()
|
|||||||
QCOMPARE( offset, 6 );
|
QCOMPARE( offset, 6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestQgsPointCloudAttribute::testToFields()
|
||||||
|
{
|
||||||
|
QgsFields fields = QgsPointCloudAttributeCollection().toFields();
|
||||||
|
QCOMPARE( fields.size(), 0 );
|
||||||
|
|
||||||
|
QgsPointCloudAttributeCollection collection( QVector< QgsPointCloudAttribute >()
|
||||||
|
<< QgsPointCloudAttribute( QStringLiteral( "at1" ), QgsPointCloudAttribute::DataType::Float )
|
||||||
|
<< QgsPointCloudAttribute( QStringLiteral( "at2" ), QgsPointCloudAttribute::DataType::Short )
|
||||||
|
<< QgsPointCloudAttribute( QStringLiteral( "at3" ), QgsPointCloudAttribute::DataType::Double ) );
|
||||||
|
fields = collection.toFields();
|
||||||
|
QCOMPARE( fields.size(), 3 );
|
||||||
|
|
||||||
|
QCOMPARE( fields.at( 0 ).name(), QStringLiteral( "at1" ) );
|
||||||
|
QCOMPARE( fields.at( 0 ).type(), QVariant::Double );
|
||||||
|
QCOMPARE( fields.at( 1 ).name(), QStringLiteral( "at2" ) );
|
||||||
|
QCOMPARE( fields.at( 1 ).type(), QVariant::Int );
|
||||||
|
QCOMPARE( fields.at( 2 ).name(), QStringLiteral( "at3" ) );
|
||||||
|
QCOMPARE( fields.at( 2 ).type(), QVariant::Double );
|
||||||
|
}
|
||||||
|
|
||||||
QGSTEST_MAIN( TestQgsPointCloudAttribute )
|
QGSTEST_MAIN( TestQgsPointCloudAttribute )
|
||||||
#include "testqgspointcloudattribute.moc"
|
#include "testqgspointcloudattribute.moc"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user