i am having Strange issues when trying to read form gps serial connection
You are not reading the GPS often enough. The method
Adafruit_GPS::read() is documented in the comments embedded in the
source code:


  Read one character from the GPS device.
  
  Call very frequently and multiple times per opportunity or the buffer
  may overflow if there are frequent NMEA sentences. An 82 character
  NMEA sentence 10 times per second will require 820 calls per second,
  and once a loop() may not be enough. Check for newNMEAreceived() after
  at least every 10 calls, or you may miss some short sentences.
  
  returns: The character that we received, or 0 if nothing was available


Accessing the I2C bus makes loop() slower, slow enough that you get a
buffer overflow, as explained above. I suggest that, instead of reading
a single character per loop iteration, you read as many as are present
in the buffer:

void loop()
{
    GetTotalPressure();

    // Empty the GPS port receive buffer.
    while (GPS.available()) {
        char c = GPS.read();
        Serial.print(c);
    }

    // Parse any newly received NMEA sentence.
    if (GPS.newNMEAreceived()) {  // clears the newNMEAreceived flag
        if (!GPS.parse(GPS.lastNMEA()))
            return;
    }

    // Display and log location every second.
    if (millis() - timer2 &gt; 1000) {
        timer2 = millis(); // reset the timer
        GPSScreenUpdate();
        SDcardSave();
    }
}


As an aside, I removed the line

if (timer2 &gt; millis()) timer2 = millis();


which serves no useful purpose. If you are trying to detect millis()
overflows, you are almost certainly doing something wrong.