[Marble-devel] Review Request: GSoC2012 Vector tile rendering. All the remaining code changes needed.

Ander Pijoan ander.pijoan at deusto.es
Mon Aug 27 08:56:30 UTC 2012



> On Aug. 14, 2012, 7:44 p.m., Torsten Rahn wrote:
> > src/lib/StackedTile.cpp, line 84
> > <http://git.reviewboard.kde.org/r/106013/diff/1/?file=77674#file77674line84>
> >
> >     Did you check by chance whether this couldn't even happen for TextureTiles? - Anyways, good that this is checked for (and yes that is one of the cases where I wouldn't favor an assert.

I wrote the comment in the begining because for image tiles that was a very important method for downloading tiles and creating the map. VectorTile doesn't call this method al all now.


> On Aug. 14, 2012, 7:44 p.m., Torsten Rahn wrote:
> > src/lib/TileLoader.cpp, line 112
> > <http://git.reviewboard.kde.org/r/106013/diff/1/?file=77683#file77683line112>
> >
> >     Hm, what is the reason for not accepting the Expired status? Is it just to trigger the "insert code here" action once the feature is added in the future?

This was already in the code. Currently if the execution gets there "Expired" is the only possible tile status (Missing, Expired, Available) but I guess this is in case in the future more status are created.


> On Aug. 14, 2012, 7:44 p.m., Torsten Rahn wrote:
> > src/lib/geodata/data/GeoDataLatLonAltBox.h, line 78
> > <http://git.reviewboard.kde.org/r/106013/diff/1/?file=77697#file77697line78>
> >
> >     What is the use-case of such an API inside GeoDataLatLonAltBox? Why is it needed? :)

VectorTileLayer keeps a GeoDataLatLonAltBox inside a qCache ( QCache< GeoDataLatLonAltBox, CacheDocument> m_documents ) for all vector tiles that are being displayed in the screen ( in other words, all the tiles that are inside the TreeModel ). 

This qCache is checked everytime the map is moved by comparing if every GeoDataLatLonAltBox intersects with the map views GeoDataLatLonAltBox. So if a tile does not intersect any more, it is removed from the TreeModel ( only from the treeModel, the tile is not deleted ) for it to be as lighter as possible and to have just the minimum amount of geometries that need to be rendered inside the screen.

So for using a GeoDataLatLonAltBox as a Key inside the qCache, the qHash method is needed.


- Ander


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/106013/#review17410
-----------------------------------------------------------


On Aug. 14, 2012, 2:37 p.m., Ander Pijoan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/106013/
> -----------------------------------------------------------
> 
> (Updated Aug. 14, 2012, 2:37 p.m.)
> 
> 
> Review request for Marble.
> 
> 
> Description
> -------
> 
> More documentation can be found here: http://techbase.kde.org/Projects/Marble/GSoC2012
> 
> Review Request #106009 needs to be previously submitted, for this to work.
> 
> During this GSoC2012 n order to make Marble download, render and manage vector data tiles, some classes have been created. The download url written in the .dgml file will download the tiles according to OpenStreetMaps tile names and it will try to parse them with all Marble's parsers. This GSoC tests have been made with the .dgml file included in this review and Kothic's server json tiles (hosted on http://osmosnimki.ru/vtile/ - please don't use it heavily-loaded projects for now) while OpenStreetMap finishes building its own data tile server. These Kothic tiles have a very similar format (https://github.com/kothic/kothic-js/wiki/Tiles-format) to the ones that OSM will have.
> 
> When Vector data is parsed it is stacked in an abstract class Tile (which is extended by ImageTile or VectorTile depending on the map) and is sent to VectorTileLayer which renders it.
> 
> 
> Diffs
> -----
> 
>   data/CMakeLists.txt d612723 
>   data/maps/earth/vectorosm/0/0/0.jpeg PRE-CREATION 
>   data/maps/earth/vectorosm/0/0/0.js PRE-CREATION 
>   data/maps/earth/vectorosm/0/0/0.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend.html PRE-CREATION 
>   data/maps/earth/vectorosm/legend/airportapron.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/airportrunway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/boundary.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/bridge.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/bridleway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/byway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/cycleway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/footway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/motorway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/primaryroad.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/railway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/railwaystation.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/secondaryroad.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/significantbuilding.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/subway.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/summitpeak.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/track.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/tram.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/trunkroad.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/tunnel.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/unclassifiedroad.png PRE-CREATION 
>   data/maps/earth/vectorosm/legend/unsurfacedroad.png PRE-CREATION 
>   data/maps/earth/vectorosm/srtm.jpg PRE-CREATION 
>   data/maps/earth/vectorosm/vectorosm-preview.png PRE-CREATION 
>   data/maps/earth/vectorosm/vectorosm.dgml PRE-CREATION 
>   src/lib/CMakeLists.txt 5d05e21 
>   src/lib/DownloadRegion.cpp a36dc60 
>   src/lib/DownloadRegionDialog.cpp a67c7aa 
>   src/lib/ElevationModel.h 69f7e6a 
>   src/lib/ElevationModel.cpp 6e36298 
>   src/lib/FileStoragePolicy.cpp 6a505b7 
>   src/lib/FileStorageWatcher.cpp 27c5dae 
>   src/lib/GeoDataTreeModel.cpp 7c5649d 
>   src/lib/GeoGraphicsScene.cpp d03886f 
>   src/lib/GeoPainter.cpp f57a3ca 
>   src/lib/MapWizard.cpp 068e710 
>   src/lib/MarbleMap.cpp a0e2b8b 
>   src/lib/MarbleModel.cpp 838c704 
>   src/lib/MarbleRunnerManager.cpp a0b8f0d 
>   src/lib/MergedLayerDecorator.h 1a6906d 
>   src/lib/MergedLayerDecorator.cpp 119a3e2 
>   src/lib/ScanlineTextureMapperContext.h 06518b0 
>   src/lib/ScanlineTextureMapperContext.cpp ff3197b 
>   src/lib/ServerLayout.h 04c244f 
>   src/lib/ServerLayout.cpp 3a67f41 
>   src/lib/SphericalScanlineTextureMapper.cpp 0d6bb93 
>   src/lib/StackedTile.h aac0126 
>   src/lib/StackedTile.cpp a230b62 
>   src/lib/StackedTileLoader.h 87dd6b6 
>   src/lib/StackedTileLoader.cpp 812a4ed 
>   src/lib/StackedTile_p.h 2e6188c 
>   src/lib/TextureTile.h bf6e33f 
>   src/lib/TextureTile.cpp 97bae36 
>   src/lib/Tile.h PRE-CREATION 
>   src/lib/Tile.cpp PRE-CREATION 
>   src/lib/TileLoader.h c2f68ec 
>   src/lib/TileLoader.cpp 1ca214b 
>   src/lib/TileScalingTextureMapper.cpp 1ee41a5 
>   src/lib/VectorTile.h PRE-CREATION 
>   src/lib/VectorTile.cpp PRE-CREATION 
>   src/lib/VectorTileMapper.h PRE-CREATION 
>   src/lib/VectorTileMapper.cpp PRE-CREATION 
>   src/lib/blendings/Blending.h ae56e7a 
>   src/lib/blendings/BlendingAlgorithms.h 49d3206 
>   src/lib/blendings/BlendingAlgorithms.cpp 07ce60e 
>   src/lib/blendings/SunLightBlending.h 6628d22 
>   src/lib/blendings/SunLightBlending.cpp 6f2f8fb 
>   src/lib/geodata/data/GeoDataContainer.cpp bdd8fa0 
>   src/lib/geodata/data/GeoDataContainer_p.h b3a3872 
>   src/lib/geodata/data/GeoDataFeature.cpp dd5fcc8 
>   src/lib/geodata/data/GeoDataLatLonAltBox.h 15f7d16 
>   src/lib/geodata/writers/dgml/DgmlTextureTagWriter.cpp 202ea85 
>   src/lib/layers/CMakeLists.txt 7b46acf 
>   src/lib/layers/GeometryLayer.cpp 9ec92aa 
>   src/lib/layers/TextureLayer.h b6e74d9 
>   src/lib/layers/TextureLayer.cpp f5de718 
>   src/lib/layers/VectorTileLayer.h PRE-CREATION 
>   src/lib/layers/VectorTileLayer.cpp PRE-CREATION 
>   src/marble_part.cpp 808ca59 
>   src/tilecreator/CMakeLists.txt 2963831 
>   tests/TestGeoSceneWriter.cpp 4b88580 
> 
> Diff: http://git.reviewboard.kde.org/r/106013/diff/
> 
> 
> Testing
> -------
> 
> Testing done with the .dgml and the files attached.
> 
> 
> Thanks,
> 
> Ander Pijoan
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/marble-devel/attachments/20120827/e1f610cd/attachment-0001.html>


More information about the Marble-devel mailing list