Puglia CTR Import
About
The CTR (Carta Tecnica Regionale - Regional Technical Map) of Apulia, built in 2006 in the scale of representation of 1: 5,000, can be freely downloaded from SIT Puglia, at: http://www.sit.puglia.it/portal/portale_cartografie_tecniche_tematiche/Download/Cartografie from which you must select the IGM grid 1:50,000, divided into 64 smaller panels. In total, the CTR is composed of 2,296 panels. For each panel you can download the "Carta Tecnica Regionale in formato shape" corresponding to a zip file which includes three shapefiles for points, lines and polygons and a dwg file for annotations. The subject of this import are the footprints of buildings (along with other minor elements like fountains, pools, ponds, wells, etc.) contained in the polygons shapefile.
Goals
Among the various available data, we chose to import only the footprints of the buildings, which are contained in the layer described below in the tagging plans. The goal is to enrich the OSM database with buildings, currently almost entirely lacking in Puglia, except for the area of Lecce and surrounding towns, where the buildings have been imported from a release of CTR Puglia, issued by town of Lecce in CC by 4.0 (http://wiki.openstreetmap.org/wiki/Lecce).
Import Type
This import will not happen at once, but due to the amount of data it will be divided among several users, with dedicated accounts. Each Apulia CTR panel will be prepared and individually imported. We will also keep track of the uploads by an appropriate wiki page.
Import plan
This import will be distributed as follows:
- User corfede (with dedicated account corfedeimport):
he will import the datas for the Province of Lecce, composed by IGM grids: 495, 496, 511, 512, 513, 525, 526, 527, 536, 536_bis, 537, 537_bis,
containing a total of 420 smaller panels.
[more users can be added]
Schedule
The import will begin Monday, 11/09/2015 and will last until the completion, for an estimated duration of approximately one year.
Import data
The features contained in the shapefiles are characterized by fields "LAYER" and "DESCR", respectively containing the code and the description of the object type. In the following table there are all the codes of the objects contained in the polygon shapefiles. To each is given the description contained in the shapefile, and the tag that is intended to apply.
Background
Data source site: http://www.sit.puglia.it/portal/portale_cartografie_tecniche_tematiche/Download/Cartografie
Data license: Open by default
Type of license: CC-BY 4.0
OSM attribution: http://wiki.openstreetmap.org/wiki/Contributors#Puglia
ODbL Compliance verified: yes
Workflow data preparation and upload
Below the workflow, from the download of the Apulia CTR to the final upload into OSM.
1) Download the zip file from Apulia SIT website (eg. 511101_ctr.zip, where 511 is the number of IGM 1:50.000 grid and 101 is the number of panel).
2) Extract the polygonal shapefile (eg. CTR_511101_pol).
3) Run the OGR2OSM script for the conversion from shape to osm, by the command line:
python C:\OGR2OSM\ogr2osm.py C:\CTR_Puglia\511101.shp -t C:\CTR_Puglia\tag.py -o C:\CTR_Puglia\511101.osm -e 32633 --no-upload-false
The Python script will erase all the feature that we don't want to import and will assign correct tags, as explained in tagging plans.
4) Load OSM file in JOSM and launch the validator to fix any errors and warnings and simplify geometry if needed, but first of all you have to select and delete all the untagged geometries ("atri/cavedio"). Geometry simplification can be done with plugin "Simplify Area", with these settings: angle treshold=5, angle factor=1.0, area treshold=5.0, area factor=1.0, distance treshold=3, distance factor=3, merge nearby nodes treshold=0.2.
5) Before the final upload to OSM, you must download the interested area and run again the JOSM validator, to check for interferences with pre-existing buildings, highways, etc. Furthermore, the cut geometries at the edge of the single panel must be manually merged with the closest ones.
Tagging plans
| Layer SHP | Descrizione SHP | Tag | Note |
|---|---|---|---|
| 34770000 | Serbatoio,Torre Piezometrica | man_made=water_tower |
|
| 35630000 | antenna telecomunicazioni | man_made=tower + tower:type=communication |
|
| 31670000 | atrio (cavedio) | Da trasformare in multipoligoni. Lasciare senza tag. | |
| 31620000 | baracca | building=shed |
|
| 34540000 | cabina acquedotto | building=yes + pipeline=substation + type=water |
https://wiki.openstreetmap.org/wiki/Proposed_features/PipelineExtension#Facilities.2C_Substations |
| 35180000 | cabina elettrica di trasformazione | building=yes + power=substation |
|
| 35540000 | cabina gas | building=yes + pipeline=substation + type=gas |
https://wiki.openstreetmap.org/wiki/Proposed_features/PipelineExtension#Facilities.2C_Substations |
| 31340000 | campanile | man_made=tower + tower:type=bell_tower + building=bell_tower |
|
| 31410000 | campo sportivo coperto | building=sport + leisure=sports_centre |
|
| 31210000 | capannone | building=industrial |
|
| 31220000 | capannone agricolo | building=farm_auxiliary |
|
| 31214000 | capannone diroccato | abandoned:building=yes |
|
| 31211000 | capannone in costruzione | building=construction |
|
| 31350000 | cappella cimitero | building=yes |
Edicola funeraria, comunque inserita all'interno di un landuse=cemetery |
| 31540000 | castello | historic=castle + building=castle |
|
| 35610000 | centralina telecom | building=yes + name=Centralina Telecom |
Necessita di un tag migliore per inserirlo nello schema della rete telefonica italiana |
| 31310000 | chiesa | building=church + amenity=place_of_worship + religion=christian |
|
| 31311000 | chiesa in costruzione | building=construction |
|
| 31740000 | ciminiera | man_made=chimney |
|
| 31110000 | edificio civile | building=yes |
|
| 31114000 | edificio diroccato | abandoned:building=yes |
|
| 31600000 | edificio generico | building=yes |
|
| 31111000 | edificio in costruzione | building=construction |
|
| 31110100 | edificio interrato | building=yes + building:levels:underground=1 |
|
| 34320000 | faro | man_made=lighthouse |
|
| 34740000 | fontana rappresentabile | amenity=fountain |
|
| 31780000 | monumento rappresentabile | historic=memorial |
Monumento commemorativo |
| 31640000 | pensilina | building=roof + layer=1 |
|
| 34780000 | piscina | leisure=swimming_pool + access=private |
|
| 34750000 | pozzo rappresentabile | man_made=water_well |
|
| 31730000/34790000 | serbatoio | man_made=storage_tank |
|
| 31610000 | serra | building=greenhouse |
|
| 31720000 | sylos | man_made=silo |
|
| 31330000 | tabernacolo | building=chapel + amenity=place_of_worship + religion=christian |
Trattasi di cappella religiosa, a differenza di quanto suggerito dalla descrizione |
| 31430000 | tendone pressurizzato | building=sport + covered=yes |
|
| 31630000 | tettoia | building=roof + layer=1 |
|
| 31530000 | torre | man_made=tower + building=tower |
|
| 35160000 | traliccio rappresentabile | power=tower |
|
| 31420000 | tribuna campo sportivo | building=grandstand |
|
| 31130000 | trullo | historic=building + building=trullo |
|
| 31114000 | Pagghiara | historic=building + building=pajaru |
|
| 34710000 | vasca rappresentabile | landuse=reservoir |
|
| 35110000 | stazione elettrica | power=substation |
|
| 35200000 | traliccio impianto eolico | power=generator + generator:source=wind |
|
| 31550000 | Area portico | building=roof + layer=1 |
Porticato/pensilina |
| 31560000 | area sottopassaggio | building=yes + layer=1 |
Trattasi di aree edificate, attraversate da passaggio pedonale o carrabile. |
| 31570000 | area aggetto | building=roof + layer=1 |
Pensilina |
| 31680000 | lucernaio | Non importare, eliminare geometrie | |
| 32510000 | casello | Non importare, eliminare geometrie | |
| 34760000 | diga | Non importare, eliminare geometrie | |
| 32240000 | banchina marciapiede di binario | Non importare, eliminare geometrie | |
| 32450000 | rampa | Non importare, eliminare geometrie | |
| 32580000 | scala chiusa | Non importare, eliminare geometrie | |
| 31510000 | muro | Non importare, eliminare geometrie | |
| 33110000 | muro spessore rappresentabile | Non importare, eliminare geometrie | |
| 33110000 | muro in calce in spessore | Non importare, eliminare geometrie | |
| 33110081 | muro divisorio non qualificato | Non importare, eliminare geometrie | |
| 33120000 | muro a secco spessore rappresentabile | Non importare, eliminare geometrie | |
| 33120000 | muro a secco in spessore | Non importare, eliminare geometrie | |
| 34650000 | salina | Non importare, eliminare geometrie | |
| 34660000 | palude | Non importare, eliminare geometrie | |
| 87210000 | area incolto | Non importare, eliminare geometrie | |
| 87330000 | area viale tagliafuoco | Non importare, eliminare geometrie | |
| 87340000 | bosco macchia mediterranea | Non importare, eliminare geometrie | |
| 87350000 | bosco misto | Non importare, eliminare geometrie | |
| 87360000 | bosco di conifere | Non importare, eliminare geometrie | |
| 87410000 | area Seminativi | Non importare, eliminare geometrie | |
| 87420000 | area arborato | Non importare, eliminare geometrie | |
| 87430000 | area Risaie | Non importare, eliminare geometrie | |
| 87440000 | area canneto | Non importare, eliminare geometrie | |
| 87450000 | area pascolo | Non importare, eliminare geometrie | |
| 87460000 | area Uliveti | Non importare, eliminare geometrie | |
| 87470000 | area Vigneti | Non importare, eliminare geometrie | |
| 87480000 | area agrumeti | Non importare, eliminare geometrie | |
| 87490000 | area Frutteti | Non importare, eliminare geometrie | |
| 87510000 | area giardino non qualificato | Non importare, eliminare geometrie | |
| 87510010 | area Orto-Vivaio | Non importare, eliminare geometrie | |
| 87700000 | bosco di latifoglie | Non importare, eliminare geometrie | |
| 87720000 | area pascolo cespugliato | Non importare, eliminare geometrie |
Python file rules
Versione v01 (20/10/2015).
'''
Puglia CTR Import v01 (20/10/2015)
'''
def filterFeature(ogrfeature, fieldNames, reproject):
if not ogrfeature:
return
desc = ogrfeature.GetField('DESCR')
if desc in ['banchina marciapiede di binario',
'lucernaio',
'casello',
'diga',
'rampa',
'scala chiusa',
'muro',
'muro spessore rappresentabile',
'muro in calce in spessore',
'muro divisorio non qualificato',
'muro a secco spessore rappresentabile',
'muro a secco in spessore',
'salina',
'palude',
'area incolto',
'area viale tagliafuoco',
'bosco macchia mediterranea',
'bosco misto',
'bosco di conifere',
'area Seminativi',
'area arborato',
'area Risaie',
'area canneto',
'area pascolo',
'area Uliveti',
'area Vigneti',
'area agrumeti',
'area Frutteti',
'area giardino non qualificato',
'area Orto-Vivaio',
'bosco di latifoglie',
'area pascolo cespugliato']:
return None
return ogrfeature
def filterTags(attrs):
if not attrs:
return
tags = {}
# Edifici
if 'DESCR' in attrs:
if attrs['DESCR'] == 'edificio civile': #edificio generico
tags['building'] = 'yes'
elif attrs['DESCR'] == 'antenna telecomunicazioni': #antenna telecomunicazioni
tags['man_made'] = 'tower'
tags['tower:type'] = 'communication'
elif attrs['DESCR'] == 'Area portico': #porticato
tags['building'] = 'roof'
tags['layer'] = '1'
elif attrs['DESCR'] == 'area sottopassaggio': #fabbricato con attraversamento
tags['building'] = 'yes'
tags['layer'] = '1'
elif attrs['DESCR'] == 'baracca': #baracca
tags['building'] = 'shed'
elif attrs['DESCR'] == 'cabina acquedotto': #cabina acquedotto
tags['building'] = 'yes'
tags['pipeline'] = 'substation'
tags['type'] = 'water'
elif attrs['DESCR'] == 'cabina elettrica di trasformazione': #cabina elettrica
tags['building'] = 'yes'
tags['power'] = 'substation'
elif attrs['DESCR'] == 'cabina gas': #cabina gas
tags['building'] = 'yes'
tags['pipeline'] = 'substation'
tags['type'] = 'gas'
elif attrs['DESCR'] == 'campanile': #campanile
tags['man_made'] = 'tower'
tags['tower:type'] = 'bell_tower'
tags['building'] = 'bell_tower'
elif attrs['DESCR'] == 'campo sportivo coperto': #campo sportivo coperto
tags['leisure'] = 'sports_centre'
tags['building'] = 'sport'
elif attrs['DESCR'] == 'capannone': #capannone industriale
tags['building'] = 'industrial'
elif attrs['DESCR'] == 'capannone agricolo': #capannone agricolo
tags['building'] = 'farm_auxiliary'
elif attrs['DESCR'] == 'capannone diroccato': #capannone diroccato
tags['abandoned:building'] = 'yes'
elif attrs['DESCR'] == 'capannone in costruzione': #capannone in costruzione
tags['building'] = 'construction'
elif attrs['DESCR'] == 'cappella cimitero': #edicola funeraria
tags['building'] = 'yes'
elif attrs['DESCR'] == 'castello': #castello
tags['historic'] = 'castle'
tags['building'] = 'castle'
elif attrs['DESCR'] == 'centralina telecom': #centralina telecom
tags['building'] = 'yes'
tags['name'] = 'Centralina Telecom'
elif attrs['DESCR'] == 'chiesa': #chiesa
tags['building'] = 'church'
tags['religion'] = 'christian'
tags['amenity'] = 'place_of_worship'
elif attrs['DESCR'] == 'chiesa in costruzione': #chiesa in costruzione
tags['building'] = 'construction'
elif attrs['DESCR'] == 'ciminiera': #ciminiera
tags['man_made'] = 'chimney'
elif attrs['DESCR'] == 'edificio diroccato': #edificio abbandonato
tags['abandoned:building'] = 'yes'
elif attrs['DESCR'] == 'edificio generico': #edificio generico
tags['building'] = 'yes'
elif attrs['DESCR'] == 'edificio in costruzione': #edificio in costruzione
tags['building'] = 'construction'
elif attrs['DESCR'] == 'edificio interrato': #edificio interrato
tags['building'] = 'yes'
tags['building:levels:underground'] = '1'
elif attrs['DESCR'] == 'faro': #faro
tags['man_made'] = 'lighthouse'
elif attrs['DESCR'] == 'fontana rappresentabile': #fontana
tags['amenity'] = 'fountain'
elif attrs['DESCR'] == 'monumento rappresentabile': #monumento
tags['historic'] = 'memorial'
elif attrs['DESCR'] == 'Pagghiara': #pajara
tags['building'] = 'pajaru'
tags['historic'] = 'building'
elif attrs['DESCR'] == 'pensilina': #pensilina
tags['building'] = 'roof'
tags['layer'] = '1'
elif attrs['DESCR'] == 'piscina': #piscina
tags['leisure'] = 'swimming_pool'
tags['access'] = 'private'
elif attrs['DESCR'] == 'pozzo rappresentabile': #pozzo
tags['man_made'] = 'water_well'
elif attrs['DESCR'] == 'serbatoio': #serbatoio
tags['man_made'] = 'storage_tank'
elif attrs['DESCR'] == 'serra': #serra
tags['building'] = 'greenhouse'
elif attrs['DESCR'] == 'sylos': #sylos
tags['man_made'] = 'silo'
elif attrs['DESCR'] == 'Serbatoio, Torre Piezometrica': #torre piezometrica
tags['man_made'] = 'water_tower'
elif attrs['DESCR'] == 'tabernacolo': #cappella
tags['building'] = 'chapel'
tags['religion'] = 'christian'
tags['amenity'] = 'place_of_worship'
elif attrs['DESCR'] == 'tendone pressurizzato': #tendone
tags['building'] = 'sport'
tags['covered'] = 'yes'
elif attrs['DESCR'] == 'tettoia': #tettoia
tags['building'] = 'roof'
tags['layer'] = '1'
elif attrs['DESCR'] == 'torre': #torre
tags['building'] = 'tower'
tags['man_made'] = 'tower'
elif attrs['DESCR'] == 'tribuna campo sportivo': #tribuna campo sportivo
tags['building'] = 'grandstand'
elif attrs['DESCR'] == 'trullo': #trullo
tags['historic'] = 'building'
tags['building'] = 'trullo'
elif attrs['DESCR'] == 'vasca rappresentabile': #vasca
tags['landuse'] = 'reservoir'
elif attrs['DESCR'] == 'stazione elettrica': #stazione elettrica
tags['power'] = 'substation'
elif attrs['DESCR'] == 'traliccio impianto eolico': #eolico
tags['power'] = 'generator'
tags['generator:source'] = 'wind'
elif attrs['DESCR'] == 'traliccio rappresentabile': #traliccio elettrico
tags['power'] = 'power'
elif attrs['DESCR'] == 'area aggetto': #pensilina
tags['building'] = 'roof'
tags['layer'] = '1'
return tags
Changeset Tags
Changesets will be tagged like that: CTR Puglia (http://www.sit.puglia.it/portal/portale_cartografie_tecniche_tematiche/Download/Cartografie CC-by 4.0)
QA
Add your QA plan here.