ThinkGeo.com    |     Documentation    |     Premium Support

The format of the well known text is incorrect with Swedish regional

Hello



When I change my machine’s regional to Swedish from English I get below exception when I try to parse a valid Well Known Text:



{“Input string was not in a correct format.”}



And this is the stacktrace:



   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.String.System.IConvertible.ToDouble(IFormatProvider provider)
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
   at xRM=.dRo=.iBo=(Type t)
   at xRM=.mxo=.oRo=(IList tokens)
   at xRM=.mxo=.nho=(IList tokens, Boolean skipExtraParenthesis)
   at xRM=.mxo=.nRo=(IList tokens, Boolean skipExtraParenthesis)
   at xRM=.mxo=.qBo=(IList tokens)
   at xRM=.mxo=.rRo=(IList tokens)
   at xRM=.mxo=.pho=(IList tokens)
   at xRM=.mxo=.cRY=(TextReader reader)
   at xRM=.mxo=.cRY=(String wellKnownText)
   at ThinkGeo.MapSuite.Core.BaseShape.CreateShapeFromWellKnownData(String wellKnownText)



The input Well Known Text is:



MULTILINESTRING ((439013.9999 113773.00025, 439095.00005 113945)) 

Which seems to be valid. 



We have set the UI culture in our application’s startup to British English:


protected override void OnStartup(StartupEventArgs e)
{
    try
    {
        var currentUiCulture = new CultureInfo(“en-GB”true);
        Thread.CurrentThread.CurrentCulture = currentUiCulture;
        Thread.CurrentThread.CurrentUICulture = currentUiCulture;
 
 
        base.OnStartup(e);

When I comment out those above lines everything works fine but it doesn’t when with set CurrentCulture and CuttentUICulture. 

It’s strange as I tried to replicate it in a light sample and I couldn’t. But hopefully, the error message and stackstrace will help you to find out the problem? 

My MapSuite version is 9.0.0.55



Thanks,

Shahin









Hi Shahin, 
  
 Thanks for let us know your question. 
  
 The exception information shows it is thrown from: System.Number.ParseDouble, so I think that’s still be the culture problem. 
  
 I tried to reproduce your issue but failed, please let me know whether I need modify more property, I did the changes as below: 
  
 1. Formats: switch to “Swedish(Sweden)” 
 2. Location: Current location switch to “Sweden” 
  
 If I need change any other place please let me know. 
  
 Regards, 
  
 Don 


Hi Shahin, 
  
 Currently, we still can’t recreate your issue but we did some changes based on the exception stack, would you please try the latest dlls version (9.0.0.97 and 9.0.97.0) or higher?  
  
 Please let us know if the modification helps. If not, I think we may need more details to know how to recreate it. 
  
 Thanks, 
  
 Troy

Hi Troy, 
  
 Thanks for your reply. 
 I’m afraid it hasn’t fixed yet. The only workaround we can use is to comment out following lines in OnStartup of our application: 
  
              var currentUiCulture = new CultureInfo(“en-GB”, true); 
                 Thread.CurrentThread.CurrentCulture = currentUiCulture; 
                 Thread.CurrentThread.CurrentUICulture = currentUiCulture; 
  
 I don’t know what else details you need. Please feel free to ask. Your colleague has connected to our machine recently and checked the configuration. 
  
 Thanks, 
 Shahin

Hi Shahin, 
  
 Thanks for your stack trace information. 
  
 This issue should be caused by our token class set NumberFormatInfo equal NumberFormatInfo.CurrentInfo, I don’t know whether it’s correct logic but I will let our developer know that.  
  
 For a workaround, if you want to use WKT, could you please tried to convert your WKT number to your local culture format? 
  
 Regards, 
  
 Don