[Qgis-developer] QGIS Engine development
mihis.sakh at gmail.com
Wed Nov 21 06:34:15 PST 2012
Marco Hugentobler-4 wrote
> I don't know if AGG would be faster than the Qt raster paint engine and
> how much. It would be very interesting to have the comparison AGG <-> Qt
> raster engine (and maybe libcairo as well).
> With AGG / cairo, the approach would be to create a new Qt paint engine
> based on these libs (rather than changing the code in qgis core to be Qt
> free). If someone knows of an AGG paint engine implementation or likes
> to create one, that would be very interesting.
There is point of view (which I consider to be right) that implementation of
painting engine (like one in Qt, Cairo, GDI+) with one large Painter class
on the top of
AGG is totally inefficient because of the template architecture of this
library. Maybe much
more efficient approach will be implementation of light weighted wrapper of
AGG, which will
look like a system of classes for optimized rendering of spatial data.
However the absolute majority
of cases when you need really fast spatial data rendering is when you need
to display set of
large vector layers like rivers, lakes, elevation contours, coastline and so
on. Such kind of features
in cartography are expected to be displayed on the map by identical graphics
symbols (lines of the same width and color, polygons withe same outline and
the same fill color and so on).
In such situation the most efficient approach is to minimize the number of
calls of rasterisation
algorithm (rasterize all identical graphics symbols at a time). This
definitely can be easily implemented
with the help of AGG. And what about Qt? I can mistake but it seems to me
that such classes
as QPainter are often hardcoded things (Cairo's painter class is hardcoded).
So does Qt painting engine
have enough potential for optimized usage to be used for efficient spatial
However in my opinion (but I may mistake) rendering of spatial data is not
the main issue
in the terms of QGIS performance problem. It seems that main problem lies in
usage of GDAL/OGR,
which tendency to support great number of vector and raster data formats may
have negative influence
on its performance. Of course, it's possible to give users opportunity to
switch to another memory usage model (store all data in memory), furthermore
as I know QGIS Engine already has implementation of such technique for
vector data (QgsMemoryProvider). That will lead to significant improvement
but in my opinion to make QGIS be competitive with proprietary GIS systems,
fast spatial data rendering system with efficient memory usage should be
implemented. So, are there any ideas about implementation of own QGIS
spatial data formats, or other possible ways to speed up process of reading
data from files?
I apologize in advance for my posts, because they may sound like criticism
of QGIS. Indeed I haven't used QGIS much. I work in commercial company,
which is planning to build its own GIS system only for internal work. The
key problem is that this system must be able to work fast with really large
raster and vector files. My boss doesn't want the system to be created from
scratch, he wants me to use some open source GIS platform. That's why I am
very interested in the real temps of QGIS Engine development, who and how
many developers really work on these problems? I also have investigated
situation around more fast gvSIG, but it is Java-based and unlike QGIS seems
not to have API for development of standalone GIS applications.
Also I would not pay attention for QGIS performance problems if I hadn't
keep in mind an example of one university experimental GIS development
project. It resulted in the development by one person of simple GIS
application with own vector data format and AGG based rendering, without
some complex systems of data caching or tricky techniques of reading data
from files, without thread support, built with old Borland С++ compiler.
Some time ago I tested it and was really surprised to find that it worked a
bit slower the multithreaded gvSIG and much faster then QGIS.
I apologize for my post again, I have no aim to criticize QGIS. I believe it
to have great potential in improving of performance. I am only trying to
investigate the real situation. Are there real detailed
plans for improvement of QGIS Engine? And what are the real opportunities of
QGIS community to implement these plans in program codes?
Tim and Marco, thank you for your replies.
View this message in context: http://osgeo-org.1560.n6.nabble.com/QGIS-Engine-development-tp5017647p5017931.html
Sent from the Quantum GIS - Developer mailing list archive at Nabble.com.
More information about the Qgis-developer