Eric Fischer
2957f16b4b
Assign tasks (reading temporary files) to threads
2015-07-09 16:09:40 -07:00
Eric Fischer
2bdb51e995
Calculate how many threads should be run
2015-07-09 15:24:47 -07:00
Eric Fischer
5d4ab6df1b
Merge branch 'master' into multithread
2015-07-08 16:36:58 -07:00
Eric Fischer
3452ee92ab
Fix formatting
2015-07-08 16:35:02 -07:00
Eric Fischer
e5a6f981b7
Work out the sharding math for multhreading
2015-07-08 16:33:22 -07:00
Eric Fischer
138699d243
Add option to quiet the chatty progress indicators
2015-07-08 15:06:21 -07:00
Eric Fischer
e7b4443838
Enforce code style
2015-07-08 14:42:12 -07:00
Eric Fischer
1b72804358
Precalculate which child tiles a feature can overlap
...
instead of looping over them all
2015-07-01 15:17:35 -07:00
Eric Fischer
18cdcb0732
Drop linetos smaller than tile resolution before doing normal simplification
...
Since simplification is rather expensive
2015-07-01 12:16:50 -07:00
Eric Fischer
af13a95dc1
Shard the child tiles as widely as possible even if not skipping levels
...
to help future parallelization
2015-07-01 12:04:45 -07:00
Eric Fischer
0d3192b863
Break rewriting the geometry for the next zoom out into its own function
2015-06-30 16:36:26 -07:00
Eric Fischer
4bb88e228a
Fix buffer overflow. This is a bounding box, not sub-tiles.
2015-06-29 17:05:33 -07:00
Eric Fischer
7724e2c329
Skip over some intermediate zooms below minzoom
2015-06-29 16:42:26 -07:00
Eric Fischer
efe3c62bb1
Start breaking the assumption that the next zoom is exactly 1 deeper
2015-06-29 16:16:38 -07:00
Eric Fischer
62052cafab
Move zoom traversal into C++
2015-06-19 17:29:56 -07:00
Eric Fischer
a185073f0a
Shrink the geometry by shaving off bits below the maxzoom tile resolution
2015-06-18 14:16:16 -07:00
Eric Fischer
a1d3ecf9bb
Save another byte per attribute by moving the type to the string pool
2015-06-18 12:12:20 -07:00
Eric Fischer
1a44538bdf
Use the first coordinates of the first feature as the origin for deltas
2015-06-18 10:52:01 -07:00
Eric Fischer
46626e4f08
Delta encoding for motion within features
2015-06-17 17:48:29 -07:00
Eric Fischer
725ea71e57
Fix formatting
2015-06-17 17:30:17 -07:00
Eric Fischer
cde1e60603
Use a string pool to avoid duplicating keys and values
2015-06-17 17:18:08 -07:00
Eric Fischer
d5d322f36a
Clearer message about projections
2015-06-05 10:34:19 -07:00
Eric Fischer
263ae94e75
Add a warning when data appears to be in the wrong projection
2015-06-05 10:23:25 -07:00
Eric Fischer
8a1f0d83e1
Consistent indent style with clang-format
2015-06-03 11:22:13 -07:00
Eric Fischer
34b00eca73
Merge pull request #50 from mapbox/gl4096
...
Add a command line option to specify the minimum allowed tile extent
2015-06-03 11:11:16 -07:00
Eric Fischer
bc2f243f0b
Add a command line option to specify the minimum allowed tile extent
2015-06-01 15:01:46 -07:00
Eric Fischer
901f6a76b6
Keep the resolution constant as we drop features to make the tile fit
2015-05-20 15:15:45 -07:00
Eric Fischer
555ababd2e
Add a flag to dynamically drop a fraction of features from large tiles
2015-05-20 14:57:00 -07:00
Eric Fischer
1381f0f276
Add a flag to let you drop lines at low zooms just like points
2015-04-21 08:19:51 -07:00
Eric Fischer
d64328ac35
Fix crash when encoding boolean properties.
2015-04-10 13:03:11 -07:00
Eric Fischer
4041811372
Add flags to disable simplification/coalescing/limits when unwanted
2015-04-10 11:36:30 -07:00
Eric Fischer
a076c5619d
Merge remote-tracking branch 'origin/master' into multilayer
2015-03-25 13:54:29 -07:00
Eric Fischer
86925eea4c
Write out geometries for all layers
2015-03-24 17:07:51 -07:00
Eric Fischer
73b63133e2
Multiple layers make it into JSON metadata now
2015-03-24 16:28:31 -07:00
Eric Fischer
2198bcc2a6
Handle multiple reading. Multiple writing still crashes.
2015-03-23 17:44:23 -07:00
Eric Fischer
eb24c6e21e
Include the layer number in the serialized geometry
2015-03-23 15:37:49 -07:00
Eric Fischer
a880f44a91
Clean up the gamma semantics a little.
...
0 (default) means unchanged: maxzoom contains all the dots.
Positive number, even very small, means that it still checks
the gap size and thins out dots if they are close together.
Negative number means no gamma, and the old random instead of
uniform dropping at low zooms.
2015-03-23 14:44:21 -07:00
Eric Fischer
8002609f0c
More scaffolding for multiple layers
2015-03-23 13:44:35 -07:00
Eric Fischer
d370b07231
Scaffolding for layers within per-tile processing
2015-03-23 11:36:35 -07:00
Eric Fischer
b59a251924
Write metadata even when tiling fails so you can look at the partial map
2015-03-06 16:33:32 -08:00
Eric Fischer
41b28b2a1b
Add dot gamma processing
2015-03-06 13:12:32 -08:00
Eric Fischer
558a7a412c
Restore old code for uniform instead of random dot-dropping
...
From ffe4c95376
2015-03-06 10:56:02 -08:00
Eric Fischer
b2eff13667
Impose a limit on the maximum number of features in a tile.
2014-12-19 14:33:39 -08:00
Eric Fischer
32010fc893
Oops. Do a lot less progress indicator I/O.
2014-12-17 17:08:04 -08:00
Eric Fischer
48b5db6ae5
Keep the progress indicator progressing while working through big tiles
2014-12-17 16:01:33 -08:00
Eric Fischer
cba1b8ae7f
Remove unneeded old indexing code
2014-12-17 11:16:43 -08:00
Eric Fischer
0d0a546b1e
No need to split features into child tiles when processing the final zoom.
2014-12-17 11:10:46 -08:00
Eric Fischer
ad17f1f282
Make -Z0 work again for file minimum zoom
2014-12-17 11:05:14 -08:00
Eric Fischer
3f2818a814
More useful progress indicator
2014-12-11 17:59:22 -08:00
Eric Fischer
c177b8bed2
No need to remove no-ops here unless we clipped
2014-12-11 16:08:53 -08:00
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