# GeoGraphics: problem with GeoPosition in shifted projections

Bug introduced in 10.0.0 and fixed in 11.0.0

My work around is only nice for simple cases with points. More general should include proper polygons splitting on antimeridian.

I'd expect GeoGraphics to handle positions of points since they are provided with GeoPosition wrapper.

But it is not the case for every projection:

Table[
GeoGraphics[Point@GeoPosition[{0, 90}], GeoRange -> "World",
GeoCenter -> GeoPosition[{0, center}],
BaseStyle -> AbsolutePointSize@12,
GeoProjection -> i]
,
{center, {-180, 0}},
{i,      GeoProjectionData[][[;; 5]]}
]


As we can see, when GeoCenter is not default {0,0}, some points are missing for couple of projections.

One can correct this manually but it is not consistent at all:

{##, GeoGraphics[Point@GeoPosition[#2], GeoRange -> "World",
GeoCenter -> GeoPosition[{0, -180}],
GeoProjection -> #]} & @@@ {
{"Equirectangular", {0, 90}}, {"Mollweide", {0, 90}}, {"Mollweide", {0, -270}}} // Grid


### V11.0.0 edit

Grid@Transpose@
Table[GeoGraphics[Point@GeoPosition[{0, 90}], GeoRange -> "World",
GeoCenter -> GeoPosition[{0, center}],
BaseStyle -> AbsolutePointSize@12,
GeoProjection -> i], {center, {-180, 0}}, {i,
GeoProjectionData[][[2 ;; 7]]}]


• Points would not plot at all in Question 72426. This may be a related issue. Alternatively, I may have made an error. Win 8.1 (64 bit) Jan 25 '15 at 16:53
• @bbgodfrey I think it is slightly related but the main problem there is that one should use GeoGraphics not GeoListPlot. Take a look at the answer I've added.
– Kuba
Jan 25 '15 at 17:09
• @Kuba I am not that savvy in every field, could you please asks about deeper functionality on Wolfram Community? It is much easier to get a relevant developer to comment there. For example a recent thing that you know: community.wolfram.com/groups/-/m/t/427526 Jan 25 '15 at 19:01
• @VitaliyKaurov Sure, I just wanted to ask if you are surprised by this behaviour or not. :)
– Kuba
Jan 25 '15 at 19:03

Here's a workaround for 10.x.x versions.

It seems that within the projected area is everything with longitude in interval: {t-180, t+180} and if you set t = -180 algorithm does not care that it is plotting {-360 , 0} while original data has domain {-180, 180}.

We have to take care of Mod ourselves:

pos = Cases[ CountryData["World", "SchematicCoordinates"], {_, _Real}, \[Infinity]];

Manipulate[
GeoGraphics[{Red, AbsolutePointSize@7, Point@GeoPosition[{#, Mod[#2, 360, -180 + t]} & @@@ pos]},
GeoRange -> "World",
GeoProjection -> "Sinusoidal",
Frame -> True,
FrameTicks -> {{{-180 Degree, t - 180}, {0 Degree, t}, {180 Degree, t + 180}}, Automatic},
GeoCenter -> GeoPosition[{0, t}],
ImageSize -> 800,
GeoGridLines -> Automatic,
GeoGridLinesStyle -> Black,
GeoBackground -> White,