示例#1
0
        public FeatureCursorV3(Dataset dataset, string layerName, IQueryFilter filter)
        {
            _dataSource = OSGeo_v3.OGR.Ogr.Open(dataset.ConnectionString, 0);
            _layer      = _dataSource.GetLayerByName(layerName);

            if (_layer == null)
            {
                return;
            }

            if (filter is ISpatialFilter)
            {
                IEnvelope env = ((ISpatialFilter)filter).Geometry.Envelope;
                _layer.SetSpatialFilterRect(env.minx, env.miny, env.maxx, env.maxy);
                if (!String.IsNullOrEmpty(filter.WhereClause))
                {
                    _layer.SetAttributeFilter(filter.WhereClause);
                }
            }
            else
            {
                string where = filter.WhereClause;
                if (String.IsNullOrEmpty(where))
                {
                    where = null;
                }

                _layer.SetAttributeFilter(where);
            }
        }
示例#2
0
        private void btnTestConnecton_Click(object sender, EventArgs e)
        {
            OSGeo.Initializer.RegisterAll();

            if (OSGeo.Initializer.InstalledVersion == OSGeo.GdalVersion.V1)
            {
                OSGeo_v1.OGR.DataSource dataSource = OSGeo_v1.OGR.Ogr.Open(this.ConnectionString, 0);
                if (dataSource != null)
                {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < Math.Min(dataSource.GetLayerCount(), 20); i++)
                    {
                        OSGeo_v1.OGR.Layer ogrLayer = dataSource.GetLayerByIndex(i);
                        if (ogrLayer == null)
                        {
                            continue;
                        }

                        sb.Append("\n" + ogrLayer.GetName());
                    }
                    MessageBox.Show("Connection succeeded...\n" + sb.ToString(), "Test Connection", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Connection failed...", "Test Connection", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (OSGeo.Initializer.InstalledVersion == OSGeo.GdalVersion.V3)
            {
                OSGeo_v3.OGR.DataSource dataSource = OSGeo_v3.OGR.Ogr.Open(this.ConnectionString, 0);
                if (dataSource != null)
                {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < Math.Min(dataSource.GetLayerCount(), 20); i++)
                    {
                        OSGeo_v3.OGR.Layer ogrLayer = dataSource.GetLayerByIndex(i);
                        if (ogrLayer == null)
                        {
                            continue;
                        }

                        sb.Append("\n" + ogrLayer.GetName());
                    }
                    MessageBox.Show("Connection succeeded...\n" + sb.ToString(), "Test Connection", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Connection failed...", "Test Connection", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
示例#3
0
 public void Dispose()
 {
     try
     {
         if (_layer != null)
         {
             _layer.ResetReading();
             _layer.Dispose();
             _layer = null;
         }
         if (_dataSource != null)
         {
             _dataSource.Dispose();
             _dataSource = null;
         }
     }
     catch { }
 }