J'ai une base de données Spatialite avec des points. De temps en temps maintenant, des points sont ajoutés. Quelle serait la façon la plus simple de supprimer les doublons en fonction des coordonnées?
spatialite
johannes
la source
la source
Je pense que le plus simple est de ne jamais laisser le doublon entrer. Ajouter une contrainte unique sur le champ géométrique. Je ne sais pas comment cela fonctionnera dans la spatiallite mais en postgis la constrint comparerait les boîtes englobantes qui plongeront l'effet voulu dans le cas des points.
si le doublon à supprimer n'a pas d'importance, vous pouvez créer une requête qui supprime toutes les lignes dont l'ID ne se trouve pas dans une sous-requête qui sélectionne les géométries distinctes. Même chose ici, en sécurité avec des points mais pas avec d'autres types car seule la bbox sera comparée et non la géométrie réelle (si elle fonctionne de la même manière que les postgis).
/ Nicklas
la source
(extrait de la réponse de Denis Valeev ici: /programming/3777633/delete-duplicate-rows-dont-delete-all-duplicate )
la source
Dans mon cas, le moyen le plus efficace consiste à utiliser l'index spatial de la couche. Avec cette requête, je ne conserve qu'une seule géométrie pour chaque entité qui se chevauchent. J'ai fait le test avec un TIN converti en Linestring.
Pour comprendre correctement les index spatiaux, voici deux requêtes pour convertir l'index spatial en polygones.
En cas de succès, récupérez la colonne de géométrie pour pouvoir visualiser dans votre visionneuse préférée:
la source