[QGIS Commit] r15557 - in trunk/qgis/src: app mapserver ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Mar 22 03:38:22 EDT 2011
Author: mhugent
Date: 2011-03-22 00:38:22 -0700 (Tue, 22 Mar 2011)
New Revision: 15557
Modified:
trunk/qgis/src/app/qgsprojectproperties.cpp
trunk/qgis/src/mapserver/qgsconfigparser.h
trunk/qgis/src/mapserver/qgsprojectparser.cpp
trunk/qgis/src/mapserver/qgsprojectparser.h
trunk/qgis/src/mapserver/qgssldparser.cpp
trunk/qgis/src/mapserver/qgssldparser.h
trunk/qgis/src/mapserver/qgswmsserver.cpp
trunk/qgis/src/ui/qgsprojectpropertiesbase.ui
Log:
Server: only show wkt geometry in feature info response if selected by user
Modified: trunk/qgis/src/app/qgsprojectproperties.cpp
===================================================================
--- trunk/qgis/src/app/qgsprojectproperties.cpp 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/app/qgsprojectproperties.cpp 2011-03-22 07:38:22 UTC (rev 15557)
@@ -212,6 +212,9 @@
grpWMSList->setChecked( mWMSList->count() > 0 );
+ bool addWktGeometry = QgsProject::instance()->readBoolEntry( "WMSAddWktGeometry", "/" );
+ mAddWktGeometryCheckBox->setChecked( addWktGeometry );
+
restoreState();
}
@@ -408,6 +411,8 @@
QgsProject::instance()->removeEntry( "WMSCrsList", "/" );
}
+ QgsProject::instance()->writeEntry( "WMSAddWktGeometry", "/", mAddWktGeometryCheckBox->isChecked() );
+
//todo XXX set canvas color
emit refresh();
}
Modified: trunk/qgis/src/mapserver/qgsconfigparser.h
===================================================================
--- trunk/qgis/src/mapserver/qgsconfigparser.h 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgsconfigparser.h 2011-03-22 07:38:22 UTC (rev 15557)
@@ -85,6 +85,9 @@
that all possible CRS should be advertised (which could result in very long capabilities documents)*/
virtual QSet<QString> supportedOutputCrsSet() const { return QSet<QString>(); }
+ /**True if the feature info response should contain the wkt geometry for vector features*/
+ virtual bool featureInfoWithWktGeometry() const { return false; }
+
/**Returns information about vector layer aliases. First key is the layer id, (second) key is the field id, value the alias.
Default implementation returns an empty map*/
virtual QMap< QString, QMap< int, QString > > layerAliasInfo() const { return QMap< QString, QMap<int, QString> > (); }
Modified: trunk/qgis/src/mapserver/qgsprojectparser.cpp
===================================================================
--- trunk/qgis/src/mapserver/qgsprojectparser.cpp 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgsprojectparser.cpp 2011-03-22 07:38:22 UTC (rev 15557)
@@ -451,6 +451,32 @@
return crsSet;
}
+bool QgsProjectParser::featureInfoWithWktGeometry() const
+{
+ if ( !mXMLDoc )
+ {
+ return false;
+ }
+
+ QDomElement qgisElem = mXMLDoc->documentElement();
+ if ( qgisElem.isNull() )
+ {
+ return false;
+ }
+ QDomElement propertiesElem = qgisElem.firstChildElement( "properties" );
+ if ( propertiesElem.isNull() )
+ {
+ return false;
+ }
+ QDomElement wktElem = propertiesElem.firstChildElement( "WMSAddWktGeometry" );
+ if ( wktElem.isNull() )
+ {
+ return false;
+ }
+
+ return ( wktElem.text().compare( "true", Qt::CaseInsensitive ) == 0 );
+}
+
QMap< QString, QMap< int, QString > > QgsProjectParser::layerAliasInfo() const
{
QMap< QString, QMap< int, QString > > resultMap;
Modified: trunk/qgis/src/mapserver/qgsprojectparser.h
===================================================================
--- trunk/qgis/src/mapserver/qgsprojectparser.h 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgsprojectparser.h 2011-03-22 07:38:22 UTC (rev 15557)
@@ -69,6 +69,9 @@
*/
virtual QSet<QString> supportedOutputCrsSet() const;
+ /**True if the feature info response should contain the wkt geometry for vector features*/
+ virtual bool featureInfoWithWktGeometry() const;
+
/**Returns information about vector layer aliases. First key is the layer id, (second) key is the field id, value the alias.
Default implementation returns an empty map*/
virtual QMap< QString, QMap< int, QString > > layerAliasInfo() const;
Modified: trunk/qgis/src/mapserver/qgssldparser.cpp
===================================================================
--- trunk/qgis/src/mapserver/qgssldparser.cpp 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgssldparser.cpp 2011-03-22 07:38:22 UTC (rev 15557)
@@ -1552,6 +1552,15 @@
}
}
+bool QgsSLDParser::featureInfoWithWktGeometry() const
+{
+ if ( mFallbackParser )
+ {
+ return mFallbackParser->featureInfoWithWktGeometry();
+ }
+ return false;
+}
+
#ifdef DIAGRAMSERVER
int QgsSLDParser::overlaysFromUserStyle( const QDomElement& userStyleElement, QgsVectorLayer* vec ) const
{
Modified: trunk/qgis/src/mapserver/qgssldparser.h
===================================================================
--- trunk/qgis/src/mapserver/qgssldparser.h 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgssldparser.h 2011-03-22 07:38:22 UTC (rev 15557)
@@ -74,6 +74,9 @@
/**Adds print capabilities to xml document. Delegated to fallback parser*/
void printCapabilities( QDomElement& parentElement, QDomDocument& doc ) const;
+ /**True if the feature info response should contain the wkt geometry for vector features*/
+ virtual bool featureInfoWithWktGeometry() const;
+
private:
/**Don't use the default constructor*/
QgsSLDParser();
Modified: trunk/qgis/src/mapserver/qgswmsserver.cpp
===================================================================
--- trunk/qgis/src/mapserver/qgswmsserver.cpp 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/mapserver/qgswmsserver.cpp 2011-03-22 07:38:22 UTC (rev 15557)
@@ -1063,8 +1063,9 @@
QgsAttributeMap featureAttributes;
int featureCounter = 0;
const QgsFieldMap& fields = provider->fields();
+ bool addWktGeometry = mConfigParser && mConfigParser->featureInfoWithWktGeometry();
- provider->select( provider->attributeIndexes(), searchRect, true, true );
+ provider->select( provider->attributeIndexes(), searchRect, addWktGeometry, true );
while ( provider->nextFeature( feature ) )
{
if ( featureCounter > nFeatures )
@@ -1102,14 +1103,17 @@
}
//also append the wkt geometry as an attribute
- QgsGeometry* geom = feature.geometry();
- if ( geom )
+ if ( addWktGeometry )
{
- QDomElement geometryElement = infoDocument.createElement( "Attribute" );
- geometryElement.setAttribute( "name", "geometry" );
- geometryElement.setAttribute( "value", geom->exportToWkt() );
- geometryElement.setAttribute( "type", "derived" );
- featureElement.appendChild( geometryElement );
+ QgsGeometry* geom = feature.geometry();
+ if ( geom )
+ {
+ QDomElement geometryElement = infoDocument.createElement( "Attribute" );
+ geometryElement.setAttribute( "name", "geometry" );
+ geometryElement.setAttribute( "value", geom->exportToWkt() );
+ geometryElement.setAttribute( "type", "derived" );
+ featureElement.appendChild( geometryElement );
+ }
}
}
Modified: trunk/qgis/src/ui/qgsprojectpropertiesbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsprojectpropertiesbase.ui 2011-03-22 00:04:36 UTC (rev 15556)
+++ trunk/qgis/src/ui/qgsprojectpropertiesbase.ui 2011-03-22 07:38:22 UTC (rev 15557)
@@ -367,7 +367,7 @@
<attribute name="title">
<string>WMS Server</string>
</attribute>
- <layout class="QGridLayout" name="gridLayout_3">
+ <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="grpWMSServiceCapabilities">
<property name="title">
@@ -458,7 +458,7 @@
</layout>
</widget>
</item>
- <item row="3" column="0">
+ <item row="1" column="0">
<widget class="QGroupBox" name="grpWMSExt">
<property name="title">
<string>Advertised Extent</string>
@@ -561,7 +561,7 @@
</layout>
</widget>
</item>
- <item row="3" column="1">
+ <item row="1" column="1" rowspan="2">
<widget class="QGroupBox" name="grpWMSList">
<property name="title">
<string>Coordinate Systems Restrictions</string>
@@ -600,6 +600,13 @@
</layout>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="mAddWktGeometryCheckBox">
+ <property name="text">
+ <string>Add WKT geometry to feature info response</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>
More information about the QGIS-commit
mailing list