[mapguide-commits] r5546 - trunk/MgDev/Web/src/HttpHandler
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Mon Feb 14 21:47:25 EST 2011
Author: liuar
Date: 2011-02-14 18:47:25 -0800 (Mon, 14 Feb 2011)
New Revision: 5546
Modified:
trunk/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp
Log:
Ticket #1594 Layer with EPSG:3398 CS not visible after publishing as WMS
Modified: trunk/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp 2011-02-11 22:50:07 UTC (rev 5545)
+++ trunk/MgDev/Web/src/HttpHandler/WmsMapUtil.cpp 2011-02-15 02:47:25 UTC (rev 5546)
@@ -209,33 +209,6 @@
Ptr<MgResourceIdentifier> fsId = new MgResourceIdentifier(mgLayer->GetFeatureSourceId());
- //Get the layer CS
- Ptr<MgSpatialContextReader> scReader = featureService->GetSpatialContexts(fsId, false);
- if(scReader.p != NULL)
- {
- if(scReader->ReadNext())
- {
- STRING layerCoordSysWkt = scReader->GetCoordinateSystemWkt();
- Ptr<MgCoordinateSystem> layerCs = (layerCoordSysWkt.empty()) ? NULL : factory->Create(layerCoordSysWkt);
- if(layerCs != NULL)
- {
- csTrans = factory->GetTransform(mapCs,layerCs);
- csTrans->IgnoreDatumShiftWarning(true);
- csTrans->IgnoreOutsideDomainWarning(true);
- }
- }
- scReader->Close();
- }
-
- // Transform user defined boundingbox to layer CS
- Ptr<MgEnvelope> layerCsExtent = csTrans->Transform(wmsLayerExtent);
- 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 qualifiedName = mgLayer->GetFeatureClassName();
int pos = qualifiedName.find(L":");
@@ -251,6 +224,51 @@
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();
+
+ Ptr<MgSpatialContextReader> scReader = featureService->GetSpatialContexts(fsId, false);
+ if(scReader.p != NULL)
+ {
+ while(scReader->ReadNext())
+ {
+ 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();
+ }
+ }
+ scReader->Close();
+ }
+
+ Ptr<MgCoordinateSystem> layerCs = (layerCoordSysWkt.empty()) ? NULL : factory->Create(layerCoordSysWkt);
+ if(layerCs != NULL)
+ {
+ csTrans = factory->GetTransform(mapCs,layerCs);
+ csTrans->IgnoreDatumShiftWarning(true);
+ csTrans->IgnoreOutsideDomainWarning(true);
+ }
+
+ // Transform user defined boundingbox to layer CS
+ Ptr<MgEnvelope> layerCsExtent = csTrans->Transform(wmsLayerExtent);
+ 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 boundingboxGeom = L"GeomFromText('POLYGON(("
More information about the mapguide-commits
mailing list