Ich habe eine Spatialite-Datenbank mit Punkten. Von Zeit zu Zeit werden jetzt Punkte hinzugefügt. Was wäre der einfachste Weg, um Duplikate basierend auf den Koordinaten zu entfernen?
spatialite
johannes
quelle
quelle
Ich denke, es ist am einfachsten, das Duplikat niemals einzulassen. Fügen Sie dem Geometriefeld eine eindeutige Einschränkung hinzu. Ich weiß nicht, wie das bei Spatiallit funktionieren wird, aber bei Postgis würde die Einschränkung die Begrenzungsrahmen vergleichen, die bei Punkten den gewünschten Effekt erzielen.
Wenn es keine Rolle spielt, welches der Duplikate entfernt werden soll, können Sie eine Abfrage erstellen, die alle Zeilen mit der ID löscht, die nicht in einer Unterabfrage gefunden wird, in der die verschiedenen Geometrien ausgewählt werden. das gleiche hier, sicher mit Punkten, aber nicht mit anderen Typen, da nur die bbox verglichen wird, nicht die tatsächliche Geometrie (wenn sie genauso funktioniert wie Postgis).
/ Nicklas
quelle
(Aus der Antwort von Denis Valeev hier: /programming/3777633/delete-duplicate-rows-dont-delete-all-duplicate )
quelle
In meinem Fall ist es am effizientesten, den räumlichen Index der Ebene zu verwenden. Bei dieser Abfrage behalte ich nur 1 Geometrie für jedes überlappende Feature. Ich habe den Test mit einer in Linestring konvertierten TIN durchgeführt.
Um räumliche Indizes richtig zu verstehen, werden hier zwei Abfragen durchgeführt, um räumliche Indizes in Polygone umzuwandeln.
Stellen Sie bei Erfolg die Geometriespalte wieder her, um sie in Ihrem bevorzugten Viewer zu visualisieren:
quelle