Самый эффективный путь к хранению геолокаций в базе данных

Не уверен, что я полностью понял ваш вопрос, но я думаю, это то, что вы ищете:

sum([[item for item in generator] for generator in list_of_gens], [])

Это берет каждый генератор и составляет из него список, а затем использует сумму для объединения эти списки.

5
задан Vasil 16 November 2008 в 15:32
поделиться

6 ответов

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

Если Вы не находитесь в серьезной потребности точности, необходимо действительно только должны быть сохранить 5 + значения после десятичной точки.

Эта Спецификация Хранения данных Долготы Широты дает диаграмму, которая показывает точность по сравнению с десятичными разрядами.

# decmal places, example, precision
5    51.22135    ± 0.8 m
6   50.895132   ± 0.08 m

7 удался бы, чтобы быть 8 мм или приблизительно 0,314 дюймов.

6
ответ дан 14 December 2019 в 01:20
поделиться

Стандарт здесь. Хотя это - слишком много для простого варианта использования такой как Ваш, это может дать Вам некоторое представление о том, почему может на самом деле быть лучше пойти и использовать некоторые совместимые пакеты OGC, которые много баз данных имеют в наше время, даже MySQL.

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

1
ответ дан 14 December 2019 в 01:20
поделиться

AFAIK, SQL Server MS 2008 имеет поддержку GeoLocations как DataType. Я знаю, что Вы используете MySQL, но просто думали, что я упомяну это по этому вопросу.

1
ответ дан 14 December 2019 в 01:20
поделиться

ответ vfilby является, вероятно, лучшим, однако многие, RDBMS имеет лучшую поддержку индексации символьных полей, чем индексация плотного целого числа (или плавающая точка) поля.

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

Снова: Если у Вас нет большого количества данных, или Вы не используете RDBMS как это, сделайте что предложенный vfilby.

1
ответ дан 14 December 2019 в 01:20
поделиться

После ответа @vfilby, почему бы не сохранить две половины числа как два отдельных международных типа?

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

Я всегда только что использовал 4-байтовые столбцы с плавающей точкой для сохранения широты и долготы, потому что ошибка в точности намного меньше, чем точность устройств, которые мы используем. Это не может иметь место с Вашим приложением, но если это - Вы, не может получить намного больше агностика RDBMS, чем плавание.

0
ответ дан 14 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

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