Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.1.1

rbush

RBush — um índice espacial 2D baseado em R-tree de alto desempenho para pontos e retângulos.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
175 mil
Curtidas
11
Pontos Pub
140

Instalar pacote

flutter pub add rbush

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

RBush é um índice espacial baseado em R-tree de alto desempenho projetado para operações geométricas 2D eficientes em pontos e retângulos. Permite consultas rápidas por intervalo, buscas de vizinho mais próximo e detecção de colisões em aplicações que envolvem dados espaciais. Desenvolvido para Dart, integra-se perfeitamente a projetos Flutter em todas as principais plataformas. O pacote é ideal para jogos, sistemas de mapeamento e qualquer aplicação que exija pesquisas espaciais rápidas. Sua implementação é otimizada para velocidade e eficiência de memória, tornando-o adequado para processamento espacial em tempo real ou em grande escala.

Casos de uso

  • indexação de dados geoespaciais
  • Detecção de colisão de objeto de jogo
  • Aplicações baseadas em mapas
  • Consultas de proximidade em tempo real
  • Otimização de busca espacial

Principais recursos

  • Indexação R-tree de alto desempenho
  • Suporta pontos e retângulos
  • Otimizado para consultas espaciais 2D
  • Compatibilidade multiplataforma
  • Baixo custo de memória

Indicado para

  • Desenvolvedores construindo mapas interativos
  • Desenvolvedores de jogos que precisam de verificações de colisão espacial
  • Aplicações com consultas espaciais frequentes
  • Ferramentas geoespaciais críticas para desempenho
  • Aplicativos Flutter que exigem operações rápidas de geometria 2D

Considerações

  • Mais adequado apenas para dados 2D
  • Não ideal para conjuntos de dados dinâmicos com inserções/exclusões frequentes
  • Requer manuseio cuidadoso dos sistemas de coordenadas
  • Limitado a geometrias de ponto e retângulo
  • Sem suporte embutido para formas complexas ou polígonos

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

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.

Categorias

Repositório-fonte

Projetos que usam este pacote