Na przykład, jeśli mamy taki zestaw współrzędnych
"latitude": 48.858844300000001,
"longitude": 2.2943506,
Jak możemy poznać miasto / kraj?
geolocation
geocoding
geospatial
geo
ming yeow
źródło
źródło
Odpowiedzi:
Bezpłatny interfejs API Google Geocoding udostępnia tę usługę za pośrednictwem interfejsu API REST HTTP. Uwaga: API jest ograniczone pod względem użycia i stawki , ale możesz zapłacić za nieograniczony dostęp.
Wypróbuj ten link, aby zobaczyć przykład danych wyjściowych (to jest w formacie json, dane wyjściowe są również dostępne w formacie XML)
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
źródło
Inna opcja:
Zalety:
Niedogodności:
źródło
Potrzebujesz
geopy
i wtedy:
aby uzyskać więcej informacji:
źródło
Alternatywą Open Source jest Nominatim z Open Street Map. Wszystko, co musisz zrobić, to ustawić zmienne w adresie URL i zwraca miasto / kraj tej lokalizacji. Sprawdź poniższy link, aby uzyskać oficjalną dokumentację: Nominatim
źródło
Szukałem podobnej funkcjonalności i zobaczyłem dane „ http://download.geonames.org/export/dump/ ” udostępnione we wcześniejszej odpowiedzi (dziękuję za udostępnienie, jest to doskonałe źródło) i wdrożyłem usługę opartą na na danych cities1000.txt.
Możesz zobaczyć, jak działa pod adresem
http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9(uszkodzony link) Po prostu zmień szerokość i długość geograficzną dla swoich lokalizacji.Jest wdrażany w OpenShift (platforma RedHat). Pierwsze połączenie po długim okresie bezczynności może trochę potrwać, ale zwykle wydajność jest zadowalająca. Zapraszam do korzystania z tej usługi w dowolny sposób ...
Możesz również znaleźć źródło projektu na https://github.com/turgos/Location .
źródło
Użyłem Geocodera , dobrej biblioteki Pythona, która obsługuje wielu dostawców, w tym Google, Geonames i OpenStreetMaps, aby wymienić tylko kilka . Próbowałem użyć biblioteki GeoPy i często pojawiają się limity czasu. Tworzenie własnego kodu dla GeoNames nie jest najlepszym sposobem wykorzystania Twojego czasu i możesz otrzymać niestabilny kod. Z mojego doświadczenia wynika, że Geocoder jest bardzo prosty w użyciu i ma wystarczająco dobrą dokumentację . Poniżej znajduje się przykładowy kod do wyszukiwania miasta według szerokości i długości geograficznej lub wyszukiwania szerokości / długości geograficznej według nazwy miasta.
źródło
geocoder
, sam też chciałbym spróbować!Spędziłem około 30 minut, próbując znaleźć przykładowy kod, jak to zrobić w JavaScript. Nie udało mi się znaleźć szybkiej i jasnej odpowiedzi na zadane przez Ciebie pytanie. Więc ... stworzyłem własne. Miejmy nadzieję, że ludzie mogą z tego korzystać bez konieczności zagłębiania się w API lub wpatrywania się w kod, którego nie mają pojęcia, jak czytać. Ha, jeśli nic więcej, mogę odnieść się do tego postu dla własnych rzeczy .. Miłe pytanie i dzięki za forum dyskusji!
To wykorzystuje Google API.
.
źródło
Wiem, że to pytanie jest naprawdę stare, ale pracowałem nad tym samym problemem i znalazłem niezwykle wydajny i wygodny pakiet
reverse_geocoder
, zbudowany przez Ajaya Thampi. Kod jest dostępny tutaj . Opiera się na równoległej implementacji drzew KD, co jest niezwykle wydajne dla dużej liczby punktów (zajęło mi kilka sekund, aby uzyskać 100 000 punktów.Opiera się na tej bazie danych, która została już wyróżniona przez @turgos.
Jeśli Twoim zadaniem jest szybkie znalezienie kraju i miasta z listy współrzędnych, jest to świetne narzędzie.
źródło
To naprawdę zależy od tego, jakie masz ograniczenia technologiczne.
Jednym ze sposobów jest posiadanie przestrzennej bazy danych zawierającej zarys krajów i miast, którymi jesteś zainteresowany. Przez zarys rozumiem, że kraje i miasta są przechowywane jako wielokąt typu przestrzennego. Twój zestaw współrzędnych może zostać przekonwertowany na punkt typu przestrzennego i porównany z wielokątami, aby uzyskać nazwę kraju / miasta, w którym znajduje się punkt.
Oto niektóre bazy danych obsługujące typ przestrzenny: SQL server 2008 , MySQL , postGIS - rozszerzenie postgreSQL i Oracle .
Jeśli chcesz skorzystać z usługi zamiast posiadania własnej bazy danych, możesz skorzystać z usługi GeoPlanet Yahoo . Jeśli chodzi o podejście do usług, możesz sprawdzić tę odpowiedź na gis.stackexchange.com , która obejmuje dostępność usług umożliwiających rozwiązanie problemu.
źródło
Możesz użyć Google Geocoding API
Poniżej znajduje się funkcja php, która zwraca adres, miasto, stan i kraj
źródło
Loc2country to narzędzie oparte na języku Golang, które zwraca kod kraju ISO alpha-3 dla podanych współrzędnych lokalizacji (szer. / Dł.). Odpowiada w mikrosekundach. Używa geohash do mapy kraju.
Dane geohash są generowane za pomocą georaptora .
Do tego narzędzia używamy geohaszu na poziomie 6, czyli skrzynek o wymiarach 1,2km x 600m.
źródło
Zminimalizuj liczbę bibliotek.
Uzyskaj klucz do korzystania z interfejsu API w ich witrynie internetowej i po prostu uzyskaj wynik w żądaniu http:
curl -i -H "key: YOUR_KEY" -X GET https://api.latlong.dev/lookup?lat=38.7447913&long=-9.1625173
źródło
Sprawdź poniższą odpowiedź. Mi to pasuje
źródło
Jeśli korzystasz z interfejsu API Miejsc Google, możesz pobrać kraj i miasto z obiektu miejsca za pomocą JavaScript:
źródło