Welcome to Planet OSGeo

September 03, 2015

GeoTools Team

Geotools 12.5 Released

The GeoTools community is pleased to announce the availability of GeoTools 12.5:

This release, which is also available from our Maven repository, is made in conjunction with GeoWebCache 1.6.3 and GeoServer 2.6.5. This is a maintenance release of the GeoTools 12 series recommended for production systems.
This is the last release of the GeoTools 12 series. Migrate to GeoTools 13 for the latest stable release.

A few highlights from the GeoTools 12.5 release notes:
  • GeoTools Logging can now startup in an environment without JAI
  • Raster to vector transformation with re-projection using NetCDF as data store
  • Properly handle InputTransparentColor when dealing with Holes in mosaics
  • Other fixes: see the release notes for details
Thanks to Torben Barsballe (Boundless) for this release.

About GeoTools 12

by Torben Barsballe (noreply@blogger.com) at September 03, 2015 12:12 AM

September 01, 2015

GeoTools Team

GeoTools 14-beta Released

The GeoTools team is pleased to announce GeoTools 14-beta
This release is made by Jody Garnett (Boundless) in conjunction with GeoServer 2.8-beta.

This release is a feature complete "beta" giving our community a chance to test before GeoTools 14.0 is shipped. Due to an influx of new features we have pushed back this beta release leaving a narrow one week opportunity for testing.

New (and returning) features:
Fixes and improvements:
  • Stable date/time literal conversion to sql (when running in different timezones)
  • WFS client support for WFS 2.0.0 protocol
  • New filter functions for retrieving the default geometry in a feature and quickly checking if a value is "IN" a list.
  • Transaction is auto closable for use with java try-with-resource syntax
  • Allow extshape://arrow to receive parameters to specify its proportions [GEOT-5126]
  • Add projections for gnomonic (AUTO:97001) and stereographic (AUTO:97002) and WorldVanDerGrintenI use.
  • DB2 performance setting giving priority to the spatial index
  • Add read and write support for curves in Postgis data store [GEOT-5100GEOT-5112]
  • Add write support for curves in PropertyDataStore
  • Add support for by layer interpolation methods to StreamingRenderer [GEOT-5064]
  • Significantly speed up GML 3.x encoding speed for simple features [GEOT-5082]
  • New projections supported: sinusoidal, gnomonic
For more information see 14-beta release notes.

About GeoTools 14

GeoTools 14 highlights:
For more information see release notes from 14-M0, 14-M1 and 14-beta.

by Jody Garnett (noreply@blogger.com) at September 01, 2015 03:32 PM


Developer’s Corner: Cartographic Rendering Improvements in GeoServer


Dear reader, today we would like to share some recent improvements in GeoServer cartographich rendering, which will be useful for everybody, but great for those dealing with roads mapping. The first one is z-order control, in GeoServer 2.8 there are two new FeatureTypeStyle VendorOption allowing to control in which order the features get painted, inside a single layer, or even across layers. Here is an example from our user guide, where over and under passes, as well as rail bridges, are properly honored in the map rendering: [caption id="attachment_2397" align="aligncenter" width="600"]roads-group Z-Order Control at work with OSM Data[/caption] This is made possible by specifying the following two vendor options in all FeatureTypeStyle involved in the above map (as you can see, there is extensive use of road casing, so expect to find several FeatureTypeStyle elements in the style): <FeatureTypeStyle>    <!-- rules here -->    ...    <VendorOption name="sortBy">z_order</VendorOption>    <VendorOption name="sortByGroup">roadsGropu</VendorOption> </FeatureTypeStyle> The second important improvement is to leverage the SLD ability to specify multiple fonts in a more dynamic way. Up until now, the list of fonts was scanned and the first available font was used, resulting in a static decision before rendering the labels. Now, if there are multiple fonts, they are tried in turn to check if thet can actually render a certain label: if a map labels have multiple scripts they can now be seamlessly rendered without having to find a single font that can render all type of scripts (which might be a difficult proposition if your map contains all possible scripts, like OSM). Even better, if a single label contains multiple scripts, the different fonts will be used in turn for the different parts of the label. Here is an example over Hong Kong: [caption id="attachment_2400" align="aligncenter" width="556"]Selezione_072 Advanced rendering for OSM data over Hong Kong[/caption] The style contains two fonts, "Droid Sans", which renders many common scripts, but not traditional Chinese, and "Droid Sans Fallback", which instead contains the traditional Chinese glyphs:  <Rule> <MaxScaleDenominator>32000</MaxScaleDenominator> <TextSymbolizer> <Label> <ogc:PropertyName>name</ogc:PropertyName> </Label> <Font> <CssParameter name="font-family">Droid Sans</CssParameter> <CssParameter name="font-style">Normal</CssParameter> <CssParameter name="font-size">14</CssParameter> </Font> <Font> <CssParameter name="font-family">Droid Sans Fallback</CssParameter> <CssParameter name="font-style">Normal</CssParameter> <CssParameter name="font-size">14</CssParameter> </Font> <LabelPlacement> <LinePlacement> </LinePlacement> </LabelPlacement> <Halo> <Radius> <ogc:Literal>2</ogc:Literal> </Radius> <Fill> <CssParameter name="fill">#FFFFFF</CssParameter> <CssParameter name="fill-opacity">0.85</CssParameter> </Fill> </Halo> <Fill> <CssParameter name="fill">#000000</CssParameter> </Fill> <VendorOption name="group">true</VendorOption> <VendorOption name="followLine">true</VendorOption> </TextSymbolizer> </Rule>   Both of this improvements have been sponsored by DLR under via a enterprise support contract. Finally, let's see an improvement recently developed and donated by IGN to the community, which will make many happy: better space reservation in the conflict resolution engine for tilted or line following labels. In particular, for this class of labels the space reservation is made on a char by char basis, instead of reserving the entire bounding box covering the label.  Here is a "before and after" comparison: [caption id="attachment_2401" align="aligncenter" width="254"]Letter reservation - conflict Entire label bbox occupancy VS single char occupancy bbox[/caption] This in turn results in a significantly denser labelling on road networks, for example, here is our sample layer nyc:roads after the cure: [caption id="attachment_2402" align="aligncenter" width="475"]tiger-tiger_roads (1) Denser labels, thanks IGN![/caption]     If you want to know more about how we can help your organization, don't hesitate and get in touch with us! The GeoSolutions Team, Geosolutions

by Andrea Aime at September 01, 2015 01:06 PM

August 31, 2015


Атмосферная коррекция по методу DOS

В новой статье рассматривается атмосферная коррекция спутниковых снимков по методу DOS (Dark Object Subtraction). В конце статьи представлен готовый программный инструментарий для выполнения атмосферной коррекции.

Прочитать | Обсудить

by Александр Мурый at August 31, 2015 09:46 PM

Antonio Santiago

How to read from a writable stream (http.ServerResponse) in Node

I'm working on a personal side project (when I have free time to spend on) where a bunch of middlewares are chained to do something awesome (Take a look at ClydeIO. Note it is currently a proof of concept). Remember a middleware is nothing more than a function that receives three parameters: the request, the response and the next function:

August 31, 2015 09:05 PM

GeoTools Team

GeoTools Datastore Workshop at FOSS4G

There is still just time to register for the GeoTools Datastore workshop that is being presented at the FOSS4G conference in Seoul next month. The workshop is in the morning of 14th September and covers how to extend GeoTools with your own custom “DataStore” format. This course will take a detailed look at how vector data is handled. For an implementer GeoTools provides facilities for automatic handling of advanced functionality: thread safety, transactions with rollback and dynamic reprojection.

This is a Java Development workshop - so not only can you bring your own device - you can bring your own IDE. One instructor will be using Eclipse and the other Netbeans (command line and vi welcome).

You will leave this course with a custom “DataStore” implementation that can be dropped into an application such as GeoServer, and all the knowledge that you need to implement your own custom datastores in the future.

by Ian Turton (noreply@blogger.com) at August 31, 2015 04:24 PM

GeoServer Team

GeoServer 2.8-beta released

We are happy to announce the release of GeoServer 2.8-beta. Downloads are available (zipwardmg and exe) along with docs and extensions.

GeoServer 2.8 has a wide range of new features, behind the scenes changes, and a several of important security updates. This is beta release of GeoServer made in conjunction with GeoTools 14-beta.

This beta release is made available for collaboration with our user list (and is not intended for production). The beta release marks the of a feature freeze, we appreciate any and all testing during this period as we prepare for a September release.

New capabilities:

Fixes and improvements:

  • Significant increase in GML 3.X encoding speed
  • Pretty print option for style REST API
  • Allow environment variables to be used in freemarker template files
  • GeoWebCache parameter filters can now be set via GUI
  • INSPIRE metadata entry is now more forgiving and can be entered on a layer by layer basis
  • Fix for XXE security vulnerability has been revised and now functions in a JBoss environment
  • Faster startup for installations with large number of Oracle layers
  • The CSV output format can now handle WFS GetFeature join results (will transparently flatten the joined features)

Internal changes:

  • JAI-Ext integration for geospatial specific image processing operations, adding direct support for NODATA in raster sources. Disabled by default, needs to be enabled using a system variable.
  • Replacement of vecmath with EJML matrix library
  • Due to license restrictions the oracle extension no longer includes an Oracle JDBC driver, see the user guide for manual install instructions.

Community update:

  • We would like to welcome Stefano Costa (GeoSolutions) as a new committer!
  • Developers guide refresh covering release cycle, updating PSC members, and fixing tutorials
  • Responsible disclosure expectations covered on the website and user guide

See release notes for more information.

Thanks to Jody (Boundless) for publishing this beta, and the entire GeoServer team for an enormous effort bringing this release together.

About GeoServer 2.8

GeoServer 2.8 is scheduled for September release. For more information:

For additional details see the 2.8-beta and 2.8-M0 release notes.

New Community Modules

In addition to the formal GeoServer 2.8 release our code base has a community area for ideas an experimentation:

  • WCS and WPS output formats based on gdal_translate to provide a greater range of output formats
  • Embedded GeoFence server, REST API and GUI is the result of a productive collaboration between GeoSolutions and Boundless offering greater rule-based control of GeoServer security
  • MongoDB DataStore enabling GeoServer to publish from this popular JSON based document database (no zip packaging, needs volunteer)

Community modules should be considered a work-in-progress and are subject to quality assurance, documentation IP checks and a maintainer before being considered ready for release.

by jgarnett at August 31, 2015 02:47 PM

August 29, 2015

Nathan Woodrow

UI theme support now core in QGIS

I enjoy using the dark UI theme for QGIS so much I figured why not make it a core feature. In the next version of QGIS if you head to the options screen you can now find a UI Theme option.

Options | General_037

The default dark theme is called Night Mapping for all those late night mapping jobs that you do, or if you just like dark UI themes.

QGIS b789fab_029



Something you will notice with this theme is the custom icons for the layer visibility. Pretty nifty! Here is how it is done

Creating new themes

To create a new theme simply make a new folder in .qgis2\themes\ with the name of the theme you want and create a style.qss file inside there. Check out the default themes for an example

Follow the Qt style sheet guides to see what can be styled.

Something I have added on top of the normal style sheets is variable support. Variables can be declared in a variables.qss file in the theme folder.

Here is an example of some variables:

@background: #323232
@text: #aaa
@selection: #507098
@menuback: #444
@highlight: #ffaa00

Now in style.qss we can do this:

color: @text;
background-color: @background;

Great for not having to repeat your self or quick updating in a single place. When the theme is applied via the Options dialog or via the API it will replace the variables in style.qss using variables.qss. The result file is called style.qss.auto

Needs some tweaks

The default dark theme is a collection of stuff I have found around the net and stuff I have added myself. It’s far from prefect and I would love help to make it the best dark theme for QGIS. If you have another theme you think would make a good default one open a pull request on GitHub


Filed under: Open Source, qgis Tagged: qgis

by Nathan at August 29, 2015 02:41 AM

August 28, 2015

Micha Silver

QGIS fighting bugs – Part 2

Continuing my previous post I’ll now show how QGIS can serve as a front end to Spatialite based tables. We cover styling features with attributes from the database, and how to add new data rows to a non-spatial data table.

I’m presenting this post as a YouTube video. If you did not yet download the demo I suggest you get it before viewing, so it will be easier to follow the techniques. After adding the Spatialite layers into QGIS, we use attribute columns to stylize the point location markers, including data defined styles. Then we see how to add a non-spatial table of insect capture data, and to add new data rows. Finally we see how these edits are immediately viewable on the map as different sized point symbols representing pest infestation.

by Micha Silver at August 28, 2015 04:33 PM

August 26, 2015

Just van den Broecke

GPS Hiking and The Evolution of Navigation

On sunday August 25, 2015 I provided a talk/workshop for a local knowledge network of friends and acquaintances in Amsterdam. TLDR; see gps.justobjects.nl.  Originally, I would talk about “Hiking with GPS”. But as I started pondering about this subject I decided to broaden the content to include also the evolution of navigation. My reasoning was:

  • by using GPS we unlearn navigational skills such as compass and map reading
  • my personal interest in human evolution for example the route humans followed out of Africa

Routes (red) of Homo Sapiens out of Africa to populate the World

So I combined all these elements into a new title/subject “GPS Hiking and The Evolution of Navigation”. See also these slides.

Natural Navigation
I was already reading and practicing the intriguing art of Natural Navigation which in short allows one to find direction without any device nor map. By reading and interpreting signs of nature one can determine direction, i.e. where The North is.

Natural Navigation is not just about finding direction by sun, moon and stars, but in particular by interpreting our natural surroundings, i.e. the land, the plants, the trees and animals. Natural forces shape these surroundings, making them asymmetric under the influence of their prevailing forces. This asymmetry in nature provides clues for example where the North is.

Left tree shaped by wind, right by the sun (src: The Natural Navigator, Gooley)

Left tree shaped by wind, right by the sun (src: The Natural Navigator, Gooley)

For instance: sun, rain and wind strongly shape the direction that trees and their branches grow. A prevailing south-western wind will bend trees slightly north-east.

But also mosses and lichen on trees give clues about direction. This has saved me once in finding my way when hiking on a cloudy day without GPS and an emptying smartphone.

To get started with Natural Navigation I recommend the books by Tristan Gooley via www.naturalnavigator.com.

The Natural Navigator by Tristan Gooley

The Natural Navigator by Tristan Gooley

I am also intrigued in how early humans navigated. As hunter/gatherers we had to cross enormous stretches of land, often going far out from a base camp for a hunt or food collection. Did these first humans use dogs for navigation, made landmarks?They sure must have been masters at Natural Navigation. We can get some clues from indigenous people today. Years ago I read a fascinating book “The Songlines” by Bruce Chatwin, which in short told how Australian Aboriginals could navigate throughout their continent, or as Wikipedia explains:

“Within the animist belief system of Indigenous Australians, a songline, also called dreaming track, is one of the paths across the land which mark the route followed by localised ‘creator-beings’ during the Dreaming (creation time, JvdB). The paths of the songlines are recorded in traditional songs, stories, dance, and painting.


A knowledgeable person is able to navigate across the land by repeating the words of the song, which describe the location of landmarks, waterholes, and other natural phenomena.”

Going Outdoors


GeoCaching and Natural Navigation

We ended the session by doing an exercise with both Natural Navigation and following a route and GeoCaching with GPS. Here my Map5.nl NLTopo App appeared useful for those without GPS.


The Route and Caches in the Map5.nl NLTopo App


It was fun afternoon, maybe something to reenact in another setting. Let me know if you are interested.

You can find the landing page of this talk/workshop at gps.justobjects.nl and slides on Slideshare. In Dutch but you may view the page via Google Translate.

by Just van den Broecke at August 26, 2015 11:56 AM

GIS for Thought

UK Postcode Format Breakdown

UK postcodes are broken down/divided into 4 levels: Areas, Districts, Sectors, and Units.

For G12 8QH the breakdown is:
Area – G
District – G12
Sector – G12 8
Unit – G12 8QH


Geographically this breaks down as:

by Heikki Vesanto at August 26, 2015 11:00 AM

August 25, 2015

From GIS to Remote Sensing

Minor Update: Semi-Automatic Classification Plugin v. 4.7.11

This post is about a minor update for the Semi-Automatic Classification Plugin for QGIS, version 4.7.11.

Following the changelog:
- improvements in raster compression

by Luca Congedo (noreply@blogger.com) at August 25, 2015 07:34 PM

Andrés Maneiro

DEFRA libera datos LIDAR

El departamento de medioambiente, alimentación y desarrollo rural de Reino Unido (DEFRA) va a publicar sus datos como open data. Entre los primeros están los datos LIDAR, que cubren una extensión de casi el 75% del país.

by Andrés at August 25, 2015 06:22 AM

August 24, 2015

GeoSpatial Camptocamp

Animating maps with OpenLayers 3

OpenLayers 3 maps are not just static map: the rich functionality of the library provides the tools to create fully interactive maps that engage with the user. Animations are a great technique to enrich the user experience and to visualize your data in a beautiful way. In this blog post we are going to show how to build an OpenLayers 3 map that animates flight routes between airports.

The result will look like this:


The demo is available here.

In the following section, we will walk you through the steps to create this map.

We start with a simple map with just one background layer with a clean style.

The data set for the flight routes is provided by OpenFlights. We are using a simplified extract as JSON file. The file contains a list of coordinate pairs, the first coordinate being the source airport and the second coordinate being the destination airport. With the two coordinate pairs, we will create a great circle path between the two airports using the JavaScript library arc.js.

The JSON file with the flight data is not a standard geo data format, so we can not use one of the data formats of OpenLayers to load the data. Instead we read the JSON file using jQuery, calculate a great circle path for each flight and then manually create a feature and add it to a vector source. The features of the source are shown in a vector layer which is added to the map.

In the callback of the AJAX request we loop through the list of coordinate pairs and calculate a great circle line for each flight route between two airports. The coordinates of the resulting line string are in EPSG:4326. Usually, when loading vector data with a different projection, OpenLayers will automatically re-project the geometries to the projection of the map. Because we are loading loading the data ourself, we manually have to transform the line to EPSG:3857. With the re-projected line string geometry we create a feature. Then we could add the feature to the vector source. But to delay the start of the animation of a flight, so that not all animations start at the same time, we add the feature with a timeout.

The actual animation of the flights is done in a postcompose listener. The postcompose hook allows to intervene with the OpenLayers rendering process and enables to directly draw geometries onto the canvas context. A postcompose listener is called for every rendering frame and is the perfect place to implement animations.

In our case, we want to animate a flight path to simulate the movement of an airplane. We will do this by revealing the line geometry step by step. E.g. the first time a flight path is rendered, the first 2 points of the line are shown, in the next render frame the first 4 points of the line are rendered, then 6, … The speed of the airplane, that is how many points are revealed per second, can be configured.

In the function animateFlights, which we use as postcompose handler, we loop through the list of flight features and draw the features. In animateFlights we only draw the geometries of those features that are still being animated. Once the animation for a flight has finished (that is the airplane has reached its target), the feature will be rendered by the default layer style. A finished flag on the feature indicates if the animation has terminated.

To draw the geometry of a flight, we need to build a sub-line from the start of the flight to the current position of the airplane. To do this we first calculate the elapsed time from the start of the animation of this particular feature. With the elapsed time and the speed (the number of points that are revealed per second) we get the number of points that should be rendered for a line at the current time. Then, we build a linestring for the sub-set of points and directly draw the line with the vector context.

That’s it! The full code of the example is available here.

We hope that this example gives you an idea on how maps can be animated with OpenLayers 3. We are curious to see the animations that you build with this technique!

Feel free to contact us if you are interested in animating your data with OpenLayers 3. Also meet us at the FOSS4G conference in Seoul.

Cet article Animating maps with OpenLayers 3 est apparu en premier sur Camptocamp.

by Tobias Sauerwein at August 24, 2015 01:32 PM

August 23, 2015

gvSIG Team

7as Jornadas gvSIG LAC: Información actualizada

Como todos sabréis esta semana son las 7as Jornadas gvSIG de Latinoamérica y Caribe. Un evento que viene cargado de actividades. A las habituales sesiones de ponencias y pósteres, se une un número de talleres mayor del de cualquier otro año: talleres de desarrollo en java, de scripting, de introducción a nuevos usuarios, aplicados a distintas temáticas…(en este mismo blog podéis encontrar información de lo que veremos en todos los talleres).

Se ha confeccionado un PDF con toda la información actualizada de las actividades y que podéis consultar en este link.

Y para calentar motores, los días previos a las jornadas se van a realizar distintas actividades de difusión de gvSIG, tanto en Toluca como en DF:

  • Lunes 24:
    • Conferencia “Geomática libre, soberanía tecnológica y tendencias en la gestión del territorio” organizada por el Instituto de Geografía-UNAM.
    • Conferencia sobre geomática libre para la Facultad de Planeación de la UAEM -por la mañana- y para los alumnos de la Maestría en Análisis Espacial y Geoinformática -por la tarde-.
    • Taller de programación java en gvSIG para los alumnos de geoinformática de la UAEM.
    • Taller de scripting con python en gvSIG para alumnos de Postgrado / Especialidad en Cartografía Automatizada, Teledetección y Sistemas de Información Geográfica.
  • Martes 25.
    • Taller “Introducción a gvSIG 2.2, novedades y manejo del SIG libre” organizado por el Instituto de Geografía-UNAM.
    • Conferencia “Tecnología, Administración Pública y Sectores Estratégicos. Uso de los Sistemas de Información Geográfica (SIG) en la gestión pública. Casos de éxito” para el Gobierno del Estado de México.
    • Taller de programación java en gvSIG para los alumnos de Postgrado / Especialidad en Cartografía Automatizada, Teledetección y Sistemas de Información Geográfica.

¡¡Y el miércoles comienzan las Jornadas!!

Desarrollo de software libre como motor de cambio. No faltes, forma parte del cambio.

Filed under: events, gvNIX, gvSIG Desktop, spanish Tagged: 7as LAC, Programa

by Alvaro at August 23, 2015 11:03 PM

August 22, 2015

Micha Silver

QGIS fighting bugs

Real bugs, agricultural pests, cause damages to food production throughout the world. GIS techniques can help in monitoring pest infestation by collecting and mapping data from traps, baited with pheromone lures. QGIS when teamed up with Spatialite makes the ideal combination for pest control programs to maintain and display the distribution of different species of insects. Here’s how it’s done.
Pest control programs often require, at minimum, collecting capture data at static trap locations but over extended time periods. The translation of this real world concept to a spatial database suggests two tables:
  • a spatial table of trap point locations, mostly static, with a unique identifier for each trap.
  • and a second table of alpha-numeric data, where each row contains a timestamp when the trap was inspected, a count of how many insects and of what species were found, and the trap identifier, that must point back to the traps spatial table.
Setting up these two tables in a spatial database, such as Spatialite is simple. The generic SQL construct for creating a database table is:
CREATE TABLE "table_name" ("col_name" type,"col_name" type);.
So the statements we need look like:
--- Create tables for traps and inspections
  trap_type text, lure text, host text,
  longitude double, latitude double,
  place_date date);
SELECT AddGeometryColumn('traps','geometry',4326,'POINT',2);
CREATE TABLE inspections (inspect_id integer PRIMARY KEY AUTOINCREMENT,
  trap_id text references traps(trap_id),
  inspect_date date, species text,
  num_males integer, num_females integer,
  interval integer);
The first CREATE statement builds the layer for traps, with the “trap_id” declared as a text field and it serves as the primary key. We also set the initial placement date for the trap. This will become important soon when we move on to the capture data. Next comes the AddGeometryColumn(...) function. This makes the traps table spatial by performing three crucial tasks: the geometry column is added to the traps table, the table is added into the system metadata known as “geometry_columns”, and certain constraints are setup on the traps table to enforce that all new features are indeed POINT features, and that they are in the CRS that we declared, EPSG code 4326. If you are working in some other projection system, then the EPSG code declared in the third parameter of AddGeometryColumns(...) must be chosen to match your CRS.
The second CREATE defines the table for dynamic trap inspections. Note the references declaration on trap_id. This applies a foreign key constraint to the trap_id column, so that every item of inspection data must reference a trap_id that actually exists in the traps table. Also, we setup the inspect_id primary key as AUTOINCREMENT so that the database adds sequential integers automatically.

Next we implement an important concept in agricultural pest monitoring. Pest infestation is usually expressed as Flies per Trap per Day, or FTD. In order to create this metric automatically we do two additional steps.
The first step involves a database TRIGGER. We want our database to calculate for each entry of inspection data the interval in days between this new entry and the last entry on that trap, and with the same species. We do this with a trigger function. More background on trigger functions is available on the Sqlite website. Here’s the code we use:
--- Trigger function to update interval column on each insert
--- Automatically sets the interval in days since last inspection
--- When an inspection date is entered earlier than any other inspection
--- for the trap/species combination then the first date is taken
--- from the place_date of that trap
CREATE TRIGGER update_inspection_interval AFTER INSERT ON inspections
UPDATE inspections SET interval = CASE
  WHEN (SELECT COUNT(*) FROM inspections i
      WHERE i.inspect_date<NEW.inspect_date
      AND i.species=NEW.species
      AND i.trap_id=NEW.trap_id)==0
  THEN (SELECT julianday(t1.inspect_date)-julianday(t2.place_date)
      FROM inspections t1 JOIN traps t2
      ON t1.trap_id=t2.trap_id
      WHERE t1.inspect_id=inspections.inspect_id)
  ELSE (SELECT julianday(t1.inspect_date) - MAX(julianday(t2.inspect_date))
      FROM inspections t1 JOIN inspections t2
      ON t1.trap_id = t2.trap_id
      WHERE t1.inspect_date > t2.inspect_date
      AND t1.species = t2.species
      AND t1.inspect_id = NEW.inspect_id)
WHERE inspect_id = NEW.inspect_id;
Looks complicated, but when we split the statement into parts, all will become clear. The first line creates the trigger on the table inspections and sets it to run after each new insert. This means that when the trigger’s UPDATE runs, we already will have access to the new row of data that was just inserted. The outer UPDATE clause is terminated, at the line before the last with the WHERE expression: WHERE inspect_id = NEW.inspect_id;. This says to update only the row with the new inspect_id.
Within the update statement we have addressed two separate cases: calculating the interval when this is the very first inspection of the trap, so there is no earlier inspect_date, and all other inspections when we do have an earlier date. Separation of two cases is accomplished using the CASE...WHEN...THEN...ELSE... expression. Within the WHEN clause we count how many rows in the inspections table have dates earlier than the newly inserted row, with the same trap and same species. If this count is zero, then this is the first inspection of the season, so we go to the traps table, aliased as “t2” and extract the initial placement date of the trap. Recall from the create table that we added a place_date column for each trap. When the trap is inspected for the first time, we set the interval as number of days since the trap was originally placed. We chose the correct trap by doing a JOIN between the traps table and the inspections using the trap_id as the common key.
In all other cases, the trigger function goes back through the inspections table and searches, using the WHERE clauses, for rows with an earlier date. This is done by comparing, or doing a JOIN between two instances of the same table, called “t1” and “t2”. This practice is common when we need to evaluate data from different rows in the same table. The JOIN between the two instances of the inspections table is on the trap_id column. The clause WHERE t1.inspect_date > t2.inspect_date insures that we are comparing the same trap but from an earlier date, and the same species is found with the help of: AND t1.species = t2.species.
In both cases we use the unexpected function julianday() which returns the number of days since Jan 1, 4713 BCE. Subtracting the Julian Day of the previous inspection from the Julian Day of the current inspection is a simple way to get the interval in days.

We have one last step to reach FTD for each trap/species combination. We obviously need to divide the count of captures by the interval to get FTD. Since this is dynamically changing information, the recommended approach is a database VIEW. A thorough explanation of spatial VIEWs appears in the Spatialite Cookbook. This VIEW will be spatial in that it contains the geometry for each trap, but also the inspection date, species and the calculated FTD as “number of captures/interval” from the inspections table. Here’s the SQL expression to create a sample VIEW:
--- This VIEW is created as a spatial POINT feature for display in QGIS
--- The VIEW contains columns with "FTD Males" and FTD Females"
--- as well as inspection date
--- So they can be filtered in QGIS for displaying data for specific dates
CREATE VIEW capitata_ftd AS 
SELECT 	t1.ROWID AS rowid, t1.trap_id, t1.inspect_date, 
	CAST(CAST(t1.num_males AS REAL)/t1.interval AS REAL) AS "FTD Males", 
	CAST(CAST(t1.num_females AS REAL)/t1.interval AS REAL) AS "FTD females",
	t2.trap_type, t2.geometry
FROM inspections t1 JOIN traps t2
	ON t1.trap_id = t2.trap_id
WHERE t1.species='C.capitata';

--- Add VIEW metadata
INSERT INTO views_geometry_columns 
(view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only)
VALUES ('capitata_ftd','geometry','rowid','traps','geometry',1);
In the created VIEW, the virtual columns “FTD Males” and “FTD Females” are calculated on the fly. Since both the interval (days) and the num_males and num_females are integers, we add the CAST keyword to force FTD to be a real number. The VIEW above filters out the species Ceratitis capitata. Additional VIEWs can be created in a similar way for each species of pest in the database. Each row in the VIEW will contain the trap_id, inspection date, calculated FTD, and also the geometry. The rowid column is required by QGIS for displaying spatial views. The final INSERT INTO views_geometry_columns... statement sets up the required items in the Spatialite metadata table for viewing in QGIS, which I’ll present in the next installment.
You can download an SQL script file “create_pests_db.sql” with the above set of SQL commands from here. Within Spatialite-gui, click “Execute an SQL script”, and point to this script file to create a new, empty Spatialite database exactly as above. The downloaded zip file also contains a pest.sqlite database already populated with data (traps and inspections) and a QGIS project file using that Spatialite database.

by Micha Silver at August 22, 2015 02:02 PM

August 21, 2015

Martin Davis

SliceGraphs in JEQL

In the interests of increasing blog output, I'm going to experiment with using a terser style in posts where the content is mostly self-explanatory.  Sort of an embedded microblog...

Inspiration: original Population Lines print , this plot from the Line Graphs in R blog post:

Data: SEDAC World Population grid, subsampled

JEQL script


by Dr JTS (noreply@blogger.com) at August 21, 2015 10:19 PM

Martin Davis

Variable-Width Buffers in JTS

Inspiration:  this post on the JSTS group (with an image - good job on requirements!)

JTS implementation: in the lab

Code:   Geometry geom = VariableWidthBuffer.buffer( line, 10, 80 );


by Dr JTS (noreply@blogger.com) at August 21, 2015 02:58 PM

August 20, 2015

Jo Cook

Portable GIS 5.2

I’m pleased to announce the latest release of Portable GIS. This version (v5.2) has only a couple of changes:

  • QGIS 2.8 (I’m going to try and do a release to coincide with each long-term release of QGIS)
  • Loader has been updated to the latest version

You can download the setup exe and the md5 checksum here.

Older versions are still available but have been archived to avoid confusion.

As always, please let me know of any problems via the Portable GIS google group.

This version also marks the start of an attempt to create a repository for Portable GIS, which will hold the additional and/or changed files and instructions for rolling your own version. This is something that I have wanted to do for some time, but it’s not ready for release yet. Watch this space!

August 20, 2015 06:16 PM

Boundless Blog

Announcing the Availability of OpenGeo Suite 4.7

Today we’ve announced the immediate availability of OpenGeo Suite 4.7 – the press release hits the treetops of what’s included, so we’ll take the opportunity here to give a bit more color.

Support for GeoMesa

We’ve written in the past about support for GeoMesa, as recently as this past spring. What we’re seeing now is a clear trend of organizations struggling with their traditional relational databases (RDBMS). There is so much interesting data useful for GIS purposes that organizations are increasingly needing advanced data management strategies. So, we’re taking our own support of GeoMesa (and its underlying Apache Accumulo system) to the next step with a formally supported plugin for connection to GeoMesa data stores. Organizations who wish to use GeoMesa instances will now have a much easier and more reliable experience connecting their OpenGeo architecture.

WPS Builder

As GIS Professionals and Developers, the Q Score of our excitement about this feature is high. I reference here to understand the way things are prior to this release – not exactly an approach which makes advanced GIS accessible and friendly to an increasingly fragmented user audience. WPS Builder is a web-based UI that takes the next step in simplifying complicated processes, with the added upside that more professionals can now use WPS processes to improve what they can do with GIS.


We’re all-in on Composer – we strongly believe alternatives are needed across our industry for web-based styling and publishing tools. So, we’re continuing our efforts on Composer in this release. We think YSLD is very useful, so there are a lot of improvements in the experience crafting and editing the syntax. We’ve increased supported formats, made coloring easier to identify, and squashed bugs.

GeoServer Extension for AWS CloudWatch

There’s sticking stuff in the cloud as a VM and running it on somebody else’s iron, and then there’s really running stuff in the cloud. This new extension helps take GeoServer into the latter, by allowing more alignment between GeoServer and the elastic nature of the cloud. AWS Cloudwatch can now monitor load on GeoServer, helping users take advantage of the ability to scale systems up and down as needed.

Updates, Fixes, Etc.

Of course we wouldn’t be complete with any new release without fixing issues and updating supported systems. The most noteworthy is support for Java 8.

As always, all of these great features and the requisite support are available to Boundless customers. Please don’t hesitate to contact us to learn more.

The post Announcing the Availability of OpenGeo Suite 4.7 appeared first on Boundless.

by Sean Brady at August 20, 2015 05:12 PM

Nathan Woodrow

Mixing a bit of Excel into QGIS – conditional formatted table cells

I was using Excel the other day and used the conditional formatting rules to style some cells based on a condition. If you have never seen or used them they look like this:

They are pretty handy for a quick idea on the state of your data.  Looking at QGIS I thought to myself “Wait!? Why not do that in QGIS too. That would be pretty neat”.  And with that here it is, finally!. Conditional formatting rules for QGIS attribute table.



You can control the font style, color, background color, even custom icons based on QGIS symbols. The buttons at the top give you access to quick styles which you can tweak more with the other options.

The conditions are just normal QGIS expressions. Use the special variable @value to refer to the current cell value. As they are normal QGIS expressions you can reference the other fields in the expressions.

(Click the GIF for a better view)


So go nuts. I would love to hear any feedback if you use it. Try it out in the next nightly dev build.

Filed under: Open Source

by Nathan at August 20, 2015 01:25 PM


Meet Sourcepole at FOSS4G Seoul and INTERGEO Stuttgart

In four weeks, the FOSS4G Conference will start in Seoul, South Korea. Online registration is open until September 2nd, so it’s not too late for attending!


Our conference contributions:

  • Keynote from Marco Hugentobler about the QGIS project and its evolution from a desktop GIS to a GIS platform.


  • QGIS Plugin Development with Python (WS04)
  • OGC Webservices with QGIS (WS13)


  • New QGIS functions for power users, Marco Hugentobler
  • QGIS Plugins – From Must-Haves to insider tips, @PirminKalberer
  • Building an OpenLayers 3 map viewer with React, @PirminKalberer

If you want to know more about QGIS or other Open Source GIS products, meet us and our partners from Georepublic at the QGIS Enterprise exhibition booth.

We’re looking forward to meet you in Seoul!


In the same week, INTERGEO, the world’s leading conference trade fair for geodesy, geoinformation and land management takes place in Stuttgart, Germany.

You’ll find us together with our German partner Geoinformatikbüro Dassau at the QGIS Enterprise exhibition booth in Hall 4.

August 20, 2015 11:35 AM

GeoSpatial Camptocamp

Workshops and presentations at FOSS4G 2015

FOSS4G 2015 in Seoul in coming up!

Camptocamp will give 2 workshops and 2 presentations.


  • « Build Your Own Data Portal Using GeoNetwork 3 » Sept. 15 AM, Florent Gravin (Camptocamp), Francois Xavier Prunayre (Titellus) and Jeroen Ticheler (Geocat BV)
    The workshop will focus on how to implement your own dedicated open source metadata catalog with GeoNetwork. Beyond the basic installation and administration of a single default GeoNetwork instance, participants will learn, during this workshop, to develop and build their customised catalog.
  •  »OpenLayers 3 », Sept. 15 AM, Eric Lemoine (Camptocamp) and Tom Schaub (Planet Labs)
    OpenLayers 3 is a full featured mapping toolkit for web application development. Version 3 is a complete rewrite of the library with a focus on performance, flexibility, and the latest browser tech. Understanding what’s in the library and how to use it in your applications is key to unlocking its potential. In this workshop, we’ll provide a comprehensive overview of OpenLayers 3.

The workshops detailed description and schedule is available here.


    • « OL3-Cesium: 3D for OpenLayers map », Guillaume Beraudo,  Sept. 16, 11:00-11:25
      OL3-Cesium is a new open-source Javascript library for easily adding a Cesium 3D globe to applications based on OpenLayers 3.  Topics of interest will include easy kick start of a project, 3D vector positioning on the terrain, 2D/3D interactions and streaming.
    • « ngeo: a companion library for OpenLayers 3 », Eric Lemoine, Sept. 17, 11:00-11:25
      ngeo provides a set of AngularJS « directives » and « services ». With ngeo, Camptocamp targets a library that is very flexible, functionally rich and of high quality.

The presentations preliminary programme is available here.

Looking forward to seeing you at the conferencce!

Cet article Workshops and presentations at FOSS4G 2015 est apparu en premier sur Camptocamp.

by camptocamp at August 20, 2015 06:56 AM

August 19, 2015

Stefano Costa

What’s the correlation between the exposure time of your photographs and the time of the day?

My digital photo archive spans 15 years and holds about 12,600 pictures (not so many, after all). I’m curious to see if there is a correlation between the exposure time of my photographs and the time of the day they were taken. A rather simplistic observation, perhaps.

In short: there’s nothing spectacular about this correlation, but it’s nice. The morning hours are the ones with the lowest average exposure (the plot is reversed, so you can look at familiar integer numbers) time at around 1/320 s between 9 and 10 AM. There’s a sharp increase between 12 and 1 PM, then it increases again after 4 PM towards dusk. I don’t take many pictures at night!

See for yourself.


The most frequent values for exposure time are in the table below. 1/30 s is the typical exposure time when using the flash, and it’s recognisable in the plot above.

1/n s occurrences
800 1986
1000 1178
30 943
400 547
250 488
640 458
200 450
500 388
320 342
160 337

The Python and R scripts are at https://gitlab.com/steko/expotime (giving GitLab a spin since GitHub is a monopoly and I don’t like that). I’m still doing some experiments with the source data, then I’ll upload those as well.

by Stefano Costa at August 19, 2015 10:13 PM

Edmar Moretti

i3Geo no Windows

É bastante simples instalar o i3Geo no Windows utilizando o MS4W, que "empacota" todos os softwares básicos, inclusive o servidor web Apache. Comparando com o processo de instalação no Linux parece até coisa de criança, mas só a primeira vista.

Atualmente é fácil instalar as bibliotecas que o i3Geo precisa na maioria das distribuições Linux (eu uso Ubuntu), o que deixa o processo bem mais rápido. Raramente é necessário compilar software e resolver manualmente dependências, bastando algum conhecimento básico do sistema operacional.

O maior problema do MS4W é que seu desenvolvimento parece não acompanhar a evolução das versões do Windows, o que faz com que o software não funcione adequadamente em situações não muito bem explicadas. Vez por outra usuários relatam problemas em versões mais novas do Windows e agora não é diferente com a 10.

Claro que em ambientes de produção, é muito mais indicado usar Linux, mas existem situações onde a equipe de desenvolvimento utiliza servidores em máquinas locais, e muitas vezes são máquinas Windows. Na equipe onde trabalho no Ministério da Saúde, existem três desenvolvedores que usam Windows com MS4W e dois que utilizam Ubuntu, sendo que as máquinas de integração e produção são Red Hat.

Infelizmente, parece não haver uma solução simples para quem usa Windows. A última versão do MS4W (http://maptools.org/ms4w/) ainda utiliza a versão 6.0.3 do Mapserver e foi preparada em 2012. A alternativa seria o pacote OSGeo4W (http://trac.osgeo.org/osgeo4w/), desenvolvido pela OSGEO, mas o único ZIP que contém o PHP-Mapscript utiliza uma versão mais antiga ainda do Mapserver: 5.6.6, e olha que deu trabalho para encontrá-la (está aqui: http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe).

Documentação sobre instalação do Mapserver: http://mapserver.org/introduction.html#installation-and-requirements

Talvez a melhor saída seja compilar o Mapserver, mas o arquivo LEIA-ME do Mapserver 7 (https://github.com/mapserver/mapserver/blob/branch-7-0/README.WIN32) diz quase tudo:

Nem tente o link http://mapserver.gis.umn.edu/download/current/windows (página não encontrada), e no site correto (mapserver.org) não existem arquivos dll específicos para Windows.

O melhor a dizer para usuários Windows é o que eu li em uma mensagem em alguma lista por aí: mude para Linux. Nem todo mundo vai gostar disso, mas é o melhor que encontrei até aqui.

Aqui algumas dicas para quem quer testar o OSGeo4W

  • Download: http://download.osgeo.org/osgeo4w/osgeo4w-setup.exe
  • Escolha como pasta raiz C:\ms4w
  • Para testar o Apache digite no navegador: http://localhost
  • Faça o download do i3Geo:
  • Copie a pasta i3geo para dentro de c:\ms4w\apache\htdocs
  • Instale o Tortoise para fazer o update da pasta i3Geo
  • Utilize o gerenciador de arquivos do Windows e crie a pasta tmp\ms_tmp dentro de C:\ms4w. No final você deverá ter a seguinte pasta:  C:\ms4w\tmp\ms_tmp
  • Teste o i3Geo no navegador:
  • http://localhost/i3geo

by Moretti Edmar (noreply@blogger.com) at August 19, 2015 08:16 PM

From GIS to Remote Sensing

CLASSIFICAÇÃO SUPERVISIONADA: a Tutorial in Brazilian Portuguese about the Semi-Automatic Classification Plugin

I am always very pleased when users of the Semi-Automatic Classification Plugin wish to contribute to the plugin community and write tutorials about the use of this tool.

Mônica Pacheco de Araújo, a biologist at the CNPq junto ao Núcleo de Estudos Ambientais da Universidade Federal do Tocantins, has written a very useful tutorial in Brazilian Portuguese about the classification of Landsat images in the study area of the Basin of Ribeirão Mutum.
The tutorial describes the steps from plugin installation, to download and processing of Landsat images, to the accuracy assessment of classification.

The tutorial is available at this link http://qgisbrasil.org/blog/2015/08/18/qgis-classificacao-supervisionada-de-imagens-orbitais-com-o-semi-automatic-classification-plugin/. In particular, a PDF file of this tutorial is available here.
Many thanks to Mônica Pacheco de Araújo for the valuable contribution to the user community, and to the blog qgisbrasil.org that hosts this tutorial.

For any comment or question, join the Facebook group and a Google+ Community about the Semi-Automatic Classification Plugin.

by Luca Congedo (noreply@blogger.com) at August 19, 2015 09:14 AM

From GIS to Remote Sensing

Video Tutorial: Tutorial 2: Land Cover Classification of Landsat Images

I have published the second video tutorial bout the use of the Semi-Automatic Classification Plugin (SCP) for the classification of a Landsat 8 image. It is recommended to read the Brief Introduction to Remote Sensing before this tutorial.

by Luca Congedo (noreply@blogger.com) at August 19, 2015 08:32 AM

From GIS to Remote Sensing

Video Tutorial: Using the tool Band calc of the Semi-Automatic Classification Plugin

This is a tutorial about the use of the tool Band calc that allows for the raster calculation for bands. In particular, we are going to calculate the NDVI (Normalized Difference Vegetation Index) of a Landsat image, and then apply a condition in order to refine a land cover classification (see Tutorial 2: Land Cover Classification of Landsat Images ) basing on NDVI values (a sort of Decision Tree Classifier).
The Band calc can perform multiple calculations in sequence. We are going to apply a mask to every Landsat bands in order to exclude cirrus and cloud pixels from the NDVI calculation, and avoid anomalous values. In particular, Landsat 8 includes a Quality Assessment Band ) that can be used for masking cirrus and cloud pixels.
The values that indicate with high confidence cirrus or clouds pixels are (for the description of these codes see the table at http://landsat.usgs.gov/L8QualityAssessmentBand.php ):
  • 61440;
  • 59424;
  • 57344;
  • 56320;
  • 53248;
  • 31744;
  • 28672 .
In particular, the Quality Assessment Band of the sample dataset includes mainly the value 53248 indicating clouds. Therefore, in this tutorial we are going to exclude the pixels with the value 53248 from all the Landsat bands.

Following the video of this tutorial.

by Luca Congedo (noreply@blogger.com) at August 19, 2015 08:32 AM

From GIS to Remote Sensing

Video Tutorial: Your First Land Cover Classification

I have published a new video tutorial bout the use of the Semi-Automatic Classification Plugin (SCP) for the classification of a generic multi-spectral image. It is recommended to read the Brief Introduction to Remote Sensing before this tutorial.

by Luca Congedo (noreply@blogger.com) at August 19, 2015 08:32 AM

August 18, 2015

Boundless Blog

See You in Seoul!

Boundless is looking forward to seeing everyone at FOSS4G 2015 in Seoul Korea. We would like to thank the organizers for a chance to sponsor this great international community event.

Boundless has a large contingent in attendance, you can catch us in the following workshops:

  • GeoServer Performance Tuning (WS01)
  • GeoTools DataStore Workshop (WS03)
  • Beyond GeoServer Basics (WS19)

And presentations:

  • Building OpenLayers Applications with QGIS
  • OpenLayers 3 Feature Frenzy
  • State of GeoServer
  • Everybody wants (someone else to do) it: Writing documentation for open source software
  • OSGeo and LocationTech Comparison
  • OL3-Cesium: 3D for OpenLayers maps

We also invite you to visit Boundless in the exhibit area and learn more how we put these great technologies to use for our OpenGeo Suite customers.


The post See You in Seoul! appeared first on Boundless.

by Jody Garnett at August 18, 2015 07:10 PM

Marco Bernasocchi

QGIS Welcome Page

Whenever you start QGIS you basically do it because? Right, because you need to do GIS work. Ah, how I love rhetorical questions to start a post. And most of the time one continues to work on a QGIS project which
See more ›

by Matthias Kuhn at August 18, 2015 07:03 PM

From GIS to Remote Sensing

Major Update: Semi-Automatic Classification Plugin v. 4.7.0

This post is about a major update for the Semi-Automatic Classification Plugin for QGIS, version 4.7.0.

Following the changelog:
-added multiplicative and additive factors in the band set tab, which allow for on the fly conversion to TOA
-improved the threshold settings for spectral signatures, which are now saved in the signature list file
-added options for the extent calculation in Band calc
-added calculation of Kappa hat for accuracy assessment
-added button for clearing Landsat download table
-added button for sorting band set by name
-added button for creating external overviews of bands
-added button for automatic calculation of signature thresholds
-added button for cumulative cut and standard deviation stretch of input image
-added button for showing and hiding input image
-added button for zooming to ROIs and previews
-added slider for transparency of previews
-bug fixing

by Luca Congedo (noreply@blogger.com) at August 18, 2015 10:08 AM

Tyler Mitchell

Generate terrain with flowing water from DEM in Unity

Just a quick video follow up based on a reader asking how I did what I did in my…

The post Generate terrain with flowing water from DEM in Unity appeared first on spatialguru.com.

by Tyler Mitchell at August 18, 2015 06:29 AM

August 17, 2015

Antonio Santiago

Using random unsplash images on your website

Recently I updated my we page and one of the nice features I included on it is the fact a random image is placed in the header for each page. These images are obtained from the great unsplash, a free (do whatever you want) high-resolution photos project. As its slogan says, unsplash contains tons of really good images, both by its resolution and the photographies.

August 17, 2015 10:08 PM

OSGeo News

Charter Member Elections Begin

by jmckenna at August 17, 2015 02:15 PM

Tyler Mitchell

High speed water flow simulation on a DEM

I’m helping some friends who are working on a project to visualise a whole whack of GIS data in Unity (Unity3D.com)…

The post High speed water flow simulation on a DEM appeared first on spatialguru.com.

by Tyler Mitchell at August 17, 2015 05:50 AM

August 16, 2015

Bjorn Sandvik

Master maps

I’m going freelance over the summer, after 5 great years at the Norwegian Broadcasting Corporation (NRK). It was not an easy decision, but I have to try. I’ll tell more about my plans later. Please sign up to get notified about my services.

Some of the projects I've been working on at NRK:

The flexible mapping stack of NRK.no, allowing journalists and digital storytellers to create advanced maps in minutes. 

"Kartoteket" - our in-house mapping tool built on top of our mapping stack.

Digital storytelling using NRKs mapping stack and Mapbox. 

Digital storytelling using NRKs mapping stack and Mapbox. 

Flood maps using NRKs mapping stack and CartoDB.

Radon affected areas in Norway using NRKs mapping stack.

Our popular photo maps

Video map of the long running TV show Norge Rundt.
Tracking of "Sommerbåten" along the coast of Norway.

Other work.

by Bjørn Sandvik (noreply@blogger.com) at August 16, 2015 07:22 AM

August 15, 2015

Stefano Costa

The life of Andrew of Crete

Andrew of Crete was a (famous) archbishop of Crete during the early 8th century. He is a venerated as a saint by both the Orthodox and the Catholic church, and even today he is particularly appreciated as a hymnographer.

Andrew was born in Damascus, spent his early years in Jerusalem (and that’s why he’s also known as Andrew of Jerusalem) and he only spent a fraction of his life in Crete, but from his biography we learn that he was particularly active in the “typical” activities of an archbishop, such as building new churches, taking care of the existing ones, etc. Given the scarcity of written sources about Crete in the 8th century, the life of Andrew of Crete is an important historical document for the study of this period. However, it should be noted that no more than half of the text is about the years Andrew served as ἀρχιεπίσκοπος τῆς Κρητῶν φιλοχρίστου νήσου, archbishop of the Christian island of Crete.

I heard several mentions of this biography in Rethymno last month so I was rather curious. To my discontent, I could only find the same boilerplate summary of the life everywhere on the many thematic websites dedicated to Christian saints, and even Wikipedia doesn’t stand out as particularly accurate. What is really disappointing is that nowhere was a reference to the actual biography! Still, that was published in Saint Petersburg in 1898, in volume 5 of the Ανάλεκτα Ιεροσολυμιτικής σταχυολογίας, with the descriptive title of Βίος του εν αγίοις πατρὸς ημων Ανδρέου του Ιεροσολυμίτου, ὰρχιεπισκὸπου γενομένου Κρήτης. This reference is found in some scholarly publications, such as G. Kourtzian’s «L’incident de Knossos (fin Septembre/début Octobre 610)», Travaux et mémoires, vol. 17, 2013, p. 182 (even though the reference has the wrong publication year). The links above point to the Internet Archive: the life of Andrew of Crete is actually available on the Web but it is difficult to find.

There are two manuscripts for the biography of Andrew, one from the monastery of Vatopedi, the other from Agios Dionisios, both on Mount Athos.

I have started a transcription at Wikisource. I had never typed polytonic Greek before, but it’s very easy to get a decent typing speed on GNU/Linux following the document Writing Greek, Greek Polytonic (Ancient Greek) on Linux by Simos Xenitellis.

by Stefano Costa at August 15, 2015 03:12 PM

August 13, 2015

gvSIG Team

Talleres 7as Jornadas gvSIG LAC: gvSIG aplicado a urbanismo


Presentamos el último post sobre los talleres que se celebrarán en las Jornadas gvSIG de Latinoamérica y Caribe, que como sabréis este año son en Toluca (México).

En los proyectos relacionados con el urbanismo se trabaja y analiza un volumen muy elevado de información de diversa naturaleza, gran parte de la cual, de un modo u otro tiene su representación en el territorio.

El correcto análisis de esta información, desde un punto de vista espacial, puede ser fundamental para la toma de decisiones y el diseño de proyectos de urbanismo.

Del mismo modo, a partir de los diseños de nuevos proyectos, se puede analizar el impacto real que tendría la puesta en marcha de los mismos.

Este taller servirá para introducir a los asistentes en las posibilidades de aplicación de los Sistemas de Información Geográfica al urbanismo. Para ello, y mediante ejercicios prácticos, se llevará a cabo una simulación de un proyecto de urbanismo.

Caso de partida: un barrio con zonas bajas más antiguas y las zonas recientemente urbanizadas de su alrededor, y rodeado de una zona no urbanizada que se proyecta urbanizar.

Se analizarán determinadas características del barrio como densidad de población, mapa de ruido, densidad de arbolado, … a modo de estudio preliminar. Posteriormente, partiendo de una propuesta de proyecto, se hará una simulación de los cambios que produciría para la población la urbanización proyectada.

Mediante ejercicios prácticos se irá haciendo un recorrido por las principales funcionalidades de gvSIG necesarias para este tipo de estudios, que incluyen desde la edición y la elaboración de mapas temáticos a determinados geoprocesos.

Recordar que los talleres son gratuitos, al igual que todas las actividades de las jornadas, y que para asistir necesitáis realizar vuestra inscripción a las jornadas mediante el siguiente enlace:


Más información sobre otros talleres que se impartirán en las Jornadas:

Filed under: events, gvSIG Desktop, spanish, training Tagged: 7as LAC, urbanismo

by Alvaro at August 13, 2015 08:22 AM

Nathan Woodrow

QGIS UI themes plugin

Scrap that idea. Seems there is already a  plugin to do this called Load QSS.  I’m not going to duplicate effort. Use that one and we can all make it better.

Want to have a dark theme, or even your own custom theme, for QGIS?  No worries. The UI Theme plugin has your back. Grab it from the plugin installer.  

Change the theme using Plugins -> UI Themes -> Theme It!


Just select a theme and the interface will change styles.  Here is the dark theme called “Much Dark. Such Goth” :)


I will let you try the “Oh my eyes” theme.

Themes can be added by creating a {name}.css file in plugin folder themes folder and edited __init__.pyfile to list the theme.  I’m working on this to make it better but I wrote this in about half an hour so it’s not all there yet.

The active themes is saved in the settings and restored on QGIS load.

If you make a cool theme feel free to make a pull request or ticket so it can be added to the plugin for others to use.  There is heaps that can be done with the Qt stylesheets so go nuts and make something cool.

Note: It’s a work in progress and things might not always look right.

Filed under: Open Source

by Nathan at August 13, 2015 08:02 AM