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); } }
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); } } }
public void Dispose() { try { if (_layer != null) { _layer.ResetReading(); _layer.Dispose(); _layer = null; } if (_dataSource != null) { _dataSource.Dispose(); _dataSource = null; } } catch { } }