[mapguide-commits] r7753 - branches/2.5/MgDev/Web/src/HttpHandler
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Fri Aug 9 08:53:18 PDT 2013
Author: jng
Date: 2013-08-09 08:53:18 -0700 (Fri, 09 Aug 2013)
New Revision: 7753
Modified:
branches/2.5/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp
Log:
#2312: Backport to 2.5
Modified: branches/2.5/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp
===================================================================
--- branches/2.5/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp 2013-08-09 15:34:29 UTC (rev 7752)
+++ branches/2.5/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp 2013-08-09 15:53:18 UTC (rev 7753)
@@ -196,116 +196,121 @@
layerDef.reset(mgLayer->GetLayerDefinition(resourceService,resId));
MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(layerDef.get());
MdfModel::GridLayerDefinition* gl = dynamic_cast<MdfModel::GridLayerDefinition*>(layerDef.get());
+ MdfModel::DrawingLayerDefinition* dl = dynamic_cast<MdfModel::DrawingLayerDefinition*>(layerDef.get());
- // Spatial filter
- STRING filter;
-
- // Vector Layer
- if(NULL != vl)
+ // This layer filter business does not apply to drawing layers as a DrawingLayerDefinition does not
+ // provide any filtering mechanism. Such layers will be added as-is
+ if (NULL == dl)
{
- filter = vl->GetFilter();
- }
- // Grid Layer
- if(NULL != gl)
- {
- filter = gl->GetFilter();
- }
+ // Spatial filter
+ STRING filter;
+ // Vector Layer
+ if(NULL != vl)
+ {
+ filter = vl->GetFilter();
+ }
+ // Grid Layer
+ if(NULL != gl)
+ {
+ filter = gl->GetFilter();
+ }
- Ptr<MgResourceIdentifier> fsId = new MgResourceIdentifier(mgLayer->GetFeatureSourceId());
+ Ptr<MgResourceIdentifier> fsId = new MgResourceIdentifier(mgLayer->GetFeatureSourceId());
- STRING qualifiedName = mgLayer->GetFeatureClassName();
+ STRING qualifiedName = mgLayer->GetFeatureClassName();
- int pos = qualifiedName.find(L":");
- STRING schemaName = qualifiedName.substr(0,pos);
- STRING className = qualifiedName.substr(pos+1,qualifiedName.length()-pos-1);
+ int pos = qualifiedName.find(L":");
+ STRING schemaName = qualifiedName.substr(0,pos);
+ STRING className = qualifiedName.substr(pos+1,qualifiedName.length()-pos-1);
- Ptr<MgClassDefinition> classDef = featureService->GetClassDefinition(fsId,schemaName,className);
- Ptr<MgPropertyDefinitionCollection> propDefCol = classDef->GetProperties();
+ Ptr<MgClassDefinition> classDef = featureService->GetClassDefinition(fsId,schemaName,className);
+ Ptr<MgPropertyDefinitionCollection> propDefCol = classDef->GetProperties();
- // filter on every geometric properties
- for(int i =0; i<propDefCol->GetCount(); i++)
- {
- Ptr<MgPropertyDefinition> prop = propDefCol->GetItem(i);
- if(prop->GetPropertyType() == MgFeaturePropertyType::GeometricProperty)
+ // filter on every geometric properties
+ for(int i =0; i<propDefCol->GetCount(); i++)
{
- STRING spatialContextAssociation = L"";
- STRING layerCoordSysWkt = L"";
+ Ptr<MgPropertyDefinition> prop = propDefCol->GetItem(i);
+ if(prop->GetPropertyType() == MgFeaturePropertyType::GeometricProperty)
+ {
+ STRING spatialContextAssociation = L"";
+ STRING layerCoordSysWkt = L"";
- //Get the layer CS
- MgGeometricPropertyDefinition* geomProp = static_cast<MgGeometricPropertyDefinition*>(prop.p);
- spatialContextAssociation = geomProp->GetSpatialContextAssociation();
+ //Get the layer CS
+ MgGeometricPropertyDefinition* geomProp = static_cast<MgGeometricPropertyDefinition*>(prop.p);
+ spatialContextAssociation = geomProp->GetSpatialContextAssociation();
- Ptr<MgSpatialContextReader> scReader = featureService->GetSpatialContexts(fsId, false);
- if(scReader.p != NULL)
- {
- while(scReader->ReadNext())
+ Ptr<MgSpatialContextReader> scReader = featureService->GetSpatialContexts(fsId, false);
+ if(scReader.p != NULL)
{
- STRING csrName = scReader->GetName();
- if(!spatialContextAssociation.empty() && csrName == spatialContextAssociation)
+ while(scReader->ReadNext())
{
- layerCoordSysWkt = scReader->GetCoordinateSystemWkt();
- break;
+ STRING csrName = scReader->GetName();
+ if(!spatialContextAssociation.empty() && csrName == spatialContextAssociation)
+ {
+ layerCoordSysWkt = scReader->GetCoordinateSystemWkt();
+ break;
+ }
+ else if(layerCoordSysWkt.empty())
+ {
+ // This is the 1st spatial context returned
+ // This will be overwritten if we find the association
+ layerCoordSysWkt = scReader->GetCoordinateSystemWkt();
+ }
}
- else if(layerCoordSysWkt.empty())
- {
- // This is the 1st spatial context returned
- // This will be overwritten if we find the association
- layerCoordSysWkt = scReader->GetCoordinateSystemWkt();
- }
+ scReader->Close();
}
- scReader->Close();
- }
- Ptr<MgEnvelope> layerCsExtent;
- Ptr<MgCoordinateSystem> layerCs = (layerCoordSysWkt.empty()) ? NULL : factory->Create(layerCoordSysWkt);
- if(layerCs != NULL && mapCs != NULL)
- {
- csTrans = factory->GetTransform(mapCs,layerCs);
- csTrans->IgnoreDatumShiftWarning(true);
- csTrans->IgnoreOutsideDomainWarning(true);
- // Transform user defined boundingbox to layer CS
- layerCsExtent = csTrans->Transform(wmsLayerExtent);
- }
- else
- {
- layerCsExtent = extents;
- }
- Ptr<MgCoordinate> layerCsLowerLeftCoordinate = layerCsExtent->GetLowerLeftCoordinate();
- Ptr<MgCoordinate> layerCsUpperRightCoordinate = layerCsExtent->GetUpperRightCoordinate();
- MgUtil::DoubleToString(layerCsLowerLeftCoordinate->GetX(),sMinX);
- MgUtil::DoubleToString(layerCsLowerLeftCoordinate->GetY(),sMinY);
- MgUtil::DoubleToString(layerCsUpperRightCoordinate->GetX(),sMaxX);
- MgUtil::DoubleToString(layerCsUpperRightCoordinate->GetY(),sMaxY);
+ Ptr<MgEnvelope> layerCsExtent;
+ Ptr<MgCoordinateSystem> layerCs = (layerCoordSysWkt.empty()) ? NULL : factory->Create(layerCoordSysWkt);
+ if(layerCs != NULL && mapCs != NULL)
+ {
+ csTrans = factory->GetTransform(mapCs,layerCs);
+ csTrans->IgnoreDatumShiftWarning(true);
+ csTrans->IgnoreOutsideDomainWarning(true);
+ // Transform user defined boundingbox to layer CS
+ layerCsExtent = csTrans->Transform(wmsLayerExtent);
+ }
+ else
+ {
+ layerCsExtent = extents;
+ }
+ Ptr<MgCoordinate> layerCsLowerLeftCoordinate = layerCsExtent->GetLowerLeftCoordinate();
+ Ptr<MgCoordinate> layerCsUpperRightCoordinate = layerCsExtent->GetUpperRightCoordinate();
+ MgUtil::DoubleToString(layerCsLowerLeftCoordinate->GetX(),sMinX);
+ MgUtil::DoubleToString(layerCsLowerLeftCoordinate->GetY(),sMinY);
+ MgUtil::DoubleToString(layerCsUpperRightCoordinate->GetX(),sMaxX);
+ MgUtil::DoubleToString(layerCsUpperRightCoordinate->GetY(),sMaxY);
- STRING propName = prop->GetName();
+ STRING propName = prop->GetName();
- STRING boundingboxGeom = L"GeomFromText('POLYGON(("
- + sMinX + L" " + sMinY + L","
- + sMaxX + L" " + sMinY + L","
- + sMaxX + L" " + sMaxY + L","
- + sMinX + L" " + sMaxY + L","
- + sMinX + L" " + sMinY + L"))')";
- if(filter.empty())
- {
- filter = L"( " + propName + L" ENVELOPEINTERSECTS " + boundingboxGeom + L" )";
+ STRING boundingboxGeom = L"GeomFromText('POLYGON(("
+ + sMinX + L" " + sMinY + L","
+ + sMaxX + L" " + sMinY + L","
+ + sMaxX + L" " + sMaxY + L","
+ + sMinX + L" " + sMaxY + L","
+ + sMinX + L" " + sMinY + L"))')";
+ if(filter.empty())
+ {
+ filter = L"( " + propName + L" ENVELOPEINTERSECTS " + boundingboxGeom + L" )";
+ }
+ else
+ {
+ filter += L" AND ( " + propName + L" ENVELOPEINTERSECTS " + boundingboxGeom + L" )";
+ }
}
- else
- {
- filter += L" AND ( " + propName + L" ENVELOPEINTERSECTS " + boundingboxGeom + L" )";
- }
}
- }
- // Vector Layer
- if(NULL != vl)
- {
- vl->SetFilter(filter);
+ // Vector Layer
+ if(NULL != vl)
+ {
+ vl->SetFilter(filter);
+ }
+ // Grid Layer
+ if(NULL != gl)
+ {
+ gl->SetFilter(filter);
+ }
}
- // Grid Layer
- if(NULL != gl)
- {
- gl->SetFilter(filter);
- }
MdfParser::SAX2Parser parser;
std::string content = parser.SerializeToXML(layerDef.get(), NULL);
More information about the mapguide-commits
mailing list