# Make a 3D geographics with boundary of province

This is a example in documentation of GeoElevationData(Neat Examples).

latlon = Transpose[
GeoBounds[Entity["Country", "China"]]] + {{-35, -5}, {15, 15}};
elevation = Reverse[QuantityMagnitude[GeoElevationData[latlon]]];
ListPlot3D[elevation,
AspectRatio -> (Divide @@ Dimensions[elevation]), Boxed -> False,
Mesh -> None, Axes -> False, Background -> Black,
ColorFunction -> ColorData["HypsometricTints"],
ColorFunctionScaling -> False, RotationAction -> "Clip",
ImageSize -> Large]


I have to say such map is very useful for a history lover.But I have some dissatisfaction still.

1. It show the mountain perfectly,but we cannot get any information about river.There is a example in ref / GeoStyling / Scope / "ReliefMap"

We can see the river very exactly.Any solution can improve above map?

2. We cannot distinguish the boundary of province. As we know, the boundary like following:

GeoGraphics[{EdgeForm[Black], FaceForm[],
Polygon /@ {Entity["Country", "Taiwan"],
Sequence @@
EntityList[
Entity["Country", "China"]}]]}}, GeoBackground -> None]


Can anyone improve it?

Basically you can use whatever GeoGraphics as a Texture if you set appropriate GeoRange.

Your example with administrative bounds doesn't work so I just put there China border.

Unfortunately I couldn't find the way to highlight rivers. E.g. Entity["River", "Yangtze"]["Properties"] does not contain anything relevant to plot.

latlon = Transpose[
GeoBounds[Entity["Country", "China"]]
] + {{-35, -5}, {15, 15}};

elevation = Reverse[QuantityMagnitude[GeoElevationData[latlon]]];

plot = GeoGraphics[{EdgeForm@Thick, Polygon@Entity["Country", "China"]},
GeoRange -> latlon,
GeoZoomLevel -> 5,
ImageSize -> 3000
];

ListPlot3D[   elevation,
Boxed -> False, Mesh -> None, Axes -> False, Background -> Black,
PlotStyle -> Texture@plot, BoxRatios -> {1, 1, .3},
Lighting -> "Neutral"
]


• Yes,but the GeoZoomLevel  can include the Yangtze River
– yode
Commented Sep 23, 2016 at 7:21
• @yode yep, yet it won't be highlighted in any special way you can use with GeoGraphics primitives.
– Kuba
Commented Sep 23, 2016 at 7:30
• Maybe the larger value of GeoZoomLevel will get that river information.But my network too weak.As you answer.we can distinguish administrative bounds,you can get it by run Values[Databin["fVDlquaN"]]
– yode
Commented Sep 23, 2016 at 8:53

Some behavior have changed in 11.2, then the code in this comment is work almost

size = 2000;
latlon = Transpose[
GeoBounds[Entity["Country", "China"]]] + {{-35, -5}, {15,
15}}; elevation =
Reverse[QuantityMagnitude[GeoElevationData[latlon]]]; plot =
GeoGraphics[{EdgeForm[Thick], FaceForm[],
Polygon /@
Append[EntityList[