Как действительно “Ищет Ближайшим Местоположениям работу”?

Вы можете иметь частные конструкторы дел, но выставлять публичные активные шаблоны с такими же именами. Вот как вы можете определить и использовать их (функции создания для краткости опущены):

module Helpers =
    type ValidValue = 
        private
        | ValidInt of int
        | ValidString of string

    let (|ValidInt|ValidString|) = function
        | ValidValue.ValidInt i -> ValidInt i
        | ValidValue.ValidString s -> ValidString s

module Usage =
    open Helpers

    let validValueToString = function
        | ValidInt i -> string i
        | ValidString s -> s
    //          
8
задан SW4 24 April 2014 в 08:10
поделиться

8 ответов

Много геопространственных платформ выручит Вас с этим. В геопространственном мире почтовый индекс является просто "полигоном", который является просто областью на карте, которая определяет ясные границы (не полигон в математическом смысле). В SQL пространственный 2008, например, можно создать новый полигон на основе исходного полигона. Таким образом, можно динамично создать полигон, который является почтовым индексом, расширенным определенным расстоянием в каждой точке. Это принимает броскую форму почтового индекса во внимание. С адресом Это легко, потому что Вы просто создаете полигон, который является кругом вокруг одной точки. Можно затем сделать, запросы дают Вам всем точки в новом полигоне, который Вы создали в любом методе.

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

Вы видите некоторые основные примеры здесь, чтобы в общих чертах понять то, о чем я говорю.

6
ответ дан 5 December 2019 в 15:27
поделиться

Существует стандарт zipode/location доступная база данных. Вот одна версия в формате Доступа, который включает lat/long индекса, а также другой информации. Можно затем использовать расширения PostgreSQL GIS, чтобы сделать поиски на местоположениях, например.

(предполагающий, конечно, что Вы извлекаете дб доступа и вставляете в более дружественную базу данных как PostgreSQL),

4
ответ дан 5 December 2019 в 15:27
поделиться

Я думаю, что это довольно универсально. Они берут адрес или индекс и заходят, это к "координате карты" (отличается в зависимости от реализации, вероятно, lat/long), и затем использование "координат карты" вещей в базе данных, легко вычислить расстояние.

Обратите внимание, что некоторые плохие реализации преобразовывают индекс в в координату, представляющую центр области индекса, которая иногда дает плохие результаты.

0
ответ дан 5 December 2019 в 15:27
поделиться

Точно так же, как Вы сказали. Преобразуйте адрес/ZIP в 2D мировую координату и сравните его с другими известными местоположениями. Выберите ближайшее.:) Я думаю, что некоторый DB (Oracle, MSSQL 2008) даже предлагают некоторые функции, которые могут помочь, но я никогда не использовал их.

0
ответ дан 5 December 2019 в 15:27
поделиться

Во-первых, Вы Геокод адрес, переводя его в (обычно) широту и долготу. Затем Вы делаете ближайший соседний запрос на своей базе данных для интересных мест.

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

1
ответ дан 5 December 2019 в 15:27
поделиться

Ваши мысли о том, как сделать это, - то, как я, вероятно, сделал бы это. Можно геокодировать co-oridinated для zip и затем сделать вычисления на основе этого. Я знаю SQL Server, 2008 имеет некоторую специальную новую функциональность для помощи выполнению запросов на основе их, геокодировал координаты lon/lat.

0
ответ дан 5 December 2019 в 15:27
поделиться

Существуют фактические геометрические алгоритмы и/или datastructures, которые поддерживают ниже O (...) ближайшие запросы местоположения на точке, строке и/или данных региона.

См. эту книгу как пример информации о некоторых из них, как: Диаграммы Вороного, деревья квадрантов, и т.д.

Однако я думаю, что другие ответы здесь являются правильными в большинстве случаев, что Вы находите в программном обеспечении сегодня:

  1. геокод (единственная точка в) область поиска
  2. запрос ограничительной рамки для получения начальной приблизительной оценки
  3. в сортировке/выборе памяти
0
ответ дан 5 December 2019 в 15:27
поделиться

У меня была таблица, что я буду компилировать таблицу базы данных каждые 6 месяцев, она содержала 3 столбца, я использовал ее для нескольких клиентов в Австралии, она содержала о 40k строк, очень легких для выполнения запроса. это довольно быстро, если просто надеющийся успешно начинать что-то для клиента

  1. Индекс от
  2. Индекс к
  3. Расстояние

    ВЫБЕРИТЕ Store_ID, Store_AccountName, Store_PostalCode, Store_Address, Store_Suburb, Store_Phone, Store_State, Code_Distance ОТ Хранилища, (ВЫБЕРИТЕ Code_To Как Code_To, Code_Distance ИЗ Кода ГДЕ Code_From = @PostalCode ОБЪЕДИНЕНИЕ ВЕСЬ ИЗБРАННЫЙ Code_From Как Code_To, Code_Distance ИЗ Кода ГДЕ Code_To = @PostalCode ОБЪЕДИНЕНИЕ ВЕСЬ ВЫБОР @PostalCode Как Code_To, 0 Как Code_Distance) Как Код, ГДЕ Store_PostalCode = Code_To И Code_Distance <= @Distance ORDER BY Code_Distance

Может быть много оптимизации, которую Вы могли сделать для ускорения этого запроса!.

0
ответ дан 5 December 2019 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: