예제 #1
0
        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);
        }
예제 #2
0
        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);

            if (numFeatures > 0)
            {
                Assert.IsTrue(oids.Count > 0);
            }

            var tmpFeatures = 0;

            foreach (var oid in oids)
            {
                if (tmpFeatures > 50)
                {
                    break;
                }

                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);

                if (geom != null)
                {
                    Assert.IsTrue(geom.EqualsExact(feat.Geometry));
                }

                tmpFeatures++;
            }

            Collection <IGeometry> geoms = null;

            Assert.DoesNotThrow(() => geoms = provider.GetGeometriesInView(extent),
                                "GetGeometriesInView threw exception:\n\tConnection{0}\n\t{1}",
                                provider.ConnectionID, content.TableName);

            if (numFeatures > 0)
            {
                Assert.IsTrue(geoms.Count > 0,
                              "GetGeometriesInView with full extent did not return 90% of the geometries:\n\tConnection{0}\n\t{1}",
                              provider.ConnectionID, content.TableName);
            }


            var fds = new FeatureDataSet();

            Assert.DoesNotThrow(() => provider.ExecuteIntersectionQuery(extent, fds),
                                "ExecuteIntersectionQuery threw exception:\n\tConnection{0}\n\t{1}",
                                provider.ConnectionID, content.TableName);

            if (numFeatures > 0)
            {
                Assert.IsTrue(fds.Tables[0].Rows.Count > 0,
                              "ExecuteIntersectionQuery with full extent did not return 90% of the features:\n\tConnection{0}\n\t{1}",
                              provider.ConnectionID, content.TableName);
            }
        }
예제 #3
0
 public GpkgTileSource(GpkgContent content, GpkgTileSchema tileSchema)
 {
     _content = content;
     _schema = tileSchema;
     _selectSql = string.Format(SelectTemplate, content.TableName);
 }