# Determine whether a polygon crosses the antimeridian

I'm working on a system that uses bounding boxes as a fast first check for a point-in-polygon filter. My current naive implementation (just taking the min/max lat and lng for all points) fails on polygons that cross the antimeridian (180 longitude).

I've done enough research to determine that the Right Way is probably to use spherical polygons, but I'm hoping to avoid the complexity of this approach (code complexity and time complexity). I think I can ignore issues at the poles, at least for the present, so the problem is relatively simple if I can accurately identify polygons that cross the antimeridian, set the appropriate east/west values, and then change the bbox check if east < west. But I'm stuck on identification.

Constraints:

• I don't control the format of the input polygons.
• I assume all longitudes in the polygon are in the range `-180 - 180`
• I assume that all input polygons follow the right-hand rule, i.e. have a counter-clockwise winding order.

Given these constraints, what's the easiest way to identify a polygon that crosses 180 longitude?

• You see if succeeding vertices are more than some <large value> apart and/or change sign in the longitude values. Sep 22, 2017 at 18:33
• @mkennedy - but that disallows polygons with arcs > 180 degrees; I'd like to avoid that. Sep 22, 2017 at 20:43
• Large value could be set to 270 or 350. Having a two-point line with a length larger than 180 degrees (or say 270) anywhere except near a pole is...chancy. Sep 22, 2017 at 21:32
• If all coordinates indeed are in the [-180,180] interval then there are no crossings of the antimeridian! Jan 4, 2019 at 23:26
• @whuber I don’t understand your comment - I’m assuming all longitudes are normalized to this range, but may well be part of an anti-meridian crossing polygon. Jan 6, 2019 at 6:19

The easiest way to identify a polygon that crosses 180 longitude is:

1. Create polyline vector file with antimeridian line that crosses 180 (for test purposes I used `GCS_WGS_1984 WKID: 4326 Authority: EPSG` coordinate system).
2. Use `select by location` tool to select polygon features that intersect antimeridian line.

This method is tested with ArcGIS Desktop:

Picture 1: Picture 2:

• Nothing in the question indicates access to ArcGIS Desktop; OP is looking for an algorithm, not a pre-existing (and incidentally closed-source) tool. Dec 4, 2018 at 7:45
• @RichardLaw This method is not programm dependant. You can implement your own `select by location` tool. How can you see in the answer this method is `tested` with ArcGIS Desktop. So you can test it in QGIS or where ever you want. This answer points OP to the need of creating his own `select by location` tool. Dec 4, 2018 at 9:47

Detecting Antimeridian Crossings

• Take your polygon's coordinates (in GeoJSON format), then check if the absolute value of the longitudinal difference between two consecutive vertices of the polygon is greater than a certain threshold. Practically, 180 degrees could be a sensible threshold default to start with (you can increase this of course).

For most practical purposes, after you've detected antimeridian crossings, you probably want to split your polygon in order to allow further geospatial operations. Here's the full tutorial + code snippets using Python and Shapely.

• This is the Answer to a different question Jun 13, 2021 at 3:45
• I've stripped the answer down to answer this post's original question. However, for real-world applications, antimeridian detection alone is probably not useful without splitting/editing the polygon. I would appreciate if you removed your downvote (as the solution in the link can indeed detect antimeridian crossings) Jun 14, 2021 at 19:06