Оптимизация Геокода Карт Bing и запросов RouteMapping

У меня есть база данных, содержащая заказы, и каждый порядок имеет связанное расположение. Currentl, когда пользователь зарегистрирован, я использую Карты Bing API, чтобы геокодировать каждое местоположение порядка и затем вычислить проезжающее расстояние зарегистрированному пользователю. На основе этих расстояний пользователь через dropdownbox может затем указать максимальные расстояния с результатами, отображенными в gridview. Однако больше чем с 100 заказами процесс становится крайне медленным. Я ценил бы некоторые подсказки относительно оптимизации любого запросы резкого звука, возможно кэширование результатов (таким образом, они могут быть снова использованы, не повторно получая доступ к API карт резкого звука), или используя Ajax к так или иначе фоновому процессу заказы.Спасибо.

7
задан Rotimi 15 February 2010 в 17:11
поделиться

2 ответа

Что вы, вероятно, захотите сделать, так это создать минимальное связующее дерево, предполагая, что у вас есть то же место назначения для пользователя. MST по-прежнему O (V ^ 2), но вы эффективно кэшируете многие из кратчайших путей, поскольку многие из них будут повторно использовать одни и те же дороги.

Другой вариант - сначала оценить, используя линейные расстояния вместо миль дороги, но все зависит от того, что вы отправляете обратно пользователю.

Удачи!

0
ответ дан 7 December 2019 в 20:36
поделиться

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

Я планирую хранить широту и долготу для каждого элемента в своей базе данных (поэтому геокодируется только один раз). Чтобы выбрать элементы на определенном расстоянии от точки, я вычисляю числа широты и долготы, которые составляют «x» миль к северу / югу / востоку / западу от моей центральной точки. Затем выбор превращается в простой вопрос выбора записей, где значения широты и долготы находятся между значениями моего квадрата.

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

Я не знаком с лицензированием Bing, но если я правильно помню о Google, вам нужна платная (коммерческая) лицензия для хранения результатов геокодирования. И это недешево. Так что это может свести на нет ценность, которую могло иметь мое предложение: (

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

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

1
ответ дан 7 December 2019 в 20:36
поделиться
Другие вопросы по тегам:

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