public void TestExecuteIntersectionQuery(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.ValidateGeometries = validateGeometries; SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(GetTestEnvelope(spatialType), ds); Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, ds.Tables[0].Rows.Count); }
public void TestExecuteIntersectionQueryExceedGeogMaxExtents(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, double x1, double x2, double y1, double y2) { // occurs when user zooms out beyond map extents. For Geog, when latitude approaches 90 N or S can result in // error 24206: "The specified input cannot be accepted because it contains an edge with antipodal points." // Longitudes exceeding -179.99999999 or 180.0 are "wrapped" resulting in unexpected polygon (also contributes to err 24206) SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(new GeoAPI.Geometries.Envelope(x1, x2, y1, y2), ds); Assert.AreEqual(sq.ValidateGeometries ? _numValidatedGeoms : _numValidGeoms, ds.Tables[0].Rows.Count); }
public void TestExecuteIntersectionQueryAllHints(SqlServerProviderMode providerMode, SqlServerSpatialObjectType spatialType, bool validateGeometries) { SharpMap.Data.Providers.SqlServer2008 sq = GetTestProvider(providerMode, spatialType); sq.NoLockHint = true; sq.ForceSeekHint = true; sq.ForceIndex = spatialType == SqlServerSpatialObjectType.Geometry ? GeometrySpatialIndex : GeographySpatialIndex;; sq.ValidateGeometries = validateGeometries; SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); sq.ExecuteIntersectionQuery(GetTestEnvelope(spatialType), ds); // Note: ValidateGeometries ignored when using ForceSeek or ForceIndex Assert.AreEqual(_numValidGeoms, ds.Tables[0].Rows.Count); }