BruTile - database difference?

Apr 28, 2014 at 8:23 AM
Hi,

I just wanted to understand how is BruTile(Tiling) different from data stored in form of tables in a database(i.e. Postgres)?

Thanks
Coordinator
Apr 28, 2014 at 10:37 AM
Edited Apr 28, 2014 at 10:45 AM
BruTile is only about tiles, not other kind of geodata (in the future it might support vector tiles).

BruTile is mainly used as a client side componenten. It's primary purpose is to accesses web services that publish tiles, like this:
http://a.tile.openstreetmap.org/3/7/2.png
Those tiles can be stored in a local database for caching as in the MBTiles format (look at the BruTile.MBTiles project). Other forms of local caching are also possible like storing it as an image on disk. There is also a BruTile.DBCache (in the BruTile.Desktop project) which could be used to store tiles in other databases like Postgres.

Does that answer your question?
Apr 29, 2014 at 5:01 AM
Thanks for the prompt answer, pauldendulk!

As i understand, only images can be published using BruTile, no vector data as of yet!

Can you please answer one more doubt, if at all one wants to develop an application like Google Earth(could also be a 2D application) what could be the approach to get imagery data on the fly?? Satellite images occupy large space on the hard disk so if i try to access and render these images directly in my application, i am sure it will take long time in loading.

in the scenario described above, BruTile could be helpful or database like Postgres or a combination of both?

Thanks
Coordinator
Apr 29, 2014 at 1:05 PM
meetmak wrote:
Can you please answer one more doubt, if at all one wants to develop an application like Google Earth(could also be a 2D application) what could be the approach to get imagery data on the fly?? Satellite images occupy large space on the hard disk so if i try to access and render these images directly in my application, i am sure it will take long time in loading.
In most common scenarios the images are retrieved from the web service on the fly. A smart client can retrieve only those tiles that are visible and perhaps a little more to prepare for what next. The reason to create a local cache is usually no- or limited internet access, not performance. If you use local caching I would suggest SQLite (MBTiles).

This silverlight example fetches tiles on the fly. Judge by yourself if it is sufficient:
http://brutiledemo.appspot.com/
Apr 29, 2014 at 4:34 PM
yea, that's the perfect example. In fact i saw this page while crawling on your website.

How do i achieve the same results in a desktop application? Data used in the above mentioned application is from OSM so that can be downloaded, no issue bot how do i about achieving the same results in a desktop offline application

Can you please elaborate upon the methodology? (I am comfortable using DotSpatial, no issue in shifting to other if it can be done optimally)

Thanks
Coordinator
Apr 30, 2014 at 8:31 AM
Edited Apr 30, 2014 at 8:36 AM
  • DotSpatial also uses BruTile but I do not know the details. It you could insert a ITileSource somewhere you can probably use all BruTile's functionality.
  • SharpMap is another option. https://sharpmap.codeplex.com/
  • You could use Mapsui. It still is undergoing a lot of changes. https://mapsui.codeplex.com/
For an offline application I would use MBTiles. You could cache tiles on the fly to support a unstable internet connection. If you need to work offline all the time you need a complete MBTiles package. This is not easy to get. It is a lot of data (gigabytes) and you are not allowed to harvest the osm server in bulk. At my company we installed our own OSM server and harvest this. A process which can take days for just the netherlands.