This question is locked. New answers and comments are not allowed.
I am trying to add the ability to load in any shape file, save it to a sql server and then retrieve it and load it back into the map.
Here is my relevant code
In the database they are stored as nvarchar(max) values for both shapefile and dbffile streams
To retrieve the data i do
and the error i get
Unable to read beyond the end of the stream.
at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
at System.IO.BinaryReader.ReadUInt32()
at Telerik.Windows.Controls.Map.DbfHeader..ctor(Stream stream, Encoding encoding)
at Telerik.Windows.Controls.Map.DbfHeader.Create(Stream stream, Encoding encoding)
at Telerik.Windows.Controls.Map.DbfReader..ctor(Stream stream, ExtendedPropertySet propertySet, Encoding encoding)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(ShapeFileReaderParameters parameters)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, ExtendedPropertySet extendedPropertySet, Encoding encoding, ICoordinateConverter coordinateConverter)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, ExtendedPropertySet extendedPropertySet, Encoding encoding)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, Encoding encoding)
at WIMMS.UI.Module.Main.SavedSearchView.DisplayShapefile_Click(Object sender, RoutedEventArgs e)
Here is my relevant code
//get the shape file data
_shapefileDataStream = dialog.File.OpenRead();
StreamReader sreader = new StreamReader(_shapefileDataStream);
_shapefileData += sreader.ReadToEnd();
sreader.BaseStream.Position = 0;
//get the dbf filedata
_shapefiledbfDataStream = dialog2.File.OpenRead();
StreamReader sreader = new StreamReader(_shapefiledbfDataStream);
_shapefiledbfData += sreader.ReadToEnd();
sreader.BaseStream.Position = 0;
vm.SaveShapefile(_shapefileData,_shapefiledbfData, name, isChecked);
In the database they are stored as nvarchar(max) values for both shapefile and dbffile streams
To retrieve the data i do
Stream ShapefileStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(m.ShapefileStream),0,shapelength);
ShapefileStream.Position = 0;
Stream ShapefileDataStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(m.ShapefileDataStream),0,dbflength);
ShapefileDataStream.Position = 0;
if ((ShapefileStream != null) && (ShapefileDataStream != null))
{
List<
FrameworkElement
> mlist = ShapeFileReader.Read(ShapefileStream, ShapefileDataStream,System.Text.Encoding.UTF8);
mlist.ForEach(element => element.Tag = m);
_events.GetEvent<
DisplayShapefileTemplateDataEvent
>().Publish(mlist);
}
and the error i get
Unable to read beyond the end of the stream.
at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
at System.IO.BinaryReader.ReadUInt32()
at Telerik.Windows.Controls.Map.DbfHeader..ctor(Stream stream, Encoding encoding)
at Telerik.Windows.Controls.Map.DbfHeader.Create(Stream stream, Encoding encoding)
at Telerik.Windows.Controls.Map.DbfReader..ctor(Stream stream, ExtendedPropertySet propertySet, Encoding encoding)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(ShapeFileReaderParameters parameters)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, ExtendedPropertySet extendedPropertySet, Encoding encoding, ICoordinateConverter coordinateConverter)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, ExtendedPropertySet extendedPropertySet, Encoding encoding)
at Telerik.Windows.Controls.Map.ShapeFileReader.Read(Stream shapeStream, Stream dbfStream, Encoding encoding)
at WIMMS.UI.Module.Main.SavedSearchView.DisplayShapefile_Click(Object sender, RoutedEventArgs e)