mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
[Feature][QGIS Server] Add WMS INSPIRE Capabilities
In the project properties the user can: * activate INSPIRE capabilities * select language of the service, 24 EU official languages + 5 regionals * choose the scenario for service metadata and specify them The WMS 1.3.0 capabilities reflects the INSPIRE configuration.
This commit is contained in:
parent
bb5f0ffeae
commit
e276f170c7
BIN
images/flags/cy.png
Executable file
BIN
images/flags/cy.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 652 B |
BIN
images/flags/en_GB.png
Normal file
BIN
images/flags/en_GB.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 599 B |
BIN
images/flags/ga.png
Executable file
BIN
images/flags/ga.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 481 B |
BIN
images/flags/gd.png
Executable file
BIN
images/flags/gd.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 649 B |
BIN
images/flags/mt.png
Executable file
BIN
images/flags/mt.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 420 B |
@ -4,12 +4,16 @@
|
||||
<file>flags/af.png</file>
|
||||
<file>flags/ar.png</file>
|
||||
<file>flags/bg.png</file>
|
||||
<file>flags/cy.png</file>
|
||||
<file>flags/de.png</file>
|
||||
<file>flags/en_GB.png</file>
|
||||
<file>flags/en_US.png</file>
|
||||
<file>flags/es.png</file>
|
||||
<file>flags/fa.png</file>
|
||||
<file>flags/fi.png</file>
|
||||
<file>flags/fr.png</file>
|
||||
<file>flags/ga.png</file>
|
||||
<file>flags/gd.png</file>
|
||||
<file>flags/he.png</file>
|
||||
<file>flags/hu.png</file>
|
||||
<file>flags/id.png</file>
|
||||
@ -21,6 +25,7 @@
|
||||
<file>flags/lt.png</file>
|
||||
<file>flags/lv.png</file>
|
||||
<file>flags/mn.png</file>
|
||||
<file>flags/mt.png</file>
|
||||
<file>flags/nl.png</file>
|
||||
<file>flags/pt_BR.png</file>
|
||||
<file>flags/pt_PT.png</file>
|
||||
|
@ -294,7 +294,7 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
|
||||
{
|
||||
mWMSContactPositionCb->setCurrentIndex( contactPositionIndex );
|
||||
}
|
||||
else if ( contactPositionText != "" )
|
||||
else if ( !contactPositionText.isEmpty() )
|
||||
{
|
||||
mWMSContactPositionCb->setEditText( contactPositionText );
|
||||
}
|
||||
@ -308,7 +308,7 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
|
||||
{
|
||||
mWMSFeesCb->setCurrentIndex( feesIndex );
|
||||
}
|
||||
else if ( feesText != "" )
|
||||
else if ( !feesText.isEmpty() )
|
||||
{
|
||||
mWMSFeesCb->setEditText( feesText );
|
||||
}
|
||||
@ -329,11 +329,82 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
|
||||
{
|
||||
mWMSAccessConstraintsCb->setCurrentIndex( accessConstraintsIndex );
|
||||
}
|
||||
else if ( accessConstraintsText != "" )
|
||||
else if ( !accessConstraintsText.isEmpty() )
|
||||
{
|
||||
mWMSAccessConstraintsCb->setEditText( accessConstraintsText );
|
||||
}
|
||||
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "bg" ) ), QLocale( "bg" ).nativeLanguageName(), "bul" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "cs" ) ), QLocale( "cs" ).nativeLanguageName(), "cze" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "da" ) ), QLocale( "da" ).nativeLanguageName(), "dan" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "nl" ) ), QLocale( "nl" ).nativeLanguageName(), "dut" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "en_GB" ) ), QLocale( "en_GB" ).nativeLanguageName(), "eng" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "et" ) ), QLocale( "et" ).nativeLanguageName(), "est" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "fi" ) ), QLocale( "fi" ).nativeLanguageName(), "fin" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "fr" ) ), QLocale( "fr" ).nativeLanguageName(), "fre" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "de" ) ), QLocale( "de" ).nativeLanguageName(), "ger" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "ga" ) ), QLocale( "ga" ).nativeLanguageName(), "gle" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "el" ) ), QLocale( "el" ).nativeLanguageName(), "gre" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "hu" ) ), QLocale( "hu" ).nativeLanguageName(), "hun" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "it" ) ), QLocale( "it" ).nativeLanguageName(), "ita" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "lv" ) ), QLocale( "lv" ).nativeLanguageName(), "lav" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "lt" ) ), QLocale( "lt" ).nativeLanguageName(), "lit" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "mt" ) ), QLocale( "mt" ).nativeLanguageName(), "mlt" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "pl" ) ), QLocale( "pl" ).nativeLanguageName(), "pol" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "pt_PT" ) ), QLocale( "pt_PT" ).nativeLanguageName(), "por" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "ro" ) ), QLocale( "ro" ).nativeLanguageName(), "rum" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "sk" ) ), QLocale( "sk" ).nativeLanguageName(), "slo" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "sl" ) ), QLocale( "sl" ).nativeLanguageName(), "slv" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "es" ) ), QLocale( "es" ).nativeLanguageName(), "spa" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "sv" ) ), QLocale( "sv" ).nativeLanguageName(), "swe" );
|
||||
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "eu" ) ), QLocale( "eu" ).nativeLanguageName(), "eus" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "ca" ) ), QLocale( "ca" ).nativeLanguageName(), "cat" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "gl" ) ), QLocale( "gl" ).nativeLanguageName(), "gal" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "gd" ) ), QLocale( "gd" ).nativeLanguageName(), "gla" );
|
||||
mWMSInspireLanguage->addItem( QIcon( QString( ":/images/flags/%1.png" ).arg( "cy" ) ), QLocale( "cy" ).nativeLanguageName(), "cym" );
|
||||
mWMSInspireLanguage->setCurrentIndex(
|
||||
mWMSInspireLanguage->findText(
|
||||
QLocale::system().nativeLanguageName()
|
||||
)
|
||||
);
|
||||
|
||||
bool addWMSInspire = QgsProject::instance()->readBoolEntry( "WMSInspire", "/activated" );
|
||||
if ( addWMSInspire )
|
||||
{
|
||||
mWMSInspire->setChecked( addWMSInspire );
|
||||
QString inspireLanguage = QgsProject::instance()->readEntry( "WMSInspire", "/language", "" );
|
||||
int inspireLanguageIndex = mWMSInspireLanguage->findData( inspireLanguage );
|
||||
mWMSInspireLanguage->setCurrentIndex( inspireLanguageIndex );
|
||||
|
||||
QString inspireMetadataUrl = QgsProject::instance()->readEntry( "WMSInspire", "/metadataUrl", "" );
|
||||
if ( !inspireMetadataUrl.isEmpty() )
|
||||
{
|
||||
mWMSInspireScenario1->setChecked( true );
|
||||
mWMSInspireMetadataUrl->setText( inspireMetadataUrl );
|
||||
mWMSInspireMetadataUrlType->setCurrentIndex(
|
||||
mWMSInspireMetadataUrlType->findText(
|
||||
QgsProject::instance()->readEntry( "WMSInspire", "/metadataUrlType", "" )
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
QString inspireTemporalReference = QgsProject::instance()->readEntry( "WMSInspire", "/temporalReference", "" );
|
||||
if ( !inspireTemporalReference.isEmpty() )
|
||||
{
|
||||
mWMSInspireScenario2->setChecked( true );
|
||||
mWMSInspireTemporalReference->setDate( QDate::fromString( inspireTemporalReference, "yyyy-MM-dd" ) );
|
||||
}
|
||||
QString inspireMetadataDate = QgsProject::instance()->readEntry( "WMSInspire", "/metadataDate", "" );
|
||||
if ( !inspireMetadataDate.isEmpty() )
|
||||
{
|
||||
mWMSInspireScenario2->setChecked( true );
|
||||
mWMSInspireMetadataDate->setDate( QDate::fromString( inspireMetadataDate, "yyyy-MM-dd" ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WMS GetFeatureInfo precision
|
||||
int WMSprecision = QgsProject::instance()->readNumEntry( "WMSPrecision", "/", -1 );
|
||||
if ( WMSprecision != -1 )
|
||||
@ -790,7 +861,10 @@ void QgsProjectProperties::apply()
|
||||
|
||||
QgsProject::instance()->writeEntry( "WMSServiceCapabilities", "/", grpOWSServiceCapabilities->isChecked() );
|
||||
QgsProject::instance()->writeEntry( "WMSServiceTitle", "/", mWMSTitle->text() );
|
||||
QgsProject::instance()->writeEntry( "WMSRootName", "/", mWMSName->text() );
|
||||
|
||||
if ( !mWMSName->text().isEmpty() )
|
||||
QgsProject::instance()->writeEntry( "WMSRootName", "/", mWMSName->text() );
|
||||
|
||||
QgsProject::instance()->writeEntry( "WMSContactOrganization", "/", mWMSContactOrganization->text() );
|
||||
QgsProject::instance()->writeEntry( "WMSContactPerson", "/", mWMSContactPerson->text() );
|
||||
QgsProject::instance()->writeEntry( "WMSContactMail", "/", mWMSContactMail->text() );
|
||||
@ -802,7 +876,7 @@ void QgsProjectProperties::apply()
|
||||
// WMS Contact Position
|
||||
int contactPositionIndex = mWMSContactPositionCb->currentIndex();
|
||||
QString contactPositionText = mWMSContactPositionCb->currentText();
|
||||
if ( contactPositionText != "" && contactPositionText == mWMSContactPositionCb->itemText( contactPositionIndex ) )
|
||||
if ( !contactPositionText.isEmpty() && contactPositionText == mWMSContactPositionCb->itemText( contactPositionIndex ) )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSContactPosition", "/", mWMSContactPositionCb->itemData( contactPositionIndex ).toString() );
|
||||
}
|
||||
@ -814,7 +888,7 @@ void QgsProjectProperties::apply()
|
||||
// WMS Fees
|
||||
int feesIndex = mWMSFeesCb->currentIndex();
|
||||
QString feesText = mWMSFeesCb->currentText();
|
||||
if ( feesText != "" && feesText == mWMSFeesCb->itemText( feesIndex ) )
|
||||
if ( !feesText.isEmpty() && feesText == mWMSFeesCb->itemText( feesIndex ) )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSFees", "/", mWMSFeesCb->itemData( feesIndex ).toString() );
|
||||
}
|
||||
@ -826,7 +900,7 @@ void QgsProjectProperties::apply()
|
||||
// WMS Access Constraints
|
||||
int accessConstraintsIndex = mWMSAccessConstraintsCb->currentIndex();
|
||||
QString accessConstraintsText = mWMSAccessConstraintsCb->currentText();
|
||||
if ( accessConstraintsText != "" && accessConstraintsText == mWMSAccessConstraintsCb->itemText( accessConstraintsIndex ) )
|
||||
if ( !accessConstraintsText.isEmpty() && accessConstraintsText == mWMSAccessConstraintsCb->itemText( accessConstraintsIndex ) )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", mWMSAccessConstraintsCb->itemData( accessConstraintsIndex ).toString() );
|
||||
}
|
||||
@ -847,6 +921,27 @@ void QgsProjectProperties::apply()
|
||||
QgsProject::instance()->removeEntry( "WMSKeywordList", "/" );
|
||||
}
|
||||
|
||||
// WMS INSPIRE configuration
|
||||
QgsProject::instance()->removeEntry( "WMSInspire", "/" );
|
||||
if ( mWMSInspire->isChecked() )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/activated", mWMSInspire->isChecked() );
|
||||
|
||||
int inspireLanguageIndex = mWMSInspireLanguage->currentIndex();
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/language", mWMSInspireLanguage->itemData( inspireLanguageIndex ).toString() );
|
||||
|
||||
if ( mWMSInspireScenario1->isChecked() )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/metadataUrl", mWMSInspireMetadataUrl->text() );
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/metadataUrlType", mWMSInspireMetadataUrlType->currentText() );
|
||||
}
|
||||
else if ( mWMSInspireScenario2->isChecked() )
|
||||
{
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/temporalReference", mWMSInspireTemporalReference->date().toString( "yyyy-MM-dd" ) );
|
||||
QgsProject::instance()->writeEntry( "WMSInspire", "/metadataDate", mWMSInspireMetadataDate->date().toString( "yyyy-MM-dd" ) );
|
||||
}
|
||||
}
|
||||
|
||||
// WMS GetFeatureInfo geometry precision (decimal places)
|
||||
QgsProject::instance()->writeEntry( "WMSPrecision", "/", mWMSPrecisionSpinBox->text() );
|
||||
|
||||
@ -1326,6 +1421,20 @@ void QgsProjectProperties::on_pbnWFSLayersSelectAll_clicked()
|
||||
}
|
||||
}
|
||||
|
||||
void QgsProjectProperties::on_mWMSInspireScenario1_toggled( bool on )
|
||||
{
|
||||
mWMSInspireScenario2->blockSignals( true );
|
||||
mWMSInspireScenario2->setChecked( !on );
|
||||
mWMSInspireScenario2->blockSignals( false );
|
||||
}
|
||||
|
||||
void QgsProjectProperties::on_mWMSInspireScenario2_toggled( bool on )
|
||||
{
|
||||
mWMSInspireScenario1->blockSignals( true );
|
||||
mWMSInspireScenario1->setChecked( !on );
|
||||
mWMSInspireScenario1->blockSignals( false );
|
||||
}
|
||||
|
||||
void QgsProjectProperties::on_pbnWFSLayersUnselectAll_clicked()
|
||||
{
|
||||
for ( int i = 0; i < twWFSLayers->rowCount(); i++ )
|
||||
@ -1551,7 +1660,7 @@ void QgsProjectProperties::on_mTransparencySpinBox_valueChanged( int value )
|
||||
void QgsProjectProperties::editSymbol( QComboBox* cbo )
|
||||
{
|
||||
QString symbolName = cbo->currentText();
|
||||
if ( symbolName == "" )
|
||||
if ( symbolName.isEmpty() )
|
||||
{
|
||||
QMessageBox::information( this, "", tr( "Select a valid symbol" ) );
|
||||
return;
|
||||
|
@ -104,6 +104,8 @@ class APP_EXPORT QgsProjectProperties : public QgsOptionsDialogBase, private Ui:
|
||||
void on_mRemoveWMSComposerButton_clicked();
|
||||
void on_mAddLayerRestrictionButton_clicked();
|
||||
void on_mRemoveLayerRestrictionButton_clicked();
|
||||
void on_mWMSInspireScenario1_toggled( bool on );
|
||||
void on_mWMSInspireScenario2_toggled( bool on );
|
||||
|
||||
/*!
|
||||
* Slots to select/unselect all the WFS layers
|
||||
|
@ -75,7 +75,7 @@ QgsServerProjectParser::QgsServerProjectParser( QDomDocument* xmlDoc, const QStr
|
||||
}
|
||||
// Setting the QgsProject instance fileName
|
||||
// to help converting relative pathes to absolute
|
||||
if ( mProjectPath != "" )
|
||||
if ( !mProjectPath.isEmpty() )
|
||||
{
|
||||
QgsProject::instance()->setFileName( mProjectPath );
|
||||
}
|
||||
@ -563,7 +563,7 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
|
||||
QDomElement feesElem = propertiesElement.firstChildElement( "WMSFees" );
|
||||
QDomElement wmsFeesElem = doc.createElement( "Fees" );
|
||||
QDomText wmsFeesText = doc.createTextNode( "conditions unknown" ); // default value if access conditions are unknown
|
||||
if ( !feesElem.isNull() && feesElem.text() != "" )
|
||||
if ( !feesElem.isNull() && !feesElem.text().isEmpty() )
|
||||
{
|
||||
wmsFeesText = doc.createTextNode( feesElem.text() );
|
||||
}
|
||||
@ -574,7 +574,7 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
|
||||
QDomElement accessConstraintsElem = propertiesElement.firstChildElement( "WMSAccessConstraints" );
|
||||
QDomElement wmsAccessConstraintsElem = doc.createElement( "AccessConstraints" );
|
||||
QDomText wmsAccessConstraintsText = doc.createTextNode( "None" ); // default value if access constraints are unknown
|
||||
if ( !accessConstraintsElem.isNull() && accessConstraintsElem.text() != "" )
|
||||
if ( !accessConstraintsElem.isNull() && !accessConstraintsElem.text().isEmpty() )
|
||||
{
|
||||
wmsAccessConstraintsText = doc.createTextNode( accessConstraintsElem.text() );
|
||||
}
|
||||
|
@ -708,6 +708,15 @@ int QgsSLDConfigParser::WMSPrecision() const
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool QgsSLDConfigParser::WMSInspireActivated() const
|
||||
{
|
||||
if ( mFallbackParser )
|
||||
{
|
||||
return mFallbackParser->WMSInspireActivated();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QgsComposition* QgsSLDConfigParser::createPrintComposition( const QString& composerTemplate, QgsMapRenderer* mapRenderer, const QMap< QString, QString >& parameterMap ) const
|
||||
{
|
||||
if ( mFallbackParser )
|
||||
@ -734,6 +743,14 @@ void QgsSLDConfigParser::printCapabilities( QDomElement& parentElement, QDomDocu
|
||||
}
|
||||
}
|
||||
|
||||
void QgsSLDConfigParser::inspireCapabilities( QDomElement& parentElement, QDomDocument& doc ) const
|
||||
{
|
||||
if ( mFallbackParser )
|
||||
{
|
||||
mFallbackParser->inspireCapabilities( parentElement, doc );
|
||||
}
|
||||
}
|
||||
|
||||
void QgsSLDConfigParser::setScaleDenominator( double )
|
||||
{
|
||||
//soon...
|
||||
|
@ -104,6 +104,11 @@ class QgsSLDConfigParser : public QgsWMSConfigParser
|
||||
double imageQuality() const override;
|
||||
int WMSPrecision() const override;
|
||||
|
||||
// WMS inspire capabilities
|
||||
bool WMSInspireActivated() const override;
|
||||
/** Adds inspire capabilities to xml document. ParentElem usually is the <Capabilities> element*/
|
||||
void inspireCapabilities( QDomElement& parentElement, QDomDocument& doc ) const override;
|
||||
|
||||
//printing
|
||||
|
||||
/** Creates a print composition, usually for a GetPrint request. Replaces map and label parameters*/
|
||||
|
@ -105,6 +105,11 @@ class SERVER_EXPORT QgsWMSConfigParser
|
||||
// WMS GetFeatureInfo precision (decimal places)
|
||||
virtual int WMSPrecision() const = 0;
|
||||
|
||||
// WMS inspire capabilities
|
||||
virtual bool WMSInspireActivated() const = 0;
|
||||
/** Adds inspire capabilities to xml document. ParentElem usually is the <Capabilities> element*/
|
||||
virtual void inspireCapabilities( QDomElement& parentElement, QDomDocument& doc ) const = 0;
|
||||
|
||||
//printing
|
||||
|
||||
/** Creates a print composition, usually for a GetPrint request. Replaces map and label parameters*/
|
||||
|
@ -96,7 +96,7 @@ void QgsWMSProjectParser::layersAndStylesCapabilities( QDomElement& parentElemen
|
||||
QDomElement layerParentNameElem = doc.createElement( "Name" );
|
||||
//WMS Name
|
||||
QDomElement nameElem = mProjectParser->propertiesElem().firstChildElement( "WMSRootName" );
|
||||
if ( !nameElem.isNull() )
|
||||
if ( !nameElem.isNull() && !nameElem.text().isEmpty() )
|
||||
{
|
||||
QDomText layerParentNameText = doc.createTextNode( nameElem.text() );
|
||||
layerParentNameElem.appendChild( layerParentNameText );
|
||||
@ -450,6 +450,25 @@ int QgsWMSProjectParser::WMSPrecision() const
|
||||
return WMSPrecision;
|
||||
}
|
||||
|
||||
bool QgsWMSProjectParser::WMSInspireActivated() const
|
||||
{
|
||||
bool inspireActivated = false;
|
||||
QDomElement propertiesElem = mProjectParser->propertiesElem();
|
||||
if ( !propertiesElem.isNull() )
|
||||
{
|
||||
QDomElement inspireElem = propertiesElem.firstChildElement( "WMSInspire" );
|
||||
if ( !inspireElem.isNull() )
|
||||
{
|
||||
QDomElement inspireActivatedElem = inspireElem.firstChildElement( "activated" );
|
||||
if ( !inspireActivatedElem.isNull() )
|
||||
{
|
||||
inspireActivated = QVariant( inspireActivatedElem.text() ).toBool();
|
||||
}
|
||||
}
|
||||
}
|
||||
return inspireActivated;
|
||||
}
|
||||
|
||||
QgsComposition* QgsWMSProjectParser::initComposition( const QString& composerTemplate, QgsMapRenderer* mapRenderer, QList< QgsComposerMap* >& mapList, QList< QgsComposerLegend* >& legendList, QList< QgsComposerLabel* >& labelList, QList<const QgsComposerHtml *>& htmlList ) const
|
||||
{
|
||||
//Create composition from xml
|
||||
@ -663,6 +682,123 @@ void QgsWMSProjectParser::printCapabilities( QDomElement& parentElement, QDomDoc
|
||||
parentElement.appendChild( composerTemplatesElem );
|
||||
}
|
||||
|
||||
void QgsWMSProjectParser::inspireCapabilities( QDomElement& parentElement, QDomDocument& doc ) const
|
||||
{
|
||||
if ( !WMSInspireActivated() )
|
||||
return;
|
||||
|
||||
QDomElement propertiesElem = mProjectParser->propertiesElem();
|
||||
if ( propertiesElem.isNull() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QDomElement inspireElem = propertiesElem.firstChildElement( "WMSInspire" );
|
||||
if ( inspireElem.isNull() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QDomElement inspireCapabilitiesElem = doc.createElement( "inspire_vs:ExtendedCapabilities" );
|
||||
|
||||
QDomElement inspireMetadataUrlElem = inspireElem.firstChildElement( "metadataUrl" );
|
||||
if ( !inspireMetadataUrlElem.isNull() )
|
||||
{
|
||||
QDomElement inspireCommonMetadataUrlElem = doc.createElement( "inspire_common:MetadataUrl" );
|
||||
inspireCommonMetadataUrlElem.setAttribute( "xsi:type", "inspire_common:resourceLocatorType" );
|
||||
|
||||
QDomElement inspireCommonMetadataUrlUrlElem = doc.createElement( "inspire_common:URL" );
|
||||
inspireCommonMetadataUrlUrlElem.appendChild( doc.createTextNode( inspireMetadataUrlElem.text() ) );
|
||||
inspireCommonMetadataUrlElem.appendChild( inspireCommonMetadataUrlUrlElem );
|
||||
|
||||
QDomElement inspireMetadataUrlTypeElem = inspireElem.firstChildElement( "metadataUrlType" );
|
||||
if ( !inspireMetadataUrlTypeElem.isNull() )
|
||||
{
|
||||
QDomElement inspireCommonMetadataUrlMediaTypeElem = doc.createElement( "inspire_common:MediaType" );
|
||||
inspireCommonMetadataUrlMediaTypeElem.appendChild( doc.createTextNode( inspireMetadataUrlTypeElem.text() ) );
|
||||
inspireCommonMetadataUrlElem.appendChild( inspireCommonMetadataUrlMediaTypeElem );
|
||||
}
|
||||
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonMetadataUrlElem );
|
||||
}
|
||||
else
|
||||
{
|
||||
QDomElement inspireCommonResourceTypeElem = doc.createElement( "inspire_common:ResourceType" );
|
||||
inspireCommonResourceTypeElem.appendChild( doc.createTextNode( "service" ) );
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonResourceTypeElem );
|
||||
|
||||
QDomElement inspireCommonSpatialDataServiceTypeElem = doc.createElement( "inspire_common:SpatialDataServiceType" );
|
||||
inspireCommonSpatialDataServiceTypeElem.appendChild( doc.createTextNode( "view" ) );
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonSpatialDataServiceTypeElem );
|
||||
|
||||
QDomElement inspireTemporalReferenceElem = inspireElem.firstChildElement( "temporalReference" );
|
||||
if ( !inspireTemporalReferenceElem.isNull() )
|
||||
{
|
||||
QDomElement inspireCommonTemporalReferenceElem = doc.createElement( "inspire_common:TemporalReference" );
|
||||
QDomElement inspireCommonDateOfLastRevisionElem = doc.createElement( "inspire_common:DateOfLastRevision" );
|
||||
inspireCommonDateOfLastRevisionElem.appendChild( doc.createTextNode( inspireTemporalReferenceElem.text() ) );
|
||||
inspireCommonTemporalReferenceElem.appendChild( inspireCommonDateOfLastRevisionElem );
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonTemporalReferenceElem );
|
||||
}
|
||||
|
||||
QDomElement inspireCommonMetadataPointOfContactElem = doc.createElement( "inspire_common:MetadataPointOfContact" );
|
||||
|
||||
QDomElement contactOrganizationElem = propertiesElem.firstChildElement( "WMSContactOrganization" );
|
||||
QDomElement inspireCommonOrganisationNameElem = doc.createElement( "inspire_common:OrganisationName" );
|
||||
if ( !contactOrganizationElem.isNull() )
|
||||
{
|
||||
inspireCommonOrganisationNameElem.appendChild( doc.createTextNode( contactOrganizationElem.text() ) );
|
||||
}
|
||||
inspireCommonMetadataPointOfContactElem.appendChild( inspireCommonOrganisationNameElem );
|
||||
|
||||
QDomElement contactMailElem = propertiesElem.firstChildElement( "WMSContactMail" );
|
||||
QDomElement inspireCommonEmailAddressElem = doc.createElement( "inspire_common:EmailAddress" );
|
||||
if ( !contactMailElem.isNull() )
|
||||
{
|
||||
inspireCommonEmailAddressElem.appendChild( doc.createTextNode( contactMailElem.text() ) );
|
||||
}
|
||||
inspireCommonMetadataPointOfContactElem.appendChild( inspireCommonEmailAddressElem );
|
||||
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonMetadataPointOfContactElem );
|
||||
|
||||
QDomElement inspireMetadataDateElem = inspireElem.firstChildElement( "metadataDate" );
|
||||
if ( !inspireMetadataDateElem.isNull() )
|
||||
{
|
||||
QDomElement inspireCommonMetadataDateElem = doc.createElement( "inspire_common:MetadataDate" );
|
||||
inspireCommonMetadataDateElem.appendChild( doc.createTextNode( inspireMetadataDateElem.text() ) );
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonMetadataDateElem );
|
||||
}
|
||||
}
|
||||
|
||||
QDomElement inspireLanguageElem = inspireElem.firstChildElement( "language" );
|
||||
if ( !inspireLanguageElem.isNull() )
|
||||
{
|
||||
QDomElement inspireCommonSupportedLanguagesElem = doc.createElement( "inspire_common:SupportedLanguages" );
|
||||
inspireCommonSupportedLanguagesElem.setAttribute( "xsi:type", "inspire_common:supportedLanguagesType" );
|
||||
|
||||
QDomElement inspireCommonLanguageElem = doc.createElement( "inspire_common:Language" );
|
||||
inspireCommonLanguageElem.appendChild( doc.createTextNode( inspireLanguageElem.text() ) );
|
||||
|
||||
QDomElement inspireCommonDefaultLanguageElem = doc.createElement( "inspire_common:DefaultLanguage" );
|
||||
inspireCommonDefaultLanguageElem.appendChild( inspireCommonLanguageElem );
|
||||
inspireCommonSupportedLanguagesElem.appendChild( inspireCommonDefaultLanguageElem );
|
||||
|
||||
/* Supported language has to be different from default one
|
||||
QDomElement inspireCommonSupportedLanguageElem = doc.createElement( "inspire_common:SupportedLanguage" );
|
||||
inspireCommonSupportedLanguageElem.appendChild( inspireCommonLanguageElem.cloneNode().toElement() );
|
||||
inspireCommonSupportedLanguagesElem.appendChild( inspireCommonSupportedLanguageElem );
|
||||
*/
|
||||
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonSupportedLanguagesElem );
|
||||
|
||||
QDomElement inspireCommonResponseLanguageElem = doc.createElement( "inspire_common:ResponseLanguage" );
|
||||
inspireCommonResponseLanguageElem.appendChild( inspireCommonLanguageElem.cloneNode().toElement() );
|
||||
inspireCapabilitiesElem.appendChild( inspireCommonResponseLanguageElem );
|
||||
}
|
||||
|
||||
parentElement.appendChild( inspireCapabilitiesElem );
|
||||
}
|
||||
|
||||
QList< QPair< QString, QgsLayerCoordinateTransform > > QgsWMSProjectParser::layerCoordinateTransforms() const
|
||||
{
|
||||
return mProjectParser->layerCoordinateTransforms();
|
||||
|
@ -68,9 +68,12 @@ class SERVER_EXPORT QgsWMSProjectParser : public QgsWMSConfigParser
|
||||
double imageQuality() const override;
|
||||
int WMSPrecision() const override;
|
||||
|
||||
// WMS inspire capabilities
|
||||
bool WMSInspireActivated() const override;
|
||||
void inspireCapabilities( QDomElement& parentElement, QDomDocument& doc ) const override;
|
||||
|
||||
//printing
|
||||
QgsComposition* initComposition( const QString& composerTemplate, QgsMapRenderer* mapRenderer, QList< QgsComposerMap* >& mapList, QList< QgsComposerLegend* >& legendList, QList< QgsComposerLabel* >& labelList, QList<const QgsComposerHtml *>& htmlFrameList ) const override;
|
||||
|
||||
void printCapabilities( QDomElement& parentElement, QDomDocument& doc ) const override;
|
||||
|
||||
//todo: fixme
|
||||
|
@ -442,6 +442,13 @@ QDomDocument QgsWMSServer::getCapabilities( QString version, bool fullProjectInf
|
||||
schemaLocation += " http://www.opengis.net/sld";
|
||||
schemaLocation += " http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd";
|
||||
schemaLocation += " http://www.qgis.org/wms";
|
||||
if ( mConfigParser && mConfigParser->WMSInspireActivated() )
|
||||
{
|
||||
wmsCapabilitiesElement.setAttribute( "xmlns:inspire_common", "http://inspire.ec.europa.eu/schemas/common/1.0" );
|
||||
wmsCapabilitiesElement.setAttribute( "xmlns:inspire_vs", "http://inspire.ec.europa.eu/schemas/inspire_vs/1.0" );
|
||||
schemaLocation += " http://inspire.ec.europa.eu/schemas/inspire_vs/1.0";
|
||||
schemaLocation += " http://inspire.ec.europa.eu/schemas/inspire_vs/1.0/inspire_vs.xsd";
|
||||
}
|
||||
schemaLocation += " " + hrefString + "SERVICE=WMS&REQUEST=GetSchemaExtension";
|
||||
wmsCapabilitiesElement.setAttribute( "xsi:schemaLocation", schemaLocation );
|
||||
}
|
||||
@ -563,6 +570,11 @@ QDomDocument QgsWMSServer::getCapabilities( QString version, bool fullProjectInf
|
||||
elem.setAttribute( "InlineFeature", "0" );
|
||||
elem.setAttribute( "RemoteWCS", "0" );
|
||||
capabilityElement.appendChild( elem );
|
||||
|
||||
if ( mConfigParser && mConfigParser->WMSInspireActivated() )
|
||||
{
|
||||
mConfigParser->inspireCapabilities( capabilityElement, doc );
|
||||
}
|
||||
}
|
||||
|
||||
if ( mConfigParser && fullProjectInformation ) //remove composer templates from GetCapabilities in the long term
|
||||
|
@ -1686,124 +1686,6 @@
|
||||
<string notr="true">projowsserver</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_13">
|
||||
<item row="2" column="0">
|
||||
<widget class="QgsCollapsibleGroupBox" name="mWMSComposerGroupBox">
|
||||
<property name="title">
|
||||
<string>Exclude composers</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="collapsed" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="saveCollapsedState" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_10">
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QListWidget" name="mComposerListWidget"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QToolButton" name="mAddWMSComposerButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QToolButton" name="mRemoveWMSComposerButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QgsCollapsibleGroupBox" name="mLayerRestrictionsGroupBox">
|
||||
<property name="title">
|
||||
<string>Exclude layers</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="collapsed" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="saveCollapsedState" stdset="0">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QListWidget" name="mLayerRestrictionsListWidget"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QToolButton" name="mAddLayerRestrictionButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QToolButton" name="mRemoveLayerRestrictionButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QgsCollapsibleGroupBox" name="grpWMSExt">
|
||||
<property name="title">
|
||||
@ -1913,6 +1795,124 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QgsCollapsibleGroupBox" name="mWMSComposerGroupBox">
|
||||
<property name="title">
|
||||
<string>Exclude composers</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="collapsed">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="saveCollapsedState">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_10">
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QListWidget" name="mComposerListWidget"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QToolButton" name="mAddWMSComposerButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QToolButton" name="mRemoveWMSComposerButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QgsCollapsibleGroupBox" name="mLayerRestrictionsGroupBox">
|
||||
<property name="title">
|
||||
<string>Exclude layers</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="collapsed">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="saveCollapsedState">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QListWidget" name="mLayerRestrictionsListWidget"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QToolButton" name="mAddLayerRestrictionButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QToolButton" name="mRemoveLayerRestrictionButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images/images.qrc">
|
||||
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QgsCollapsibleGroupBox" name="grpWMSList">
|
||||
<property name="title">
|
||||
@ -1960,14 +1960,14 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="mWmsUseLayerIDs">
|
||||
<property name="text">
|
||||
<string>Use layer ids as names</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="2">
|
||||
<item row="10" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||
<item>
|
||||
<widget class="QLabel" name="mWMSImageQualityLabel">
|
||||
@ -1994,14 +1994,14 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QCheckBox" name="mAddWktGeometryCheckBox">
|
||||
<property name="text">
|
||||
<string>Add geometry to feature response</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<item row="9" column="0" colspan="2">
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="mMaxWidthLabel">
|
||||
@ -2048,7 +2048,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<item row="7" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="grpWMSPrecision">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
@ -2072,7 +2072,7 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<item row="8" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="mWMSUrlLabel">
|
||||
@ -2086,6 +2086,138 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QgsCollapsibleGroupBox" name="mWMSInspire">
|
||||
<property name="title">
|
||||
<string>INSPIRE (European directive)</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_14">
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="mWMSInspireLanguage">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Service language</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="mWMSInspireScenario2">
|
||||
<property name="title">
|
||||
<string>Scenario 2 - INSPIRE related fields using embedded service metadata:</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_17">
|
||||
<item row="0" column="1">
|
||||
<widget class="QDateEdit" name="mWMSInspireTemporalReference">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>Metadata date</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDateEdit" name="mWMSInspireMetadataDate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>Last revision date</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="mWMSInspireScenario1">
|
||||
<property name="title">
|
||||
<string>Scenario 1 - INSPIRE related fields using referenced external service metadata</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_15">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="mWMSInspireMetadataUrl"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Metadata URL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="mWMSInspireMetadataUrlType">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>application/vnd.iso.19139+xml</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>application/vnd.ogc.csw.GetRecordByIdResponse_xml</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>application/vnd.ogc.csw_xml</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="text">
|
||||
<string>URL mime/type</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -168,6 +168,35 @@ class TestQgsServer(unittest.TestCase):
|
||||
for request in ('GetCapabilities', 'GetProjectSettings'):
|
||||
self.wms_request_compare(request)
|
||||
|
||||
# WMS INSPIRE tests
|
||||
def wms_inspire_request_compare(self, request):
|
||||
project = self.testdata_path + "test+project_inspire.qgs"
|
||||
assert os.path.exists(project), "Project file not found: " + project
|
||||
|
||||
query_string = 'MAP=%s&SERVICE=WMS&VERSION=1.3.0&REQUEST=%s' % (urllib.quote(project), request)
|
||||
header, body = [str(_v) for _v in self.server.handleRequest(query_string)]
|
||||
response = header + body
|
||||
f = open(self.testdata_path + request.lower() + '_inspire.txt')
|
||||
expected = f.read()
|
||||
f.close()
|
||||
# Store the output for debug or to regenerate the reference documents:
|
||||
"""
|
||||
f = open(os.path.dirname(__file__) + '/expected.txt', 'w+')
|
||||
f.write(expected)
|
||||
f.close()
|
||||
f = open(os.path.dirname(__file__) + '/response.txt', 'w+')
|
||||
f.write(response)
|
||||
f.close()
|
||||
"""
|
||||
response = re.sub(RE_STRIP_PATH, '', response)
|
||||
expected = re.sub(RE_STRIP_PATH, '', expected)
|
||||
self.assertEqual(response, expected, msg="request %s failed.\n Query: %s\n Expected:\n%s\n\n Response:\n%s" % (query_string, request, expected, response))
|
||||
|
||||
def test_project_wms_inspire(self):
|
||||
"""Test some WMS request"""
|
||||
for request in ('GetCapabilities',):
|
||||
self.wms_inspire_request_compare(request)
|
||||
|
||||
# WFS tests
|
||||
def wfs_request_compare(self, request):
|
||||
project = self.testdata_path + "test+project_wfs.qgs"
|
||||
|
161
tests/testdata/qgis_server/getcapabilities_inspire.txt
vendored
Normal file
161
tests/testdata/qgis_server/getcapabilities_inspire.txt
vendored
Normal file
@ -0,0 +1,161 @@
|
||||
Content-Length: 7368
|
||||
Content-Type: text/xml; charset=utf-8
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WMS_Capabilities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:inspire_vs="http://inspire.ec.europa.eu/schemas/inspire_vs/1.0" xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" version="1.3.0" xmlns="http://www.opengis.net/wms" xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd http://www.qgis.org/wms http://inspire.ec.europa.eu/schemas/inspire_vs/1.0 http://inspire.ec.europa.eu/schemas/inspire_vs/1.0/inspire_vs.xsd http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&SERVICE=WMS&REQUEST=GetSchemaExtension" xmlns:sld="http://www.opengis.net/sld" xmlns:qgs="http://www.qgis.org/wms">
|
||||
<Service>
|
||||
<Name>WMS</Name>
|
||||
<Title>QGIS TestProject</Title>
|
||||
<Abstract>Some UTF8 text èòù</Abstract>
|
||||
<KeywordList>
|
||||
<Keyword vocabulary="ISO">infoMapAccessService</Keyword>
|
||||
</KeywordList>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""/>
|
||||
<ContactInformation>
|
||||
<ContactPersonPrimary>
|
||||
<ContactPerson>Alessandro Pasotti</ContactPerson>
|
||||
<ContactOrganization>QGIS dev team</ContactOrganization>
|
||||
<ContactPosition>originator</ContactPosition>
|
||||
</ContactPersonPrimary>
|
||||
<ContactVoiceTelephone></ContactVoiceTelephone>
|
||||
<ContactElectronicMailAddress>elpaso@itopen.it</ContactElectronicMailAddress>
|
||||
</ContactInformation>
|
||||
<Fees>conditions unknown</Fees>
|
||||
<AccessConstraints>None</AccessConstraints>
|
||||
</Service>
|
||||
<Capability>
|
||||
<Request>
|
||||
<GetCapabilities>
|
||||
<Format>text/xml</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</GetCapabilities>
|
||||
<GetMap>
|
||||
<Format>image/jpeg</Format>
|
||||
<Format>image/png</Format>
|
||||
<Format>image/png; mode=16bit</Format>
|
||||
<Format>image/png; mode=8bit</Format>
|
||||
<Format>image/png; mode=1bit</Format>
|
||||
<Format>application/dxf</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</GetMap>
|
||||
<GetFeatureInfo>
|
||||
<Format>text/plain</Format>
|
||||
<Format>text/html</Format>
|
||||
<Format>text/xml</Format>
|
||||
<Format>application/vnd.ogc.gml</Format>
|
||||
<Format>application/vnd.ogc.gml/3.1.1</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</GetFeatureInfo>
|
||||
<sld:GetLegendGraphic>
|
||||
<Format>image/jpeg</Format>
|
||||
<Format>image/png</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</sld:GetLegendGraphic>
|
||||
<sld:DescribeLayer>
|
||||
<Format>text/xml</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</sld:DescribeLayer>
|
||||
<qgs:GetStyles>
|
||||
<Format>text/xml</Format>
|
||||
<DCPType>
|
||||
<HTTP>
|
||||
<Get>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&"/>
|
||||
</Get>
|
||||
</HTTP>
|
||||
</DCPType>
|
||||
</qgs:GetStyles>
|
||||
</Request>
|
||||
<Exception>
|
||||
<Format>text/xml</Format>
|
||||
</Exception>
|
||||
<sld:UserDefinedSymbolization RemoteWFS="0" RemoteWCS="0" InlineFeature="0" UserStyle="1" SupportSLD="1" UserLayer="0"/>
|
||||
<inspire_vs:ExtendedCapabilities>
|
||||
<inspire_common:ResourceType>service</inspire_common:ResourceType>
|
||||
<inspire_common:SpatialDataServiceType>view</inspire_common:SpatialDataServiceType>
|
||||
<inspire_common:TemporalReference>
|
||||
<inspire_common:DateOfLastRevision>2016-01-01</inspire_common:DateOfLastRevision>
|
||||
</inspire_common:TemporalReference>
|
||||
<inspire_common:MetadataPointOfContact>
|
||||
<inspire_common:OrganisationName>QGIS dev team</inspire_common:OrganisationName>
|
||||
<inspire_common:EmailAddress>elpaso@itopen.it</inspire_common:EmailAddress>
|
||||
</inspire_common:MetadataPointOfContact>
|
||||
<inspire_common:MetadataDate>2016-01-01</inspire_common:MetadataDate>
|
||||
<inspire_common:SupportedLanguages xsi:type="inspire_common:supportedLanguagesType">
|
||||
<inspire_common:DefaultLanguage>
|
||||
<inspire_common:Language>ita</inspire_common:Language>
|
||||
</inspire_common:DefaultLanguage>
|
||||
</inspire_common:SupportedLanguages>
|
||||
<inspire_common:ResponseLanguage>
|
||||
<inspire_common:Language>ita</inspire_common:Language>
|
||||
</inspire_common:ResponseLanguage>
|
||||
</inspire_vs:ExtendedCapabilities>
|
||||
<Layer queryable="1">
|
||||
<Name>QGIS Test Project</Name>
|
||||
<Title>QGIS Test Project</Title>
|
||||
<CRS>EPSG:4326</CRS>
|
||||
<CRS>EPSG:3857</CRS>
|
||||
<EX_GeographicBoundingBox>
|
||||
<westBoundLongitude>8.20315</westBoundLongitude>
|
||||
<eastBoundLongitude>8.20416</eastBoundLongitude>
|
||||
<southBoundLatitude>44.9012</southBoundLatitude>
|
||||
<northBoundLatitude>44.9016</northBoundLatitude>
|
||||
</EX_GeographicBoundingBox>
|
||||
<BoundingBox CRS="EPSG:3857" maxx="913283" minx="913171" maxy="5.60604e+06" miny="5.60599e+06"/>
|
||||
<BoundingBox CRS="EPSG:4326" maxx="44.9016" minx="44.9012" maxy="8.20416" miny="8.20315"/>
|
||||
<Layer queryable="1">
|
||||
<Name>testlayer èé</Name>
|
||||
<Title>A test vector layer</Title>
|
||||
<Abstract>A test vector layer with unicode òà</Abstract>
|
||||
<CRS>EPSG:4326</CRS>
|
||||
<CRS>EPSG:3857</CRS>
|
||||
<EX_GeographicBoundingBox>
|
||||
<westBoundLongitude>8.20346</westBoundLongitude>
|
||||
<eastBoundLongitude>8.20355</eastBoundLongitude>
|
||||
<southBoundLatitude>44.9014</southBoundLatitude>
|
||||
<northBoundLatitude>44.9015</northBoundLatitude>
|
||||
</EX_GeographicBoundingBox>
|
||||
<BoundingBox CRS="EPSG:3857" maxx="913215" minx="913205" maxy="5.60603e+06" miny="5.60601e+06"/>
|
||||
<BoundingBox CRS="EPSG:4326" maxx="44.9015" minx="44.9014" maxy="8.20355" miny="8.20346"/>
|
||||
<Style>
|
||||
<Name>default</Name>
|
||||
<Title>default</Title>
|
||||
<LegendURL>
|
||||
<Format>image/png</Format>
|
||||
<OnlineResource xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http:?MAP=/home/dhont/3liz_dev/QGIS/qgis_rldhont/tests/testdata/qgis_server/test%2Bproject_inspire.qgs&&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=testlayer èé&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0"/>
|
||||
</LegendURL>
|
||||
</Style>
|
||||
</Layer>
|
||||
</Layer>
|
||||
</Capability>
|
||||
</WMS_Capabilities>
|
443
tests/testdata/qgis_server/test+project_inspire.qgs
vendored
Normal file
443
tests/testdata/qgis_server/test+project_inspire.qgs
vendored
Normal file
@ -0,0 +1,443 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis projectname="QGIS Test Project" version="2.13.0-Master">
|
||||
<title>QGIS Test Project</title>
|
||||
<layer-tree-group expanded="1" checked="Qt::Checked" name="">
|
||||
<customproperties/>
|
||||
<layer-tree-layer expanded="1" checked="Qt::Checked" id="testlayer20150528120452665" name="testlayer èé">
|
||||
<customproperties/>
|
||||
</layer-tree-layer>
|
||||
</layer-tree-group>
|
||||
<relations/>
|
||||
<mapcanvas>
|
||||
<units>degrees</units>
|
||||
<extent>
|
||||
<xmin>8.20307552799177486</xmin>
|
||||
<ymin>44.90110827867415111</ymin>
|
||||
<xmax>8.20408630219453627</xmax>
|
||||
<ymax>44.90137155943723002</ymax>
|
||||
</extent>
|
||||
<rotation>0</rotation>
|
||||
<projections>1</projections>
|
||||
<destinationsrs>
|
||||
<spatialrefsys>
|
||||
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
|
||||
<srsid>3452</srsid>
|
||||
<srid>4326</srid>
|
||||
<authid>EPSG:4326</authid>
|
||||
<description>WGS 84</description>
|
||||
<projectionacronym>longlat</projectionacronym>
|
||||
<ellipsoidacronym>WGS84</ellipsoidacronym>
|
||||
<geographicflag>true</geographicflag>
|
||||
</spatialrefsys>
|
||||
</destinationsrs>
|
||||
<layer_coordinate_transform_info>
|
||||
<layer_coordinate_transform destAuthId="EPSG:4326" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="testlayer20150528120452665"/>
|
||||
</layer_coordinate_transform_info>
|
||||
</mapcanvas>
|
||||
<layer-tree-canvas>
|
||||
<custom-order enabled="0">
|
||||
<item>testlayer20150528120452665</item>
|
||||
</custom-order>
|
||||
</layer-tree-canvas>
|
||||
<legend updateDrawingOrder="true">
|
||||
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="testlayer èé" showFeatureCount="0">
|
||||
<filegroup open="true" hidden="false">
|
||||
<legendlayerfile isInOverview="0" layerid="testlayer20150528120452665" visible="1"/>
|
||||
</filegroup>
|
||||
</legendlayer>
|
||||
</legend>
|
||||
<projectlayers layercount="1">
|
||||
<maplayer minimumScale="-4.65661e-10" maximumScale="1e+08" simplifyDrawingHints="0" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" geometry="Point" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
|
||||
<id>testlayer20150528120452665</id>
|
||||
<datasource>./testlayer.shp</datasource>
|
||||
<shortname></shortname>
|
||||
<title>A test vector layer</title>
|
||||
<abstract>A test vector layer with unicode òà</abstract>
|
||||
<keywordList>
|
||||
<value></value>
|
||||
</keywordList>
|
||||
<layername>testlayer èé</layername>
|
||||
<srs>
|
||||
<spatialrefsys>
|
||||
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
|
||||
<srsid>3452</srsid>
|
||||
<srid>4326</srid>
|
||||
<authid>EPSG:4326</authid>
|
||||
<description>WGS 84</description>
|
||||
<projectionacronym>longlat</projectionacronym>
|
||||
<ellipsoidacronym>WGS84</ellipsoidacronym>
|
||||
<geographicflag>true</geographicflag>
|
||||
</spatialrefsys>
|
||||
</srs>
|
||||
<provider encoding="UTF-8">ogr</provider>
|
||||
<previewExpression></previewExpression>
|
||||
<vectorjoins/>
|
||||
<expressionfields/>
|
||||
<map-layer-style-manager current="">
|
||||
<map-layer-style name=""/>
|
||||
</map-layer-style-manager>
|
||||
<edittypes>
|
||||
<edittype widgetv2type="TextEdit" name="id">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
<edittype widgetv2type="TextEdit" name="name">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
<edittype widgetv2type="TextEdit" name="utf8nameè">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
</edittypes>
|
||||
<renderer-v2 forceraster="0" symbollevels="0" type="singleSymbol">
|
||||
<symbols>
|
||||
<symbol alpha="1" clip_to_extent="1" type="marker" name="0">
|
||||
<layer pass="0" class="SimpleMarker" locked="0">
|
||||
<prop k="angle" v="0"/>
|
||||
<prop k="color" v="102,164,67,255"/>
|
||||
<prop k="horizontal_anchor_point" v="1"/>
|
||||
<prop k="name" v="circle"/>
|
||||
<prop k="offset" v="0,0"/>
|
||||
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="outline_color" v="0,0,0,255"/>
|
||||
<prop k="outline_style" v="solid"/>
|
||||
<prop k="outline_width" v="0"/>
|
||||
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
|
||||
<prop k="outline_width_unit" v="MM"/>
|
||||
<prop k="scale_method" v="area"/>
|
||||
<prop k="size" v="2"/>
|
||||
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
|
||||
<prop k="size_unit" v="MM"/>
|
||||
<prop k="vertical_anchor_point" v="1"/>
|
||||
<effect enabled="0" type="effectStack">
|
||||
<effect type="drawSource">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="1"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
</effect>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale scalemethod="diameter"/>
|
||||
<effect enabled="0" type="effectStack">
|
||||
<effect type="drawSource">
|
||||
<prop k="blend_mode" v="0"/>
|
||||
<prop k="draw_mode" v="2"/>
|
||||
<prop k="enabled" v="1"/>
|
||||
<prop k="transparency" v="0"/>
|
||||
</effect>
|
||||
</effect>
|
||||
</renderer-v2>
|
||||
<labeling type="simple"/>
|
||||
<customproperties>
|
||||
<property key="labeling" value="pal"/>
|
||||
<property key="labeling/addDirectionSymbol" value="false"/>
|
||||
<property key="labeling/angleOffset" value="0"/>
|
||||
<property key="labeling/blendMode" value="0"/>
|
||||
<property key="labeling/bufferBlendMode" value="0"/>
|
||||
<property key="labeling/bufferColorA" value="255"/>
|
||||
<property key="labeling/bufferColorB" value="255"/>
|
||||
<property key="labeling/bufferColorG" value="255"/>
|
||||
<property key="labeling/bufferColorR" value="255"/>
|
||||
<property key="labeling/bufferDraw" value="false"/>
|
||||
<property key="labeling/bufferJoinStyle" value="64"/>
|
||||
<property key="labeling/bufferNoFill" value="false"/>
|
||||
<property key="labeling/bufferSize" value="1"/>
|
||||
<property key="labeling/bufferSizeInMapUnits" value="false"/>
|
||||
<property key="labeling/bufferSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/bufferSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/bufferTransp" value="0"/>
|
||||
<property key="labeling/centroidInside" value="false"/>
|
||||
<property key="labeling/centroidWhole" value="false"/>
|
||||
<property key="labeling/decimals" value="3"/>
|
||||
<property key="labeling/displayAll" value="false"/>
|
||||
<property key="labeling/dist" value="0"/>
|
||||
<property key="labeling/distInMapUnits" value="false"/>
|
||||
<property key="labeling/distMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/distMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/enabled" value="false"/>
|
||||
<property key="labeling/fieldName" value=""/>
|
||||
<property key="labeling/fontBold" value="false"/>
|
||||
<property key="labeling/fontCapitals" value="0"/>
|
||||
<property key="labeling/fontFamily" value="Ubuntu"/>
|
||||
<property key="labeling/fontItalic" value="false"/>
|
||||
<property key="labeling/fontLetterSpacing" value="0"/>
|
||||
<property key="labeling/fontLimitPixelSize" value="false"/>
|
||||
<property key="labeling/fontMaxPixelSize" value="10000"/>
|
||||
<property key="labeling/fontMinPixelSize" value="3"/>
|
||||
<property key="labeling/fontSize" value="9"/>
|
||||
<property key="labeling/fontSizeInMapUnits" value="false"/>
|
||||
<property key="labeling/fontSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/fontSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/fontStrikeout" value="false"/>
|
||||
<property key="labeling/fontUnderline" value="false"/>
|
||||
<property key="labeling/fontWeight" value="50"/>
|
||||
<property key="labeling/fontWordSpacing" value="0"/>
|
||||
<property key="labeling/formatNumbers" value="false"/>
|
||||
<property key="labeling/isExpression" value="true"/>
|
||||
<property key="labeling/labelOffsetInMapUnits" value="true"/>
|
||||
<property key="labeling/labelOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/labelOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/labelPerPart" value="false"/>
|
||||
<property key="labeling/leftDirectionSymbol" value="<"/>
|
||||
<property key="labeling/limitNumLabels" value="false"/>
|
||||
<property key="labeling/maxCurvedCharAngleIn" value="20"/>
|
||||
<property key="labeling/maxCurvedCharAngleOut" value="-20"/>
|
||||
<property key="labeling/maxNumLabels" value="2000"/>
|
||||
<property key="labeling/mergeLines" value="false"/>
|
||||
<property key="labeling/minFeatureSize" value="0"/>
|
||||
<property key="labeling/multilineAlign" value="0"/>
|
||||
<property key="labeling/multilineHeight" value="1"/>
|
||||
<property key="labeling/namedStyle" value="Medium"/>
|
||||
<property key="labeling/obstacle" value="true"/>
|
||||
<property key="labeling/placeDirectionSymbol" value="0"/>
|
||||
<property key="labeling/placement" value="0"/>
|
||||
<property key="labeling/placementFlags" value="0"/>
|
||||
<property key="labeling/plussign" value="false"/>
|
||||
<property key="labeling/preserveRotation" value="true"/>
|
||||
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
|
||||
<property key="labeling/priority" value="5"/>
|
||||
<property key="labeling/quadOffset" value="4"/>
|
||||
<property key="labeling/repeatDistance" value="0"/>
|
||||
<property key="labeling/repeatDistanceMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/repeatDistanceMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/repeatDistanceUnit" value="1"/>
|
||||
<property key="labeling/reverseDirectionSymbol" value="false"/>
|
||||
<property key="labeling/rightDirectionSymbol" value=">"/>
|
||||
<property key="labeling/scaleMax" value="10000000"/>
|
||||
<property key="labeling/scaleMin" value="1"/>
|
||||
<property key="labeling/scaleVisibility" value="false"/>
|
||||
<property key="labeling/shadowBlendMode" value="6"/>
|
||||
<property key="labeling/shadowColorB" value="0"/>
|
||||
<property key="labeling/shadowColorG" value="0"/>
|
||||
<property key="labeling/shadowColorR" value="0"/>
|
||||
<property key="labeling/shadowDraw" value="false"/>
|
||||
<property key="labeling/shadowOffsetAngle" value="135"/>
|
||||
<property key="labeling/shadowOffsetDist" value="1"/>
|
||||
<property key="labeling/shadowOffsetGlobal" value="true"/>
|
||||
<property key="labeling/shadowOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shadowOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shadowOffsetUnits" value="1"/>
|
||||
<property key="labeling/shadowRadius" value="1.5"/>
|
||||
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
|
||||
<property key="labeling/shadowRadiusMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shadowRadiusMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shadowRadiusUnits" value="1"/>
|
||||
<property key="labeling/shadowScale" value="100"/>
|
||||
<property key="labeling/shadowTransparency" value="30"/>
|
||||
<property key="labeling/shadowUnder" value="0"/>
|
||||
<property key="labeling/shapeBlendMode" value="0"/>
|
||||
<property key="labeling/shapeBorderColorA" value="255"/>
|
||||
<property key="labeling/shapeBorderColorB" value="128"/>
|
||||
<property key="labeling/shapeBorderColorG" value="128"/>
|
||||
<property key="labeling/shapeBorderColorR" value="128"/>
|
||||
<property key="labeling/shapeBorderWidth" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeBorderWidthUnits" value="1"/>
|
||||
<property key="labeling/shapeDraw" value="false"/>
|
||||
<property key="labeling/shapeFillColorA" value="255"/>
|
||||
<property key="labeling/shapeFillColorB" value="255"/>
|
||||
<property key="labeling/shapeFillColorG" value="255"/>
|
||||
<property key="labeling/shapeFillColorR" value="255"/>
|
||||
<property key="labeling/shapeJoinStyle" value="64"/>
|
||||
<property key="labeling/shapeOffsetMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeOffsetMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeOffsetUnits" value="1"/>
|
||||
<property key="labeling/shapeOffsetX" value="0"/>
|
||||
<property key="labeling/shapeOffsetY" value="0"/>
|
||||
<property key="labeling/shapeRadiiMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeRadiiMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeRadiiUnits" value="1"/>
|
||||
<property key="labeling/shapeRadiiX" value="0"/>
|
||||
<property key="labeling/shapeRadiiY" value="0"/>
|
||||
<property key="labeling/shapeRotation" value="0"/>
|
||||
<property key="labeling/shapeRotationType" value="0"/>
|
||||
<property key="labeling/shapeSVGFile" value=""/>
|
||||
<property key="labeling/shapeSizeMapUnitMaxScale" value="0"/>
|
||||
<property key="labeling/shapeSizeMapUnitMinScale" value="0"/>
|
||||
<property key="labeling/shapeSizeType" value="0"/>
|
||||
<property key="labeling/shapeSizeUnits" value="1"/>
|
||||
<property key="labeling/shapeSizeX" value="0"/>
|
||||
<property key="labeling/shapeSizeY" value="0"/>
|
||||
<property key="labeling/shapeTransparency" value="0"/>
|
||||
<property key="labeling/shapeType" value="0"/>
|
||||
<property key="labeling/textColorA" value="255"/>
|
||||
<property key="labeling/textColorB" value="0"/>
|
||||
<property key="labeling/textColorG" value="0"/>
|
||||
<property key="labeling/textColorR" value="0"/>
|
||||
<property key="labeling/textTransp" value="0"/>
|
||||
<property key="labeling/upsidedownLabels" value="0"/>
|
||||
<property key="labeling/wrapChar" value=""/>
|
||||
<property key="labeling/xOffset" value="0"/>
|
||||
<property key="labeling/yOffset" value="0"/>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerTransparency>0</layerTransparency>
|
||||
<displayfield>name</displayfield>
|
||||
<label>0</label>
|
||||
<labelattributes>
|
||||
<label fieldname="" text="Label"/>
|
||||
<family fieldname="" name="Ubuntu"/>
|
||||
<size fieldname="" units="pt" value="12"/>
|
||||
<bold fieldname="" on="0"/>
|
||||
<italic fieldname="" on="0"/>
|
||||
<underline fieldname="" on="0"/>
|
||||
<strikeout fieldname="" on="0"/>
|
||||
<color fieldname="" red="0" blue="0" green="0"/>
|
||||
<x fieldname=""/>
|
||||
<y fieldname=""/>
|
||||
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
|
||||
<angle fieldname="" value="0" auto="0"/>
|
||||
<alignment fieldname="" value="center"/>
|
||||
<buffercolor fieldname="" red="255" blue="255" green="255"/>
|
||||
<buffersize fieldname="" units="pt" value="1"/>
|
||||
<bufferenabled fieldname="" on=""/>
|
||||
<multilineenabled fieldname="" on=""/>
|
||||
<selectedonly on=""/>
|
||||
</labelattributes>
|
||||
<SingleCategoryDiagramRenderer diagramType="Pie">
|
||||
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" sizeType="MM" minScaleDenominator="-4.65661e-10">
|
||||
<fontProperties description="Ubuntu,9,-1,5,50,0,0,0,0,0" style=""/>
|
||||
<attribute field="" color="#000000" label=""/>
|
||||
</DiagramCategory>
|
||||
</SingleCategoryDiagramRenderer>
|
||||
<DiagramLayerSettings yPosColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" showAll="1"/>
|
||||
<annotationform>.</annotationform>
|
||||
<excludeAttributesWMS/>
|
||||
<excludeAttributesWFS/>
|
||||
<attributeactions/>
|
||||
<editform>.</editform>
|
||||
<editforminit/>
|
||||
<editforminitcodesource>0</editforminitcodesource>
|
||||
<editforminitfilepath>.</editforminitfilepath>
|
||||
<editforminitcode><![CDATA[]]></editforminitcode>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<widgets/>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
<edittypes>
|
||||
<edittype widgetv2type="TextEdit" name="id">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
<edittype widgetv2type="TextEdit" name="name">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
<edittype widgetv2type="TextEdit" name="utf8nameè">
|
||||
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
|
||||
</edittype>
|
||||
</edittypes>
|
||||
</maplayer>
|
||||
</projectlayers>
|
||||
<properties>
|
||||
<WMSUrl type="QString"></WMSUrl>
|
||||
<SpatialRefSys>
|
||||
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
|
||||
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
|
||||
<ProjectCRSID type="int">3452</ProjectCRSID>
|
||||
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
|
||||
</SpatialRefSys>
|
||||
<Legend>
|
||||
<filterByMap type="bool">false</filterByMap>
|
||||
</Legend>
|
||||
<WMSExtent type="QStringList">
|
||||
<value>8.20315414376310059</value>
|
||||
<value>44.901236559338642</value>
|
||||
<value>8.204164917965862</value>
|
||||
<value>44.90159838674664172</value>
|
||||
</WMSExtent>
|
||||
<DefaultStyles>
|
||||
<Fill type="QString"></Fill>
|
||||
<Line type="QString"></Line>
|
||||
<Marker type="QString"></Marker>
|
||||
<RandomColors type="bool">true</RandomColors>
|
||||
<AlphaInt type="int">255</AlphaInt>
|
||||
<ColorRamp type="QString"></ColorRamp>
|
||||
</DefaultStyles>
|
||||
<WMSAccessConstraints type="QString">None</WMSAccessConstraints>
|
||||
<WMSInspire>
|
||||
<metadataDate type="QString">2016-01-01</metadataDate>
|
||||
<language type="QString">ita</language>
|
||||
<activated type="bool">true</activated>
|
||||
<temporalReference type="QString">2016-01-01</temporalReference>
|
||||
</WMSInspire>
|
||||
<WMSContactMail type="QString">elpaso@itopen.it</WMSContactMail>
|
||||
<WMSImageQuality type="int">90</WMSImageQuality>
|
||||
<WMSRestrictedComposers type="QStringList"/>
|
||||
<WMSRootName type="QString"></WMSRootName>
|
||||
<WMSServiceTitle type="QString">QGIS TestProject</WMSServiceTitle>
|
||||
<WMSContactPhone type="QString"></WMSContactPhone>
|
||||
<WFSTLayers>
|
||||
<Insert type="QStringList"/>
|
||||
<Update type="QStringList"/>
|
||||
<Delete type="QStringList"/>
|
||||
</WFSTLayers>
|
||||
<WCSLayers type="QStringList"/>
|
||||
<WMSRestrictedLayers type="QStringList"/>
|
||||
<WMSFees type="QString">conditions unknown</WMSFees>
|
||||
<Macros>
|
||||
<pythonCode type="QString"></pythonCode>
|
||||
</Macros>
|
||||
<WMSAddWktGeometry type="bool">true</WMSAddWktGeometry>
|
||||
<WCSUrl type="QString"></WCSUrl>
|
||||
<WMSOnlineResource type="QString"></WMSOnlineResource>
|
||||
<WMSPrecision type="QString">4</WMSPrecision>
|
||||
<Digitizing>
|
||||
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
|
||||
<LayerSnappingList type="QStringList"/>
|
||||
<LayerSnappingEnabledList type="QStringList"/>
|
||||
<SnappingMode type="QString">current_layer</SnappingMode>
|
||||
<AvoidIntersectionsList type="QStringList"/>
|
||||
<LayerSnappingToleranceUnitList type="QStringList"/>
|
||||
<LayerSnapToList type="QStringList"/>
|
||||
<DefaultSnapType type="QString">off</DefaultSnapType>
|
||||
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
|
||||
<LayerSnappingToleranceList type="QStringList"/>
|
||||
</Digitizing>
|
||||
<Identify>
|
||||
<disabledLayers type="QStringList"/>
|
||||
</Identify>
|
||||
<WMSContactPerson type="QString">Alessandro Pasotti</WMSContactPerson>
|
||||
<WMSContactOrganization type="QString">QGIS dev team</WMSContactOrganization>
|
||||
<WMSKeywordList type="QStringList">
|
||||
<value></value>
|
||||
</WMSKeywordList>
|
||||
<Variables>
|
||||
<variableNames type="QStringList"/>
|
||||
<variableValues type="QStringList"/>
|
||||
</Variables>
|
||||
<Paths>
|
||||
<Absolute type="bool">false</Absolute>
|
||||
</Paths>
|
||||
<WMSContactPosition type="QString">originator</WMSContactPosition>
|
||||
<PositionPrecision>
|
||||
<DecimalPlaces type="int">2</DecimalPlaces>
|
||||
<Automatic type="bool">true</Automatic>
|
||||
<DegreeFormat type="QString">D</DegreeFormat>
|
||||
</PositionPrecision>
|
||||
<Gui>
|
||||
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
|
||||
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
|
||||
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
|
||||
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
|
||||
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
|
||||
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
|
||||
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
|
||||
</Gui>
|
||||
<Measure>
|
||||
<Ellipsoid type="QString">WGS84</Ellipsoid>
|
||||
</Measure>
|
||||
<WMSServiceAbstract type="QString">Some UTF8 text èòù</WMSServiceAbstract>
|
||||
<WFSLayers type="QStringList"/>
|
||||
<WFSUrl type="QString"></WFSUrl>
|
||||
<WMSServiceCapabilities type="bool">true</WMSServiceCapabilities>
|
||||
<WMSUseLayerIDs type="bool">false</WMSUseLayerIDs>
|
||||
</properties>
|
||||
<visibility-presets/>
|
||||
</qgis>
|
Loading…
x
Reference in New Issue
Block a user