OSGeo Planet

GeoTools Team: GeoTools 18.4 released.

OSGeo Planet - Tue, 2018-06-19 08:35
GeoTools 18.4 Released The GeoTools team is pleased to announce the release of GeoTools 18.4: geotools-18.4-bin.zip geotools-18.4-doc.zip geotools-18.4-userguide.zip geotools-18.4-project.zip maven repository Thanks to everyone who contributed to this release. This release is made in conjunction with GeoServer 2.12.4. This release is a maintenance release providing bug fixes and
Categories: OSGeo Planet

BostonGIS: Coming PostGIS 2.5 ST_OrientedEnvelope

OSGeo Planet - Mon, 2018-06-18 21:42

PostGIS 2.5 is just around the corner. One of the new functions coming is the ST_OrientedEnvelop. This is something I've been waiting for for years. It is the true minimum bounding rectangle, as opposed to ST_Envelope which is an axis aligned bounding rectable.

Below is a pictorial view showing the difference between the two.

Continue reading "Coming PostGIS 2.5 ST_OrientedEnvelope"
Categories: OSGeo Planet

gvSIG Team: gvSIG en el XVIII Congreso Nacional TIG

OSGeo Planet - Mon, 2018-06-18 17:09

post_TIG_Valencia

La Asociación gvSIG, fiel a su compromiso de dar visibilidad a los proyectos de SIG Libre, colabora con el XVIII Congreso Nacional TIG que se realizará en Valencia entre los días 20 y 22 de junio.

Tendremos un stand donde estaremos encantados de hablar con cualquier institución o empresa interesada en implementar cualquiera de los productos de gvSIG, informaremos de las últimas novedades de la Suite gvSIG y tendremos algún que otro obsequio para las personas visitantes.

Además, impartiremos un taller para aprender scripting en gvSIG Desktop. Será el jueves 21 de 16:00 a 17:30.

Os facilitamos el enlace para ver el programa completo:

https://congresos.adeituv.es/tig2018/paginas/pagina_451_25.es.html

 

Categories: OSGeo Planet

Even Rouault: The barn is raising

OSGeo Planet - Mon, 2018-06-18 11:40
Thanks to the support given by the sponsors of the GDAL SRS barn effort, I have been able to kick in the first works in the past weeks. The work up to now has been concentrated on the PROJ front.
The first step was to set a foundation of C++ classes that implement the ISO-19111 / OGC Topic 2 "Referencing by coordinates" standard. Actually I have anticipated the future adoption of the 18-005r1 2018 revision of the standard that takes into account the latest advances in the modelling of coordinate reference systems (in particular dynamic reference frames, geoid-based vertical coordinate reference systems, etc.), which will be reflected in the corresponding update of the WKT2:2018 standard and future updates of the EPSG dataset. If you are curious, you can skim through the resulting PROJ class hierarchy which is really close to the abstract specification (a number of those classes currenty lack a real implementation for now). With the agreement of the newly born PROJ project steering committee, I have opted for C++11 which offers a number of useful modern features to reduce boilerplate and concentrate on the interesting aspects of the work.
On the functional front, there is already support to read WKT1 (its GDAL variant for now) and WKT2 strings and build a subset of the before mentionned C++ objects. And conversely to dump those C++ objects as WKT1 and WKT2 strings. In particular you can import from WKT1 and export to WKT2, or the reverse (within the limitations of each format). So this abstract modelling (quite close to WKT2 of course) effectively serves its purpose to help being independant from the actual representation of the CRS. As I mentionned an early adoption of the OGC Topic 2 standard, similarly I've taken into account the future WKT2:2018 (OGC 18-010) standard that aligns well with the abstract specification. In the API, the user can select if he wants to export according to the currently adopted version WKT2:2015 (OGC 12-063r5), or with the future WKT2:2018 revision.
The result of those first steps can be followed in this pull request.
Another task that has been accomplished is the addition of the Google Test C++ testing framework to PROJ (thanks to Mateusz Loskot for his help with the CMake integration), so all those new features can be correctly tested locally and on all platforms supported by PROJ continuous integration setup.
There are many future steps to do just on the PROJ front :
  • implement remaining classes
  • code documentation
  • comprehensive support of projection methods (at least the set currently supported by GDAL)
  • import from and export to PROJ strings for CRS definitions and coordinate operations
  • use of the EPSG dataset
Categories: OSGeo Planet

Even Rouault: SQLite and POSIX advisory locks

OSGeo Planet - Sat, 2018-06-16 13:47
Those past couple days, I was working on implementing multi-layer transaction support for GeoPackage datasources (for QGIS 3.4). Multi-layer transaction is an advanced functionality of QGIS (you have to enable it in project settings), initially implemented for PostgreSQL connections where several layers can be edited together so as to have atomic modifications when editing them. Modifications are automatically sent to the database, using SQL savepoints to implement undo/redo operations, instead of being queued in memory and committed at once when the user stops editing  the layer.
While debugging my work during development, I stumbled upon a heisenbug. From time to time, the two auxiliary files attached to a SQLite database opened in Write Ahead Logging (WAL) mode, suffixed -wal and -shm, would suddenly disappear, whereas the file was still being opened by QGIS. As those files are absolutely required, the consequence of this was that following operations on the database failed: new readers (in the QGIS process) would be denied opening the file, and QGIS could not commit any new change to it. When the file was closed, the file returned again in a proper state (which shows the robustness of sqlite). After some time, I realized that my issue arised exactly when I observed the database being edited by QGIS with an external ogrinfo on it (another way to reproduce the issue would be to open a second QGIS instance on the same file and close it). I indeed used ogrinfo to check that the state of the database was consistent during the editing operations. Okay, so instead of a random bug, I had now a perfectly reproducable bug. Half of the way to solve it, right ?
How come ogrinfo, which involves read-only operations, could cause those -wal and -shm files to disappear ? I had some recollection of code I had written in the OGR SQLite driver regarding this. When a dataset opened in read-only mode is closed by OGR, it checks if there's a -wal file still existing (which could happen if a database had not been cleanly closed, like a killed process), and if so, it re-opens it temporarily in update mode, does a dummy operation on it, and close it. If the ogrinfo process is the only one that had a connection on the database, libsqlite would remove the -wal and -shm files automatically (OGR does not directly remove the file, it relies on libsqlite wisdom to determine if they can be removed or not). But wait, in my above situation, ogrinfo was not the exclusive process operating on the database: QGIS was still editing it.... Would that be a bug in the venerable libsqlite ??? (spoiler: no)
I tried to reproduce the situation with replacing QGIS by a plain sqlite console opening the file, and doing a ogrinfo on it. No accidental removal of the -wal and -shm files. Okay, so what is the difference between QGIS and the sqlite console (beside QGIS having like one million extra line of code;-)). Well, QGIS doesn't directly use libsqlite3 to open GeoPackage databases, but uses the OGR GPKG driver. So instead of opening with QGIS or a sqlite3 console, what if I opened with the OGR GPKG driver ? Bingo, in that situation, I could also reproduce the issue. So something in OGR was the culprit. I will save you of the other details, but at the end it turned out that if OGR was opening itself a .gpkg file using standard file API, whereas libsqlite3 was opening it, chaos would result. This situation can happen since for example when opening a dataset, OGR has to open the underlying file to at least read its header and figure out which driver would handle it. So the sequence of operation is normally:1) the GDALOpenInfo class opens the file2) the OGR GeoPackage driver realizes this file is for it, and use the sqlite3_open() API to open it3) the GDALOpenInfo class closes the file it has opened in step 1 (libsqlite3 still manages its own file handle)
When modifying the above sequence, so that 3) is executed before 2), the bug would not appear. At that point, I had some recollection that sqlite3 used POSIX advisory locks to handle concurrent accesses, and that there were some issues with that POSIX API. Digging into the sqlite3.c source code revealed a very interesting 86 line long comment about how POSIX advisory locks are broken by design. The main brokenness are they are advisory and not compulsory of course, but as this is indicated in the name, one cannot really complain about that being a hidden feature. The most interesting finding was: """If you close a file descriptor that points to a file that has locks, all locks on that file that are owned by the current process are released.""" Bingo: that was just what OGR was doing.My above workaround (to make sure the file is closed before sqlite opens it and set its locks) was OK for a single opening of a file in a process. But what if the user wants to open a second connection on the same file (which arises easily in the QGIS context) ? The rather ugly solution I came off was that the OGR GPKG driver would warn the GDALOpenInfo not to try to open a given file while it was still opened by the driver and pass it the file header it would be supposed to find if it could open the file, so that the driver identification logic can still work. Those fixes are queued for GDAL 2.3.1, whose release candidate is planned next Friday.
Conclusions:
  • never ever open (actually close) a SQLite database with regular file API while libsqlite3 is operating on it (in the same process)
  • POSIX advisory locks are awful.
Categories: OSGeo Planet

GIS for Thought: GAA Winners 1887 to 2017 GIFs

OSGeo Planet - Wed, 2018-06-13 09:00

Some of the outputs from my Data Driven Cartography workshop at the 2nd OSGeo Ireland conference.

Gaelic Football:

Final frame:
GAA football

Hurling:

Final frame:
GAA hurling

Categories: OSGeo Planet

GRASS GIS: GRASS GIS 7.4.1 released

OSGeo Planet - Tue, 2018-06-12 20:06
We are pleased to announce the GRASS GIS 7.4.1 release
Categories: OSGeo Planet

Blog 2 Engenheiros: Como utilizar Python no QGIS (PyQGIS) para automatizar processos?

OSGeo Planet - Tue, 2018-06-12 07:01

Quando trabalhamos com Sistemas de Informações Geográficas (SIG), alguns trabalhos são bastante repetitivos, beirando à chatice.

Extrair, cortar, realizar analise, extrair, cortar, realizar analise. Quantas vezes você vai ficar repetindo esse processo? Por que não programar para realizar todo ele de uma vez só?

Já apresentamos como realizar esse tipo de procedimento utilizando o ArcGIS, e caso você queira mais detalhes sobre o que é Python, dê uma olhada na nossa postagem sobre como usar Python e a ferramenta Buffer no ArcGIS.

Nesta postagem, utilizaremos o QGIS 2.18 e Python para extrair o limite do município de Cocal do Sul (e de outros municípios), em seguida, iremos utilizar esse limite para recortar o mapa de solos do Estado de Santa Catarina.

Nos links abaixo, você poderá baixar os shapefiles que usaremos nesta postagem.

Como acessar o Python no QGIS (PyQGIS)?

Antes de adicionarmos qualquer shapefile, vamos abrir o terminal e o editor python do QGIS para escrever e executar nossos comandos.

Vá em Plugins e clique em Python Console (1). Provavelmente somente o Terminal será aberto, mas você pode habilitar o editor clicando em “Show Editor” (2), conforme figura abaixo.

Iniciando o módulo Python no QGIS 2.18.Iniciando o módulo Python no QGIS 2.18.

Com todas essas janelas abertas, vamos começar a programar na janela que foi aberta quando clicamos em “Show Editor”.

Carregando shapefile usando PyQGIS

Agora, vamos carregar algumas bibliotecas e vamos utilizar a função addVectorLayer() para adicionar nossos dois shapefiles.

#!/usr/bin/env python #coding: utf-8 # Carregando bibliotecas no Python from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * import processing import sys # Adicionando nossos arquivos shapefile lim_mun = "C:/Users/ferna/Desktop/PyQGIS/42MUE250GC_SIR.shp" solos_sc = "C:/Users/ferna/Desktop/PyQGIS/Solos_Santa_Catarina_250000_2004.shp" iface.addVectorLayer(lim_mun, "Limites Municipais", "ogr") iface.addVectorLayer(solos_sc, "Solos de SC", "ogr")

A função addVectorLayer recebe três parâmetros, são eles (1) o local onde foi salvo o shapefile; (2) nome da camada e (3) o identificador da fonte de dados, normalmente ogr.

Extraindo o limite municipal

Agora, com as camadas carregadas, iremos acessar os dados da camada “Limite Municipal” e por meio da ferramenta Extract by Attribute, iremos separar o limite do município de Cocal do Sul em um novo shapefile.

Iremos utilizar a função “processing” e dentro dela vamos especificar o algoritmo para extração de dado baseando-se em um atributo.

# Rodando algoritmo para extrair limites de Cocal do Sul limCocal = "C:/Users/ferna/Desktop/PyQGIS/limCocal.shp" processing.runalg('qgis:extractbyattribute', lim_mun, "NM_MUNICIP", 0, "COCAL DO SUL", limCocal)

Com o limite municipal de Cocal do Sul em mãos, já podemos rodar o nosso código seguinte para recortar os tipos de solos existentes dentro do município.

Cortando a partir de um polígono

Neste procedimento, utilizaremos a função Clip para recortar as classes de solo do município de Cocal do Sul.

Mas antes de executarmos esse código, nossos shapefiles estão em sistemas de projeção diferentes, isso pode ocasionar erros no momento do cruzamento dos mapas. Por isso, antes de rodar o código de recorte, vamos executar o qgis:reprojectlayer, para converter o shapefile do tipo de solo para SIRGAS2000.

# Convertendo os sistemas de coordenadas Solos_SIRGAS = "C:/Users/ferna/Desktop/PyQGIS/Solos_SIRGAS.shp" processing.runalg("qgis:reprojectlayer", solos_sc, "epsg:4674", Solos_SIRGAS) # Recortando nossa area de estudo solosCocal = "C:/Users/ferna/Desktop/PyQGIS/solosCocal.shp" processing.runalg('qgis:clip', Solos_SIRGAS, limCocal, solosCocal) iface.addVectorLayer(solosCocal, "Solos de Cocal do Sul", "ogr")

E dessa forma, conseguimos extrair os tipos de solos do município de Cocal do Sul.

Note que as funções Reproject Layer e Clip precisam dos seguintes argumentos:

  • Reproject Layer: (1) Arquivo de Entrada, (2) Sistema de Coordenadas Final, (3) Arquivo de Saída.
  • Clip: (1) Arquivo a ser cortado, (2) Limites do corte, (3) Arquivo de Saída.
Como realizar esse processo para varias cidades?

Para isso, vamos construir uma variável com os nosso municípios alvos (i.e. Ermo, Forquilhinha, Nova Veneza e Garopaba) e em seguida, criaremos um loop do tipo for para rodar todos eles, veja abaixo.

# Extraindo multiplos mapas de solo com um loop cidades = ["ERMO", "FORQUILHINHA", "NOVA VENEZA", "GAROPABA"] for n in cidades: limite = "C:/Users/ferna/Desktop/PyQGIS/lim" + n +".shp" processing.runalg('qgis:extractbyattribute', lim_mun, "NM_MUNICIP", 0, n, limite) solos = "C:/Users/ferna/Desktop/PyQGIS/solos" + n + ".shp" processing.runalg('qgis:clip', Solos_SIRGAS, limite, solos) iface.addVectorLayer(solos, "Solos de " + n , "ogr")

Note que após realizar esse processo, você poderá substituir a variável cidades pelos municípios que você deseja, desde que o nome esteja igual ao nome do município no shapefile com os limites municipais.

Obs.: Estou pesquisando como extrair os municípios que apresentam caracteres especiais em seus nomes (i.e. acentos, cedilhas), pois até agora, não consegui extrair o shape de solos deles. Até onde pesquisei, tem a ver com a codificação dos caracteres (UTF-8). Caso você tenha a resposta, deixe ela nos comentários que estaremos agradecendo e atualizando a postagem.

[Atualização em 18/06/2018]

Corrigindo o problemas de Encoding

Depois de pesquisar um pouco sobre como converter um shapefile para um Encoding diferente, conseguimos realizar o procedimento anterior para municípios com acentos.

O novo código tem uma parte para realizar essa correção, onde carregamos novamente o shapefile (função QgsVectorLayer()) e em seguida salvamos ele num novo formato (função QgsVectorFileWrite().writeAsVectorFormat())

Lembre-se também de colocar um “u” na frente dos textos que contém acentos, como fizemos na variável cidades.

Confira o código completo abaixo.

# -*- coding: utf-8 -*- # Carregando pacotes no Python import processing import sys import osgeo.ogr as ogr import osgeo.osr as osr # Carregando nossos arquivos shapefile lim_mun = "C:/Users/ferna/Desktop/PyQGIS/42MUE250GC_SIR.shp" solos_sc = "C:/Users/ferna/Desktop/PyQGIS/Solos_Santa_Catarina_250000_2004.shp" # Convertendo os sistemas de coordenadas Solos_SIRGAS = "C:/Users/ferna/Desktop/PyQGIS/Solos_SIRGAS.shp" processing.runalg("qgis:reprojectlayer", solos_sc, "epsg:4674", Solos_SIRGAS) # Corrigindo Encoding Camada = QgsVectorLayer(lim_mun, None, 'ogr') Camada.setProviderEncoding("utf8") Camada.dataProvider().setEncoding("utf8") lim_UTF8 = "C:/Users/ferna/Desktop/PyQGIS/lim_UTF8.shp" QgsVectorFileWriter.writeAsVectorFormat(Camada, lim_UTF8, "utf_8_encode", Camada.crs(), "ESRI Shapefile") # Extraindo vários itens com acentos cidades = [u"CRICIÚMA", u"MORRO DA FUMAÇA"] for n in cidades: limite = "C:/Users/ferna/Desktop/PyQGIS/lim" + n +".shp" processing.runalg('qgis:extractbyattribute', lim_UTF8, "NM_MUNICIP", 0, n, limite) solos = "C:/Users/ferna/Desktop/PyQGIS/solos" + n + ".shp" processing.runalg('qgis:clip', Solos_SIRGAS, limite, solos) iface.addVectorLayer(solos, "Solos de " + n , "ogr")

Caso tenha ficado com alguma dúvida, deixe ela nos comentários que estaremos respondendo assim que possível.

Categories: OSGeo Planet

GeoSolutions: HEV-E: leveraging on GeoNode to explore data for disaster risk management

OSGeo Planet - Mon, 2018-06-11 10:12

HEV-E

Sharing data and information related to risk management is a stringent necessity. Natural events have an ever increasing impact on global population and assets, mostly in areas with reduced capabilities to deal with emergencies. Disaster management, prevention, and planning activities require access to the most up to date and detailed information available for a geographic area. Often data resides in some remote corners of the web hardly discoverable or, in the worst case, is kept segregated in local storage reducing or completely cancelling its value. Moreover data often lacks fundamental information (metadata) regarding its contents and formats.

The GFDRR group of World Bank tackled this within the second round of its "Challenge Fund" initiative. One of its goals was designing a common data model to store and share data about exposures, hazards and vulnerabilities, and a web platform to ingest, explore and download these data.

GeoSolutions was committed for its design and development. The project has been based on a lightweight User Centered Design approach,  doing interviews to stakeholders and collecting suggestions from domain experts. The results of this phase was a mockup that in a few weeks has become the base of the HEV-E Platform.

[caption id="attachment_4108" align="aligncenter" width="800"]HEV-E mockup HEV-E mockup[/caption]

Although being in its initial phase a first release of the platform was released a few weeks ago.  New and improved functionalities will be added in the future. Thanks to a great set of tools we were able to go online in a couple of months:

  • GeoNode: it provides the metadata services the and layers views management
  • Geoserver: (OGC) map services and layers styling
  • Django: a dedicated project has been implemented to expose custom APIs and extending GeoNode functionalities
  • MapStore and React: the frontend is completely based on MapStore (our flagship frontend framework) and new specific React components

The final result is a Catalog that let users explore Exposures, Hazards and Vulnerabilities functions currently available (for the moment just a small sample dataset).

[caption id="attachment_4144" align="aligncenter" width="800"]HEV-E Homepage HEV-E Homepage[/caption]  

The original dataset are split into single layers, that can be searched and filtered through the HEV-E catalog frontend. From the catalog a preview of the geographical area covered by the layer, and a preview of the layer content themselves, is shown on the contextual map. A user can add a layer to the map, to keep it around while continuing navigating through the catalog. Being in sync with the area currently shown on the map, the catalog helps the user obtaining only the relevant layers for the context currently explored.

For each layer a Detail view provides insights on the specific layer's contents, according to the layer type and contents. As an example, for exposures a chart with the number of occurrences by construction material or type of occupancy is shown.

[caption id="attachment_4116" align="aligncenter" width="800"]HEVE catalog search HEV-E catalog search[/caption]

During the exploration the user is able to add each layer to a Download area, a functionality is similar to common e-store "shopping carts". From this area layers can be selected to submit a download orders, that will be managed by the HEV-E platform asynchronously. A notification or an email will be sent to the user to communicate when the requested files are ready for download. A URL to the Shapefiles, CSV or GeoPackage (the format depends on layer type and user preferences) will be provided for direct download.

[caption id="attachment_4120" align="aligncenter" width="800"]HEVE Download Area HEV-E Download Area[/caption]

The project has proved again the benefits of adopting mainstream software integration to compose advanced custom applications. GeoNode's standard functionalities cannot cover all the specific needs and often a tailored user interface with custom tools and functionalities are required, but it can be adopted as a "backend service" with a bespoke frontend and, in this case, a dedicated backend API.

We wish long life to HEV-E and we hope to continue our contribute to it and its social goals!

Last but not least, we would want to thank the GFDRR group at the World Bank which provided the funding for this work.

If you are interested in learning about how we can help you achieving your goals with open source products like GeoServerMapStoreGeoNode and GeoNetwork through our Enterprise Support Services and GeoServer Deployment Warranty offerings, feel free to contact us!

The GeoSolutions Team,

320x100_eng
Categories: OSGeo Planet

Free and Open Source GIS Ramblings: PyQGIS for non-programmers

OSGeo Planet - Wed, 2018-06-06 19:50

If you’re are following me on Twitter, you’ve certainly already read that I’m working on PyQGIS 101 a tutorial to help GIS users to get started with Python programming for QGIS.

I've been toying around with the idea of a PyQGIS intro for non-programmers without all the boring parts of vanilla Python tutorials. Not sure how far this will go, but it's a start: https://t.co/nbO5tm2ZW9

— Anita Graser (@underdarkGIS) May 31, 2018

I’ve often been asked to recommend Python tutorials for beginners and I’ve been surprised how difficult it can be to find an engaging tutorial for Python 3 that does not assume that the reader already knows all kinds of programming concepts.

It’s been a while since I started programming, but I do teach QGIS and Python programming for QGIS to university students and therefore have some ideas of which concepts are challenging. Nonetheless, it’s well possible that I overlook something that is not self explanatory. If you’re using PyQGIS 101 and find that some points could use further explanations, please leave a comment on the corresponding page.

PyQGIS 101 is a work in progress. I’d appreciate any feedback, particularly from beginners!

Categories: OSGeo Planet

gvSIG Team: Curso de Verano de UCLM: Uso de sistemas de información Geográfica libre y gratuito: Suite gvSIG, Scripting y Geoestadística

OSGeo Planet - Wed, 2018-06-06 09:02

Este año dentro de los cursos de verano que ofrece la Universidad de Castilla-La Mancha podréis encontrar uno dirigido a todos aquellos que quieran iniciarse o profundizar en el conocimiento y aplicación de los Sistemas de Información Geográfica. Un curso en el participaremos directamente el equipo de la Asociación gvSIG junto a profesores de los Departamentos de Producción Vegetal y Tecnología Agraria, y de Ciencia y Tecnología Agroforestal y Genética.

El curso se realizará el 27 y 28 de septiembre.

La matrícula se puede realizar hasta el 16 de septiembre.

Más detalles:

https://cursosdeverano.uclm.es/catalogo/31-uso-sistemas-de-informacion-geografica-libre-y-gratuito-suite-gvsic-scripting-y-geoestadistica/

Inscripción:

https://cursosdeverano.uclm.es/matricula/

Categories: OSGeo Planet

GIS for Thought: Creating OpenStreetMap History Visualisations

OSGeo Planet - Wed, 2018-06-06 09:00

I created a couple of OSM visualisations for my talk at the OSGeo Ireland conference.

See: History of OpenStreetMap in Ireland

These are pretty easy to make, but take a fair bit of time. I did mine for Ireland, but should work with any part of the world.

Required software:

  • PostgreSQL with PostGIS
  • Python
  • QGIS
  • osmium-tools

This is the trickiest part, installing osmium-tools: here.

Data:

An OSM full history export. The best source for these is GEOFABRIK.

For Ireland:

http://download.geofabrik.de/europe/ireland-and-northern-ireland.html

Due to GDPR, you will have to log in with an OSM id to download the full history extracts. User ID’s are personal data.

Process:

The workflow is pretty simple. Osmium-tools provides pretty easy API access to the history files, where you can provide a data, and it will extract what OSM was like at that date. We simply need to loop through the desired dates we want to extract, and pipe the results into a workflow that loads the data into PostgreSQL. The final step is simply rendering in QGIS using the time manager plugin.

Python Script:

Github GIST:

https://gist.github.com/HeikkiVesanto/f01ea54cca499a6a144d18cf8909c940

The tables in the database will be:

  • lines
  • multilinestrings
  • multipolygons
  • other_relations
  • points

Each feature will be tagged with the date it is associated with.

Visualisation:

To visualise the data in QGIS we use simply use the excellent time manager plugin, filtering on the load_date field and with a monthly interval.

Result:

Categories: OSGeo Planet

GeoSolutions: Meet GeoSolutions at FOSS4G Dar Es Salam 2018!

OSGeo Planet - Wed, 2018-06-06 08:08

FOSS4G 2018

Dear Reader, GeoSolutions is pleased to announce its presence at FOSS4G 2018 in Dar Es Salam, Tanzania, from 27th to 31th August. The annual FOSS4G conference is the largest global event for Open Source geospatial solutions, and this year will be held in Africa after almost 10 years. FOSS4G brings together developers, users, decision-makers and businessmen from a broad spectrum of organizations and fields of operation.

GeoSolutions is proud supporter for the event as a Gold sponsor and we have also submitted a number of workshops and presentations and workshops on GeoServerGeoNode as well as MapStore, find the details here below.

Workshop

 - Introduction to GeoNode, with Alessio Fabiani. Monday the 27h from 8:30 am to 1:00 pm.

 - GeoNode developers workshop, with Alessio Fabiani. Monday the 27h from 2 pm to 5:30 pm.

 - OGC services with GeoServer: from journeyman to master, with Andrea Aime. Monday the 27th from 8:30 am to 1:00 pm.

Presentations

 - One GeoNode, many GeoNode, with Alessi Fabiani

 - Serving earth observation data with GeoServer: addressing real world requirements, with Andrea Aime and Simone Giannecchini

 - Creating Stunning Maps in GeoServer, with SLD, CSS, YSLD and MBStyles, with Andrea Aime and Mauro Bartolomeoli

 - Crunching Data In GeoServer: Mastering Rendering Transformations, WPS And SQL Views, with Mauro Bartolomeoli and Andrea Aime

 - GeoServer in Production: we do it, here is how! with Simone Giannecchini and Mauro Bartolomeoli

 - MapStore, modern mashups with OpenLayers, Leaflet and React, with Mauro Bartolomeoli

 - Mapping the world beyond web mercator with GeoServer, with Andrea Aime

 - State of GeoServer 2018, with Jody Garnett, Andrea Aime and Ian Turton

 - State of JAI Advanced Image Processing, with Jody Garnett, Andrea Aime and Eugene Cheipesh

 - GeoServer Ecosystem, with Jody Garnett, Andrea Aime and Ian Turton

 - Helping open source projects thrive: a guide for users and occasional contributors, with Andrea Aime and Jeff McKenna

If you want further information, do not hesitate to contact us.

Looking forward to seeing you in Dar Es Salam!

The GeoSolutions Team,

320x100_eng
Categories: OSGeo Planet

gvSIG Team: New geoprocess to convert a 3D vector layer into a 2D layer

OSGeo Planet - Tue, 2018-06-05 16:52

A new geoprocess is now available in gvSIG, that allows to convert a 3D or 3DM layer into a 2D layer. This geoprocess will delete the Z and/or M coordinates, leaving only the X and Y coordinates. It can be applied on any type of geometry.

Thanks to this new plugin you can use certain geoprocesses that only worked on 2D layers. If an error appeared when performing any of the geoprocesses available at the Toolbox in gvSIG, it could be caused because some of the input layers was a 3D layer. By converting these layers into 2D layers previously, the geoprocesses can be performed without problem.

To install this plugin you must access the Add-ons Manager (Tools menu), and connect by URL to the server that appears by default. In the next window, search by the term “2D” the “Transform Geometries to 2D” plugin will appear. Selecting and installing it, you must restart gvSIG to have it available in the application.

Once installed, we will have it available by accessing the Toolbox, and accessing to the Scripting-> Transform section. We only need to select the input layer, and the name and path of the output layer.

Categories: OSGeo Planet

gvSIG Team: Nuevo geoproceso para convertir una capa vectorial 3D en una capa 2D

OSGeo Planet - Tue, 2018-06-05 16:52

Se ha publicado un nuevo geoproceso en gvSIG que permite convertir una capa 3D o 3DM a una capa 2D. Este geoproceso eliminará las coordenadas Z y/o M, dejando únicamente las coordenadas X e Y, y se puede ejecutar sobre cualquier tipo de geometría.

Gracias a este nuevo plugin se podrán utilizar ciertos geoprocesos que únicamente funcionaban sobre capas 2D. Si al realizar alguno de los geoprocesos de la Caja de herramientas disponibles en gvSIG se obtenía error, una de las posibles causas era que alguna de las capas de entrada era una capa 3D. Convirtiendo dichas capas a 2D previamente ya se podrán realizar dichos geoprocesos sin problema.

Para instalar este plugin se debe acceder al Administrador de complementos (menú Herramientas), y conectar por URL al servidor que aparece por defecto. En la siguiente ventana, realizando una búsqueda por el término “2D” aparecerá el plugin “Transform Geometries to 2D”. Seleccionándolo e instalándolo, se deberá reiniciar gvSIG para tenerlo disponible ya en la aplicación.

Una vez instalado lo tendremos disponible accediendo a la Caja de herramientas, y entrando en el apartado Scripting->Transformación. Solo deberemos seleccionar la capa de entrada, y el nombre y la ruta de la capa resultante.

Categories: OSGeo Planet

Jo Cook: Going to a codesprint as a non-coder

OSGeo Planet - Tue, 2018-06-05 10:17
This week I’m in Bolsena at the 10th annual Geonetwork codesprint. Geonetwork is the metadata catalogue that we (being Astun Technology) use to deliver our metadata catalogues, for INSPIRE, and for Government customers. I recently asked if I could join the Project Steering Group for Geonetwork, and happily was accepted, and I was then asked if I would like to come along to this event. Coding in the sun, in Italy, in June, what a trial!
Categories: OSGeo Planet

Blog 2 Engenheiros: Como criar rótulos (labels) em shapefiles utilizando o QGIS?

OSGeo Planet - Tue, 2018-06-05 08:52

Ao fazer uma mapa, seja para um cliente ou um trabalho acadêmico, muitas vezes, as legendas não são suficientes para identificar o que está sendo representado no mapa.

Por isso, para resolver tal problema, utilizamos os rótulos (Labels).

Os rótulos são adicionadas no mapa para mostrar as informações sobre um objeto (pontos, nascentes, linhas, rios, áreas de estudo), ou seja, qualquer camada vetorial pode ter rótulos associados e esses rótulos tem seu conteúdo baseado nos atributos da mesma camada.

Para este tutorial, iremos rotular um shapefile de linhas disponibilizado no site do Departamento Estadual de Infraestruturas (DEINFRA). O shapefile que iremos utilizar é o de Rodovias, conforme figura abaixo.

Shapefile de Rodovias.

Agora com o shapefile baixado, iremos criar os rótulos no QGIS. É importante frisar que para inserir o arquivo shapefile no QGIS, o ideal é extrair sua base de dados do arquivo zipado.

Agora com o arquivo extraído do zip, abra o QGIS. Neste tutorial irei utilizar o QGIS 2.18.15.

Com o QGIS aberto, insira o arquivo Shapefile.

O shapefile é um arquivo vetorial normalmente composto por pontos, linhas ou polígonos.

Ao inserir seu arquivo no QGIS, seus dados ficarão conforme figura abaixo.

Shapefile inserido no QGIS.

Agora com o arquivo inserido, iremos criar os rótulos. Para inserir o rótulo, basta clicar com o botão direito do mouse sobre o nome do arquivo “Rodovias_SC”.

Clique em “Rodovias_SC”.

Note que ao clicar com o botão direito sobre o shapefile, irá aparecer algumas opções como: Tabela de Atributos; Filtrar; Renomear; Propriedades dentre outros. No nosso caso, iremos escolher a opção “Propriedades”.

Clique em propriedades.

Ao selecionar a opção “Propriedades”, será aberto uma janela contendo uma série de informações gerais do Shapefile, tais como sistemas de coordenadas, como classificar as cores, rótulos, etc.

Informações gerais do Shapefile.

No nosso caso, iremos clicar sobre a opções “Rótulos”.

Opção ”Rótulo”.

É nessa “aba” que será habilitada a opção rotular e para fazer isso precisamos escolher o tipo de rótulo que queremos, baseado em um item da tabela de atributos.

A tabela de atributos representa os dados associados a cada uma das feições (ponto, linha ou polígono) existentes no Shapefile.

Ao abrir as opções de rótulo, você irá encontrar as opções: Não Rotular; Mostrar Rótulo para as camadas; Rótulo Baseado em Regra e Bloqueado, conforme mostra a figura abaixo.

Opções de Rótulos.

Para criar o rótulo baseado nos itens da tabela de atributos, iremos selecionar a opção “Mostrar rótulos para as camadas”. Ao escolher a opção esta opção, note que todos os demais itens abaixo foram habilitados.

Item “Mostrar rótulos para as camadas”.

Agora iremos selecionar qual item da tabela de atributos utilizaremos para rotular. Para selecionar tal item, basta clicar na opção “Rotular com”, conforme mostra a figura abaixo.

Opção “Rotular com”.

Note que clicar na opção “Rotular com”, irá aparecer o nome das colunas da tabela de atributos. Para este tutorial, iremos escolher a opção “SGRODPUB”, que refere-se ao nome das rodovias.

Escolha a primeira opção.

Os itens recém habilitados referem-se a formatação do rótulo e como sua aparência irá ficar no mapa. Tais itens são:

  • Texto: Serve para determinar a fonte, tamanho e os estilos.
  • Formatar: Define as informações referentes às linhas (altura e alinhamento).
  • Buffer: Determina o contorno da letra, tamanho e cor.
  • Fundo: Serve para determinar o fundo do rótulo, formato, tamanho, espessura e dentre outros.
  • Sombra: É utilizado para configurar a sombra, tamanho, sentido, cor, escala e transparência.
  • Posição: Serve para determinar a posição, alinhamento a qual o rótulo se encontra em relação a referência;
  • Renderizar: Determina como o rótulo irá aparecer no mapa.

Ao final, clique em “Aplicar” e em seguida em “Ok” que seu aquivo ficará conforme mostra a figura abaixo.

Arquivo com os rótulos criados.

No entanto, ainda não terminamos nosso tutorial, pois note que os “nomes” dos rótulos estão grandes e orientado pelas linhas das estradas, vamos modificar isso.

Para modificá-los, precisamos voltar ao item “propriedades” “Rótulos” e formatar nosso rótulo.

Na opção “Texto”, iremos mudar a fonte para “Arial” e o tamanho da letra para “6”.

Formate a fonte e o tamanho da letra.

E na opção “Posição”, escolha o item “Horizontal”. Esse item fará com que o nome dos rótulos fiquem no formato horizontal, conforme mostra a figura abaixo.

Escolha a opção “Horizontal”.

Ao final, clique em “Aplicar” e em seguida em “OK” e seu arquivo ficará conforme figura abaixo.

Arquivo Formatado.

No entanto, queremos deixar no arquivo as rodovias que apresentam no nome a palavra “SC” e para isso iremos utilizar “expressões”.

Expressões são fórmulas e funções que permitem realizar tarefas mais complexas.

Para gerar as expressões, é preciso voltar ao item “Propriedades” >“Rótulos”, conforme mostra a figura, e clicar no pequeno e no lado direito da janela.

Opção Expressões.

Ao clicar na opção “Expressões” será aberto uma “Caixa de Diálogo Expressão”.

Caixa de Expressões.

É nessa “caixa” que serão geradas todas as expressões e fórmulas para seus rótulos. Para nosso exemplo iremos utilizar as funções:

  • If: Refere-se a função SE . Essa função serve para comparar valores e avaliar os resultados a partir de uma condição pré-definida (ex: SE algo é Verdadeiro o resultado é SIM, SE Falso, NÃO); e
  • Left: Serve para determinar os caracteres localizados à esquerda do campo indicado e em seguida adicionar o resultado gerado no novo campo.

Agora, iremos utilizar a função left para fazer com que a função if avalie se as duas primeiras letras na coluna SGRODPUB são iguais à SC e para avaliar isso, iremos digitar a seguinte expressão:

if( left( SGRODPUB,2) = ‘SC’, SGRODPUB, ”)

Na função left(), indicamos qual campo queremos avaliar e quantos caracteres serão avaliados a partir da esquerda (neste caso, 2 caracteres). A função verifica se esses dois caracteres são iguais a SC e se a comparação for verdadeira, irá retornar o nome da rodovia, caso contrário, irá retornar um carácter vazio.

E ao final, clique em “Aplicar” e em seguida “Ok” e seu mapa ficará conforme mostra a figura abaixo.

Arquivo contendo apenas as SCs.

E chegamos ao final do nosso tutorial, não deixe de comentar logo abaixo da postagem suas dúvidas ou comentários.

Categories: OSGeo Planet

Boundless Blog: Fast-track Your GIS in the Cloud with Boundless Server Enterprise as a Managed Service

OSGeo Planet - Mon, 2018-06-04 19:40

I am a strong believer in the fact that geography plays a part in everything we do. From requesting an Uber or tracking a package to routing the closest ambulance or analyzing neighborhood crime patterns, location is a critical part …

The post Fast-track Your GIS in the Cloud with Boundless Server Enterprise as a Managed Service appeared first on Boundless Geo.

Categories: OSGeo Planet

gvSIG Team: 14th International gvSIG Conference: Economy and Productivity

OSGeo Planet - Mon, 2018-06-04 16:13

The 14th International gvSIG Conference will be held from October 24th to 26th under the slogan “Economy and Productivity“ at School of Engineering in Geodesy, Cartography and Surveying (Universitat Politècnica de València, Spain).

The period to send communication proposals is now open, and they can be sent to the email address: conference-contact@gvsig.com. There are two types of communication: paper or poster. Information regarding to regulations on communication presentations and deadline can be found in the Communications section of the website.

Organizations interested in collaborating in the event can find information in the section: How to collaborate, with different levels of sponsoring.

During the next weeks we will be publishing all the information related to the workshops that will be given at the gvSIG Conference.

We expect your participation!

Categories: OSGeo Planet

gvSIG Team: 14as Jornadas Internacionales gvSIG: Economía y Productividad

OSGeo Planet - Mon, 2018-06-04 16:05

Del 24 al 26 de octubre de 2018 se celebrarán las 14as Jornadas Internacionales gvSIG en la Escuela Técnica Superior de Ingeniería Geodésica, Cartográfica y Topográfica (Universitat Politècnica de València, España), bajo el lema “Economía y Productividad”.

Ya está abierto el periodo de envío de propuestas de comunicación, que pueden remitirse a la dirección de correo electrónico conference-contact@gvsig.com. Para ello existen dos modalidades de comunicación: ponencia y póster. Toda la información sobre las normas para la presentación de comunicaciones, así como las fechas límite para el envío de las propuestas, puede consultarse en el apartado ‘Comunicaciones‘ de la web.

Las organizaciones interesadas en colaborar en el evento pueden encontrar información en el apartado ‘¿Cómo colaborar?‘ de la web de las jornadas, con distintos niveles de patrocinio disponibles.

En las próximas semanas iremos dando más información sobre los talleres que tendrán lugar en las mismas.

¡Esperamos vuestra participación!

Categories: OSGeo Planet
Syndicate content