cartographer.ElectorateImporter.ParseMIF C# (CSharp) Метод

ParseMIF() публичный Метод

public ParseMIF ( string filename ) : bool
filename string
Результат bool
        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
        }

Usage Example

Пример #1
0
        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);
        }
All Usage Examples Of cartographer.ElectorateImporter::ParseMIF