- or download this
CREATE TABLE polys (
id INTEGER PRIMARY KEY,
...
CREATE INDEX ix_polys ON polys (xmin, ymin, xmax, ymax)
CREATE INDEX ix_points ON points (x, y)
- or download this
SELECT py.name, py.n, py.ar_x, py.ar_y, pt.id, pt.x, pt.y
FROM polys py JOIN points pt ON
(py.xmin < pt.x AND py.ymin < pt.y AND py.xmax > pt.x AND py.yma
+x > pt.y)
WHERE py.id = ?
- or download this
UPDATE points SET name = ? WHERE id IN (?)
- or download this
sub _pointIsInPolygon {
my ($a_point, $n, $a_x, $a_y) = @_;
...
}
return $side ? 1 : 0;
}
- or download this
>perl test_point_in_poly.pl
5000.10000.15000.20000.25000.30000.35000.40000.45000.50000.55000.60000
+.65000.70000.75000.80000.85000.90000.95000.100000.
processed 100000 polys, updated 2948276 points
Total time: 8451 wallclock secs (6340.54 usr + 200.52 sys = 6541.06 CP
+U)