Skip to content

Commit d508f56

Browse files
committedMay 4, 2011
apply #3768: tile WMS getmap requests by limiting the size
1 parent 5794256 commit d508f56

File tree

3 files changed

+72
-34
lines changed

3 files changed

+72
-34
lines changed
 

‎src/app/qgswmssourceselect.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -511,11 +511,18 @@ void QgsWMSSourceSelect::addClicked()
511511
QString crs;
512512
QString connInfo = connectionInfo();
513513

514+
QString connArgs;
515+
514516
if ( lstTilesets->selectedItems().isEmpty() )
515517
{
516518
collectSelectedLayers( layers, styles );
517519
crs = mCRS;
518520
format = mFormats[ mImageFormatGroup->checkedId()];
521+
522+
if ( mTileWidth->text().toInt() > 0 && mTileHeight->text().toInt() > 0 )
523+
{
524+
connArgs = QString( "tiled=%1;%2" ).arg( mTileWidth->text().toInt() ).arg( mTileHeight->text().toInt() );
525+
}
519526
}
520527
else
521528
{
@@ -525,11 +532,14 @@ void QgsWMSSourceSelect::addClicked()
525532
format = item->data( Qt::UserRole + 2 ).toString();
526533
crs = item->data( Qt::UserRole + 3 ).toString();
527534

528-
QString connArgs = QString( "tiled=%1;%2;%3" )
529-
.arg( item->data( Qt::UserRole + 4 ).toInt() )
530-
.arg( item->data( Qt::UserRole + 5 ).toInt() )
531-
.arg( item->data( Qt::UserRole + 6 ).toStringList().join( ";" ) );
535+
connArgs = QString( "tiled=%1;%2;%3" )
536+
.arg( item->data( Qt::UserRole + 4 ).toInt() )
537+
.arg( item->data( Qt::UserRole + 5 ).toInt() )
538+
.arg( item->data( Qt::UserRole + 6 ).toStringList().join( ";" ) );
539+
}
532540

541+
if ( !connArgs.isEmpty() )
542+
{
533543
if ( connInfo.startsWith( "username=" ) || connInfo.startsWith( "ignoreUrl=" ) )
534544
{
535545
connInfo.prepend( connArgs + "," );

‎src/providers/wms/qgswmsprovider.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -545,21 +545,27 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, i
545545
else
546546
{
547547
mTileReqNo++;
548+
548549
double vres = viewExtent.width() / pixelWidth;
549550

550-
// find nearest resolution
551+
double tres = vres;
551552
int i;
552-
for ( i = 0; i < mResolutions.size() && mResolutions[i] < vres; i++ )
553-
QgsDebugMsg( QString( "skipped res: %1:%2" ).arg( i ).arg( mResolutions[i] ) );
554-
555-
if ( i == mResolutions.size() ||
556-
( i > 0 && vres - mResolutions[i-1] < mResolutions[i] - vres ) )
553+
if ( mResolutions.size() > 0 )
557554
{
558-
QgsDebugMsg( "back to previous res" );
559-
i--;
560-
}
561555

562-
double tres = mResolutions[i];
556+
// find nearest resolution
557+
for ( i = 0; i < mResolutions.size() && mResolutions[i] < vres; i++ )
558+
QgsDebugMsg( QString( "skipped res: %1:%2" ).arg( i ).arg( mResolutions[i] ) );
559+
560+
if ( i == mResolutions.size() ||
561+
( i > 0 && vres - mResolutions[i-1] < mResolutions[i] - vres ) )
562+
{
563+
QgsDebugMsg( "back to previous res" );
564+
i--;
565+
}
566+
567+
tres = mResolutions[i];
568+
}
563569

564570
// clip view extent to layer extent
565571
double xmin = qMax( viewExtent.xMinimum(), layerExtent.xMinimum() );
@@ -2136,7 +2142,7 @@ bool QgsWmsProvider::calculateExtent()
21362142
return false;
21372143
}
21382144

2139-
if ( mTiled )
2145+
if ( mTiled && mResolutions.size() > 0 )
21402146
{
21412147
QString layers = activeSubLayers.join( "," );
21422148
QString styles = activeSubStyles.join( "," );

‎src/ui/qgswmssourceselectbase.ui

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,24 @@
182182
<property name="title">
183183
<string>Image encoding</string>
184184
</property>
185+
<zorder>gbCRS</zorder>
186+
</widget>
187+
</item>
188+
<item row="1" column="9">
189+
<widget class="QPushButton" name="btnSave">
190+
<property name="text">
191+
<string>Save</string>
192+
</property>
193+
</widget>
194+
</item>
195+
<item row="1" column="8">
196+
<widget class="QPushButton" name="btnLoad">
197+
<property name="toolTip">
198+
<string>Load connections from file</string>
199+
</property>
200+
<property name="text">
201+
<string>Load</string>
202+
</property>
185203
</widget>
186204
</item>
187205
<item row="4" column="0" colspan="12">
@@ -203,7 +221,7 @@
203221
<item row="0" column="1" colspan="2">
204222
<widget class="QLineEdit" name="leLayerName"/>
205223
</item>
206-
<item row="1" column="0" colspan="2">
224+
<item row="2" column="0" colspan="2">
207225
<widget class="QLabel" name="labelCoordRefSys">
208226
<property name="text">
209227
<string>Coordinate Reference System</string>
@@ -213,7 +231,7 @@
213231
</property>
214232
</widget>
215233
</item>
216-
<item row="1" column="2">
234+
<item row="2" column="2">
217235
<widget class="QPushButton" name="btnChangeSpatialRefSys">
218236
<property name="enabled">
219237
<bool>false</bool>
@@ -223,26 +241,30 @@
223241
</property>
224242
</widget>
225243
</item>
244+
<item row="1" column="1">
245+
<widget class="QLineEdit" name="mTileWidth">
246+
<property name="inputMask">
247+
<string>9999; </string>
248+
</property>
249+
</widget>
250+
</item>
251+
<item row="1" column="0">
252+
<widget class="QLabel" name="label_2">
253+
<property name="text">
254+
<string>Tile size</string>
255+
</property>
256+
</widget>
257+
</item>
258+
<item row="1" column="2">
259+
<widget class="QLineEdit" name="mTileHeight">
260+
<property name="inputMask">
261+
<string>9999; </string>
262+
</property>
263+
</widget>
264+
</item>
226265
</layout>
227266
</widget>
228267
</item>
229-
<item row="1" column="9">
230-
<widget class="QPushButton" name="btnSave">
231-
<property name="text">
232-
<string>Save</string>
233-
</property>
234-
</widget>
235-
</item>
236-
<item row="1" column="8">
237-
<widget class="QPushButton" name="btnLoad">
238-
<property name="toolTip">
239-
<string>Load connections from file</string>
240-
</property>
241-
<property name="text">
242-
<string>Load</string>
243-
</property>
244-
</widget>
245-
</item>
246268
</layout>
247269
</widget>
248270
<widget class="QWidget" name="tabLayerOrder">

0 commit comments

Comments
 (0)
Please sign in to comment.