public void T04_InsertInDataSource() { SpatiaLite2Provider prov = new SpatiaLite2Provider( _geometryFactory, @"Data Source=test.sqlite", "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer("test", prov); gl.Select(new AllAttributesExpression()); gl.Features.AcceptChanges(); FeatureDataRow fdr = gl.Features.NewRow(); fdr[0] = 999; fdr.Geometry = gl.GeometryFactory.WktReader.Read("POINT (-2 13)"); fdr[1] = fdrLabel(fdr); gl.Features.AddRow(fdr); prov.Insert(gl.Features.GetChanges()); //gl.SelectedFilter = new FeatureQueryExpression( // new AttributeBinaryExpression( // new PropertyNameExpression("OID"), // BinaryOperator.Equals, // (Int64)999)); //Assert.AreEqual(5, gl.SelectedFeatures.Count); fdr = gl.Features.Find(999); Assert.IsNotNull(fdr); }
public void T05_DeleteFromDataSource() { SpatiaLite2Provider prov = new SpatiaLite2Provider( _geometryFactory, @"Data Source=test.sqlite", "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer(prov); gl.Select(new SpatialBinaryExpression( new ExtentsExpression(prov.GetExtents()), SpatialOperation.Contains, new ThisExpression())); gl.Features.AcceptChanges(); //gl.Features.RemoveRow(gl.Features[4]); FeatureDataRow fdr = gl.Features.Find(999); fdr.Delete(); //prov.Delete(gl.Features.GetChanges(DataRowState.Deleted)); gl.Features.AcceptChanges(); gl = new GeometryLayer(prov); gl.Select(new SpatialBinaryExpression( new ExtentsExpression(prov.GetExtents()), SpatialOperation.Contains, new ThisExpression())); gl.Features.AcceptChanges(); //Assert.AreEqual(4, gl.Features.Rows.Count); }
public void T03_MultipleSelects() { SpatiaLite2Provider prov = new SpatiaLite2Provider( _geometryFactory, @"Data Source=test.sqlite", "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer("test", prov); gl.Select(new AllAttributesExpression()); gl.Features.AcceptChanges(); Assert.AreEqual(4, gl.Features.FeatureCount); Assert.AreEqual(_geometryFactory.CreateExtents2D(0,-3,15,20), gl.Features.Extents); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new ExtentsExpression(prov.GeometryFactory.CreateExtents2D(-1,-1,1,1)), SpatialOperation.Contains, new ThisExpression()) ); Assert.AreEqual(1, gl.Features.Rows.Count); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new GeometryExpression(prov.GeometryFactory.WktReader.Read(("POLYGON((-1 -1, 0 1, 1 1, -1 -1))"))), SpatialOperation.Contains, new ThisExpression()) ); Assert.AreEqual(1, gl.Features.Rows.Count); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new GeometryExpression(prov.GeometryFactory.WktReader.Read(("POLYGON((-1 -1, -1 1, 0 1, 0 -1, -1 -1))"))), SpatialOperation.Touches, new ThisExpression()) ); Assert.AreEqual(1, gl.Features.Rows.Count, 1); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new ThisExpression(), SpatialOperation.Within, new GeometryExpression(prov.GeometryFactory.WktReader.Read(("POLYGON((-1 -1, 0 1, 1 1, -1 -1))")))) ); Assert.AreEqual(0, gl.Features.Rows.Count); }
public void T99_GeometryFromBinary() { PostGisProvider<Int64> prov = new PostGisProvider<Int64>( _geometryFactory, connectionString, "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer("test", prov); gl.Select(new AllAttributesExpression()); using (NpgsqlConnection cn = new NpgsqlConnection(connectionString)) { cn.Open(); NpgsqlCommand cm = new NpgsqlCommand( "SELECT ST_SRID( ST_GeomFromWKB(:p0::bytea, -1) )", cn); NpgsqlParameter par = new NpgsqlParameter(":p0", DbType.Binary); par.Value = prov.GeometryFactory.WktReader.Read("POLYGON((-1 -1, 0 1, 1 -1, -1 -1))").AsBinary(); cm.Parameters.Add(par); Debug.Write(cm.ExecuteScalar()); } }
public void T05_DeleteFromDataSource() { PostGisProvider<Int64> prov = new PostGisProvider<Int64>( _geometryFactory, connectionString, "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer(prov); gl.Select(new SpatialBinaryExpression( new ExtentsExpression(prov.GetExtents()), SpatialOperation.Contains, new ThisExpression())); gl.Features.AcceptChanges(); //gl.Features.RemoveRow(gl.Features[4]); FeatureDataRow fdr = gl.Features.Find(999); fdr.Delete(); //prov.Delete(gl.Features.GetChanges(DataRowState.Deleted)); gl.Features.AcceptChanges(); gl = new GeometryLayer(prov); gl.Select(new SpatialBinaryExpression( new ExtentsExpression(prov.GetExtents()), SpatialOperation.Contains, new ThisExpression())); gl.Features.AcceptChanges(); //Assert.AreEqual(4, gl.Features.Rows.TotalItemCount); }
public void T03_SomeSelects() { PostGisProvider<Int64> prov = new PostGisProvider<Int64>( _geometryFactory, connectionString, "TestFeatureDataTable"); GeometryLayer gl = new GeometryLayer("test", prov); gl.Select(new AllAttributesExpression()); gl.Features.AcceptChanges(); Assert.AreEqual(4, gl.Features.FeatureCount); Assert.AreEqual(_geometryFactory.CreateExtents2D(0, -3, 15, 20), gl.Features.Extents); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new ExtentsExpression(prov.GeometryFactory.CreateExtents2D(-1, -1, 1, 1)), SpatialOperation.Contains, new ThisExpression()) ); Assert.AreEqual(1, gl.Features.Rows.Count); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new GeometryExpression(prov.GeometryFactory.WktReader.Read(("POLYGON((-1 -1, 0 1, 1 -1, -1 -1))"))), SpatialOperation.Contains, new ThisExpression()) ); //SELECT testfeaturedatatable.poid,testfeaturedatatable.label,ST_AsBinary(xgeometryx)::bytea AS xgeometryx FROM public.testfeaturedatatable WHERE ( ST_Contains( ST_GeomFromWKB(:iparam0, -1), xgeometryx )) //SELECT testfeaturedatatable.poid,testfeaturedatatable.label,ST_AsBinary(xgeometryx)::bytea AS xgeometryx FROM public.testfeaturedatatable WHERE ( ST_Contains( ST_GeomFromText('POLYGON((-1 -1, 0 1, 1 -1, -1 -1))', -1), xgeometryx )) Assert.AreEqual(1, gl.Features.Rows.Count); gl = new GeometryLayer(prov); gl.Select( new SpatialBinaryExpression( new GeometryExpression( prov.GeometryFactory.WktReader.Read(("POLYGON((-1 -1, -1 1, 0 1, 0 -1, -1 -1))"))), SpatialOperation.Touches, new ThisExpression()) ); Assert.AreEqual(1, gl.Features.Rows.Count); //gl = new GeometryLayer(prov); //gl.Select( // new SpatialBinaryExpression( // new ThisExpression(), // SpatialOperation.Within, // new GeometryExpression(prov.GeometryFactory.WktReader.Read("POLYGON((-1 -1, 0 1, 1 -1, -1 -1))"))) // ); //Assert.AreEqual(0, gl.Features.Rows.TotalItemCount); }