Browse our Products

If so you can download any of the below versions for testing. The product will function as normal except for an evaluation limitation. At the time of purchase we provide a license file via email that will allow the product to work in its full capacity. If you would also like an evaluation license to test without any restrictions for 30 days, please follow the directions provided here.

 

Aspose.GIS for .NET 24.7

Download  Support Forum 

File Details

  • Downloads:
  • 1
  • File Size:
  • 9.84MB
  • Date Added:
  • 29/7/2024

Description

Aspose.GIS for .NET 24.7 (MSI) release.

File Details

The latest release of Aspose.GIS for .NET (version 24.7, MSI) simplifies geospatial data management, analysis, and visualization. This update helps developers seamlessly integrate geospatial capabilities into their C# apps.

Streamlined Geospatial Data Integration

Utilize the improved integration with persistent geospatial information storage systems using the latest version of the .NET GIS data processing API and efficiently manage your data.

This code example demonstrates сalсulating GPS Overlapping Coordinates effectively:


var pointSetA = Geometry.FromText("GEOMETRYCOLLECTION(POINT (30.645676 52.54734), POINT (30.631256 52.533558), POINT (30.661125 52.533558))",
    SpatialReferenceSystem.Wgs84);
var pointSetB = Geometry.FromText("GEOMETRYCOLLECTION(POINT (30.653915 52.540867), POINT (30.677261 52.546713), POINT (30.683784 52.532096))",
                SpatialReferenceSystem.Wgs84);

IGeometry poligonA = pointSetA.GetExtent().ToPolygon();
IGeometry poligonB = pointSetB.GetExtent().ToPolygon();
IGeometry intersection = poligonA.Intersection(poligonB);

var transformation = SpatialReferenceSystem
    .Wgs84
    .CreateTransformationTo(SpatialReferenceSystem.CreateFromEpsg(102013));

poligonA = transformation.Transform(poligonA);
poligonB = transformation.Transform(poligonB);
intersection = transformation.Transform(intersection);

var intersectionArea = intersection.GetArea();
var poligonAArea = poligonA.GetArea();
var poligonBArea = poligonB.GetArea();

var poligonAPercentageOfOverlap = intersectionArea / poligonAArea * 100;
var poligonBPercentageOfOverlap = intersectionArea / poligonBArea * 100;

// trim the fractional part to the required number of digits (4)
Assert.AreEqual(23.0407d, Math.Floor(poligonAPercentageOfOverlap * 10000)/10000);
Assert.AreEqual(21.7240d, Math.Floor(poligonBPercentageOfOverlap * 10000)/10000);

Source*

Powerful Spatial Analysis

Developers can now benefit from faster methods for updating original data in GDB files that enable more efficient spatial analysis workflows.

Code example:


public class FileGdbEditTests : TestFixtureBase
{
    public string TestOutPath => "file_gdb";

    [Test]
    public void AddFeatureTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "add.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            AddFeature(vectorLayer, field, "0");
            AddFeature(vectorLayer, field, "1");
            AddFeature(vectorLayer, field, "2");
            AddFeature(vectorLayer, field, "3");
            AddFeature(vectorLayer, field, "4");
        }

        // act: add to end
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            AddFeature(layer, field, "5");
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual(6, resultLayer.Count);
            Assert.AreEqual("0", resultLayer[0].GetValue(field));
            Assert.AreEqual("5", resultLayer[5].GetValue(field));
            Assert.AreEqual(GeometryType.Point, resultLayer.GeometryType);

            Assert.AreEqual(new Point(5, 5) { SpatialReferenceSystem = resultLayer.SpatialReferenceSystem }, resultLayer[5].Geometry);
        }
    }

    [Test]
    public void RemoveFeatureTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "remove.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            AddFeature(vectorLayer, field, "0");
            AddFeature(vectorLayer, field, "1");
            AddFeature(vectorLayer, field, "2");
            AddFeature(vectorLayer, field, "3");
            AddFeature(vectorLayer, field, "4");
        }

        // act 
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            layer.RemoveAt(1);
            layer.RemoveAt(2);
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual(3, resultLayer.Count);
            Assert.AreEqual("0", resultLayer[0].GetValue(field));
            Assert.AreEqual("2", resultLayer[1].GetValue(field));
            Assert.AreEqual("4", resultLayer[2].GetValue(field));
        }
    }

    [Test]
    public void UpdateFeatureTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "update.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            AddFeature(vectorLayer, field, "0");
            AddFeature(vectorLayer, field, "1");
            AddFeature(vectorLayer, field, "2");
        }

        // act: update feature
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            var feature = layer.ConstructFeature();
            feature.SetValue(field, "7");
            feature.Geometry = new Point(7, 7);
            layer.ReplaceAt(1, feature);
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual(3, resultLayer.Count);
            Assert.AreEqual("0", resultLayer[0].GetValue(field));
            Assert.AreEqual("7", resultLayer[1].GetValue(field));
            Assert.AreEqual("2", resultLayer[2].GetValue(field));

            Assert.AreEqual(new Point(7, 7) { SpatialReferenceSystem = resultLayer.SpatialReferenceSystem }, resultLayer[1].Geometry);
        }
    }

    [Test]
    public void RemoveThenAddAndUpdateFeatureTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "remove-add.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            AddFeature(vectorLayer, field, "0");
            AddFeature(vectorLayer, field, "1");
            AddFeature(vectorLayer, field, "2");
            AddFeature(vectorLayer, field, "3");
            AddFeature(vectorLayer, field, "4");
        }

        // act: add to end
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            // original list: //   0,1,2,3,4
            layer.RemoveAt(0);//-> [0], 1,2,3,4
            layer.RemoveAt(0);//-> [1], 2,3,4
            layer.RemoveAt(1);//-> 2, [3] ,4
            AddFeature(layer, field, "x0"); //-> 2,4, [x0]

            var feature = layer.ConstructFeature();
            feature.SetValue(field, 7);
            feature.Geometry = new Point(9, 9);
            layer.ReplaceAt(1, feature);
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual(3, resultLayer.Count);
            Assert.AreEqual("2", resultLayer[0].GetValue(field));
            Assert.AreEqual("7", resultLayer[1].GetValue(field));
            Assert.AreEqual("x0", resultLayer[2].GetValue(field));
            Assert.AreEqual(new Point(9, 9) { SpatialReferenceSystem = resultLayer.SpatialReferenceSystem }, resultLayer[1].Geometry);
        }
    }

    [Test]
    public void AddNewFeatureWithOption()
    {
        var driver = Drivers.FileGdb;
        var outfile = Path.Combine(TestOutPath, "edit-points-new-options.gdbtable");
        // arrange
        using (var layer = driver.CreateLayer(outfile))
        {
            var createdGeometries = new IGeometry[] { new Point(1, 1), new Point(2, 2) };
            DriverAssert.StoreGeometries(createdGeometries, layer);
        }

        var options = new FileGdbOptions() { XYPrecisionModel = PrecisionModel.Rounding(1) };
        // act
        using (var layer = driver.EditLayer(outfile, options))
        {
            var feature = layer.ConstructFeature();
            feature.Geometry = new Point(3.3333, 3.3333);
            layer.Add(feature);
        }

        // assert
        using (var layer = driver.OpenLayer(outfile, options))
        {
            Assert.AreEqual(3, layer.Count);
            Assert.AreEqual(null, layer.SpatialReferenceSystem);
            Assert.AreEqual(GeometryType.Point, layer.GeometryType);
            Assert.AreEqual("Min (X = 1, Y = 1), Max (X = 3.3, Y = 3.3)", layer.GetExtent().ToString());

            Assert.AreEqual(new Point(1, 1), layer[0].Geometry);
            Assert.AreEqual(new Point(2, 2), layer[1].Geometry);
            Assert.AreEqual(new Point(3.3, 3.3), layer[2].Geometry);
        }
    }

    [Test]
    public void PerformanceDeleteTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "performanceRemove.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            GenerateFeatures(vectorLayer, field, 999002);
        }

        // act 
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            layer.RemoveAt(499123);
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual(999001, resultLayer.Count);
        }
    }

    [Test]
    public void PerformanceReplaceTest()
    {
        var driver = Drivers.FileGdb;
        var path = Path.Combine(TestOutPath, "performanceRemove.gdbtable");
        var field = "field";
        // arrange: create temp file
        using (var vectorLayer = driver.CreateLayer(path))
        {
            vectorLayer.Attributes.Add(new FeatureAttribute(field, AttributeDataType.String));
            GenerateFeatures(vectorLayer, field, 999000);
        }

        // act 
        using (var layer = driver.EditLayer(AbstractPath.FromLocalPath(path)))
        {
            var feature = layer.ConstructFeature();
            feature.SetValue(field, "7");
            feature.Geometry = new Point(7, 7);
            layer.ReplaceAt(499000, feature);
        }

        // assert
        using (var resultLayer = driver.OpenLayer(path))
        {
            Assert.AreEqual("7", resultLayer[499000].GetValue(field));
            Assert.AreEqual(new Point(7, 7) { SpatialReferenceSystem = resultLayer.SpatialReferenceSystem }, resultLayer[499000].Geometry);
        }
    }

    private void AddFeature(VectorLayer layer, string attributeName, string value)
    {
        var feature = layer.ConstructFeature();
        feature.SetValue(attributeName, value);
        feature.Geometry = new Point(5, 5);
        layer.Add(feature);
    }

    private void GenerateFeatures(VectorLayer layer, string attributeName, long count)
    {
        for (int i = 0; i < count; i++)
        {
            var feature = layer.ConstructFeature();
            feature.SetValue(attributeName, i);
            layer.Add(feature);
        }
    }
}

Source*

Expanded Format Support

Enjoy the added support for the GDAL driver for Linux in the latest .NET API release, and broaden your compatibility with various geospatial data sources.

Code example:


var layer = Drivers.GDAL.OpenLayer("cities.gpkg"), options);

Assert.AreEqual(1, layer.Count);
Assert.AreEqual(0, layer.Attributes.Count);
Assert.AreEqual(GeometryType.LineString, layer.GeometryType);

Source*

Public API and Backward Incompatible Changes

Added API Members

  • Method:Aspose.Gis.Formats.FileGdb.FileGdbDriver.EditLayer(Aspose.Gis.AbstractPath,Aspose.Gis.DriverOptions)

You can view the list of all new features, enhancements, and bug fixes introduced in this release by visiting Aspose.GIS for .NET 24.7 Release Notes.

 English