Skip to content

Geographic utilities built to aid the development and testing of a social network application

Notifications You must be signed in to change notification settings

isterin/geo-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Currently there are two helpful utility functions here.

  1. Point-in-polygon test

  2. Random point generator. Right now it performs better if the polygon covers a large portion of its bounding box. The test is performed using this algorithm.

    1. Generate a bounding box
    2. Generate a random point within this bounding box
    3. Perform a point-in-polygon test on this point. If the test succeeds, return the point, if not loop to step a and perform again.

    ** If anyone know of a better way to do above, let me know. I'd love to hear some better ideas especially when dealing with complex concave polygons.

USAGE:

Point-in-polygon test:

polygon = Polygon((0,0), (0,4), (4,4), (4,0), (0,0))
point = geo.Point(2,2)
assert polygon.contains(geo.Point(2,2))

Random point within a polygon

polygon = Polygon(  geo.LatLon(42.39321,-82.92114),
                      geo.LatLon(42.39194,-82.91669),
                      geo.LatLon(42.39147,-82.91796),
                      geo.LatLon(42.39090,-82.91974),
                      geo.LatLon(42.39321,-82.92114))

point = polygon.random_point()
assert polygon.contains(point)

INSTALLATION: You can install the package either by cloning this repository and running the standard

python setup.py install

or install from pypi

pip install geo-utils

About

Geographic utilities built to aid the development and testing of a social network application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages