Je recherche une bonne structure de données fonctionnelles pour stocker des données spatiales (ponctuelles). La structure de données devrait permettre des requêtes epsilon simples pour les points déjà présents. Aussi j'ai besoin de modifier les données assez souvent. Cela signifie que les points peuvent bouger et devraient pouvoir être mis à jour dans la structure de données. Cela peut probablement être géré en utilisant une suppression/ajout normal, mais un vrai mouvement pourrait être plus rapide. Pour l'instant, je pense à utiliser quad/oct-trees (ou plus), car la partie de mouvement devrait être assez facile à faire. Cependant, les quadri-arbres sont connus pour être pires en ce qui concerne l'équilibrage. KD-Trees pourrait être un autre choix, mais la mise à jour semble assez méchant. La plupart des implémentations de structures de données spatiales que je peux trouver sont seulement procédurales et j'utilise un langage fonctionnel.Structure des données spatiales
Répondre
Selon la façon dont vous l'utilisez et rapidement, les points se déplacent, vous pouvez également envisager sweep and prune. Fondamentalement, vous gardez les points triés dans une dimension (disons x). Si les points changent très rarement, le tri par insertion en cours pour chaque étape de la simulation sera très rapide.
(je pense que vos deux suggestions sont déjà très bien, par la voie)
R-Trees et R * -Arbres sont également une autre solution, facile à mettre en œuvre. Voir https://github.com/mariusaeriksen/ocaml-rtree (dans OCaml) pour un exemple. Je les ai utilisés dans une simulation d'évacuation, l'étape de mise à jour n'est pas si lente que cela.
Cela semble plutôt bien, même si j'ai dû arranger quelques choses pour que ça marche. Merci pour l'aide... – LiKao
This old paper par Overmars et van Leeuwen décrit la pseudo quadtree - un quadtree qui peut aussi s'équilibrer comme insertions et suppressions progrès. Le coût amorti des insertions et des suppressions est quelque chose comme O(log^d(n))
et peut même être échangé contre le montant de l'équilibrage effectué (vous pouvez en lire plus à ce sujet dans le document).
- 1. Type de données spatiales
- 2. Umbraco: Le stockage des données spatiales
- 3. Question d'exactitude des données spatiales SQL Server
- 4. Gestion des données spatiales dans CakePHP
- 5. Données spatiales avec mongodb ou cassandra
- 6. SQL Server 2008 - Interrogation de données spatiales
- 7. Vous connaissez des bibliothèques de données spatiales C#?
- 8. serveur sql données spatiales procédure stockée
- 9. TRIGGER basé sur les données spatiales
- 10. Comment représenter les données spatiales à Cassandra
- 11. Carte pour les données spatiales de Microsoft
- 12. Structure des données nécessaires
- 13. Distances spatiales Solr erronées
- 14. Structure des données du calendrier
- 15. Boost.MultiIndex opérations spatiales
- 16. structure de données pour des données tabulaires
- 17. Accès aux données spatiales PostGIS à partir de Rails
- 18. Stockage et traitement de grandes quantités de données temporelles-spatiales
- 19. recherche de distance de données spatiales - options d'optimisation
- 20. Modification de données spatiales avec ArcGIS Server .NET
- 21. Exemple de données spatiales pour Sql Server 2008
- 22. Données spatiales avec SQL Server 2008 et Virtual Earth
- 23. Comment utiliser le type de données spatiales DbGeography avec EF4.1
- 24. C# Dessin Oracle Géométries Spatiales
- 25. Puis-je utiliser des extensions spatiales MYSQL avec sqlalchemy?
- 26. Comment déplacer les données spatiales d'Oracle à Postgres
- 27. Hibernate n'a pas pu charger les données spatiales
- 28. MySQL VS Postgres/POSTGIS support de base de données spatiales
- 29. Erreur lors de l'utilisation de données spatiales dans R
- 30. Requêtes spatiales SQL Server 2008 R2
Juste pour clarifier: une requête epsilon est-elle une requête pour trouver des points qui se trouvent à une distance spécifiée d'un point donné? – aneccodeal