2016-05-07 2 views
4

Прежде всего позвольте мне поблагодарить вас за то, что вы нашли время в чтении моего вопроса.Как создать геопространственный модуль с AWS лямбда и динамо db

Мой план состоял в том, чтобы добавить записи широты и долготы в записи моих лиц в dynamodb, а затем использовать географическую библиотеку, предпочтительно написанную в nodejs, для вычисления близлежащих лиц в заданном радиусе. Таким образом, план, например, возвращал людей только с этого 50-мильного радиуса.

До сих пор единственные гео-библиотеки, которые я пробовал, позволяют мне передавать лат и долгое время на него и подтвердить, находится ли он в указанном радиусе. Проблема в том, что я должен зациклять всю таблицу dynamodb, чтобы получить результаты. Есть ли обратная функция для этого, в которой я передаю лалонную точку и радиус в гео-библиотеку, а затем гео-библиотека передает мне некоторые широтные и длинные границы, поэтому я могу легко запросить ее на dynamodb (например, (lat <: latboundary1 AND lat>: latboundary 2) AND (long <: longboundary1 AND long>: longboundary 2))

+0

Я не уверен, правильно ли я понял, но почему бы вам просто не вычислить эти границы самостоятельно? – birnbaum

+0

Привет! Спасибо за ответ. Я не уверен в формулах, которые вижу, но если я собираюсь вычислить, это правильно? [BoundingCoordinates] (http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates) – taptipblard

+0

Эй, там! Вы выяснили решение этого? Мне интересно то же самое, хаха. –

ответ

6

This nodejs library предоставляет функцию, которая вычисляет ограничительную рамку на основе точки и радиуса. Вы можете использовать возвращенные точки SW и NE для вашего запроса.

.boundingCoordinates (distance, radius, inKilometers): вычисляет граничные координаты расстояния от точки и возвращает массив с точками SW и NE ограничивающего прямоугольника. Если радиус не предусмотрен, радиус Земли будет использоваться. Расстояние рассчитывается в милях, если inKilometers is true

+0

Привет, спасибо за ответ. Это помогло. но это не так точно, как рендеринг в gmaps. например: HTTP: //beta.doc.sg.s3-website-us-east-1.amazonaws.com/geo_test.html# функция НПМ GeoPoint возвращает массив: 0: [ \t _degLat: 14.385677399028326 \t _degLon: +120,98036575219953 \t _radLat: 0,2510774357427784 \t _radLon: 2,111505712642868 ], 1: [ \t _degLat: +14,394670600971672 \t _degLon: +120,98965024780044 \t _radLat: +0,25123439672698655 \t _radLon: 2,111667757660491 ], ive используется только degLat и degLon массивов 0 и 1. Возможно ли использовать radLat и radLon? – taptipblard

+0

Я не оценил точность, мой прецедент не требует очень высокой точности. Кстати, в библиотеках геоинформационных библиотек упоминается, что расчет основан на [BoundingCoordinates] (http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates). Это вопрос предпочтения, если вы хотите использовать градусы или радианы. –

+0

Вижу, спасибо за помощь – taptipblard

Смежные вопросы