Как преобразовать адрес в широту/долготу?

Как я могу перевести адрес или город на широту/долготу? Есть ли коммерческие наряды, на которых я могу "арендовать" эту услугу? Это будет использоваться в коммерческом настольном приложении на ПК с ПК с полным доступом в Интернет.

Ответ 1

В Google есть API геокодирования, который, похоже, работает очень хорошо для большинства местоположений, в которых они имеют данные Google Maps.

http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html

Они предоставляют онлайн-геокодирование (через JavaScript):

http://code.google.com/apis/maps/documentation/services.html#Geocoding

Или глобальное геокодирование (через HTTP-запрос):

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct

Данные, как правило, используются самими Картами Google. (обратите внимание, что есть некоторые исключения из этого, такие как Великобритания или Израиль, где данные получены из другого источника и имеют немного пониженное качество).

Ответ 2

Ничего нового не добавлено, но у меня было много реальных опыта в области ГИС и геокодирования от предыдущей работы. Вот что я помню:

Если в вашем приложении требуется "время от времени", я определенно рекомендую API Google или Yahoo Geocoding API, но будьте осторожны, чтобы прочитать их условия лицензирования.

Я знаю, что API Карт Google в целом легко лицензировать даже для коммерческих веб-страниц, но не может использоваться в ситуации с оплатой за доступ. Другими словами, вы можете использовать его для рекламы или предоставления услуги, которая управляет доходами от рекламы, но вы не можете взимать плату с пользователей за ваш сайт или даже поместить его за систему паролей.

Несмотря на эти ограничения, они оба превосходны, потому что они часто обновляют свои уличные базы данных. Большинство бесплатных бэкэнд-инструментов и библиотек используют данные дорожного движения Census и TIGER, которые обновляются редко, поэтому вы с меньшей вероятностью успешно выполняете геокодирование адресов в быстрорастущих областях или новых подразделениях.

Большинство сервисов также ограничивают количество запросов геокодирования, которые вы можете сделать в день, поэтому им нужно искать адреса, скажем, новых клиентов, которые добавляются в вашу базу данных, но если вы запускаете пакетное задание, которое подает тысячи адресов вашей базы данных в геокодер, вы собираетесь отключиться.

Я не думаю, что это уже упоминалось, но ESRI имеет ArcWeb веб-сервисы, которые включают геокодирование, хотя они не очень дешево. В прошлый раз, когда я использовал их, он стоил около 1,5 центов за поиск, но вам нужно было заплатить определенную сумму, чтобы начать. Опять же, основным преимуществом является то, что данные дорожного движения, которые они используют, постоянно обновляются в актуальном состоянии, и вы можете использовать данные в коммерческих ситуациях, которые Google не разрешает. Услуга ArcWeb также будет обслуживать спутниковые и аэрофотоснимки с высоким разрешением и карты Google, снова по цене за запрос.

Если вы хотите свернуть свой собственный или получить доступ к гораздо более точные данные, вы можете приобрести подписки на данные ГИС от компаний, таких как TeleAtlas, но это не дешево. Вы можете купить только данные штата или графства, если ваши потребности крайне локальны. Существует несколько уровней данных - только для объектов ГИС, ГИС плюс подробные улицы, все это плюс данные геокода, все это плюс ограничения потока трафика/направления/скорости для маршрутизации. Конечно, цена растет, когда вы поднимаетесь по уровням.

Наконец, статья Википедии о Geocoding содержит некоторую полезную информацию об алгоритмах и методах. Даже если вы не делаете это в своем собственном коде, полезно знать, какие ошибки и точность вы можете ожидать от различных источников данных.

Ответ 5

Когда вы конвертируете адрес или объект в lat/long, он называется Geocoding.

Существует множество решений для геокодирования. Решение для вашего проекта будет зависеть от приемлемости условий лицензирования для каждого решения по геокодированию. Как Microsoft Virtual Earth, так и Google Maps предлагают решения, которые могут свободно использоваться под очень ограничительными лицензиями...

http://code.google.com/apis/maps/documentation/services.html

http://www.microsoft.com/virtualearth/product/faq.aspx

Ответ 6

Сворачивая свое собственное решение для этого раньше, я могу всем сердцем рекомендовать Geo:: Coder:: US модуль Perl для этого. Просто скачайте все данные переписи и используйте включенного импортера для создания Berkeley DB для вашей страны и укажите Perl script на нем. Используйте модуль, встроенный в парсинг адресов, и там у вас есть: автономная система геокодирования!

Ответ 7

Попробуйте с этим кодом, я работаю так с адресами:

Это ссылка, в которой с помощью метода GET вы отправите запрос и получите lat и lng. http://maps.google.com/maps/api/geocode/json? address = YOUR ADDRES & sensor = false

Например: http://maps.google.com/maps/api/geocode/json?address=W Главная St, Bergenfield, NJ 07621 & датчик = false

1. Создайте свой метод GET.

 public static String GET(String url) throws Exception {//GET Method
        String result = null;
        InputStream inputStream = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);

        Log.v("ExecuteGET: ", httpGet.getRequestLine().toString());

        HttpResponse httpResponse = httpclient.execute(httpGet);
        inputStream = httpResponse.getEntity().getContent();
        if (inputStream != null) {
            result = convertInputStreamToString(inputStream);
            Log.v("Result: ", "result\n" + result);
        } 
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

2. Создать метод отправки запроса

@SuppressWarnings("deprecation")
    public static String getLatLng(String accessToken) throws Exception{
        String query=StaticString.gLobalGoogleUrl+"json?address="+URLEncoder.encode(accessToken)+"&sensor=false";
        Log.v("GETGoogleGeocoder", query+"");
        return GET(query);
    }

gLobalGoogleUrl= "http://maps.google.com/maps/api/geocode/"

3. Вызов метода getLatLng

String result=getLatLng("W Main St, Bergenfield, NJ 07621");

4. Parse JSONObject

Теперь результат JSONObject с информацией об адресе и lan, lng. Parse JSONObject (результат) с gson(). После этого используйте lat, lng.

Если у вас есть вопрос о коде, спросите.

Ответ 8

Вам нужно приложение для геокодирования. Они доступны как в Интернете, так и в качестве бэкэнда приложения.

Ответ 9

Maptsraction (http://www.mapstraction.com) позволяет выбирать между любым количеством служб геокодирования. Это может быть полезно, если вам нужно делать большие количества, поскольку я знаю, что у Google есть предел, сколько вы можете сделать за день.

Ответ 11

Вы также можете попробовать OpenStreetMap NameFinder (или текущий Nominatim), который содержит открытые исходные, вики-подобные уличные данные для (потенциально) всего мира.

Ответ 12

вы можете использовать мыльные сервисы bing maps, где вы можете ссылаться на обратную геокодированную службу, чтобы найти lat/long from address Ссылка здесь http://msdn.microsoft.com/en-us/library/cc980922.aspx

Ответ 14

USC WebGIS Geocoder является бесплатным и предлагает несколько API, или вы можете загрузить базу данных для онлайн-пакетной обработки.

Ответ 16

Думаю, я бы добавил еще один список. Техас A & M имеет довольно прилично оцененный сервис здесь: http://geoservices.tamu.edu/Services/Geocode/

Хороший вариант, если у вас довольно большой набор адресов для геокодирования и вы не хотите погладить 10k в Google или Microsoft. Мы по-прежнему использовали возвращаемые данные на карте Google.

Ответ 17

вы спрашиваете о Geocoder. Google предоставляет API для этого. так и другой поставщик для этого.

вы можете увидеть демонстрацию реализации в Мое текущее местоположение.net

Ответ 18

Если вам нужно одно решение, вы можете попробовать: https://addresstolatlong.com/

Я использовал его в течение долгого времени, и он работал очень хорошо для меня.