Martin Landa
Czech Technical University in Prague
Faculty of Civil Engineering, Department of Mapping and Cartography
Thákurova 7, 166 29 Prague 6 - Dejvice
E-mail: martin.landa@fsv.cvut.cz
GIS data sources are various and reflect a given specialization of geographic information system. The most frequent input GIS data are cadastral data, building services, ZABAGED (Fundamental Base of Geographic Data) data or orthophotomaps. GRASS GIS as a piece of Free Software (GNU GPL license) supports a huge range of external data formats especially in connection with implemented GDAL/OGR library. Nevertheless, support of specific Czech data formats is practically missing. A GRASS module which was created in the frame of the author's diploma thesis is trying to change this situation at least in connection with Czech cadastral exchange data format.
This GRASS module (v.in.vfk) allows user to create a GRASS vector map based on data in Czech cadastral exchange data format. It means that vector geometry is stored in GRASS native vector format (GRASS GIS 6.x) and attribute data is held in a corresponding number of database tables linked to a vector map. This enables user to import this kind of data into GRASS without major problems and then to process or analyse it. As a result, it is not necessary to use any external programs for data conversion into chosen data format supported by GRASS (e.g. ESRI ShapeFile). However, it should be stressed that GRASS does not contain any special tools for cadastral data processing. On the other side, it does not mean that GRASS users cannot work with this kind of data.
Czech land register information system contains geographical data and official maps as well as survey data, property attributes, and fund documentation. ISKN ("Informační Systém Katastru Nemovitostí") is cadastral information system covering the structures and principles of land databases. ISKN data is a combination of alphanumeric (SPI) and graphical (SGI) data. SPI data includes information about parcels, people, buildings, and contracts for 100 percent of the republic. SGI data includes detailed land maps, available only for about 25 percent of the country.
Cadastral data can be distributed in ISKN exchange data format (VFK). There are two types of this format. The old format (SVF) used before ISKN implementation (official support of this format was stopped in 2004). And the new exchange data format (NVF) which was naturally influenced by ISKN implementation in 2001. The GRASS module, which is described in this paper, works only with the new cadastral exchange data format (NVF - VFK files).
ISKN exchange data format (VFK) is ASCII format (ČSN ISO 8859-2 or WIN1250 encoding) which includes both kind of data - alphanumeric (SPI) and graphical (SGI) data. VFK files contain required data units (blocks) selection (see table 1).
The structure of the format is closely described in documentation listed in "References". Here we present only the basics of the format structure needed for understanding GRASS module v.in.vfk concept.
VFK file may contain four fundamental parts:
The following example of a VFK file contains one data unit - &BSOBR and three data records of the unit - &DSOBR:
&HVERZE;"2.8" &HVYTVORENO;"13.10.2004 09:02:56" &HCODEPAGE;"WE8ISO8859P2" &BSOBR;ID N30;STAV_DAT N2;KATUZE_KOD N6;CISLO_ZPMZ N5;CISLO_TL N4; CISLO_BODU N12;UPLNE_CISLO N12;SOURADNICE_Y N10.2;SOURADNICE_X N10.2;KODCHB_KOD N2 &DSOBR;311040708;0;654299;1427;;1;1014270001;650451.45;1069791.42;4 &DSOBR;311041708;0;654299;1427;;3;1014270003;650436.18;1069799.13;4 &DSOBR;311042708;0;654299;1427;;5;1014270005;650433.41;1069787.66;4 &K
For list of available data units (blocks) see table 1.
Cadastral data is one of the most frequent input data for various GIS. GRASS GIS allows user to import data in many data formats (especially via GDAL/OGR library). This library supports many well-known raster and vector formats. On the other side, local data formats (including ISKN exchange data format) are not supported by GDAL/OGR library.
GRASS GIS is the famous and widely used Free Software/Open-Source GIS, used for data management, image processing, graphics production, spatial modelling and visualization of many types of data. It is released under GNU General Public License (GPL). GRASS is a powerful utility with a wide range of applications in many different areas of scientific research. GRASS is currently used in academic and commercial settings around the world, as well as many governmental agencies including NASA, NOAA, the National Park Service and many environmental consulting companies. Wide range of tools (in GRASS terminology "modules") which GRASS offers and relatively huge number of GRASS users were the main reasons why GRASS was chosen as a background in the thesis.
The GRASS module v.in.vfk was created in the frame of diploma thesis "Implementation of a GRASS module for importing data in Czech cadastral exchange data format". The main goal of this work has been to allow user to import cadastral data in specific Czech cadastral exchange data format (VFK) into GRASS GIS.
The GRASS module v.in.vfk is written in C programming language (almost the whole source code of GRASS is in C programming language). The current version of the module has been released as a result of the diploma thesis. The source code of this program is a little bit "nasty", so many improvements must be done in the future. Complete rewriting of the module v.in.vfk is planned...
GRASS module v.in.vfk creates a new vector map layer in GRASS database (in native GRASS 6 vector format). Because of many improvements of the native vector format and vector architecture in GRASS 6 which have been done, the module works correctly only in GRASS 6.x. GRASS 5.x (or 4.x) cannot be used (due to its old vector architecture). Created output vector map layer covers vector geometry (stored in GRASS database structure) and a set of corresponding attribute tables (only PostgreSQL database tables supported). In the future also MySQL database tables and SQLite tables should be supported. The default GRASS database driver "dbf" cannot be used in connection with this module.
Output vector map layer contains number of thematic layers (see table 3). For further data processing, it is necessary to split these thematic layers into a corresponding number of GRASS vector map layers. A map produced by module v.vfk.vfk (parameter output) is not topologically correct - contains many duplicate lines, boundaries, centroids or areas without centroids, etc. A user has the possibility to use the special script called v.vfk.extract which extracts required thematic layer from the map and creates a new vector map layer in the GRASS database. This conception will be changed as soon as possible - GRASS module v.in.vfk should create specified thematic vector map layers as well.
The GRASS module v.in.vfk is a standard GRASS program, for Tcl/Tk GUI (graphical user interface) of the module see figure 1.
Figure 1: GRASS module v.in.vfk - Tcl/Tk GUI
Naturally, user is able to run the module from the GRASS command prompt. Parameter help prints a short module description and its syntax.
GRASS > v.in.vfk help
Description:
Import VFK file (ISKN) into a GRASS vector map.
Usage:
v.in.vfk [-ernduf] [input=name] output=name [type=name[,name,...]]
Flags:
-e Extend location extents based on input data
-r Drop all redundant tables
-n Null category (-1)
-d Data type timestamp instead of varchar
-u Create unique constraints
-f Create primary key and foreign key constraints
Parameters:
input VFK file to be imported, if not given reads from standard input
output Name of output vector
type Type
options: point,line,boundary,centroid,area
default: point,line,boundary,centroid,area
As can be seen, only parameter output is required. The other parameters are optional. We should stress that the parameter input - input file (containing data in Czech cadastral exchange data format) can be set by parameter input or read from standard input. Both possibilities are shown bellow:
GRASS > v.in.vfk input=Exportvse.vfk output=bylany
GRASS > v.in.vfk output=bylany < Exportvse.vfk
In this case, the new vector map layer ("bylany") in GRASS database is created. For more information about importing of cadastral data in VFK format, see the next section ("Importing, processing and analyzing of cadastral data in GRASS GIS").
By the way, manual pages of the module are available by the following GRASS command:
GRASS > g.manual v.in.vfk
The process of importing of cadastral data can be divided into two different parts:
At first, an empty vector map layer is created and its metadata is written into the head file.
Database tables and inserting of data records
First of all, the input data is loaded. Each line starts with the special tag:
After submission of the input data, all defined database tables are created and data records are inserted into the tables. Metadata is written (head file), too. Database tables are linked to the output vector map layer by a fixed layer number (see table 1 and figure 2). Some of these tables contain data records which will be used for creating the vector geometry.
The fixed (or predefined) layer number has four digits:
is ib
where:
is ... data unit group identifier (see table 1)
ib ... data unit identifier in selected group (see table 1)
For example, data unit SOBR (i.e. table "souradnice_obrazu") is part of the data unit group PKMP (is = 16). Data unit SOBR is the first data unit (ib = 01) in this data unit group. As a result, database table "souradnice_obrazu" will be linked to the vector map layer by layer number "1601".
| data unit (block) group | |||
| ib | data unit | table name | short description |
| Real estate NEMO (is = 10) | |||
| 01 | &PAR | "parcely" | parcels |
| 02 | &BUD | "budovy" | buildings |
| 03 | &CABU | "casti_budov" | building parts |
| 04 | &ZPOCHN* | "zp_ochrany_nem" | methods of property (real estate) protection |
| 05 | &DRUPOZ* | "d_pozemku" | land types |
| 06 | &ZPVYPO* | "zp_vyuziti_poz" | methods of land use |
| 07 | &ZDPAZE* | "zdroje_parcel_ze" | sources of parcels ZE |
| 08 | &ZPURVY* | "zp_urceni_vymery" | methods of area determination |
| 09 | &TYPBUD* | "t_budov" | types of buildings |
| 10 | &MAPLIS* | "mapove_listy" | sheet of map designation |
| 11 | &KATUZE* | "katastr_uzemi" | cadastral units |
| 12 | &OBCE* | "obce" | cities |
| 13 | &CASOBC* | "casti_obci" | city districts |
| 14 | &OKRESY* | "okresy" | counties |
| 15 | &KRAJE* | "kraje" | regions |
| 16 | &RZO | "r_zpochr | assignment of real estate protection methods |
| 17 | &ZPVYBU* | "zp_vyuziti_bud | methods of building use |
| Units JEDN (is = 11) | |||
| 01 | &JED | "jednotky" | units |
| 02 | &TYPJED* | "t_jednotek | unit types |
| 03 | &ZPVYJE* | "zp_vyuziti_jed" | methods of unit use |
| Soil value part of parcels BDPA (is = 12) | |||
| 01 | &BDP | "bonit_dily_parc" | soil value part of parcels |
| Property VLST (is = 13) | |||
| 01 | &OPSUB | "oprav_subjekty" | authorized subjects |
| 02 | &VLA | "vlastnictvi" | property |
| 03 | &CHAROS* | "char_os" | authorized subject characteristics |
| 04 | &TEL | "telesa" | cadastral bodies |
| Other law relations JPVZ (is = 14) | |||
| 01 | &JPV | "jine_prav_vztahy" | other law relations |
| 02 | &TYPRAV* | "t_pravnich_vzt" | types of law relations |
| Control RIZE (is = 15) | |||
| 01 | &RIZENI* | "rizeni" | control (deposits, records) |
| 02 | &RIZKU* | "rizeni_ku" | retention control - cadastral units |
| 03 | &OBJRIZ* | "objekty_rizeni" | objects of control (parcels, buildings) |
| 04 | &PRERIZ* | "predmety_rizeni" | control items |
| 05 | &UCAST* | "ucastnici" | competitors of control |
| 06 | &ADRUC* | "adresy" | competitors of control addresses |
| 07 | &LISTIN* | "listiny" | papers |
| 08 | &DUL* | "dalsi_udaje_listiny" | other paper data |
| 09 | &LDU* | "listiny_dalsi_udaje" | relation paper - other paper data |
| 10 | &TYPLIS* | "t_listin" | types of papers |
| 11 | &TYPPRE* | "t_predmetu_r" | types of control items |
| 12 | &TYPRIZ* | "typy_rizeni" | types of control |
| 13 | &TYPUCA* | "typy_ucastniku" | types of competitors of control |
| 14 | &UCTYP* | "ucastnici_typ" | relation between competitors and type of competitors of control |
| 15 | &RL | "r_list | assignment of papers to real estate, property and other law relations |
| 16 | &OBESMF* | "obeslani_mf" | summoning of competitors of control |
| Cadastral map elements PKMP (is = 16) | |||
| 01 | &SOBR* | "souradnice_obrazu" | coordinates of points of situation |
| 02 | &SBP | "spojeni_b_poloh" | connection of points of situation - defines linear planimetric elements |
| 03 | &SBM | "spojeni_b_mapy" | connection of map points - defines non-planimetric linear elements |
| 04 | &KODCHB* | "kody_char_q_bodu" | codes of quality point determination |
| 05 | &TYPSOS* | "t_sourad_sys" | types of coordinate systems |
| 06 | &HP | "hranice_parcel" | boundary of parcels |
| 07 | &OP | "obrazy_parcel" | parcel presentment (parcel number, map symbol for nature of land use) |
| 08 | &OB | "obrazy_budov" | buildings presentment (building perimeter, map symbol for building type) |
| 09 | &DPM | "dalsi_prvky_mapy" | other map elements |
| 10 | &OBBP | "obrazy_bodu_bp" | presentment of points of situation |
| 11 | &TYPPPD* | "t_prvku_p_dat" | types of spatial data elements |
| BPEJ (estimated pedologic-ecological unit) BPEJ (is = 17) | |||
| 01 | &HBPEJ | "hranice_bpej" | BPEJ boundaries |
| 02 | &OBPEJ | "oznaceni_bpej" | BPEJ marking |
| Survey sketch GMPL (is = 18) | |||
| 01 | &NZ | "navrhy_zmen_km" | headers of survey sketches and other changes in cadastral map |
| 02 | &ZPMZ | "zpmz" | ZPMZ (note of change survey) headers |
| 03 | &NZZP | "nz_zpmz" | relation design of changes in cadastral map - ZPMZ |
| 04 | &SPOL | "souradnice_polohy" | points of situation coordinates (observed) |
| Reserved numbers REZE (is = 19) | |||
| 01 | &RECI | "rez_parcelni_cisla" | reserved parcel numbers |
| 02 | &DOCI | "dotcena_par_cisla" | aggrieved parcel numbers |
| 03 | &DOHICI | "dot_hist_par_cisla" | aggrieved historical parcel numbers |
Table 1: List of data units, predefined table names and layer numbers
Note: * ... centralized dial.
Figure 2: Database tables schema
At the end of this phase, input data is loaded, data tables created and data records inserted into the tables - everything is prepared for vector geometry building.
Creating the vector geometry
According to the description of VFK format, some data units (i.e. database tables) contain geographically orientated data records (points, lines, boundaries or polygons). The content of an output vector map layer directly depends on these tables (see table 2). By the way, using parameter type, it is possible to influence vector geometry elements.
| layer number | database table | vector type |
| 1601 | "souradnice_obrazu" | points |
| 1610 | "obrazy_bodu_bp" | points |
| 1804 | "souradnice_polohy" | points |
| 1602 | "spojeni_b_poloh" | lines (boundaries) |
| 1603 | "spojeni_b_mapy" | lines (boundaries) |
| 1607 | "obrazy_parcel" | centroids |
| 1608 | "obrazy_budov" | centroids |
| 1702 | "oznaceni_bpej" | centroids |
Table 2: Database tables containing geographic data
At first, the module checks if these tables exist. When one of them is found, function create_points () or create_lines () is executed. The functions write vector elements (points, lines, boundaries or centroids) to the output vector map layer.
Attribute tables
During this phase (inside the functions mentioned above), the attribute tables structure is built, too (see figure 1). The tables (i.e. attribute tables) are linked to the output vector map layer by a layer number, starting at 1. Each vector element has a unique identifier (category number) which connects the geometry element with its attributes (data record(s) stored in attribute table). Assessment of the attributes is unique:
[layer number] + [category] = [database] + [database driver]
As a result, more then one hundred attribute tables can be linked to the output vector map layer (e.g. testing file available at ČÚZK websites - 122 attribute tables). Of course, some of them are linked to the map layer several times. See figure 3 for tables relation diagram starting from database table "souradnice_obrazu".
Figure 3: Tables relation diagram - attribute tables structure (from table "souradnice_obrazu")
In this example, the following tables will be linked to the output vector map layer "bylany" (see GRASS module v.db.connect):
1 bylany_souradnice_obrazu cat iskn pg 2 bylany_zpmz cat iskn pg 3 bylany_katastr_uzemi cat iskn pg 4 bylany_obce cat iskn pg 5 bylany_okresy cat iskn pg 6 bylany_kraje cat iskn pg 7 bylany_t_sourad_sys cat iskn pg 9 bylany_kody_char_q_bodu cat iskn pg
where:
[layer number] [output_table name] [category column] [database] [database driver]
Vector geometry elements which will be written to the output vector map layer is possible to regulate by parameter type:
Default combination is "point,line,boundary,centroid" - all (2D) vector types. The user can also create an empty output vector map layer only with linked attribute tables (type=).
During this phase, all required vector elements are written to the output vector map layer. Layers report (number of elements, minimal and maximal category number) prints GRASS module v.category, for example:
LAYER/TABLE 1/bylany_souradnice_obrazu: type count min max point 6114 1 6114 line 0 0 0 boundary 0 0 0 centroid 0 0 0 area 0 0 0 all 6114 1 6114 LAYER/TABLE 2/bylany_zpmz: type count min max point 5881 1 80 ... LAYER/TABLE 3/bylany_katastr_uzemi: type count min max point 5881 1 1 ... LAYER/TABLE 4/bylany_obce: type count min max point 5881 1 1 ... LAYER/TABLE 5/bylany_okresy: type count min max point 5881 1 1 ... LAYER/TABLE 6/bylany_kraje: type count min max point 5881 1 1 ... LAYER/TABLE 7/bylany_t_sourad_sys: type count min max point 5881 1 1 ... LAYER/TABLE 8/bylany_kody_char_q_bodu: type count min max point 6114 2 8 ...
Conclusive operations
First, all redundant layer numbers (connection between vector map layer and database table) are deleted (e.g. attribute table "souradnice_obrazu" is linked to the map by layer number "1601" and "1" as well - that means that dblink "1601" can be deleted from dblink file). Note that no database tables are dropped, only dblinks (layer numbers) deleted (see function clean_dblinks ()). In addition, all redundant database tables (i.e. tables which are not linked to the map as attribute tables) can be dropped by the flag -r.
After that, the vector topology is built and topology building report is printed on the standard output:
Building topology ... 15870 primitives registered Building areas: 100% 894 areas built 16 isles built Attaching islands: 100% Attaching centroids: 100% Topology was built. Number of nodes : 7347 Number of primitives: 15870 Number of points : 6146 Number of lines : 78 Number of boundaries: 8445 Number of centroids : 1201 Number of areas : 894 Number of isles : 16 Number of incorrect boundaries : 4174 Number of centroids outside area : 373 Number of duplicate centroids : 106 Number of areas without centroid : 172
As can be seen from this report, the output vector map layer contains many incorrect boundaries, duplicate centroids or areas without centroid. For further data processing, this map must be split into several thematic map layers (i.e. GRASS vector map layer). This process is described in the next section ("Importing, processing and analyzing of cadastral data in GRASS GIS").
In the previous section, the GRASS module v.in.vfk was slightly described. Here we demonstrate how to import data in VFK format into GRASS location.
First, we choose appropriate GRASS location and mapset (or we can create a new one). Coordinate system of this location must be S-JTSK. Creating a GRASS location with S-JTSK coordinate system is closely explained in the thesis ("Implementation of a GRASS module for importing data in Czech cadastral exchange data format", chapter 6.1). We also have to set required connection to the database (see GRASS module db.connect). As we know, only PostgreSQL database system is supported. For example, we set up the connection to PostgreSQL database "iskn" (we have already installed this database system and set up the access permissions):
GRASS > db.connect driver=pg database=iskn
Now, we are able to start the import of VFK data into chosen GRASS location/mapset. There is a simple example - input file (in VFK format) is "Exportvse.vfk", name of the output vector map layer in GRASS database is "bylany" and all vector types will be imported:
GRASS > v.in.vfk in=Exportvse.vfk out=bylany
orGRASS > v.in.vfk out=bylany < Exportvse.vfk
Besides the parameter type, number of flags are available:
After successful data import, we can print out a list of connected tables by GRASS module v.db.connect:
GRASS > v.db.connect bylany -g
999 bylany_hlavicka cat iskn pg 1007 bylany_zdroje_parcel_ze cat iskn pg ... 1803 bylany_nz_zpmz cat iskn pg 1 bylany_souradnice_obrazu cat iskn pg 2 bylany_zpmz cat iskn pg ... 8 bylany_kody_char_q_bodu cat iskn pg 10 bylany_spojeni_b_poloh cat iskn pg 11 bylany_souradnice_obrazu cat iskn pg ... 18 bylany_kody_char_q_bodu cat iskn pg 20 bylany_hranice_parcel cat iskn pg 21 bylany_parcely cat iskn pg ... 32 bylany_zp_vyuziti_bud cat iskn pg 34 bylany_obrazy_budov cat iskn pg 35 bylany_t_prvku_p_dat cat iskn pg ... 42 bylany_telesa cat iskn pg 44 bylany_dalsi_prvky_mapy cat iskn pg 45 bylany_t_prvku_p_dat cat iskn pg 47 bylany_spojeni_b_mapy cat iskn pg 49 bylany_obrazy_parcel cat iskn pg 50 bylany_t_prvku_p_dat cat iskn pg ... 76 bylany_predmety_rizeni cat iskn pg 78 bylany_obrazy_budov cat iskn pg 79 bylany_t_prvku_p_dat cat iskn pg ... 98 bylany_predmety_rizeni cat iskn pg 100 bylany_obrazy_bodu_bp cat iskn pg 101 bylany_souradnice_obrazu cat iskn pg ... 108 bylany_kody_char_q_bodu cat iskn pg 110 bylany_oznaceni_bpej cat iskn pg 112 bylany_souradnice_polohy cat iskn pg
The first table - "bylany_hlavicka" (i.e. layer number 999) contains the metadata of the map (tag &H). In addition, many redundant tables are still linked to the map (layer numbers 1007 - 1803). These tables contain data records which have no connection with vector elements in the output map (or tables with no data records). Then it is possible to see the attribute tables (connection with vector geometry via category number) - layer numbers from 1 to 112. Using the flag -r, all redundant tables can be dropped (not only dblinks, but the data is deleted too!).
For better orientation, layer number between each thematic layer is skipped, see table 3.
| layer number (from - to) | description | vector types |
| 1 - 8 | points of situation | points |
| 10 - 18 | planimetric map elements | lines, boundaries |
| 20 - 32 | parcel boundaries | boundaries |
| 34 - 42 | building presentment | boundaries |
| 44 - 45 | other map elements | points, lines, boundaries and centroids |
| 47 | non-planimetric linear elements | lines, boundaries |
| 49 - 76 | parcel presentment | centroids |
| 78 - 98 | building presentment | centroids |
| 100 - 108 | points of minor horizontal control | points |
| 110 | BPEJ (estimated pedologic-ecological unit) | centroids |
| 112 | points of planimetry | points |
Table 3: List of thematic layers in the output map layer "bylany"
This simple script allows a user to split a map layer created by module v.in.vfk into several vector map layers which contain only one - required thematic layer. As a result, vector topology of produced map layers should be correct. The script is available only in Czech language. There is a short description of the module (script):
GRASS > v.vfk.extract help
Popis:
Extrahování jednotlivých tematických vrstev katastrální mapy.
Použití:
v.vfk.extract [-tnc] mapa=name [volba=name]
Přepínače:
-t nekopírovat atributové tabulky
-n kopírovat atributové tabulky pomocí modulu v.extract
-c vyčistit výstupní vektorovou mapu (vhodné pro obrazy budov)
Parametry:
mapa vektorová mapa
volba tematická vrstva (body polohopisu, obrazy parcel, obrazy budov, další prvky mapy, BPEJ)
volby:bp,op,ob,dpm,bpej
výchozí: op
Note: The script requires patched GRASS module v.extract (the patch is part of v.in.vfk distribution)!
We can extract at most five thematic layers (default is "op"):
The name of extracted vector map layer is derived from the name of input map layer and selected thematic map layer, e.g. "bylany_op":
GRASS > v.vfk.extract bylany volba=op
This map layer should not contain any incorrect elements, see report from v.build.
GRASS > v.build bylany_op
Building topology ... 7044 primitives registered Building areas: 100% 1007 areas built 55 isles built Attaching islands: 100% Attaching centroids: 100% Topology was built. Number of nodes : 6092 Number of primitives: 7044 Number of points : 0 Number of lines : 0 Number of boundaries: 6037 Number of centroids : 1007 Number of areas : 1007 Number of isles : 55
List of linked attribute tables prints well-known GRASS module v.db.connect:
GRASS > v.db.connect bylany_op -g
20 bylany_op_hranice_parcel cat bylany pg ... 32 bylany_op_zp_vyuziti_bud cat bylany pg 49 bylany_op_obrazy_parcel cat bylany pg ... 76 bylany_op_predmety_rizeni cat bylany pg
See figure 4 below for example of four fundamental thematic layers (points of situation, parcels, buildings and other map elements).
Figure 4: Composition of four fundamental thematic layer created by v.vfk.extract
In this section we take a look at a hardcopy output maps produced by GRASS module ps.map. GRASS does not offer any special map symbols for cadastral maps. The library of map symbols for cadastral maps "dkm" (only for points and centroids) has been designed in the frame of the diploma thesis and is distributed with the module v.in.vfk. There is a short example of the map symbol "garden":
VERSION 1.0
BOX -1 -1 1 1
POLYGON
RING
FCOLOR NONE
ARC 0 0.75 0.75 360 0 C
END
END
STRING
LINE
0 0
1.75 0
END
END
Figure 6: Map symbol "garden" (dimensions in mm)
The map symbols (see figure 6) can be used with GRASS modules d.vect (to display vector data in GRASS monitor) and ps.map (to create hardcopy PostScript map output).
See figures 7 and 8 for hardcopy map output examples produced by GRASS module ps.map.
Figure 7: Hardcopy map output created by ps.map
Figure 8: Hardcopy map output produced by ps.map - land types
Figure 9: Land use graph (produced by R)
Figure 10: Parcels selection (100 meters from standpoint)
The development of the module v.in.vfk has started in February 2005. The first version of the module (0.1) was released in June 2005 as a part of the diploma thesis. Many problems (e.g. missing support of data type "bigint" in database driver for PostgreSQL) have appeared and kept pending.
The next generation of this module (i.e. set of tools for import of the VFK files into GRASS) requires complete rewriting of the base program (C/C++ programming language). Probably the most serious problem is missing support of the data type "bigint" in database driver for PostgreSQL database system.
An output map layer produced by v.in.vfk contains number of thematic layers. This map must be split into more map layers by another module v.vfk.extract. The module v.vfk.extract functionality will be included in the next version of the module v.in.vfk. Therefore no extra tools (like v.vfk.extract) are needed any more.
It looks like that QGIS is going to be used as a sophisticated GUI (graphical user interface) for GRASS. GRASS is command-line orientated piece of software, having its own relatively simple GUI based on Tcl/Tk library. QGIS contains GRASS plugin which allows to load GRASS raster and vector map layers, edit GRASS vector map layers or run selected GRASS modules directly from QGIS environment.
Planned QGIS plugin should allow a user to visualize cadastral maps or to put more sophisticated map queries, etc.
GRASS users can import cadastral data in Czech cadastral exchange data format (VFK files) into GRASS GIS by using module v.in.vfk without any fundamental problems. As a result, there is no need to use any external programs for (mostly losing) data conversion into chosen data format supported by GRASS.
By the way, GRASS does not offer any special tools for further data processing of cadastral data (maps). It will be part of further development (after improvement of the import module v.in.vfk). It means implementation of a special set of GRASS modules and development of QGIS plugin.