3

How do I get the city and country names from the output of FindGeoLocation[] {lat, long} ?

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
ged1182
  • 31
  • 2

3 Answers3

2

One way is to do this:

nc = Nearest[
  CityData[#, "Coordinates"] -> # & /@ 
     CityData[{All, "United Kingdom"}]];

Then use this as:

nc[FindGeoLocation[]]

{{"London", "GreaterLondon", "UnitedKingdom"}}

cormullion
  • 24,243
  • 4
  • 64
  • 133
2

The fastest is probably with the use of the GeoNames API*:

loc = FindGeoLocation[]
i = Import[
"http://api.geonames.org/findNearby?lat=" <> ToString[loc[[1]]] <> 
"&lng=" <> ToString[loc[[2]]] <> "&username=demo", "XML"];
name = Cases[i[[2, 3, 1, 3]], XMLElement["name", _, x_] -> x]

*Idea from this post.

EDIT: another option is the use of WolframAlpha plugin in mathematica:

WolframAlpha["near cities"]
(* or *)
= near cities

wolframalpha output

shrx
  • 7,807
  • 2
  • 22
  • 55
1

Starting from Mathematica version 10.0 there is GeoIdentify function

GeoIdentify["Country", GeoPosition[{-11.00505177, -76.41350033}]]

Which results in

{Entity["Country", "Peru"]}
  • Of course you don't want to simply reproduce the Wolfram documentation, but it's worth pointing out that the first argument to GeoIdentify can be any one of a number of different kinds of entity, including "City". – High Performance Mark Oct 21 '22 at 10:25