ThinkGeo.com    |     Documentation    |     Premium Support

ManagedProj4Projection.ConvertProj4ToPrj PT Culture Problem

Hello,


I think there is some sort of problem with ManagedProj4Projection.ConvertProj4ToPrj.


 


This code:


TextWriter t = new StreamWriter(ShapeFilePath.Substring(0, ShapeFilePath.LastIndexOf('.')) + ".prj");

t.WriteLine(ManagedProj4Projection.ConvertProj4ToPrj("+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,0,0,0 +pm=lisbon +units=m +no_defs"));

t.Close();


Is giving the following prj string :


 


PROJCS["Transverse_Mercator",GEOGCS["GCS_International 1909 (Hayford)",DATUM["D_unknown",SPHEROID["intl",63783880,297]],PRIMEM["lisbon","-24,3561111111111"],UNIT["Degree",174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin","3,96666666666667E+15"],PARAMETER["central_meridian",1],PARAMETER["scale_factor",1],PARAMETER["false_easting",200000],PARAMETER["false_northing",300000],UNIT["Meter",1]]


This is wrong, I guess the problem is related with the Culture being set to pt-PT.  


 


 



Rui,


 To help us investigate where the problem might reside, can you tell in what way the returned prj string is wrong? Below is how I see the Proj4 has been converted to Prj. Can you point us out what parameters exactely did not get converted correctly? What makes you think that the cause of the problem is related to the Culture setting being pt-PT? Is this projection in spatialreference.org/ ?


PROJ4


+proj=tmerc                               -->         PROJCS[\"Transverse_Mercator\",        


?                                                  -->         GEOGCS[\"GCS_International 1909 (Hayford)\"


?                                                  -->          DATUM[\"D_unknown\",


+ellps=intl                                 -->           SPHEROID[\"intl\",6378388,297]],


+pm=lisbon                             -->           PRIMEM[\"lisbon\",-9.13190611111111],        


?                                                 -->           UNIT[\"Degree\",0.017453292519943295]]


+proj=tmerc                             -->         PROJECTION[\"Transverse_Mercator\"], 


+lat_0=39.66666666666666  -->      PARAMETER[\"latitude_of_origin\",39.6666666666667], 


+lon_0=1                                    -->       PARAMETER[\"central_meridian\",1],


+k=1                                            -->       PARAMETER[\"scale_factor\",1],


+x_0=200000                            -->       PARAMETER[\"false_easting\",200000],


+y_0=300000                           -->        PARAMETER[\"false_northing\",300000]    


+units=m                                   -->       UNIT[\"Meter\",1]]


+towgs84=-304.046,-60.576,103.64,0,0,0,0     -->    ?


 




Spatialreferences.org
PROJCS["Lisbon (Lisbon)/Portuguese National Grid",GEOGCS["Lisbon (Lisbon)",DATUM["D_Lisbon",SPHEROID["International_1924",6378388,297]],PRIMEM["Lisbon",-9.131906111111112],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",39.66666666666666],PARAMETER["central_meridian",1],PARAMETER["scale_factor",1],PARAMETER["false_easting",200000],PARAMETER["false_northing",300000],UNIT["Meter",1]]

Thinkgeo:
 
PROJCS["Transverse_Mercator",GEOGCS["GCS_International 1909 (Hayford)",DATUM["D_unknown",SPHEROID["intl",63783880,297]],PRIMEM["lisbon","-24,3561111111111"],UNIT["Degree",174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin","3,96666666666667E+15"],PARAMETER["central_meridian",1],PARAMETER["scale_factor",1],PARAMETER["false_easting",200000],PARAMETER["false_northing",300000],UNIT["Meter",1]]

There is the the result returned by thinkgeo has a comma where should have a dot, (decimal separator). You should enforce the culture to EN in the conversion process or not?



Rui,


 I think you are going to find the info on how to set the culture for your app in msdn.microsoft.com/en-us/library/bz9tc508.aspx


"How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization". You will need to set yours to InvariantCulture.



Val, 
 I cannot do that. 
 The application must be in PT-pt.

Rui,


 Ok. Let me find some help from someone in the Development team more familair than me on culture settings issues. As soon as we have something concrete to present to you, we will update this post. Thank you.



It would be nice to have the chance to pass the culture into ConvertProj4ToPrj

Hello Rui, 
  
 Thanks for your advice, we will consider this in the next release. 
  
 Also for this problem, I have create a issue, we will check it in more way, and try to find the solution. 
  
 I will let you know the result as soon as we have it. 
  
 Regards, 
  
 Gary

Any news on this matter?

Hello Rui, 
  
 Our product team is still working on this, I will post here as soon as they fixed the problem. 
  
 Thanks for your patience. 
  
 Regards, 
  
 Gary

Hello Rui, 
  
 Glad to say, we have fixed this problem, we have added overload methods of ConvertProj4ToPrj since 5.5.40.0 accepting IFormatProvider as the parameter, just use CultureInfo.InvariantCulture in your case and you can get the right result. 
  
 Please get the 5.5.40.0 or later and have a try, if you still meet problem, feel free to let us know. 
  
 Regards, 
  
 Gary

Hello Gary,  
 imagine I have in a feature a column with the value 1111,55. If I use this column in a classbreak it should work correctly. But now in the 5.5 version I must pass the column value as 1111.55 or else it will be assumed to have the value 111155. 
  
 Could this be related with the changes you have made?  


Hello Rui, 
  
 Thanks for your further information, I will make a check and test on this, I will let you know the result as soon as possible. 
  
 Regards, 
  
 Gary

Hello Rui, 
  
 Sorry for the inconvenience, this is because we were using InvariantCulture for the string->DBF conversion in the ClassBreak class, we just change it back to CurrentCulture and it should fix the this problem. Please try 5.5.105.0 or 5.5.0.105. 
  
 Regards, 
  
 Gary