Thursday, 25 July 2019

DOF_Manager QGIS plugin (1) - introduction

Let's back to the problem of dealing with obstacles coming from Digital Obstacle File (DOF) with GIS. I have covered this issue in following posts so far:
PostGIS database for storing FAA Digital Obstacle File - SQL statements to create database
Challenge: importing FAA digital obstacle file content into PostGIS database - Python script to import data from dat file with obstacle data directly into PostGIS database
QGIS Plugin to convert DOF (Digital Obstacle File) data - QGIS plugin that reads dat file and convert it into CSV, KML or shapefile format.
As you can see, we are already able to import obstacles into spatial database, display it using QGIS and convert data into other formats. But we want to go further - a QGIS plugins that reads data and import it directly to database, updates imported data with data from daily change files, easily search and export data with specified criteria (e.g type, location within circle of specified point) to other formats, manually adding data etc.

Wednesday, 10 July 2019

QGIS customized attribute dialog - Value Relation

In the post you saw how to use Value Map 'method' to bind values between two tables that are linked together - there is a relation between the tables in other words.
But what if the foreign keys or attributes assigned to those keys are changed in one table? This method ('hard coding' values using Value Map) does not track such changes - unless values are updated every time such changes takes place.
Good news is that QGIS has other methods, that are better for such cases - you can use
In simply words any changes in database tables will be reflect in customized attribute dialog.


insert into country (ctry_iso2, ctry_name) values 
('AF', 'Afghanistan'),
('AX','Aland Islands'),
('AL','Albania'),
('DZ','Algeria'),
('AS','American Samoa');













insert into country (ctry_iso2, ctry_name) values 
('GA', 'Gabon'),
('GM', 'Gambia'),
('GE', 'Georgia'),
('DE', 'Germany'),
('GH', 'Ghana'),
('GI', 'Gibraltar'), 
('GR', 'Greece'),
('GL', 'Greenland');




select *
from airspace
where ctry_iso2 = 'GE';






Tuesday, 11 June 2019

Airspace database - adding country table and further customizing attribute dialog

Let's modify airspace database a bit. We have ctry_iso2 column in airspace table, because we want to to know in which country given airspace is. But what if we want to store more information about country? For example, link to authority that publishes aeronautical data or online version of aeronautical publication?

Friday, 7 June 2019

Tuesday, 4 June 2019

Airspaces and PostGIS - introduction

The shapefile has been the only format for polygon 'part' of aviation data (airspaces). This format is handy, when we want  to store, manage or share data among user but has many limitations - and I don't mean only those specified here:

Friday, 31 May 2019

Another airspace shape

There is another airspace shape that we have not covered yet in our plugins 'family' to create airspaces: rectangle shape. Airspaces sometimes are defined as 'buffer' zone around line connecting two points or more points. Let's deal with the case that only two waypoints so far because this special case is quite often used as part of other more complex airspaces.

Tuesday, 28 May 2019

Dealing with obstacles data stored in CSV files (1)

Authorities sometimes publishes obstacle data sets called eTOD, which stands from Electronic Terrain and Obstacle Data. Those data sets comes in various formats: csv files, dat files, xml files (AIXM format) or even shapefiles.
This post will start a mini-series which result will be a QGIS plugin to import eTOD data from CSV files into PostGIS database.

Tuesday, 21 May 2019

QGIS Plugin: csv2polygon

Another plugin that takes data stored in CSV file. This time you can create polygon.  It is especially useful, when you have tabular data that describes polygon (e. g. airspace) as pair of latitude an longitude values. The biggest advantage is that you can create many polygons in one run of a plugin.

Saturday, 18 May 2019

AviationLatLonCalculator enhancement: user can choose which CSV field is what

Fields from CSV file have been assigned to its values from CSV header file (e .g.  BRNG, DIST) inside the code so far. User has to prepare input file with 'correct' header - otherwise won't be able to perform calculations. And this is a big disadvantage.
Let's assume that we have following data set:

Sunday, 5 May 2019

Parsing NASR data: NAV file


Let's start with defining the fields that values we want to extract from data file. Notice that this for the time being, only some basic data we want to extract so, dictionary contains only one 'subdictionary' NAV1. For more information refer to file description.

 navaid_fields = {'NAV1': {'NAVAID_FAC_TYPE': (20, 9),
                          'NAVAID_NAME': (30, 43),
                          'NAVAID_LAT': (14, 372),
                          'NAVAID_LON': (14, 397),
                          'MAG_VAR': (5, 480),
                          'MAG_VAR_EPOCH_YEAR': (4, 485),
                          'CHANNEL': (4, 530),
                          'FREQUENCY': (6, 534)}
                 }