Browse our Products
Aspose.GIS for .NET 25.5 Release Notes
This page contains release notes information for Aspose.GIS for .NET 25.5.
Full List of Issues Covering all Changes in this Release
| Key | Summary | Category |
|---|---|---|
| GISNET-650 | Allow specifying SRS for MapInfo TAB layer | Feature |
| GISNET-1829 | Corrects X and Y coodin disorder and adds Z in GML format. | Bug |
Public API changes
Following members have been added:
- None
Following members have been removed:
- None
Usage examples:
** GISNET-650. Allow specifying SRS for MapInfo TAB layer **
string filePath = "test.map";
using (var layer = Driver.OpenLayer(filePath, null))
{
var srs = layer.SpatialReferenceSystem.AsProjected;
Assert.AreEqual(0, srs.Projection.GetParameterValue("latitude_of_origin"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("central_meridian"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("false_easting"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("false_northing"));
}
using (var layer = Driver.CreateLayer(filePath, null, SpatialReferenceSystem.WebMercator))
{
var srs = layer.SpatialReferenceSystem.AsProjected;
Assert.AreEqual(0, srs.Projection.GetParameterValue("latitude_of_origin"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("central_meridian"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("false_easting"));
Assert.AreEqual(0, srs.Projection.GetParameterValue("false_northing"));
}
using (var layer = Driver.CreateLayer(filePath, null, SpatialReferenceSystem.Etrs89LambertConformalConic))
{
var srs = layer.SpatialReferenceSystem.AsProjected;
Assert.AreEqual(35, srs.Projection.GetParameterValue("standard_parallel_1"));
Assert.AreEqual(65, srs.Projection.GetParameterValue("standard_parallel_2"), 1e-8);
Assert.AreEqual(52, srs.Projection.GetParameterValue("latitude_of_origin"));
Assert.AreEqual(10, srs.Projection.GetParameterValue("central_meridian"));
Assert.AreEqual(4000000, srs.Projection.GetParameterValue("false_easting"));
Assert.AreEqual(2800000, srs.Projection.GetParameterValue("false_northing"));
}
using (var layer = Driver.CreateLayer(filePath, null, SpatialReferenceSystem.Osgb36BritishNationalGrid))
{
var srs = layer.SpatialReferenceSystem.AsProjected;
Assert.AreEqual(49, srs.Projection.GetParameterValue("latitude_of_origin"));
Assert.AreEqual(-2, srs.Projection.GetParameterValue("central_meridian"));
Assert.AreEqual(400000, srs.Projection.GetParameterValue("false_easting"));
Assert.AreEqual(-100000, srs.Projection.GetParameterValue("false_northing"));
}** GISNET-1829. Corrects X and Y coodin disorder and adds Z in GML format **
var expectedGml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<app:FeatureCollection xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:app=\"http://example.org/app\" xmlns:ogr=\"http://ogr.maptools.org/\" xsi:schemaLocation=\"http://example.org/app http://schemas.opengis.net/gml/2.1.2/feature.xsd\">\r\n <gml:featureMember>\r\n <app:Feature>\r\n <gml:geometryProperty>\r\n <gml:Point gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <gml:coord>\r\n <gml:X>1</gml:X>\r\n <gml:Y>2</gml:Y>\r\n <gml:Z>10.1</gml:Z>\r\n </gml:coord>\r\n </gml:Point>\r\n </gml:geometryProperty>\r\n </app:Feature>\r\n </gml:featureMember>\r\n <gml:featureMember>\r\n <app:Feature>\r\n <gml:geometryProperty>\r\n <gml:Point gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <gml:coord>\r\n <gml:X>11</gml:X>\r\n <gml:Y>22</gml:Y>\r\n <gml:Z>15.2</gml:Z>\r\n </gml:coord>\r\n </gml:Point>\r\n </gml:geometryProperty>\r\n </app:Feature>\r\n </gml:featureMember>\r\n <gml:featureMember>\r\n <app:Feature>\r\n <gml:geometryProperty>\r\n <gml:Point gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <gml:coord>\r\n <gml:X>111</gml:X>\r\n <gml:Y>222</gml:Y>\r\n <gml:Z>20.3</gml:Z>\r\n </gml:coord>\r\n </gml:Point>\r\n </gml:geometryProperty>\r\n </app:Feature>\r\n </gml:featureMember>\r\n <gml:featureMember>\r\n <app:Feature>\r\n <gml:geometryProperty>\r\n <gml:LineString gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\" \">1,2,10.1 11,22,15.2 111,222,20.3</gml:coordinates>\r\n </gml:LineString>\r\n </gml:geometryProperty>\r\n </app:Feature>\r\n </gml:featureMember>\r\n <gml:featureMember>\r\n <app:Feature>\r\n <gml:geometryProperty>\r\n <gml:Polygon gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <outerBoundaryIs>\r\n <gml:LinearRing gml:srsName=\"http://www.opengis.net/gml/srs/epsg.xml#UNKNOWN\">\r\n <gml:coordinates xmlns:gml=\"http://www.opengis.net/gml\" decimal=\".\" cs=\",\" ts=\" \">1,2,10.1 11,22,15.2 111,222,20.3 1,2,10.1</gml:coordinates>\r\n </gml:LinearRing>\r\n </outerBoundaryIs>\r\n </gml:Polygon>\r\n </gml:geometryProperty>\r\n </app:Feature>\r\n </gml:featureMember>\r\n</app:FeatureCollection>";
var fileName = "test.gml";
Point point1 = new Point(1.0, 2.0, 10.1); ;
Point point2 = new Point(11.0, 22.0, 15.2); ;
Point point3 = new Point(111.0, 222.0, 20.3);
VectorLayer vectorLayer = null;
vectorLayer = VectorLayer.Create(fileName, Drivers.Gml);
// Add a feature with a point geometry
Feature feature = vectorLayer.ConstructFeature();
feature.Geometry = point1;
vectorLayer.Add(feature);
// Add a feature with a point geometry
feature = vectorLayer.ConstructFeature();
feature.Geometry = point2;
vectorLayer.Add(feature);
// Add a feature with a point geometry
feature = vectorLayer.ConstructFeature();
feature.Geometry = point3;
vectorLayer.Add(feature);
// Add a feature with a line geometry
feature = vectorLayer.ConstructFeature();
LineString lineString = new LineString(new Aspose.Gis.Geometries.Point[] { point1, point2, point3 });
feature.Geometry = lineString;
vectorLayer.Add(feature);
// Add a feature with a polygon geometry
feature = vectorLayer.ConstructFeature();
LinearRing linearRing = new LinearRing(new Aspose.Gis.Geometries.Point[] { point1, point2, point3, point1 });
Polygon polygon = new Polygon(linearRing);
feature.Geometry = polygon;
vectorLayer.Add(feature);
vectorLayer.Dispose();
XDocument expectedDoc = XDocument.Parse(expectedGml);
XDocument actualDoc = XDocument.Load(fileName);
if (!XNode.DeepEquals(expectedDoc.Root, actualDoc.Root))
{
throw new Exception("Not expected GML cretion results");
}