Mam bazę danych Spatialite z punktami. Od czasu do czasu dodawane są teraz punkty. Jaki byłby najłatwiejszy sposób na usunięcie duplikatów na podstawie współrzędnych?
spatialite
Johnnes
źródło
źródło
Myślę, że najłatwiej jest nigdy nie dopuścić do duplikowania. Dodanie unikalnego ograniczenia w polu geometrii. Nie wiem, jak to będzie działać w spatiallicie, ale w postgisie constint porównałby ramki ograniczające, które zanikają pożądany efekt w przypadku punktów.
jeśli nie ma znaczenia, który z duplikatów do usunięcia, możesz zbudować zapytanie, które usuwa wszystkie wiersze o identyfikatorze, którego nie ma w podzapytaniu, które wybiera odrębne geometrie. to samo tutaj, bezpieczne z punktami, ale nie z innymi typami, ponieważ tylko bbox będzie porównywany, a nie faktyczna geometria (jeśli działa tak samo jak postgis).
/ Nicklas
źródło
(wzięty z odpowiedzi Denisa Valeeva tutaj: /programming/3777633/delete-duplicate-rows-dont-delete-all-duplicate )
źródło
W moim przypadku najbardziej efektywnym sposobem jest użycie indeksu przestrzennego z warstwy. Dzięki temu zapytaniu zachowuję tylko 1 geometrię dla każdej nakładającej się funkcji. Zrobiłem test z TIN przekonwertowanym na Linestring.
Aby poprawnie zrozumieć indeksy przestrzenne, tutaj dwa zapytania do konwersji indeksu przestrzennego na wielokąty.
Po sukcesie odzyskaj kolumnę geometrii, aby móc wizualizować w swojej ulubionej przeglądarce:
źródło