A Desktop Analyst’s Guide to QGIS – Part 2: Beyond the Basics

If you haven’t already done so, take a look at part 1 of this blog series.  Having been a desktop GIS analyst for most of my career, I have an appreciation for the power behind proprietary desktop GIS applications.  But I also have come to the realization that 80% of users use only about 20% of the potential capabilities of desktop GIS.  With better license-free alternatives available in the open source community, I could not justify needing expensive proprietary desktop GIS applications when only 20% of my coworkers were getting the full value out of it.  It quickly became evident that QGIS was a solid alternative desktop GIS, and had complete feature parity for that 80% of functionality the majority of my coworkers were leveraging.  So the first part of this series focused on the simplicity and ease-of-use of QGIS by illustrating how to accomplish the 10 functions/workflows performed most often by desktop analysts.  Now part 2 will examine more in-depth capabilities that extend beyond core QGIS through the use of plugins, models and scripts.

One of the quintessential benefits of using open software is the massive community of developers and users who stand behind it.  This means more eyes checking the code for errors, and even more eyes looking to enhance the code and extend its capabilities.  Working at Boundless affords me the opportunity to connect with this community of developers, as I work alongside many of the steering committee members and core contributors of the software projects behind OpenGeo Suite.


Extending QGIS with Plugins

Proprietary desktop software is fairly WYSIWYG – what you see is what you get.  Since the source code is closed, additional functionality is usually only available through extensions you have to purchase for an additional cost.  QGIS on the other hand has an open source code base, and extending its functionality is limited only by your imagination (and your coding skills).  QGIS has a massive library of plugins written by fellow Boundless employees, QGIS developers and other independent users.  There are literally thousands of plugins available for use, ranging from coordinate conversion, to simplifying workflows, to connecting to specific data types and stores.  Plugins are made available to all QGIS users at https://plugins.qgis.org/, or directly inside of QGIS by using the Plugin dropdown.
As I continue my mission to educate and evangelize to organizations that QGIS is a worthy alternative to proprietary desktop GIS software, there are a few plugins I feel deserve to be highlighted.  The first increases QGIS ability to manipulate raster datasets.  The other two help connect the individual software applications into seamless workflows, making for an improved user experience, and are only available through the Enterprise Edition of OpenGeo Suite.

GDAL Tools Plugin

I am always shocked when someone asks me if QGIS supports imagery. Of course the answer is yes; raster datasets (to include imagery) are as much a part of GIS as points, lines and polygons.  I guess the part that shocks me is people thinking we would support a desktop GIS client that didn’t support imagery.  QGIS uses the GDAL library to read and write raster data formats, including ArcInfo Binary Grid, ArcInfo ASCII Grid, GeoTIFF, ERDAS IMAGINE, and many more.

If you aren’t familiar, GDAL stands for Geospatial Data Abstraction Library.  As noted on the GDAL website, GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source license by the Open Source Geospatial Foundation. In total, GDAL enables support for over 140 different raster formats, and over 80 different vector formats with the help of its brother OGR (now part of GDAL).

But more importantly QGIS also supports the management and manipulation of imagery as well.  The GDAL library consists of a set of command line programs, each with a large list of options. Users comfortable with running commands from a terminal may prefer the command line, with access to the full set of options. Example tools include raster management tools to query, re-project, warp and merge a wide variety of raster formats.  Also included are tools to create a contour (vector) layer, or a shaded relief from a raster DEM, as well as tool to make a VRT (Virtual Raster Tile in XML format) from a collection of one or more raster files.  But running the tools via a command line isn’t exactly simple for basic desktop analysts.  This is where the GDAL Tools plugin comes in.  It offers an easy-to-use GUI interface to the collection of GDAL tools, exposing only the most popular options as a series of drop down menus, tool dialogs and wizards.  It is a far more intuitive way to manipulate raster datasets, targeted at those users accustomed to using tools in ArcToolbox.  A full list of tools and their options are listed on the GDAL Tools website.
While you always have the full GDAL library available to you through the command line, this plugin makes it very easy to access some of the most commonly used raster and vector tools without intimidation factor of remembering command line syntax.

OpenGeo Explorer Plugin

One of the many benefits to using the Boundless version of OpenGeo Suite are the extra goodies that our team has created to make working with the software easier.  I can’t think of a better example of this than the OpenGeo Explorer plugin.

I love the fact that OpenGeo Suite provides a database, a server and a front end to work with, but I have never been a fan of having to opening three separate applications in order to administer each of them.  But not so fast, my friend (said in my best Lee Corso impression)!  This is where the OpenGeo Explorer plugin comes in, giving you the ability to configure the separate components of OpenGeo Suite from directly inside of QGIS!  You can prepare and style data, publish datasets to GeoServer, or stuff datasets into PostGIS all without leaving the application you are most comfortable using.
Calamito2_5There is both an integrated catalog view and a tabbed view depending on your preference.  You can toggle this option, and many others, in the OpenGeo Explorer settings menu.

Perhaps you are the GIS Server administrator for your organization.  This plugin gives you the ability to publish symbolized layers from your QGIS document directly into GeoServer with a simple right-click > Publish to GeoServer.
Maybe you are managing the organization’s geodatabase, and need an easier method to add/drop tables or rename layers already inside PostGIS.  Or, maybe you want to import a .csv file of point locations into your PostGIS geodatabase.  The OpenGeo Explorer plugin can help with that too…
Bottom line, the OpenGeo Explorer plugin gives you the ability to author cartographic content inside QGIS and then publish it directly to GeoServer and PostGIS without ever leaving QGIS.  It’s a great timesaver, and makes the concept of publishing web mapping services super easy for even the most novice desktop GIS users.  If you are interested in learning more about the OpenGeo Explorer plugin, have a look at the documentation and tutorial on the Boundless QGIS page.

Web App Builder Plugin

The last plugin I want to highlight is the QGIS Web App Builder plugin.  Imagine if you will (said in my best Don LaFontaine “In a world…” impression) a world where you don’t have to write a single line of code to create your own custom OpenLayers 3 application.  Then imagine you could build that application with datasets you configure and symbolize from right inside of QGIS.  Mind blown yet?  Well believe it, creating an OL3 app has never been this easy before.
Calamito2_8If you haven’t already done so, take a few minutes and read Building an OpenLayers 3 Web App Without Writing Code which my colleague Aaron Miller posted last week.  It’s a phenomenal primer and walkthrough for the capabilities inside this plugin.  So as to not repeat ourselves, I won’t walk through the plugin here, but I am going to focus on what the plugin means to desktop users.

As an analyst, there was no better feeling than seeing my work in a briefing or being asked to present it in front of decision makers.  For me, this usually meant plotting 24” x 36” paper “wall maps”, or exporting my work as “happy snaps” and putting them into a PowerPoint slide.  But static products just don’t have the same bang-for-the-buck as dynamic content.  Not to mention static products usually require someone to explain them (namely the analyst who created them).  But presenting your results as a web map or web application means I can simply share the URL to the application, and anyone can easily pan, zoom and click around to explore layers of information and analytical results.  And remember, web applications are dynamic.  Basemaps are cached for fast panning and zooming, layers will update as features are added or removed, and best of all, you can use a myriad of widgets against the data in the application.  You can measure objects, gazetteer search place names, query attributes and much, much more.  And with the help of the Web App Builder plugin, you no longer need to be a developer to share your work as a dynamic web application.  But you don’t have to take my word for it, try it yourself and see just how easy it is to create your very own app in just a couple minutes.

Extending QGIS with Models & Scripts

A lot of work inside a Desktop GIS is data manipulation; changing formats, importing tables, reprojecting, clipping, buffering, filtering by some attributes, etc.  Many times I find myself performing the same workflows over and over again, just on a different dataset in a different part of the world.  The tools in the GIS are great, but they are simple, sometimes low-level functions which have to be strung together with other tools to satisfy the needs of my workflow.  And this, my friends, is where models and scripts come in.

Processing Modeler

If you are familiar with ArcGIS for Desktop, you are probably aware of (if not intimately familiar with) ModelBuilder; the graphical user interface for connecting individual processes together into orchestrated workflows.  But did you know that QGIS also offers a ModelBuilder-like capability?  It’s called Processing Modeler and it’s available inside the Processing Toolbox of QGIS.
Calamito2_9As you would expect, the processing modeler gives you the ability to string together independent processes into complete workflows.  In the example below, I built a model to automate selecting points which fall within a polygon.  This is a task I run daily, so rather than run tools and configure parameters each morning, I simply set up the workflow one time and run the tool as many times as needed.
Calamito2_10Due to their visual nature, Models are a great first step into more advanced tool creation with scripting.  For some, scripting can be a bit intimidating, but the visual canvas that the Processing Modeler affords obfuscates the idea you are writing code behind the scenes.  Models are also a great way to learn about the individual tools available in the QGIS Processing Toolbox.

You can learn more about the QGIS processing framework and Processing Modeler in the QGIS 2.0 documentation.

Scripting with PyQGIS

Keeping in the spirit of QGIS customizability and extensibility, for those of you looking for more fine-grained control over your automated tasks, or looking for a way to ‘glue’ together processes from different applications, then Python and the PyQGIS module are the way to go.  Python is an easy-to-learn, yet very powerful scripting language used extensively in the geospatial community.  Both ArcGIS for Desktop and QGIS use Python as their language of choice for the creation of automation scripts and for extending their processing frameworks with custom capabilities.  So if you want to spend the time to learn a scripting language, Python is probably your best bet.

There are several ways you can interact with python scripting inside of QGIS.  The first (and arguably the easiest) is to interact with Python via the Python Console.  This is a built in window for executing simple Python commands against data in your QGIS project.  In the example below, I print out the name of the streams inside a stream feature class.
Calamito2_11Of course you can also take it a step further and create standalone Python scripts which can be shared and imported into any QGIS instance.  To do this, simply use the Create new script function from the Processing toolbox.  It will open the script editor where you can begin to write your code.
Calamito2_12In the example below I created a python script which will convert polygons to lines.  Shout out to PurpleLinux for the code snippet.  They have tons more to browse and help get you started.
Not only can standalone scripts be saved and shared amongst other QGIS users, but they can be used to call external applications, incorporate 3rd-party Python modules, develop custom functions and more.  This is where the true power of scripting with PyQGIS comes into play.  There are a lot of great tutorials and reference guides out there for getting started with PyQGIS, a few are listed below:

Python Plugins

Finally, for those wanting to take their Python skills to the next level, you can even create plugins for QGIS using Python.  Plugins allow for more control over the user interface and user experience, and can be exposed as buttons and drop-down menus directly on the QGIS GUI. As an example, the MGRS Coordinates plugin provided by Boundless leverages the Python support in QGIS.

In comparison with classic plugins written in C++ these should be easier to write, understand, maintain and distribute due the dynamic nature of the Python language.  Python plugins are listed together with C++ plugins in QGIS plugin manager.  The best place to get started with Python plugins would be the QGIS Documentation about developing plugins.

Wrapping it up

The goal of this blog series was to illustrate that QGIS satisfies the needs for both the casual and the advanced desktop user.  It contains that 80% of functionality which the majority of desktop GIS users use on an everyday basis, without the high cost of proprietary desktop GIS solutions.  But QGIS also has a vast community of open source contributors who continue to build advanced functionality to satisfy the power users too.  The model and scripting framework means users can create automated workflows to save time, and then share those workflows between other analysts.  Finally, the ability to create plugins means there is virtually no limit to what functionality can be built inside of QGIS.  Now more than ever QGIS is the ideal desktop application for your hybrid GIS environment.

Pioneers Get All the Arrows

Early in my career an industry veteran cautioned me from taking on a new initiative for my company. His words of wisdom were, “Pioneers Get all the Arrows.”  I thought long and hard about these words as I embarked upon this initiative, ultimately working on a team that enjoyed much success. But the reason we enjoyed success is we understood and appreciated the risks involved, and we built solid plans to mitigate those risks. From the beginning of time great accomplishments were often preceded by great failures. Given the many years I resided in Chicago, I’m often reminded of how arguably one of the greatest athletes of our time, #23, Michael Jordan, failed to make his high school varsity team over concerns about his height. We all know how that turned out long term for MJ…

Boundless has been on a similar journey from Open Source Geo industry pioneer to Open Source Geo industry leader. The company has evolved from the original small project incubated under a well-established charity to the recognized software and services leader it is today. There have been some failures and much success. But during this journey, Boundless has stayed true to our Open Source roots, furthering the cause for Open Source adoption in the Geospatial community and with specific initiatives for GEOINT.

Open Source has now become a force to be reckoned with in the Geospatial community.  No event in my tenure drove this point home further than to listen to Robert Cardillo’s speech during the just-completed GEOINT 2015 event, sponsored by USGIF in DC last week. As I “walked the show floor,” met with customers, partners, and industry leaders and listened to many of the speeches and presentations from government Seniors, I reflected on just how far the Open Source movement in Geo has come in a few short years. Boundless has been and continues to be on the forefront of this change with OpenGeo Suite, allowing customers and partners greater freedom and flexibility to drive technical solutions in their environments while directly influencing the product roadmaps and innovation. Our customers are building solutions that enable their missions and meet their business requirements while providing a lower cost of ownership.

GEOINT was an awakening for me. It was validation of our strategy, furthering of our partnering strategy, and strengthening of our company overall as we truly listened to customers and partners and work to incorporate this feedback into our product, services offerings, and roadmap.  There is no time like the present for all of the different projects, communities, and companies that work in the OpenGeo ecosystem to capitalize on our unique ability to move the industry forward with true and validated openness.

In this case, being a pioneer continues to be rewarding. There are some scars left over from a few arrows that hit a soft target, but the mission of the company has not changed. Seeing that mission aligned so well to the needs of our customers is the ultimate reward.


Building an OpenLayers 3 Web App Without Writing Code

Building a web app to display your data can be a daunting task if you aren’t a developer, especially if you aren’t familiar with GIS concepts. At Boundless we’ve been working on ways to help our customers build such web maps, leveraging all of the great capabilities now available with the release of OpenLayers3 (www.openlayers.org) without needing to work from the command line.

One of the mechanisms we’ve developed is via a plugin for QGIS. This plugin allows you to publish a QGIS project as an OpenLayers 3 (“OL3”) web app simply by following some prompts and filling in a few forms. This requires no coding skills, however if you have some “dev chops” it is fully extensible (We’ll look at that in a future blog post).

My goal for this post is to walk you through the steps necessary to go from Project & Data to completed web app, all within QGIS using Boundless’s new Web App Builder plugin. The intent is to demonstrate the simplicity of building an app without needing to resort to code.

To start with you need to install QGIS 2.8.2 for the OpenGeo Suite. This is available (using Windows or Mac OS X 10.9 and higher) to Boundless customers at http://boundlessgeo.com/solutions/solutions-software/qgis/

Once installed the Web App Builder is accessible via the plugins drop down (click to zoom all images).
webapp1However before we can create an app we need a QGIS project with the supporting data. In this example we will be using some data from floods in Boulder County, Colorado in 2013 to create a flood event viewer.

I loaded three layers — Total Rainfall, Parcels with Flooding, and Inundated Areas. I also adjusted their symbology for better viewing over a basemap.
webapp2Now that we have our QGIS project let’s build an app!

First choose the Plugins menu -> Boundless -> Web App Builder. This will bring up the Web App Builder Dialogue and help us define our application.
webapp3This dialogue will help us step through the process of creating our app. We’ll start by titling our app, choosing a logo icon, and selecting a theme. The themes can be adjusted to meet your specific needs using the “Configure theme” button. In this example we are going to use the default values for the basic theme.

Under the Base Layers tab we can choose which base map service we would like to use and also select layers that can be used as overlays. For this app we are going to use the MapQuest aerial as our base layer to help show some of the terrain where the rain event occurred and provide the user with better context than a street map. The overlays provide access to services that include near real time weather, additional labeling, etc. For this example we will use the MapQuest labels overlay service to show city names, major roads, etc. Now let’s define the layers we want to place on top of the basemap.
webapp4In the Layers tab we configure the data layers that will be used in our application. By default all the layers we added to our QGIS project, except for basemaps, will show up in the list. In our case we only have a handful of layers — if you had many layers you can search for them using the search bar at the top of the dialogue box. We want to display all of the layers so we will leave them all checked.
webapp5Next we need to decide how the data for our app will be stored. Choosing the “Connect to this layer using” drop down we are presented with a number of choices.
webapp6The data we have for our flooding event viewer is a small static dataset, so using the file directly makes good sense. If we had a larger dataset or dynamic data we could choose to host it in GeoServer or a PostGIS DB. Those options give us greater customization for our data using the power of GeoServer. In our case the QGIS symbology will be created in the app using OL3 symbology and rendered by the application.

Now that we have defined how we want to connect to the layers we need to decide if we want popups and what content we would like to have presented in the popups. Clicking edit opens the popup editor dialogue. It is initially blank, but clicking ‘Add all attributes’ will populate it with a [field_name] pair for each field in the layer.
webapp7In our case we are going to have a popup that shows the Stream Name for the Inundated Areas, no popup for Parcels, and the Total Rainfall layer will have a popup that shows the Min and Max rainfall for that area.

Inundated Areas Popup expression:

<b>StreamName</b>: [StreamName]<br>

Total Rainfall popup expression:

<b>RainfallMin</b>: [RainfallMi]<br><b>RainfallMax</b>: [RainfallMa]<br>

Moving onto the widgets tab we see a large number of controls, tools and widgets to choose from. Selecting a widget will add it to the app, while right clicking on a widget will give you configuration options.
webapp8There’s obviously a lot here – we’ll save exploring widgets for a later post. For the purposes of this posting we are going to use with the default controls and configure the Layers List to allow the user to change the opacity of the layers.
webapp9Let’s add an About Panel widget to the application, and edit the content to let users know more about what they are looking at.
webapp10Once we have configured the controls and widgets we move to the Deploy tab. This tab is used to configure the connections to PostGIS and GeoServer. In our case we are not publishing our data into either PostGIS or GeoServer so we can skip this and move to settings.
webapp11The settings page gives us the opportunity to define how we want to deal with the Extent, zoom levels, and layer styling. For our application we are going to accept all of the defaults.

We’ve finished configuring our application, now let’s preview the app and see how it looks.
webapp13This sample application looks ready to go! If we wanted to make any changes we can step back and change any of the configurations to meet our needs and preview again. Once the application is configured and ready to be published, click Create App. The web app builder will prompt you for a location to save the files, build your application, and ask if you would like to view it.

We have a completed application ready for use, executed with a few clicks of the mouse and filling in some forms. At no point during this process was coding needed.

To find out more about the Web App Builder plugin contact Boundless at sales@boundlessgeo.com.

The finished 2013 Boulder County Flood Viewer can be viewed at http://wilson.boundlessps.com:8080/BoulderCountyFloods2013/

OpenGeo Suite 4.6.1 Now Available

Boundless is announcing the general availability of OpenGeo Suite 4.6.1 for all customers and OpenGeo Suite users. This is a patch release primarily intended to address an identified security vulnerability in GeoServer:

  • GEOS-7032: Reports the ability to request sensitive files using a careful crafted WFS GetFeature request when running GeoServer as root (which is not recommended for production systems). Please note OpenGeo Suite installs GeoServer using the “tomcat” user, limiting the scope of this vulnerability for our customers. While this reduces the risk, we still encourage all users to update their systems.

Boundless Customers
At this moment this security update is available via Boundless as part of OpenGeo Suite 4.6.1, which includes the latest GeoServer 2.7.

Boundless is committed to the security and success of our customers, and will continue to provide early access to important updates and fixes.

GeoServer Community
GeoServer will include this fix in the GeoServer 2.6.4 maintenance release scheduled for availability later today. Those making use of GeoServer 2.7 are encouraged to update to 2.7.2 when it is released later this month.

For more information on availability please see the community release schedule.

UPDATE 06/29/15 – See project blog on GeoServer XEE vulnerability for patched 2.5.x, 2.6.x and 2.7.x releases.

A QGIS Clip Show

In light of our announcement of support and interoperability for QGIS 2.8.2 with our OpenGeo Suite, it’s a good opportunity to look back at highlights of past posts to remind existing users of past tips and demonstrate to new users the power of QGIS.

  • In our most recent post, Anthony Calamito highlights 10 different examples how QGIS can serve the majority of analysts’ needs at significant savings
  • Victor Olaya provided a preview of the MGRS plugin we announced with 2.8.2 support
  • Aaron Miller provided a real-life case study demonstrating how QGIS can assist with supply chain intelligence
  • We provided a 4-part series comparing QGIS to Esri ArcGIS, including visualization, cartography (my personal favorite – Halloween map!), editing, and analysis
  • Victor Olaya also described OpenGeo Explorer, our plugin to help users configure and manage OpenGeo Suite

At risk of stating the obvious, we’re huge believers in QGIS here. We’re seeing firsthand QGIS capture market share. We’re seeing QGIS growing at a rapid pace in adoption by academia, creating entire generations of users. I’d also like to give a tip of the cap to the QGIS community, the most vibrant and self-sustaining of all open source GIS communities. Boundless is committed to supporting and continuing to build on QGIS capabilities, and we welcome any questions about our capabilities.

A Desktop Analyst’s Guide to QGIS – Part 1: The Basics

QGIS has received a lot of press and activity lately.  In the community, they have just completed their 2015 User Conference in Denmark, while also announcing QGIS 2.10 is now in beta testing. At Boundless, Victor Olaya — my colleague and QGIS core contributor — just finished a post describing how QGIS can support MGRS coordinates.  Another colleague, Aaron Miller, posted a blog about how you can use QGIS to perform logistics routing. Late last year, Boundless responded to numerous market questions with a 4-part blog series on how QGIS compares to proprietary desktop GIS software.  We pointed out that QGIS is easy-to-install, integrates with OpenGeo Suite, and has reliable support offerings, making it a very viable alternative to ArcGIS for Desktop.  We then went into detail on how to use QGIS to perform visualization, cartography, analysis, and editing.
calamito_qgis1There is a good reason we are taking the time to highlight QGIS. You recall I blogged about how more and more customers are asking about how OpenGeo Suite can work as part of a hybrid architecture of both proprietary and open source software.  Customers are appreciating that hybrid migration strategies targeted at non-power users can quickly realize significant savings, and replacing proprietary (not to mention, expensive) desktop GIS applications with QGIS is a great place to start.

In my experience, the vast majority of desktop GIS users fit into the ‘light to moderate’ GIS use case – what most of us know as the 80/20 rule.  That is, 80% of those users only use about 20% of the software’s total functionality.  Plotting dots on a map, exporting simple overlays as JPEGs, digitizing vector content from imagery, and simple analysis such as point-in-polygon filtering.  Of course, there still is the 20% who do perform more in-depth analytical functions and complex cartographic work, but they are by far the minority.  So you have to ask yourself, is it worth spending all that money for proprietary desktop GIS software if you aren’t utilizing its full potential?  Is there not a better option for the majority of users who wish to simply geo-enable their content?  Put another way, why are you paying for the Ferrari when all you need is the Vespa? The market is validating that QGIS satisfies this need – don’t take my word for it, do a Twitter search for “qgis” –  and is a great first step into achieving a hybrid GIS architecture.

The legacy gripe about QGIS is it is not as intuitive as users would have liked.  I’ll admit, older versions of the user interface/user experience were a bit clunky, and made the transition from proprietary desktop GIS a bit too far for most analysts (myself included).  But QGIS has come a long way, and if you haven’t played with it in a while (or at all), I highly recommend you give it a try.  It runs on Windows, Linux, and OS X, and there is even a new version that runs on Android.  The v2.0 release focused largely on the look/feel of the application, and it is now far more intuitive than ever before.  Even still, many folks are hesitant to make the jump to QGIS simply because they don’t want to take the time to learn the new ‘buttonology’.

So I decided to write a two-part series to showcase just how simple it is for a typical desktop analyst to migrate to using QGIS.  Part 1 will illustrate how to accomplish the 10 functions/workflows performed most often by desktop analysts, and part 2 will focus on extending QGIS capabilities through the use of plugins.  QGIS really is simple to use, and will satisfy the needs of 80% of users without the high license cost of proprietary desktop software.  So without further ado, and in no particular order…

  1. Overlay of Data

You can add all types of data into your QGIS project by using the Add Data buttons on the Layers toolbar. QGIS handles most open and proprietary spatial data formats right out of the box, including shapefiles, file geodatabase layers, commercial imagery and data stored inside of relational databases.  Those layers show up in your project’s Layers window in a very familiar table of contents (TOC) style display that most desktop GIS users are akin to using.

calamito_qgis2You can re-order your layers, make changes to the symbology and labeling, and set scale dependencies and group layers to help you organize your TOC.   Of course you can also open the attribute table for each vector layer.  It really is just that simple.

  1. Zoom to a Point

The ability to zoom to a point on the earth is pretty fundamental to any desktop GIS use.  QGIS makes this easy with a simple Zoom to Coordinate tool right on the main interface.  Simply click to the tool to activate the window, then enter the XY coordinate of the location you are interested in.

  1. Creating Points from a File

Creating points from a delimited file of coordinates is very simple inside of QGIS.   In fact, it’s actually easier to do in QGIS than is it in ArcGIS for Desktop!  All you need to do is click on the Add Delimited Text Layer icon, and fill out the input parameters, and hit ok.  The tool can handle text files, comma and tab separated files and Excel spreadsheets.

  1. Point in Polygon Selection

The ability to select which points which fall within a polygon is made easy through the Points in Polygon tool found under the Vector dropdown > Analysis tools > Points in polygon.  Once the selection is made, you can export the selected features to a new file, and/or add that new file to your QGIS map.

  1. Buffering a Point/Line/Polygon

In much the same way you can buffer vector features in ArcGIS for Desktop, QGIS gives you a very simple method for creating buffers around points, lines and other polygons.  You may enter a manual buffer distance, or choose a value from a field inside the attribute table. The Buffer tool can be found under the Vector dropdown > Geoprocessing Tools > Buffer(s).

  1. Clip/Extract Data 

The function I probably used the most as an analyst was the ability to clip subsets of data from a larger dataset.  I used this to filter data by area of interest, or to simply cut unmanageable datasets into smaller, more manageable ones.  QGIS makes it easy by exposing it as another tool in the Vector dropdown > Geoprocessing Tools > Clip menu.

  1. Export as JPEG

One of the most common ways analysts and cartographers distribute their results is to export their map as a graphic.  The resulting graphic can then be plotted for a wall map, attached to an email, or included as part of a larger PowerPoint briefing.  Exporting a graphic from QGIS is as easy as selecting Export as Image from the File dropdown > choosing a name and format for your exported graphic > and then deciding where you want to export the image to disk.


  1. Define a Layer’s Coordinate System

Sometimes an analyst is given data which has no coordinate system defined.  This is problematic for any type of measurements, analysis or coordinate notation needed for that given dataset.  Luckily, QGIS makes defining a coordinate system pretty simple.  Just select the layer you want to define in the table of contents.  Then use the Layer dropdown to select the Set CRS of Layer(s) option.  Next, just choose the correct coordinate system for your layer, and hit OK to apply.

  1. Reproject a Vector Layer

Often times it is necessary to change the projection of a vector layer to ensure accuracy in measurements and analysis.  QGIS exposes this functionality in the Save As… function for a layer right from the table of contents.  Right-click the layer you want to reproject, select Save As…, and under the CRS section select Selected CRS.  This will enable the Browse button which gives you a range of coordinate systems to choose from.  Just hit OK when you are done and QGIS will export a new layer with the updated projection.

  1. Convert Raster to Vector 

One of the more common actions to perform against a raster dataset is to convert it to polygons.  This can be useful when you want to use a raster dataset inside a weighted overlay analysis, site selection, point in polygon analysis and more.  QGIS calls this function Polygonize, and it can be found under the Raster dropdown > Conversion > Polygonize.

Here is the really cool part…all of the tools listed above are available inside of the Processing Framework inside of QGIS.  This means those individual tools can be orchestrated into seamless workflows, used from the Python console, or run in batch.  So if you are like me, and spent copious amounts of time encapsulating tradecraft into ModelBuilder models and Python scripts using ArcPy, you will be happy to know you can do a similar thing inside of QGIS as well.
calamito_qgis13My goal here is not for you to replace all of your desktop GIS instances with QGIS.  As I mentioned before, there are still use cases where more fully featured GIS applications do make sense.  But for that large majority of users – the 80% – I truly believe there is a better, more cost-effective answer.  And if your organization is thinking about transitioning to a hybrid GIS architecture, you should consider adopting QGIS as a core part of your hybrid GIS migration strategy.

Stay tuned for part 2 of this series which will focus on some more advanced capabilities which are exposed as plugins for QGIS.

An INSPIRE Refresher

As some of my colleagues here at Boundless prepare to board planes and trains to travel to Geospatial World Forum next week in Lisbon, Portugal, it seems like an opportune time to review INSPIRE compliance within OpenGeo Suite.

  • As announced with the launch of OpenGeo Suite 4.6, INSPIRE-required metadata can now be filled into WMS and WFS documents to comply with View and Download Service specs
  • We’ve been integrating INSPIRE compliance into WMS for some time now. In 2012, we added Harmonized Layer Name support to existing WMS 1.3.0 functionality at the request of EU customers
  • Speaking of users of OpenGeo Suite, Ordnance Survey contributed to the INSPIRE cause to the benefit of the whole EU and continue today to build applications on top of open source components. In addition, the Greek Regulatory Authority for Energy (RAE) provides public access to geospatial data based on OpenGeo Suite and other open source components
  • For readers with an interest in technical details, the GeoServer community has posted valuable documentation here

As always, Boundless provides Support for the INSPIRE and app-schema extensions as part of OpenGeo Suite Enterprise, we invite anyone interested in INSPIRE compliance to reach out to contact@boundlessgeo.com. Our Sales, Services, and Support teams can help answer any questions you may have about your own projects and goals.

LiDAR and OpenGeo Suite: Redux

(NOTE: Update at end of this blog)

A few weeks ago, a colleague sent me an article explaining Esri’s decision to keep their Optimized LAS format proprietary. The article notes a January 2014 blog from Esri claiming its ‘Optimized LAS’ boasted faster access and smaller file sizes, akin to the performance and functionality of the open source LASzip format.  Esri then promised the world that the product would be offered free of charge and independently of the company’s market-leading ArcGIS platform. Esri’s blog post went on to also promise to provide an open application programming interface (API) for external software developers. Well, apparently Esri has publically recanted on their promise and has elected to introduce further vendor lock-in if you want to use its Optimized LAS format.

The open source community said that after more than 12 months of attempting to work with Esri on a mutually beneficial solution, it is now going public with its concerns. In an open letter to Esri, pro-interoperability geospatial developers argued the company was abusing its market position to compromise established open spatial standards:

“The Optimised LAS format is neither published, nor available under any open license, which provides both technical as well as legal barriers for other applications reading and/or writing to this proprietary format,” the letter stated. “This is of grave concern given that fragmentation of the LAS format will reduce interoperability between applications and organisations, and introduce vendor lock-in.”

Not long after this made its way around the Internet, I received a phone call from a friend of mine who asked what Boundless’ response to the news was. I pointed him to a series of blogs about how the LiDAR industry faces a choice for advanced formats, and reviewed how open formats can offer significant advantages over a proprietary vendor path. And in response to his original question, I affirmed that Boundless will continue to work with the libLAS, PDAL and LASzip communities to bring LiDAR access and compression into the open source world, rather than supporting yet another proprietary format.

I also took the liberty of illustrating how OpenGeo Suite currently supports LiDAR, the highlights of which are below:

Within PostgreSQL

Suite integrates support for storing and analyzing LiDAR data within a PostgreSQL database. The PostgreSQL pointcloud extension provides the following features:

  • Random access of small working areas from large LiDAR collections
  • Aggregation of point cloud rows into large return blocks
  • Filtering of point cloud data using any dimension as a filter condition
  • Lossless compression of LiDAR data with compression ratios between 3:1 and 4:1

Within PostGIS

In combination with the PostGIS extension, you also get:

  • Spatial indexing for high-speed spatial search and retrieval
  • Clipping and masking of point clouds to arbitrary clipping polygons
  • Conversion of point cloud data to and from PostGIS geometry types for advanced spatial analysis

To efficiently load LiDAR and other point cloud data into the database, OpenGeo Suite 4.0+ includes the PDAL point cloud processing tools. PDAL supports multiple read/write for formats such as LAS, LASZip, Oracle point cloud, PostgreSQL point cloud and text/csv. In addition, PDAL allows for in-translation processing of data, including reprojection, rescaling, calculation of new dimensions, removal of dimensions, and raster gridding.

Within QGIS

Currently, QGIS does not have direct support for LiDAR data, meaning you cannot open a LAS or LASZip file and add it to your project as you would a vector layer or image.   But with some help from Martin Isenberg (creator of LASzip), QGIS utilizes LASTools and Fusion to manage and edit LiDAR data in the QGIS processing framework.
lidar_3This allows QGIS users to easily process their data from the Processing Toolbox, create complex workflows that work with LiDAR data using the Processing Graphical Modeler, or automate LiDAR processing routines using the batch processing interface.

So if you are interested in using LiDAR within OpenGeo Suite, I encourage you to try out the very well-written LiDAR tutorial (complete with sample data) from our website. Walkthrough tutorials like this are a great example of the enhanced experience that comes with supported open source. Another benefit is being able to engage Boundless staff, many of which are core committers for the community software code base. As an example, a customer has asked us to document best practices for storing LiDAR using the PostgreSQL pointcloud extension, which should be released to the community in the near future. So don’t hesitate to contact us with any questions, or to solicit any feedback about how to better support LiDAR within OpenGeo Suite.

UPDATE: Since my original authoring of this post, there have been multiple updates on this within the OSGeo discussion lists, including a response from Esri’s founder and President, Jack Dangermond. Jack reiterated his desire that the community should use OGC to organize an open process leading to an open standard centered around storing LiDAR. He went on to say that Esri would be willing to offer up their engineering work on Optimized LAS for discussion as part of any open solution.

It should be noted that the OSGeo community views this as a positive step, and their pragmatism about working with Esri is noted and understood. A willingness to consider the work of an OGC committee and a commitment to ASPRS is certainly a good first step. But we hope Esri continues to consider releasing the Optimized LAS format as an open standard as originally promised back in their January 2014 blog post. At Boundless, we will continue to focus on our commitment to open access and open standards in the area of manipulating and storing LiDAR.

We will all continue to watch developments in this area going forward.

INSPIRE Support in OpenGeo Suite

Yesterday we announced the availability of OpenGeo Suite Version 4.6 with the latest fixes, features and performance improvements for the leading open source geospatial software stack. For our EU customers I’d like to highlight two key additions enabling OpenGeo Suite 4.6 to publish INSPIRE services.

OpenGeo Suite 4.6 adds support for the GeoServer INSPIRE extension allowing required metadata to be filled into Web Map Service (WMS) and Web Feature Service (WFS) GetCapabilities documents. This additional metadata enables compliance with the INSPIRE View and Download Service specifications. More information can be found in our OpenGeo Suite INSPIRE documentation.

The second key addition is the popular GeoServer app-schema extension allowing the mapping of your information to predefined application schemas. This extension is used to create INSPIRE-compliant Geographic Markup Language (GML) output. More information about app-schema can be found in our documentation.

Boundless provides Support for the INSPIRE and app-schema extensions as part of OpenGeo Suite Enterprise, we invite anyone interested in INSPIRE compliance to reach out to contact@boundlessgeo.com. Our Sales, Services, and Support teams can help answer any questions you may have about your own projects and goals.

Announcing the Release of OpenGeo Suite 4.6

Today Boundless announced the availability of OpenGeo Suite 4.6, our latest advancement in providing a complete open-source geospatial software stack so organizations of all sizes can build great maps and applications.

The press release, as PR typically does, hits the treetops of what’s included in the release, but this forum offers the opportunity to go into somewhat greater detail:

  • Customers of OpenGeo Suite Enterprise will have access to the latest version of OpenGeo Suite Composer, our tool for creating, styling, and publishing maps for the web. We profiled Composer when it was released with OpenGeo Suite 4.5, we encourage you to review our original entry for details. Boundless has continued to invest in Composer as there is a compelling need in the market for alternative web-enabled mapping tools, so 4.6 includes a lot of focus on Composer. Users will discover a number of updates including multiple additions to layer management as well as increased visualization of SLD so it’s easier to troubleshoot YSLD syntax. YSLD makes it much easier to style maps, so we believe developers will find this addition helpful.
  • As always with our releases, we’ve incorporated a lot of the latest and greatest contributions from the various community projects into the unified and supported OpenGeo Suite. Here are great places to start to see deeper details on what the communities have been working on:

The release of 4.6 means we incorporated a lot of the latest and best features into the unified OpenGeo stack to the benefit of our customers:

  • Greater control for how overlapping layers are merged together with color composition and blending
  • A number of updates to Web Processing Service (WPS), including clustering, process controls, and security
  • Significant PostGIS performance improvements
  • Numerous updates to OpenLayers3 – OL3 is quickly maturing into a very powerful library for web-ready maps, able to handle requirements of all sorts. We’re frequently updating the Boundless blog with the latest on OL3, check back here often for the latest.

OpenGeo Suite 4.6 is now available to all here. OpenGeo Suite Enterprise customers have access to Composer as well as Boundless Support for a wide variety of installers and complex environments. To learn more, please don’t hesitate to contact us.