private static ILayer CreateVectorLayer(GpkgContent content, IProvider provider) { return(new VectorLayer(content.TableName, provider) { Style = VectorStyle.CreateRandomStyle() }); }
/// <summary> /// Creates an instanc of this class /// </summary> /// <param name="content">The geopackage content</param> public GpkgProvider(GpkgContent content) :base(content.SRID) { _content = content; ConnectionID = content.ConnectionString; _reader = new GpkgStandardBinaryReader(GeoAPI.GeometryServiceProvider.Instance); _extent = content.Extent; _baseTable = content.GetBaseTable(); _rtreeConstraint = BuildRtreeConstraint(content); }
/// <summary> /// Creates an instanc of this class /// </summary> /// <param name="content">The geopackage content</param> public GpkgProvider(GpkgContent content) : base(content.SRID) { _content = content; ConnectionID = content.ConnectionString; _reader = new GpkgStandardBinaryReader(GeoAPI.GeometryServiceProvider.Instance); _extent = content.Extent; _baseTable = content.GetBaseTable(); _rtreeConstraint = BuildRtreeConstraint(content); }
/// <summary> /// Method to get a feature layer for the given content /// </summary> /// <param name="content">The content</param> /// <param name="createLayer">A delegate function to create the layer</param> /// <returns>A layer</returns> public ILayer GetFeatureLayer(GpkgContent content, Func <GpkgContent, IProvider, ILayer> createLayer = null) { if (content == null) { throw new ArgumentNullException("content"); } createLayer = createLayer ?? CreateVectorLayer; return(createLayer(content, GetFeatureProvider(content))); }
public IProvider GetFeatureProvider(GpkgContent content) { if (content == null) { throw new ArgumentNullException("content"); } var p = new GpkgProvider(content); return(p); }
private static void TestProvider(IProvider provider, GpkgContent content) { int numFeatures = 0; Assert.DoesNotThrow(() => numFeatures = provider.GetFeatureCount(), "GetFeatureCount threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); var extent = provider.GetExtents(); Collection<uint> oids = null; Assert.DoesNotThrow(() => oids = provider.GetObjectIDsInView(extent), "GetObjectIDsInView threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); Assert.AreEqual(numFeatures, oids.Count); foreach (var oid in oids) { IGeometry geom = null; Assert.DoesNotThrow(() => geom = provider.GetGeometryByID(oid), "GetGeometryByID threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); FeatureDataRow feat = null; Assert.DoesNotThrow(() => feat = provider.GetFeature(oid), "GetFeature threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); Assert.IsTrue(geom.EqualsExact(feat.Geometry)); } Collection<IGeometry> geoms = null; Assert.DoesNotThrow(() => geoms = provider.GetGeometriesInView(extent), "GetFeature threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); Assert.AreEqual(numFeatures, geoms.Count); var fds = new FeatureDataSet(); Assert.DoesNotThrow(() => provider.ExecuteIntersectionQuery(extent, fds), "GetFeature threw exception:\n\tConnection{0}\n\t{1}", provider.ConnectionID, content.TableName); Assert.AreEqual(numFeatures, fds.Tables[0].Rows.Count); }
private string BuildRtreeConstraint(GpkgContent content) { string rtreeName; using (var cn = new SQLiteConnection(_content.ConnectionString).OpenAndReturn()) { var cmd = new SQLiteCommand(SqlBuildRtreeConstraint, cn); cmd.Parameters.AddWithValue(null, content.TableName); var tmp = cmd.ExecuteScalar(); if (tmp == null) return string.Empty; rtreeName = (string) tmp; } var sb = new StringBuilder(); sb.AppendFormat(" \"{0}\" IN (", _content.OidColumn); sb.AppendFormat("SELECT \"id\" FROM \"{0}\" WHERE minX>=? AND maxX<=? AND minY>=? AND maxY<=?)", rtreeName); return sb.ToString(); }
private string BuildRtreeConstraint(GpkgContent content) { string rtreeName; using (var cn = new SQLiteConnection(_content.ConnectionString).OpenAndReturn()) { var cmd = new SQLiteCommand(SqlBuildRtreeConstraint, cn); cmd.Parameters.AddWithValue(null, content.TableName); var tmp = cmd.ExecuteScalar(); if (tmp == null) { return(string.Empty); } rtreeName = (string)tmp; } var sb = new StringBuilder(); sb.AppendFormat(" \"{0}\" IN (", _content.OidColumn); sb.AppendFormat("SELECT \"id\" FROM \"{0}\" WHERE minX>=? AND maxX<=? AND minY>=? AND maxY<=?)", rtreeName); return(sb.ToString()); }
private static ILayer CreateVectorLayer(GpkgContent content, IProvider provider) { return new VectorLayer(content.TableName, provider) { Style = VectorStyle.CreateRandomStyle() }; }
/// <summary> /// Method to get a feature layer for the given content /// </summary> /// <param name="content">The content</param> /// <param name="createLayer">A delegate function to create the layer</param> /// <returns>A layer</returns> public ILayer GetFeatureLayer(GpkgContent content, Func<GpkgContent, IProvider, ILayer> createLayer = null) { if (content == null) throw new ArgumentNullException("content"); createLayer = createLayer ?? CreateVectorLayer; return createLayer(content, GetFeatureProvider(content)); }
public IProvider GetFeatureProvider(GpkgContent content) { if (content == null) throw new ArgumentNullException("content"); var p = new GpkgProvider(content); return p; }