Exemplo n.º 1
0
        /// <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
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        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;
                    }
                }
            }
        }
Exemplo n.º 5
0
        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();
                }
            }
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        /// <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;
                    }
                }
            }
        }
Exemplo n.º 9
0
 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;
             }
         }
     }
 }
Exemplo n.º 10
0
 //---------------------------------------------------------------------------------------
 //
 //        ���ܣ�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);
            }
        }
 }
Exemplo n.º 11
0
        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);
        }