How do I get the city and country names from the output of FindGeoLocation[]
{lat, long} ?
3 Answers
One way is to do this:
nc = Nearest[
CityData[#, "Coordinates"] -> # & /@
CityData[{All, "United Kingdom"}]];
Then use this as:
nc[FindGeoLocation[]]
{{"London", "GreaterLondon", "UnitedKingdom"}}
-
$\begingroup$ (I'm in the UK - your mileage might vary... :)) $\endgroup$ Jun 17, 2013 at 21:17
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
Starting from Mathematica version 10.0 there is GeoIdentify function
GeoIdentify["Country", GeoPosition[{-11.00505177, -76.41350033}]]
Which results in
{Entity["Country", "Peru"]}
-
$\begingroup$ 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". $\endgroup$ Oct 21, 2022 at 10:25
nearLC
) to find two nearest big cities (of population over 100000) for every geo-location point. $\endgroup$