Good GPS data but bad vehicle local position estimation

Hello,

I am a newbie so please tell me if I wrote this in a wrong place.

I used MATLAB to read some uorb messages from PX4.
When I put my drone stationary outdoor, my log shows good gps lock and good ekf2 innovations but shows bad vehicle_local_position - it drifted over time

Below one is my vehicle_local_position uorb message data.

As you can see, z seems stable (quite strange why z is not 0 though because I turn on drone and put stationary) but x and y started to drift as time goes.

However, the velocity data from vehicle_local_position shows good estimation as below graph shows.

Furthermore, gps shows quite nice data
y value of data is latitude. Please ignore the decimal point.

So I wonder is there any sensor fusion error in EKF because it seems data are quite good but local position is bad.
Also, I cannot understand why EKF fused velocity data from vehicle_local_position.msg shows good data but position data didn’t

Can anyone help me?
I didn’t do anything with EKF(parameter setting or etc) and just read uorb message using MATLAB.

Thank you