ThinkGeo.com    |     Documentation    |     Premium Support

s57viewer - I failed to make .000 file to .idx file

hi, i’m being tested wpfdesktopeditionsample_s57viewer_151214.zip.

i try to create .000 file to index file, but error in source code
NauticalChartsFeatureSource.BuildIndexFile(fileName, BuildIndexMode.Rebuild);

please help me.

Hi Chang,

I did a quickly test, open our Nautical Charts Viewer and build index for a 000 file, it create index file succeed.

So could you please make sure you have downloaded our latest dlls? If you still cannot build index succeed, please upload a test data so we can have a look whether it still throw exception in our end.

Regards,

Don

Thank you for answers.

NauticalChartsExtension.dll is v9.0.

My test 000 file is in below.
KR5G1K42.zip (304.6 KB)

Please find the cause.

Hi Chang,

I tested that again, and it works well in my end with your data.

If you still met this exception, please reinstall our product again, and use the latest version 9.0.379.0 or higher version from our product center.

Regards,

Don

Thank you for answer.
I had to reinstall your product.
And I had to download Daily Eval Development 9.0.379.0, Daily Eval Production 9.0.0.379.
It was used in the NauticalChartsExtension.dll of the two.(Daily Eval Development 9.0.379.0)
Anyway, I have not solved.

This is the download sln file from your website.
wpfdesktopeditionsample_s57viewer_151214.zip (211.7 KB)

I use the vs2010.
I use dll file in Daily Eval Development 9.0.379.0 folder.
Etc dll files are as follows:
ididusedll.zip (47.6 KB)

Do you can send a test dll file(you testing), sln file(sample : wpfdesktopeditionsample_s57viewer_151214) so that I can solve?
(I use VS2010 64bit)
I want to try out the program to succeed.
So I want to feel the quality your product.

I would like to see it on the desktop.
It are *.000 and *.shp files.
For example, put the mouse on the spatial data and click the spatial data and read properties of the spatial data.

I will purchase your product for business if these fuctions are good.
But I try to test additionally.

Please help me so that I can do something.

Hi Chang,

That’s very strange, I created a VM just like your environment.

VS2010 64bit, eval WPF edition, then open the project download from your reply, reference the Daily Eval Development 9.0.379.0, then update the other dlls via NuGet.

But I still can build index succeed for your data and render it.

The Nautical Charts Viewer can support your requirement, choose “Identify Feature” then click on map can read it’s property and show on UI like this:

For shape files, you can easily find the sample from our HowDoISamples project(You can download it from our product center), for example the sample: Find out column data in a FeatureLayer:

Wish that’s helpful.

Regards,

Don

Thank you for answer.

I had to format my computer for this.
Anyway, the result is the same.

wpfdesktopeditionsample_s57viewer_151214.zip
from this source code

Execute S57Viewer.exe -> Load properly map
-> Image button click “Open File” -> button “Load File” click -> select 000 file
-> MessageBox(“Index file does not exists, do you want to create?”) -> select “Y”

private void buildIndexWorker_DoWork(object sender, DoWorkEventArgs e)
{
IEnumerable fileNames = e.Argument as IEnumerable;
foreach (string fileName in fileNames)
{
NauticalChartsFeatureSource.BuildIndexFile(fileName, BuildIndexMode.Rebuild);// error!!!
}
e.Result = fileNames;
}

=>NauticalChartsFeatureSource.BuildIndexFile(fileName, BuildIndexMode.Rebuild);// error!!!
ArgumentNullException Message
The parameter “source” is null.

No matter how look it seems that the file is incorrect.
Tell me suspicious factors.
Please help me.

I have here is suspicious.
mscorlib.dll
System.Runtime.InteropServices.Marshal.CopyToManaged(IntPtr source, Object destination, …
ArgumentNullException Message => The parameter “source” is null.

StackTrace
위치: System.Runtime.InteropServices.Marshal.CopyToManaged(IntPtr source, Object destination, Int32 startIndex, Int32 length)
위치: ohM=.lBQ=.mhQ=()
위치: ThinkGeo.MapSuite.Core.NauticalChartsFeatureSource.GetColumnsCore()
위치: ThinkGeo.MapSuite.Core.FeatureSource.GetColumns()
위치: ThinkGeo.MapSuite.Core.FeatureSource.GetReturningColumnNames(ReturningColumnsType returningColumnNamesType)
위치: ThinkGeo.MapSuite.Core.FeatureSource.GetAllFeatures(ReturningColumnsType returningColumnNamesType)
위치: ThinkGeo.MapSuite.Core.NauticalChartsFeatureSource.BuildIndexFile(String nauticalChartsFilePathname, BuildIndexMode buildIndexMode, Encoding encoding)
위치: ThinkGeo.MapSuite.Core.NauticalChartsFeatureSource.BuildIndexFile(String nauticalChartsFilePathname, BuildIndexMode buildIndexMode)
위치: NauticalChartsViewer.ChartsManagmentViewModel.buildIndexWorker_DoWork(Object sender, DoWorkEventArgs e) 파일 D:\S57_New\wpfdesktopeditionsample_s57viewer_151214\NauticalChartsViewer\ViewModel\ChartsManagmentViewModel.cs:줄 149
위치: System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

my mscorlib.dll (v4.0.30319)
System.Runtime.InteropServices.Marshal.CopyToManaged(,)
This function is not in my mscorlib.dll.

System.Runtime.InteropServices.Marshal.Copy(,)
This function is in my mscorlib.dll.

I think problem factors

  1. .net framwork version
  2. incorrect thinkgeo dll.

Tell me suspicious factors.
Please help me.

Hi Chang,

Thanks for your detail information.

The Marshal.CopyToManaged is a private function which is called by Marshal.Copy, you can see it’s code here:
http://referencesource.microsoft.com/#mscorlib/system/runtime/interopservices/marshal.cs

Because the mscorlib.dll is a system dll, so I think that’s should be an environment issue.

Maybe it’s a .net framework issue, but I want to make sure which folder you put your data, it looks your IDE is based Korean, so please make sure the data path only contains English, I am not sure if the data path contains Korean it can works well.

If I thought any other possible issue I will let you know.

Regards,

Don

Thanks for yout fast anwser.

Of course I have ever run into a path English.

not english path - ArgumentNullException - mscorlib.dll

english path - AccessViolationException - NauticalChatsExtension.dll

AccessViolationException Message
보호된 메모리를 읽거나 쓰려고 했습니다.
Attempted to read or write protected memory.
대부분 이러한 경우는 다른 메모리가 손상되었음을 나타냅니다.
Most of these cases is an indication that other memory is corrupt.

And I used the installed files.
Prove you see.

BuildIndexFile Press F12.

region 어셈블리 NauticalChartsExtension.dll, v4.0.30319
// C:\Program Files (x86)\ThinkGeo\Map Suite 9.0\Map Suite Wpf Desktop\Daily Eval Development 9.0.379.0\Managed Assemblies\Spatial Extensions\NauticalCharts Extension\NauticalChartsExtension.dll
endregion

namespace ThinkGeo.MapSuite.Core
{
[Serializable]
public class NauticalChartsFeatureSource : FeatureSource
{

public static void BuildIndexFile(string nauticalChartsFilePathname);

public static void BuildIndexFile(string nauticalChartsFilePathname, BuildIndexMode buildIndexMode);

public static void BuildIndexFile(string nauticalChartsFilePathname, BuildIndexMode buildIndexMode, Encoding encoding);

}

}

Thank you for letting continues to answer.

Hi Chang,

It looks if you put the data under not English path, a system exception is thrown first, so the really exception cannot be thrown.

But the “read or write protected memory” is still be a generally exception I think, I cannot make sure whether that’s related with environment. I tried to create a Korean environment for test but failed, so if possible, could you please test that in a English Windows VM and have a look at whether it works there.

If I get any idea about it I will let you know.

Regards,

Don

Hi Chang,

Please make sure you are using our latest 9.0.x.0 dll package but not 9.0.0.x version.

And please download this latest UnmanagedDependencies then install it.
https://ap.thinkgeo.com:5001/sharing/IE3XYNCxL

I am not sure whether that’s helpful, but please try that.

Regards,

Don

wow.

Finally, it opened 000 file.

So happy.

Now I seem to be able to try the desired test.

There is three question.

  1. I wonder what the reason of the failure before.
  2. I want to change the background color of the sea below.

    I wonder whether I am able to change the color I want.
    Other objects are also wondering whether the color change.
  3. I wonder whether I am able to change coordination I want.

Thank you very much.

Hi Chang,

  1. Could you please let me know how you make your 000 file works? Is that works well after you install the UnmanagedDependencies? If that’s after that which should because your dlls in system folder aren’t the latest version.

  2. We can modify the color by setting the custom schema like this:
    NauticalChartsFeatureLayer ncfl = new NauticalChartsFeatureLayer(“Your data path”, “Your style xml file”);
    ncfl.CustomizedColorSchema = “Your schema name in your style xml file”;

As below is our default schema xml file, you can modify based on it:

NauticalCharts.xml (991.4 KB)

And we have a simple utility in our viewer, you can load the xml follow this steps: File->Edit Symbol File

Reset the style for 000 isn’t a easy work, if you have some requirement for it you can try to create a standalone ticket then get our further assistant on it.

  1. What’s the mean of the coordination here?

Regards,

Don

I only had to install Map Suite Unmanaged Dependencies 9.0.380.0.msi.

After installing Map Suite Unmanaged Dependencies 9.0.380.0.msi,
files created are 2016-07-07 Date.
2015-06-22 Date files were created probably after installing thinkgeoproductcenter.msi.

My conclusion is the installation path difference.

Do you think the reason for reporting this?

your question
1.What’s the mean of the coordination here?
-> Several types of projection(world mercator, utm, wgs84, etc) are able to change the map coordinates.

And.
What’s the mean of “create a standalone ticket”??

Hi Chang,

If the path different, our map cannot find the dlls, so I think which should be the problem.

You means set projection? I think you can try to set projection like this:

 S57FeatureLayer layer;

        ManagedProj4Projection proj4 = new ManagedProj4Projection();
        proj4.InternalProjectionParametersString = ManagedProj4Projection.GetEsriParametersString(4326);
        proj4.ExternalProjectionParametersString = ManagedProj4Projection.GetGoogleMapParametersString();
        proj4.Open();

        layer.FeatureSource.Projection = proj4;

About ticket, here is more detail information:
http://wiki.thinkgeo.com/wiki/Map_Suite_Support_Ticket_Guide

Wish that’s helpful.

Regards,

Don