private void CheckOpen() { if (!_sourceProvider.IsOpen) { _sourceProvider.Open(); } }
public void CreateMultiPointShapeFile() { var fdt = CreateMultiPointFeatureDataTable(_geometryFactory); using (var sfp = ShapeFileProvider.Create(".", "MultiPoint", ShapeType.MultiPoint, fdt, _geometryFactory, new GeometryServices().CoordinateSystemFactory)) { sfp.Open(WriteAccess.ReadWrite); foreach (FeatureDataRow row in fdt.Rows) sfp.Insert(row); } int number = 0; var gs = new GeometryServices(); using (var sfp = new ShapeFileProvider("MultiPoint.shp", gs.DefaultGeometryFactory, gs.CoordinateSystemFactory)) { sfp.IsSpatiallyIndexed = false; sfp.Open(WriteAccess.ReadOnly); using (var p = sfp.ExecuteFeatureQuery(FeatureQueryExpression.Intersects(sfp.GetExtents()))) { while (p.Read()) { Assert.True(((FeatureDataRow)fdt.Rows[number]).Geometry.Equals(p.Geometry)); number++; Console.WriteLine(string.Format("{0}; {1}; {2}", p.GetOid(), p.Geometry.GeometryTypeName, p.Geometry)); } } } Assert.True(number == 100); }
public void NoPrjFileThenSetCoordinateSystemGivesSpatialRefToGeometries() { //Layer name: BCROADSWithoutDbf //Geometry: Line String //Feature Count: 7291 //Extent: (7332083.212797, 236823.718672) - (7538428.618000, 405610.346926) ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsWithOutDbfShapeFile, _geoFactory); shapeFile.Open(); ICoordinateSystemFactory <BufferedCoordinate2D> coordSysFactory = _coordSysFactory; String wkt = File.ReadAllText(BcRoadsPrjFile); IProjectedCoordinateSystem cs = WktReader <BufferedCoordinate2D> .ToCoordinateSystemInfo(wkt, coordSysFactory) as IProjectedCoordinateSystem; shapeFile.SpatialReference = cs; Assert.IsNotNull(shapeFile.SpatialReference); IGeometry g = shapeFile.GetGeometryByOid(0); Assert.IsTrue(g.SpatialReference.EqualParams(createExpectedCoordinateSystem())); shapeFile.Close(); }
/// <remarks> /// Note <paramref name="oidType"/> Is ignored for shapefile provider. /// </remarks> public IWritableFeatureProvider ConstructTargetProvider(Type oidType, IGeometryFactory geometryFactory, ICoordinateSystemFactory csFactory, FeatureDataTable schemaTable) { EnsureColumnNamesValid(schemaTable); string directoryPath = GetDirectoryPath(); CreateAction overwrite; string layerName = GetLayerName(directoryPath, out overwrite); ShapeType shapeType = GetShapeType(); if (overwrite == CreateAction.Append) { _targetProvider = new ShapeFileProvider(Path.Combine(directoryPath, layerName + ".shp"), geometryFactory, csFactory); } else { _targetProvider = ShapeFileProvider.Create(directoryPath, layerName, shapeType, schemaTable, geometryFactory, csFactory); } _targetProvider.Open(WriteAccess.Exclusive); return(_targetProvider); }
public void CreateLinealShapeFile() { var fdt = CreateLinealFeatureDataTable(_geometryFactory); using (var sfp = ShapeFileProvider.Create(".", "Lineal", ShapeType.PolyLine, fdt, _geometryFactory, new GeometryServices().CoordinateSystemFactory)) { sfp.Open(WriteAccess.ReadWrite); foreach (FeatureDataRow row in fdt.Rows) { sfp.Insert(row); } } int number = 0; var gs = new GeometryServices(); using (var sfp = new ShapeFileProvider("Lineal.shp", gs.DefaultGeometryFactory, gs.CoordinateSystemFactory)) { sfp.IsSpatiallyIndexed = false; sfp.Open(WriteAccess.ReadOnly); using (var p = sfp.ExecuteFeatureQuery(FeatureQueryExpression.Intersects(sfp.GetExtents()))) { while (p.Read()) { Assert.True(((FeatureDataRow)fdt.Rows[number]).Geometry.Equals(p.Geometry)); number++; Console.WriteLine(string.Format("{0}; {1}; {2}", p.GetOid(), p.Geometry.GeometryTypeName, p.Geometry)); } } } Assert.True(number == 100); }
public ShapeExporter(string shapefilepath) { _provider = new ShapeFileProvider(shapefilepath, _geometryServices.DefaultGeometryFactory, _geometryServices.CoordinateSystemFactory, false); _provider.IsSpatiallyIndexed = false; _provider.Open(); }
public void NoPrjFileImpliesCoordinateSystemIsNullTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsWithOutDbfShapeFile, _geoFactory); shapeFile.Open(); Assert.IsNull(shapeFile.SpatialReference); shapeFile.Close(); }
public void OpenExclusiveTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(true); File.OpenRead(BcRoadsShapeFile); }
public void SetCoordinateSystemWithPrjFileThrowsExceptionTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); IProjectedCoordinateSystem cs = createExpectedCoordinateSystem(); shapeFile.SpatialReference = cs; }
public void NewWithFileBasedSpatialIndexTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory, _coordSysFactory, true); Assert.IsNotNull(shapeFile); shapeFile.Open(); Assert.IsTrue(File.Exists(BcRoadsSpatialIndex)); shapeFile.Close(); File.Delete(BcRoadsSpatialIndex); }
public void GetShapeTypeTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsWithOutDbfShapeFile, _geoFactory); shapeFile.Open(); Assert.AreEqual(ShapeType.PolyLine, shapeFile.ShapeType); shapeFile.Close(); }
public void InsertFeatureTest() { FeatureDataTable <UInt32> schema = new FeatureDataTable <UInt32>("oid", _geoFactory); schema.Columns.AddRange(new DataColumn[] { new DataColumn("Name", typeof(String)), new DataColumn("DateCreated", typeof(DateTime)), new DataColumn("Visits", typeof(Int32)), new DataColumn("Weight", typeof(Single)) }); ShapeFileProvider shapeFile = ShapeFileProvider.Create("UnitTestData", "Test2", ShapeType.Point, schema, _geoFactory); shapeFile.Open(); DateTime dateCreated = DateTime.Now; FeatureDataRow <UInt32> feature = schema.NewRow(1); feature["Name"] = "Test feature"; feature["DateCreated"] = dateCreated; feature["Visits"] = 0; feature["Weight"] = 100.0f; feature.Geometry = _geoFactory.CreatePoint2D(1, 1); shapeFile.Insert(feature); shapeFile.Close(); shapeFile = new ShapeFileProvider(@"UnitTestData\Test2.shp", _geoFactory); shapeFile.Open(); Assert.AreEqual(1, shapeFile.GetFeatureCount()); FeatureDataTable dataTable = new FeatureDataTable("ShapeFile test", _geoFactory); FeatureQueryExpression query = FeatureQueryExpression.Intersects(_geoFactory.CreateExtents2D(0.9, 0.9, 1, 1)); IFeatureDataReader reader = shapeFile.ExecuteFeatureQuery(query); dataTable.Load(reader, LoadOption.OverwriteChanges, null); Assert.AreEqual(1, dataTable.Rows.Count); FeatureDataRow newFeature = dataTable.Rows[0] as FeatureDataRow; Assert.AreEqual(_geoFactory.CreatePoint2D(1, 1), newFeature.Geometry); Assert.AreEqual(newFeature["Name"], "Test feature"); DateTime dateCreatedActual = (DateTime)newFeature["DateCreated"]; Assert.AreEqual(dateCreatedActual.Year, dateCreated.Year); Assert.AreEqual(dateCreatedActual.Month, dateCreated.Month); Assert.AreEqual(dateCreatedActual.Day, dateCreated.Day); Assert.AreEqual(newFeature["Visits"], 0); Assert.AreEqual(newFeature["Weight"], 100.0f); shapeFile.Close(); }
public void IsOpenTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); Assert.IsFalse(shapeFile.IsOpen); shapeFile.Open(); Assert.IsTrue(shapeFile.IsOpen); shapeFile.Close(); Assert.IsFalse(shapeFile.IsOpen); }
public void RebuildSpatialIndexTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory, _coordSysFactory, false); shapeFile.Open(); File.Delete(BcRoadsSpatialIndex); shapeFile.RebuildSpatialIndex(); Assert.IsTrue(File.Exists(BcRoadsSpatialIndex)); shapeFile.Close(); File.Delete(BcRoadsSpatialIndex); }
public void SetTableSchemaWithDifferentKeyCase() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable <UInt32> keyedTable = new FeatureDataTable <UInt32>("oid", _geoFactory); shapeFile.SetTableSchema(keyedTable); }
public void GetSchemaTableReturnsOid() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); DataTable schemaTable = shapeFile.GetSchemaTable(); Assert.AreEqual(34, schemaTable.Rows.Count); Assert.AreEqual("OID", schemaTable.Rows[0][ProviderSchemaHelper.ColumnNameColumn]); }
public void GetFeatureTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); FeatureDataRow <UInt32> feature = shapeFile.GetFeatureByOid(0) as FeatureDataRow <UInt32>; Assert.IsNotNull(feature); Assert.AreEqual(0, feature.Id); shapeFile.Close(); }
public void SridTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory); shapeFile.Open(); Assert.AreEqual(0, shapeFile.Srid); shapeFile.Close(); shapeFile = new ShapeFileProvider(BcRoadsWithOutDbfShapeFile, _geoFactory); shapeFile.Open(); Assert.AreEqual(-1, shapeFile.Srid); shapeFile.Close(); }
public void ExecuteIntersectionQueryByBoundingBoxTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); FeatureDataTable data = new FeatureDataTable("ShapeFile test", _geoFactory); FeatureQueryExpression query = FeatureQueryExpression.Intersects(shapeFile.GetExtents()); IFeatureDataReader reader = shapeFile.ExecuteFeatureQuery(query); data.Load(reader, LoadOption.OverwriteChanges, null); Assert.AreEqual(shapeFile.GetFeatureCount(), data.Rows.Count); shapeFile.Close(); }
public void SetTableSchemaWithDifferentKeyNameAndSchemaMergeAction() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable <UInt32> queryTable = shapeFile.CreateNewTable() as FeatureDataTable <UInt32>; // expecting a new FeatureDataTable<UInt32>("OID", _geoFactory); FeatureDataTable <UInt32> keyedTable = new FeatureDataTable <UInt32>("FID", _geoFactory); shapeFile.SetTableSchema(keyedTable, SchemaMergeAction.KeyByType); DataTableHelper.AssertTableStructureIdentical(keyedTable, queryTable); }
public void GetGeometriesInViewTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); List <IGeometry> geometries = new List <IGeometry>(); //geometries.AddRange(shapeFile.ExecuteGeometryIntersectionQuery(shapeFile.GetExtents())); Assert.AreEqual(shapeFile.GetFeatureCount(), geometries.Count); geometries.Clear(); IGeometry empty = _geoFactory.CreatePoint(); //geometries.AddRange(shapeFile.ExecuteGeometryIntersectionQuery(empty)); Assert.AreEqual(0, geometries.Count); }
public void GetCoordinateSystemHavingPrjFileTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); Assert.IsNotNull(shapeFile.SpatialReference); Assert.IsInstanceOfType(typeof(IProjectedCoordinateSystem), shapeFile.SpatialReference); IProjectedCoordinateSystem cs = shapeFile.SpatialReference as IProjectedCoordinateSystem; Assert.IsNotNull(cs); Assert.AreEqual("NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601", cs.Name); IProjectedCoordinateSystem expected = createExpectedCoordinateSystem(); Assert.IsTrue(expected.EqualParams(cs)); shapeFile.Close(); }
public GuiTest1() { ShapeFileProvider shpData = new ShapeFileProvider(shapesDirPC, true); //Assert.IsNotNull(shpData); shpData.Open(); //Assert.IsTrue(!File.Exists(@"..\..\..\TestData\BCROADS.shp.sidx")); //GeometryLayer gLayer = new GeometryLayer("My layer", shpData); //myMap.Layers.Add(gLayer); }
public void SetTableSchemaShouldMatchShapeFileSchema() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable <UInt32> queryTable = shapeFile.CreateNewTable() as FeatureDataTable <UInt32>; FeatureDataTable nonKeyedTable = new FeatureDataTable(_geoFactory); shapeFile.SetTableSchema(nonKeyedTable); DataTableHelper.AssertTableStructureIdentical(nonKeyedTable, queryTable); FeatureDataTable <UInt32> keyedTable = new FeatureDataTable <UInt32>("OID", _geoFactory); shapeFile.SetTableSchema(keyedTable); DataTableHelper.AssertTableStructureIdentical(keyedTable, queryTable); }
private void Export(string colName) { ExportDirectory = Path.Combine(Path.GetDirectoryName(Provider.Filename), Path.GetFileNameWithoutExtension(Provider.Filename) + "_Export"); if (!Directory.Exists(ExportDirectory)) { Directory.CreateDirectory(ExportDirectory); } FeatureDataTable fdt = Provider.CreateNewTable(); IFeatureDataReader reader = Provider.GetReader(); while (reader.Read()) { string layerName = GenerateUniqueName(reader[colName].ToString()); using ( ShapeFileProvider export = ShapeFileProvider.Create(ExportDirectory, layerName, Provider.ShapeType, Provider.CreateNewTable(), Provider.GeometryFactory, _geometryServices.CoordinateSystemFactory)) { export.IsSpatiallyIndexed = false; export.Open(); FeatureDataRow <uint> fdr = (FeatureDataRow <uint>)fdt.NewRow(); object[] vals = new object[fdt.Columns.Count]; reader.GetValues(vals); fdr.ItemArray = vals; fdr.Geometry = reader.Geometry; export.Insert(fdr); export.Close(); } } }
public void CreateLinealShapeFileZ() { var fdt = CreateLinealFeatureDataTableZ(_geometryFactory); using (var sfp = ShapeFileProvider.Create(".", "LinealZ", ShapeType.PolyLineZ, fdt, _geometryFactory, new GeometryServices().CoordinateSystemFactory)) { sfp.Open(WriteAccess.ReadWrite); foreach (FeatureDataRow row in fdt.Rows) { sfp.Insert(row); } } int number = 0; var gs = new GeometryServices(); using (var sfp = new ShapeFileProvider("LinealZ.shp", gs.DefaultGeometryFactory, gs.CoordinateSystemFactory)) { sfp.IsSpatiallyIndexed = false; sfp.Open(WriteAccess.ReadOnly); using (var p = sfp.ExecuteFeatureQuery(FeatureQueryExpression.Intersects(sfp.GetExtents()))) { while (p.Read()) { var geom = ((FeatureDataRow)fdt.Rows[number]).Geometry; Assert.True(geom.AsText().Equals(p.Geometry.AsText()), string.Format("\n{0}\nis not equal to\n{1}", geom.AsText(), p.Geometry.AsText())); number++; Assert.True(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.Z), "Geometry's coordinates should have Z values"); Assert.True(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.M), "Geometry's coordinates should have M values"); Assert.False(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.W), "Geometry's coordinates should not have W values"); Console.WriteLine(string.Format("{0}; {1}; {2}", p.GetOid(), p.Geometry.GeometryTypeName, p.Geometry)); } } } Assert.True(number == 100); }
public void GetFeatureTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); FeatureDataRow<UInt32> feature = shapeFile.GetFeatureByOid(0) as FeatureDataRow<UInt32>; Assert.IsNotNull(feature); Assert.AreEqual(0, feature.Id); shapeFile.Close(); }
public IFeatureProvider ConstructSourceProvider(IGeometryServices geometryServices) { string path; while (true) { Console.WriteLine("Please enter the path to the input shapefile"); path = Console.ReadLine(); if (File.Exists(path)) break; Console.WriteLine("Invalid Path"); } _sourceProvider = new ShapeFileProvider(path, geometryServices.DefaultGeometryFactory, geometryServices.CoordinateSystemFactory) { IsSpatiallyIndexed = false }; _sourceProvider.Open(); Console.WriteLine("\nINFO The shape type is: " + _sourceProvider.ShapeType + "\n"); if (Array.IndexOf(new ShapeType[] { ShapeType.PointM, ShapeType.PointZ, ShapeType.MultiPointM, ShapeType.MultiPointZ, ShapeType.PolygonM, ShapeType.PolygonZ }, _sourceProvider.ShapeType) > -1) Console.WriteLine("Warning: The source shapefile contains Z or M values. This is work in progress and can cause issues."); ForceCoordinateOptions[] coordinateOptions = (ForceCoordinateOptions[])Enum.GetValues(typeof(ForceCoordinateOptions)); Dictionary<int, ForceCoordinateOptions> fco = new Dictionary<int, ForceCoordinateOptions>(); for (int i = 0; i < coordinateOptions.Length; i++) fco.Add(i, coordinateOptions[i]); ShapeFileReadStrictness[] strictnesses = (ShapeFileReadStrictness[])Enum.GetValues(typeof(ShapeFileReadStrictness)); Dictionary<int, ShapeFileReadStrictness> strictness = new Dictionary<int, ShapeFileReadStrictness>(); for (int i = 0; i < strictnesses.Length; i++) strictness.Add(i, strictnesses[i]); Console.WriteLine("Force Coordinate Options? Enter the id of one of the options below or leave blank."); foreach (KeyValuePair<int, ForceCoordinateOptions> option in fco) { Console.WriteLine(string.Format("{0} {1}", option.Key, option.Value)); } int opt; if (int.TryParse(Console.ReadLine(), out opt)) { if (fco.ContainsKey(opt)) _sourceProvider.ForceCoordinateOptions = fco[opt]; Console.WriteLine(string.Format("The effective shape type is now {0}", _sourceProvider.EffectiveShapeType)); } Console.WriteLine("Please select a Leniency option:"); foreach (KeyValuePair<int, ShapeFileReadStrictness> pair in strictness) { Console.WriteLine(String.Format("{0} {1}", pair.Key, pair.Value)); } if (int.TryParse(Console.ReadLine(), out opt)) { if (strictness.ContainsKey(opt)) _sourceProvider.ReadStrictness = strictness[opt]; } return _sourceProvider; }
public void SetTableSchemaWithDifferentKeyCase() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable<UInt32> keyedTable = new FeatureDataTable<UInt32>("oid", _geoFactory); shapeFile.SetTableSchema(keyedTable); }
public void CreateLinealShapeFileZ() { var fdt = CreateLinealFeatureDataTableZ(_geometryFactory); using (var sfp = ShapeFileProvider.Create(".", "LinealZ", ShapeType.PolyLineZ, fdt, _geometryFactory, new GeometryServices().CoordinateSystemFactory)) { sfp.Open(WriteAccess.ReadWrite); foreach (FeatureDataRow row in fdt.Rows) sfp.Insert(row); } int number = 0; var gs = new GeometryServices(); using (var sfp = new ShapeFileProvider("LinealZ.shp", gs.DefaultGeometryFactory, gs.CoordinateSystemFactory)) { sfp.IsSpatiallyIndexed = false; sfp.Open(WriteAccess.ReadOnly); using (var p = sfp.ExecuteFeatureQuery(FeatureQueryExpression.Intersects(sfp.GetExtents()))) { while (p.Read()) { var geom = ((FeatureDataRow)fdt.Rows[number]).Geometry; Assert.True(geom.AsText().Equals(p.Geometry.AsText()), string.Format("\n{0}\nis not equal to\n{1}", geom.AsText(), p.Geometry.AsText())); number++; Assert.True(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.Z), "Geometry's coordinates should have Z values"); Assert.True(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.M), "Geometry's coordinates should have M values"); Assert.False(p.Geometry.Coordinates[0].ContainsOrdinate(Ordinates.W), "Geometry's coordinates should not have W values"); Console.WriteLine(string.Format("{0}; {1}; {2}", p.GetOid(), p.Geometry.GeometryTypeName, p.Geometry)); } } } Assert.True(number == 100); }
public void NoPrjFileThenSetCoordinateSystemGivesSpatialRefToGeometries() { //Layer name: BCROADSWithoutDbf //Geometry: Line String //Feature Count: 7291 //Extent: (7332083.212797, 236823.718672) - (7538428.618000, 405610.346926) ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsWithOutDbfShapeFile, _geoFactory); shapeFile.Open(); ICoordinateSystemFactory<BufferedCoordinate2D> coordSysFactory = _coordSysFactory; String wkt = File.ReadAllText(BcRoadsPrjFile); IProjectedCoordinateSystem cs = WktReader<BufferedCoordinate2D> .ToCoordinateSystemInfo(wkt, coordSysFactory) as IProjectedCoordinateSystem; shapeFile.SpatialReference = cs; Assert.IsNotNull(shapeFile.SpatialReference); IGeometry g = shapeFile.GetGeometryByOid(0); Assert.IsTrue(g.SpatialReference.EqualParams(createExpectedCoordinateSystem())); shapeFile.Close(); }
public void GetCoordinateSystemHavingPrjFileTest() { ShapeFileProvider shapeFile = new ShapeFileProvider(BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); Assert.IsNotNull(shapeFile.SpatialReference); Assert.IsInstanceOfType(typeof (IProjectedCoordinateSystem), shapeFile.SpatialReference); IProjectedCoordinateSystem cs = shapeFile.SpatialReference as IProjectedCoordinateSystem; Assert.IsNotNull(cs); Assert.AreEqual("NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601", cs.Name); IProjectedCoordinateSystem expected = createExpectedCoordinateSystem(); Assert.IsTrue(expected.EqualParams(cs)); shapeFile.Close(); }
public void InsertFeatureTest() { FeatureDataTable<UInt32> schema = new FeatureDataTable<UInt32>("oid", _geoFactory); schema.Columns.AddRange(new DataColumn[] { new DataColumn("Name", typeof (String)), new DataColumn("DateCreated", typeof (DateTime)), new DataColumn("Visits", typeof (Int32)), new DataColumn("Weight", typeof (Single)) }); ShapeFileProvider shapeFile = ShapeFileProvider.Create("UnitTestData", "Test2", ShapeType.Point, schema, _geoFactory); shapeFile.Open(); DateTime dateCreated = DateTime.Now; FeatureDataRow<UInt32> feature = schema.NewRow(1); feature["Name"] = "Test feature"; feature["DateCreated"] = dateCreated; feature["Visits"] = 0; feature["Weight"] = 100.0f; feature.Geometry = _geoFactory.CreatePoint2D(1, 1); shapeFile.Insert(feature); shapeFile.Close(); shapeFile = new ShapeFileProvider(@"UnitTestData\Test2.shp", _geoFactory); shapeFile.Open(); Assert.AreEqual(1, shapeFile.GetFeatureCount()); FeatureDataTable dataTable = new FeatureDataTable("ShapeFile test", _geoFactory); FeatureQueryExpression query = FeatureQueryExpression.Intersects(_geoFactory.CreateExtents2D(0.9, 0.9, 1, 1)); IFeatureDataReader reader = shapeFile.ExecuteFeatureQuery(query); dataTable.Load(reader, LoadOption.OverwriteChanges, null); Assert.AreEqual(1, dataTable.Rows.Count); FeatureDataRow newFeature = dataTable.Rows[0] as FeatureDataRow; Assert.AreEqual(_geoFactory.CreatePoint2D(1, 1), newFeature.Geometry); Assert.AreEqual(newFeature["Name"], "Test feature"); DateTime dateCreatedActual = (DateTime) newFeature["DateCreated"]; Assert.AreEqual(dateCreatedActual.Year, dateCreated.Year); Assert.AreEqual(dateCreatedActual.Month, dateCreated.Month); Assert.AreEqual(dateCreatedActual.Day, dateCreated.Day); Assert.AreEqual(newFeature["Visits"], 0); Assert.AreEqual(newFeature["Weight"], 100.0f); shapeFile.Close(); }
public void InsertFeaturesTest() { FeatureDataTable<UInt32> schema = new FeatureDataTable<UInt32>("OID", _geoFactory); schema.Columns.AddRange(new DataColumn[] { new DataColumn("Name", typeof (String)), new DataColumn("DateCreated", typeof (DateTime)), new DataColumn("Visits", typeof (Int64)), new DataColumn("Weight", typeof (Double)) }); ShapeFileProvider shapeFile = ShapeFileProvider.Create("UnitTestData", "Test3", ShapeType.PolyLine, schema, _geoFactory); shapeFile.Open(); IExtents computedBounds = _geoFactory.CreateExtents(); List<FeatureDataRow<UInt32>> rows = new List<FeatureDataRow<UInt32>>(); for (Int32 i = 0; i < 10000; i++) { DateTime dateCreated = new DateTime(_rnd.Next(1900, 2155), _rnd.Next(1, 12), _rnd.Next(1, 28)); FeatureDataRow<UInt32> feature = schema.NewRow((UInt32) i); Char[] chars = new Char[_rnd.Next(0, 254)]; for (Int32 charIndex = 0; charIndex < chars.Length; charIndex++) { chars[charIndex] = (Char) (Byte) _rnd.Next(32, 126); } feature["Name"] = new String(chars); feature["DateCreated"] = dateCreated; feature["Visits"] = _rnd.Next(0, Int32.MaxValue) << _rnd.Next(0, 32); feature["Weight"] = _rnd.NextDouble()*_rnd.Next(0, 100000); ICoordinateSequence coordinates = _geoFactory.CoordinateSequenceFactory.Create(generateCoordinates()); ILineString line = _geoFactory.CreateLineString(coordinates); computedBounds.ExpandToInclude(line.Extents); feature.Geometry = line; rows.Add(feature); } shapeFile.Insert(rows); shapeFile.Close(); shapeFile = new ShapeFileProvider(@"UnitTestData\Test3.shp", _geoFactory, _coordSysFactory, false); shapeFile.Open(); Assert.AreEqual(10000, shapeFile.GetFeatureCount()); Assert.AreEqual(computedBounds, shapeFile.GetExtents()); FeatureDataTable dataTable = new FeatureDataTable("ShapeFile test", _geoFactory); FeatureQueryExpression query = FeatureQueryExpression.Intersects(shapeFile.GetExtents()); IFeatureDataReader reader = shapeFile.ExecuteFeatureQuery(query); dataTable.Load(reader, LoadOption.OverwriteChanges, null); Assert.AreEqual(10000, dataTable.Rows.Count); }
public void SetTableSchemaShouldMatchShapeFileSchema() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable<UInt32> queryTable = shapeFile.CreateNewTable() as FeatureDataTable<UInt32>; FeatureDataTable nonKeyedTable = new FeatureDataTable(_geoFactory); shapeFile.SetTableSchema(nonKeyedTable); DataTableHelper.AssertTableStructureIdentical(nonKeyedTable, queryTable); FeatureDataTable<UInt32> keyedTable = new FeatureDataTable<UInt32>("OID", _geoFactory); shapeFile.SetTableSchema(keyedTable); DataTableHelper.AssertTableStructureIdentical(keyedTable, queryTable); }
public void CloseExclusiveTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(true); shapeFile.Close(); File.OpenRead(BcRoadsShapeFile).Close(); }
public void SetTableSchemaWithDifferentKeyNameAndSchemaMergeAction() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); IGeometry empty = _geoFactory.CreatePoint(); FeatureDataTable<UInt32> queryTable = shapeFile.CreateNewTable() as FeatureDataTable<UInt32>; // expecting a new FeatureDataTable<UInt32>("OID", _geoFactory); FeatureDataTable<UInt32> keyedTable = new FeatureDataTable<UInt32>("FID", _geoFactory); shapeFile.SetTableSchema(keyedTable, SchemaMergeAction.KeyByType); DataTableHelper.AssertTableStructureIdentical(keyedTable, queryTable); }
public void GetGeometriesInViewTest() { ShapeFileProvider shapeFile = new ShapeFileProvider( BcRoadsShapeFile, _geoFactory, _coordSysFactory); shapeFile.Open(); List<IGeometry> geometries = new List<IGeometry>(); //geometries.AddRange(shapeFile.ExecuteGeometryIntersectionQuery(shapeFile.GetExtents())); Assert.AreEqual(shapeFile.GetFeatureCount(), geometries.Count); geometries.Clear(); IGeometry empty = _geoFactory.CreatePoint(); //geometries.AddRange(shapeFile.ExecuteGeometryIntersectionQuery(empty)); Assert.AreEqual(0, geometries.Count); }
public IFeatureProvider ConstructSourceProvider(IGeometryServices geometryServices) { string path; while (true) { Console.WriteLine("Please enter the path to the input shapefile"); path = Console.ReadLine(); if (File.Exists(path)) { break; } Console.WriteLine("Invalid Path"); } _sourceProvider = new ShapeFileProvider(path, geometryServices.DefaultGeometryFactory, geometryServices.CoordinateSystemFactory) { IsSpatiallyIndexed = false }; _sourceProvider.Open(); Console.WriteLine("\nINFO The shape type is: " + _sourceProvider.ShapeType + "\n"); if (Array.IndexOf(new ShapeType[] { ShapeType.PointM, ShapeType.PointZ, ShapeType.MultiPointM, ShapeType.MultiPointZ, ShapeType.PolygonM, ShapeType.PolygonZ }, _sourceProvider.ShapeType) > -1) { Console.WriteLine("Warning: The source shapefile contains Z or M values. This is work in progress and can cause issues."); } ForceCoordinateOptions[] coordinateOptions = (ForceCoordinateOptions[])Enum.GetValues(typeof(ForceCoordinateOptions)); Dictionary <int, ForceCoordinateOptions> fco = new Dictionary <int, ForceCoordinateOptions>(); for (int i = 0; i < coordinateOptions.Length; i++) { fco.Add(i, coordinateOptions[i]); } ShapeFileReadStrictness[] strictnesses = (ShapeFileReadStrictness[])Enum.GetValues(typeof(ShapeFileReadStrictness)); Dictionary <int, ShapeFileReadStrictness> strictness = new Dictionary <int, ShapeFileReadStrictness>(); for (int i = 0; i < strictnesses.Length; i++) { strictness.Add(i, strictnesses[i]); } Console.WriteLine("Force Coordinate Options? Enter the id of one of the options below or leave blank."); foreach (KeyValuePair <int, ForceCoordinateOptions> option in fco) { Console.WriteLine(string.Format("{0} {1}", option.Key, option.Value)); } int opt; if (int.TryParse(Console.ReadLine(), out opt)) { if (fco.ContainsKey(opt)) { _sourceProvider.ForceCoordinateOptions = fco[opt]; } Console.WriteLine(string.Format("The effective shape type is now {0}", _sourceProvider.EffectiveShapeType)); } Console.WriteLine("Please select a Leniency option:"); foreach (KeyValuePair <int, ShapeFileReadStrictness> pair in strictness) { Console.WriteLine(String.Format("{0} {1}", pair.Key, pair.Value)); } if (int.TryParse(Console.ReadLine(), out opt)) { if (strictness.ContainsKey(opt)) { _sourceProvider.ReadStrictness = strictness[opt]; } } return(_sourceProvider); }
public void InsertFeaturesTest() { FeatureDataTable <UInt32> schema = new FeatureDataTable <UInt32>("OID", _geoFactory); schema.Columns.AddRange(new DataColumn[] { new DataColumn("Name", typeof(String)), new DataColumn("DateCreated", typeof(DateTime)), new DataColumn("Visits", typeof(Int64)), new DataColumn("Weight", typeof(Double)) }); ShapeFileProvider shapeFile = ShapeFileProvider.Create("UnitTestData", "Test3", ShapeType.PolyLine, schema, _geoFactory); shapeFile.Open(); IExtents computedBounds = _geoFactory.CreateExtents(); List <FeatureDataRow <UInt32> > rows = new List <FeatureDataRow <UInt32> >(); for (Int32 i = 0; i < 10000; i++) { DateTime dateCreated = new DateTime(_rnd.Next(1900, 2155), _rnd.Next(1, 12), _rnd.Next(1, 28)); FeatureDataRow <UInt32> feature = schema.NewRow((UInt32)i); Char[] chars = new Char[_rnd.Next(0, 254)]; for (Int32 charIndex = 0; charIndex < chars.Length; charIndex++) { chars[charIndex] = (Char)(Byte)_rnd.Next(32, 126); } feature["Name"] = new String(chars); feature["DateCreated"] = dateCreated; feature["Visits"] = _rnd.Next(0, Int32.MaxValue) << _rnd.Next(0, 32); feature["Weight"] = _rnd.NextDouble() * _rnd.Next(0, 100000); ICoordinateSequence coordinates = _geoFactory.CoordinateSequenceFactory.Create(generateCoordinates()); ILineString line = _geoFactory.CreateLineString(coordinates); computedBounds.ExpandToInclude(line.Extents); feature.Geometry = line; rows.Add(feature); } shapeFile.Insert(rows); shapeFile.Close(); shapeFile = new ShapeFileProvider(@"UnitTestData\Test3.shp", _geoFactory, _coordSysFactory, false); shapeFile.Open(); Assert.AreEqual(10000, shapeFile.GetFeatureCount()); Assert.AreEqual(computedBounds, shapeFile.GetExtents()); FeatureDataTable dataTable = new FeatureDataTable("ShapeFile test", _geoFactory); FeatureQueryExpression query = FeatureQueryExpression.Intersects(shapeFile.GetExtents()); IFeatureDataReader reader = shapeFile.ExecuteFeatureQuery(query); dataTable.Load(reader, LoadOption.OverwriteChanges, null); Assert.AreEqual(10000, dataTable.Rows.Count); }