Exemple #1
0
        private void CreateShp(SharpMap.Data.FeatureDataTable table, string shpType, string path)
        {
            List <GeoAPI.Geometries.IGeometry> geometries = new List <GeoAPI.Geometries.IGeometry>();

            foreach (SharpMap.Data.FeatureDataRow feature in table)
            {
                if (feature.Geometry.GeometryType.ToUpper() == shpType)
                {
                    geometries.Add(feature.Geometry);
                }
            }

            //Shp
            GisSharpBlog.NetTopologySuite.IO.ShapefileWriter shapeWriter = new GisSharpBlog.NetTopologySuite.IO.ShapefileWriter();
            shapeWriter.Write(path, new GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection(geometries.ToArray()));
            //Dbf
            GisSharpBlog.NetTopologySuite.IO.DbaseFileWriter dataWriter =
                new GisSharpBlog.NetTopologySuite.IO.DbaseFileWriter(path + ".dbf");
            try
            {
                //write column header
                GisSharpBlog.NetTopologySuite.IO.DbaseFileHeader clHeader = GetColumnHeader(table);
                dataWriter.Write(clHeader);
                //write data
                foreach (SharpMap.Data.FeatureDataRow feature in table)
                {
                    if (feature.Geometry.GeometryType.ToUpper() == shpType)
                    {
                        GeoAPI.Extensions.Feature.IFeatureAttributeCollection attribs = feature.Attributes;
                        System.Collections.ArrayList values = new System.Collections.ArrayList();
                        for (int i = 0; i < clHeader.NumFields; i++)
                        {
                            values.Add(attribs[clHeader.Fields[i].Name]);
                        }
                        dataWriter.Write(values);
                    }
                }
            }
            finally
            {
                dataWriter.Close();
            }
        }
Exemple #2
0
        private GisSharpBlog.NetTopologySuite.IO.DbaseFileHeader GetColumnHeader(SharpMap.Data.FeatureDataTable table)
        {
            GisSharpBlog.NetTopologySuite.IO.DbaseFileHeader header = new GisSharpBlog.NetTopologySuite.IO.DbaseFileHeader();
            header.NumRecords = table.Rows.Count;

            foreach (System.Data.DataColumn col in table.Columns)
            {
                //Hanya kolom selain hasil generate SharpMap yang dijadikan column header
                if (col.ColumnName != "DSHELL_ADDED_OBJECTID")
                {
                    Type type = col.DataType;
                    if (type == typeof(double) || type == typeof(float))
                    {
                        header.AddColumn(col.ColumnName, 'N', _DoubleLength, _DoubleDecimals);
                    }
                    else if (type == typeof(short) || type == typeof(ushort) ||
                             type == typeof(int) || type == typeof(uint) ||
                             type == typeof(long) || type == typeof(ulong))
                    {
                        header.AddColumn(col.ColumnName, 'N', _IntLength, _IntDecimals);
                    }
                    else if (type == typeof(string))
                    {
                        header.AddColumn(col.ColumnName, 'C', _StringLength, _StringDecimals);
                    }
                    else if (type == typeof(bool))
                    {
                        header.AddColumn(col.ColumnName, 'L', _BoolLength, _BoolDecimals);
                    }
                    else if (type == typeof(DateTime))
                    {
                        header.AddColumn(col.ColumnName, 'D', _DateLength, _DateDecimals);
                    }
                    else
                    {
                        throw new ArgumentException("Type " + type.Name + " not supported");
                    }
                }
            }

            return(header);
        }