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; } }