Mercurial > hg > nsaunier > traffic-intelligence
view python/tests/indicators.txt @ 372:349eb1e09f45
Cleaned the methods/functions indicating if a point is in a polygon
In general, shapely should be used, especially for lots of points:
from shapely.geometry import Polygon, Point
poly = Polygon(array([[0,0],[0,1],[1,1],[1,0]]))
p = Point(0.5,0.5)
poly.contains(p) -> returns True
poly.contains(Point(-1,-1)) -> returns False
You can convert a moving.Point to a shapely point: p = moving.Point(1,2) p.asShapely() returns the equivalent shapely point
If you have several points to test, use moving.pointsInPolygon(points, polygon) where points are moving.Point and polygon is a shapely polygon.
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 16 Jul 2013 17:00:17 -0400 |
| parents | 66691c06928c |
| children | 933670761a57 |
line wrap: on
line source
>>> from indicators import * >>> from moving import TimeInterval,Trajectory >>> indic1 = TemporalIndicator('bla', [0,3,-4], TimeInterval(4,6)) >>> indic1.empty() False >>> indic1.getIthValue(1) 3 >>> indic1.getIthValue(3) >>> indic1[6] -4 >>> indic1[7] >>> [v for v in indic1] [0, 3, -4] >>> indic1 = TemporalIndicator('bla', {2:0,4:3,5:-5}) >>> indic1.getIthValue(1) 3 >>> indic1.getIthValue(3) >>> indic1[2] 0 >>> t1 = Trajectory([[0.5,1.5,2.5],[0.5,3.5,6.5]]) >>> indicatorMap([1,2,3], t1, 1) {(1.0, 3.0): 2.0, (2.0, 6.0): 3.0, (0.0, 0.0): 1.0} >>> indicatorMap([1,2,3], t1, 4) {(0.0, 1.0): 3.0, (0.0, 0.0): 1.5}
