Related Plugins and Tags

QGIS Planet

Present at the 2nd International QGIS User and Developer Conference!

The Call for Presentations and Workshops for the 2nd International QGIS User and Developer Conference, is already open!

The Local Organising Committee of the 2nd International QGIS User and Developer Conference, is pleased to announce the call for Presentations and Workshops for the 2016 Conference to be held in Girona (May 25th – 26th). If you have an open source geospatial story to tell, based on QGIS, we want to hear it!


Call for Presentations
Deadline: February 15th

The QGIS Conference presentations are 20 minutes long, with time for Q&A at the end of each talk. Presentations may cover any aspect related with the use or development of QGIS software. Anyone can can submit a presentation proposal and take part in the conference as a presenter. The received proposals will be reviewed by the program committee.

See full details at http://www.sigte.udg.edu/jornadassiglibre/en/international-qgis-user-and-developer-conference/conferencia-qgis/


Call for Workshops
Deadline: February 15th

There are two kinds of workshops depending on the duration: 2 hours or 4 hours. If you want to actively participate in the 2nd Int. QGIS Conference and impart a workshop, don’t hesitate to send your workshop proposal to [email protected]

The proposal should be a brief abstract pointing out the expected duration of the workshop (2 hours, 4 hours) as well as a few lines describing the content of the workshop, pre-requisites for the attendants (if needed), name of the instructor…

The instructors of the selected workshops will receive a free pass for the conference.

See full details at http://www.sigte.udg.edu/jornadassiglibre/en/international-qgis-user-and-developer-conference/workshops-qgis/

For further details, please send an email at [email protected]

Help us to plan for QGIS 3.0

Many of you out there may be wondering ‘when are we going to release QGIS 3.0?’. Last year (2015) we started investigating when and how we would release QGIS 3.0. We promised (see Anita Graser’s post about this) that we would convey clearly to our users and developers our plans well before making the QGIS 3.0 release. In this post I will try to lay out some of the considerations for a QGIS 3.0 release and at the end of this post there is an opportunity for you to present your ideas.

Why 3.0?

Typically (when following semantic versioning) a major release is reserved for times when you break the API of your software. Breaking API is not a trivial decision for the QGIS project since we have hundreds of thousands of users out there who depend on QGIS to ‘just work’, and many developers who need to maintain third party software written on top of the QGIS API.

From time to time breaking the API is necessary to accommodate updating the architecture with improved approaches, new base libraries and fixes to sub-optimal decisions made in the past.

What are the implications of breaking the API?

One of the reasons we are hesitant about releasing an API breaking QGIS 3.0 release is that it will have a huge impact, potentially breaking the hundreds of plugins in the plugin repository. Plugins would no longer compatible with new API and plugin authors would be required to manually review their plugins to identify and update  the places in their plugins where the code is no longer compatible with the new API.

The breadth of the updates required depends largely on

  • how many backwards incompatible changes we make to the API
  • how many places plugin authors have used parts of the API which have changed

I will talk more about how we can mitigate API breaking changes  further on in this article.

What will be the key changes for 3.0?

There are four key areas that we are looking to change in 3.0:

  • Updating Qt4 to Qt5: This is the basic set of libraries on which QGIS is built and provides a high level, platform independent abstraction layer for building a graphical user application. Qt also provides libraries for carrying out disk i/o, networking operations, and graphics drawing operations (key functionality for QGIS). Qt4 (on which QGIS is currently based) is now not actively being developed by the Qt library maintainers and we are expecting to experience problems in the near future building Qt4 for some platforms (e.g. OS X) or having readily accessible binaries  (e.g. Debian Testing and the upcoming release of Debian “Stretch”). Making QGIS work with Qt5 has already been worked on (chiefly by Matthias Kuhn) who together with Marco Bernasocchi produce the Android “QField” port of QGIS which is based completely on Qt5. There are however some outstanding limitations in the newer Qt5 that impact on QGIS – in particular with the embedded web browser widgets (used chiefly in the QGIS composer but also a few other places in QGIS).
  • Updating PyQt4 to PyQt5: These are the python language bindings for Qt which the QGIS python API relies on. When we shift to the Qt5 C++ library, we also want to shift to the updated PyQt5 python library so that we can benefit from the new Qt5 API within the python environment too.
  • Updating Python 2.7 to Python 3: Currently we bundle in Python 2.7 in our windows installers and require 2.7 on other platforms where we do not co-bundle Python with QGIS. Python 3 is the latest version of python and is recommended by the Python project. Python 2 is slightly incompatible with Python 3 (in much the same way as QGIS 2 -> QGIS 3 will be incompatible). The python developers have made Python 3 largely backwards compatible to Python 2, but the compatibility in the opposite direction is not as good.
  • Improving the QGIS API itself: One of the issues with maintaining API compatibility between releases is that you have to live with your design choices for a long time. In QGIS we try our best not to break the API within a minor release series – not always with success as the more hard core developers will attest to. Releasing an API incompatible version of QGIS for 3.0 will give us an opportunity to ‘clean house’ by fixing things in the API that we are unhappy with. You can see a provisional list of proposed API changes for 3.0 by looking at the 3.0 API issues list.

Mitigating 3.0 API breakages

As I mentioned the 3.0 release will break API from the 2.x release of QGIS and there is the potential that many existing plugins, applications and other code that rely on the current API will be broken. So what can we do to mitigate the changes? Matthias Kuhn, Jürgen Fischer, Nyall Dawson, Martin Dobias and other core developers have been looking at ways to mitigate the number of API breaking changes whilst still advancing the QGIS codebase to be based on the next generation of libraries and its own internal API. During our last QGIS Project Steering Committee meeting we ran through various possibilities. Matthias Kuhn kindly joined the meeting to help clarify our options going forward which I have tried to summarise in the table below:

QGIS 2.14 LTR QGIS 2.16 ??? QGIS 3.0
Release date End Feb 4 months after 2.14 8 month cycle?
Notes Update python code of core QGIS to be Python 3 compatible and PyQt5 compatible (partial implementation for key functionality e.g. console, python core plugins etc.)
Qt4 Yes

Deprecated in Debian Stretch (due in a year)

(webkit removed)

Yes No
Qt5 No

Misses QWebView – new replacement not on all platforms. Also misses QPainter Engine.

Yes Yes
PyQt4 Yes Yes No
PyQt5 No Yes Yes
Python 2 Yes Yes No
Python 3 No Yes Yes
API Cleanup No No Yes
Wrappers
PyQt5 -> PyQt4
Provide ~90% backwards compatibility
No Yes Yes
Mainstream Binary Qt4 Based Qt4 Based Qt5 Based
Funding priority Python wrappers

There are two key things to note about Matthias’ proposal:

  • In the first phase, work would be done in the QGIS 2.x series to complete support for Qt5, PyQt5, Python 3.0 whilst still supporting Qt4, PyQt4 and Python 2.7. This implies that all changes made in the first phase would be backwards compatible with previous QGIS 2.x releases. Python wrappers will be introduced so that the old PyQt4 API can still mostly be used when compiling against Qt5, PyQt5, Python 3.0. When using QGIS compiled against Qt4, PyQt4 and Python 2.7 there would be no compatibility breakage.
  • In the second phase, we would work to produce QGIS 3.0 which introduces a number of API breaking changes, completely removing Python 2.7, Qt4 and PyQt4 support. The python wrappers produced in the first phase would be kept and relied on to ensure that a large proportion of python code (plugins, scripts etc.) developed for QGIS 2.x releases continue to work in QGIS 3.x releases. In this phase we would also introduce the QGIS API changes which may break some plugins. To address this we will provide a migration guide to try to ease the process for those moving from code depending on the QGIS 2.x releases to the QGIS 3.x releases.

Caveat emptor

There are a couple of ‘gotchas’ that we should raise at this point as the above makes the migration to QGIS 3.0 sound fairly painless.

  1. The first thing we should emphasise is that while the approach laid out above tries to minimise the amount of work python script and plugins writers have to do, this will not be a 100% effort free solution for python coders using QGIS. There will very likely be cases where code needs to be adjusted and in all cases at the very least it will probably need to be reviewed in order to ensure that it still functions properly.
  2. There is no formal funding set aside to pay for developers to spend their time working on the migration process. Because of this it is going to be incredibly hard to give accurate timelines as to how long each part of the process will take. We need to take this uncertainty into account in our planning. Of course we welcome donations to help make this happen.
  3. There may be developers and institutions out there funding new features for the QGIS 2.x series and this may affect your work. You should include in your project plans and budgets some allocation to cope with the migration to the QGIS 3.x platform.
  4. If we do the work in the ‘master branch’ there may be a protracted time during which our master branch is unstable and in flux due to ongoing updates towards QGIS 3.0.
  5. If we do the work in a ‘3.0 branch’, we run the risk that the 3.0 development may drag on longer unless there is a devoted group of developers working on it and getting it ready to merge to master.

Proposals

In the light of all the above information, we propose one of two courses of action:

Proposal 1:

Do an interim release of 2.16 and then commence work on 3.0 in master with an 8 month development window. Work on 3.0 related stuff could already begin in 2.16  (see python3/pytq5), only incompatible changes have to be postponed to post 2.16.

Advantage: Main focus of work would be in master branch. Work scheduled for the near future can be released in expected timelines. Plugins will continue to work with master. People can start to write and test their code in a portable manner.

Disadvantage: Difficult to determine timelines as we don’t have funding

 

Proposal 2:

Create a long running 3.0 branch for the port to Qt5, Python 3.0 and PyQt5 and call for developers to get their 3.0 work in there. Continue with 2.x releases with the usual frequency until 3.0 is ready.

Advantage: We can release it ‘when it’s ready’. If there is no funding for 3.0 work subsequent releases are not jeopardised.

Disadvantage: Duplication of effort as work in master coming in needs to be ported over to the 3.0 branch.

Alternative proposals

Do you have an alternative proposal? We would like to get all the proposals on the table so that we (the PSC in consultation with core developers) can make the best judgement of how to approach the nitty-gritty process of managing the QGIS 3.0 development process. If you wish to submit a proposal, please send it to me ([email protected]) with the subject line ‘QGIS 3.0 Proposal‘. Please keep your proposal very short and succinct as we just need the high level concepts.


 

Here is the proposal submitted by Matthias Kuhn that you can use as a reference of how we might like  a proposal to look:

QGIS 2.16 Release as usual in 4 months

-> PyQt5 Support
-> Python 3 Support
-> Wrapper library for PyQt4/PyQt5
-> Maybe a helper transition script that does 80% of the rewrite
-> All old plugins still work
-> Some python code is updated (console, plugin manager, processing) to
have some guidelines and experience how to update python code
-> For future debian, mac osx… versions there’s a qt5 version around
(with almost no plugins working)

During the same time: make some noise that QGIS 3 is coming and we need
everybody to put some money and dev time aside for it and that it’s
going to be amazing.

—————-

After that: 8 months break for 3.0 (maybe some betas after 4 months and
every month after)

Back to normal, everybody happy – except the lazy plugin devs who didn’t
update –:)


QGIS Top Features 2015

EN | PT

With the release of the first long term release (2.8 LTR), and two other stable versions (2.10 and 2.12), 2015 was a great (and busy) year for the QGIS community, with lots of improvements and new features landing on QGIS source code.

As a balance, I have asked users to choose wich were their favorite new features during 2015 (from the visual changelogs list). As a result I got the following Top 5 features list.

5 – Python console improvements (2.8)

Since QGIS 2.8, we can drag and drop python scripts into QGIS window and they will be executed automatically. There is also a new a toolbar icon in the plugins toolbar and a shortcut ( Ctrl-Alt-P) for quick access to the python console.

4 – Processing new algorithms (2.8)

Also in QGIS 2.8, there were introduced some new algorithms to the processing framework. If you are into spatial analysis this must have done your day (or year).

  • Regular points algorithm
  • Symmetrical difference algorithm
  • Vector split algorithm
  • Vector grid algorithm
  • Hypsometric curves calculation algorithm
  • Split lines with lines
  • Refactor fields attributes manipulation algorithm

3 – Show rule-based renderer’s legend as a tree (2.8)

There were introduced a few nice improvements to QGIS legend. Version 2.8 brought us a tree presentation for the rule-based renderer. Better still, each node in the tree can be toggled on/off individually providing for great flexibility in which sublayers get rendered in your map.

2 – Advanced digitizing tools (2.8)

If you ever wished you could digitize lines exactly parallel or at right angles, lock lines to specific angles and so on in QGIS? Since QGIS 2.8 you can! The advanced digitizing tools are a port of the CADinput plugin and adds a new panel to QGIS. The panel becomes active when capturing new geometries or geometry parts.

Untitled

1 – Rule-based labeling (2.12)

This was a very awaited feature (at least by me), and it was voted by the majority of users. Since 2.12, you can style features labels using rules. This gives us even more control over placement and styling of labels. Just like the rule based cartographic rendering, label rules can be nested to allow for extremely flexible styling options. For example, you can render labels differently based on the size of the feature they will be rendered into (as illustrated in the screenshot).

image25

There were other new features that also made the delight of many users. For example, the Improved/consistent projection selection (2.8), PostGIS provider improvements (2.12), Geometry Checker and Geometry Snapper plugins (2.12), and Multiple styles per layer (2.8).

Don’t agree with this list? You can still cast your votes. You can also check the complete results in here.

Obviously, this list means nothing at all. I was a mere exercise as with such a diverse QGIS crowd it would be impossible to build a list that would fit us all. Besides, there were many great enhancements, introduced during 2015, that might have fallen under the radar for most users. Check the visual changelogs for a full list of new features.

On my behalf, to all developers, sponsors and general QGIS contributors,

THANK YOU VERY MUCH FOR YOUR TREMENDOUS WORK!

I wish you a fantastic (and productive) 2016.

Crowd funding project for reading CAD documents in QGIS

Local governments on the municipality or provincial level often have to deal with DXF/DWG/DGN documents delivered from architects, urban planners or engineering companies. As an example, cadastral or utility offices or companies often have to import CAD documents to either check deliveries about correctness or import selected objects into their central database. Another requirement is being able to visualize planned objects, such as buildings or bridges alongside with the cadastral data.

QGIS lacks proper import of CAD data so far – DXF files can only be imported on very basic levels (without styling and labeling), DWG files can’t be imported at all.

A requirements document has been written to implement import of DXF/DWG (and potentially also DGN) files into QGIS, while maintaining styling, labeling, 3D, curves and blocks.

The company Norbit, with Jürgen Fischer, submitted an offer. Jürgen is a long-term QGIS developer and QGIS.ORG board member. Norbit has extensive experience with bridging GIS and CAD.

The plan is to use the Teigha library of the OpenDesign Alliance (ODA) to read the CAD documents. Either QGIS.ORG or OSGeo would become a member of the ODA, to get access to the source code and for distributing the Teigha libraries with QGIS binaries.

At this time we are looking for organisations or companies that help funding the effort. The offer from Norbit is over 32k €. We are looking for institutional crowd funders with minimum contributions of 1k Euros. If you are interested in contributing, please contact by mail at andreas (at) qgis (dot) org. We can send you an invoice for your contribution.

Addition: if you want to do smaller, targeted donations, please use the regular donation channels and mention “CAD import” in the payment instructions.

 


A word of thanks to the hosts of the 14th QGIS Hackfest in Gran Canaria

Last weekend (November 5th – November 8th, 2015) was a special occasion for the QGIS Project – we convened the 14th our ‘hackfest’ meeting!

QGIS hackfests are events where an organiser provides a space for collaboration and members of the community converge and self-organise to improve the QGIS project. We are very much dependent on the good will of our hosts – typically universities – for providing these spaces and the logistics needed to manage the provision of accommodation, food, internet and other needs of our participants over the duration of the hackfest. For this event our gracious hosts were Universitas de Las Palmas de Gran Canaria. Our presence at the University was endorsed and facilitated by:

  •  Rector of ULPGC: José Regidor García
  •  ULPGC Manager: Conrado Domínguez Trujillo
  •  CIO of ULPGC and Director of OSL (“oficina de software libre”, or Free Software Office): Jose Pablo Suárez Rivero.
  •  Councilor of New Technologies Area, Public Administration and Sports at Las Palmas de Gran Canaria Town Hall:  Aridany Romero Vega
  •  Senior professor of computer Science: Agustín Trujillo Pino
The local coordination team was headed up by Pablo Fernández Moniz (CTO and GIS Analyst). Pablo did an amazing job in pulling all the strands together making the event happen! He was assisted by an awesome team of helpers, and participants:
  • Design: Ramsés Cabello Developer (staff at the event): Jaisiel Santana Almedia
  •  Developer (staff at the event): Alejandro Sánchez Medina
  •  Developer (staff at the event): Chano OrtegaTrujillo
  •  Developer (staff at the event): Moises Bonilla

Our heartfelt thanks to all of the people who worked so hard to make this event happen, and to the participants who travelled from far and wide to attend the event. These events are a significant factor in the success of the QGIS project – they allow our developers and contributors to meet face to face and delve deep into technical issues that would be impossible to do under the somewhat disconnected collaboration environment provided by the internet.

Key Activities

There were just under 30 people in attendance at the hackfest – here are just a few of the activities that they were busy with during the hackfest:
  • Qt5 / Python 3 proof of concept by Matthias Kuhn
  • Topological editing with GRASS plugin (Radim Blazek) – video (not from event)
  • Geoserver explorer plugin (Luigi Pirelli)
  • General discussion and planning for the improvement of contribution workflows (pull requests, tickets, QEPs) and infrastructure (Redmine)
  • Improvement of analysis tools (ftools, processing) and their documentation
  • General bug fixes (Jürgen Fischer)
  • Improvements to the QGIS.org website (Richard Duivenvoorde and Anita Graser)
  • Implementation of a GitHub webhook to insert a ‘[FEATURE] issue’ so that documenters know to document new features as they are added to QGIS (Richard Duivenvoorde and Raymond Nijssen)
  • Processing support for loading Oracle data via OGR (Giovanni Manghi)
  • Launched the Italian QGIS User Group, updates to the  documentation of Lizmap web client, managed the Italian translation, the python plugin queue (Paolo Cavallini)

QGIS Sponsorship

Many of the costs not covered by our hosts were covered from central QGIS.org funds including food and travel costs for a number of participants. These funds originate from our donors and sponsorships and are an invaluable resource for the project to allow us to facilitate these events and move the development of QGIS forward. We encourage you to donate to the QGIS or become a sponsor if you would like to foster further innovation and support the long terms goals of the project.

More Information

If you would like further information about what was covered in the event, and to get a feel of the general atmosphere of the event, check out some of these links:

I will update the list above as more reports backs become available.

Thanks

With thanks from your project chair and the whole QGIS community,

timsutton


Your donations/sponsorships help to maintain and improve the quality of QGIS

The QGIS project is growing in size, number of contributors/contributions and code complexity. This introduces challenges for the project, especially for maintaining quality. Maintaining and improving quality is one of the main concerns of the QGIS.ORG board and some core developers.

Past and current QA efforts

Tim Sutton introduced a first unit test framework several years ago. But it wasn’t very visible then and passing the tests as a prerequisite to make changes to master wasn’t enforced. About a year ago, Matthias Kuhn introduced automated unit testing for the Linux builds – using Travis continuous integration testing. At our github page you can always see whether the master version builds fine and whether the tests are passing – see the green “Build passing” button at the beginning of the Readme.md file.

Since then, OS X automated building/testing was added. Pull requests (new contributions from developers) can be tested prior to integration into the master branch. Another effort was to use coverity code scans to detect memory leaks. Nyall Dawson and others did a lot of improvements/fixes due to this automated code scans.

Upcoming challenges

There is still a lot to do regarding quality and automated testing. Because continuous integration tests were only introduced about a year ago, it means that still a lot of areas in the code base remain untested. Also, the current unit tests do not test GUI interactions. There is an ongoing discussion if critical classes should have unit tests enforced for any code changes. Finally, our bug queue at http://hub.qgis.org/projects/quantum-gis/issues is still quite long, with lots of bigger and minor issues.

Your financial support really matters!

This is where your donations and sponsorships come in. For the past 3-4 releases we were able to pay 2-4 developers who worked for several days concentrating on bug fixing. For QGIS 2.12 we had Nyall Dawson, Jürgen Fischer and Larry Shaffer working on bug fixing. We also financially support Giovanni Manghi for working on our bug tracker (e.g. classifying issues correctly, trying to reproduce the issue, ask bug reporters for more details).

Now – you may wonder why they didn’t fix all the “BLOCKER”s first and then continue on with “HIGH”, “NORMAL” “LOW”  issues – and why a lot of unreported issues and issues with label “LOW” were also fixed? The answer is that it is often more efficient for the developers to concentrate on a certain part of the code – e.g. concentrating on geometry, labeling and editing issues, as Nyall did for this round of bug fixing. This means that he would not only fix issues labeled as “BLOCKER” or “HIGH” but also other bugs that are in the same code. Finally, not all of the “Blocker” and “High” bugs are reproducable or the issue may be much too hard/time consuming to fix.

Due to your financial support, the 3 developers were able to fix the following list of issues for the QGIS 2.12 release – many of the fixes also get back-ported to QGIS 2.8 LTS release:

  • Sweep of all changed dialogs, ensuring tab order is correct
  • UNREPORTED: Only save effect element if it is non-default (decreases size of qgs project files)
  • HIGH: Fix map rotation not considered for ellipse marker data defined rotation (#13367)
  • HIGH: Maintain order of recent expressions (#13461)
  • NORMAL: Make sure recent expression group is always listed last (#13462)
  • NORMAL: [diagrams] Fix initial value of transparency slider not set (#13434)
  • UNREPORTED: Fix potential crashes in renderer widgets
  • NORMAL: Fix legends are empty if presets used with filtered legend (#13300)
  • UNREPORTED: Fix crashes and inconsistent ui when atlas is set to a geometryless layer
  • BLOCKER: Fix diagrams are always shown, regardless of setting (#13501)
  • BLOCKER: Fix fill ring tool used with advanced digitising crashes QGIS (#13355)
  • NORMAL: Fix add ring/fill ring tool works on first polygon (#13069)
  • BLOCKER: Fix missing sip bindings for renderers (#13545)
  • BLOCKER: Fix crash in label property dialog (#13543)
  • NORMAL: Fix hardcoded border for raster legend items (#13540)
  • BLOCKER: Fix symbols drawn multiple times in rule based renderer if symbol (#13220)
  • BLOCKER: Use a model for node editor table, fixed hang when node tool used on large feature (#13541)
  • BLOCKER: Fix node tool duplicates nodes when topological editing and snap are both enabled (#13466)
  • NORMAL: Fix broken data defined SVG marker outline width (#13423)
  • HIGH: Scale svg marker outline width to match context (#11522)
  • HIGH: Allow coloring of svg markers and svg fills when used with graduated/categorised renderers (#11658)
  • HIGH: Fix svg outline widths are incorrectly scaled (#11522)
  • UNREPORTED: Fix snapping options dialog not correctly initialised when loading projects
  • UNREPORTED: Fix uninitialized variables in advanced digitizing dock which meant that sometimes advanced digitising tools would be activated unexpectedly
  • NORMAL: Fix curved labels ignore line orientation placement flag (#5778)
  • UNREPORTED: [console] Move run button earlier in console editor toolbar (prevents it being hidden in overflow menu on small screens)
  • UNREPORTED: Fix fill and outline color for svg markers sometimes enabled even though SVG file does not support parameters
  • UNREPORTED: Fix svg marker colors not correctly restored from project
  • UNREPORTED: If svg files with params do not have a default value set, then don’t reset the fill/border color and border width when changing svg marker/svg fill SVG files (made the behaviour consistent between the svg marker and the other marker symbols)
  • NORMAL: Fix svg symbols are shown in white and hard to see in svg picker (#10908)
  • NORMAL: Fix refining rule based renderer using expression (#10815)
  • UNREPORTED: Fix crash when changing symbol types on windows
  • BLOCKER: Fix split parts tool only leaves one of the newly created parts (#13421)
  • BLOCKER: Fix using add part tool to add part to geometryless rows (#12885, #11319)
  • UNREPORTED: Fix some potential crashes with edit tools and null geometry
  • UNREPORTED (thought I’d submitted this years ago but can’t find the issue now): Allow adding features with empty geometry via attribute table
  • HIGH: Allow delete part tool to remove geometry from single type point and line layers (#13258)
  • LOW: Fix overview canvas background color not set (#11157)
  • Add some unit tests for QgsWKBTypes
  • NORMAL: When adding ring to a geometry, add z or m dimensions to the ring geometry if required (#7400, #7401)
  • NORMAL: Also show features with modified geometry when “show edited and new features” filter is active in attribute dialog (#11684)
  • BLOCKER: Fix broken apply button in label config dialog (#13543)
  • BLOCKER: Fix area calculation when OTF active and no ellipsoid, add unit test (#13601)
  • UNREPORTED: Fix exporting geometry collections to WKT would result in invalid WKT
  • UNREPORTED: Fix unable to import WKT using MultiPoint(1 1,2 2,…) format
  • UNREPORTED: Fix GeometryCollection WKT to support collections with multi* children and GeometryCollection children (allowed by spec)
  • Add a bunch of unit tests to geometry
    – UNREPORTED: Fix calculation of area and length of mixed geometry collections
  • UNREPORTED: Fix geometry casting in python bindings (missing MultiLineString and GeometryCollection casts)
  • UNREPORTED: Fix calculation of length/perimeter for geometry collections
  • UNREPORTED: when creating geometry from WKT, upgrade dimensionality of geometry if coordinates are 3/4 dimensional
  • UNREPORTED: match dimensionality of collections to child dimensionality
  • UNREPORTED: fix area of curves was non-zero if curve is closed
  • UNREPORTED: don’t consider m values when testing for curve closedness
  • NORMAL: Fix merge attributes tool sets skipped attributes to null (#13231)
  • NORMAL: Add skip all option to merge attributes dialog (#6958)
  • UNREPORTED: Fix QgsStatisticalSummary sometimes returning 0 for StDevSample stat
  • UNREPORTED: Fix storing string representations of doubles in an int field results in NULL rather than converting value to int
  • NORMAL: Fix merge attributes/features tool resets values to null for int fields and add a warning if merged attribute value is not compatible with field type (#12842)
  • Fix a LOT of leaks relating to geometry and GEOS operations, labeling
  • UNREPORTED: [pal] Fix regression in placement for free/horizontal polygon labels
  • Add tooltips to advanced digitizing dock
  • Fix a crash in filtered legends
  • Reviewed and merged several bug fix PRs
  • #13433: Help text for rpad and lpad in field calculator are mixed up
  • #13417: missing libqgis_app.so
  • #13420: Strange behaviour of newly ‘saved as’ project
  • #13463: Identify Results panel always show newly created features in the list
  • #13538: PostGIS tables containing MultiPolygonZ crash QGIS master
  • #13546: qgis trying to update first empty text row with null in db
  • #13027: Join by location does not work when layers have equivalent field names
  • #13032: Save as… fails to populate fields if layer has similar names only different by case
  • #13052: Problem with reshape
  • #10747: Cannot copy/paste points features
  • #13506: Processing help files for QGIS algs all dead now
  • #13274: API combine method for geometry
  • #11755: Real precision (Shapefile)
  • #9208: QGIS crashes when using addAttributes on any vector data provider
  • #13579: Crash Dump 2.11 with user defined expressions
  • #10515: QGIS Crash when trying to load a point layer to georss file
  • #11276: Setting radius units to meters produces incorrect results
  • #13641: editing a feature in a PostGIS layer does not work when the PK contains NULLs
  • #13631: when ELSE rule exists in Styling, all Labels are rendered regardless of styling groups being active/inactive
  • #13638: Cannot load emptry Postgis views
  • #8255: in edit mode changing primary key discards geometry modifications
  • #13594: DB Manager – unable to add a Postgres/PostGIS raster as layer
  • #13446: MYSQL Project File
  • #13310: nightly build packages failing to install with grass error
  • (PR#2378: Allow postgis layers from queries to have multiple column primary keys)
  • (PR#2376: the test for uniqueness now also works for multiple columns by SebDieBln)
  • (#13645: ftools “line intersection” crashes qgis)
  • (#13646: Merge shapefiles from fTools crashes QGIS)
  • transifex updates & german translation
  • attribute editing: don’t allow editing without ChangeAttributeValues capability
  • vector layer: avoid some crashs when methods are called on invalid layers
  • oracle provider: fix call of sdo_filter to verify a spatial index is present
  • #13641: postgres provider: verify unique constraint if NOT NULL is not set on key columns (shortly after release)
  • Commit 6a4544f fix fetching of redirected wms capabilities (followup e95bf6d)

Getting multipolygon vertexes using PostGIS

EN | PT

Today I needed to create a view in PostGIS that returned the vertexes of a multi-polygon layer. Besides, I needed that they were numerically ordered starting in 1, and with the respective XY coordinates.

Screenshot from 2015-11-05 23:58:19

It seemed to be a trivial task – all I would need was to use the ST_DumpPoints() function to get all vertexes – if it wasn’t for the fact that PostGIS polygons have a duplicate vertex (the last vertex must be equal to the first one) that I have no interess in showing.

After some try-and-fail, I came up with the following query:

CREATE OR REPLACE VIEW public.my_polygons_vertexes AS
WITH t AS -- Transfor polygons in sets of points
    (SELECT id_polygon,
            st_dumppoints(geom) AS dump
     FROM public.my_polygons),
f AS -- Get the geometry and the indexes from the sets of points 
    (SELECT t.id_polygon,
           (t.dump).path[1] AS part,
           (t.dump).path[3] AS vertex,
           (t.dump).geom AS geom
     FROM t)
-- Get all points filtering the last point for each geometry part
SELECT row_number() OVER () AS gid, -- Creating a unique id
       f.id_polygon,
       f.part,
       f.vertex,
       ST_X(f.geom) as x, -- Get point's X coordinate
       ST_Y(f.geom) as y, -- Get point's Y coordinate
       f.geom::geometry('POINT',4326) as geom -- make sure of the resulting geometry type
FROM f 
WHERE (f.id_polygon, f.part, f.vertex) NOT IN
      (SELECT f.id_polygon,
              f.part,
              max(f.vertex) AS max
       FROM f
       GROUP BY f.id_polygon,
                f.part);

The interesting part occurs in the WHERE clause, basically, from the list of all vertexes, only the ones not included in the list of vertexes with the maximum index by polygon part are showed, that is, the last vertex of each polygon part.

Here’s the result:

Screenshot from 2015-11-05 23:58:40

The advantage of this approach (using PostGIS) instead of using “Polygons to Lines” and “Lines to points” processing tools is that we just need to change the polygons layer, and save it, to see our vertexes get updated automatically. It’s because of this kind of stuff that I love PostGIS.

Open Source, why?

EN | PT

During my professional and personal life, I have worked with much different software, with all kinds of licenses. Most of them would be proprietary, closed and / or commercial code. So why devote my time and learning “exclusively” to Open Source?

Without going into detail about the differences between open source software and free software, there are several reasons why FOSS (Free and Open Source Software) interest me.

The first is obviously freedom. Be free to use the software in any context and for any purpose, without being limited by the costs of software acquisition and / or the rules and conditions imposed by the manufacturer (as many said free (as beer) software do). That allows me to, for example, familiarize myself with its features without having to use piracy, or, as a freelancer worker, develop my work based on my technical capacities rather than my financial ones.

Second, the community and collaborative factor. The fact that open source software is built by user and for users, where the main goal is to enhance the software functionality (and not just raise the number of sales), and wherein each enhancement introduced by an individual or company is subsequently shared for the benefit of the whole community, avoiding duplication and “reinventing the wheel”. This is done in part through a lot of volunteer work and constant sharing of knowledge, either by the programmers or users. Thus, together, we all evolve at the same time as the software itself. In addition, everyone can contribute in some way, by producing code, writing and preparing supporting documentation, translating them into other languages or just by reporting bugs.

Finally, the “costs“. The adoption of open source software in enterprises (including the public ones), allow them to focus their investments in training of the human resources and the possible (and desirable) sponsoring of new features that are essential for their workflow, usually for a small portion of the values to spend on the acquisition of commercial software (that usually “forces” the purchase of features that may never be used).


Introducing the QGIS Board

Transition
The QGIS PSC (Project Steering Committee) is in transition to becoming a Board. We are registering the project as a Swiss ‘Verein‘ (Association) which will be known as QGIS.ORG and will function as a not-for-profit company, serving the interests of the QGIS project.  The motivation for the transition to a legal entity is described in QGIS QEP (QGIS Enhancement Proposal) #16. The board will be constituted of the same members of the PSC but will gain the executive responsibilities required of our Verein statutes.

New chair and vice-chair

Our long time project founder, Gary Sherman, has stepped down from his role as project chair. I (Tim Sutton) have been elected by the QGIS PSC as Gary Sherman’s replacement by the incoming Board. In addition Paolo Cavallini has been elected as vice chair. Gary will continue to serve as an active voting member of the Board, and will maintain life-long honorary membership on the board.

A special note of thanks

In a world where proprietary GIS software licenses cost many times more than the annual income of most of its citizens, free access to spatial visualisation and analysis tools through QGIS (and its constituent projects such as GRASS, GEOS and GDAL) is a profoundly disruptive force for good.

QGIS is a available to anyone with a reasonably modern computer. It makes the wise utilisation of the earth’s scarce resources and the ability to take care of its citizen’s civic and humanitarian needs based on sound spatial decision-making, that much more possible for a huge swathe of society which would otherwise have been disenfranchised.

Even in developed societies where finance is not necessarily the limiting factor, we cannot underestimate the impact of a software platform that is a freely extensible and shared body of knowledge. QGIS is a platform that enhances the ability of governments and private organisations to deliver services that deeply enrich the lives of their citizens and customers.

Gary’s selfless contribution of the QGIS source code has thus had a far reaching affect on many people’s lives – including my own. Under Gary’s stewardship, the project has evolved from a very basic simple GIS data browser that ran on one platform and could only work with PostGIS data, to a fully-fledged production-ready GIS that can be used on the desktop, in your own custom applications and to serve web maps and services.

Gary has been and will remain an inspirational figure to all of us in the QGIS project – the project he started 13 years ago in 2002. We look forward to his continued involvement on the Board.

Going forward

Our goal as the QGIS.ORG Board is to continue the work started by Gary and to position QGIS as the de facto desktop GIS application, capable of providing a wide range of functionality and richness of features, so that it is no longer necessary to use proprietary GIS software to understand and manage our world.

We are looking for funders for the QGIS.ORG non-profit company. As a foundation project to many humanitarian, municipal, government, NGO, conservation and industry related FOSS tools, we would like to secure funding for the core QGIS project to hire full-time staff so that we can improve the quality and functionality of QGIS for all our users.

To date we have subsisted mainly on micro donations and small-scale sponsorships for which we are very grateful (keep them coming!). This has been very useful but has never take us to the point where we can employ staff full-time to work solely for the good of the project. We would like to establish a team of full-time developers, documentation writers etc.….so we have quite a mountain to climb!

Over the coming months we will be actively seeking out new sources of funding to support these goals, whilst never losing sight of our core principles of Open Governance, Open Source and Open Community. We hope you will join us and support us in this exciting new chapter of the QGIS project!

Your Board

  • Tim Sutton (Chair)
  • Paolo Cavallini (vice-Chair)
  • Andreas Neumann (Treasurer)
  • Gary Sherman (life time honorary member)
  • Anita Graser
  • Otto Dassau
  • Richard Duivenvoorde
  • Marco Hugentobler
  • Jürgen Fischer

timsutton

Tim Sutton
Incoming QGIS Board Chair


Multiple format map series using QGIS 2.6 – Part 2

EN | PT

In my last post, I have tried to show how I used QGIS 2.6 to create a map series where the page’s orientation adapted to the shape of the atlas features. This method is useful when the final scale of the maps is irrelevant, or when the size of the atlas elements is  similar, allowing one to use a fixed scale. On the other hand, when using a fixed scale is mandatory and the features size are too different, it is needed to change the size of the paper. In this second part ot the post, I will try to show how I came to a solution for that.

As a base, I used the map created in the previous post, from which I did a duplicate. To exemplify the method, I tried to create a map series at 1:2.000.000 scale. Since I was going to change both width and height of the paper, I did not need to set an orientation, and therefore, I deactivated the data defined properties of the orientation option:

ith some maths with the map scale, the size of the atlas feature and the already defined margins, I came up with the following expressions to use, respectively,  in width and height:

((bounds_width( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1 + 10
((bounds_height( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1 + 30

Allow me to clarify. (bounds_width( $atlasgeometry ) / 2000000.0) is the atlas feature’s width in meters when represented at 1:2.000.000. This is multiplied by 1000 to convert it to millimeters (the composer’s settings units). In order to keep the atlas feature not to close to the margin, I have decided to add 10% of margin around it, hence the multiplication by 1.1. To finish I add the map margins value that were already set in the previous post (i.e.,20 mm, 5 mm, 10 mm, 5 mm)

As one can see from the previous image, after setting the expressions in the paper width and height options, it’s size already changed according to the size of the atlas features. But, as expected, all the itens stubbornly kept their positions.For that reason, it has been necessary to change the size and position expressions for each of then.

Starting by the map item size, the expressions to use in width and height were not difficult to understand since they would be the paper size without the margins size:

((bounds_width( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1
((bounds_height( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1

Screenshot from 2014-11-16 23:07:43

To position the items correctly, all was needed was to replace the “CASE WHEN … THEN … END” statement by the expressions defined before. For instance, the expressions used in the X and Y options for the legend position:

(CASE WHEN  bounds_width(  $atlasgeometry ) >=  bounds_height( $atlasgeometry) THEN 297 ELSE 210 END) - 7
(CASE WHEN  bounds_width(  $atlasgeometry ) >=  bounds_height( $atlasgeometry) THEN 210 ELSE 297 END) - 12

Became, respectively:

(((bounds_width( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1 + 10) - 7
(((bounds_height( $atlasgeometry ) / 2000000.0) * 1000.0) * 1.1 + 30) - 12

Screenshot from 2014-11-16 23:22:40

Changing the expressions of the X and Y position options for the remaining composer’s items I have reached the final layout.

alaska_region_Kenai Peninsula

Once again, printing/exporting all (25) maps was only one click away.

mosaico_regioes_fixed

Since QGIS allows exporting the composer as georeferenced images, opening all maps in QGIS I got this interesting result.

Screenshot from 2014-11-17 00:02:38

As one can see by the results, using this method, we can get some quite strange formats. That is why in the 3rd and last post of this article, I will try to show how to create a fixed scale map series using standard paper formats (A4, A3, A2, A1 e A0).

Disclaimer: I’m not an English native speaker, therefore I apologize for any errors, and I will thank any advice on how to improve the text.

QGIS Crowdfunding project: 2.5D Rendering of buildings/polygons

QGIS already supports various different renderers, such as
categorized, rule-based, point-displacement, 25d_renderingheatmap, etc. This allows for advanced cartographic representations. In addition, there are plugins available, such as “qgis2threejs” or “QGIS Globe”, which allow to view and export QGIS data in the third dimension. While these plugins are very useful, they also have limitations: they are not fully integrated with the QGIS styling mechanisms and can’t be integrated in the QGIS print composer for  high-quality printing.

This crowd funding project aims to extend QGIS renderers with oblique views. The third dimension of the polygon is controlled by an attribute or expression and global angles. The representations can be combined with other QGIS styling options, such as symbol levels, layer effects, categories and rules. Applications are rendering buildings according to their actual heights (similar to Google maps 2.5d rendering) or thematic maps where the polygons are extruded according to an attribute to be represented.

This project is primarily financed by ADUGA and the regional council of Picardy in France. However, of the 20k Euros, 5k are still missing, to fully implement the project.

Thank you for helping us out by contributing to this crowd funding campaign over at OpenGIS.


Announcing the release of QGIS 2.12

3648539707d0789903fdfedac3705584f12fa6ac
This week we have more great news from Jürgen Fischer, our release manager:

“QGIS is a user friendly Open Source Geographic Information System that runs on Linux, Unix, Mac OSX, and Windows.

We are very pleased to announce the release of QGIS 2.12 ‘Lyon’. Lyon was the host city to our developer meet up in April 2012.

Latest Release

This is another regular release following our four monthly schedule.  It again brings many nice new features to QGIS.

Please also note that we’re constantly keeping our long term release QGIS 2.8 ‘Wien’ in good shape to better suit more conservative production setups.

New Features in QGIS 2.12 ‘Lyon’

QGIS 2.12 includes many great new features, tweaks and enhancements to make the
most popular Free desktop GIS even more feature filled and useful.  Visit the visual changelog that highlights some of the new additions.

Whenever new features are added to software they introduce the possibility of new bugs – if you encounter any problems with this release, please file a ticket on the QGIS Bug Tracker (http://hub.qgis.org).

The source code and binaries for Windows, Debian and Ubuntu are already available via the large download link on our home page: http://qgis.org.  More packages will follow as soon as the package maintainers finish their work. Please revisit the page if your platform is not available yet.”


Calcular coordenadas do centroide de polígonos | Calculate polygon centroid’s coordinates

Tive necessidade de, numa camada de polígonos, adicionar colunas à tabela de atributos com as coordenadas dos centroides das geometria. Cheguei às seguintes expressões para calcular as coordenadas X e Y, respectivamente:

I had the need to add columns with the coordinates of polygons centroids. I came up with the following expressions to calculate X e Y, respectively:

xmin(centroid($geometry))
ymin(centroid($geometry))

A expressão parece bastante banal, mas ainda demorei a perceber que, não existindo funções x(geometry) e y(geometry), podia usar as funções xmin() e ymin() para obter as coordenadas dos centroides dos polígonos. Uma vez que esta não foi a primeira vez que precisei de usar estas expressões, fica agora o registo para não me voltar a esquecer.

The expression seems quite simple, but it toke me some time before I realize that, not having a x(geometry) and y(geometry) functions, I could use the xmin() and ymin() to get the coordinates of the polygons centroids. Since this wasn’t the first time I had to use this expressions, this post will work as a reminder for the future.


Dica para ajustar posição de símbolos em QGIS | Hack to adjust map symbols location in QGIS

De quando em vez aparecem-me zonas com demasiado símbolos no mesmo local, e pensei como seria fantástico se os pudesse arrastar para um local mais conveniente sem ter de alterar as suas geometrias, tal como é possível fazer com as etiquetas. Esse pensamento deu-me a ideia base para a dica que vou demonstrar.

Now and then I get too many map symbols (points) in the same place, and I thought how nice it would be if we could drag n’ drop them around without messing with their geometries position, just like we do with labels. That thought gave me an idea for a cool hack.

Escolha a sua camada de pontos e comece por criar dois novos campos chamados symbX e symbY (Tipo: Decimal; Tamanho: 20; precisão: 5). No separador “Estilo” das propriedades da camada, defina para cada nível do seu símbolo o seguinte: Escolher “unidade do mapa” como a unidade para as opções de afastamento; Usar a seguinte expressão na opção afastamento das propriedades definidas por dados.

Choose your point layer and start by creating two new fields called symbX and symbY (Type: Decimal number; Size: 20; Precision: 5). Now go the layer properties and in the Style tab edit your symbol. For each level of your symbol select “map units” as the offset units, and set the following expression in the offset data define properties option:


CASE WHEN symbX IS NOT NULL AND symbY IS NOT NULL THEN
    tostring($x - symbX) + ',' + tostring($y - symbY)
ELSE
    '0,0'
END

Screenshot from 2015-02-22 18:18:43

Tenha atenção que, se as coordenadas do seu mapa tiver valores negativos, será necessário uma pequena alteração ao código. E. g., se tiver valores negativos em X deverá usar-se  antes a expressão “tostring(symbX -$x)”.

Beware that if your coordinates have negative values you need to adapt the code. E.g., If you have negative values in X you should use “tostring(symbX -$x)” instead.

De forma temporária coloque etiquetas na sua camada usando um texto pequeno (eu usei o ‘+’ (sinal de mais) centrado e com um buffer branco) e defina as coordenadas X e Y dos propriedades definidadas por dados usando os campos symbX e symbY,

Now, temporarly  label your layer with a small convenient text (I used a centered ‘+’ (plus sign) with a white buffer) and set its coordinates to data defined using the symbX and symbY Fields.

Screenshot from 2015-02-22 22:42:07

A partir desse momento, quando usar a ferramenta de mover etiquetas, não só alterará a posição da etiqueta, mas também a do próprio símbolo! Fantástico, não?

From this point on, when you use the move label tool, not only the label position change but also the actual symbol! Pretty cool, isn’t it?

anim

Note que as geometria dos elementos não são alteradas durante o processo. Para além disso, lembre-se que neste caso também poderá adicionar linhas de guia para ligar os símbolos à posição original do ponto.

Notice that the features geometries are not changed during the process. Also, remember that in this case you can also add leading lines to connect the symbols to the original position of the points.


Take the QGIS User Survey – in Romanian!

Thanks to community member Sorin Călinică, there is now a Romania version of the QGIS User Survey available. We look forward to seeing your responses!


Take the QGIS user survey – in Ukranian!

Thanks to QGIS Community member Alexander Bruy, our Ukranian users can now also participate in the QGIS User Survey in their native language!


Take the QGIS User Survey – in Spanish!

Another great community contribution – you can now participate in the QGIS user survey if you are a Spanish speaker! Thanks to Luigi Pirelli and Victor Olaya for contributing this.


Take the QGIS User Survey – in French!

Another wonderful contribution from the QGIS community, the 2015 QGIS User survey is now available in French! Thanks for René-Luc Dhont for contributing the French translations.


Take the QGIS User Survey in Portuguese!

Thanks to our awesome community, the QGIS User survey is now available in Portuguese! We are looking forward to hearing how the Portuguese speaking community is using QGIS!


Take the QGIS user survey!


  • <<
  • Page 4 of 6 ( 113 posts )
  • >>
  • uncategorized

Back to Top

Sustaining Members