private void TestCommunes() { List <SqlGeometry> geom = new List <SqlGeometry>(); SpatialTrace.Enable(); SpatialTrace.TraceText("Open DB connection"); SpatialTrace.Indent(); using (SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=SampleSpatialData;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False")) { con.Open(); using (SqlCommand com = new SqlCommand("SELECT geom, INSEE_COM + ' ' + NOM_COM FROM dbo.COMMUNE --WHERE geom2154.STNumInteriorRing() > 0", con)) { int i = 0; using (SqlDataReader reader = com.ExecuteReader()) { SpatialTrace.TraceText("Reading results DB\t\t connection"); SpatialTrace.Indent(); while (reader.Read()) { i++; // workaround https://msdn.microsoft.com/fr-fr/library/ms143179(v=sql.120).aspx // In version 11.0 only SqlGeometry curGeom = SqlGeometry.Deserialize(reader.GetSqlBytes(0)); //// In version 10.0 or 11.0 //curGeom = new SqlGeometry(); //curGeom.Read(new BinaryReader(reader.GetSqlBytes(0).Stream)); geom.Add(curGeom); SpatialTrace.SetFillColor(GetRandomColor()); SpatialTrace.SetLineColor(GetRandomColor()); SpatialTrace.SetLineWidth(GetRandomStrokeWidth()); SpatialTrace.TraceGeometry(curGeom, reader[1].ToString()); } SpatialTrace.Unindent(); } } } SpatialTrace.Unindent(); ((ISpatialViewer)viewer).SetGeometry(SqlGeomStyledFactory.Create(geom, null, null, null, "Sample")); }
public void Initialize(string traceFileName) { try { _traceFileName = traceFileName; _filePath = System.IO.Path.GetDirectoryName(_traceFileName); _traceLines = new ObservableCollection <TraceLineDesign>(); using (FileStream fs = new FileStream(_traceFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs)) { string lineText = sr.ReadLine(); // skip header lineText = sr.ReadLine(); while (lineText != null) { // Parse line TraceLineDesign traceLine = TraceLineDesign.Parse(lineText); // Create geometry if (string.IsNullOrEmpty(traceLine.GeometryDataFile) == false) { if (traceLine.GeometryDataFile.EndsWith("list.dat")) { _listGeometryStyles[traceLine.UniqueId] = SqlGeomStyledFactory.Create(SqlTypesExtensions.ReadList(System.IO.Path.Combine(_filePath, traceLine.GeometryDataFile)), traceLine.FillColor, traceLine.StrokeColor, traceLine.StrokeWidth, traceLine.Label, traceLine.IsChecked); } else { _listGeometryStyles[traceLine.UniqueId] = new List <SqlGeometryStyled>() { SqlGeomStyledFactory.Create(SqlTypesExtensions.Read(System.IO.Path.Combine(_filePath, traceLine.GeometryDataFile)), traceLine.FillColor, traceLine.StrokeColor, traceLine.StrokeWidth, traceLine.Label, traceLine.IsChecked) }; } } // Add to collection _traceLines.Add(traceLine); // next value lineText = sr.ReadLine(); } } } // Set to view model _viewModel.Traces = _traceLines; } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Warning); } }