Q:

Is GeoElevationData[] inconsistent? 

Why dose GeoElevationData[] give different results in its one and 
two argument forms?  
(* the version I am running *) 

In[1]:= $Version 

Out[1]= 11.1.0 for Linux x86 (64-bit) (March 13, 2017) 

(* get elevation data at highest resolution for a very small rectangle 
w/ only 2 values *) 

In[2]:= GeoElevationData[ 
 {GeoPosition[{32.1-1/3600,103.1-1/3600}], 
 GeoPosition[{32.1+1/3600,103.1+1/3600}]}, 
 Automatic, "GeoPosition", GeoZoomLevel -> 12] // FullForm              

Out[2]//FullForm=  
    GeoPosition[List[List[List[32.100162506103516`, 103.09999465942383`, 
    3071.465259638845`]], List[List[32.09981918334961`,  
    103.09999465942383`, 3076.4657749984644`]]]] 

(* this should give me 3071.465259638845 or 3071 or even 3072 if 
Mathematica is rounding, but it does not *) 

In[3]:=  
 GeoElevationData[GeoPosition[{32.100162506103516`, 103.09999465942383`}]] 

Out[3]= 3103.  meters 

(* similarly, this should give me 3076 or 3077 meters, but does not *) 

In[4]:= 
 GeoElevationData[GeoPosition[{32.09981918334961`, 103.09999465942383`}]] 

Out[4]= 3108.  meters 

(* 

Note the second result is 5 meters higher than the first, just like in 
the two argument form of GeoElevationData, but both heights in the 
single argument version are about 32m higher than those in the two 
argument version.  Why?  

*) 

A:

The difference is due to the fact that GeoPosition always stores elevations with respect to the ellipsoid ("ITRF00" by default), while the bare GeoElevationData call reports elevations with respect to the geoid.  The former are called geodetic elevations, and the latter are called orthometric elevations.  You can see the difference as follows:
Define
In[]:= p = GeoPosition[{32.100162506103516`, 103.09999465942383`}];

Then compare
In[]:= GeoElevationData[p]
Out[]= Quantity[3103., " Meters"]

In[]:= GeoElevationData[p, "Geodetic"]
Out[]= Quantity[3071.47, "Meters"]

The difference is called "undulation" and can also be obtained as:
In[]:= GeoElevationData[p, "Undulation"]
Out[]= Quantity[-31.5347, "Meters"]

