QGIS – Creating an Arc of Circle with Radius Using EPSG:4326 Coordinates for Aviation

coordinate systemqgis-3radiuswgs84

I am trying to make a polygon from the aviation LPPO FIR (Santa Maria Oceanic Flight Information Region), that some portion is described as "arc of circle with 100NM radius centred at PST NDB (anti clock-wise)".

DATA (DDMMSS):

  • PST NDB : 330407N 0162130W
  • Start point of arc : 341504N 0174605W
  • Ending point of arc : 3215N 01438W

In QGIS 3.24.3-Tisler:

  • Fresh project in EPSG4326
  • Plotting DATA coordinates in a point layer (EPSG4326)
  • Making a circle with vector_geometry/buffer or python_script – Layer (EPSG4326)

Can obtain a visually close "perfect circle" (adding decorations/grid seems a perfect circle) but with a radius of ~99.455NM in Y axis, and only ~85.865NM in the X axis with measure_line/elipsoidal (in cartesian Y:~99.813NM X:~102.355NM)

the drawn circles also do not reach the points of start/end of arc of circle.

adding a layer with the actual boundary for comparison, the draw circle has the right dimension on N/S but wrong in E/W – the actual shape should be more close to a horizontal ellipse.

Work around
Using online Vicenty calculator, determine 2 point at a distance of 100NM from PST NDB and with 180º and 270º (respectively south and west) and then using "add ellipse from center and 2 points" with the PST NDB and this 2 new points to draw an ellipse that looks closer to the layer with the actual boundary.

Question
What is the issue here, knowing that maintaining the same CRS /EPSG 4326.

Is there any path to do it properly, and without the need to create the 2 additional points for reference?
or using the alternative method below.

Additional Information
Plotting a circle using the https://www.fcc.gov/sites/default/files/circle-plot.html and importing the KML to QGIS, the 100NM radius "circle" measure ~99.767NM in X and ~100.225NM in Y and superimposes all the expected coordinates looking pretty close to the expected.

Best Answer

Your problem stems from the use of EPSG:4326 when generating your arc. While 4326 is fine for locating point data, it should not be used with anything that involves distance or area (including line or polygon data). That's because 4326 uses lat/lon values instead of meters or feet, and the distance (expressed as degrees) between any two lines of longitude shrinks as you move from the equator to the poles. At the poles the distance becomes zero. You can see this by observing a globe. Meanwhile, the distance between any two lines of latitude stays relatively constant (it would be constant if the earth was a perfect sphere, but it bulges a little here and there, causing small variations in the distance between parallels).

You can see this in your results: The Y-axis (latitude) is pretty close to 100nm, but the X-axis (longitude) is way off.

The solution is to convert the point data from 4326 to a projection that uses meters or feet. Here's the approach I took:

  1. Add the three data points, using their lat/lon values, as EPSG:4326
  2. Export the points to a new layer that uses a projected CRS in meters or feet. I chose EPGS:32628 (UTM 28N, meters)
  3. Remove the EPSG:4326 points and load the new EPSG:32628 points into QGIS. Inform QGIS that you're now operating in EPSG:32628 with Project > Properties > CRS and search for 32628. Make that the project default and click ok.
  4. Buffer the center point (the Santa Maria NDB) by 185,200 meters (which is equal to 100 nm). Note that this buffer polygon will be in EPSG:32628, which is what we want.
  5. Convert the buffer polygon to a line, which will also be in EPSG:32628.
  6. Split the line using the two outer points with the Toolbox > Processing > SAGA > Features-lines > Split lines at points tool. Set the Epsilon value to 300 (Epsilon acts like a search distance (in meters) between the line and each point. This is required because the two points are not exactly coincident with the line; they are within +/- 289 meters).
  7. Voila! A split line. Select the southerly segment, which coincides with the start/end, anti-clockwise requirement.

enter image description here