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
Eric Fischer
f0f73c6dd1
Keep track of the root of the parse tree for the caller
2014-02-06 21:06:27 -08:00
Eric Fischer
415193ad8e
Remove old state resetting
2014-02-06 21:05:46 -08:00
Eric Fischer
69a5ca0bb9
Include filename in error output
2014-02-06 20:51:15 -08:00
Eric Fischer
9d4ee102b4
Forgot to initialize the error to NULL
2014-02-06 20:49:48 -08:00
Eric Fischer
a74444af28
Track line number for error reports
2014-02-06 20:44:39 -08:00
Eric Fischer
46120e84c4
Remember to check for missing commas
2014-02-06 20:31:31 -08:00
Eric Fischer
e22b154ecc
Add an input form that parses JSON from a string
2014-02-06 19:27:21 -08:00
Eric Fischer
ed079e37a9
Add a reader abstraction
2014-02-06 19:22:37 -08:00
Eric Fischer
979b9243d8
A container object makes the state transitions more straightforward
...
And should make it possible to free an object that has just been read
and still know what the next state will be, importantly.
2014-02-06 18:56:22 -08:00
Eric Fischer
55510cac04
Start adding free logic
2014-02-06 17:58:23 -08:00
Eric Fischer
e9d2c94f93
Pass along the string length instead of just null-terminating
2014-02-06 13:28:35 -08:00
Eric Fischer
1a7b4189bf
Detect a lack of digits in the exponent for a number
2014-02-06 13:26:56 -08:00
Eric Fischer
55692cb27c
Treat unclosed containers at EOF as an error after all
2014-02-06 13:20:56 -08:00
Eric Fischer
6449e817b6
Detect attempts to attach an element to a non-container parent.
...
Maybe there is a better name for this. The typical case is adjacent
tokens not separated by a comma.
2014-02-06 12:51:32 -08:00
Eric Fischer
ad2843d65b
Be consistent about EOF handling around whitespace
2014-02-06 12:31:12 -08:00
Eric Fischer
f76bcab825
Detect misplaced comma within hash
2014-02-06 12:25:59 -08:00
Eric Fischer
948584126a
Detect trailing commas and colons inside arrays and hashes.
2014-02-06 12:19:33 -08:00
Eric Fischer
42283ece0b
More sensible way of passing errors back to caller
2014-02-06 12:13:23 -08:00
Eric Fischer
f8465828e5
Maybe the right way to handle empty arrays?
...
The previous check for the array length being 0 didn't work
for the case of an array that contains only an empty array.
The tricky part is that the current node is the array when
the array has just begun or just after a comma, but also
when the completed array has been passed off to the caller.
2014-02-06 00:30:25 -08:00