Browse our Products

Aspose.GIS for .NET 26.8 Release Notes

Full List of Issues Covering all Changes in this Release

KeySummaryCategory
GISNET-2052GML to MapInfo TAB conversion writes incorrect SRS metadata when source GML has no explicit SRSBug
GISNET-2056Shapefile to GeoPackage - QGIS does not see outputconvert to GeoPackage with default srsBug
GISNET-2080MapInfoTab to MafInfoInterchange - Conversion succeeded, output is empty in QGISBug
GISNET-2091Gml to MapInfoTab- Conversion succeeded- output empty in QGISBug
GISNET-2093Make Copy Of File Instead Of ConversionImprove
GISNET-2108Fix native MapInfo TAB coordinate reading at MAP block boundariesBug
GISNET-2109Fix native MapInfo TAB attribute schema mismatch during Shapefile conversionBug
GISNET-2115Fix native MapInfo TAB large Region serializationBug
GISNET-2120Fix native MapInfo TAB projected SRS serializationBug

Public API and Backward Incompatible Changes

Following members have been added:

+T:Aspose.Gis.Operations.MapInfoCoordinateValidationError +P:Aspose.Gis.Operations.MapInfoCoordinateValidationError.FeatureIndex +P:Aspose.Gis.Operations.MapInfoCoordinateValidationError.Coordinate +P:Aspose.Gis.Operations.MapInfoCoordinateValidationError.NativeX +P:Aspose.Gis.Operations.MapInfoCoordinateValidationError.NativeY +P:Aspose.Gis.Operations.MapInfoCoordinateValidationError.DestinationSpatialReferenceSystem

Following members have been removed:

  • None

Usage examples:

GISNET-2052: GML to MapInfo TAB conversion writes incorrect SRS metadata when source GML has no explicit SRS

var sourceOptions = new GmlOptions
{
    RestoreSchema = true,
};

var conversionOptions = new ConversionOptions
{
    SourceDriverOptions = sourceOptions,
};

VectorLayer.Convert(
    "gml6.gml",
    Drivers.Gml,
    "output.tab",
    Drivers.MapInfoTab,
    conversionOptions);

using (var layer = VectorLayer.Open("output.tab", Drivers.MapInfoTab))
{
    Console.WriteLine("Feature count: " + layer.Count);
    Console.WriteLine("Spatial reference system: " +
        (layer.SpatialReferenceSystem == null ? "Unknown / NonEarth" : layer.SpatialReferenceSystem.ToString()));

    var extent = layer.GetExtent();

    Console.WriteLine(
        $"Extent: {extent.XMin}, {extent.YMin}, {extent.XMax}, {extent.YMax}");
}

GISNET-2056: Shapefile to GeoPackage - QGIS does not see outputconvert to GeoPackage with default srs

string sourcePath = "Rova_for_census2008.shp";
string destinationPath = "output.gpkg";

VectorLayer.Convert(sourcePath, Drivers.Shapefile, destinationPath, Drivers.GeoPackage);

GISNET-2080: MapInfoTab to MafInfoInterchange - Conversion succeeded, output is empty in QGIS

string sourcePath = "info.tab.zdtmxwof.d02.tab";
string destinationPath = "output.mif";
VectorLayer.Convert(sourcePath, Drivers.MapInfoTab, destinationPath, Drivers.MapInfoInterchange);

GISNET-2091: Gml to MapInfoTab- Conversion succeeded- output empty in QGIS

string sourcePath = "lakes.gml";
string destinationPath = "lakes-with-errors.tab";

var errors = new OperationErrorCollector();

VectorLayer.Convert(
	sourcePath,
	Drivers.Gml,
	destinationPath,
	Drivers.MapInfoTab,
	new ConversionOptions
	{
		SourceDriverOptions = new GmlOptions
		{
			RestoreSchema = true
		},
		DestinationDriverOptions = new MapInfoTabOptions
		{
			ErrorCollector = errors
		}
	});

Console.WriteLine("Collected errors count: " + errors.Count);

GISNET-2093: Make Copy Of File Instead Of Conversion

string sourcePath = "fountain.osm";
string destinationPath = "fountain.osm";
VectorLayer.Convert(sourcePath, Drivers.OsmXml, destinationPath, Drivers.OsmXml);

XDocument expectedDoc = XDocument.Load(sourcePath);
XDocument actualDoc = XDocument.Load(destinationPath);
if (!XNode.DeepEquals(expectedDoc.Root, actualDoc.Root))
{
	Console.WriteLine("Expected");
	Console.WriteLine(expectedDoc);
	Console.WriteLine("Actual");
	Console.WriteLine(actualDoc);
}

2052GISNET-2108: Fix native MapInfo TAB coordinate reading at MAP block boundaries

 

GISNET-2109: Fix native MapInfo TAB attribute schema mismatch during Shapefile conversion

var sourcePath = "unified_districts.shp";
var destinationPath = "output.tab";

VectorLayer.Convert(sourcePath, Drivers.Shapefile, destinationPath, Drivers.MapInfoTab, new ConversionOptions());

using (var layer = VectorLayer.Open(destinationPath, Drivers.MapInfoTab))
{
	Console.WriteLine("Feature count: " + layer.Count);

	foreach (var attribute in layer.Attributes)
	{
		Console.WriteLine($"{attribute.Name}: {attribute.DataType}");
	}
}

GISNET-2115: Fix native MapInfo TAB large Region serialization

VectorLayer.Convert("unified_districts.shp", Drivers.Shapefile, "output.tab", Drivers.MapInfoTab, new ConversionOptions());

using (var layer = VectorLayer.Open("output.tab", Drivers.MapInfoTab))
{
    Console.WriteLine("Feature count: " + layer.Count);

    foreach (var feature in layer)
    {
        Console.WriteLine(feature.Geometry.GeometryType);
    }

    var extent = layer.GetExtent();

    Console.WriteLine($"Extent: {extent.XMin}, {extent.YMin}, {extent.XMax}, {extent.YMax}");
}

GISNET-2120: Fix native MapInfo TAB projected SRS serialization

 var sourceSrs = SpatialReferenceSystem.CreateFromWkt(
    @"PROJCS[""Israel_TM_Grid"",
			GEOGCS[""GCS_Israel"",
            DATUM[""D_Israel"",
            SPHEROID[""GRS_1980"",6378137.0,298.257222101]],
		PRIMEM[""Greenwich"",0.0],
		UNIT[""Degree"",0.0174532925199433]],
        PROJECTION[""Transverse_Mercator""],
        PARAMETER[""False_Easting"",219529.584],
        PARAMETER[""False_Northing"",626907.39],
        PARAMETER[""Central_Meridian"",35.20451694444445],
        PARAMETER[""Scale_Factor"",1.0000067],
        PARAMETER[""Latitude_Of_Origin"",31.73439361111111],
        UNIT[""Meter"",1.0]]");

var options = new MapInfoTabOptions
{
    SpatialReferenceSystem = sourceSrs,
};

using (var layer = VectorLayer.Create("output.tab", Drivers.MapInfoTab, options))
{
   var feature = layer.ConstructFeature();
   feature.Geometry = new Point(219529.584, 626907.39);
   layer.Add(feature);
}

using (var layer = VectorLayer.Open("output.tab", Drivers.MapInfoTab))
{
    var projection = layer.SpatialReferenceSystem.AsProjected.Projection;
    Console.WriteLine(projection.GetParameterValue("Central_Meridian"));
    Console.WriteLine(projection.GetParameterValue("Latitude_Of_Origin"));
    Console.WriteLine(projection.GetParameterValue("Scale_Factor"));
    Console.WriteLine(projection.GetParameterValue("False_Easting"));
    Console.WriteLine(projection.GetParameterValue("False_Northing"));
}