/// <summary>Получает строковое представление поля _property_name из текущей записи _reader</summary> /// <param name="_reader"></param> /// <param name="_property_name"></param> /// <returns></returns> internal static string PropertyValueToString(MgFeatureReader _reader, string _property_name) { MgPropertyDefinitionCollection prop_defs = _reader.GetClassDefinition().GetProperties(); if (String.IsNullOrEmpty(_property_name) || !prop_defs.Contains(_property_name)) { return(null); } int property_type = _reader.GetPropertyType(_property_name); if (_reader.IsNull(_property_name)) { return(null); } else if (property_type == MgPropertyType.Boolean) { return(_reader.GetBoolean(_property_name).ToString()); } else if (property_type == MgPropertyType.Byte) { return(_reader.GetByte(_property_name).ToString()); } else if (property_type == MgPropertyType.DateTime) { return(_reader.GetDateTime(_property_name).ToString()); } else if (property_type == MgPropertyType.Double) { return(_reader.GetDouble(_property_name).ToString()); } else if (property_type == MgPropertyType.Int16) { return(_reader.GetInt16(_property_name).ToString()); } else if (property_type == MgPropertyType.Int32) { return(_reader.GetInt32(_property_name).ToString()); } else if (property_type == MgPropertyType.Int64) { return(_reader.GetInt64(_property_name).ToString()); } else if (property_type == MgPropertyType.Single) { return(_reader.GetSingle(_property_name).ToString()); } else if (property_type == MgPropertyType.String) { return(_reader.GetString(_property_name)); } else { return(null); } } //method
private void btnQueryDistrict1_Click(object sender, EventArgs e) { MgMapBase map = _viewer.GetMap(); MgLayerCollection layers = map.GetLayers(); MgLayerBase districts = layers.GetItem("Districts"); MgLayerBase parcels = layers.GetItem("Parcels"); //Query the geometry of district 1 MgFeatureQueryOptions districtQuery = new MgFeatureQueryOptions(); districtQuery.SetFilter("Autogenerated_SDF_ID = 1"); MgFeatureReader reader = districts.SelectFeatures(districtQuery); MgGeometry districtGeom = null; MgAgfReaderWriter agfRw = new MgAgfReaderWriter(); try { reader.ReadNext(); MgByteReader geomAgf = reader.GetGeometry(districts.GetFeatureGeometryName()); districtGeom = agfRw.Read(geomAgf); } finally { reader.Close(); } //Now use this geometry as the basis of our 2nd query MgFeatureQueryOptions parcelQuery = new MgFeatureQueryOptions(); parcelQuery.SetFilter("RNAME LIKE 'SCHMITT%'"); parcelQuery.SetSpatialFilter(parcels.GetFeatureGeometryName(), districtGeom, MgFeatureSpatialOperations.Inside); //Select the features reader = parcels.SelectFeatures(parcelQuery); List <string> results = new List <string>(); try { while (reader.ReadNext()) { if (!reader.IsNull("RPROPAD")) { results.Add(reader.GetString("RPROPAD")); } } } finally { reader.Close(); } new ParcelQueryResultWindow(results).ShowDialog(); }
public void LoadResults(MgLayerBase layer, MgFeatureQueryOptions query) { MgClassDefinition clsDef = layer.GetClassDefinition(); MgPropertyDefinitionCollection idProps = clsDef.GetIdentityProperties(); MgPropertyDefinition idProp = idProps[0]; string idPropName = idProp.Name; string geomName = layer.FeatureGeometryName; MgFeatureReader reader = layer.SelectFeatures(query); MgAgfReaderWriter agfRw = new MgAgfReaderWriter(); try { while (reader.ReadNext()) { var res = new ParcelFeatureModel(); res.ID = reader.GetInt32(idPropName); res.Owner = reader.IsNull("RNAME") ? "(unknown)" : reader.GetString("RNAME"); res.Address = reader.IsNull("RPROPAD") ? "(unknown)" : reader.GetString("RPROPAD"); if (!reader.IsNull(geomName)) { MgByteReader agf = reader.GetGeometry(geomName); MgGeometry geom = agfRw.Read(agf); MgPoint center = geom.Centroid; MgCoordinate coord = center.Coordinate; res.X = coord.X; res.Y = coord.Y; } this.Results.Add(res); } } finally { reader.Close(); } }
private void mgMapViewer1_SelectionChanged(object sender, EventArgs e) { MgSelectionBase selection = mgMapViewer1.GetSelection(); MgReadOnlyLayerCollection layers = selection.GetLayers(); if (layers != null) { for (int i = 0; i < layers.GetCount(); i++) { MgLayerBase layer = layers.GetItem(i); if (layer.Name == "Parcels") //The selected layer is parcels { //Check that we only have one selected object int count = selection.GetSelectedFeaturesCount(layer, layer.FeatureClassName); if (count == 1) { MgFeatureReader reader = null; try { reader = selection.GetSelectedFeatures(layer, layer.FeatureClassName, false); if (reader.ReadNext()) { //Address is in the RPROPAD property if (reader.IsNull("RPROPAD")) { MessageBox.Show("Selected parcel has no address"); } else { MessageBox.Show("Address: " + reader.GetString("RPROPAD")); } } } finally //Must close all readers, otherwise connections will leak { reader.Close(); } } else { MessageBox.Show("Please select only one parcel"); } break; } } } }
public IEnumerable <RedlineObject> GetAllFeatures() { MgMapBase map = _viewer.GetMap(); MgLayerCollection layers = map.GetLayers(); MgLayerBase redlineLayer = layers.GetItem(_layer.SystemName); MgResourceIdentifier resId = new MgResourceIdentifier(redlineLayer.GetFeatureSourceId()); MgFeatureReader reader = null; try { reader = _featSvc.SelectFeatures(resId, RedlineSchemaFactory.CLASS_NAME, null); //HACK: Another leaky abstraction. SHP will always choose FeatId, so once again //use the class definition to determine the identity property name MgClassDefinition cls = reader.GetClassDefinition(); MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties(); MgPropertyDefinition keyProp = idProps.GetItem(0); string idName = keyProp.GetName(); while (reader.ReadNext()) { int id = reader.GetInt32(idName); string text = reader.IsNull(RedlineSchemaFactory.TEXT_NAME) ? string.Empty : reader.GetString(RedlineSchemaFactory.TEXT_NAME); yield return(new RedlineObject(id, text)); } } finally { if (reader != null) { reader.Close(); } } }
private MgFeature CreateFeatureFromReader(MgFeatureReader reader) { var feature = new MgFeature(); var hash = feature.Properties; for (int i = 0; i < reader.GetPropertyCount(); i++) { var pt = reader.GetPropertyType(i); //Skip un-presentable types if (pt == MgPropertyType.Null || pt == MgPropertyType.Raster || pt == MgPropertyType.Blob || pt == MgPropertyType.Feature || pt == MgPropertyType.Clob) continue; string name = reader.GetPropertyName(i); if (reader.IsNull(i)) { hash[name] = null; } else { switch (pt) { case MgPropertyType.Boolean: hash[name] = reader.GetBoolean(i); break; case MgPropertyType.Byte: hash[name] = reader.GetByte(i); break; case MgPropertyType.DateTime: { var dt = reader.GetDateTime(i); hash[name] = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, 0); } break; case MgPropertyType.Double: case MgPropertyType.Decimal: hash[name] = reader.GetDouble(i); break; case MgPropertyType.Int16: hash[name] = reader.GetInt16(i); break; case MgPropertyType.Int32: hash[name] = reader.GetInt32(i); break; case MgPropertyType.Int64: hash[name] = reader.GetInt64(i); break; case MgPropertyType.Single: hash[name] = reader.GetSingle(i); break; case MgPropertyType.String: hash[name] = reader.GetString(i); break; case MgPropertyType.Geometry: { MgByteReader agf = reader.GetGeometry(i); feature.Geometry = _agfRw.Read(agf); } break; } } } return feature; }
/// <summary>Получает набор свойств MgPropertyCollection из текущей записи _reader в соответствии со списком _listed_prop_defs</summary> /// <param name="_reader"></param> /// <param name="_listed_prop_defs"></param> /// <returns></returns> internal static MgPropertyCollection GetPropertiesFromReader(MgFeatureReader _reader, MgPropertyDefinitionCollection _listed_prop_defs) { MgPropertyCollection result_props = new MgPropertyCollection(); MgPropertyDefinitionCollection reader_prop_defs = _reader.GetClassDefinition().GetProperties(); foreach (MgPropertyDefinition curr_prop_def in _listed_prop_defs) { if (!reader_prop_defs.Contains(curr_prop_def.Name) || _reader.IsNull(curr_prop_def.Name)) { continue; } int property_type = _reader.GetPropertyType(curr_prop_def.Name); if (property_type == MgPropertyType.Blob) { result_props.Add( new MgBlobProperty(curr_prop_def.Name, _reader.GetBLOB(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Boolean) { result_props.Add( new MgBooleanProperty(curr_prop_def.Name, _reader.GetBoolean(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Byte) { result_props.Add( new MgByteProperty(curr_prop_def.Name, _reader.GetByte(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Clob) { result_props.Add( new MgClobProperty(curr_prop_def.Name, _reader.GetCLOB(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.DateTime) { result_props.Add( new MgDateTimeProperty(curr_prop_def.Name, _reader.GetDateTime(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Double) { result_props.Add( new MgDoubleProperty(curr_prop_def.Name, _reader.GetDouble(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Feature) { result_props.Add( new MgFeatureProperty(curr_prop_def.Name, _reader.GetFeatureObject(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Geometry) { result_props.Add( new MgGeometryProperty(curr_prop_def.Name, _reader.GetGeometry(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Int16) { result_props.Add( new MgInt16Property(curr_prop_def.Name, _reader.GetInt16(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Int32) { result_props.Add( new MgInt32Property(curr_prop_def.Name, _reader.GetInt32(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Int64) { result_props.Add( new MgInt64Property(curr_prop_def.Name, _reader.GetInt64(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Raster) { result_props.Add( new MgRasterProperty(curr_prop_def.Name, _reader.GetRaster(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.Single) { result_props.Add( new MgSingleProperty(curr_prop_def.Name, _reader.GetSingle(curr_prop_def.Name)) ); } else if (property_type == MgPropertyType.String) { result_props.Add( new MgStringProperty(curr_prop_def.Name, _reader.GetString(curr_prop_def.Name)) ); } } //foreach return(result_props); }
public LocalNativeFeature(MgFeatureReader reader, FixedWKTReader mgReader, MgAgfReaderWriter agfRw, MgWktReaderWriter wktRw) : base(Utility.ConvertClassDefinition(reader.GetClassDefinition())) { for (int i = 0; i < reader.GetPropertyCount(); i++) { string name = _ordinalMap[i]; GetByteReaderMethod getblob = () => { return(reader.GetBLOB(name)); }; GetByteReaderMethod getclob = () => { return(reader.GetCLOB(name)); }; GetByteReaderMethod getgeom = () => { return(reader.GetGeometry(name)); }; if (!reader.IsNull(name)) { var pt = (PropertyValueType)reader.GetPropertyType(name); switch (pt) { case PropertyValueType.Blob: ((BlobValue)_values[name]).Value = Utility.StreamAsArray(new MgReadOnlyStream(getblob)); break; case PropertyValueType.Boolean: ((BooleanValue)_values[name]).Value = reader.GetBoolean(name); break; case PropertyValueType.Byte: ((ByteValue)_values[name]).Value = reader.GetByte(name); break; case PropertyValueType.Clob: byte[] b = Utility.StreamAsArray(new MgReadOnlyStream(getclob)); ((ClobValue)_values[name]).Value = Encoding.UTF8.GetChars(b); break; case PropertyValueType.DateTime: ((DateTimeValue)_values[name]).Value = Utility.ConvertMgDateTime(reader.GetDateTime(name)); break; case PropertyValueType.Double: ((DoubleValue)_values[name]).Value = reader.GetDouble(name); break; case PropertyValueType.Feature: ((FeatureValue)_values[name]).Value = GetFeatureArray(reader, name); break; case PropertyValueType.Geometry: //TODO: See if SWIG issues come into play here try { //TODO: See if SWIG issues come into play here var geom = agfRw.Read(reader.GetGeometry(name)); var wkt = wktRw.Write(geom); ((GeometryValue)_values[name]).Value = mgReader.Read(wkt); } catch //Invalid geometry fail! { ((GeometryValue)_values[name]).SetNull(); } break; case PropertyValueType.Int16: ((Int16Value)_values[name]).Value = reader.GetInt16(name); break; case PropertyValueType.Int32: ((Int32Value)_values[name]).Value = reader.GetInt32(name); break; case PropertyValueType.Int64: ((Int64Value)_values[name]).Value = reader.GetInt64(name); break; case PropertyValueType.Single: ((SingleValue)_values[name]).Value = reader.GetSingle(name); break; case PropertyValueType.String: ((StringValue)_values[name]).Value = reader.GetString(name); break; } } } }
public LocalNativeFeature(MgFeatureReader reader, FixedWKTReader mgReader, MgAgfReaderWriter agfRw, MgWktReaderWriter wktRw) : base(Utility.ConvertClassDefinition(reader.GetClassDefinition())) { for (int i = 0; i < reader.GetPropertyCount(); i++) { string name = _ordinalMap[i]; GetByteReaderMethod getblob = () => { return reader.GetBLOB(name); }; GetByteReaderMethod getclob = () => { return reader.GetCLOB(name); }; GetByteReaderMethod getgeom = () => { return reader.GetGeometry(name); }; if (!reader.IsNull(name)) { var pt = (PropertyValueType)reader.GetPropertyType(name); switch (pt) { case PropertyValueType.Blob: ((BlobValue)_values[name]).Value = Utility.StreamAsArray(new MgReadOnlyStream(getblob)); break; case PropertyValueType.Boolean: ((BooleanValue)_values[name]).Value = reader.GetBoolean(name); break; case PropertyValueType.Byte: ((ByteValue)_values[name]).Value = reader.GetByte(name); break; case PropertyValueType.Clob: byte[] b = Utility.StreamAsArray(new MgReadOnlyStream(getclob)); ((ClobValue)_values[name]).Value = Encoding.UTF8.GetChars(b); break; case PropertyValueType.DateTime: ((DateTimeValue)_values[name]).Value = Utility.ConvertMgDateTime(reader.GetDateTime(name)); break; case PropertyValueType.Double: ((DoubleValue)_values[name]).Value = reader.GetDouble(name); break; case PropertyValueType.Feature: ((FeatureValue)_values[name]).Value = GetFeatureArray(reader, name); break; case PropertyValueType.Geometry: //TODO: See if SWIG issues come into play here try { //TODO: See if SWIG issues come into play here var geom = agfRw.Read(reader.GetGeometry(name)); var wkt = wktRw.Write(geom); ((GeometryValue)_values[name]).Value = mgReader.Read(wkt); } catch //Invalid geometry fail! { ((GeometryValue)_values[name]).SetNull(); } break; case PropertyValueType.Int16: ((Int16Value)_values[name]).Value = reader.GetInt16(name); break; case PropertyValueType.Int32: ((Int32Value)_values[name]).Value = reader.GetInt32(name); break; case PropertyValueType.Int64: ((Int64Value)_values[name]).Value = reader.GetInt64(name); break; case PropertyValueType.Single: ((SingleValue)_values[name]).Value = reader.GetSingle(name); break; case PropertyValueType.String: ((StringValue)_values[name]).Value = reader.GetString(name); break; } } } }
//--------------------------------------------------------------------------------------- // // ���ܣ�GetPropertyType()������GetPropertyName()������ʹ�� // // ���ߣ� // // ���ڣ� 2007.5.23 // // ����ʷ���� // //--------------------------------------------------------------------------------------- public void OutputReader(MgFeatureReader featureReader) { while (featureReader.ReadNext()) { int propCount = featureReader.GetPropertyCount(); for (int j = 0; j < propCount; j++) { string propertyName = featureReader.GetPropertyName(j); bool boolVal = featureReader.IsNull(propertyName); if (boolVal) { continue; } //MgPropertyType propertyType = (MgPropertyType)featureReader.GetPropertyType(propertyName); int proType = featureReader.GetPropertyType(propertyName); GetPropertyValue(featureReader, proType, propertyName); } } }
private MgFeature CreateFeatureFromReader(MgFeatureReader reader) { var feature = new MgFeature(); var hash = feature.Properties; for (int i = 0; i < reader.GetPropertyCount(); i++) { var pt = reader.GetPropertyType(i); //Skip un-presentable types if (pt == MgPropertyType.Null || pt == MgPropertyType.Raster || pt == MgPropertyType.Blob || pt == MgPropertyType.Feature || pt == MgPropertyType.Clob) { continue; } string name = reader.GetPropertyName(i); if (reader.IsNull(i)) { hash[name] = null; } else { switch (pt) { case MgPropertyType.Boolean: hash[name] = reader.GetBoolean(i); break; case MgPropertyType.Byte: hash[name] = reader.GetByte(i); break; case MgPropertyType.DateTime: { var dt = reader.GetDateTime(i); hash[name] = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, 0); } break; case MgPropertyType.Double: case MgPropertyType.Decimal: hash[name] = reader.GetDouble(i); break; case MgPropertyType.Int16: hash[name] = reader.GetInt16(i); break; case MgPropertyType.Int32: hash[name] = reader.GetInt32(i); break; case MgPropertyType.Int64: hash[name] = reader.GetInt64(i); break; case MgPropertyType.Single: hash[name] = reader.GetSingle(i); break; case MgPropertyType.String: hash[name] = reader.GetString(i); break; case MgPropertyType.Geometry: { MgByteReader agf = reader.GetGeometry(i); feature.Geometry = _agfRw.Read(agf); } break; } } } return(feature); }