Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.1.1

rbush

RBush — ein hochleistungsfähiger, auf R-Bäumen basierender 2D-raumlicher Index für Punkte und Rechtecke.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
175.000
Likes
11
Pub-Punkte
140

Paket installieren

flutter pub add rbush

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

RBush ist ein leistungsstarker R-Baum-basierter räumlicher Index, der für effiziente 2D-geometrische Operationen an Punkten und Rechtecken entwickelt wurde. Er ermöglicht schnelle Bereichsabfragen, Nachbar-Suche und Kollisionsdetektion in Anwendungen mit räumlichen Daten. Für Dart entwickelt, integriert er sich nahtlos in Flutter-Projekte auf allen wichtigen Plattformen. Das Paket eignet sich ideal für Spiele, Kartensysteme und jede Anwendung, die schnelle räumliche Abfragen erfordert. Seine Implementierung ist auf Geschwindigkeit und Speichereffizienz optimiert, wodurch sie für Echtzeit- oder großskalige räumliche Verarbeitung geeignet ist.

Anwendungsfälle

  • Geodaten-Indizierung
  • Kollisionsdetektion von Spielobjekten
  • Kartenbasierte Anwendungen
  • Echtzeit-Näheabfragen
  • Raumbezogene Suchoptimierung

Hauptmerkmale

  • Leistungsstarkes R-Baum-Indizieren
  • Unterstützt Punkte und Rechtecke
  • Für 2D-Raumabfragen optimiert
  • Plattformübergreifende Kompatibilität
  • Geringer Speicherbedarf

Geeignet für

  • Entwickler, die interaktive Karten erstellen
  • Game-Entwickler, die räumliche Kollisionsprüfungen benötigen
  • Anwendungen mit häufigen räumlichen Abfragen
  • leistungskritische geospatial Tools
  • Flutter-Apps, die schnelle 2D-Geometrieoperationen erfordern

Hinweise

  • Am besten geeignet für 2D-Daten nur
  • Nicht ideal für dynamische Datensätze mit häufigen Einfügungen/Löschungen
  • Erfordert sorgfältige Behandlung von Koordinatensystemen
  • Beschränkt auf Punkt- und Rechteckgeometrien
  • Keine integrierte Unterstützung für komplexe Formen oder Polygone

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

RBush

RBush is a high-performance Dart library for 2D spatial indexing of points and rectangles. It's based on an optimized R-tree data structure with bulk insertion support.

Spatial index is a special data structure for points and rectangles that allows you to perform queries like "all items within this bounding box" very efficiently (e.g. hundreds of times faster than looping over all items). It's most commonly used in maps and data visualizations.

Usage

// Create a tree with up to 16 elements in a leaf.
final tree = RBush(16);

// Bulk load elements (empty in this case, so here it's a no-op).
tree.load(<RBushElement>[]);

// Insert a single element.
tree.insert(RBushElement(
  minX: 10, minY: 10,
  maxX: 20, maxY: 30,
  data: 'sample data'
));

// Find the element we've inserted.
final List<RBushElement> found = tree.search(
    RBushBox(minX: 5, minY: 5, maxX: 25, maxY: 25));

// Remove all elements from the tree.
tree.clear();

An optional argument to RBush defines the maximum number of entries in a tree node. 9 (used by default) is a reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.

To store items of a different type, extend from (or instantiate) RBushBase<T>. For example:

class MyItem {
  final String id;
  final LatLng location;
  
  const MyItem(this.id, this.location);
}

final tree = RBushBase<MyItem>(
  maxEntries: 4,
  toBBox: (item) => RBushBox(
    minX: item.location.longitude,
    maxX: item.location.longitude,
    minY: item.location.latitude,
    maxY: item.location.latitude,
  ),
  getMinX: (item) => item.location.longitude,
  getMinY: (item) => item.location.latitude,
);
K Nearest Neighbours

The RBushBase class also includes a knn() method for the nearest neighbours search. This is especially useful when using the r-tree to store point features, like in the example above.

Note that for larger geographical areas the distance would be wrong, since the class uses pythagorean distances (dx² + dy²), not Haversine or great circle.

Tiny Queue and Quick Select

This package also includes ported fast versions of a priority queue and a selection algorithm. These are used internally by the r-tree, but might be useful for you as well.

Upstream

This library is a straight-up port of several JavaScript libraries written by Vladimir Agafonkin:

All of these are published under MIT or ISC licenses.

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden