Good job! You may be wondering how the equality operator (
=) differs from
ST_Equals when comparing geometries. For instance, why didn't we write the query below instead of the original?
ON coordinates = boundaries
The equality operator works differently than the
ST_Equals function. Moreover, the actual behavior of the equality operator depends on the version of PostGIS you are using. This course uses version 2.3. In PostGIS versions prior to 2.4, the equality operator compared only the bounding boxes of two geometries, ignoring features such as starting points and vertex order. Take a look at the following diagram:
Prior to PostGIS 2.4, the equality operator would treat all five figures above as equal, so the linestring would be equal to the polygons.
Since PostGIS 2.4, the behavior of the equality operator (
=) has changed. Now, in more recent versions, two geometries are considered equal if they have exactly the same vertices in the same order and with the same starting points. In other words, the equality operator in PostGIS 2.4 considers all five figures above to be different.
In most cases, the kind of equality defined by
ST_Equals is the one you want. If you use the equality operator, make sure it really gives the behavior you expected.