Quantcast
Channel: DotSpatial
Viewing all articles
Browse latest Browse all 3973

Closed Unassigned: ShapeReader - Error moving from one page to the next [63623]

$
0
0
Hello,

there is a error in the [`DotSpatial.Data.ShapeReader`](http://dotspatial.codeplex.com/SourceControl/latest#Trunk/DotSpatial.Data/ShapeReader.cs).

The move next function is incrementing the internal index, while the `GetShape(...)` function does so as well. This causes the reader to skip one entry in the shape at the beginning of every shape except the first.

To fix this I suggest you initialize the `_index` variable with `0` and remove the increment in this function.
That solves the problem.

So all in all this is the fixed implementation for the enumerator I propose:
``` C#
/// <summary>
/// Creates an enumerator for pages of shapes returned as dictionaries.
/// </summary>
public class Enumerator : IEnumerator<Dictionary<int, Shape>>
{
private readonly IEnvelope _envelope;
private readonly int _pageSize;
private readonly IShapeSource _source;
private int _count;
private int _index;
private Dictionary<int, Shape> _page;

/// <summary>
/// Creates ShapePageSet.Enumerator which can be used to cycle very large datasets.
/// </summary>
/// <param name="parent"></param>
public Enumerator(ShapeReader parent)
{
_source = parent._source;
_pageSize = parent.PageSize;
_envelope = parent.Envelope;
Reset();
}

#region IEnumerator<Dictionary<int,Shape>> Members

/// <inheritdocs/>
public Dictionary<int, Shape> Current
{
get { return _page; }
}

object IEnumerator.Current
{
get { return _page; }
}

/// <inheritdocs/>
public void Dispose()
{
}

/// <inheritdocs/>
public bool MoveNext()
{
if (_count < 0) _count = _source.GetShapeCount();
if (_index >= _count) return false;
_page = _source.GetShapes(ref _index, _pageSize, _envelope);
return true;
}

/// <inheritdocs/>
public void Reset()
{
_page = null;
_index = 0;
_count = -1;
}

#endregion
}
```

Regards,
Martin
Comments: Merged at github

Viewing all articles
Browse latest Browse all 3973

Trending Articles