Commit Graph

192 Commits

Author SHA1 Message Date
Eric Fischer
d69431e16b Partition each tile into children instead of repeatedly clipping the parent. 2014-12-11 15:46:54 -08:00
Eric Fischer
105dfa73d7 Use bounding box for quick accept/reject before detailed clipping. 2014-12-11 13:34:50 -08:00
Eric Fischer
380550ce85 Remember to remove the closepath after clipping away a polygon 2014-12-04 14:54:11 -08:00
Eric Fischer
028fef470e Fix the major bug: forgetting to offset back to world coordinates 2014-12-04 14:08:36 -08:00
Eric Fischer
08ff40e42f Trying to follow Vlad's suggestion and work from the top down.
Doesn't quite work yet, but seems like the right thing to do.
From the bottom up, indexing is a mess because of the buffering,
and includes unneeded areas in the bounding boxes of big features.
2014-12-03 16:18:43 -08:00
Eric Fischer
a1e7426956 Sprinkle consts and casts to make it valid C++ as well as C 2014-12-02 14:17:49 -08:00
Eric Fischer
bb13dc03e5 Gzip -9 tiles. Don't bother writing tiles whose features all got clipped away. 2014-11-20 14:33:45 -08:00
Eric Fischer
896f05aea6 Use gzip tile compression to match current tile server 2014-11-14 14:21:12 -08:00
Eric Fischer
ffe4c95376 Calculate point dropping during encoding instead of tiling
so it is consistent across tile boundaries, and so every point
that exists at zoom x always also exists at zoom x+1.
2014-11-14 12:42:50 -08:00
Eric Fischer
e7aa05e7e4 Don't immediately fail when a very low tile resolution is specified manually 2014-11-12 17:06:58 -08:00
Eric Fischer
5595a087c7 Quick reject by bounding box of linear features too small to draw 2014-11-12 15:57:45 -08:00
Eric Fischer
575a24b095 Use a set instead of a map to reduce needless memory overhead 2014-11-06 11:29:11 -08:00
Eric Fischer
ea292def47 Make duplicate trimming less bad: only trim features indexed >1 time 2014-11-06 11:27:10 -08:00
Eric Fischer
c24cfada61 Move feature type to index so point skipping can avoid looking up geometry
Which should avoid having to page the geometry in if there is
more data than will fit in memory
2014-11-05 12:18:03 -08:00
Eric Fischer
3f9f50258c Just use a standard C++ type for deduplicating instead of reinventing the wheel 2014-10-31 16:50:28 -07:00
Eric Fischer
3cd6fcfbe0 Add option to set buffer size. Pass it through to clipping functions. 2014-10-27 13:20:17 -07:00
Eric Fischer
4cb56a6b11 The indexing side of buffering features at the edges of tiles 2014-10-27 12:56:51 -07:00
Eric Fischer
e0826a12c6 Much faster at low zooms to check for duplicates before simplifying 2014-10-27 10:00:46 -07:00
Eric Fischer
9bb4a549ca Silence warnings about unused variables 2014-10-24 17:24:04 -07:00
Eric Fischer
46100c34df Move projection and tile arithmetic to its own file 2014-10-24 17:22:14 -07:00
Eric Fischer
17384d5da7 Move geometric transformations into their own file 2014-10-24 15:12:02 -07:00
Eric Fischer
ac00c84fb2 Save a little more space by sub-ordering within the same index
to put the lowest-numbered endpoint last
within lines that start at the same point,
since that is the one that might come next.
2014-10-21 17:59:42 -07:00
Eric Fischer
1cae0e85b3 Reindex features by their first coordinates so they coalesce better 2014-10-21 16:16:09 -07:00
Eric Fischer
9dab4b9fb6 Reverse lines that point the "wrong" direction so they coalesce better 2014-10-21 16:09:51 -07:00
Eric Fischer
043b35eede Take another opportunity to simplify lines after coalescing features 2014-10-18 11:40:09 -07:00
Eric Fischer
151f0c116c Fix clipping of polygons with multiple rings. 2014-10-16 15:17:18 -07:00
Eric Fischer
3bdcc3ca90 Heavy-handedly fix clipping errors at the edges of z0 and z1 tiles 2014-10-15 17:03:30 -07:00
Eric Fischer
8fec4ef9fc Return immediately instead of failing to clip polygons to the z0 tile 2014-10-15 16:34:49 -07:00
Eric Fischer
43b27e2dfd Don't closepath twice in multipolygons 2014-10-15 16:30:33 -07:00
Eric Fischer
ac34a292e9 Add an flag to remove all properties and use only geometry 2014-10-09 15:11:43 -07:00
Eric Fischer
dea4335162 Less accurate but much faster estimate of size savings from excluding metadata 2014-10-09 14:02:20 -07:00
Eric Fischer
389c89bdf9 Put the suggestions in order 2014-10-08 16:59:00 -07:00
Eric Fischer
67b8b984e5 Suggest properties you could drop to make the tiles smaller 2014-10-08 16:39:44 -07:00
Eric Fischer
e1c5bfe3e1 Factor out aspects of tile creation 2014-10-08 14:01:47 -07:00
Eric Fischer
376bab74a5 Larger minimum polygon size looks better than dropping to larger pixels 2014-10-07 16:19:18 -07:00
Eric Fischer
49b36e09cc Tiny polygons (smaller than a pixel) decay into probabilities. 2014-10-07 15:38:06 -07:00
Eric Fischer
adbd9f6edb Add a flag to select the rate at which points are dropped at low zooms. 2014-10-07 13:54:13 -07:00
Eric Fischer
8594dbe56b If a tile is too big, try backing off to lower resolutions before failing 2014-10-07 10:27:17 -07:00
Eric Fischer
3433d17a96 Clip polygons to just outside the tile boundary 2014-10-03 16:33:22 -07:00
Eric Fischer
722e5f16eb Dashing: better than shortening, but still too visible 2014-10-01 14:01:58 -07:00
Eric Fischer
6922a57aea Still looks terrible, but make segment shortening work again 2014-10-01 11:09:35 -07:00
Eric Fischer
7df269219c Fix memory leak of field names 2014-10-01 10:20:04 -07:00
Eric Fischer
6a64cf1b04 Convert metadata to use a vector too. 2014-09-30 17:24:34 -07:00
Eric Fischer
6bbe023187 Return to sorting features before coalescing 2014-09-30 17:18:23 -07:00
Eric Fischer
3ad8a919d9 Crash if the geometry is corrupted 2014-09-30 16:37:09 -07:00
Eric Fischer
c32b0207f2 Use a constructor, and fix an encoding bug for lines clipped away entirely 2014-09-30 16:27:00 -07:00
Eric Fischer
1b3620dabc Start converting C arrays to C++ vectors 2014-09-30 15:53:45 -07:00
Eric Fischer
04c8a4441d Remove no-ops after coalescing, which will often generate empty moves. 2014-09-29 17:32:01 -07:00
Eric Fischer
e09bec0824 Don't coalesce point features, because multipoints don't seem to draw right. 2014-09-29 16:18:20 -07:00
Eric Fischer
099623cd32 Arrays for coalescing can get too big for the stack. 2014-09-29 15:59:36 -07:00
Eric Fischer
98b0cb5e3f Tiles are smaller if coalesced features are sorted geographically 2014-09-29 15:38:33 -07:00
Eric Fischer
a08e57357a Coalesce geometries of features with the same attributes 2014-09-29 15:33:14 -07:00
Eric Fischer
c02c91df5a Make an array of features in each tile to prepare to coalesce features 2014-09-29 14:46:45 -07:00
Eric Fischer
26e9feda02 Move mbtiles code to its own source file 2014-09-29 12:48:58 -07:00
Eric Fischer
8118c13a71 Give the constant pool its own source file 2014-09-29 12:17:35 -07:00
Eric Fischer
fabeb4588d Stop duplicating pool initialization code 2014-09-29 12:12:54 -07:00
Eric Fischer
120809b004 Clip large LineString features down to the bounds of the tile 2014-09-26 17:07:52 -07:00
Eric Fischer
7052378613 Remember to finalize statements 2014-09-26 14:51:29 -07:00
Eric Fischer
0a8420cc2e Add options to specify the base and low-zoom level of detail 2014-09-26 10:52:19 -07:00
Eric Fischer
528e0575e2 Actually write tiles directly to the .mbtiles file! 2014-09-25 16:34:17 -07:00
Eric Fischer
201708f19c Add command line options for zoom, title, layer name, name, output dir 2014-09-25 12:09:31 -07:00
Eric Fischer
0b23e65803 Hardcode layer name a little less. 2014-09-24 23:22:14 -07:00
Eric Fischer
1bcbd0661c Curves look a lot better keeping 1/4-pixel detail at any zoom 2014-09-24 17:57:18 -07:00
Eric Fischer
4de57b960d Bump up tolerance. Anything higher is visibly off. 2014-09-24 17:40:32 -07:00
Eric Fischer
ed05bc9f7e Fix overflow that was leaving some lines too far away 2014-09-24 17:23:40 -07:00
Eric Fischer
41fcd4c82f Mostly working line simplification 2014-09-24 16:51:53 -07:00
Eric Fischer
509171b470 Optimize out line movetos that don't actually move 2014-09-24 15:43:24 -07:00
Eric Fischer
e65eb0b310 Looks terrible, but drop pieces of lines to maintain density across zooms 2014-09-24 14:58:26 -07:00
Eric Fischer
5cde832ec6 Stay in (tile-relative) world-scaled coordinates initially 2014-09-24 14:15:04 -07:00
Eric Fischer
ce3cdfc5e9 Choose the center of the busiest tile for the map center 2014-09-24 12:14:35 -07:00
Eric Fischer
fbf60b6d80 Factor out and improve no-op drawing elimination 2014-09-24 11:42:20 -07:00
Eric Fischer
ef3d9867fc This can just be a regular loop now 2014-09-23 21:40:23 -07:00
Eric Fischer
a8907362bd Count drawing operations, not ops and coordinates equally 2014-09-23 18:19:06 -07:00
Eric Fischer
e8c3177725 Separate translation to tile coordinates from vector feature generation 2014-09-23 18:08:31 -07:00
Eric Fischer
95c2fb67b2 Fix large features getting included multiple times at low zooms 2014-09-23 17:18:36 -07:00
Eric Fischer
5d7a2f50a9 Write the metadata file 2014-09-23 16:12:41 -07:00
Eric Fischer
91eefcbd16 Drop more points at each lower zoom level 2014-09-23 14:42:17 -07:00
Eric Fischer
dd8f43a697 Bail if the tile size is larger than the uploader will accept 2014-09-23 12:17:18 -07:00
Eric Fischer
3170616f6d Fix encoding of attribute values. They do have their own pool. 2014-09-23 11:41:36 -07:00
Eric Fischer
405889317e Optimize away any features that don't draw at all 2014-09-23 11:32:36 -07:00
Eric Fischer
8ebeada364 Fix inconsistent indentation 2014-09-23 10:57:50 -07:00
Eric Fischer
00a42796b4 Use lower resolution at lower zooms. Not sure it's worth it. 2014-09-23 10:57:01 -07:00
Eric Fischer
7bb79dab8e Optimize away deltas of 0 2014-09-23 10:37:18 -07:00
Eric Fischer
581105dc9a Much faster to search and add to the string pool as a binary tree 2014-09-22 22:31:55 -07:00
Eric Fischer
d7cdbec980 Fix bit shifting errors at z0 2014-09-22 18:08:37 -07:00
Eric Fischer
6851e914a9 Write out the tile as PBF 2014-09-22 17:46:48 -07:00
Eric Fischer
3df523a588 Write out geometry 2014-09-22 17:12:38 -07:00
Eric Fischer
78304d6385 Start writing a feature 2014-09-22 16:50:24 -07:00
Eric Fischer
27f99a1322 Inline so there is access to the tile object the whole time 2014-09-22 16:39:25 -07:00
Eric Fischer
c679fa176b Move whole tile-producing function onto the C++ side 2014-09-22 16:27:31 -07:00
Eric Fischer
baf364dd53 Write string pool to tile 2014-09-22 16:06:44 -07:00
Eric Fischer
b8e7d3edf8 Start toward actually writing out tiles 2014-09-22 15:41:13 -07:00