Ejemplo n.º 1
0
double QgsGCPCanvasItem::residualToScreenFactor() const
{
  if ( !mMapCanvas )
  {
    return 1;
  }

  double mapUnitsPerScreenPixel = mMapCanvas->mapUnitsPerPixel();
  double mapUnitsPerRasterPixel = 1.0;

  if ( mMapCanvas->mapRenderer() )
  {
    QStringList canvasLayers = mMapCanvas->mapRenderer()->layerSet();
    if ( canvasLayers.size() > 0 )
    {
      QString layerId = canvasLayers.at( 0 );
      QgsMapLayer* mapLayer = QgsMapLayerRegistry::instance()->mapLayer( layerId );
      if ( mapLayer )
      {
        QgsRasterLayer* rasterLayer = dynamic_cast<QgsRasterLayer*>( mapLayer );
        if ( rasterLayer )
        {
          mapUnitsPerRasterPixel = rasterLayer->rasterUnitsPerPixel();
        }
      }
    }
  }

  return 1.0 / ( mapUnitsPerScreenPixel * mapUnitsPerRasterPixel );
}