⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qgswmsprovider.cpp

📁 一个非常好的GIS开源新版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  {    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 + -