6
$\begingroup$

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]

enter image description here

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["AdministrativeDivision", {EntityProperty[
              "AdministrativeDivision", "ParentRegion"] -> 
             Entity["Country", "China"]}]]}}, GeoBackground -> None]
    

Can anyone improve it?

$\endgroup$
4
$\begingroup$

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"
]

enter image description here

$\endgroup$
  • $\begingroup$ Yes,but the GeoZoomLevel can include the Yangtze River $\endgroup$ – yode Sep 23 '16 at 7:21
  • $\begingroup$ @yode yep, yet it won't be highlighted in any special way you can use with GeoGraphics primitives. $\endgroup$ – Kuba Sep 23 '16 at 7:30
  • $\begingroup$ 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"]] $\endgroup$ – yode Sep 23 '16 at 8:53
0
$\begingroup$

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[
      Entity["AdministrativeDivision", {EntityProperty[
          "AdministrativeDivision", "ParentRegion"] -> 
         Entity["Country", "China"]}]], Entity["Country", "Taiwan"]]},
   GeoRange -> latlon, GeoZoomLevel -> 6, ImageSize -> size];
ListPlot3D[elevation, Boxed -> False, Mesh -> None, Axes -> False, 
 Background -> Black, PlotStyle -> Texture[plot], 
 BoxRatios -> {1, 1, 0.3}, Lighting -> "Neutral", ImageSize -> size]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.