[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