4
CountryData["US", "Area"]

puts the area of U.S. at $9.63\times 10^6 \textrm{ km}^2$, while

CountryData["US", "FullPolygon"] // GeoArea

returns $9.47\times 10^6 \textrm{ km}^2$.

Where does this discrepancy come from? Mathematica isn't the most transparent about its source and methodology. Does it come from the errors by polygon approximation of the shape of U.S. (17021 vertices), or is the area of a country not the same as the area of the polygon?

arax
  • 1,831
  • 12
  • 16
  • 3
    It may be related to the the work of Mandelbrot, who discovered that coastlines have fractal properties; which is to say, cannot be represented as a simple polygon. Maybe this is a bit too pretentious though, maybe it's more accurate to just say that the polygon is a rough approximation of the landmass, but the perimeter is more complicated than that. – C. E. Dec 23 '18 at 11:34
  • @C.E.: The same issue with Moldova: 33851.(km)^2 and 33848.3(km)^2. – user64494 Dec 23 '18 at 12:26
  • 2
    The polygons do not include territorial water, that's a huge difference for countries with large coastlines and many islands. – FJRA Dec 23 '18 at 17:25

1 Answers1

3

It seems CountryData and EntityValue get this answer through "The World Factbook":

CountryData["US", "Area"] == EntityValue[Entity["Country", "UnitedStates"], "Area"]
True
 EntityValue[Entity["Country", "UnitedStates"], "Area", "Source"]
{Entity["Source", "CIAFactbook"]}

If we check this source, we see

enter image description here

This answer is different from CountryData's. I'm not sure how the Factbook gets this answer and whether this is the spot Wolfram found the data point within the corpus. Also, checking the Wayback Machine I notice this value changes from time to time.

My guess is this estimate includes some territorial water, like @FJRA suggested in the comments. However I don't think this includes maritime boundaries, as this would make the total area much larger for the US.


Additionally I believe the answer returned by GeoArea is correct. We can verify this by first triangulating the polygon to approximate its shape on a 3D globe. From there we can estimate the surface area.

poly = CountryData["US", "FullPolygon"];

mr2d = TriangulateMesh[BoundaryDiscretizeGraphics[poly], MaxCellMeasure -> .1];

c3d = First[GeoPositionXYZ[GeoPosition[Reverse[MeshCoordinates[mr2d], {2}]]]];

mr3d = MeshRegion[c3d, MeshCells[mr2d, 2], BaseStyle -> Darker[Green]];

(* approximate globe as smaller sphere to prevent z-fighting *)
Show[mr3d, Graphics3D[{Lighter[Blue], Sphere[{0, 0, 0}, 6360000]}]]

enter image description here

Area[mr3d]*10^-6
9.46896*10^6
GeoArea[poly, UnitSystem -> "Metric"]
Quantity[9.4692*10^6, "Kilometers"^2]
Greg Hurst
  • 35,921
  • 1
  • 90
  • 136