public bool ParseMIF(string filename)
{
try
{
m_ElectorateReaderMIF = new StreamReader(filename);
}
catch
{
}
for (int i = 1; i <= 17; i++)
{
//drop the first 17 lines -> irrelevant
m_ElectorateReaderMIF.ReadLine();
}
int currentShape = -1;
int currentRegion = -1;
int currentPoint = -1;
while (!m_ElectorateReaderMIF.EndOfStream)
{
string line = m_ElectorateReaderMIF.ReadLine();
if (line[0] == 'R')
{
//number of polys
Electorate electorate = new Electorate();
m_ElectorateDataMIF.Add(electorate);
currentRegion++;
string lineSoFar = "";
for (int i = 7; i < line.Length; i++)
{
lineSoFar += line[i];
}
for (int i = 1; i <= int.Parse(lineSoFar); i++)
{
Shape shape = new Shape();
electorate.Boundaries.Add(shape);
}
}
else if (line[0] == ' ' && line[1] == ' ' && line[2] != ' ')
{
//num points
string lineSoFar = "";
for (int i = 2; i < line.Length; i++)
{
lineSoFar += line[i];
}
currentShape++;
currentPoint = -1;
for (int i = 0; i < int.Parse(lineSoFar); i++)
{
Vector2 tempVector2 = new Vector2();
m_ElectorateDataMIF[currentRegion].Boundaries[currentShape].points.Add(tempVector2);
}
}
else if (line[0] == ' ' && line[1] == ' ' && line[2] == ' ')
{
//pen brush center
if (line[4] == 'C')
{
m_ElectorateDataMIF[currentRegion].Boundaries[currentShape].center = PointParse(line.Substring(11));
currentPoint = -1;
currentShape = -1;
}
}
else
{
//its a point
currentPoint++;
m_ElectorateDataMIF[currentRegion].Boundaries[currentShape].points[currentPoint] = PointParse(line);
}
}
return true; //cos it so works
}
public void ImporterTest() { ElectorateImporter electorateImporter = new ElectorateImporter(); electorateImporter.ParseMID("QLD_Federal_Electoral_Boundaries.MID"); electorateImporter.ParseMIF("QLD_Federal_Electoral_Boundaries.mif"); electorateImporter.ParseXLS(); List<Electorate> Electorates = new List<Electorate>(); Electorates = electorateImporter.MergeData(); Electorate testElectorate = Electorates[0]; Assert.AreEqual(testElectorate.Name, "Blair"); Assert.AreEqual(testElectorate.Actual, 87171); Assert.AreEqual(testElectorate.Projected, 92524); Assert.AreEqual(testElectorate.TotalPopulation, 87454); Assert.AreEqual(testElectorate.Over18, 87454); Assert.AreEqual(testElectorate.Area, 14859.51, 0.001); //Assert.AreEqual(testElectorate.ALPVotes, 31.44); Assert.AreEqual(testElectorate.LPVotes, 52.19); Assert.AreEqual(testElectorate.NPVotes, 0); Assert.AreEqual(testElectorate.DEMVotes, 1.28); Assert.AreEqual(testElectorate.GRNVotes, 2.94); Assert.AreEqual(testElectorate.OTHVotes, 12.15); Assert.AreEqual(testElectorate.LNP2PVotes, 61.21); Assert.AreEqual(testElectorate.ALP2PVotes, 38.79); }