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
eaeb55bf71
Distinguish between signed and unsigned in the temporary file
2014-12-02 18:03:07 -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
77c4ce4171
Make the bin directory on install if it doesn't already exist
2014-12-02 11:38:48 -08:00
Eric Fischer
cc58588724
More sensible error message when there are no valid geometries
2014-11-24 22:50:12 -08:00
Eric Fischer
2bd0cb9f43
Don't override PREFIX if it is set in the environment
2014-11-24 10:35:06 -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
82c0f67813
Explicitly use /usr/local, as Yosemite apparently needs
2014-11-15 23:46:39 -08:00
Eric Fischer
a1769416d1
Fix operator precedence warning
2014-11-14 15:26:59 -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
428be06442
Accept gzip compression as well as zlib
2014-11-13 22:47:54 -08:00
Eric Fischer
8210f83912
Make the progress indicator less chatty
2014-11-13 10:48:59 -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
2b6ad9968f
Add a flag to exclude all properties except ones explicitly named
2014-11-12 12:41:56 -08:00
Eric Fischer
b05c5a9583
Skip over properties with null values instead of considering it an error
2014-11-12 12:19:39 -08:00
Eric Fischer
1aea522ef5
Fix another overflow that broke line clipping at zoom level 1.
2014-11-07 12:51:26 -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
7f6a5dc005
The maxzoom=0 case couldn't have worked
2014-11-06 11:05:09 -08:00
Eric Fischer
241d96e57c
Save a few more bytes per geometry in the temporary file
...
by using bytes instead of ints for the drawing operations
2014-11-05 14:37:54 -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
bc4527b25d
Add an option to set the directory for the temporary files
2014-11-05 10:34:44 -08:00
Eric Fischer
097d6ccf7d
Use a bitfield to make the index 2/3 the size, to save some disk churn
2014-11-05 10:07:05 -08:00
Eric Fischer
a039aca860
Read-only memory map for merging, since there's no reason to write
2014-11-04 10:08:30 -08:00
Eric Fischer
3e3fdcbab4
Bring over the multistage sort from datamaps to avoid Mac crashes
2014-11-03 22:47:41 -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
8e84a8ffda
I forgot how bad sorted data is in binary trees.
...
Swizzle the bits so deduplicating features isn't so terrible.
2014-10-31 16:41:11 -07:00
Eric Fischer
ea7216641b
If the requested tile doesn't exist, try climbing up to a lower zoom
2014-10-27 16:00:16 -07:00
Eric Fischer
984ac17d6c
Use the same default ground precision whatever the base zoom is.
2014-10-27 14:36:13 -07:00
Eric Fischer
a09bf3469d
Fix line clipping overflow bug
2014-10-27 14:24:11 -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
be94bd0dd5
Remove an unused field from the index structure
2014-10-27 09:52:25 -07:00
Eric Fischer
4b171c74b7
Constrain calculated center point to be within the bounding box
...
It could come out bigger because it is calculated from the center
of the densest tile, not actually the centroid.
2014-10-26 13:12:29 -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
754dbf152a
Remove dead code
2014-10-24 15:23:35 -07:00
Eric Fischer
17384d5da7
Move geometric transformations into their own file
2014-10-24 15:12:02 -07:00
Eric Fischer
75b7af8f79
Minimal tile decoder, only geometry for the moment
2014-10-23 15:40:27 -07:00
Eric Fischer
4e1eacc5b2
Simple enumerate command like the datamaps one
2014-10-23 14:04:57 -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
4bb441ce41
Speed up reading further by reading buffers instead of characters
2014-10-19 15:35:28 -07:00
Eric Fischer
84b9dea51e
Buffer the next character internally to make reading faster
2014-10-19 15:15:36 -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
dc3c6138d1
Fix failure to close polygons.
2014-10-15 16:15:24 -07:00
Eric Fischer
e561931d53
Fix bug that would always index for z14 regardless of actual max zoom
2014-10-15 15:49:03 -07:00
Eric Fischer
1502e5832c
More option documentation cleanup
2014-10-09 17:26:16 -07:00
Eric Fischer
ea99ae8db3
Document -X and improve option formatting in general
2014-10-09 17:22:22 -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
65ec829de6
Report every 10000 features on input, since parsing GeoJSON is slow.
2014-10-09 12:23:43 -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
8f71604fe6
If reading from standard input, use the .mbtiles as default layer name
2014-10-07 12:02:12 -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
bda20fe8a6
Improve error reporting
2014-10-06 10:55:40 -07:00
Eric Fischer
41447a4678
Be clearer about error reporting
2014-10-04 14:11:59 -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
b292b66a7c
Fix more (small) memory leaks
2014-10-01 10:33:22 -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
f0d2dbd2a8
Add -f option to overwrite existing mbtiles file
2014-09-29 15:09:21 -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
5e64040859
Remove dead code
2014-09-29 12:18: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
5ab7f89465
Add an option to exclude specified properties
2014-09-29 10:50:24 -07:00
Eric Fischer
ca6c491c6f
More readme clarifications and examples
2014-09-27 10:36:45 -07:00
Eric Fischer
c326762b6f
Crunch out spaces and most punctuation from autogenerated layer names
2014-09-27 09:39:20 -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
2d34916fca
Clipping code from datamaps
2014-09-26 16:35:18 -07:00
Eric Fischer
69fa9e5f22
Remove jsoncat since it doesn't belong in this project
2014-09-26 16:14:13 -07:00
Eric Fischer
9f3666472e
More README clarification
2014-09-26 15:36:41 -07:00
Eric Fischer
be397b0391
Mention line simplification
2014-09-26 15:27:20 -07:00
Eric Fischer
0f593d8fdf
Fix build errors on Mac
2014-09-26 15:25:12 -07:00