Skip to content
Permalink
Browse files
Port wildcard logic to GDAL querySublayers
  • Loading branch information
nyalldawson committed Jun 25, 2021
1 parent 23e2323 commit 521ef287766d2bb253e0be53722825eaa3f63551
@@ -3596,7 +3596,21 @@ QList<QgsProviderSublayerDetails> QgsGdalProviderMetadata::querySublayers( const

if ( !sExtensions.contains( suffix ) )
{
return {};
bool matches = false;
for ( const QString &wildcard : std::as_const( sWildcards ) )
{
const thread_local QRegularExpression rx( QRegularExpression::anchoredPattern(
QRegularExpression::wildcardToRegularExpression( wildcard )
), QRegularExpression::CaseInsensitiveOption );
const QRegularExpressionMatch match = rx.match( info.fileName() );
if ( match.hasMatch() )
{
matches = true;
break;
}
}
if ( !matches )
return {};
}
}
}
@@ -490,6 +490,30 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayers()

res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc", Qgis::SublayerQueryFlag::FastScan );
QCOMPARE( res.count(), 8 );

// aigrid file
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid" );
QCOMPARE( res.count(), 1 );
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "aigrid" ) );
QCOMPARE( res.at( 0 ).description(), QString() );
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "%1/aigrid" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
QVERIFY( rl->isValid() );

// aigrid, with fast scan
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid", Qgis::SublayerQueryFlag::FastScan );
QCOMPARE( res.count(), 1 );
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "aigrid" ) );
QCOMPARE( res.at( 0 ).description(), QString() );
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "%1/aigrid" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
QVERIFY( rl->isValid() );
}

QGSTEST_MAIN( TestQgsGdalProvider )
@@ -0,0 +1,258 @@
# value red green blue

0 95 113 150
1 95 57 29
2 122 141 179
3 132 141 150
4 75 75 66
5 198 200 202
6 150 150 170
7 159 188 159
8 159 95 57
9 255 113 66
10 122 57 38
11 170 188 253
12 122 159 216
13 159 197 216
14 47 38 47
15 38 29 38
16 234 216 197
17 234 207 188
18 253 225 197
19 255 207 179
20 198 200 202
21 188 197 179
22 207 216 188
23 197 207 179
24 179 188 179
25 170 170 179
26 197 188 179
27 207 170 170
28 207 104 57
29 188 104 57
30 234 225 216
31 234 207 207
32 188 216 244
33 179 207 253
34 207 225 253
35 197 207 253
36 179 216 225
37 170 207 225
38 208 234 221
39 207 207 216
40 253 95 38
41 159 179 244
42 104 132 150
43 95 132 188
44 159 170 179
45 141 170 188
46 207 132 75
47 85 95 113
48 197 150 122
49 179 150 122
50 132 122 122
51 122 122 122
52 104 113 122
53 207 234 197
54 225 234 197
55 220 234 248
56 113 95 113
57 104 95 104
58 216 150 104
59 159 141 104
60 234 244 255
61 253 244 253
62 208 234 221
63 253 244 225
64 207 244 225
65 207 244 253
66 113 104 85
67 141 188 197
68 57 57 75
69 197 85 47
70 132 150 234
71 132 159 244
72 113 141 122
73 197 150 141
74 247 149 76
75 47 57 47
76 150 150 150
77 132 141 132
78 66 57 57
79 216 132 75
80 75 113 216
81 85 113 216
82 216 122 66
83 95 104 85
84 188 234 234
85 188 234 216
86 170 170 132
87 57 47 47
88 207 95 38
89 253 225 216
90 255 104 57
91 216 113 47
92 159 170 150
93 141 159 150
94 149 100 66
95 150 104 85
96 159 122 104
97 170 150 150
98 75 104 150
99 66 95 150
100 75 113 179
101 66 95 179
102 225 188 170
103 225 179 159
104 95 85 85
105 95 75 85
106 113 150 207
107 113 132 207
108 38 29 29
109 225 197 159
110 188 197 159
111 197 216 159
112 197 197 159
113 188 179 150
114 179 170 150
115 197 188 150
116 207 170 150
117 179 85 29
118 159 75 29
119 216 255 244
120 207 122 85
121 179 122 95
122 216 255 234
123 216 253 216
124 255 253 234
125 225 255 234
126 225 253 216
127 255 255 255
128 255 255 253
129 234 255 255
130 234 255 244
131 95 85 66
132 85 75 66
133 85 85 85
134 75 75 75
135 170 150 122
136 159 141 122
137 216 159 122
138 216 170 122
139 104 141 207
140 95 132 207
141 132 85 57
142 113 85 66
143 122 122 159
144 122 122 141
145 216 95 29
146 141 122 141
147 150 170 244
148 85 122 188
149 75 75 104
150 85 104 122
151 75 57 75
152 159 85 47
153 150 150 207
154 132 95 85
155 170 150 170
156 225 150 85
157 188 122 104
158 159 132 85
159 198 200 202
160 197 141 104
161 179 141 104
162 132 122 104
163 113 113 104
164 104 104 104
165 113 141 234
166 113 132 234
167 159 197 234
168 122 159 197
169 179 170 132
170 197 170 132
171 141 179 216
172 132 170 216
173 150 188 225
174 150 170 225
175 198 200 202
176 159 188 179
177 141 113 75
178 170 188 216
179 170 170 216
180 188 188 207
181 104 141 225
182 141 66 29
183 122 179 216
184 255 95 47
185 198 200 202
186 255 170 132
187 95 113 179
188 225 95 38
189 255 159 122
190 132 141 104
191 75 113 197
192 85 104 104
193 159 216 234
194 149 100 66
195 104 132 225
196 57 47 57
197 179 95 38
198 253 225 225
199 216 104 38
200 150 122 122
201 179 132 150
202 225 188 188
203 47 38 29
204 207 85 29
205 159 66 38
206 216 255 255
207 255 253 216
208 225 188 132
209 149 100 66
210 255 104 66
211 141 197 216
212 85 122 159
213 188 141 85
214 85 57 66
215 253 234 197
216 244 225 244
217 216 170 104
218 57 66 75
219 57 47 29
220 255 179 150
221 188 234 244
222 122 159 150
223 85 113 179
224 141 141 150
225 216 95 38
226 57 57 38
227 225 132 57
228 85 113 207
229 122 179 197
230 188 188 132
231 197 188 132
232 85 104 85
233 170 170 113
234 225 216 159
235 188 216 159
236 225 141 122
237 216 253 197
238 75 122 197
239 207 95 75
240 85 122 225
241 57 75 104
242 255 104 38
243 225 170 150
244 188 188 253
245 141 75 38
246 95 66 38
247 255 207 159
248 255 188 179
249 255 150 104
250 188 170 207
251 104 159 197
252 141 197 234
253 216 122 104
254 225 188 207
255 255 255 255
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
Projection UTM
Zone 55
Datum GDA94
Spheroid GRS80
Units METERS
Zunits NO
Yshift 10000000.0
Parameters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 521ef28

Please sign in to comment.