ThinkGeo.com    |     Documentation    |     Premium Support

Save as Tab file change projection

Hi



I have some code that allows a user to draw a shape on the map and save it as a tab file.


var features = new List<feature><feature> { feature };
TabFeatureLayer.CreateTabFile(shapePath, cols, features);
TabFeatureLayer.BuildIndexFile(shapePath, BuildIndexMode.Rebuild);

The user has informed me that the projection of the tab file is “Non-Earth”.



How do I configure the projection of the tab file?



Edit - I have attached the saved tab file.



Cheers



Steve

001_TabFile.zip (1.74 KB)

Hi Steve, 
  
 Sorry to say there is such api to support the projection when creating the tab file. Currently, I guess there are two ways to do a workaround: 
 1. Generate a projection file for the tab file and then copy the ".proj" file to standing with the new tab file. This is because the TabFeatureLayer supports to read projection file. 
 2. Insert the projected features before creating the tab file and there would no any projection file in this way. Some codes like the below: 
  
  
            Proj4Projection proj4 = new Proj4Projection();
            proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
            proj4.ExternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(900913); // replace with Non-Earth EPSG
            proj4.Open();

            var features = new List<Feature> { new Feature() };
            var projectedFeatures = new List<Feature>();
            foreach (var item in features)
            {
                projectedFeatures.Add(proj4.ConvertToExternalProjection(item));
            }
            TabFeatureLayer.CreateTabFile(shapePath, cols, features);
            TabFeatureLayer.BuildIndexFile(shapePath, BuildIndexMode.Rebuild);
 
  
 Hope it helps. 
  
 Regards, 
 Johnny

Thanks Johnny 



Shouldn’t the CreateTabFile command use the projectedFeatures list rather than the features list? 



i.e. 


TabFeatureLayer.CreateTabFile(shapePath, cols, projectedFeatures);

Cheers 


Hi Steve, 
  
 Oh, You are right. I forget to replace the features with the projectedFeatures at that line. 
  
 If any questions, please feel free to let us know. 
 Thanks, 
 Johnny

Hi Johnny



I tried the code you provided but it did not add a projection to the tab file. When I inspect the file in MapInfo it says the projection is non earth.



What is the relevance of the internal projection code? Does it look for a projection the same as the internal projection and try and convert that to the external? Or does the internal not matter when you convert to external? 



It complains if the internal is missing. IS there an internal code that maps to non-earth?



Cheers



Steve

Hi Steve,



After some investigations, I guess I have some misunderstandings on the Non-earth. The non-earth is just like a xy planar and we need to determine its original projection. Currently, I guess its projection is closest to the meters(google 900913). So, I attached the prj file here. If you are not sure what’s the original projection the tab file is, I am wondering if your customers know it?



As for the before reply, I guessed you have know the internal projection(the tab file’s original projection) and the non-earth is a kind of some projection(as the external projection). So, I suggested you to convert feature from internal projection to the external projection. But it seems I make mistake as the non-earth does not belongs to any projection system. So, just forget those codes in the last reply.



If there is anything I misunderstand, don’t hesitate to correct me.

Regards,

Johnny

D09679C0-0001.zip (1.85 KB)

Hi Johnny



Thanks for the reply.



How do I use the prj file? Does MapInfo support a prj file? My customer is taking the tab file and importing it into MapInfo. They say they cannot re-project the feature as it does not have an original projection.



Is there no way to add a projection to the feature before I save it to the tab file?



Cheers



Steve

Hi Johnny



I tried loading the zip you sent into MapInfo and got the Non-Earth error. See attached screen shot.



I think I need to add the Datum to the feature before I save it.



This wiki article looks promising but I could not get it to work. 



wiki.thinkgeo.com/wiki/Sourc…100723.zip



How does adding a Datum column to the feature do anything?



Cheers



Steve




Hi Johnny 
  
 I’m convinced now that the TabFeatureLayer.CreateTabFile() method is broken. 
  
 I tested it by taking a feature from an existing layer (one that has a valid datum - I tested it by loading the layer into MapInfo) and used it in CreateTabFile(). When I loaded the tab file into MapInfo it was non-earth. I’m guessing that the CreateTabFile method is not writing the datum info or stripping it. 
  
 Any ideas? 
  
 Cheers 
  
 Steve

Hi Steve, 
  
 CreateTabFile function should works well because we put projection information to separate prj file and should haven’t set datum info in tab file itself, I am trying to test whether prj file works well with MapInfo, could I know whether you are using MapInfo Professional Desktop Edition to load tab file? 
  
 Regards, 
  
 Don

Hi Don


I'm using the free MapInfo ProViewer. I have attached a workspace - if you open this then open the tab file it will show you the projection. My customer has the full MapInfo and is reporting that the projection in non earth.


I didn't think that MapInfo supported a prj file - I thought that was for shapefiles? I tried adding the prj that you sent to a tab file and opening but it made no difference.


Cheers


Steve



KernNonE.zip (432 Bytes)

Happy New Year Steve, 
  
 So sorry to reply you so late! I am not very familiar with Tab format, so I thought the tab file should put projection information in prj file before, now I know that’s not the standard format of MapInfo. 
  
 I just talked with our developer and we have added this feature as an issue. I found we ever planned to support internal projection read before (thinkgeo.com/forums/MapSuite/tabid/143/aft/9300/Default.aspx), I think they should be completed together. 
  
 For a workaround, maybe you want to save the file as shp format, then convert it to tab by some 3rd part utility. 
  
 Regards, 
  
 Don

Hi Don 
  
 Any idea when this issue will be completed? We cannot use shape files as a workaround as this does not our our customer. 
  
 Cheers 
  
 Steve

Hi Steve, 



We installed MapInfo Professional 12 and did some test. 



It looks we can set projection in Map->Options…->Projection… of course the default value is still non-earth. 



So we want to know what’s the next operation your customer want to do for the tab file? 



BTW, I am trying to find a utility to help you save projection information, here I found a topic about it but the fwtools looks cannot be download succeed here, so I couldn’t test it. 



Regards, 



Don