Exemplo n.º 1
0
    public static void ReportFeature(Feature feat, FeatureDefn def)
    {
        Console.WriteLine( "Feature(" + def.GetName() + "): " + feat.GetFID() );
        for( int iField = 0; iField < feat.GetFieldCount(); iField++ )
        {
            FieldDefn fdef = def.GetFieldDefn( iField );

            Console.Write( fdef.GetNameRef() + " (" +
                fdef.GetFieldTypeName(fdef.GetFieldType()) + ") = ");

            if( feat.IsFieldSet( iField ) )
                Console.WriteLine( feat.GetFieldAsString( iField ) );
            else
                Console.WriteLine( "(null)" );

        }

        if( feat.GetStyleString() != null )
            Console.WriteLine( "  Style = " + feat.GetStyleString() );

        Geometry geom = feat.GetGeometryRef();
        if( geom != null )
            Console.WriteLine( "  " + geom.GetGeometryName() +
                "(" + geom.GetGeometryType() + ")" );

        Envelope env = new Envelope();
        geom.GetEnvelope(env);
        Console.WriteLine( "   ENVELOPE: " + env.MinX + "," + env.MaxX + "," +
            env.MinY + "," + env.MaxY);

        string geom_wkt;
        geom.ExportToWkt(out geom_wkt);
        Console.WriteLine( "  " + geom_wkt );

        Console.WriteLine( "" );
    }
Exemplo n.º 2
0
/*        public virtual FeatureDataSet ExecuteQuery(string query)
        {
            return ExecuteQuery(query, null);
        }*/

/*
        public virtual FeatureDataSet ExecuteQuery(string query, Geometry filter)
        {
            try
            {
                var featureDataSet = new FeatureDataSet();
                featureDataTable.Clear();

                using (Layer ogrLayer = ogrDataSource.ExecuteSQL(query, filter, ""))
                {
                    ogrLayer.ResetReading();
  
                    int featureCount = ogrLayer.GetFeatureCount(1);

                    for (int i = 0; i < featureCount;i++ )
                    {
                        using (var ogrFeature = ogrLayer.GetNextFeature())
                        {
                            FeatureDataRow feature = featureDataTable.NewRow();
                            feature.Id = ogrFeature.GetFID();
                            SetFeatureValuesInRow(featureDataTable, ogrFeature, feature);

                            using (var geometry = ogrFeature.GetGeometryRef())
                            {
                                feature.Geometry = ParseOgrGeometry(geometry);
                            }

                            featureDataTable.AddRow(feature);
                            ogrFeature.Dispose();//release memory, do not wait for gc to do this!

                        }
                    }
                    featureDataSet.Tables.Add(featureDataTable);
                    ogrDataSource.ReleaseResultSet(ogrLayer);

                    return featureDataSet;
                }
            }
            catch (Exception exception)
            {
                log.Error("Error while reading features", exception);
                return new FeatureDataSet();
            }
        }
*/

        private static void SetFeatureValuesInRow(FeatureDataTable featureDataTable, Feature ogrFeature,
                                                  FeatureDataRow feature)
        {
            for (int iField = 0; iField < ogrFeature.GetFieldCount(); iField++)
            {
                if (featureDataTable.Columns[iField].DataType == Type.GetType("System.String"))
                {
                    feature[iField] = ogrFeature.GetFieldAsString(iField);
                }
                else if (featureDataTable.Columns[iField].DataType == Type.GetType("System.Int32"))
                {
                    feature[iField] = ogrFeature.GetFieldAsInteger(iField);
                }
                else if (featureDataTable.Columns[iField].DataType == Type.GetType("System.Double"))
                {
                    feature[iField] = ogrFeature.GetFieldAsDouble(iField);
                }
                else if (featureDataTable.Columns[iField].DataType == Type.GetType("System.DateTime"))
                {
                    int year;
                    int month;
                    int day;
                    int hour;
                    int minute;
                    int second;
                    int TZflag;
                    ogrFeature.GetFieldAsDateTime(iField, out year, out month, out day, out hour, out minute, out second,
                                                  out TZflag);
                    if (year == 0 || month == 0 || day == 0)
                    {
                        feature[iField] = DBNull.Value;
                    }
                    else
                    {
                        feature[iField] = new DateTime(year, month, day, hour, minute, second);
                    }

                }
                else
                {
                    feature[iField] = ogrFeature.GetFieldAsString(iField);
                }
            }
        }
Exemplo n.º 3
0
    public static void ReportFeature(Feature feat, FeatureDefn def)
    {
        Console.WriteLine( "Feature(" + def.GetName() + "): " + feat.GetFID() );
        for( int iField = 0; iField < feat.GetFieldCount(); iField++ )
        {
            FieldDefn fdef = def.GetFieldDefn( iField );

            Console.Write( fdef.GetNameRef() + " (" +
                fdef.GetFieldTypeName(fdef.GetFieldType()) + ") = ");

            if( feat.IsFieldSet( iField ) )
            {
                if (fdef.GetFieldType() == FieldType.OFTStringList)
                {
                    string[] sList = feat.GetFieldAsStringList(iField);
                    foreach (string s in sList)
                    {
                        Console.Write("\"" + s + "\" ");
                    }
                    Console.WriteLine();
                }
                else if (fdef.GetFieldType() == FieldType.OFTIntegerList)
                {
                    int count;
                    int[] iList = feat.GetFieldAsIntegerList(iField, out count);
                    for (int i = 0; i < count; i++)
                    {
                        Console.Write(iList[i] + " ");
                    }
                    Console.WriteLine();
                }
                else if (fdef.GetFieldType() == FieldType.OFTRealList)
                {
                    int count;
                    double[] iList = feat.GetFieldAsDoubleList(iField, out count);
                    for (int i = 0; i < count; i++)
                    {
                        Console.Write(iList[i].ToString() + " ");
                    }
                    Console.WriteLine();
                }
                else
                    Console.WriteLine(feat.GetFieldAsString(iField));
            }
            else
                Console.WriteLine( "(null)" );

        }

        if( feat.GetStyleString() != null )
            Console.WriteLine( "  Style = " + feat.GetStyleString() );

        Geometry geom = feat.GetGeometryRef();
        if( geom != null )
        {
            Console.WriteLine( "  " + geom.GetGeometryName() +
                "(" + geom.GetGeometryType() + ")" );
            Geometry sub_geom;
            for (int i = 0; i < geom.GetGeometryCount(); i++)
            {
                sub_geom = geom.GetGeometryRef(i);
                if ( sub_geom != null )
                {
                    Console.WriteLine( "  subgeom" + i + ": " + sub_geom.GetGeometryName() +
                        "(" + sub_geom.GetGeometryType() + ")" );
                }
            }
            Envelope env = new Envelope();
            geom.GetEnvelope(env);
            Console.WriteLine("   ENVELOPE: " + env.MinX + "," + env.MaxX + "," +
                env.MinY + "," + env.MaxY);

            string geom_wkt;
            geom.ExportToWkt(out geom_wkt);
            Console.WriteLine("  " + geom_wkt);
        }

        Console.WriteLine( "" );
    }