Open live version
Color a Map by Country
Color individual countries in the image of a map. This example appears in Stephen Wolfram’s video Introduction to the Wolfram Language.
code
MorphologicalComponents[\!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
hg==
"], {{0, 305}, {293, 0}}, {0, 1},
ColorFunction->GrayLevel],
BoxForm`ImageTag["Bit", ColorSpace -> Automatic, Interleaving -> None],
Selectable->False],
BaseStyle->"ImageGraphics",
ImageSizeRaw->{293, 305},
PlotRange->{{0, 293}, {0, 305}}]\)] // Colorize
how it works
MorphologicalComponents gives an array in which each pixel of an image is replaced by an integer index representing the connected foreground image component in which the pixel lies. Colorize generates an image from the array, using colors for positive integers and black for non-positive integers.
MorphologicalComponents[\!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
hg==
"], {{0, 305}, {293, 0}}, {0, 1},
ColorFunction->GrayLevel],
BoxForm`ImageTag["Bit", ColorSpace -> Automatic, Interleaving -> None],
Selectable->False],
BaseStyle->"ImageGraphics",
ImageSizeRaw->{293, 305},
PlotRange->{{0, 293}, {0, 305}}]\)] // Colorize