?? qgswmsprovider.cpp
字號:
{ capability = (capability | QgsRasterDataProvider::Identify); } QgsDebugMsg("exiting with '" + QString(capability) + "'."); return capability;}QString QgsWmsProvider::getMetadata(){ QString myMetadataQString = ""; // Server Properties section myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Server Properties:"); myMetadataQString += "</td></tr>"; // Use a nested table myMetadataQString += "<tr><td bgcolor=\"white\">"; myMetadataQString += "<table width=\"100%\">"; // Table header myMetadataQString += "<tr><th bgcolor=\"black\">"; myMetadataQString += "<font color=\"white\">" + tr("Property") + "</font>"; myMetadataQString += "</th>"; myMetadataQString += "<th bgcolor=\"black\">"; myMetadataQString += "<font color=\"white\">" + tr("Value") + "</font>"; myMetadataQString += "</th><tr>"; // WMS Version myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("WMS Version"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.version; myMetadataQString += "</td></tr>"; // Service Title myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Title"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.title; myMetadataQString += "</td></tr>"; // Service Abstract myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Abstract"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.abstract; myMetadataQString += "</td></tr>"; // Service Keywords myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Keywords"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.keywordList.join("<br />"); myMetadataQString += "</td></tr>"; // Service Online Resource myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Online Resource"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += "-"; myMetadataQString += "</td></tr>"; // Service Contact Information myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Contact Person"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.contactInformation.contactPersonPrimary.contactPerson; myMetadataQString += "<br />"; myMetadataQString += mCapabilities.service.contactInformation.contactPosition; myMetadataQString += "<br />"; myMetadataQString += mCapabilities.service.contactInformation.contactPersonPrimary.contactOrganization; myMetadataQString += "</td></tr>"; // Service Fees myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Fees"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.fees; myMetadataQString += "</td></tr>"; // Service Access Constraints myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Access Constraints"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.service.accessConstraints; myMetadataQString += "</td></tr>"; // GetMap Request Formats myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Image Formats"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.capability.request.getMap.format.join("<br />"); myMetadataQString += "</td></tr>"; // GetFeatureInfo Request Formats myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Identify Formats"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += mCapabilities.capability.request.getFeatureInfo.format.join("<br />"); myMetadataQString += "</td></tr>"; // Layer Count (as managed by this provider) myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Layer Count"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += QString::number( layersSupported.size() ); myMetadataQString += "</td></tr>"; // Close the nested table myMetadataQString += "</table>"; myMetadataQString += "</td></tr>"; // Iterate through layers for (uint i = 0; i < layersSupported.size(); i++) { // TODO: Handle nested layers QString layerName = layersSupported[i].name; // for aesthetic convenience // Layer Properties section myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Layer Properties: "); myMetadataQString += layerName; myMetadataQString += "</td></tr>"; // Use a nested table myMetadataQString += "<tr><td bgcolor=\"white\">"; myMetadataQString += "<table width=\"100%\">"; // Table header myMetadataQString += "<tr><th bgcolor=\"black\">"; myMetadataQString += "<font color=\"white\">" + tr("Property") + "</font>"; myMetadataQString += "</th>"; myMetadataQString += "<th bgcolor=\"black\">"; myMetadataQString += "<font color=\"white\">" + tr("Value") + "</font>"; myMetadataQString += "</th><tr>"; // Layer Selectivity (as managed by this provider) myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Selected"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += (activeSubLayers.findIndex(layerName) >= 0) ? tr("Yes") : tr("No"); myMetadataQString += "</td></tr>"; // Layer Visibility (as managed by this provider) myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Visibility"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += (activeSubLayers.findIndex(layerName) >= 0) ? ( (activeSubLayerVisibility.find(layerName)->second) ? tr("Visible") : tr("Hidden") ) : tr("n/a"); myMetadataQString += "</td></tr>"; // Layer Title myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Title"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].title; myMetadataQString += "</td></tr>"; // Layer Abstract myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Abstract"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].abstract; myMetadataQString += "</td></tr>"; // Layer Queryability myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Can Identify"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += ((layersSupported[i].queryable) ? tr("Yes") : tr("No")); myMetadataQString += "</td></tr>"; // Layer Opacity myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Can be Transparent"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += ((layersSupported[i].opaque) ? tr("No") : tr("Yes")); myMetadataQString += "</td></tr>"; // Layer Subsetability myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Can Zoom In"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += ((layersSupported[i].noSubsets) ? tr("No") : tr("Yes")); myMetadataQString += "</td></tr>"; // Layer Server Cascade Count myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Cascade Count"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].cascaded; myMetadataQString += "</td></tr>"; // Layer Fixed Width myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Fixed Width"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].fixedWidth; myMetadataQString += "</td></tr>"; // Layer Fixed Height myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Fixed Height"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].fixedHeight; myMetadataQString += "</td></tr>"; // Layer Fixed Height myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("WGS 84 Bounding Box"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += extentForLayer[ layerName ].stringRep().toLocal8Bit().data(); myMetadataQString += "</td></tr>"; // Layer Coordinate Reference Systems for ( uint j = 0; j < layersSupported[i].crs.size(); j++ ) { myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Available in CRS"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].crs[j]; myMetadataQString += "</td></tr>"; } // Layer Styles for (uint j = 0; j < layersSupported[i].style.size(); j++) { myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Available in style"); myMetadataQString += "</td>"; myMetadataQString += "<td>"; // Nested table. myMetadataQString += "<table width=\"100%\">"; // Layer Style Name myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Name"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].style[j].name; myMetadataQString += "</td></tr>"; // Layer Style Title myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Title"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].style[j].title; myMetadataQString += "</td></tr>"; // Layer Style Abstract myMetadataQString += "<tr><td bgcolor=\"gray\">"; myMetadataQString += tr("Abstract"); myMetadataQString += "</td>"; myMetadataQString += "<td bgcolor=\"gray\">"; myMetadataQString += layersSupported[i].style[j].abstract; myMetadataQString += "</td></tr>"; // Close the nested table myMetadataQString += "</table>"; myMetadataQString += "</td></tr>"; } // Close the nested table myMetadataQString += "</table>"; myMetadataQString += "</td></tr>"; } // for each layer QgsDebugMsg("exiting with '" + myMetadataQString + "'."); return myMetadataQString;}QString QgsWmsProvider::identifyAsText(const QgsPoint& point){ QgsDebugMsg("Entering."); // Collect which layers to query on QStringList queryableLayers = QStringList(); QString text = "";; // Test for which layers are suitable for querying with for ( QStringList::const_iterator it = activeSubLayers.begin(); it != activeSubLayers.end(); ++it ) { // Is sublayer visible? if (TRUE == activeSubLayerVisibility.find( *it )->second) { // Is sublayer queryable? if (TRUE == mQueryableForLayer.find( *it )->second) { QgsDebugMsg("Layer '" + *it + "' is queryable."); // Compose request to WMS server QString requestUrl = mGetFeatureInfoUrlBase; QString layer = QUrl::toPercentEncoding(*it); requestUrl += "&"; requestUrl += "QUERY_LAYERS=" + layer ; requestUrl += "&"; //! \todo Need to tie this into the options provided by GetCapabilities requestUrl += "INFO_FORMAT=text/plain";// X,Y in WMS 1.1.1; I,J in WMS 1.3.0// requestUrl += "&";// requestUrl += QString( "I=%1" )// .arg( point.x() );// requestUrl += "&";// requestUrl += QString( "J=%1" )// .arg( point.y() ); requestUrl += "&"; requestUrl += QString( "X=%1" ) .arg( point.x() ); requestUrl += "&"; requestUrl += QString( "Y=%1" ) .arg( point.y() ); text += "---------------\n" + retrieveUrl(requestUrl); } } } if (text.isEmpty()) { // No layers were queryably. This can happen if identify tool was // active when this non-queriable layer was selected. // Return a descriptive text. text = tr("Layer cannot be queried."); } QgsDebugMsg("Exiting with: " + text); return text;}QgsSpatialRefSys QgsWmsProvider::getSRS(){ // TODO: implement return QgsSpatialRefSys();}QString QgsWmsProvider::errorCaptionString(){ return mErrorCaption;}QString QgsWmsProvider::errorString(){ QgsDebugMsg("returning '" + mError + "'."); return mError;}QString QgsWmsProvider::name() const{ return WMS_KEY;} // QgsWmsProvider::name()QString QgsWmsProvider::description() const{ return WMS_DESCRIPTION;} // QgsWmsProvider::description() /** * Class factory to return a pointer to a newly created * QgsWmsProvider object */QGISEXTERN QgsWmsProvider * classFactory(const QString *uri){ return new QgsWmsProvider(*uri);}/** Required key function (used to map the plugin to a data store type)*/QGISEXTERN QString providerKey(){ return WMS_KEY;}/** * Required description function */QGISEXTERN QString description(){ return WMS_DESCRIPTION;} /** * Required isProvider function. Used to determine if this shared library * is a data provider plugin */QGISEXTERN bool isProvider(){ return true;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -