mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-03 00:02:25 -05:00
Update getDxf with render context
This commit is contained in:
parent
24f3f97011
commit
66d4de64f7
@ -22,17 +22,24 @@ email : david dot marteau at 3liz dot com
|
||||
namespace QgsWms
|
||||
{
|
||||
void writeAsDxf( QgsServerInterface *serverIface, const QgsProject *project,
|
||||
const QString &version, const QgsServerRequest &request,
|
||||
const QString &, const QgsServerRequest &request,
|
||||
QgsServerResponse &response )
|
||||
{
|
||||
Q_UNUSED( version );
|
||||
// get wms parameters from query
|
||||
QgsWmsParameters parameters( QUrlQuery( request.url() ) );
|
||||
|
||||
QgsWmsParameters wmsParameters( QUrlQuery( request.url() ) );
|
||||
QgsRenderer renderer( serverIface, project, wmsParameters );
|
||||
// prepare render context
|
||||
QgsWmsRenderContext context( project, serverIface );
|
||||
context.setFlag( QgsWmsRenderContext::UseWfsLayersOnly );
|
||||
context.setFlag( QgsWmsRenderContext::UseOpacity );
|
||||
context.setFlag( QgsWmsRenderContext::UseFilter );
|
||||
context.setFlag( QgsWmsRenderContext::SetAccessControl );
|
||||
context.setParameters( parameters );
|
||||
|
||||
// Write output
|
||||
QgsRenderer renderer( context );
|
||||
QgsDxfExport dxf = renderer.getDxf();
|
||||
response.setHeader( "Content-Type", "application/dxf" );
|
||||
dxf.writeToFile( response.io(), wmsParameters.dxfCodec() );
|
||||
dxf.writeToFile( response.io(), parameters.dxfCodec() );
|
||||
}
|
||||
} // namespace QgsWms
|
||||
|
@ -801,33 +801,13 @@ namespace QgsWms
|
||||
|
||||
QgsDxfExport QgsRenderer::getDxf()
|
||||
{
|
||||
QgsDxfExport dxf;
|
||||
|
||||
// set extent
|
||||
QgsRectangle extent = mWmsParameters.bboxAsRectangle();
|
||||
dxf.setExtent( extent );
|
||||
|
||||
// get layers parameters
|
||||
QList<QgsMapLayer *> layers;
|
||||
QList<QgsWmsParametersLayer> params = mWmsParameters.layersParameters();
|
||||
|
||||
// init layer restorer before doing anything
|
||||
std::unique_ptr<QgsLayerRestorer> restorer;
|
||||
restorer.reset( new QgsLayerRestorer( mNicknameLayers.values() ) );
|
||||
restorer.reset( new QgsLayerRestorer( mContext.layers() ) );
|
||||
|
||||
// init stylized layers according to LAYERS/STYLES or SLD
|
||||
QString sld = mWmsParameters.sldBody();
|
||||
if ( !sld.isEmpty() )
|
||||
{
|
||||
layers = sldStylizedLayers( sld );
|
||||
}
|
||||
else
|
||||
{
|
||||
layers = stylizedLayers( params );
|
||||
}
|
||||
|
||||
// only wfs layers are allowed to be published
|
||||
QStringList wfsLayerIds = QgsServerProjectUtils::wfsLayerIds( *mProject );
|
||||
// configure layers
|
||||
QList<QgsMapLayer *> layers = mContext.layersToRender();
|
||||
configureLayers( layers );
|
||||
|
||||
// get dxf layers
|
||||
const QStringList attributes = mWmsParameters.dxfLayerAttributes();
|
||||
@ -838,24 +818,6 @@ namespace QgsWms
|
||||
layerIdx++;
|
||||
if ( layer->type() != QgsMapLayerType::VectorLayer )
|
||||
continue;
|
||||
if ( !wfsLayerIds.contains( layer->id() ) )
|
||||
continue;
|
||||
|
||||
checkLayerReadPermissions( layer );
|
||||
|
||||
for ( const QgsWmsParametersLayer ¶m : params )
|
||||
{
|
||||
if ( param.mNickname == layerNickname( *layer ) )
|
||||
{
|
||||
setLayerOpacity( layer, param.mOpacity );
|
||||
|
||||
setLayerFilter( layer, param.mFilter );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setLayerAccessControlFilter( layer );
|
||||
|
||||
// cast for dxf layers
|
||||
QgsVectorLayer *vlayer = static_cast<QgsVectorLayer *>( layer );
|
||||
@ -871,6 +833,8 @@ namespace QgsWms
|
||||
}
|
||||
|
||||
// add layers to dxf
|
||||
QgsDxfExport dxf;
|
||||
dxf.setExtent( mWmsParameters.bboxAsRectangle() );
|
||||
dxf.addLayers( dxfLayers );
|
||||
dxf.setLayerTitleAsName( mWmsParameters.dxfUseLayerTitleAsName() );
|
||||
dxf.setSymbologyExport( mWmsParameters.dxfMode() );
|
||||
|
Loading…
x
Reference in New Issue
Block a user