Сравнение двух адресов улиц или номеров широты и долготы - PullRequest
0 голосов
/ 18 мая 2018

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

Вам будет дан адрес диапазона или улицы и широта долготы из файлов json в Google, и мне нужнопроверить, какой адрес соответствует какому адресу json.

Файл json будет иметь несколько блоков кода, как показано ниже:

 "distance" : {
     "text" : "999 ft",
     "value" : 999
 },
 "duration" : {
     "text" : "999 min",
     "value" : 999
 },
"end_address" : "3722-3788 Street, City, ST 11111, USA",
"end_location" : {
          "lat" : 40.0000000,
          "lng" : 100.0000000
 },

Мои данные будут иметь Широту, Долготу и адрес, по которому я могу сравнить, чтобы увидеть, являются ли мои адресачасть адресов JSON.Проблема в том, что мои данные будут точно содержать домашний адрес, в то время как у Google (выше) будет приблизительно / улица, на которой они проживают.

Проблема: Иногда мои данные будут иметь долготу 40.0005001, широту 99.799999 (которые близки, но не равны) и адрес 3750 Street, City, ST 11111, USA (которыйнаходится в пределах, но не совсем то же самое).

В: Как проверить, достаточно ли близок мой конечный адрес json к моему фактическому адресу?Мне не нужны точно номера домов, в основном только правильные названия улиц и т. Д. (Примечание: все поля, которые мы будем сравнивать, являются строками, но при необходимости их можно преобразовать в удвоение.)

Iя пробовал сравнивать только 3 знака после запятой для каждой широты и долготы, но это не дает правильного сравнения.Каждый будет лат / лнг, ниже будет округлено.

 if (deliveryLatitude == endLatitude && deliveryLongitude == endLongitude) {

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Для такого рода задач geoHash очень полезен.Есть несколько открытых библиотек geoHash, которые вы можете использовать.Например.

  • Точка A (x1, y1), geohash = abcdef
  • Точка B (x2, y2) geohash = abcdoz

ОсновнойИдея geoHash заключается в следующем: чем больше литералов в начале geoHash одинаковы, тем ближе эти точки.

Или вы можете рассчитать расстояние между этими двумя точками и определить, насколько они удалены.Например ESRI geometry API имеет методы для расчета расстояния на Земле

0 голосов
/ 18 мая 2018

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

Самое простое решение, о котором я могу подумать, - это проверить, достаточно ли близка точка A к некоторой точке B на планете Земля.Таким образом, вы передаете точку A и точку B этому:

https://stackoverflow.com/a/16794680/9810761

или этой функции Java

https://stackoverflow.com/a/3694410/9810761

И проверьте, является ли расстояниениже некоторого порога / эпсилона, например, на 10 метров - поэкспериментируйте с этим.

0 голосов
/ 18 мая 2018

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

Вы можете использовать метод floor () в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...