Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev0.0.2

turf_pip

Uma pequena biblioteca para detectar se um ponto está dentro de um polígono

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
162 mil
Curtidas
1
Pontos Pub
150

Instalar pacote

flutter pub add turf_pip

Visão geral do pacote

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

turf_pip é uma biblioteca leve em Dart projetada para determinar se um ponto geográfico está dentro de um polígono. Implementa o algoritmo ponto-em-polígono, amplamente utilizado em análises espaciais e aplicações de mapeamento. O pacote suporta múltiplas plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-o adequado para lógica geoespacial multiplataforma. É ideal para casos de uso que envolvem serviços baseados em localização, interações com mapas ou validação de dados espaciais. A biblioteca é simples de integrar por meio do gerenciador de pacotes pub do Flutter.

Casos de uso

  • Validação de localização geográfica
  • Filtragem baseada em mapa
  • análise de dados espaciais
  • Recursos de mapa interativo
  • Aplicações orientadas por localização
  • processamento de GIS

Principais recursos

  • Detecção de ponto em polígono
  • Suporte multiplataforma
  • Leve e rápido
  • Integração fácil com o Flutter
  • Implementação pura em Dart
  • Sem dependências externas

Indicado para

  • Desenvolvedores Flutter trabalhando com mapas
  • Aplicações que exigem consultas espaciais
  • lógica geoespacial de backend ou frontend
  • Aplicativos móveis e web com recursos de localização
  • Desenvolvedores procurando utilitários de tamanho mínimo

Considerações

  • Limitado a geometria de ponto e polígono 2D
  • Não suporta geometrias complexas, como multipolígonos
  • Sem transformação de coordenadas ou manipulação de projeção
  • Supõe-se que as coordenadas de entrada estão no formato WGS84 (lat/lon)
  • Não otimizado para verificações em tempo real de alta frequência

README original

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

turf_pip

A small library for detecting if a point lies inside a polygon.

A port of: point-in-polygon-hao NPM package.

Point in polygon library based on the paper "Optimal Reliable Point-in-Polygon Test and Differential Coding Boolean Operations on Polygons" by Hao.

Features

  • Works on polygons with holes
  • Works with degenerate/self-intersecting polyons
  • Returns PointInPolygonResult.isOnEdge if on the edge, PointInPolygonResult.isInside if inside and PointInPolygonResult.isOutside if outside
  • Not effected by floating point errors
Usage

Install via dart pub add turf_pip

import 'package:turf_pip/turf_pip.dart';

const polygon = Polygon(coordinates:[
  [
    Position.of([1, 1]),
    Position.of([1, 2]),
    Position.of([2, 2]),
    Position.of([2, 1]),
    Position.of([1, 1])
  ]
]);

pointInPolygon(Point(coordinates: Position.of([ 1.5, 1.5 ]), polygon)
// => PointInPolygonResult.isInside

pointInPolygon(Point(coordinates: Position.of([ 4.9, 1.2 ]), polygon)
// => PointInPolygonResult.isOutside

pointInPolygon(Point(coordinates: Position.of([1, 2]), polygon)
// => PointInPolygonResult.isOnEdge

Note: The input polygon format aligns with the GeoJson specification for polygons. This means that the first and last coordinate in a polygon must be repeated, if not this library will throw an error.

var polygonWithHole = Polygon(coordinates:([
  [
    Position.of([0, 0]),
    Position.of([1, 0]),
    Position.of([1, 1]),
    Position.of([0, 1]),
    Position.of([0, 0]),
  ],
  [
    Position.of([0.1, 0.1]),
    Position.of([0.1, 0.9]),
    Position.of([0.9, 0.9]),
    Position.of([0.9, 0.1]),
    Position.of([0.1, 0.1]),
  ]
]);

The library does not support multi-polygons.

Comparisons

Some rough comparisons to similar libraries. While point-in-polygon is slightly faster in most cases it does not support polygons with holes or degenerate polygons.

// For a point in a much larger geometry (700+ vertices)
point-in-poly-hao x 474,180 ops/sec ±0.55% (93 runs sampled)
point-in-polygon x 489,649 ops/sec ±0.75% (91 runs sampled)
robust-point-in-polygon x 376,268 ops/sec ±0.79% (89 runs sampled)
// For a point in bounding box check
point-in-poly-hao x 29,365,704 ops/sec ±1.30% (90 runs sampled)
point-in-polygon x 42,339,450 ops/sec ±0.78% (95 runs sampled)
robust-point-in-polygon x 20,675,569 ops/sec ±0.65% (95 runs sampled)
Algorithm

This library is based on the paper Optimal Reliable Point-in-Polygon Test and Differential Coding Boolean Operations on Polygons

Other notes
  • Works irrespective of winding order of polygon
  • Does not appear to be effected by floating point errors compared to point-in-polygon or robust-point-in-polygon

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote