- genapt850 : some airports (LSMM) have multiple airport boundaries.
This caused a lot of the airport to not get a smoothed base (so some landclass polys were not clipped against the airport). Changed boundary from a single ClosedPolygon to a list. Seems to work.
Some misc warnings cleanup in scheduler, and parser
- Clipper using accumulator results in a significant speed boots - enable clipper and the accumulator by default.
- ogr-decode - most of the crashes I'm getting are due to non-continuous roads. Within a line string, I create adjacent polys that snap correctly. On the ends, I generate 90 degree angles. Some linestrings should be consecutive. As a workaround, I am now extending every start and end poly of linestrings by 0.1 meters. It makes it better, but I need to do a better job of creating continuous roads. This will require some preprocessing of the entire shapefile. (Perhaps all line data shapefiles, to handle correct overpass / underpass logic)
- Increase epsilon when looking for intermediate nodes
(setup method for calling function to specify the bounding box and error
epsilon in case this had adverse effects on genapts)
This fixes many of the small vertical gaps (T-Junctions)
- Fix an issue with merge slivers. The clip mask optimization broke
merge slivers. WHen merging the slivers with a poly segment, it also
needs to be merged with the clip mask, so when the segments are
seperated from the mask, they include the sliver.
- Added to the shapefile debug.
--debug_shape=tileid:all generates shapefiles for every polygon in the tile
This is usefull to setup individual debug polys on subsequent passes.
Also added load, clip, and with_slivers and clean layers for debugging
--debug-dir=pathname points to the debug root directory. each tile will create a sub directory in this existing directory. (default is '.')
--debug-shapes=tileid:shape1,shape2,etc.. lists the shapes to debug within a tile
example: if the tesselator crashes in shape id '123', you can rerun with --debug-shapes=2678440:337
implemented the same bounding box optimization from tesselate in FixTJunctions. Also fixed a bounding box issue that could cause some
elevation points to be missed.
brought in the latest version of clipper - and moved the #define to the construct header
some debug cleanup (especially in polygon loading)
- generates an intermediate file for the whole linestring, but as seperate poly/texcoord pairs
- construct generates the union ofthe polys for the main clip routine
- intersection ot the original segment with the clipped mask gives the clipped segment
This cuts ~75% of clipping time for really complex tiles. 8 tiles for Madeira went from
4:45:00 to 1:04:00
- fix really bad facelist generation.
- add a face area list in superpoly - each triangle area was calculated twice
- cleanup contruct_bucket - calls a function for each step.
TODO : move groups of operations into their own files
i.e. load, clip, elevation, shared edges, and output
- some small optimizations made by storing triangle nodes in addition to triangle coordinates in TGSuperpoly. More can be done, here.
- Brute force methos of generating alist of faces for each nodes that the face has is completely brute force. Looking at original method, I think I can make it work, which should be a significant speedup.
- fixed exception in find_point_inside.
NOTE: second fix can cause some gaps, as the polygon cleaning can result in a smaller poly than the original. Need to clean polys after diff, before adding the result to the union.
I'm now able to build all of
adeira - and tile matchine looks good. Some gaps visible when roads are cleaned incorrectly.
- fixed tile matching using add_intermediate_nodes
- source code rearrangement phase 1 - remove a lot of libraries that are not used by other apps
- move some of the Buildtiles libraries that are used by other apps (and libs) into terragear lib directory
- debug message overhal - to show some progress.
TODO - not implemented yet
- caculate face nodes and save in superpoly (where the faces are stored)
- calculate node normals, and store in tg_nodes (where the nodes are stored)
TODO - bugs
- find_intermediate_nodes isn't working for a lot of roads - still many t-juntions making visible gaps
- flatten ocean nosed is also creating gaps
- there's a grey poly on madeira - need to investigate
Just three airports crashed, and no hangs. One of the crashes is still NZSP
I don't know if I'll fix this soon. It's the south pole problem with stuff
crossing the IDL.
- Added dome debug support for generating shapefiles from TGPolygon.
This allows directly creating shapefiles instead of chopping a poly, then
having to run poly2ogr on it. The API is flexible, allowing multiple
datafiles, and layers open simutaneously, and the features in the shapefiles
have a description field that can be set.
- Added a restart-id= which allows a bash script to check the exit value of genapts,
and automatically restart on the airport after the one that crashed.
I've included an example script I have used.
- Stability fixes:
1) actually, this is both stability, and graphical fix. Some airport linear
features and polygon contours were using bezier nodes for straight lines.
When the control point lies just outside the line, the parser would attempt to
draw a 'hook' unfortunately, some of my calcs return NAN, and sometimes you just
get crazy looking polys to attempt to clip - not good.
Fix is to check cubic and quadratic nodes to see if they should really be linear.
Substitute linear segments where apropriate.
2) Along the same line as 1, There are some really short bezier segments, that were
getting subdivided into the hard coded 8 segments. Now, if the approximately linear
distance of the curve is less than 4 meters, the curve is broken into 1/2 meter segments.
Likewise, if the curve is greater than 800 meters, the curve is broken into 100 meter
segments.
3) Sometimes, during clipping, degenerate ontours are created. Although these are cleaned
before triangulation, there were still issues with generating the accumulation poly with
the union operator, causing a crash. I now simplify, and reduce degeneracy on all polys
before clipping against the accumulator.
- Extra special bonus - successful completeion of an airport is printed in green :)