Skip to content

Commit

Permalink
[processing] Add missing {string,integer,double} array types in the f…
Browse files Browse the repository at this point in the history
…ield mapping widget
  • Loading branch information
nirvn committed Jan 30, 2022
1 parent 36f513d commit e722475
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 1 deletion.
118 changes: 118 additions & 0 deletions python/plugins/processing/tests/testdata/expected/refactor_array.gml
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8" ?>
<ogr:FeatureCollection
gml:id="aFeatureCollection"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ogr.maptools.org/ refactor_array.xsd"
xmlns:ogr="http://ogr.maptools.org/"
xmlns:gml="http://www.opengis.net/gml/3.2">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>-5 0</gml:lowerCorner><gml:upperCorner>3 8</gml:upperCorner></gml:Envelope></gml:boundedBy>

<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.0">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>1 1</gml:lowerCorner><gml:upperCorner>1 1</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.0"><gml:pos>1 1</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.0</ogr:fid>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.1">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>3 3</gml:lowerCorner><gml:upperCorner>3 3</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.1"><gml:pos>3 3</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.1</ogr:fid>
<ogr:id>2</ogr:id>
<ogr:id2>1</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.2">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>2 2</gml:lowerCorner><gml:upperCorner>2 2</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.2"><gml:pos>2 2</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.2</ogr:fid>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.3">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>2 5</gml:lowerCorner><gml:upperCorner>2 5</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.3"><gml:pos>2 5</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.3</ogr:fid>
<ogr:id>4</ogr:id>
<ogr:id2>2</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.4">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>1 4</gml:lowerCorner><gml:upperCorner>1 4</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.4"><gml:pos>1 4</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.4</ogr:fid>
<ogr:id>5</ogr:id>
<ogr:id2>1</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.5">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>-5 0</gml:lowerCorner><gml:upperCorner>-5 0</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.5"><gml:pos>-5 0</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.5</ogr:fid>
<ogr:id>6</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.6">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>-1 8</gml:lowerCorner><gml:upperCorner>-1 8</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.6"><gml:pos>-1 8</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.6</ogr:fid>
<ogr:id>7</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.7">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>-1 7</gml:lowerCorner><gml:upperCorner>-1 7</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.7"><gml:pos>-1 7</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.7</ogr:fid>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
<ogr:featureMember>
<ogr:refactor_array gml:id="refactor_array.8">
<gml:boundedBy><gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>-1 0</gml:lowerCorner><gml:upperCorner>-1 0</gml:upperCorner></gml:Envelope></gml:boundedBy>
<ogr:geometryProperty><gml:Point srsName="urn:ogc:def:crs:EPSG::4326" gml:id="refactor_array.geom.8"><gml:pos>-1 0</gml:pos></gml:Point></ogr:geometryProperty>
<ogr:fid>points.8</ogr:fid>
<ogr:id>9</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:array>1</ogr:array>
<ogr:array>2</ogr:array>
<ogr:array>3</ogr:array>
</ogr:refactor_array>
</ogr:featureMember>
</ogr:FeatureCollection>
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="http://ogr.maptools.org/"
xmlns:ogr="http://ogr.maptools.org/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:gmlsf="http://www.opengis.net/gmlsf/2.0"
elementFormDefault="qualified"
version="1.0">
<xs:annotation>
<xs:appinfo source="http://schemas.opengis.net/gmlsfProfile/2.0/gmlsfLevels.xsd">
<gmlsf:ComplianceLevel>1</gmlsf:ComplianceLevel>
</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
<xs:import namespace="http://www.opengis.net/gmlsf/2.0" schemaLocation="http://schemas.opengis.net/gmlsfProfile/2.0/gmlsfLevels.xsd"/>
<xs:element name="FeatureCollection" type="ogr:FeatureCollectionType" substitutionGroup="gml:AbstractFeature"/>
<xs:complexType name="FeatureCollectionType">
<xs:complexContent>
<xs:extension base="gml:AbstractFeatureType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="featureMember">
<xs:complexType>
<xs:complexContent>
<xs:extension base="gml:AbstractFeatureMemberType">
<xs:sequence>
<xs:element ref="gml:AbstractFeature"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="refactor_array" type="ogr:refactor_array_Type" substitutionGroup="gml:AbstractFeature"/>
<xs:complexType name="refactor_array_Type">
<xs:complexContent>
<xs:extension base="gml:AbstractFeatureType">
<xs:sequence>
<xs:element name="geometryProperty" type="gml:PointPropertyType" nillable="true" minOccurs="0" maxOccurs="1"/><!-- srsName="urn:ogc:def:crs:EPSG::4326" -->
<xs:element name="fid" nillable="true" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="id" nillable="true" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="id2" nillable="true" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="array" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="16"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
Expand Up @@ -1311,6 +1311,39 @@ tests:
name: expected/refactor_fields_null.gml
type: vector

- algorithm: qgis:refactorfields
name: Refactor fields, array
params:
FIELDS_MAPPING:
- expression: '"fid"'
length: 0
name: fid
precision: 0
type: 10
- expression: '"id"'
length: 0
name: id
precision: 0
type: 2
- expression: '"id2"'
length: 0
name: id2
precision: 0
type: 2
- expression: 'array(1,2,3)'
length: 0
name: array
precision: 0
type: 9
sub_type: 2
INPUT:
name: points.gml
type: vector
results:
OUTPUT:
name: expected/refactor_array.gml
type: vector

- algorithm: native:reprojectlayer
name: reproject vector layer
params:
Expand Down
6 changes: 5 additions & 1 deletion src/gui/qgsfieldmappingmodel.cpp
Expand Up @@ -416,7 +416,11 @@ const QList<QgsVectorDataProvider::NativeType> QgsFieldMappingModel::dataTypesV2
<< QgsVectorDataProvider::NativeType( tr( "Time" ), QStringLiteral( "time" ), QVariant::Time )
<< QgsVectorDataProvider::NativeType( tr( "Date & Time" ), QStringLiteral( "datetime" ), QVariant::DateTime )
<< QgsVectorDataProvider::NativeType( tr( "Boolean" ), QStringLiteral( "boolean" ), QVariant::Bool )
<< QgsVectorDataProvider::NativeType( tr( "Binary object (BLOB)" ), QStringLiteral( "binary" ), QVariant::ByteArray );
<< QgsVectorDataProvider::NativeType( tr( "Binary object (BLOB)" ), QStringLiteral( "binary" ), QVariant::ByteArray )
<< QgsVectorDataProvider::NativeType( tr( "String list" ), QStringLiteral( "stringlist" ), QVariant::StringList, 0, 0, 0, 0, QVariant::String )
<< QgsVectorDataProvider::NativeType( tr( "Integer list" ), QStringLiteral( "integerlist" ), QVariant::List, 0, 0, 0, 0, QVariant::Int )
<< QgsVectorDataProvider::NativeType( tr( "Decimal (real) list" ), QStringLiteral( "doublelist" ), QVariant::List, 0, 0, 0, 0, QVariant::Double )
<< QgsVectorDataProvider::NativeType( tr( "Integer (64bit) list" ), QStringLiteral( "integer64list" ), QVariant::List, 0, 0, 0, 0, QVariant::LongLong );
return sDataTypes;
}

Expand Down

0 comments on commit e722475

Please sign in to comment.