ThinkGeo.com    |     Documentation    |     Premium Support

FDO Extension in 4.5 (on x64)

Hi,


I've tried to utilize the FDO extension in 4.5, but am encountering problems.


First of all, your docs seems to be off for x64 users. Copying the relevant assemblies and dependencies to the "system32" folder didn't work. Only when I copied them to the "SysWOW64" folder instead did it work. I no longer get the "Could not find ... assembly" error.


And yes, I had changed ASP.net to running in 32 bit mode prior to this, as the FdoExtension only works with 32 bit according to the documentation.


But now I just get the error message "Unlicensed For RunTime" displayed on my map, and no data ??


I know that the water mark is due to it running as a test server, but where's the data ?


Please advise.


 



Hi again, 
  
 I may have figured out what’s wrong. 
  
 I’m displaying my TAB together with Google maps, but the TAB file is stored in the projection with epsg srid = 25832. 
  
 I’ve tried to attach a projections object to my TAB layer to have it convert into the Google projection, but to no avail: 
  
 ftsKom.FeatureSource.Projection = New Proj4Projection(25832, 3785) 
  
 All help is appriciated. 


Me again, 
  
 It seems MapSuite doesn’t know how to convert from/to the Google projection, am I right ? 
  
 I’ve tried to attach this projection clause to my layer, but it errs saying “Parameters is null”: 
  
 ftsKom.FeatureSource.Projection = New ManagedProj4Projection( _
                                            ManagedProj4Projection.GetEpsgParameters(25382), _
                                            ManagedProj4Projection.GetGoogleMapParameters()) 
 
  
 I managed to save a copy of my TAB as a new TAB in the Google projection (the correct epsg code is apparently 3857, not 3785, I do remember some confusion about it some time back), and that displays as expected. 
  
 But I would like to know how to display “normal” on top of Google without having to convert in advance. Please help. 
  
 TIA 


Hi Lars I.


I think the MapSuite should support projection conversion automatically by applying the projection to featureSource. Please check the code as following that I used to recreate your problem:


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Map1.MapUnit = GeographyUnit.DecimalDegree;
                Map1.CurrentExtent = new RectangleShape(-96.51477, 30.759543, -94.355788, 28.910652);
                Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);

                WorldMapKitWmsWebOverlay worldMapKitOverlay = new WorldMapKitWmsWebOverlay();
                Map1.CustomOverlays.Add(worldMapKitOverlay);

                TabFileFeatureLayer worldLayer = new TabFileFeatureLayer(MapPath("~/SampleData/world/HoustonMuniBdySamp_Boundary.TAB"), "FID", "OGRSchema", "HoustonMuniBdySamp_Boundary", "GEOMETRY");
                worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(100, GeoColor.SimpleColors.Green), GeoColor.SimpleColors.Green);
                worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

                LayerOverlay staticOverlay = new LayerOverlay("StaticOverlay");
                staticOverlay.IsBaseOverlay = false;
                staticOverlay.Layers.Add(worldLayer);

                Map1.CustomOverlays.Add(staticOverlay);
            }
        }


The demo code is based on the installed “How Do I” samples, and you can find the TAB file in installation folder. Please have a check.
Thanks,
Johnny

Hi Johnny,


I'm not sure what I'm supposed to do here ?


How will this code help me figure out how to reproject a MapInfo TAB (or any other data set) stored in UTM zone 32N on ETRS89 (i.e. EPSG = 25832) into the Google projection ?


 


 



 


Hi, Lars
For your first question, FDO x64 support, the answer is: yes, we do support FDO x64 now since we’ve updated our FDOExtension from FDO 3.4 to FDO 3.5, and there are two sets of DLLs, one is for x86, the other is for x64. However, the new FDOExtension came out a little bit later than the public release of MapSuite 4.5, I’m not sure if it’s ready for down for MapSuite users. You can contact our support to get a copy of the latest MapSuiteFdoExtensionX64 DLL set.
As for your second concern, reproject TAB file into GoogleProjection, I tried to recreate your issue, with the TAB file shipped out with our HowDoI samples, but the result turned out to be correct, the TabFileFeatureLayer was drawn right above the GoogleOverLay.
By the way, we don't have EPSG25832 TAB file so we used of EPSG4326 instead to have a try, so, could you please try applying the following code in the HowDoI Sample, LoadTabFileFeatureLayer.aspx.cs, which works fine when I had my test?
Code Sample:
                Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));
                Map1.MapUnit = GeographyUnit.Meter;
 
                GoogleOverlay google = new GoogleOverlay("Google Map");
                google.JavaScriptLibraryUri = new Uri(ConfigurationManager.AppSettings["GoogleUri"]);
                google.GoogleMapType = GoogleMapType.Normal;
 
                Map1.CustomOverlays.Add(google);
 
                ManagedProj4Projection managedProjection = new ManagedProj4Projection();
                managedProjection.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
                managedProjection.ExternalProjectionParameters = ManagedProj4Projection.GetGoogleMapParameters();
                TabFileFeatureLayer worldLayer = new TabFileFeatureLayer(MapPath("~/SampleData/world/HoustonMuniBdySamp_Boundary.TAB"), "FID", "OGRSchema", "HoustonMuniBdySamp_Boundary", "GEOMETRY");
                worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(100, GeoColor.SimpleColors.Green), GeoColor.SimpleColors.Green);
                worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
 
                worldLayer.FeatureSource.Projection = managedProjection;
 
                LayerOverlay staticOverlay = new LayerOverlay("StaticOverlay");
                staticOverlay.IsBaseOverlay = false;
                staticOverlay.Layers.Add(worldLayer);
                worldLayer.Open();
                Map1.CurrentExtent = worldLayer.GetBoundingBox();
                worldLayer.Close();
                Map1.CustomOverlays.Add(staticOverlay);
 
 
This piece of code shows how to project TAB file of EPSG4326 into GoogleProjection. If the same problem still occurs, could you please provide us your TAB file so that we can have a test of the data?
Any further questions please let us know.
Thanks.
James

Hi James,


As explained in another thread, reprojecting my TAB to Google now suddenly works. Don't know what's changed since Tuesday.


But now neither of my reprojected TAB's works anymore, only the original TAB works !??


I tried to attach a ZIP with the relevant code and the three TAB's in question, but the size limits way to low (½ Mb, the ZIP is 4 Mb).


Where can I send it instead ?


 



Hi james, 
  
 Doh, figured out what was wrong. My mistake !!! 
  


Lars, 
  
 I am glad you figure out the problem. 
  
 About the file attachement, if the size is limited, you can send it by emailing support@thinkgeo.com and let he forward to somebody who is MVP. So next time, you can try it. 
  
 Thanks, 
 James