From a74b0a1e964bc29e1066b528fa32e877716f15de Mon Sep 17 00:00:00 2001 From: Xavier Fischer Date: Mon, 24 Oct 2016 16:12:17 +0200 Subject: [PATCH] NaturalEarth data as test --- .../NaturalEarthData.cs | 52 +++++++++++++++---- SqlServerSpatial.Toolkit.Test/Program.cs | 21 ++++---- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/SqlServerSpatial.Toolkit.Test/NaturalEarthData.cs b/SqlServerSpatial.Toolkit.Test/NaturalEarthData.cs index bac9801..4dea02a 100644 --- a/SqlServerSpatial.Toolkit.Test/NaturalEarthData.cs +++ b/SqlServerSpatial.Toolkit.Test/NaturalEarthData.cs @@ -12,15 +12,32 @@ namespace SqlServerSpatial.Toolkit.Test { static class NaturalEarthData { - private static List naturalEarthTables = null; - private const string naturalEarthconnectionString = @"Data Source=.\MSSQL2014;Initial Catalog=NaturalEarth_CulturalVectors_110;Integrated Security=True"; - public static List GetNaturalEarthTables() + public enum DataSetType { Cultural, Physical } + + private static Dictionary> naturalEarthTables = new Dictionary>(); + private const string naturalEarthCulturalconnectionString = @"Data Source=.\MSSQL2014;Initial Catalog=NaturalEarth_CulturalVectors_110;Integrated Security=True;Connection Timeout=5"; + private const string naturalEarthPhysicalconnectionString = @"Data Source=.\MSSQL2014;Initial Catalog=NaturalEarth_PhysicalVectors_110;Integrated Security=True;Connection Timeout=5"; + + public static List GetNaturalEarthTables(DataSetType dataSet) + { + if (dataSet == DataSetType.Cultural) + { + return GetNaturalEarthTables(naturalEarthCulturalconnectionString); + } + else if (dataSet == DataSetType.Physical) + { + return GetNaturalEarthTables(naturalEarthPhysicalconnectionString); + } + else + return null; + } + private static List GetNaturalEarthTables(string connectionString) { - if (naturalEarthTables == null) + if (!naturalEarthTables.ContainsKey(connectionString)) { - naturalEarthTables = new List(); + naturalEarthTables.Add(connectionString, new HashSet()); - using (SqlConnection con = new SqlConnection(naturalEarthconnectionString)) + using (SqlConnection con = new SqlConnection(connectionString)) { con.Open(); using (SqlCommand com = new SqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", con)) @@ -29,20 +46,33 @@ public static List GetNaturalEarthTables() { while (dr.Read()) { - naturalEarthTables.Add(dr.GetString(0)); + naturalEarthTables[connectionString].Add(dr.GetString(0)); } } } } } - return naturalEarthTables; + return naturalEarthTables[connectionString].ToList(); } - public static List GetNatualEarthTableRows(string tableName) + public static List GetNaturalEarthTableRows(DataSetType dataSet, string tableName) + { + if (dataSet == DataSetType.Cultural) + { + return GetNaturalEarthTableRows(tableName, naturalEarthCulturalconnectionString); + } + else if (dataSet == DataSetType.Physical) + { + return GetNaturalEarthTableRows(tableName, naturalEarthPhysicalconnectionString); + } + else + return null; + } + private static List GetNaturalEarthTableRows(string tableName, string connectionString) { List rows = new List(); - using (SqlConnection con = new SqlConnection(naturalEarthconnectionString)) + using (SqlConnection con = new SqlConnection(connectionString)) { con.Open(); using (SqlCommand com = new SqlCommand(string.Format("SELECT * FROM [{0}]", tableName), con)) @@ -76,7 +106,7 @@ public static List GetNatualEarthTableRows(string tableName) return rows; } - + private static ColInfo FindColumnByNameOrType(List colInfos, string colName, string typeName = null) { ColInfo nameCol = colInfos.FirstOrDefault(c => c.Name.ToLower() == colName); diff --git a/SqlServerSpatial.Toolkit.Test/Program.cs b/SqlServerSpatial.Toolkit.Test/Program.cs index dfaf404..ad6bfd4 100644 --- a/SqlServerSpatial.Toolkit.Test/Program.cs +++ b/SqlServerSpatial.Toolkit.Test/Program.cs @@ -16,7 +16,8 @@ static void Main(string[] args) { SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); - TestNaturalEarth(); + TestNaturalEarth110(); + //TestTrace(); //TestVariousGeometries(); @@ -24,11 +25,15 @@ static void Main(string[] args) TestWorld(true, true); } - private static void TestNaturalEarth() + private static void TestNaturalEarth110() { - foreach(string table in NaturalEarthData.GetNaturalEarthTables()) + foreach(string table in NaturalEarthData.GetNaturalEarthTables(NaturalEarthData.DataSetType.Cultural)) + { + TraceNaturalEarthTable(NaturalEarthData.DataSetType.Cultural, table); + } + foreach (string table in NaturalEarthData.GetNaturalEarthTables(NaturalEarthData.DataSetType.Physical)) { - TraceNaturalEarthTable(table); + TraceNaturalEarthTable(NaturalEarthData.DataSetType.Physical, table); } SpatialTrace.ShowDialog(); } @@ -120,14 +125,14 @@ static void TestCentroid() SpatialTrace.Clear(); } - static void TraceNaturalEarthTable(string tableName) + static void TraceNaturalEarthTable(NaturalEarthData.DataSetType dataSet, string tableName) { - if (NaturalEarthData.GetNaturalEarthTables().Contains(tableName)) + if (NaturalEarthData.GetNaturalEarthTables(dataSet).Contains(tableName)) { SpatialTrace.Enable(); SpatialTrace.Indent(tableName); - foreach (NaturalEarthRow neRow in NaturalEarthData.GetNatualEarthTableRows(tableName)) + foreach (NaturalEarthRow neRow in NaturalEarthData.GetNaturalEarthTableRows(dataSet, tableName)) { SpatialTrace.TraceGeometry(neRow.Geometry, neRow.name, neRow.name); } @@ -142,8 +147,6 @@ static void TraceNaturalEarthTable(string tableName) } - - static void TestWorld(bool useLabels = false, bool useIndents = false) { SpatialTrace.Enable();