public virtual Layer CreateLayer() { var layer = new Layer(); layer.FeatureType = this; layer.Name = Name; return layer; }
public LayerFailedEventArgs(Layer layer, Exception exception) : base(layer) { Exception = exception; }
public TreeNode AddLayerNode(TreeNode parent, Layer layer) { return AddContainterNode(parent, new LayerWrapper(layer), cmnLayer); }
public virtual IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window) { return new Feature[0]; }
public LayerEventArgs(Layer layer) { Layer = layer; }
public TreeNode AddLayerNode(Layer layer) { return AddContainterNode(FindParentGroup(), new LayerWrapper(layer), cmnLayer); }
public LayerRenderer(Renderer renderer, Layer layer, IBaseRenderer parent) : base(renderer, layer, parent) { _layer = layer; }
public abstract FeatureType GetFeatureType(Layer layer);
public abstract IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window);
public LayerWrapper(Layer layer) : base(layer) { Layer = layer; }
public override IEnumerable<Feature> GetFeatures(FeatureType featureType, Layer layer, Envelope window) { var cmd = _useCounter > 0 ? CreateCommand(Connection) : GetOrCreateCommand(Connection); _useCounter++; try { SetParameters(cmd, window); using (var reader = cmd.ExecuteReader()) { var geomOrdinal = reader.GetOrdinal(GeometryColumn); if (geomOrdinal < 0) throw new Exception("Geometry column not found: " + GeometryColumn); var fidOrdinal = string.IsNullOrEmpty(FidColumn) ? -1 : reader.GetOrdinal(FidColumn); var buffer = new byte[1024]; var fieldCount = reader.FieldCount; var values = new object[fieldCount]; var geoReader = new GaiaGeoReader(); while (reader.Read()) { long fid; if (fidOrdinal >= 0) { fid = reader.GetInt64(fidOrdinal); values[fidOrdinal] = fid; } else fid = 0; for (int i = 0; i < fieldCount; i++) if (i != fidOrdinal && i != geomOrdinal) values[i] = reader.GetValue(i); var len = (int)reader.GetBytes(geomOrdinal, 0L, null, 0, 0); if (len > buffer.Length) buffer = new byte[len]; reader.GetBytes(geomOrdinal, 0L, buffer, 0, len); IGeometry geom; try { geom = geoReader.Read(buffer, 0, len); if (geom == null) continue; } catch (Exception ex) { Trace.WriteLine(string.Format("Invalid geometry while reading {0} Fid={1}: {2}", ToString(), fid, ex.Message)); continue; } //var geom = GeometryReader.ReadBlobGeometry(new MemoryStream(buffer, 0, buffer.Length)); values[geomOrdinal] = geom; //featureType.GeometryType = geom.OgcGeometryType; var feature = featureType.NewFeature(fid, values); feature.Geometry = geom; yield return feature; } } } finally { _useCounter--; } }