question: public int interpElevationAt ( float lat , float lon ) { if ( frame_is_valid == true ) { if ( lat >= dsi . sw_lat && lat <= dsi . ne_lat && lon >= dsi . sw_lon && lon <= dsi . ne_lon ) { float lat_index = ( lat - dsi . sw_lat ) * 36000F / uhl . lat_post_interval ; float lon_index = ( lon - dsi . sw_lon ) * 36000F / uhl . lon_post_interval ; int lflon_index = ( int ) Math . floor ( lon_index ) ; int lclon_index = ( int ) Math . ceil ( lon_index ) ; int lclat_index = ( int ) Math . ceil ( lat_index ) ; if ( elevations [ lflon_index ] == null ) readDataRecord ( lflon_index ) ; if ( elevations [ lclon_index ] == null ) readDataRecord ( lclon_index ) ; int ul = elevations [ lflon_index ] [ lclat_index ] ; int ur = elevations [ lclon_index ] [ lclat_index ] ; int ll = elevations [ lflon_index ] [ lclat_index ] ; int lr = elevations [ lclon_index ] [ lclat_index ] ; float answer = resolveFourPoints ( ul , ur , lr , ll , lat_index , lon_index ) ; return Math . round ( answer ) ; } } return - 32767 ; }
target:  Interpolated elevation at a given lat/lon - should be more precise than elevationAt(), but that depends on the resolution of the data.