public void UpdateGPSPos()
        {
            var gpsFirstNode = m_total_gps_data_list.First();

            GPS5DataFile.GPS5Data gpsDataFirst = gpsFirstNode.Value;
            double posX = gpsDataFirst.posX;
            double posY = gpsDataFirst.posY;
            double posZ = gpsDataFirst.altitude;

            int countInZone = 0;
            int lastZoneIdx = -1;

            foreach (var node in m_total_images)
            {
                int    idx       = node.Key;
                string imageName = node.Value;
                GPS5DataFile.GPS5Data gpsData = m_total_gps_data_list[imageName];
                if (gpsData.idxZone < 0)
                {
                    continue;
                }
                GPS5DataFile.GPS5Zone gpsZone = GPS5DataFile.GetGPSZone(gpsData.idxZone);



                countInZone++;
            }
        }
        public void BuildGPSZones()
        {
            var gpsFirstNode = m_total_gps_data_list.First();

            GPS5DataFile.GPS5Data gpsDataFirst = gpsFirstNode.Value;
            double latRef = gpsDataFirst.latitude;
            double lonRef = gpsDataFirst.longitude;

            //m_total_images.OrderBy();
            foreach (var node in m_total_images)
            {
                int    idx       = node.Key;
                string imageName = node.Value;
                //Caculate XYZ;
                GPS5DataFile.GPS5Data gpsData = m_total_gps_data_list[imageName];
                double posX;
                double posY;
                posX = KMLFile.distanceEarth(latRef, lonRef, latRef, gpsData.longitude);
                if (lonRef > gpsData.longitude)
                {
                    posX *= -1.0;
                }
                posY = KMLFile.distanceEarth(latRef, lonRef, gpsData.latitude, lonRef);
                if (latRef > gpsData.latitude)
                {
                    posY *= -1.0;
                }
                // km -> m
                posX           *= 1000.0;
                posY           *= 1000.0;
                gpsData.posX    = posX;
                gpsData.posY    = posY;
                gpsData.idxZone = GPS5DataFile.PushGPSDataToZone(gpsData);
                m_total_gps_data_list[imageName] = gpsData;
            }
        }