Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Updates to the geopoly documentation. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
f1742a52f5b20e2bb6064adc05e90a49 |
User & Date: | drh 2018-09-13 12:50:58.624 |
Context
2018-09-14
| ||
15:54 | Update the speed-and-size spreadsheet with the latest measurements. (check-in: 37ab9b40af user: drh tags: trunk) | |
2018-09-13
| ||
12:50 | Updates to the geopoly documentation. (check-in: f1742a52f5 user: drh tags: trunk) | |
2018-09-12
| ||
10:49 | Fix typos in the windowfunctions.html document. (check-in: 221cce4209 user: drh tags: trunk) | |
Changes
Changes to pages/compile.in.
︙ | ︙ | |||
872 873 874 875 876 877 878 879 880 881 882 883 884 885 | of the full-text search engine is added to the build automatically. } COMPILE_OPTION {SQLITE_ENABLE_FTS5} { When this option is defined in the [amalgamation], versions 5 of the full-text search engine ([fts5]) is added to the build automatically. } COMPILE_OPTION {SQLITE_ENABLE_ICU} { This option causes the [http://www.icu-project.org/ | International Components for Unicode] or "ICU" extension to SQLite to be added to the build. } | > > > > > | 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 | of the full-text search engine is added to the build automatically. } COMPILE_OPTION {SQLITE_ENABLE_FTS5} { When this option is defined in the [amalgamation], versions 5 of the full-text search engine ([fts5]) is added to the build automatically. } COMPILE_OPTION {SQLITE_ENABLE_GEOPOLY} { When this option is defined in the [amalgamation], the [Geopoly extension] is included in the build. } COMPILE_OPTION {SQLITE_ENABLE_ICU} { This option causes the [http://www.icu-project.org/ | International Components for Unicode] or "ICU" extension to SQLite to be added to the build. } |
︙ | ︙ |
Changes to pages/geopoly.in.
1 | <title>The Geopoly Interface To The SQLite R*Tree Module</title> | | > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <title>The Geopoly Interface To The SQLite R*Tree Module</title> <tcl>hd_keywords {geopoly} {Geopoly module} {Geopoly extension}</tcl> <table_of_contents> <h1>Overview</h1> <p> The Geopoly module is an alternative interface to the [R-Tree extension] that uses the [http://geojson.org | GeoJSON] notation ([https://tools.ietf.org/html/rfc7946 | RFC-7946]) to describe two-dimensional polygons. Geopoly includes functions for detecting when one polygon is contained within or overlaps with another, for computing the area enclosed by a polygon, for doing linear transformations of polygons, for rendering polygons as [https://en.wikipedia.org/wiki/Scalable_Vector_Graphics | SVG], and other similar operations. <p> The source code for Geopoly is included in the [amalgamation] but is not included in the library unless the [-DSQLITE_ENABLE_GEOPOLY] compile-time option is used. <p> Geopoly operates on "simple" polygons - that is, polygons for which the boundary does not intersect itself. Geopoly thus extends the capabilities of the [R-Tree extension] which can only deal with rectangular areas. On the other hand, the [R-Tree extension] is able to handle between 1 and 5 coordinate dimensions, whereas Geopoly is restricted to 2-dimensional shapes only. |
︙ | ︙ | |||
216 217 218 219 220 221 222 | with the origin at the lower left, whereas SVG uses a left-handed coordinate system with the origin at the upper left. The geopoly_svg() routine makes no attempt to transform the coordinate system, so the displayed images are shown in mirror image and rotated. If that is undesirable, the geopoly_xform() routine can be used to transform the output from cartesian to SVG coordinates prior to passing the polygons into geopoly_svg(). | | | > > > > > | | 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | with the origin at the lower left, whereas SVG uses a left-handed coordinate system with the origin at the upper left. The geopoly_svg() routine makes no attempt to transform the coordinate system, so the displayed images are shown in mirror image and rotated. If that is undesirable, the geopoly_xform() routine can be used to transform the output from cartesian to SVG coordinates prior to passing the polygons into geopoly_svg(). <tcl>hd_fragment gbbox geopoly_bbox geopoly_group_bbox</tcl> <h2>The geopoly_bbox(P) and geopoly_group_bbox(P) Functions</h2> <p> If P is a polygon, then geopoly_bbox(P) returns a new polygon that is the smallest (axis-aligned) rectangle completely enclosing P. If P is not a polygon, geopoly_bbox(P) returns NULL. <p> The geopoly_group_bbox(P) function is an aggregate version of geopoly_bbox(P). The geopoly_group_bbox(P) function returns the smallest rectangle that will enclose all P values seen during aggregation. <tcl>hd_fragment gpoint geopoly_constains_point</tcl> <h2>The geopoly_contains_point(P,X,Y) Function</h2> <p> If P is a polygon, then geopoly_contains_point(P,X,Y) returns true if and only if the coordinate X,Y is inside or on the boundary of the polygon P. If P is not a polygon, geopoly_contains_point(P,X,Y) returns NULL. <tcl>hd_fragment xform geopoly_xform</tcl> <h2>The geopoly_xform(P,A,B,C,D,E,F) Function</h2> <p> The geopoly_xform(P,A,B,C,D,E,F) function returns a new polygon that is an affine transformation of the polygon P and where the transformation is defined by values A,B,C,D,E,F. If P is not a valid polygon, this routine returns NULL. <p> The transformation converts each vertex of the polygon according to the following formula: |
︙ | ︙ | |||
277 278 279 280 281 282 283 | to compute polygon decoding, overlap, and containment. <h2>Binary Encoding of Polygons</h2> <p> Geopoly stores all polygons internally using a binary format. A binary polygon consists of a 4-byte header following by an array of coordinate | | | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | to compute polygon decoding, overlap, and containment. <h2>Binary Encoding of Polygons</h2> <p> Geopoly stores all polygons internally using a binary format. A binary polygon consists of a 4-byte header following by an array of coordinate pairs in which each dimension of each coordinate is a 32-bit floating point number. <p> The first byte of the header is a flag byte. The least significant bit of the flag byte determines whether the coordinate pairs that follow the header are stored big-endian or little-endian. A value of 0 for the least significant bit means big-endian and a value of 1 means little endian. |
︙ | ︙ |