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); }
private static void setupShapefile(HttpContext context, Map m) { GeometryServices geometryServices = new GeometryServices(); string[] layernames = new[] { "Countries", "Rivers"/*, "Cities"*/ }; foreach (string s in layernames) { ShapeFileProvider shapeFile = new ShapeFileProvider(context.Server.MapPath(string.Format("~/App_Data/Shapefiles/{0}.shp", s)), geometryServices.DefaultGeometryFactory, geometryServices.CoordinateSystemFactory, false); shapeFile.IsSpatiallyIndexed = false; AppStateMonitoringFeatureProvider provider = new AppStateMonitoringFeatureProvider(shapeFile); GeoJsonGeometryStyle style = RandomStyle.RandomGeometryStyle(); /* include GeoJson styles */ style.IncludeAttributes = false; style.IncludeBBox = true; style.PreProcessGeometries = false; style.CoordinateNumberFormatString = "{0:F}"; GeometryLayer geometryLayer = new GeometryLayer(s, style, provider); geometryLayer.Features.IsSpatiallyIndexed = false; m.AddLayer(geometryLayer); provider.Open(); } }
public IFeatureProvider GetProvider() { IGeometryServices svc = new GeometryServices(); if (File.Exists(tbPath.Text)) { return new ShapeFileProvider(tbPath.Text, svc.DefaultGeometryFactory, svc.CoordinateSystemFactory, false) { IsSpatiallyIndexed = false, ForceCoordinateOptions = (ForceCoordinateOptions)cbForceCoordinate.SelectedItem, ReadStrictness = (ShapeFileReadStrictness)cbStrictness.SelectedItem }; } return null; }
public override IFeatureProvider GetProvider() { if (!EnsureTables()) return null; string oidColumn, oidType, geometryColumn, schema, tableName; string[] prts = ((string) cbTable.SelectedItem).Split('|'); oidColumn = prts[3]; oidType = prts[2]; geometryColumn = prts[1]; prts = prts[0].Split('.'); schema = prts[0]; tableName = prts[1]; IGeometryFactory f = new GeometryServices().DefaultGeometryFactory; SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(this.ServerConnectionString); sb.InitialCatalog = cbDataBases.SelectedItem.ToString(); string conn = sb.ToString(); switch (oidType) { case "bigint": return new MsSqlServer2008Provider<long>(f, conn, schema, tableName, oidColumn, geometryColumn); case "decimal": return new MsSqlServer2008Provider<decimal>(f, conn, schema, tableName, oidColumn, geometryColumn); case "int": case "smallint": return new MsSqlServer2008Provider<int>(f, conn, schema, tableName, oidColumn, geometryColumn); case "float": case "numeric": case "real": return new MsSqlServer2008Provider<double>(f, conn, schema, tableName, oidColumn, geometryColumn); case "tinyint": return new MsSqlServer2008Provider<byte>(f, conn, schema, tableName, oidColumn, geometryColumn); case "uniqueidentifier": return new MsSqlServer2008Provider<Guid>(f, conn, schema, tableName, oidColumn, geometryColumn); case "nvarchar": case "varchar": return new MsSqlServer2008Provider<string>(f, conn, schema, tableName, oidColumn, geometryColumn); } return null; }
public void TestSqlServer2008() { GeometryServices services = new GeometryServices(); MsSqlServer2008Provider<long> search = new MsSqlServer2008Provider<long>(services.DefaultGeometryFactory, ConfigurationManager. ConnectionStrings["sql2008"]. ConnectionString, "dbo", "vw_iMARS_BRANCH", "ACSId", "Geom") { DefaultProviderProperties = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }) }; CollectionBinaryExpression binaryExpression = new CollectionBinaryExpression(new PropertyNameExpression("PostCode"), CollectionOperator.In, new CollectionExpression(new[] { 3, 4, 5, 6 })); ProviderPropertiesExpression providerProps = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), //new OrderByCollectionExpression(new[] {"PostCode"}), new ForceIndexExpression(true), new IndexNamesExpression(new[] {"Index1", "Index2"}) }); ProviderQueryExpression prov = new ProviderQueryExpression(providerProps, new AllAttributesExpression(), binaryExpression); object obj = search.ExecuteQuery(prov); Assert.IsNotNull(obj); }
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 TestMsSqlServer2008OrderBy() { GeometryServices services = new GeometryServices(); MsSqlServer2008Provider<long> search = new MsSqlServer2008Provider<long>(services.DefaultGeometryFactory, ConfigurationManager. ConnectionStrings["sql2008"]. ConnectionString, "dbo", "vwGeoCustomers", "OID", "Geom") { DefaultProviderProperties = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }) }; //var binaryExpression = // new CollectionBinaryExpression(new PropertyNameExpression("PostCode"), CollectionOperator.In, new CollectionExpression(new[] { 3, 4, 5, 6 })); AttributeBinaryStringExpression binaryExpression = new AttributeBinaryStringExpression("PostCode", BinaryStringOperator. StartsWith, "W"); IGeometry testPoint = new GeometryServices()["EPSG:27700"].CreatePoint2D(500000, 180000); ProviderPropertiesExpression providerProps = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), //new OrderByCollectionExpression( // new [] // { // new OrderByExpression( // new SpatialAnalysisDistanceExpression(new GeometryExpression(null),new GeometryExpression(testPoint) ),SortOrder.Ascending), // }), new DataPageSizeExpression(10), new DataPageNumberExpression(0) }); ProviderQueryExpression prov = new ProviderQueryExpression(providerProps, new AllAttributesExpression(), binaryExpression, new SortExpressionCollectionExpression( new[]{new SortExpression( new SpatialAnalysisDistanceExpression( new GeometryExpression(null), new GeometryExpression(testPoint)),SortOrder.Ascending)})); object obj = search.ExecuteQuery(prov); Assert.IsNotNull(obj); }
public void TestTOWGS84Conversion() { string fromWkt = "PROJCS[\"LGD2006 / UTM zone 32N\",GEOGCS[\"LGD2006\",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",-4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3199\"]]"; string toWkt = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"; GeometryServices gs = new GeometryServices(); ICoordinateSystem srs = gs.CoordinateSystemFactory.CreateFromWkt(fromWkt); ICoordinateSystem dst = gs.CoordinateSystemFactory.CreateFromWkt(toWkt); //WGS84 ICoordinateTransformation ics = gs.CoordinateTransformationFactory.CreateFromCoordinateSystems(srs, dst); Assert.IsNotNull(ics); }
public void TestGeometryProvider() { string wkt; GeometryServices g = new GeometryServices(); GeometryProvider prov; IGeometry geom = g.DefaultGeometryFactory.WktReader.Read(File.ReadAllText("D:\\geometries.txt")); prov = new GeometryProvider(new[] { geom }); using (IFeatureDataReader fdr = prov.ExecuteFeatureQuery(new FeatureQueryExpression(geom.Extents, SpatialOperation.Intersects))) { while (fdr.Read()) { Debug.WriteLine(fdr.Geometry.AsText()); } } }
public void TestGetFeatureByOid() { GeometryServices services = new GeometryServices(); MsSqlServer2008Provider<long> search = new MsSqlServer2008Provider<long>(services.DefaultGeometryFactory, ConfigurationManager. ConnectionStrings["sql2008"]. ConnectionString, "dbo", "vw_iMARS_BRANCH", "ACSId", "Geom") { DefaultProviderProperties = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }) }; IFeatureDataRecord record = search.GetFeatureByOid(1); Assert.IsNotNull(record); }
public void TestSqLite() { GeometryServices services = new GeometryServices(); SpatiaLite2Provider search = new SpatiaLite2Provider(services.DefaultGeometryFactory, ConfigurationManager.ConnectionStrings["sqLite"]. ConnectionString, "main", "regions", "OID", "XGeometryX"); search.SpatiaLiteIndexType = SpatiaLite2IndexType.MBRCache; BinaryExpression binaryExpression = new BinaryExpression(new PropertyNameExpression("VHG5"), BinaryOperator.GreaterThan, new LiteralExpression<int>(6)); ProviderPropertiesExpression providerProps = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { }); ProviderQueryExpression prov = new ProviderQueryExpression(providerProps, new AllAttributesExpression(), binaryExpression); object obj = search.ExecuteQuery(prov); Assert.IsNotNull(obj); }
public void TestMsSqlSpatialPaged() { GeometryServices services = new GeometryServices(); MsSqlSpatialProvider search = new MsSqlSpatialProvider(services.DefaultGeometryFactory, ConfigurationManager.ConnectionStrings["mssqlspatial" ]. ConnectionString, "ST", "dbo", "BRoads", "OID", "the_geom") { DefaultProviderProperties = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }) }; //var binaryExpression = // new CollectionBinaryExpression(new PropertyNameExpression("PostCode"), CollectionOperator.In, new CollectionExpression(new[] { 3, 4, 5, 6 })); AttributeBinaryStringExpression binaryExpression = new AttributeBinaryStringExpression("NAME", BinaryStringOperator. StartsWith, "W"); ProviderPropertiesExpression providerProps = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), //new OrderByCollectionExpression(new[] {"NAME"}), new ForceIndexExpression(true), new IndexNamesExpression(new[] {"Index1", "Index2"}), new DataPageSizeExpression(10), new DataPageNumberExpression(5) }); ProviderQueryExpression prov = new ProviderQueryExpression(providerProps, new AllAttributesExpression(), binaryExpression); object obj = search.ExecuteQuery(prov); Assert.IsNotNull(obj); }
public void TestSqlServer2008Distance() { GeometryServices services = new GeometryServices(); MsSqlServer2008Provider<long> search = new MsSqlServer2008Provider<long>(services.DefaultGeometryFactory, ConfigurationManager. ConnectionStrings["sql2008"]. ConnectionString, "dbo", "GeoPlaces", "OId", "Geom") { DefaultProviderProperties = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }) }; IGeometry point = services["EPSG:27700"].CreatePoint2D(500000, 180000); SpatialAnalysisExpression analysisExpresssion = new SpatialAnalysisDistanceExpression(new GeometryExpression(null), new GeometryExpression(point)); BinaryExpression expression = new BinaryExpression(analysisExpresssion, BinaryOperator.LessThanOrEqualTo, new LiteralExpression<double>(2000.00)); ProviderPropertiesExpression providerProps = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { new WithNoLockExpression(true), new ForceIndexExpression(true) }); ProviderQueryExpression prov = new ProviderQueryExpression(providerProps, new AllAttributesExpression(), expression); object obj = search.ExecuteQuery(prov); Assert.IsNotNull(obj); }
public IFeatureProvider GetProvider() { if (EnsureTables()) { string conn = ServerConnectionString; conn += string.Format("Database={0};", cbDataBases.SelectedItem); conn += "Enlist=true;"; DataRowView drv = (DataRowView) cbTables.SelectedItem; string schema = (string) drv["Schema"]; string tableName = (string) drv["TableName"]; ; string geomColumn = (string) drv["GeometryColumn"]; int coordDimension = (int) drv["Dimension"]; string srid = (string) drv["SRID"]; //((int)).ToString(); GeometryServices gs = new GeometryServices(); IGeometryFactory gf = gs[srid]; //, coordDimension]; //if (!string.IsNullOrEmpty(spatialReference)) // gf.SpatialReference = gs.CoordinateSystemFactory.CreateFromWkt(spatialReference); string oidColumnName = (String) dgvColumns.Rows[oidcolumn].Cells["ColumnName"].Value; List<String> columns = new List<string>(); //List<OrderByExpression> orderby = new List<OrderByExpression>(); foreach (DataGridViewRow dgvr in dgvColumns.Rows) { if ((bool) dgvr.Cells["Include"].Value) columns.Add((String) dgvr.Cells["ColumnName"].Value); //if (dgvr.Cells["SortOrder"].Value != null) // orderby.Add(new OrderByExpression((String) dgvr.Cells[1].Value, // (SortOrder) dgvr.Cells["SortOrder"].Value)); } if (!columns.Contains(oidColumnName)) columns.Insert(0, oidColumnName); columns.Add(geomColumn); ProviderPropertiesExpression ppe = null; //if (orderby.Count == 0) //{ // ppe = new ProviderPropertiesExpression( // new ProviderPropertyExpression[] // { // new AttributesCollectionExpression(columns) // }); //} //else //{ ppe = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { //new OrderByCollectionExpression(orderby), new AttributesCollectionExpression(columns) }); //} IFeatureProvider prov = null; switch ((String) dgvColumns.Rows[oidcolumn].Cells["DataType"].Value) { case "bigint": prov = new PostGisProvider<long>(gf, conn, schema, tableName, oidColumnName, geomColumn, gs.CoordinateTransformationFactory) {DefaultProviderProperties = ppe}; break; case "integer": prov = new PostGisProvider<int>(gf, conn, schema, tableName, oidColumnName, geomColumn, gs.CoordinateTransformationFactory) {DefaultProviderProperties = ppe}; break; case "character varying": case "text": prov = new PostGisProvider<string>(gf, conn, schema, tableName, oidColumnName, geomColumn, gs.CoordinateTransformationFactory) {DefaultProviderProperties = ppe}; break; case "uuid": prov = new PostGisProvider<Guid>(gf, conn, schema, tableName, oidColumnName, geomColumn, gs.CoordinateTransformationFactory) {DefaultProviderProperties = ppe}; break; default: return null; } //jd commented temporarily to get a build //((ISpatialDbProvider)prov).DefinitionQuery = // new ProviderQueryExpression(ppe, ape, null); return prov; } return null; }
private ICoordinateTransformation SetCoordinateTransfromation(ICoordinateSystem spatialReference) { if (spatialReference != null) { string lastTargetCS = string.IsNullOrEmpty(Settings.Default.TargetSrid) ? "(e.g. 'EPSG:4326'). Otherwise just press Enter." : string.Format( "(Last time you used: '{0}'). Only press Enter to do again or \n'{1}' to omit coordinat transformation.", Settings.Default.TargetSrid, spatialReference.AuthorityCode); Console.WriteLine(string.Format( "\nThe Srid Authority Code of the sources' coordinate system is '{0}'.\n" + "If you wish to apply a coordinate transformation supply Srid Authority Code.\n" + "{1}.", spatialReference.AuthorityCode)); string targetCS = Console.ReadLine(); if (string.IsNullOrEmpty(targetCS)) targetCS = Settings.Default.TargetSrid; if (string.Equals(targetCS, spatialReference.AuthorityCode)) targetCS = ""; if (!string.IsNullOrEmpty(targetCS)) { ICoordinateSystem csTo = SridMap.DefaultInstance.Process(targetCS, (ICoordinateSystem) null); if (csTo != null) { ICoordinateTransformation ct = new GeometryServices().CoordinateTransformationFactory .CreateFromCoordinateSystems(spatialReference, csTo); return ct; } else { Console.WriteLine(string.Format("Cannot access the following coordinate system: {0}", targetCS)); } } } return null; }
public IFeatureProvider GetProvider() { if (EnsureTables()) { string conn = ServerConnectionString; DataRowView drv = (DataRowView) cbTables.SelectedItem; string schema = (string) drv["Schema"]; string tableName = (string) drv["TableName"]; ; string geomColumn = (string) drv["GeometryColumn"]; int coordDimension = (int) (long) drv["Dimension"]; string srid = drv["SRID"].ToString(); string spatialReference = drv["SpatialReference"] == DBNull.Value ? "" : (string) drv["SpatialReference"]; GeometryServices gs = new GeometryServices(); IGeometryFactory gf = gs[srid]; //, coordDimension]; //if (!string.IsNullOrEmpty(spatialReference)) // gf.SpatialReference = gs.CoordinateSystemFactory.CreateFromWkt(spatialReference); string oidColumnName = (String) dgvColumns.Rows[oidcolumn].Cells[2].Value; List<String> columns = new List<string>(); //List<OrderByExpression> orderby = new List<OrderByExpression>(); foreach (DataGridViewRow dgvr in dgvColumns.Rows) { if ((bool) dgvr.Cells["Include"].Value) columns.Add((String) dgvr.Cells[2].Value); //if (dgvr.Cells["SortOrder"].Value != null) // orderby.Add(new OrderByExpression((String) dgvr.Cells[1].Value, // (SortOrder) dgvr.Cells["SortOrder"].Value)); } if (!columns.Contains(oidColumnName)) columns.Insert(0, oidColumnName); columns.Insert(1, geomColumn); ProviderPropertiesExpression ppe = null; //if (orderby.Count == 0) //{ // ppe = new ProviderPropertiesExpression( // new ProviderPropertyExpression[] // { // new AttributesCollectionExpression(columns) // }); //} //else //{ ppe = new ProviderPropertiesExpression( new ProviderPropertyExpression[] { //new OrderByCollectionExpression(orderby), new AttributesCollectionExpression(columns) }); //} IFeatureProvider prov = new SpatiaLite2Provider(gf, conn, schema, tableName, oidColumnName, geomColumn, gs.CoordinateTransformationFactory) {DefaultProviderProperties = ppe}; //jd commented temporarily to get a build //((ISpatialDbProvider)prov).DefinitionQuery = // new ProviderQueryExpression(ppe, ape, null); return prov; } return null; }