So the data from the gps module is sent to the ram which has enough storage to store the GPS values, but had I used a PIC, with little memory then that would be a problem right? And if I was to use a PIC I need to add an external flash
You can receive GPS using a PIC without much memory. External flash memory wouldn't help you at all. It would be RAM that you need.
If you have a lot of memory, you can receive and store in memory all the NMEA strings that arrive in the data burst that arrives each second. When that has been captured, your program can look through the memory and pull out the data that you want.
Alternatively, if you only want certain data from the GPS string, it is possible to extract the data as it arrives, without storing the whole string.
Here is an example string:-
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10
The code to extract latitude and longitude would work something like this:-
1) When "$" is received, go to waiting for rest of string, even if the previous string wasn't finished
2) Wait for "G"
3) Wait for "P"
4) Wait for "R"
5) Wait for "M"
6) Wait for "C"
7) Wait for three commas
8) store the next two digits as the degrees latitude
9) store the next two digits as the minutes latitude
10) wait for the decimal point
11) store the next four digits as the fractions of minutes latitude
12) wait for a comma
13) wait for "N" or "S". If "S", mark latitude as negative
14) wait for comma
15) store the next three digits as the degrees longitude
16) store the next two digits as the minutes longitude
17) wait for the decimal point
18) store the next four digits as the fractions of minutes longitude
19) wait for a comma
20) wait for a "E" or "W" If "W", mark the longitude as negative
If you are working like that, you only need memory for one character at a time. You also need a pointer to say where in the data you have got to, and memory for latitude and longitude.
I have received data from GPS receivers using this method with PICs in several projects.