#r #distance #wgs84
#r #расстояние #wgs84
Вопрос:
Итак, у меня есть довольно простой вопрос относительно размера моих данных. Я пытаюсь вычислить расстояние между всеми наборами точек (WGS84) в наборе данных (56000).
https://www.rdocumentation.org/packages/geosphere/versions/1.5-10/topics/distm Согласно документации: distm(x,y,fun=»») если отсутствует, y совпадает с x
mydist<-distm(coordinates(mySpatialObject), fun="distHaversine")
Это привело меня к Ошибке, которая отсутствовала. Поэтому я решил, что смогу легко обойти эту проблему.
distm(coordinates(WeedClim.plot),coordinates(WeedClim.plot), fun="distHaversine")
Это приводит не только к зависанию R: Studio, но и всего моего компьютера. Мне уже дважды приходилось делать полную перезагрузку, и я не хочу проходить через это снова, потому что это моя диссертация, и я боюсь сломать что-то еще в проекте XD.
Есть идеи / решения? Есть ли лучшая функция, которая дает мне матрицу расстояний из набора координат?
Спасибо!
Комментарии:
1. 56000 ^ 2/2 — это 1,568,000,000 расстояний для вычисления. Это займет много памяти и много времени — сколько памяти у вашего компьютера? Вы уверены, что вам нужно рассчитать более 1 триллиона расстояний для достижения вашей цели?
2. Ну, в какой-то момент мне понадобится матрица расстояний. Мне это не нужно для расстояний прямо сейчас, но конечная distancem atrix будет более сложной (т. Е. Содержащей более 2 значений). Поэтому мне нужно будет поговорить с «командой гиков» на работе.
3. Спасибо за продолжение. Для справки, в R 1 миллион числовых значений занимает около 8 МБ памяти (
print(object.size(x = runif(1e6)), units = "MB")
), поэтому при умножении на 1000 1 миллиард значений займет около 8 ГБ, а 1 триллион значений — около 8 ТБ. Если вам нужно 2 значения для каждой пары из 56 000 сайтов, это около 3 триллионов значений, то есть 24 ТБ памяти. Самый большой вариант памяти AWS имеет 24 ТБ памяти, но доступен только по 3-летнему контракту. Я не могу найти точную цену, но версия на 12 ТБ стоит $ 802,575 в течение 3 лет — вы, вероятно, будете смотреть как минимум в два раза больше за 24 ТБ.4. Итак, об этом в принципе не может быть и речи. Вы могли бы выполнять вычисления в кластере гораздо более экономично и компилировать результаты где-нибудь на диске, но я все еще сомневаюсь, как вы сможете эффективно использовать результаты объемом 24 ТБ. Вероятно, вам потребуется разделить его и настроить базу данных…
5. Но я думаю, что реальным решением будет работать в обратном направлении от вашей цели и найти решение меньшего масштаба. Если вы можете заранее разделить точки и перейти, скажем, к 20,0000 расстояниям, которые вы хотите в парах, у нас осталось 400 миллионов записей — все еще больших, но более выполнимых. Может быть, вы можете сгруппировать точки вместе, может быть, вы можете выполнять свои вычисления для подмножества данных, большая часть статистики настроена для случаев, когда у вас нет полных данных, поэтому найдите способ использовать меньше данных.