# How to get this Europe map using Mathematica?

I need to generate a Europe map with given lattitue limit and longitute limit as shown in the attached figure. I want the map to be more detailed and colorful (attractive).

Furthermore, if I want to put some transparent cicles (with border latitute and longitude) on the map, how can i do it. Transparent circles means the map on the back should still be visible.

• Have you tried anything?
– Kuba
Commented Nov 5, 2018 at 12:45
• Have you even looked "GeoProjection" in the documentation? You will find anything you need there. Even the transparent circles.. Commented Nov 5, 2018 at 13:00
– Kuba
Commented Nov 9, 2018 at 8:54

Let me take a nap before I incorporate grid labels:

With[{range = { {25., 70.}, {-25., 45.}}}
, GeoGraphics[
{
{EdgeForm@Thick, FaceForm@None, GeoBoundsRegion[range]}
}
, GeoRange          -> range
, GeoProjection     -> {"Albers", "StandardParallels" -> {40, 60}}
, GeoGridLines      -> {Range[30, 60, 15], Range[-15, 30, 15]}
, GeoGridLinesStyle -> Directive[Dotted, GrayLevel[.7]]
, GeoBackground     -> GeoStyling[{"Coastlines"
, "Land" -> Gray, "Ocean" -> White, "Border" -> Black
}]
]
]


Since there is no native way to specify GeoTicks etc. we need to generate them. One way is to

-> take our grid lines array -> extract theirs intersection with bounding area -> convert to Albers -> and Inset labels with offset at those calculated positions...

...boring, let's try to incorporate DynamicLocation and friends. Won't be shorter but maybe in future can be more general:

LabelGeoGridLines//ClearAll;
LabelGeoGridLines[x_,__]:=x;
LabelGeoGridLines[a:Annotation[{{dir__,lat:{__Line}},{dir2__,long:{__Line}}},"GeoGridLines",_],ranges_]:=Module[{temp}
, temp=a
; temp[[1,;;,2]]=MapIndexed[
Function[{line,position}
, With[{id=ToString[position]}
, { DynamicName[line,id]
, GridLabel[Extract[ranges,position],position[[1]]>1,id]
}
]
]
, temp[[1,;;,2]]
, {2}
]
; temp
];

GridLabel[label_?NumericQ,True,id_]:=Text[Style[TextString[GeoPosition[{0,label}]]//StringSplit//Last, Black, 15],Offset[{0,-30},DynamicLocation[id,Automatic,Scaled[0]]]]
GridLabel[label_?NumericQ,False,id_]:=Text[Style[TextString[GeoPosition[{label,0}]]//StringSplit//First, Black, 15],Offset[{-30,0},DynamicLocation[id,Automatic,Scaled[0]]]]

With[{range = { {25., 70.}, {-25., 45.}}, gridLines = {Range[30, 60, 15], Range[-15, 30, 15]}}
, GeoGraphics[
{
{EdgeForm@Thick, FaceForm@None, GeoBoundsRegion[range]}
}
, GeoRange          -> range
, GeoProjection     -> {"Albers", "StandardParallels" -> {40, 60}}
, GeoGridLines      -> gridLines
, GeoGridLinesStyle -> Directive[Dotted, GrayLevel[.7]]
, GeoBackground     -> GeoStyling[{"Coastlines"
, "Land" -> Gray, "Ocean" -> White, "Border" -> Black
}]
, ImageSize -> 800
] // Replace[
#
, a:Annotation[_,"GeoGridLines",_]:>LabelGeoGridLines[a,gridLines]
, \[Infinity]
]& // DynamicNamespace

]


• I'm wondering how could one display values of axis ticks on this sort of map. Commented Nov 8, 2018 at 21:50
• @AndrzejGolonka see my edit.
– Kuba
Commented Nov 9, 2018 at 8:48
GeoGraphics[
{ Polygon[Entity["GeographicRegion", "Europe"]]
, Red, GeoDisk[Entity["City", {"Warsaw", "Mazowieckie", "Poland"}], Quantity[377, "Kilometers"]]}
, GeoRange -> {{25, 70}, {-25, 45}}
, GeoProjection -> "Albers"
, GeoBackground -> GeoStyling["CountryBorders"]
, GeoGridLines -> Automatic
, GeoGridLinesStyle -> Directive[Thin, Dashed, Gray]
]


• I'd recommend to use the projection {"Albers", "StandardParallels" -> {30, 60}}, to decrease distortion between those two standard parallels. In order to get the shape of the original example, use GeoRangePadding -> None.
– jose
Commented Nov 5, 2018 at 22:29
• Comments are not for extended discussion; this conversation has been moved to chat.
– Kuba
Commented Nov 9, 2018 at 7:36