polygon-lookup - Fast point-in-polygon intersection for large numbers of polygons.

  •        3

A data-structure for performing fast, accurate point-in-polygon intersections against (potentially very large) sets of polygons. PolygonLookup builds an R-tree, or bounding-box spatial index, for its polygons and uses it to quickly narrow down the set of candidate polygons for any given point. If there are any ambiguities, it'll perform point-in-polygon intersections to identify the one that really intersects. PolygonLookup operates entirely in memory, and works best for polygons with little overlap. Narrows down the candidate polygons by bounding-box, and then performs point-in-polygon intersections to identify the first n container polygon (with n = limit, even if more polygons really do intersect).



lodash : ^4.14.2
point-in-polygon : 1.0.1
rbush : 2.0.1



Related Projects

node-maxmind - Maxmind GEO Lookup

  •    Javascript

Pure Javascript module for Geo IP lookup using Maxmind binary databases (aka mmdb or geoip2). Fastest Maxmind lookup library available - up to 17,000% faster than other libraries. Module has 100% test coverage with comprehensive test suite. It natively works with binary Maxmind database format and doesn't require any "CSV - {specific lib format}" conversions as some other modules do. Maxmind binary databases are highly optimized for size and performance so there's no point working with other than that format. You might want to use geolite2 module with free geo databases. Alternatively, free databases available for download here. If you need better accuracy you should consider buying commercial subscription.



The Clipper library primarily performs boolean clipping (intersection, union, difference and xor) on polygons in 2D space. There are no restrictions on either the number nor the type of polygon that can be clipped. They can have holes, be self-intersecting and even have coincident edges. The library also performs polygon offsetting.

RED_HAWK - All in one tool for Information Gathering, Vulnerability Scanning and Crawling

  •    PHP

RED HAWK's CMS Detector currently is able to detect the following CMSs (Content Management Systems) in case the website is using some other CMS, Detector will return could not detect. Want to contribute to RED HAWK or point out something wrong? Just create a new issue here: https://github.com/Tuhinshubhra/RED_HAWK/issues/new I'd love to hear from you.

Reverse Phone Lookup

  •    Python

Written in python, Reverse Phone Lookup is a simple program that when given a phone number, will search the white pages and display the information returned (First Name, Last Name, Address, City, State, and Zip code). Note: This program no longer works.

Skipper - An HTTP router and reverse proxy for service composition

  •    Go

Skipper is an HTTP router and reverse proxy for service composition. It's designed to handle >100k HTTP route definitions with detailed lookup conditions, and flexible augmentation of the request flow with filters. It can be used out of the box or extended with custom lookup, filter logic and configuration sources.Skipper provides a default executable command with a few built-in filters. However, its primary use case is to be extended with custom filters, predicates or data sources.

polylabel - A fast algorithm for finding the pole of inaccessibility of a polygon (in JavaScript and C++)

  •    C++

A fast algorithm for finding polygon pole of inaccessibility, the most distant internal point from the polygon outline (not to be confused with centroid), implemented as a JavaScript library. Useful for optimal placement of a text label on a polygon.This is an iterative grid-based algorithm, which starts by covering the polygon with big square cells and then iteratively splitting them in the order of the most promising ones, while aggressively pruning uninteresting cells.

FCCurrentLocationGeocoder - iOS Geocoder for forward geocode and reverse geocode user's current location using a block-based syntax

  •    Objective-C

iOS Geocoder on top of LocationManager and CLGeocoder for forward geocode and reverse geocode user's current location using a block-based syntax. It can also be used to geocode the user's approximate location (always country, almost always city) without asking for permission (using a free GeoIP service).



Reverse lookup plugin for TapiRex, which makes it possible to lookup caller information for incoming calls from a google account using Google Contacts.

earcut - The fastest and smallest JavaScript polygon triangulation library for your WebGL apps

  •    Javascript

The fastest and smallest JavaScript polygon triangulation library. 2.5KB gzipped.The library implements a modified ear slicing algorithm, optimized by z-order curve hashing and extended to handle holes, twisted polygons, degeneracies and self-intersections in a way that doesn't guarantee correctness of triangulation, but attempts to always produce acceptable results for practical data.

point-in-polygon - determine if a point is inside a polygon

  •    Javascript

Determine if a point is inside of a polygon.This module casts a ray from the inquiry point and counts intersections, based on this algorithm.

geojson-google-maps - A simple utility to convert GeoJSON objects to Google Maps vector objects (Marker, Polyline, Polygon)

  •    Javascript

Google Maps now has proper support for GeoJSON, so you should probably use that instead. GeoJSON is used to create Google Maps API v3 vectors (Marker, Polyline, Polygon) from GeoJSON objects (Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, Feature, GeometryCollection, FeatureCollection). Specifically, I'm translating some GeoJSON types to arrays of Google Maps vectors as there aren't really Google Maps equivalents of MultiPoint, MultiLineString, etc.

polypartition - Tiny Polygon Partitioning and Triangulation Library

  •    C++

PolyPartition is a lightweight C++ library for polygon partition and triangulation. PolyPartition implements multiple algorithms for both convex partitioning and triangulation. Different algorithms produce different quality of results (and their complexity varies accordingly). The implemented methods/algorithms with their advantages and disadvantages are outlined below. For input parameters and return values see method declarations in polypartition.h. All methods require that the input polygons are not self-intersecting, and are defined in the correct vertex order (conter-clockwise for non-holes, clockwise for holes). Polygon vertices can easily be ordered correctly by calling TPPLPoly::SetOrientation method.

Sharepoint lookup with picker


Microsoft Sharepoint Server 2007 lookup control with element picker for custom list. This control is useful if you need to choose lookup data from large lists. This control supports single and multi select mode.

Advanced Lookup

  •    Javascript

Yet another custom lookup field. Advanced Lookup uses SharePoint 2010 dialog framework and supports Ajax autocomplete. Pop up dialog page could be any custom web part page containing AdvancedLookupDialogWebPart web part which should be connected to any other web parts on the page

Gisgraphy - Geocoding and Geolocalisation webservices for Geonames, Openstreetmap, and quattroshapes data

  •    Java

Gisgraphy provides forward and reverse geocoding, geolocalisation, and vehicle tracking web services. Gisgraphy uses a unique, worldwide and consolidated Addresses / POIs database (+500 million entries), based on open data (Openstreetmap, Openaddresses, Geonames and Quattroshapes).


  •    C++

FTGL is a free cross-platform Open Source C++ library that uses Freetype2 to simplify rendering fonts in OpenGL applications. FTGL supports bitmaps, pixmaps, texture maps, outlines, polygon mesh, and extruded polygon rendering modes.

Polygon Pathfinding


This library provides a simple interfacing for pathfinding (using A*) from one point to another inside of a polygon. Includes C# and HTML5/JavaScript versions.


  •    Javascript

Zoopla inspired freehand polygon creation using Leaflet.js.