[mapguide-users] Get Height / Width of Runtime selection

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Thu Sep 17 02:40:28 EDT 2009


The problem with the Anonymous user is that you must create the session 
with that user.
If you attempt to access data from another session, it will work with 
Administrator, but fail with any other user.

Regards, Kenneth Skovhede, GEOGRAF A/S



Jamo skrev:
> I'm trying to create some images straight from mapguide without
>
> This is the code
>
>
>        
> MapGuideApi.MgInitializeWebTier(Request.ServerVariables["APPL_PHYSICAL_PATH"]
> + "../webconfig.ini");
>         MgUserInformation userInfo = new MgUserInformation("Administrator",
> "admin");
>         MgSite site = new MgSite();
>         //connect to site
>         site.Open(userInfo);
>         String sessionId = site.CreateSession();
>         MgSiteConnection siteConnection = new MgSiteConnection();
>         //open site connection
>         siteConnection.Open(userInfo);
>         MgResourceService ResourceService =
> siteConnection.CreateService(MgServiceType.ResourceService) as
> MgResourceService;
>         MgFeatureService FeatureService =
> siteConnection.CreateService(MgServiceType.FeatureService) as
> MgFeatureService;
>         MgRenderingService RenderService =
> siteConnection.CreateService(MgServiceType.RenderingService) as
> MgRenderingService;
>         MgResourceIdentifier mgResourceID = new
> MgResourceIdentifier("Library://portbris/maps/PortBris.MapDefinition");
>         MgMap baseMap = new MgMap(siteConnection);
>         baseMap.Create(ResourceService, mgResourceID, "PortBris");
>         MgMap map = new MgMap(siteConnection);
>
>         String mapSRS = baseMap.MapSRS;
>         MgEnvelope mapExts = baseMap.GetDataExtent();
>         
>         map.Create(mapSRS, mapExts, "CadastreModel");
>         MgSelection thisSel = new MgSelection(map);
>
>         String layerDef = "Session:" + sessionId +
> "//cadSecondary.LayerDefinition";
>         MgResourceIdentifier layerDefId = new
> MgResourceIdentifier(layerDef);
>
>         String dataSource =
> "Library://portbris/data/SQLvmsql01Portbris.FeatureSource";
>         MgByteReader layerDefContent =
> BuildLayerDefinitionContent(dataSource, "cadSecondary_Full", "", "fd0011",
> 50, 50, "", "", "1", "fd0011");
>         ResourceService.SetResource(layerDefId, layerDefContent, null);
>
>         MgLayer myLayer = new MgLayer(layerDefId, ResourceService);
>         myLayer.SetName("cadSecondary");
>         myLayer.SetLegendLabel("Other Cadastre");
>         myLayer.SetDisplayInLegend(true);
>         myLayer.SetSelectable(true);
>         
>         map.GetLayers().Insert(0, myLayer);
>
>
>         myLayer = map.GetLayers().GetItem("cadSecondary") as MgLayer;
>         MgFeatureQueryOptions fQryOpts = new MgFeatureQueryOptions();
>         fQryOpts.SetFilter("BU_NAME LIKE '%FA%'");
>         MgFeatureReader cFeatReader = myLayer.SelectFeatures(fQryOpts);
>         
>         //MgFeatureReader cFeatReader = myLayer.SelectFeatures(null);
>         thisSel.AddFeatures(myLayer as MgLayerBase, cFeatReader, 0);
>         //thisSel.Save(ResourceService,"CadastreModel");
>         Response.Write(thisSel.GetExtents(FeatureService).Height.ToString()
> + " - Feats : " + thisSel.GetSelectedFeaturesCount(myLayer as
> MgLayerBase,myLayer.FeatureClassName).ToString());
>         cFeatReader.Close();
>
>
>
>
>         //double zoomScale = 1;
>         //MgEnvelope ext = thisSel.GetExtents(FeatureService);
>         //double xMin = ext.LowerLeftCoordinate.X - (ext.Width * zoomScale);
>         //double xMax = ext.UpperRightCoordinate.X + (ext.Width *
> zoomScale);
>
>         //double yMin = ext.LowerLeftCoordinate.Y - (ext.Height *
> zoomScale);
>         //double yMax = ext.UpperRightCoordinate.Y + (ext.Height *
> zoomScale);
>
>         //MgEnvelope ext1 = new MgEnvelope(xMin, yMin, xMax, yMax);
>         //int W = 0; int H = 0; double M = 0;
>         //M = 600 / ext1.Width;
>
>         //W = Convert.ToInt32(ext1.Width * M);
>         //H = Convert.ToInt32(ext1.Height * M);
>
>
>         MgColor bColor = new MgColor(map.GetBackgroundColor());
>         MgByteReader byteReader = RenderService.RenderMap(map, thisSel,
> thisSel.GetExtents(FeatureService), 500, 500, bColor, "PNG", true);
>
>         MemoryStream memBuf = new MemoryStream();
>         byte[] byteBuffer = new byte[1024];
>         int numBytes = byteReader.Read(byteBuffer, 1024);
>         while (numBytes > 0)
>         {
>             memBuf.Write(byteBuffer, 0, numBytes);
>             numBytes = byteReader.Read(byteBuffer, 1024);
>         }
>         //Response.ContentType = byteReader.GetMimeType();
>         byte[] content = memBuf.ToArray();
>         //Response.OutputStream.Write(content, 0, content.Length);
>
>
> basically no mater what the mgSelection is 1 feature / 17 features, it seems
> to return the extents of the map....?
>
> Any Ideas...?
>
> I'm trying to generate everything at runtime for this.
>
> Another query is how to use the Anonymouse user, I've tried but it insists
> that they don't have rights to the session repositry?
>   


More information about the mapguide-users mailing list