[mapguide-commits] r7583 - in sandbox/adsk/2.4j/Server/src/Services: Feature Mapping Rendering

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Jun 8 01:50:20 PDT 2013


Author: christinebao
Date: 2013-06-08 01:50:20 -0700 (Sat, 08 Jun 2013)
New Revision: 7583

Modified:
   sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureService.cpp
   sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.cpp
   sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.h
   sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp
   sandbox/adsk/2.4j/Server/src/Services/Rendering/ServerRenderingService.cpp
Log:
#2258: Serve WFS in alternate CS: SRSNAME not respected in getfeature, alternate SRS not available
Fix bug introduced by previous submission. Render map need to convert from map cs to layer cs, so add a parameter "reverse" to indicate csFactory should create from srcCs to dstCs or vice verse. 

Modified: sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureService.cpp
===================================================================
--- sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureService.cpp	2013-06-08 08:43:05 UTC (rev 7582)
+++ sandbox/adsk/2.4j/Server/src/Services/Feature/ServerFeatureService.cpp	2013-06-08 08:50:20 UTC (rev 7583)
@@ -1862,7 +1862,7 @@
     }
 
     //get a transform from feature space to mapping space
-    TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, lfeatureName, fs, mapCs, &fact, this);
+    TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, lfeatureName, fs, mapCs, &fact, this, false);
     Ptr<MgCoordinateSystemTransform> trans = item? item->GetMgTransform() : NULL;
     FdoPtr<MgGMLCsTransform> transform = new MgGMLCsTransform(trans);
 

Modified: sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.cpp
===================================================================
--- sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.cpp	2013-06-08 08:43:05 UTC (rev 7582)
+++ sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.cpp	2013-06-08 08:50:20 UTC (rev 7583)
@@ -74,7 +74,8 @@
                                                        MgResourceIdentifier* resId,
                                                        MgCoordinateSystem* dstCs,
                                                        MgCoordinateSystemFactory* csFactory,
-                                                       MgFeatureService* svcFeature)
+                                                       MgFeatureService* svcFeature,
+                                                       bool reverse)
 {
     // prevent separate threads from simultaneously creating coordinate systems
     ACE_MT(ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, ace_mon, sm_mutex, NULL));
@@ -158,7 +159,7 @@
         {
             TransformCacheMap::const_iterator iter = cache.find(srcwkt);
             if (cache.end() != iter) item = (*iter).second;
-            if (NULL == item)
+            if (NULL == item || !reverse)
             {
                 Ptr<MgCoordinateSystem> srcCs = csFactory->Create(srcwkt);
                 if (srcCs.p)
@@ -167,7 +168,15 @@
                     cache[srcwkt] = item;
 
                     // Set the coordinate system transform
-                    Ptr<MgCoordinateSystemTransform> trans = csFactory->GetTransform(srcCs, dstCs);
+                    Ptr<MgCoordinateSystemTransform> trans;
+                    if (reverse)
+                    {
+                        trans = csFactory->GetTransform(dstCs, srcCs);
+                    }
+                    else 
+                    {
+                        trans = csFactory->GetTransform(srcCs, dstCs);
+                    }
                     trans->IgnoreDatumShiftWarning(true);
                     trans->IgnoreOutsideDomainWarning(true);
 

Modified: sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.h
===================================================================
--- sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.h	2013-06-08 08:43:05 UTC (rev 7582)
+++ sandbox/adsk/2.4j/Server/src/Services/Feature/TransformCache.h	2013-06-08 08:50:20 UTC (rev 7583)
@@ -44,7 +44,8 @@
                                                   MgResourceIdentifier* resId,
                                                   MgCoordinateSystem* dstCs,
                                                   MgCoordinateSystemFactory* csFactory,
-                                                  MgFeatureService* svcFeature);
+                                                  MgFeatureService* svcFeature,
+                                                  bool reverse);
 
     static void Clear(TransformCacheMap& cacheMap);
 

Modified: sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp
===================================================================
--- sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp	2013-06-08 08:43:05 UTC (rev 7582)
+++ sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp	2013-06-08 08:50:20 UTC (rev 7583)
@@ -519,7 +519,7 @@
                     #endif
 
                     //get a transform from layer coord sys to map coord sys
-                    TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId, dstCs, csFactory, svcFeature);
+                    TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId, dstCs, csFactory, svcFeature, true);
                     TCForProfile = item;
                     Ptr<MgCoordinateSystem> layerCs = item? item->GetCoordSys() : NULL;
                     MgCSTrans* xformer = item? item->GetTransform() : NULL;
@@ -629,7 +629,7 @@
                     TransformCache* item = NULL;
                     {
                         ACE_MT(ACE_GUARD(ACE_Recursive_Thread_Mutex, ace_mon, sg_fdoRfpMutex));
-                        item = TransformCache::GetLayerToMapTransform(transformCache, gl->GetFeatureName(), featResId, dstCs, csFactory, svcFeature);
+                        item = TransformCache::GetLayerToMapTransform(transformCache, gl->GetFeatureName(), featResId, dstCs, csFactory, svcFeature, true);
                     }
                     TCForProfile = item;
 

Modified: sandbox/adsk/2.4j/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- sandbox/adsk/2.4j/Server/src/Services/Rendering/ServerRenderingService.cpp	2013-06-08 08:43:05 UTC (rev 7582)
+++ sandbox/adsk/2.4j/Server/src/Services/Rendering/ServerRenderingService.cpp	2013-06-08 08:50:20 UTC (rev 7583)
@@ -1306,7 +1306,7 @@
 
             //get a transform from layer coord sys to map coord sys
             Ptr<MgCoordinateSystem> mapCs = srs.empty()? NULL : m_pCSFactory->Create(srs);
-            TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId, mapCs, m_pCSFactory, m_svcFeature);
+            TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId, mapCs, m_pCSFactory, m_svcFeature, true);
             Ptr<MgCoordinateSystemTransform> trans = item? item->GetMgTransform() : NULL;
             MgCSTrans* xformer = item? item->GetTransform() : NULL;
 



More information about the mapguide-commits mailing list