public ShapefileDataReader(IStreamProviderRegistry streamProviderRegistry, IGeometryFactory geometryFactory)
        {
            if (streamProviderRegistry==null)
                throw new ArgumentNullException("streamProviderRegistry");
            if (geometryFactory == null)
                throw new ArgumentNullException("geometryFactory");
            _open = true;

            _dbfReader = new DbaseFileReader(streamProviderRegistry);
            _shpReader = new ShapefileReader(streamProviderRegistry, geometryFactory);

            _dbfHeader = _dbfReader.GetHeader();
            _recordCount = _dbfHeader.NumRecords;

            // copy dbase fields to our own array. Insert into the first position, the shape column
            _dbaseFields = new DbaseFieldDescriptor[_dbfHeader.Fields.Length + 1];
            _dbaseFields[0] = DbaseFieldDescriptor.ShapeField();
            for (int i = 0; i < _dbfHeader.Fields.Length; i++)
                _dbaseFields[i + 1] = _dbfHeader.Fields[i];

            _shpHeader = _shpReader.Header;
            _dbfEnumerator = _dbfReader.GetEnumerator();
            _shpEnumerator = _shpReader.GetEnumerator();
            _moreRecords = true;
        }
 /// <summary>
 /// Method to write a dummy dbase file
 /// </summary>
 /// <param name="streamProviderRegistry">The stream provider registry</param>
 /// <param name="recordCount">The number of records</param>
 public static void WriteDummyDbf(IStreamProviderRegistry streamProviderRegistry, int recordCount)
 {
     using (var dbfWriter = new DbaseFileWriter(streamProviderRegistry))
     {
         WriteDummyDbf(dbfWriter, recordCount);
     }
 }
        public ShapefileDataReader(IStreamProviderRegistry streamProviderRegistry, IGeometryFactory geometryFactory)
        {
            if (streamProviderRegistry == null)
            {
                throw new ArgumentNullException("streamProviderRegistry");
            }
            if (geometryFactory == null)
            {
                throw new ArgumentNullException("geometryFactory");
            }
            _open = true;

            _dbfReader = new DbaseFileReader(streamProviderRegistry);
            _shpReader = new ShapefileReader(streamProviderRegistry, geometryFactory);

            _dbfHeader   = _dbfReader.GetHeader();
            _recordCount = _dbfHeader.NumRecords;

            // copy dbase fields to our own array. Insert into the first position, the shape column
            _dbaseFields    = new DbaseFieldDescriptor[_dbfHeader.Fields.Length + 1];
            _dbaseFields[0] = DbaseFieldDescriptor.ShapeField();
            for (int i = 0; i < _dbfHeader.Fields.Length; i++)
            {
                _dbaseFields[i + 1] = _dbfHeader.Fields[i];
            }

            _shpHeader     = _shpReader.Header;
            _dbfEnumerator = _dbfReader.GetEnumerator();
            _shpEnumerator = _shpReader.GetEnumerator();
            _moreRecords   = true;
        }
Beispiel #4
0
        public ShapefileReader(IStreamProviderRegistry shapeStreamProviderRegistry, IGeometryFactory geometryFactory)
        {
            if (shapeStreamProviderRegistry == null)
            {
                throw new ArgumentNullException("shapeStreamProviderRegistry");
            }
            if (geometryFactory == null)
            {
                throw new ArgumentNullException("geometryFactory");
            }

            _shapeStreamProviderRegistry = shapeStreamProviderRegistry;
            _geometryFactory             = geometryFactory;

            // read header information. note, we open the file, read the header information and then
            // close the file. This means the file is not opened again until GetEnumerator() is requested.
            // For each call to GetEnumerator() a new BinaryReader is created.
            using (var stream = shapeStreamProviderRegistry[StreamTypes.Shape].OpenRead())
            {
                using (var shpBinaryReader = new BigEndianBinaryReader(stream))
                {
                    _mainHeader = new ShapefileHeader(shpBinaryReader);
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the DbaseFileReader class.
        /// </summary>
        /// <param name="streamProviderRegistry">A stream provider registry</param>
        public DbaseFileReader(IStreamProviderRegistry streamProviderRegistry)
        {
            if (streamProviderRegistry == null)
            {
                throw new ArgumentNullException("streamProviderRegistry");
            }

            _streamProvider = streamProviderRegistry[StreamTypes.Data];
            if (_streamProvider == null)
            {
                throw new ArgumentException("Stream provider registry does not provide a data stream provider", "streamProviderRegistry");
            }

            if (_streamProvider.Kind != StreamTypes.Data)
            {
                throw new ArgumentException(string.Format(
                                                "Misconfigured stream provider registry does provide a {0} stream provider when requested data stream provider",
                                                _streamProvider.Kind), "streamProviderRegistry");
            }

            _encodingProvider = streamProviderRegistry[StreamTypes.DataEncoding];
            if (_encodingProvider != null && _encodingProvider.Kind != StreamTypes.DataEncoding)
            {
                throw new ArgumentException(string.Format(
                                                "Misconfigured stream provider registry does provide a {0} stream provider when requested data encoding stream provider",
                                                _streamProvider.Kind), "streamProviderRegistry");
            }
        }
Beispiel #6
0
        public ShapefileDataWriter(IStreamProviderRegistry streamProviderRegistry, IGeometryFactory geometryFactory, Encoding encoding)
        {
            _geometryFactory = geometryFactory;

            _streamProviderRegistry = streamProviderRegistry;

            // Writers
            _dbaseWriter = new DbaseFileWriter(streamProviderRegistry, encoding);
        }
Beispiel #7
0
        public static DbaseFileHeader GetHeader(IStreamProviderRegistry streamProviderRegistry)
        {
            DbaseFileHeader header = new DbaseFileHeader();

            using (var stream = streamProviderRegistry[StreamTypes.Data].OpenRead())
                using (var reader = new BinaryReader(stream))
                    header.ReadHeader(reader, streamProviderRegistry[StreamTypes.Data] is FileStreamProvider ? ((FileStreamProvider)streamProviderRegistry[StreamTypes.Data]).Path : null);
            return(header);
        }
        public static DbaseFileHeader GetHeader(IStreamProviderRegistry streamProviderRegistry)
        {

            DbaseFileHeader header = new DbaseFileHeader();

            using (var stream = streamProviderRegistry[StreamTypes.Data].OpenRead())
            using (var reader = new BinaryReader(stream))
                header.ReadHeader(reader, streamProviderRegistry[StreamTypes.Data] is FileStreamProvider ? ((FileStreamProvider)streamProviderRegistry[StreamTypes.Data]).Path : null);
            return header;
        }
        public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry, Encoding enc)
        {
            if (streamProviderRegistry == null)
                throw new ArgumentNullException("streamProviderRegistry");
            if (enc == null)
                throw new ArgumentNullException("enc");

            _encoding = enc;
            _writer = new BinaryWriter(streamProviderRegistry[StreamTypes.Data].OpenWrite(false), _encoding);
        }
        public ShapeReader(IStreamProviderRegistry streamProviderRegistry)
        {
            if (streamProviderRegistry == null)
                throw new ArgumentNullException("streamProviderRegistry");

            m_StreamProviderRegistry = streamProviderRegistry;

            m_ShapeFileHeader = new ShapefileHeader(ShapeReaderStream);
            m_ShapeHandler = Shapefile.GetShapeHandler(ShapefileHeader.ShapeType);

            m_ShapeOffsetCache = new Lazy<long[]>(BuildOffsetCache, LazyThreadSafetyMode.ExecutionAndPublication);

        }
        public ShapeReader(IStreamProviderRegistry streamProviderRegistry)
        {
            if (streamProviderRegistry == null)
            {
                throw new ArgumentNullException("streamProviderRegistry");
            }

            m_StreamProviderRegistry = streamProviderRegistry;

            ShapefileHeader = new ShapefileHeader(ShapeReaderStream);
            m_ShapeHandler  = Shapefile.GetShapeHandler(ShapefileHeader.ShapeType);

            m_ShapeOffsetCache = new Lazy <long[]>(BuildOffsetCache, LazyThreadSafetyMode.ExecutionAndPublication);
        }
        /// <summary>
        /// Initializes a new instance of the DbaseFileWriter class using the provided <paramref name="streamProviderRegistry"/> and the given <paramref name="encoding"/>.
        /// </summary>
        /// <param name="streamProviderRegistry">The stream provider registry</param>
        /// <param name="encoding">The encoding</param>
        public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry, Encoding encoding)
        {
            if (streamProviderRegistry == null)
            {
                throw new ArgumentNullException("streamProviderRegistry");
            }
            if (encoding == null)
            {
                throw new ArgumentNullException("encoding");
            }

            _encoding = encoding;
            _writer   = new BinaryWriter(streamProviderRegistry[StreamTypes.Data].OpenWrite(false), _encoding);
        }
        /// <summary>
        /// Initializes a new instance of the DbaseFileReader class.
        /// </summary>
        /// <param name="streamProviderRegistry">A stream provider registry</param>
        public DbaseFileReader(IStreamProviderRegistry streamProviderRegistry)
        {
            if (streamProviderRegistry == null)
                throw new ArgumentNullException("streamProviderRegistry");

            _streamProvider = streamProviderRegistry[StreamTypes.Data];
            if (_streamProvider == null)
                throw new ArgumentException("Stream provider registry does not provide a data stream provider", "streamProviderRegistry");

            if (_streamProvider == null)
                throw new ArgumentException(string.Format(
                    "Misconfigured stream provider registry does provide a {0} stream provider when requested data stream provider", 
                    _streamProvider.Kind), "streamProviderRegistry");
        }
Beispiel #14
0
        public static ShapefileDataReader CreateDataReader(IStreamProviderRegistry streamProviderRegistry,
                                                           GeometryFactory geometryFactory)
        {
            if (streamProviderRegistry == null)
            {
                throw new ArgumentNullException("streamProviderRegistry");
            }
            if (geometryFactory == null)
            {
                throw new ArgumentNullException("geometryFactory");
            }
            var shpDataReader = new ShapefileDataReader(streamProviderRegistry, geometryFactory);

            return(shpDataReader);
        }
        public static void WriteGeometryCollection(IStreamProviderRegistry streamProviderRegistry,
                                                   IGeometryCollection geometryCollection, bool createDummyDbf = true)
        {
            var shapeFileType = Shapefile.GetShapeType(geometryCollection);

            using (var writer = new ShapefileWriter(geometryCollection.Factory, streamProviderRegistry, shapeFileType))
            {
                var dbfWriter = createDummyDbf ? new DbaseFileWriter(streamProviderRegistry) : null;
                WriteGeometryCollection(writer, dbfWriter, geometryCollection, createDummyDbf);
                if (dbfWriter != null)
                {
                    dbfWriter.Dispose();
                }
            }
        }
        public ShapefileWriter(IGeometryFactory geometryFactory, IStreamProviderRegistry streamProviderRegistry,
                               ShapeGeometryType geomType)
            : this(geometryFactory)
        {
            _shpStream = streamProviderRegistry[StreamTypes.Shape].OpenWrite(true);
            _shxStream = streamProviderRegistry[StreamTypes.Index].OpenWrite(true);

            _geometryType = geomType;

            _shpBinaryWriter = new BigEndianBinaryWriter(_shpStream);
            _shxBinaryWriter = new BigEndianBinaryWriter(_shxStream);

            WriteShpHeader(_shpBinaryWriter, 0, new Envelope(0, 0, 0, 0));
            WriteShxHeader(_shxBinaryWriter, 0, new Envelope(0, 0, 0, 0));

            _shapeHandler = Shapefile.GetShapeHandler(geomType);
        }
        public ShapefileWriter(IGeometryFactory geometryFactory, IStreamProviderRegistry streamProviderRegistry, ShapeGeometryType geomType)
    : this(geometryFactory)
        {


            _shpStream = streamProviderRegistry[StreamTypes.Shape].OpenWrite(true);
            _shxStream = streamProviderRegistry[StreamTypes.Index].OpenWrite(true);

            _geometryType = geomType;

            _shpBinaryWriter = new BigEndianBinaryWriter(_shpStream);
            _shxBinaryWriter = new BigEndianBinaryWriter(_shxStream);

            WriteShpHeader(_shpBinaryWriter, 0, new Envelope(0, 0, 0, 0));
            WriteShxHeader(_shxBinaryWriter, 0, new Envelope(0, 0, 0, 0));

            _shapeHandler = Shapefile.GetShapeHandler(geomType);
        }
        public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry, ISpatialIndex <ShapeLocationInFileInfo> index, IGeometryFactory geoFactory, bool buildIndexAsync)
        {
            m_SpatialIndex = index;
            m_GeoFactory   = geoFactory;

            ValidateParameters();

            m_ShapeReader = new ShapeReader(streamProviderRegistry);

            if (buildIndexAsync)
            {
                m_CancellationTokenSrc = new CancellationTokenSource();
                m_IndexCreationTask    = Task.Factory.StartNew(FillSpatialIndex, m_CancellationTokenSrc.Token);
            }
            else
            {
                FillSpatialIndex();
            }

            m_DbfReader = new DbaseReader(streamProviderRegistry[StreamTypes.Data]);
        }
        public ShapefileReader(IStreamProviderRegistry shapeStreamProviderRegistry, IGeometryFactory geometryFactory)
        {
            if (shapeStreamProviderRegistry == null)
                throw new ArgumentNullException("shapeStreamProviderRegistry");
            if (geometryFactory == null)
                throw new ArgumentNullException("geometryFactory");

            _shapeStreamProviderRegistry = shapeStreamProviderRegistry;
            _geometryFactory = geometryFactory;

            // read header information. note, we open the file, read the header information and then
            // close the file. This means the file is not opened again until GetEnumerator() is requested.
            // For each call to GetEnumerator() a new BinaryReader is created.
            using (var stream = shapeStreamProviderRegistry[StreamTypes.Shape].OpenRead())
            {
                using (var shpBinaryReader = new BigEndianBinaryReader(stream))
                {
                    _mainHeader = new ShapefileHeader(shpBinaryReader);
                }
            }
        }
        public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry , ISpatialIndex<ShapeLocationInFileInfo> index, IGeometryFactory geoFactory, bool buildIndexAsync)
        {


            m_SpatialIndex = index;
            m_GeoFactory = geoFactory;

            ValidateParameters();


            m_ShapeReader = new ShapeReader(streamProviderRegistry);

            if (buildIndexAsync)
            {
                m_CancellationTokenSrc = new CancellationTokenSource();
                m_IndexCreationTask = Task.Factory.StartNew(FillSpatialIndex, m_CancellationTokenSrc.Token);
            }
            else
            {
                FillSpatialIndex();
            }

            m_DbfReader = new DbaseReader(streamProviderRegistry[StreamTypes.Data]);
        }
        public static void WriteGeometryCollection(IStreamProviderRegistry streamProviderRegistry, IGeometryCollection geometryCollection)
        {
            var shapeFileType = Shapefile.GetShapeType(geometryCollection);

            var numShapes = geometryCollection.NumGeometries;
            using (var writer = new ShapefileWriter(geometryCollection.Factory, streamProviderRegistry, shapeFileType))
            {
                for (var i = 0; i < numShapes; i++)
                {
                    writer.Write(geometryCollection[i]);
                }
            }

            WriteDummyDbf(streamProviderRegistry, numShapes);

        }
 public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry, ISpatialIndex <ShapeLocationInFileInfo> index, IGeometryFactory geoFactory)
     : this(streamProviderRegistry, index, geoFactory, true)
 {
 }
 public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry, ISpatialIndex <ShapeLocationInFileInfo> index)
     : this(streamProviderRegistry, index, new GeometryFactory())
 {
 }
 public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry)
     : this(streamProviderRegistry, new STRtree <ShapeLocationInFileInfo>())
 {
 }
Beispiel #25
0
 /// <summary>
 /// Initializes a new instance of the DbaseFileWriter class using the provided <paramref name="streamProviderRegistry"/> and the default encoding
 /// </summary>
 /// <param name="streamProviderRegistry">The stream provider registry</param>
 public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry)
     : this(streamProviderRegistry, Encoding.GetEncoding(1252))
 {
 }
 /// <summary>
 /// Initializes a new instance of the DbaseFileWriter class using the provided <paramref name="streamProviderRegistry"/> and the default encoding
 /// </summary>
 /// <param name="streamProviderRegistry">The stream provider registry</param>
 public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry)
     : this(streamProviderRegistry,
            DbaseFileHeader.GetEncoding(streamProviderRegistry[StreamTypes.DataEncoding]))
 {
 }
 public static ShapefileDataReader CreateDataReader(IStreamProviderRegistry streamProviderRegistry,
     GeometryFactory geometryFactory)
 {
     if (streamProviderRegistry == null)
         throw new ArgumentNullException("streamProviderRegistry");
     if (geometryFactory == null)
         throw new ArgumentNullException("geometryFactory");
     var shpDataReader = new ShapefileDataReader(streamProviderRegistry, geometryFactory);
     return shpDataReader;
 }
 public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry)
     : this(streamProviderRegistry, new STRtree<ShapeLocationInFileInfo>())
 { }
        public ShapefileDataWriter(IStreamProviderRegistry streamProviderRegistry, IGeometryFactory geometryFactory, Encoding encoding)
        {
            _geometryFactory = geometryFactory;

            _streamProviderRegistry = streamProviderRegistry;

            // Writers
            _dbaseWriter = new DbaseFileWriter(streamProviderRegistry, encoding);
        }
 public static void WriteGeometryCollection(IStreamProviderRegistry streamProviderRegistry,
     IGeometryCollection geometryCollection, bool createDummyDbf = true)
 {
     var shapeFileType = Shapefile.GetShapeType(geometryCollection);
     using (var writer = new ShapefileWriter(geometryCollection.Factory, streamProviderRegistry, shapeFileType))
     {
         var dbfWriter = createDummyDbf ? new DbaseFileWriter(streamProviderRegistry) : null;
         WriteGeometryCollection(writer, dbfWriter, geometryCollection, createDummyDbf);
         if (dbfWriter != null)
             dbfWriter.Dispose();
     }
 }
     public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry, ISpatialIndex<ShapeLocationInFileInfo> index, IGeometryFactory geoFactory)
 : this(streamProviderRegistry, index, geoFactory, true)
     { }
 /// <summary>
 /// Method to write a dummy dbase file
 /// </summary>
 /// <param name="streamProviderRegistry">The stream provider registry</param>
 /// <param name="recordCount">The number of records</param>
 public static void WriteDummyDbf(IStreamProviderRegistry streamProviderRegistry, int recordCount)
 {
     using (var dbfWriter = new DbaseFileWriter(streamProviderRegistry))
     {
         WriteDummyDbf(dbfWriter, recordCount);
     }
 }
 public DbaseFileWriter(IStreamProviderRegistry streamProviderRegistry)
     : this(streamProviderRegistry, Encoding.GetEncoding(1252))
 {
 }
 public ShapeDataReader(IStreamProviderRegistry streamProviderRegistry, ISpatialIndex<ShapeLocationInFileInfo> index)
     : this(streamProviderRegistry, index, new GeometryFactory())
 { }