Commit Graph
100 Commits
Author SHA1 Message Date
Eric Fischer 528e0575e2 Actually write tiles directly to the .mbtiles file! 2014-09-25 16:34:17 -07:00
Eric Fischer ce485148fe String formatting mess to encode the JSON metadata 2014-09-25 16:07:03 -07:00
Eric Fischer 86f4f2dd05 More metadata adding, and boilerplate from mbutil 2014-09-25 15:38:20 -07:00
Eric Fischer eec0e14447 Start putting data into mbtiles instead of separate files 2014-09-25 15:20:17 -07:00
Eric Fischer e722ee487e More useful progress indicator 2014-09-25 14:36:25 -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 dc7c58169f Use a constant instead of assuming everything goes to z0 2014-09-24 22:58:17 -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 8f77376b58 Calculate a bounding box and hopefully reasonable center point 2014-09-23 16:41:38 -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 7fc1c0cd24 Fix index mixup that kept points from working at all 2014-09-23 14:02:18 -07:00
Eric Fischer 454a5dd3c7 Index anything that entirely fits within the tile by its centroid 2014-09-23 13:33:40 -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 74bdbfc76a Serialize geometry before tags
To make it easier to skip the tags if the geometry is optimized away
2014-09-22 16:17:55 -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
Eric Fischer 41981ec8e9 Make the string pools within each tile 2014-09-22 12:22:58 -07:00
Eric Fischer 94ef6afc17 Identify the start and end of each tile 2014-09-22 11:22:23 -07:00
Eric Fischer 95ff8de6d9 Add vector tile boilerplate 2014-09-22 10:45:34 -07:00
Eric Fischer 647edc36d6 Index each feature in each tile rather than looking up features by tile later 2014-09-19 15:40:07 -07:00
Eric Fischer eedb0850b2 Factor out code for finding ranges within the index 2014-09-18 17:25:33 -07:00
Eric Fischer 7c5254b1e3 Add progress indicator for tile iteration too 2014-09-18 17:02:09 -07:00
Eric Fischer 1554a59153 Add a progress indicator. Remember to run the optimizer. 2014-09-18 16:27:34 -07:00
Eric Fischer 9fd4da4f7d Unlink tmp files early in case the tiling doesn't run to completion 2014-09-18 14:04:52 -07:00
Eric Fischer b5d28af005 Iterate through the bbox and look up geometries by tile 2014-09-18 14:01:22 -07:00
Eric Fischer f4a40cb16c Use proper temporary files instead of fixed names 2014-09-18 12:12:59 -07:00
Eric Fischer e8adeba40e Keep a file bounding box to know the area that needs to be tiled 2014-09-18 10:26:47 -07:00
Eric Fischer 14e7b648ed Error check when writing to temporaries 2014-09-17 16:21:25 -07:00
Eric Fischer 57fe46f423 Memory map the metadata pool too 2014-09-17 16:00:19 -07:00
Eric Fischer a38ebd9804 Sort the index 2014-09-17 15:48:29 -07:00
Eric Fischer 6613246554 Write the index to a file and then memory map it 2014-09-17 15:44:07 -07:00
Eric Fischer ee8c23b010 Start indexing; sanity check that the file positions are right 2014-09-16 17:54:23 -07:00
Eric Fischer 449da18c63 Sanity check serialization 2014-09-16 17:19:54 -07:00
Eric Fischer 88dc948b6b Serialize metadata and geometry to a file 2014-09-16 16:39:56 -07:00
Eric Fischer a5b8a02ec0 More consistent naming for constants 2014-09-16 14:11:50 -07:00
Eric Fischer d2f0aa0d37 Fix not saying moveto for top level points 2014-09-16 13:54:57 -07:00
Eric Fischer e82edb90a3 Most of the way toward serializing the drawing operations 2014-09-16 13:51:22 -07:00
Eric Fischer 33747bdfd8 Project to web mercator and calculate bounding box 2014-09-16 11:16:51 -07:00
Eric Fischer ff5b632cf5 MultiPoints are all movetos, no linetos 2014-09-15 17:57:16 -07:00
Eric Fischer 1dcfca9d51 Get closer to vector format 2014-09-15 17:33:54 -07:00
Eric Fischer f54af30a40 Parse nested geometry 2014-09-15 16:32:06 -07:00
Eric Fischer 3d43c5afbd Flatten out error-handling so it isn't nested so deeply 2014-09-15 15:47:06 -07:00
Eric Fischer efa3995d94 Clean up meta naming a little 2014-09-15 15:30:03 -07:00
Eric Fischer 0ee8d877ca Add stub main() for testing 2014-09-15 15:27:35 -07:00
Eric Fischer 567d57b864 Remove unneeded datamaps stuff 2014-09-15 15:18:08 -07:00
Eric Fischer e61898b46e Start of GeoJSON from datamaps v2 2014-09-15 15:02:33 -07:00
Eric Fischer 73cf86acdb Preserve the original string representation of numbers too.
Not always useful, but sometimes it will be.
2014-02-26 17:01:30 -08:00
Eric Fischer 0509a860fb Make it an actual library 2014-02-21 16:55:36 -08:00
Eric Fischer 18e90522cb Remember return value from main() 2014-02-19 17:11:56 -08:00
Eric Fischer ad4016635c Document the test program 2014-02-08 10:45:25 -08:00
Eric Fischer bb33b45ece Clarify about reading trees 2014-02-08 10:35:48 -08:00
Eric Fischer 559eb8831d Add license 2014-02-08 10:33:57 -08:00
Eric Fischer 3bd062516d Remove debug #include 2014-02-08 10:32:04 -08:00
Eric Fischer b09634f4f8 More cleanup after errors. Command line options for the reader styles. 2014-02-08 10:28:52 -08:00
Eric Fischer a2fd84c0a3 Fix more memory leaks 2014-02-08 10:21:53 -08:00
Eric Fischer b6f079fea8 Additional rationale 2014-02-08 10:10:55 -08:00
Eric Fischer c6077f7e54 Fix memory leaks from errors while reading strings or numbers 2014-02-08 10:04:23 -08:00
Eric Fischer 391db023e0 Talk about error cleanup in README 2014-02-08 09:57:55 -08:00
Eric Fischer 5a01013642 Make sure the root pointer is null for errors at the top level 2014-02-08 09:41:49 -08:00
Eric Fischer b72bb6f1f4 Clean up after errors and fix related bugs:
It was freeing the wrong object when there was an error
attaching an object to its parent!

Don't crash when printing null (partially read) hash values.
2014-02-08 09:31:49 -08:00
Eric Fischer 5e6fa6f8dc Remember to deallocate the parser 2014-02-08 00:42:28 -08:00
Eric Fischer 54f637a9a8 More documentation of object internals 2014-02-07 18:11:36 -08:00
Eric Fischer 9d31e8a05e Slightly less wordy name for reading JSON with separators 2014-02-07 18:01:18 -08:00
Eric Fischer 39f9ff3f04 Make streaming formatting consistent 2014-02-07 17:14:39 -08:00
Eric Fischer 9979c70b1f Add the whole-tree reader 2014-02-07 17:02:33 -08:00
Eric Fischer 0fd66048c8 Get rid of root node to simplify. Walk the tree if you need it. 2014-02-07 16:56:38 -08:00
Eric Fischer e99c037be3 Add header dependency 2014-02-07 16:53:02 -08:00
Eric Fischer 1cbf8a813e Match documented function names 2014-02-07 16:49:52 -08:00
Eric Fischer 45049fb874 More documentation 2014-02-07 16:48:06 -08:00
Eric Fischer 8278580336 Begin README 2014-02-07 16:25:54 -08:00
Eric Fischer a7e26262ea Expose interface for arbitrary reader functions 2014-02-07 16:23:03 -08:00
Eric Fischer 4a14e09457 Clarify what types are used where 2014-02-07 16:09:05 -08:00
Eric Fischer fee27e1353 Add a callback interface for non-closing punctuation 2014-02-07 15:51:46 -08:00
Eric Fischer f67e97cd08 Work out more details of how json_free() needs to work.
The idea is that you can free any element once you are
done with it, even if it is part of an array or hash that
isn't completely read yet.

Removing array elements is reasonably well defined because
nothing else depends on them. Removing a hash key or value
causes it to be replaced by a null unless the other side of
the component has already been nulled out, in which case
the whole pair is removed.
2014-02-06 22:45:40 -08:00