У меня есть база данных Spatialite с точками. Время от времени теперь очки начисляются. Какой самый простой способ удалить дубликаты на основе координат?
spatialite
Johannes
источник
источник
Я думаю, что самое простое - никогда не допускать дубликат. Добавьте уникальное ограничение на поле геометрии. Я не знаю, как это будет работать в spatiallite, но в postgis ограничение будет сравнивать ограничивающие рамки, которые позволят получить желаемый эффект в случае точек.
если не имеет значения, какой из дубликатов удалить, вы можете создать запрос, удаляющий все строки с идентификатором, который не найден в подзапросе, который выбирает различные геометрии. то же самое здесь, безопасно с точками, но не с другими типами, так как будет сравниваться только bbox, а не фактическая геометрия (если работает так же, как postgis).
/ Никлас
источник
(взято из ответа Дениса Валеева здесь: /programming/3777633/delete-duplicate-rows-dont-delete-all-duplicate )
источник
В моем случае наиболее эффективным способом является использование пространственного индекса из слоя. С помощью этого запроса я сохраняю только 1 геометрию для каждого перекрывающегося объекта. Я сделал тест с TIN, преобразованным в Linestring.
Чтобы правильно понять пространственные индексы, здесь два запроса для преобразования пространственного индекса в полигоны.
В случае успеха восстановите столбец геометрии, чтобы иметь возможность визуализировать его в своем любимом средстве просмотра:
источник