tile-wms.diff

limit and split wms getmap requests to a given tile size. - Jürgen Fischer, 2011-04-21 12:12 PM

Download (6.33 KB)

View differences:

src/app/qgswmssourceselect.cpp (working copy)
511 511
  QString crs;
512 512
  QString connInfo = connectionInfo();
513 513

  
514
  QString connArgs;
515

  
514 516
  if ( lstTilesets->selectedItems().isEmpty() )
515 517
  {
516 518
    collectSelectedLayers( layers, styles );
517 519
    crs = mCRS;
518 520
    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
    }
519 526
  }
520 527
  else
521 528
  {
......
525 532
    format = item->data( Qt::UserRole + 2 ).toString();
526 533
    crs    = item->data( Qt::UserRole + 3 ).toString();
527 534

  
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
  }
532 540

  
541
  if ( !connArgs.isEmpty() )
542
  {
533 543
    if ( connInfo.startsWith( "username=" ) || connInfo.startsWith( "ignoreUrl=" ) )
534 544
    {
535 545
      connInfo.prepend( connArgs + "," );
src/providers/wms/qgswmsprovider.cpp (working copy)
545 545
  else
546 546
  {
547 547
    mTileReqNo++;
548

  
548 549
    double vres = viewExtent.width() / pixelWidth;
549 550

  
550
    // find nearest resolution
551
    double tres = vres;
551 552
    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] ) );
553
    if ( mResolutions.size() > 0 )
554
    {
554 555

  
555
    if ( i == mResolutions.size() ||
556
         ( i > 0 && vres - mResolutions[i-1] < mResolutions[i] - vres ) )
557
    {
558
      QgsDebugMsg( "back to previous res" );
559
      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];
560 568
    }
561 569

  
562
    double tres = mResolutions[i];
563

  
564 570
    // clip view extent to layer extent
565 571
    double xmin = qMax( viewExtent.xMinimum(), layerExtent.xMinimum() );
566 572
    double ymin = qMax( viewExtent.yMinimum(), layerExtent.yMinimum() );
......
2136 2142
    return false;
2137 2143
  }
2138 2144

  
2139
  if ( mTiled )
2145
  if ( mTiled && mResolutions.size() > 0 )
2140 2146
  {
2141 2147
    QString layers = activeSubLayers.join( "," );
2142 2148
    QString styles = activeSubStyles.join( "," );
src/ui/qgswmssourceselectbase.ui (working copy)
182 182
         <property name="title">
183 183
          <string>Image encoding</string>
184 184
         </property>
185
         <zorder>gbCRS</zorder>
185 186
        </widget>
186 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>
203
        </widget>
204
       </item>
187 205
       <item row="4" column="0" colspan="12">
188 206
        <widget class="QGroupBox" name="gbCRS">
189 207
         <property name="title">
......
203 221
          <item row="0" column="1" colspan="2">
204 222
           <widget class="QLineEdit" name="leLayerName"/>
205 223
          </item>
206
          <item row="1" column="0" colspan="2">
224
          <item row="2" column="0" colspan="2">
207 225
           <widget class="QLabel" name="labelCoordRefSys">
208 226
            <property name="text">
209 227
             <string>Coordinate Reference System</string>
......
213 231
            </property>
214 232
           </widget>
215 233
          </item>
216
          <item row="1" column="2">
234
          <item row="2" column="2">
217 235
           <widget class="QPushButton" name="btnChangeSpatialRefSys">
218 236
            <property name="enabled">
219 237
             <bool>false</bool>
......
223 241
            </property>
224 242
           </widget>
225 243
          </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>
226 265
         </layout>
227 266
        </widget>
228 267
       </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>
246 268
      </layout>
247 269
     </widget>
248 270
     <widget class="QWidget" name="tabLayerOrder">