To solve this optimization problem, we will use linear programming. The goal is to maximize profit given the constraints on land and special soil.

Let's denote:
- \(A\) as the number of acres for apple trees,
- \(O\) as the number of acres for orange trees.

The objective function to maximize profit is: 
\[500A + 450O\]

Given constraints are:
1. Total land constraint: \(A + O \leq 80\)
2. Special soil constraint: \(30A + 25O \leq 2200\)
3. Non-negativity constraints: \(A \geq 0, O \geq 0\)

Now, let's translate these into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Farmer_Profit")

# Define variables
A = m.addVar(lb=0, name="Apple_Trees_Acres")
O = m.addVar(lb=0, name="Orange_Trees_Acres")

# Set the objective function
m.setObjective(500*A + 450*O, GRB.MAXIMIZE)

# Add constraints
m.addConstr(A + O <= 80, "Total_Land_Constraint")
m.addConstr(30*A + 25*O <= 2200, "Special_Soil_Constraint")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: {A.varName} = {A.x}, {O.varName} = {O.x}")
    print(f"Maximum Profit: ${m.objVal:.2f}")
else:
    print("No optimal solution found")

```
```python
from gurobipy import *

# Create a new model
m = Model("Farmer_Profit")

# Define variables
A = m.addVar(lb=0, name="Apple_Trees_Acres")
O = m.addVar(lb=0, name="Orange_Trees_Acres")

# Set the objective function
m.setObjective(500*A + 450*O, GRB.MAXIMIZE)

# Add constraints
m.addConstr(A + O <= 80, "Total_Land_Constraint")
m.addConstr(30*A + 25*O <= 2200, "Special_Soil_Constraint")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: {A.varName} = {A.x}, {O.varName} = {O.x}")
    print(f"Maximum Profit: ${m.objVal:.2f}")
else:
    print("No optimal solution found")
```