ThinkGeo.com    |     Documentation    |     Premium Support

GML Example

Hello,


I have just stated using MapSuite and have been looking at the FDO extension.  I was wondering if anybody had an example of working with a GML file as I would find that a very useful thing to do.  Not sure if it makes a difference but I am in the UK and the GML files are as supplied by the Ordnance Survey.


Regards,

Jonathan Rowland



Hi Jonathan, 
  
 We haven’t tested the gml files, but I think you can try this code FdoFeatureLayerlayer = new FdoFeatureLayer(providerName, connectionString, idColumnName); 
 The providerName is something like “OSGeo.FDO”, “OSGeo.OGR”, maybe the gml’s provider name is “OSGeo.Gml”? 
 the connectionString and idColumnName are both depend on your files. 
  
 BTW, we are doing the upgrading for the FdoExtension from 3.5 to 3.6, please make sure your gml file’s version matches the current Fdo version. If you still have problem, could you please send us a gml file to have a test? 
  
 Thanks, 
  
 Edgar

Thank you for the reply unfortunately when I started to experiment I hit another problem with the exception "Could not find MapSuiteFdoExtension.dll assembly".


A previous discussion gis.thinkgeo.com/Support/Dis...fault.aspx stated that this was fixed by using the files from a fully licensed copy of MapSuite rather than the evaluation edition.  At the moment I have the evaluation edition but a purchase order is being processed, do you think it will be OK when I get the full version? or might there be some other issue?


I believe I have copied the files correctly from the MapSuiteFdoExtensionX86 folder to the systemWOW64 folder.  I am also targeting .NET 3.5 so hopefully that is OK.


Regards,

Jonathan



What’s your targeting platform? I think that’s the problem, and please make sure the MapSuiteFdoExtensionX64/X86 folder are under the systemwow64/MapSuite 6.0 folder, 
  
 Regards, 
  
 Edgar

Edgar, 
  
 Thank you, following your suggestions I have made some progress but have hit another problem. 
  
 The actions I have taken are: 
 1.  Clean out all thefiles I had added to System32 and/or SystemWOW64 folders 
 2. Put the MapSuiteFdoExtensionFolderX86 in SystemWOW64 
 3. Checked that I was targeting the x86 platform.  (Also using .NET 3.5 and VS 2008.) 
 4. Used OgrFeatureLayer instead of FDOFeature layer 
  
 I new get the following exception: 
  
 : 
 : 
 InnerException: OSGeo.FDO.Common.Exception 
        Message=“Connect failed: File C:\Users\Jonathan\Documents\ThinkGEO\Example GML\nx04ne\nx04ne.gml appears to be GML but the GML reader can’t\nbe instantiated, likely because Xerces support wasn’t\nconfigured in.” 
        Source=“OSGeo.FDO” 
        StackTrace: 
             at OSGeo.FDO.Connections.IConnectionImp.Open() 
             at MapSuiteFdoExtension.GeoFdoFeatureSource.Open(String providerName, String connectionString, String idColumnName, String featureSchemaName, String featureClassName, String geometryColumnName) 
  
  
 The key bit seems to me to be Xerces bit?  Do you know why this exception might be occuring? 
  
 Regards, 
 Jonathan

Edgar,


Unfortunately I still have not got any further with this problem and wondered if you have found anything out yet? I have tried some different GML files including some downloaded examples from places like:
promap.co.uk/pro_mapping_ordnance.php
examples.oreilly.com/9780596008659/
However the all give the same error (exception detail attached).
My code looks like this:

        private void frmMap_Load(object sender, EventArgs e)
        {

            // Set map unit
            winformsMap1.MapUnit = GeographyUnit.DecimalDegree;

            // FDO 
            OgrFeatureLayer myFDOLayer = new OgrFeatureLayer(@"C:\Users\Jonathan\Documents\ThinkGEO\Example GML\places_gml\places.gml", null);
            myFDOLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Grass1;
            myFDOLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.InternationalBorder1;
            myFDOLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            // Create an overlay and use it to add the layer to the map control
            LayerOverlay lOverlay = new LayerOverlay();
            lOverlay.Layers.Add(myFDOLayer);

            // Put the overlays on the map
            winformsMap1.Overlays.Add(lOverlay);

            // Update the screen
            winformsMap1.Refresh();

        }

 
Would it be helpful and/or OK to send you one of the GML files to try?
Regards,

Jonathan

Hello Jonathan, 
  
 Our Fdo didn’t support the GML feature, you can vote this enhancement to helpdesk.thinkgeo.com/EnhancementTracker. This captures the enhancement request and provides visibility to the customer letting them know that the enhancement is on a list somewhere and that popularity of the enhancement helps set the priority of when the enhancement would be added to the product. This option doesn’t carry any cost for you, and it will help this faster to get into plan.  
   
  Or if you need this function immediately, your account rep can contact you for a professional services.  
   
  Regards,  
   
  Gary

Edgar,


I fear I am still struggling here.  I have re-tried using FdoFeatureLayer and managed to reach the same error as before.  The code I used for this is:



FdoFeatureLayer myFDOLayer = new FdoFeatureLayer("OSGeo.OGR",
  "DataSource=C:\\Users\\Jonathan\\Documents\\ThinkGEO\\Example GML\\places_gml\\places.gml;xsd=C:\\Users\\Jonathan\\Documents\\ThinkGEO\\Example GML\\places_gml\\places.xsd;ReadOnly=TRUE;",
  null);
myFDOLayer.Open();

As a test I have managed to use FdoFeatureLayer to load SHP files like this:



FdoFeatureLayer myFDOLayer = new FdoFeatureLayer("OSGeo.OGR",
   "DataSource=C:\\Users\\Jonathan\\Documents\\ThinkGEO\\Example GML\\places_gml\\ND\\ND_Building.shp;ReadOnly=TRUE;", null);
myFDOLayer.Open();

I would be very grateful if you could try a GML file to verify that MapSuite can handle them OK.  Also in an earlier message you mentioned that FDOExtension was going to level 3.6 (from 3.5), how can I check what version I have and if needed update?  Note: The poperties for the FDOExtension reference show a version of 5.5.0.0 and a runtime version of v2.0.50727.


Incidently as the error mentioned xerces I did try running Regsvr32 on Xerces-c_2_5_0.dll but it did not register - not sure if it was a good idea to try anyway.


Thanks,

Jonathan



Gary,


I think our messages may have crossed in the ether as I didn't notice it before sending my last update to Edgar.  This is quite a setback and I am not sure how best to proceed, but accept that it is something I should have tested during the trial period.  I knew that you didn't provide native support but mistakenly got the impression that it I could use GML through OGR.


Anyway thank you for the update and I will not spend any more time trying to read those files.


Regards,

Jonathan



Hello Jonathan, 
  
 Sorry for any inconvenience this may cause, please feel free to let us know your questions. 
  
 Regards, 
  
 Gary