For the definition of your ellipse, you will need
- The center longitude and latitude
- The length of the semi-major axis and semi-minor axis, in units of the spatial reference system
- The angle of rotation of your ellipse, in radians

To transform degrees to radians, remember that pi radians = 180°
- your angle in radians = (your angle in degree)*pi/180
For the spatial reference system we are going to use the EPSG:4326 lat/lon grid. To convert meters to units of this spatial reference system, I use the quick and dirty method from this GIS Stack Exchange post:
- 1 degree of latitude ≃ 111.111 km | that’s your y axis
- 1 degree of longitude ≃ 111,111 * cos(latitude) | that’s your x axis
The Query
Here is how a SELECT query looks like if you want to get an ellipse
SELECT
ST_Translate(
ST_Rotate(
ST_Scale(
ST_Buffer(
ST_SetSRID(ST_Point(0,0), 4326),
1.0),
2, 1),
45*pi()/180),
-73.4, 45.4
)
And this is the output you would get with PgAdmin

Explanation
- Take a point at (0,0) ST_Point(0,0)
- Set it to WGS84 (SRID 4326) ST_SetSRID(point, 4326)
- Add a buffer to make that point a circle, here I’ve added a buffer of 1 degree ST_Buffer(point, 1.0)
- Scale the circle differently in x and y to make it an ellipse ST_Scale(circle, 2, 1)
- Rotate your ellipse by the angle, here I am rotating by 45 degrees and turning it into radians ST_Rotate(ellipse, 45*pi()/180)
- Translate your ellipse to your its center in latitude/longitude ST_Translate(ellipse, -73.4, 45.4)