A community member has associated this post with a similar question:
GIS - Convert from one format to any formats.

Only moderators can edit this content.

GIS Converter - ConverterUtils.BuildOutputPath not handle properly outFileExt

Dani_S 5,581 Reputation points
2025-12-17T09:48:02.09+00:00

First thank you very much for your help.

In continue to : https://learn.microsoft.com/en-us/answers/questions/5658105/gis-convert-from-one-format-to-any-formats

1.Caller:Converters\UniversalGisConverter.cs

// Step 5: Build output path

var outputPath = ConverterUtils.BuildOutputPath(outputFolderPath, gisTargetFormatOption);

2.In ConverterUtils.cs there is problematic row, can you please fix it ? and also the caller.

var outFileExt = maybeOutFileExt ?? FileExtension.Shapefile;//IS it Ok, does can lead to bad conversion.

`/// <summary>`
````    /// Build a destination output file path using the output folder and a target format option.`

`    /// </summary>`

`    /// <param name="outputFolderPath">Destination folder where the output file will be placed.</param>`

`    /// <param name="gisTargetFormatOption">Canonical target format option (e.g. "Shapefile").</param>`

`    /// <returns>Full path to the intended output file. The file is not created by this method.</returns>`

`    /// <remarks>`

`    /// The method uses a UTC timestamp to produce a collision-resistant file name and attempts to map`

`    /// the provided <paramref name="gisTargetFormatOption"/> to a file extension using`

`    /// <see cref="FileExtensionHelpers.FromOption"/>. When the option cannot be mapped the method`

`    /// falls back to the Shapefile extension and logs a warning. `

`    /// </remarks>`

`    internal static string BuildOutputPath(string outputFolderPath, string gisTargetFormatOption)`

`    {`

`        var timeStamp = DateTime.UtcNow.ToString("yyyyMMdd_HHmmss");`

`        var maybeOutFileExt = FileExtensionHelpers.FromOption(gisTargetFormatOption);`

`        var outFileExt = maybeOutFileExt ?? FileExtension.Shapefile;//IS it Ok, does can lead to bad conversion.`

`        if (maybeOutFileExt == null)`

`            Log.Warn($"BuildOutputPath: could not map option '{gisTargetFormatOption}' to a known FileExtension; falling back to '{outFileExt}'.");`

`        var extDot = FileExtensionHelpers.ToDotExtension(outFileExt);`

`        // Base candidate filename`

`        var baseName = $"output_{timeStamp}";`

`        var candidate = Path.Combine(outputFolderPath, baseName + extDot);`

`        Log.Info($"BuildOutputPath: target output file will be '{candidate}'.");`

`        return candidate;`

`    }`

3.The relevant files:

Code

GitConverter.Lib.md.txt

Converters

README.md.txt

IConverter.cs.txt

UniversalGisConverter.cs.txt

ConverterUtils.cs.txt

JsonFormatDetector.cs.txt

Models

FileExtension.cs.txt

FileExtensionHelpers.cs.txt

Thanks in advance,

Developer technologies | C#
Developer technologies | C#

An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.