#!sqlite3## This is a visual test case for the geopoly virtual table.## Run this script in the sqlite3 CLI, and redirect output into an# HTML file. This display the HTML in a webbrowser.#/* Test data.** Lots of shapes to be displayed over a 1000x800 canvas.*/CREATE TEMP TABLE basis(name TEXT, jshape TEXT);INSERT INTO basis(name,jshape) VALUES('box-20','[[0,0],[20,0],[20,20],[0,20],[0,0]]'),('house-70','[[0,0],[50,0],[50,50],[25,70],[0,50],[0,0]]'),('line-40','[[0,0],[40,0],[40,5],[0,5],[0,0]]'),('line-80','[[0,0],[80,0],[80,7],[0,7],[0,0]]'),('arrow-50','[[0,0],[25,25],[0,50],[15,25],[0,0]]'),('triangle-30','[[0,0],[30,0],[15,30],[0,0]]'),('angle-30','[[0,0],[30,0],[30,30],[26,30],[26,4],[0,4],[0,0]]'),('star-10','[[1,0],[5,2],[9,0],[7,4],[10,8],[7,7],[5,10],[3,7],[0,8],[3,4],[1,0]]');CREATE TEMP TABLE xform(A,B,C,D,clr);INSERT INTO xform(A,B,clr) VALUES(1,0,'black'),(0.707,0.707,'blue'),(0.5,0.866,'red'),(-0.866,0.5,'green');CREATE TEMP TABLE xyoff(id1,id2,xoff,yoff,PRIMARY KEY(id1,id2,xoff,yoff))WITHOUT ROWID;INSERT INTO xyoff VALUES(1,1,811,659);INSERT INTO xyoff VALUES(1,1,235,550);INSERT INTO xyoff VALUES(1,1,481,620);INSERT INTO xyoff VALUES(1,1,106,494);INSERT INTO xyoff VALUES(1,1,487,106);INSERT INTO xyoff VALUES(1,1,817,595);INSERT INTO xyoff VALUES(1,1,240,504);INSERT INTO xyoff VALUES(1,1,806,457);INSERT INTO xyoff VALUES(1,1,608,107);INSERT INTO xyoff VALUES(1,1,768,662);INSERT INTO xyoff VALUES(1,2,808,528);INSERT INTO xyoff VALUES(1,2,768,528);INSERT INTO xyoff VALUES(1,2,771,171);INSERT INTO xyoff VALUES(1,2,275,671);INSERT INTO xyoff VALUES(1,2,326,336);INSERT INTO xyoff VALUES(1,2,690,688);INSERT INTO xyoff VALUES(1,2,597,239);INSERT INTO xyoff VALUES(1,2,317,528);INSERT INTO xyoff VALUES(1,2,366,223);INSERT INTO xyoff VALUES(1,2,621,154);INSERT INTO xyoff VALUES(1,3,829,469);INSERT INTO xyoff VALUES(1,3,794,322);INSERT INTO xyoff VALUES(1,3,358,387);INSERT INTO xyoff VALUES(1,3,184,444);INSERT INTO xyoff VALUES(1,3,729,500);INSERT INTO xyoff VALUES(1,3,333,523);INSERT INTO xyoff VALUES(1,3,117,595);INSERT INTO xyoff VALUES(1,3,496,201);INSERT INTO xyoff VALUES(1,3,818,601);INSERT INTO xyoff VALUES(1,3,541,343);INSERT INTO xyoff VALUES(1,4,603,248);INSERT INTO xyoff VALUES(1,4,761,649);INSERT INTO xyoff VALUES(1,4,611,181);INSERT INTO xyoff VALUES(1,4,607,233);INSERT INTO xyoff VALUES(1,4,860,206);INSERT INTO xyoff VALUES(1,4,310,231);INSERT INTO xyoff VALUES(1,4,727,539);INSERT INTO xyoff VALUES(1,4,660,661);INSERT INTO xyoff VALUES(1,4,403,133);INSERT INTO xyoff VALUES(1,4,619,331);INSERT INTO xyoff VALUES(2,1,712,578);INSERT INTO xyoff VALUES(2,1,567,313);INSERT INTO xyoff VALUES(2,1,231,423);INSERT INTO xyoff VALUES(2,1,490,175);INSERT INTO xyoff VALUES(2,1,898,353);INSERT INTO xyoff VALUES(2,1,589,483);INSERT INTO xyoff VALUES(2,1,188,462);INSERT INTO xyoff VALUES(2,1,720,106);INSERT INTO xyoff VALUES(2,1,793,380);INSERT INTO xyoff VALUES(2,1,154,396);INSERT INTO xyoff VALUES(2,2,324,218);INSERT INTO xyoff VALUES(2,2,120,327);INSERT INTO xyoff VALUES(2,2,655,133);INSERT INTO xyoff VALUES(2,2,516,603);INSERT INTO xyoff VALUES(2,2,529,572);INSERT INTO xyoff VALUES(2,2,481,212);INSERT INTO xyoff VALUES(2,2,802,107);INSERT INTO xyoff VALUES(2,2,234,509);INSERT INTO xyoff VALUES(2,2,501,269);INSERT INTO xyoff VALUES(2,2,349,553);INSERT INTO xyoff VALUES(2,3,495,685);INSERT INTO xyoff VALUES(2,3,897,372);INSERT INTO xyoff VALUES(2,3,350,681);INSERT INTO xyoff VALUES(2,3,832,257);INSERT INTO xyoff VALUES(2,3,778,149);INSERT INTO xyoff VALUES(2,3,683,426);INSERT INTO xyoff VALUES(2,3,693,217);INSERT INTO xyoff VALUES(2,3,746,317);INSERT INTO xyoff VALUES(2,3,805,369);INSERT INTO xyoff VALUES(2,3,336,585);INSERT INTO xyoff VALUES(2,4,890,255);INSERT INTO xyoff VALUES(2,4,556,565);INSERT INTO xyoff VALUES(2,4,865,555);INSERT INTO xyoff VALUES(2,4,230,293);INSERT INTO xyoff VALUES(2,4,247,251);INSERT INTO xyoff VALUES(2,4,730,563);INSERT INTO xyoff VALUES(2,4,318,282);INSERT INTO xyoff VALUES(2,4,220,431);INSERT INTO xyoff VALUES(2,4,828,336);INSERT INTO xyoff VALUES(2,4,278,525);INSERT INTO xyoff VALUES(3,1,324,656);INSERT INTO xyoff VALUES(3,1,625,362);INSERT INTO xyoff VALUES(3,1,155,570);INSERT INTO xyoff VALUES(3,1,267,433);INSERT INTO xyoff VALUES(3,1,599,121);INSERT INTO xyoff VALUES(3,1,873,498);INSERT INTO xyoff VALUES(3,1,789,520);INSERT INTO xyoff VALUES(3,1,656,378);INSERT INTO xyoff VALUES(3,1,831,601);INSERT INTO xyoff VALUES(3,1,256,471);INSERT INTO xyoff VALUES(3,2,332,258);INSERT INTO xyoff VALUES(3,2,305,463);INSERT INTO xyoff VALUES(3,2,796,341);INSERT INTO xyoff VALUES(3,2,830,229);INSERT INTO xyoff VALUES(3,2,413,271);INSERT INTO xyoff VALUES(3,2,269,140);INSERT INTO xyoff VALUES(3,2,628,441);INSERT INTO xyoff VALUES(3,2,747,643);INSERT INTO xyoff VALUES(3,2,584,435);INSERT INTO xyoff VALUES(3,2,784,314);INSERT INTO xyoff VALUES(3,3,722,233);INSERT INTO xyoff VALUES(3,3,815,421);INSERT INTO xyoff VALUES(3,3,401,267);INSERT INTO xyoff VALUES(3,3,451,650);INSERT INTO xyoff VALUES(3,3,329,485);INSERT INTO xyoff VALUES(3,3,878,370);INSERT INTO xyoff VALUES(3,3,162,616);INSERT INTO xyoff VALUES(3,3,844,183);INSERT INTO xyoff VALUES(3,3,161,216);INSERT INTO xyoff VALUES(3,3,176,676);INSERT INTO xyoff VALUES(3,4,780,128);INSERT INTO xyoff VALUES(3,4,566,121);INSERT INTO xyoff VALUES(3,4,646,120);INSERT INTO xyoff VALUES(3,4,223,557);INSERT INTO xyoff VALUES(3,4,251,117);INSERT INTO xyoff VALUES(3,4,139,209);INSERT INTO xyoff VALUES(3,4,813,597);INSERT INTO xyoff VALUES(3,4,454,538);INSERT INTO xyoff VALUES(3,4,616,198);INSERT INTO xyoff VALUES(3,4,210,159);INSERT INTO xyoff VALUES(4,1,208,415);INSERT INTO xyoff VALUES(4,1,326,665);INSERT INTO xyoff VALUES(4,1,612,133);INSERT INTO xyoff VALUES(4,1,537,513);INSERT INTO xyoff VALUES(4,1,638,438);INSERT INTO xyoff VALUES(4,1,808,269);INSERT INTO xyoff VALUES(4,1,552,121);INSERT INTO xyoff VALUES(4,1,100,189);INSERT INTO xyoff VALUES(4,1,643,664);INSERT INTO xyoff VALUES(4,1,726,378);INSERT INTO xyoff VALUES(4,2,478,409);INSERT INTO xyoff VALUES(4,2,497,507);INSERT INTO xyoff VALUES(4,2,233,148);INSERT INTO xyoff VALUES(4,2,587,237);INSERT INTO xyoff VALUES(4,2,604,166);INSERT INTO xyoff VALUES(4,2,165,455);INSERT INTO xyoff VALUES(4,2,320,258);INSERT INTO xyoff VALUES(4,2,353,496);INSERT INTO xyoff VALUES(4,2,347,495);INSERT INTO xyoff VALUES(4,2,166,622);INSERT INTO xyoff VALUES(4,3,461,332);INSERT INTO xyoff VALUES(4,3,685,278);INSERT INTO xyoff VALUES(4,3,427,594);INSERT INTO xyoff VALUES(4,3,467,346);INSERT INTO xyoff VALUES(4,3,125,548);INSERT INTO xyoff VALUES(4,3,597,680);INSERT INTO xyoff VALUES(4,3,820,445);INSERT INTO xyoff VALUES(4,3,144,330);INSERT INTO xyoff VALUES(4,3,557,434);INSERT INTO xyoff VALUES(4,3,254,315);INSERT INTO xyoff VALUES(4,4,157,339);INSERT INTO xyoff VALUES(4,4,249,220);INSERT INTO xyoff VALUES(4,4,391,323);INSERT INTO xyoff VALUES(4,4,589,429);INSERT INTO xyoff VALUES(4,4,859,592);INSERT INTO xyoff VALUES(4,4,337,680);INSERT INTO xyoff VALUES(4,4,410,288);INSERT INTO xyoff VALUES(4,4,636,596);INSERT INTO xyoff VALUES(4,4,734,433);INSERT INTO xyoff VALUES(4,4,559,549);INSERT INTO xyoff VALUES(5,1,549,607);INSERT INTO xyoff VALUES(5,1,584,498);INSERT INTO xyoff VALUES(5,1,699,116);INSERT INTO xyoff VALUES(5,1,525,524);INSERT INTO xyoff VALUES(5,1,304,667);INSERT INTO xyoff VALUES(5,1,302,232);INSERT INTO xyoff VALUES(5,1,403,149);INSERT INTO xyoff VALUES(5,1,824,403);INSERT INTO xyoff VALUES(5,1,697,203);INSERT INTO xyoff VALUES(5,1,293,689);INSERT INTO xyoff VALUES(5,2,199,275);INSERT INTO xyoff VALUES(5,2,395,393);INSERT INTO xyoff VALUES(5,2,657,642);INSERT INTO xyoff VALUES(5,2,200,655);INSERT INTO xyoff VALUES(5,2,882,234);INSERT INTO xyoff VALUES(5,2,483,565);INSERT INTO xyoff VALUES(5,2,755,640);INSERT INTO xyoff VALUES(5,2,810,305);INSERT INTO xyoff VALUES(5,2,731,655);INSERT INTO xyoff VALUES(5,2,466,690);INSERT INTO xyoff VALUES(5,3,563,584);INSERT INTO xyoff VALUES(5,3,491,117);INSERT INTO xyoff VALUES(5,3,779,292);INSERT INTO xyoff VALUES(5,3,375,637);INSERT INTO xyoff VALUES(5,3,253,553);INSERT INTO xyoff VALUES(5,3,797,514);INSERT INTO xyoff VALUES(5,3,229,480);INSERT INTO xyoff VALUES(5,3,257,194);INSERT INTO xyoff VALUES(5,3,449,555);INSERT INTO xyoff VALUES(5,3,849,630);INSERT INTO xyoff VALUES(5,4,329,286);INSERT INTO xyoff VALUES(5,4,640,197);INSERT INTO xyoff VALUES(5,4,104,150);INSERT INTO xyoff VALUES(5,4,438,272);INSERT INTO xyoff VALUES(5,4,773,226);INSERT INTO xyoff VALUES(5,4,441,650);INSERT INTO xyoff VALUES(5,4,242,340);INSERT INTO xyoff VALUES(5,4,301,435);INSERT INTO xyoff VALUES(5,4,171,397);INSERT INTO xyoff VALUES(5,4,541,619);INSERT INTO xyoff VALUES(6,1,651,301);INSERT INTO xyoff VALUES(6,1,637,137);INSERT INTO xyoff VALUES(6,1,765,643);INSERT INTO xyoff VALUES(6,1,173,296);INSERT INTO xyoff VALUES(6,1,263,192);INSERT INTO xyoff VALUES(6,1,791,302);INSERT INTO xyoff VALUES(6,1,860,601);INSERT INTO xyoff VALUES(6,1,780,445);INSERT INTO xyoff VALUES(6,1,462,214);INSERT INTO xyoff VALUES(6,1,802,207);INSERT INTO xyoff VALUES(6,2,811,685);INSERT INTO xyoff VALUES(6,2,533,531);INSERT INTO xyoff VALUES(6,2,390,614);INSERT INTO xyoff VALUES(6,2,260,580);INSERT INTO xyoff VALUES(6,2,116,377);INSERT INTO xyoff VALUES(6,2,860,458);INSERT INTO xyoff VALUES(6,2,438,590);INSERT INTO xyoff VALUES(6,2,604,562);INSERT INTO xyoff VALUES(6,2,241,242);INSERT INTO xyoff VALUES(6,2,667,298);INSERT INTO xyoff VALUES(6,3,787,698);INSERT INTO xyoff VALUES(6,3,868,521);INSERT INTO xyoff VALUES(6,3,412,587);INSERT INTO xyoff VALUES(6,3,640,131);INSERT INTO xyoff VALUES(6,3,748,410);INSERT INTO xyoff VALUES(6,3,257,244);INSERT INTO xyoff VALUES(6,3,411,195);INSERT INTO xyoff VALUES(6,3,464,356);INSERT INTO xyoff VALUES(6,3,157,339);INSERT INTO xyoff VALUES(6,3,434,505);INSERT INTO xyoff VALUES(6,4,480,671);INSERT INTO xyoff VALUES(6,4,519,228);INSERT INTO xyoff VALUES(6,4,404,513);INSERT INTO xyoff VALUES(6,4,120,538);INSERT INTO xyoff VALUES(6,4,403,663);INSERT INTO xyoff VALUES(6,4,477,677);INSERT INTO xyoff VALUES(6,4,690,154);INSERT INTO xyoff VALUES(6,4,606,498);INSERT INTO xyoff VALUES(6,4,430,665);INSERT INTO xyoff VALUES(6,4,499,273);INSERT INTO xyoff VALUES(7,1,118,526);INSERT INTO xyoff VALUES(7,1,817,522);INSERT INTO xyoff VALUES(7,1,388,638);INSERT INTO xyoff VALUES(7,1,181,265);INSERT INTO xyoff VALUES(7,1,442,332);INSERT INTO xyoff VALUES(7,1,475,282);INSERT INTO xyoff VALUES(7,1,722,633);INSERT INTO xyoff VALUES(7,1,104,394);INSERT INTO xyoff VALUES(7,1,631,262);INSERT INTO xyoff VALUES(7,1,372,392);INSERT INTO xyoff VALUES(7,2,600,413);INSERT INTO xyoff VALUES(7,2,386,223);INSERT INTO xyoff VALUES(7,2,839,174);INSERT INTO xyoff VALUES(7,2,293,410);INSERT INTO xyoff VALUES(7,2,281,391);INSERT INTO xyoff VALUES(7,2,859,387);INSERT INTO xyoff VALUES(7,2,478,347);INSERT INTO xyoff VALUES(7,2,646,690);INSERT INTO xyoff VALUES(7,2,713,234);INSERT INTO xyoff VALUES(7,2,199,588);INSERT INTO xyoff VALUES(7,3,389,256);INSERT INTO xyoff VALUES(7,3,349,542);INSERT INTO xyoff VALUES(7,3,363,345);INSERT INTO xyoff VALUES(7,3,751,302);INSERT INTO xyoff VALUES(7,3,423,386);INSERT INTO xyoff VALUES(7,3,267,444);INSERT INTO xyoff VALUES(7,3,243,182);INSERT INTO xyoff VALUES(7,3,453,658);INSERT INTO xyoff VALUES(7,3,126,345);INSERT INTO xyoff VALUES(7,3,120,472);INSERT INTO xyoff VALUES(7,4,359,654);INSERT INTO xyoff VALUES(7,4,339,516);INSERT INTO xyoff VALUES(7,4,710,452);INSERT INTO xyoff VALUES(7,4,810,560);INSERT INTO xyoff VALUES(7,4,644,692);INSERT INTO xyoff VALUES(7,4,826,327);INSERT INTO xyoff VALUES(7,4,465,462);INSERT INTO xyoff VALUES(7,4,310,456);INSERT INTO xyoff VALUES(7,4,577,613);INSERT INTO xyoff VALUES(7,4,502,555);INSERT INTO xyoff VALUES(8,1,601,620);INSERT INTO xyoff VALUES(8,1,372,683);INSERT INTO xyoff VALUES(8,1,758,399);INSERT INTO xyoff VALUES(8,1,485,552);INSERT INTO xyoff VALUES(8,1,159,563);INSERT INTO xyoff VALUES(8,1,536,303);INSERT INTO xyoff VALUES(8,1,122,263);INSERT INTO xyoff VALUES(8,1,836,435);INSERT INTO xyoff VALUES(8,1,544,146);INSERT INTO xyoff VALUES(8,1,270,277);INSERT INTO xyoff VALUES(8,2,849,281);INSERT INTO xyoff VALUES(8,2,563,242);INSERT INTO xyoff VALUES(8,2,704,463);INSERT INTO xyoff VALUES(8,2,102,165);INSERT INTO xyoff VALUES(8,2,797,524);INSERT INTO xyoff VALUES(8,2,612,426);INSERT INTO xyoff VALUES(8,2,345,372);INSERT INTO xyoff VALUES(8,2,820,376);INSERT INTO xyoff VALUES(8,2,789,156);INSERT INTO xyoff VALUES(8,2,321,466);INSERT INTO xyoff VALUES(8,3,150,332);INSERT INTO xyoff VALUES(8,3,136,152);INSERT INTO xyoff VALUES(8,3,468,528);INSERT INTO xyoff VALUES(8,3,409,192);INSERT INTO xyoff VALUES(8,3,820,216);INSERT INTO xyoff VALUES(8,3,847,249);INSERT INTO xyoff VALUES(8,3,801,267);INSERT INTO xyoff VALUES(8,3,181,670);INSERT INTO xyoff VALUES(8,3,398,563);INSERT INTO xyoff VALUES(8,3,439,576);INSERT INTO xyoff VALUES(8,4,123,309);INSERT INTO xyoff VALUES(8,4,190,496);INSERT INTO xyoff VALUES(8,4,571,531);INSERT INTO xyoff VALUES(8,4,290,255);INSERT INTO xyoff VALUES(8,4,244,412);INSERT INTO xyoff VALUES(8,4,264,596);INSERT INTO xyoff VALUES(8,4,253,420);INSERT INTO xyoff VALUES(8,4,847,536);INSERT INTO xyoff VALUES(8,4,120,288);INSERT INTO xyoff VALUES(8,4,331,639);/* Create the geopoly object from test data above */CREATE VIRTUAL TABLE geo1 USING geopoly(type,clr);INSERT INTO geo1(_shape,type,clr)SELECT geopoly_xform(jshape,A,B,-B,A,xoff,yoff), basis.name, xform.clrFROM basis, xform, xyoffWHERE xyoff.id1=basis.rowid AND xyoff.id2=xform.rowid;/* Query polygon */CREATE TEMP TABLE querypoly(poly JSON, clr TEXT);INSERT INTO querypoly(clr, poly) VALUES('orange', '[[300,300],[400,350],[500,250],[480,500],[400,480],[300,550],[280,450],[320,400],[280,350],[300,300]]');/* Generate the HTML */.print '<html>'.print '<h1>Everything</h1>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',clr))FROM geo1;SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;.print '</svg>'.print '<h1>Overlap Query</h1>'.print '<pre>'.print 'SELECT *'.print ' FROM geo1, querypoly'.print ' WHERE geopoly_overlap(_shape, poly);'EXPLAIN QUERY PLANSELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE geopoly_overlap(_shape, poly);.print '</pre>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE geopoly_overlap(_shape, poly);SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;.print '</svg>'.print '<h1>Overlap Query And Result Bounding Box</h1>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE geopoly_overlap(_shape, poly);SELECT geopoly_svg(geopoly_bbox(poly),'style="fill:none;stroke:black;stroke-width:3"')FROM querypoly;SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;SELECT geopoly_svg(geopoly_group_bbox(_shape),'style="fill:none;stroke:red;stroke-width:3"')FROM geo1, querypolyWHERE geopoly_overlap(_shape, poly);.print '</svg>'.print '<h1>Bounding-Box Overlap Query</h1>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr)),geopoly_svg(geopoly_bbox(_shape),'style="fill:none;stroke:black;stroke-width:1"')FROM geo1, querypolyWHERE geopoly_overlap(geopoly_bbox(_shape), geopoly_bbox(poly));SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;SELECT geopoly_svg(geopoly_bbox(poly),'style="fill:none;stroke:black;stroke-width:3"')FROM querypoly;.print '</svg>'.print '<h1>Within Query</h1>'.print '<pre>'.print 'SELECT *'.print ' FROM geo1, querypoly'.print ' WHERE geopoly_within(_shape, poly);'EXPLAIN QUERY PLANSELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE geopoly_within(_shape, poly);.print '</pre>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE geopoly_within(_shape, poly);SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;.print '</svg>'.print '<h1>Bounding-Box WITHIN Query</h1>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr)),geopoly_svg(geopoly_bbox(_shape),'style="fill:none;stroke:black;stroke-width:1"')FROM geo1, querypolyWHERE geopoly_within(geopoly_bbox(_shape), geopoly_bbox(poly));SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;SELECT geopoly_svg(geopoly_bbox(poly),'style="fill:none;stroke:black;stroke-width:3"')FROM querypoly;.print '</svg>'.print '<h1>Not Overlap Query</h1>'.print '<pre>'.print 'SELECT *'.print ' FROM geo1, querypoly'.print ' WHERE NOT geopoly_overlap(_shape, poly);'EXPLAIN QUERY PLANSELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE NOT geopoly_overlap(_shape, poly);.print '</pre>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE NOT geopoly_overlap(_shape, poly);SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;.print '</svg>'.print '<h1>Not Within Query</h1>'.print '<pre>'.print 'SELECT *'.print ' FROM geo1, querypoly'.print ' WHERE NOT geopoly_within(_shape, poly);'EXPLAIN QUERY PLANSELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE NOT geopoly_within(_shape, poly);.print '</pre>'.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1, querypolyWHERE NOT geopoly_within(_shape, poly);SELECT geopoly_svg(poly,printf('style="fill:%s;fill-opacity:0.5;"',clr))FROM querypoly;.print '</svg>'.print '<h1>Color-Change For Overlapping Elements</h1>'BEGIN;UPDATE geo1SET clr=CASE WHEN rowid IN (SELECT geo1.rowid FROM geo1, querypolyWHERE geopoly_overlap(_shape,poly))THEN 'red' ELSE 'blue' END;.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1;SELECT geopoly_svg(poly,'style="fill:none;stroke:black;stroke-width:2"')FROM querypoly;ROLLBACK;.print '</svg>'.print '<h1>Color-Change And Move Overlapping Elements</h1>'BEGIN;UPDATE geo1SET clr=CASE WHEN rowid IN (SELECT geo1.rowid FROM geo1, querypolyWHERE geopoly_overlap(_shape,poly))THEN 'red' ELSE '#76ccff' END;UPDATE geo1SET _shape=geopoly_xform(_shape,1,0,0,1,300,0)WHERE geopoly_overlap(_shape,(SELECT poly FROM querypoly));.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1;SELECT geopoly_svg(poly,'style="fill:none;stroke:black;stroke-width:2"')FROM querypoly;--ROLLBACK;.print '</svg>'.print '<h1>Overlap With Translated Query Polygon</h1>'UPDATE querypoly SET poly=geopoly_xform(poly,1,0,0,1,300,0);.print '<svg width="1000" height="800" style="border:1px solid black">'SELECT geopoly_svg(_shape,printf('style="fill:none;stroke:%s;stroke-width:1"',geo1.clr))FROM geo1WHERE geopoly_overlap(_shape,(SELECT poly FROM querypoly));SELECT geopoly_svg(poly,'style="fill:none;stroke:black;stroke-width:2"')FROM querypoly;ROLLBACK;.print '</svg>'.print '<h1>Regular Polygons</h1>'.print '<svg width="1000" height="200" style="border:1px solid black">'SELECT geopoly_svg(geopoly_regular(100,100,40,3),'style="fill:none;stroke:red;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(200,100,40,4),'style="fill:none;stroke:orange;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(300,100,40,5),'style="fill:none;stroke:green;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(400,100,40,6),'style="fill:none;stroke:blue;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(500,100,40,7),'style="fill:none;stroke:purple;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(600,100,40,8),'style="fill:none;stroke:red;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(700,100,40,10),'style="fill:none;stroke:orange;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(800,100,40,20),'style="fill:none;stroke:green;stroke-width:1"');SELECT geopoly_svg(geopoly_regular(900,100,40,30),'style="fill:none;stroke:blue;stroke-width:1"');.print '</svg>'.print '</html>'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。