Browse our Products
Aspose.GIS for .NET 25.1 Release Notes
This page contains release notes information for Aspose.GIS for .NET 25.1.
Full List of Issues Covering all Changes in this Release
| Key | Summary | Category |
|---|---|---|
| GISNET-1740 | Add ability to edit OpenStreet Maps (OsmXML format) | Feature |
| GISNET-1747 | After the resaving of OsmXml file it becomes unreadable | Bug |
| GISNET-1745 | Improve AbstractPath with ability to create it from array of AbstractPath | Enhancement |
Public API and Backward Incompatible Changes
Following members have been added:
- T:Aspose.Gis.MultiStreamPath
- M:Aspose.Gis.MultiStreamPath.#ctor(System.String,System.Collections.Generic.Dictionary{System.String,System.IO.Stream})
- P:Aspose.Gis.MultiStreamPath.Location
- P:Aspose.Gis.MultiStreamPath.Separator
- P:Aspose.Gis.MultiStreamPath.StreamSet
- M:Aspose.Gis.MultiStreamPath.Open(System.IO.FileAccess)
- M:Aspose.Gis.MultiStreamPath.WithLocation(System.String)
- M:Aspose.Gis.MultiStreamPath.IsFile
- M:Aspose.Gis.MultiStreamPath.ListDirectory
- M:Aspose.Gis.MultiStreamPath.Delete
- M:Aspose.Gis.MultiStreamPath.Dispose
Following members have been removed:
- None
Usage examples:
GISNET-1740. Add ability to edit OpenStreet Maps (OsmXML format)
var newPath = @"AddSameFeature.osm";
using (var vectorLayer = VectorLayer.Create(newPath, Drivers.OsmXml))
{
vectorLayer.Attributes.Add(new FeatureAttribute("field1", AttributeDataType.String));
// File will be updated but please note that duplicate features will be merged
for (int i = 0; i < 3; i++)
{
var attributeName = "field1";
var value = "value0";
var feature = vectorLayer.ConstructFeature();
feature.SetValue(attributeName, value);
feature.Geometry = new Point(1, 2);
vectorLayer.Add(feature);
}
}
// Checking if the editing was successful
using (var resultLayer = VectorLayer.Open(newPath, Drivers.OsmXml))
{
// Duplicate features were merged
Assert.AreEqual(1, resultLayer.Count);
}GISNET-1747. After the resaving of OsmXml file it becomes unreadable
var path = @"Wellington.osm";
var newPath = @"WellingtonResaved.osm";
OsmXmlOptions options = new OsmXmlOptions();
options.WriteCommonAttributes = true;
options.ReportCommonAttributes = true;
int attributeCount = 0;
int featureCount = 0;
using (var newLayer = VectorLayer.Create(newPath, Drivers.OsmXml, options))
{
using (var layer = VectorLayer.Open(path, Drivers.OsmXml, options))
{
foreach (var feature in layer)
{
newLayer.Add(feature);
}
attributeCount = layer.Attributes.Count;
featureCount = layer.Count;
}
}
// After the resaving file should be opened and no exceptions will be thrown
using (var layer = VectorLayer.Open(newPath, Drivers.OsmXml, options))
{
Assert.AreEqual(attributeCount, layer.Attributes.Count);
Assert.AreEqual(featureCount, layer.Count);
}**GISNET-1745. Improve AbstractPath with ability to create it from array of AbstractPath **
// Now it's possible to create set of required files in runtime without additional code
var testingStreamSet = new Dictionary<string, Stream>
{
{ "land.shp", new FileStream("land.shp", FileMode.Open) },
{ "land.dbf", new FileStream("land.dbf", FileMode.Open) },
{ "land.prj", new FileStream("land.prj", FileMode.Open) },
{ "land.cpg", new FileStream("land.cpg", FileMode.Open) },
{ "land.shx", new FileStream("land.shx", FileMode.Open) }
};
Feature inMemoryFeature = null;
var msPath = new MultiStreamPath("land.shp", testingStreamSet);
using (var layer = Drivers.Shapefile.EditLayer(msPath))
{
var newFeature = layer.ConstructFeature();
newFeature.SetValue("FID", 53);
newFeature.Geometry = new Polygon(new LinearRing(new[]
{
new Point(0, 0),
new Point(0, 3),
new Point(3, 3),
new Point(3, 0),
new Point(0, 0),
}))
{
SpatialReferenceSystem = SpatialReferenceSystem.Wgs84
};
layer.Add(newFeature);
}
using (var layer = Drivers.Shapefile.OpenLayer(msPath))
{
inMemoryFeature = layer.WhereEqual<long>("FID", 53).FirstOrDefault();
}
Assert.IsNotNull(inMemoryFeature);
Assert.AreEqual(53L, inMemoryFeature.GetValue("FID"));