Come importare le Zone Geografiche da D-Flight in QGis
Il portale italiano che consente di accedere alle informazioni circa le aree dove il volo dei nostri UAS (droni) possono o non possono volare, come noto, è D-Flight.
D-Flight mette a disposizione per gli utenti iscritti e/o abbonati un’interfaccia web attraverso cui è possibile navigare e verificare se sono presenti le cosiddette zone geografiche nell’area di nostro interesse. Tali aree, valorizzate graficamente attraverso i colori, rappresentano zone Proibite, zone Regolamentate, zone Pericolose, Aeroporti, Eliporti, oppure Notam: insomma tutte aree (o meglio volumi) rispetto alle quali dobbiamo procedere con estrema prudenza e consapevolezza, di modo da evitare di permearle, cioè di entrarci senza le necessarie autorizzazioni o senza che si realizzino le giuste condizioni.
Non tutte le aree geografiche sono infatti dei muri invalicabili, come le zone Proibite o le aree aereoportuali rosse, essendoci delle limitazioni in alcune aree che per esempio ci consentono operazioni Open fino a 45m AGL, oppure prima dell’alba e dopo il tramonto.
Non sono un istruttore di UAS per cui mi fermo qui rispetto ad esempi pratici di zone geografiche, ma sappi che occorre conoscere la normativa di settore e (meglio) conseguire gli attestati previsti dalla norma per ben comprendere le reali condizioni operative cui andiamo incontro.
Ciò premesso, D-Flight mette da qualche mese a disposizione un tool per scaricare queste informazioni relative alle Zone Geografiche attraverso un file in formato Json, che se caricato sul nostro radiocomando, ci consente di vedere in tempo reale durante le operazioni se siamo prossimi ad una di queste zone geografiche, in modo da consentirci un approccio consapevole alle operazioni.
In fase di progettazione della missione, quindi, è essenziale rendersi conto (prima) se le nostre attività interessano o meno una o più Zone Geografiche, così da poter comprendere la fattibilità stessa della missione ovvero se ci occorre un’autorizzazione per effettuarla.
Come detto dal portale di D-Flight lo possiamo tranquillamente fare, ma non abbiamo modo di utilizzare diversamente queste informazioni se non visualizzandole e interrogando la singola area geografica o il punto di interesse.
Per questo motivo, con la finalità di rendere maggiormente intellegibili queste informazioni e di sfruttare un approccio GIS delle stesse, ti spiego come portare in QGIS le Zone Geografiche D-Flight convertendo il Json in uno Shapefile.
- Scarica il file Json più recente da D-Flight (viene aggiornato continuamente, per cui verifica bene);
- Apri Qgis;
- Premi sul pulsante strumenti (l’icona a forma di ingranaggio;
- Premi sull’icona di Pyton nel pannello strumenti;
- Seleziona Crea Nuovo script
- Ora, vedi questo testo qui sotto in questa cornice grigia? Copialo integralmente selezionando il testo e premendo CTRL+C;
import json
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (
QgsProcessing,
QgsProcessingAlgorithm,
QgsProcessingParameterFile,
QgsProcessingParameterFileDestination,
QgsVectorLayer,
QgsFeature,
QgsGeometry,
QgsField,
QgsPointXY,
QgsVectorFileWriter,
QgsProject
)
from PyQt5.QtCore import QVariant
class JsonToShp(QgsProcessingAlgorithm):
INPUT_JSON = 'INPUT_JSON'
OUTPUT_SHP = 'OUTPUT_SHP'
def createInstance(self):
return JsonToShp()
def name(self):
return 'jsontosshp'
def displayName(self):
return QCoreApplication.translate('JsonToShp', 'Convert JSON (ED-269) to Shapefile')
def group(self):
return QCoreApplication.translate('JsonToShp', 'Custom Scripts')
def groupId(self):
return 'customscripts'
def shortHelpString(self):
return QCoreApplication.translate('JsonToShp', 'Converts a JSON file (ED-269 format) to a Shapefile vector file.')
def initAlgorithm(self, config=None):
self.addParameter(
QgsProcessingParameterFile(
self.INPUT_JSON,
QCoreApplication.translate('JsonToShp', 'Input JSON File'),
extension='json'
)
)
self.addParameter(
QgsProcessingParameterFileDestination(
self.OUTPUT_SHP,
QCoreApplication.translate('JsonToShp', 'Output Shapefile'),
fileFilter='ESRI Shapefile (*.shp)'
)
)
def processAlgorithm(self, parameters, context, feedback):
input_json = self.parameterAsFile(parameters, self.INPUT_JSON, context)
output_shp = self.parameterAsFileOutput(parameters, self.OUTPUT_SHP, context)
# Carica il file JSON
try:
with open(input_json, 'r') as f:
data = json.load(f)
feedback.pushInfo('File JSON caricato con successo.')
except Exception as e:
raise QgsProcessingException(f'Errore durante il caricamento del file JSON: {e}')
# Verifica struttura JSON
features = data.get("features", [])
if not features or not isinstance(features, list):
raise QgsProcessingException('Il JSON non contiene una lista valida di feature.')
# Crea un nuovo layer temporaneo
layer = QgsVectorLayer("Polygon?crs=EPSG:4326", "ED-269 Temp Layer", "memory")
if not layer.isValid():
raise QgsProcessingException('Errore nella creazione del layer temporaneo.')
# Definisci campi, inclusi lowerLimit, upperLimit, zoneAuthority e applicability
layer.dataProvider().addAttributes([
QgsField('ID', QVariant.String),
QgsField('Name', QVariant.String),
QgsField('Type', QVariant.String),
QgsField('Restriction', QVariant.String),
QgsField('Reason', QVariant.String),
QgsField('Lower_Limit', QVariant.Double), # Campo per lowerLimit
QgsField('Upper_Limit', QVariant.Double), # Campo per upperLimit
QgsField('Zone_Authority', QVariant.String), # Campo per zoneAuthority
QgsField('Applicability', QVariant.String) # Campo per applicability
])
layer.updateFields()
# Aggiungi le feature dal JSON
provider = layer.dataProvider()
for feature_data in features:
properties = feature_data.get("properties", {})
geometry = feature_data.get("geometry", [{}])[0] # Supponiamo che ci sia almeno un oggetto geometry
coordinates = geometry.get("horizontalProjection", {}).get("coordinates", [])
# Estrai i limiti di altezza dalla sezione geometry
lower_limit = geometry.get("lowerLimit", None) # Limite inferiore
upper_limit = geometry.get("upperLimit", None) # Limite superiore
# Estrai zoneAuthority (se presente)
zone_authority = properties.get("zoneAuthority", [])
zone_authority_str = "N/A"
if isinstance(zone_authority, list) and len(zone_authority) > 0:
zone_authority_str = ", ".join([
f"{key}: {value}" for item in zone_authority for key, value in item.items() if value is not None
])
# Estrai applicability (verifica "permanent": "YES")
applicability = "N/A"
applicability_list = properties.get("applicability", [])
if isinstance(applicability_list, list) and len(applicability_list) > 0:
for item in applicability_list:
if item.get("permanent") == "YES":
applicability = "Permanente"
break
if not coordinates:
feedback.pushInfo(f'Feature senza geometria, ignorata: {feature_data.get("identifier", "N/A")}')
continue
for polygon_coords in coordinates:
geom = QgsGeometry.fromPolygonXY([[QgsPointXY(*point) for point in polygon_coords]])
# Crea una feature con i dati estratti
new_feature = QgsFeature()
new_feature.setGeometry(geom)
new_feature.setAttributes([
feature_data.get("identifier", "N/A"),
feature_data.get("name", "N/A"),
feature_data.get("type", "N/A"),
feature_data.get("restriction", "N/A"),
", ".join(feature_data.get("reason", [])),
lower_limit, # Aggiungi lowerLimit come attributo
upper_limit, # Aggiungi upperLimit come attributo
zone_authority_str, # Aggiungi zoneAuthority come attributo
applicability # Aggiungi applicability come attributo
])
provider.addFeature(new_feature)
layer.updateExtents()
feedback.pushInfo('Layer temporaneo creato con successo.')
# Esportare in Shapefile
QgsVectorFileWriter.writeAsVectorFormat(
layer,
output_shp,
"utf-8",
layer.crs(),
"ESRI Shapefile"
)
feedback.pushInfo(f'Shapefile salvato in: {output_shp}')
# Caricare lo Shapefile nei layer di QGIS
shp_layer = QgsVectorLayer(output_shp, "ED-269 Shapefile", "ogr")
if not shp_layer.isValid():
raise QgsProcessingException('Errore nel caricamento dello Shapefile generato.')
QgsProject.instance().addMapLayer(shp_layer)
feedback.pushInfo('Shapefile aggiunto ai layer.')
# Carica e applica il file QML di stile
qml_file_path = r"C:\Users\gianc\Desktop\Stile.qml" # Inserisci il percorso completo del tuo file QML
shp_layer.loadNamedStyle(qml_file_path)
feedback.pushInfo(f"Stile applicato con successo da: {qml_file_path}")
return {self.OUTPUT_SHP: output_shp}
- In QGis ti si è aperta questa finestra per la creazione di uno script, ed è giustamente vuota:
- Incollaci dentro il testo copiato;
- A questo punto 1) salva lo script premendo sull’icona a forma di dischetto e dai allo script il nome e la posizione che preferisci;
- Ora 2) premi sull’icona verde Play per avviare lo script;
- Ti si apre una classica finestra di dialogo di QGis in cui inserire A) il Json scaricato da D-Flight come input e B) tramite cui puoi scegliere se creare uno Shapefile temporaneo o salvarlo sul PC.
- Fatto questo premi su Esegui.
Ecco a te le Zone Geografiche direttamente in QGis.
Puoi lavorarci come un qualsiasi Shapefile, sovrapponendo ad esempio la geometria del TUO volo per verificare la fattibilità dello stesso, puoi esportare questi dati come KML e vederli in Google Earth, puoi stampare tavole, personalizzarne l’aspetto grafico, interrogare le singole aree… insomma puoi sfruttare tutta la flessibilità di un ambiente GIS con i dati aggiornati e conservarli nel tempo.
Gli ho dato uno stile (che lo script applica direttamente allo Shapefile) del tutto arbitrario, fatto (spero) in modo da rendere a colpo d’occhio accessibili graficamente le informazioni, ma sei padrone di personalizzarlo come meglio credi.
Quando vorrai riutilizzare lo script in un’altra sessione Qgis basterà premere il tasto Apri Script Esistente e non dovrai fare altro che prendere lo script dalla posizione che hai scelto precedentemente.
Grazie ai vostri commenti mi sono reso conto che lo stile potrebbe non essere correttamente applicato.
Copia con blocco note il seguente testo:
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis hasScaleBasedVisibilityFlag="0" simplifyAlgorithm="0" symbologyReferenceScale="-1" minScale="25000" labelsEnabled="1" simplifyMaxScale="1" simplifyDrawingHints="1" version="3.34.9-Prizren" simplifyLocal="1" maxScale="0" styleCategories="AllStyleCategories" readOnly="0" simplifyDrawingTol="1">
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
<Private>0</Private>
</flags>
<temporal limitMode="0" endExpression="" mode="0" startExpression="" fixedDuration="0" durationUnit="min" accumulate="0" startField="" durationField="Lower_Limi" enabled="0" endField="">
<fixedRange>
<start></start>
<end></end>
</fixedRange>
</temporal>
<elevation showMarkerSymbolInSurfacePlots="0" extrusionEnabled="0" extrusion="0" clamping="Terrain" symbology="Line" type="IndividualFeatures" binding="Centroid" zoffset="0" zscale="1" respectLayerSymbol="1">
<data-defined-properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data-defined-properties>
<profileLineSymbol>
<symbol force_rhr="0" clip_to_extent="1" type="line" name="" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{771c1cee-e474-4723-9602-6cd048a63ea2}" pass="0" class="SimpleLine" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="0" name="align_dash_pattern"/>
<Option type="QString" value="square" name="capstyle"/>
<Option type="QString" value="5;2" name="customdash"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/>
<Option type="QString" value="MM" name="customdash_unit"/>
<Option type="QString" value="0" name="dash_pattern_offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/>
<Option type="QString" value="MM" name="dash_pattern_offset_unit"/>
<Option type="QString" value="0" name="draw_inside_polygon"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="255,158,23,255" name="line_color"/>
<Option type="QString" value="solid" name="line_style"/>
<Option type="QString" value="0.6" name="line_width"/>
<Option type="QString" value="MM" name="line_width_unit"/>
<Option type="QString" value="0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="0" name="ring_filter"/>
<Option type="QString" value="0" name="trim_distance_end"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/>
<Option type="QString" value="MM" name="trim_distance_end_unit"/>
<Option type="QString" value="0" name="trim_distance_start"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/>
<Option type="QString" value="MM" name="trim_distance_start_unit"/>
<Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/>
<Option type="QString" value="0" name="use_custom_dash"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileLineSymbol>
<profileFillSymbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{6083b39b-ca61-4c8a-a568-7821cb3f0a36}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="255,158,23,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="182,113,16,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.2" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileFillSymbol>
<profileMarkerSymbol>
<symbol force_rhr="0" clip_to_extent="1" type="marker" name="" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{a9476234-51fa-42b0-8d46-58733d818b8a}" pass="0" class="SimpleMarker" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="0" name="angle"/>
<Option type="QString" value="square" name="cap_style"/>
<Option type="QString" value="255,158,23,255" name="color"/>
<Option type="QString" value="1" name="horizontal_anchor_point"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="diamond" name="name"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="182,113,16,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.2" name="outline_width"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="diameter" name="scale_method"/>
<Option type="QString" value="3" name="size"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
<Option type="QString" value="MM" name="size_unit"/>
<Option type="QString" value="1" name="vertical_anchor_point"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileMarkerSymbol>
</elevation>
<renderer-v2 symbollevels="0" enableorderby="0" type="categorizedSymbol" referencescale="-1" attr="Lower_Limi" forceraster="0">
<categories>
<category label="0" symbol="0" render="true" value="0" type="double" uuid="{6a6a15a3-02b8-4339-9e75-5e2244d8f3c0}"/>
<category label="25,000000000000000" symbol="1" render="true" value="25" type="double" uuid="{95145e2e-8c0f-461c-8595-cb711fe08944}"/>
<category label="45,000000000000000" symbol="2" render="true" value="45" type="double" uuid="{ce42153e-ec3e-4777-8da5-85f3fc4ee3f7}"/>
<category label="60,000000000000000" symbol="3" render="true" value="60" type="double" uuid="{4049fbbe-67e3-41f9-8e2f-fded086842ae}"/>
<category label="" symbol="4" render="true" value="" type="string" uuid="{37ccc13f-3ba8-4ab5-bb5a-6fa85cee4f2e}"/>
</categories>
<symbols>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="0" is_animated="0" frame_rate="10" alpha="0.3">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{928f911c-fc04-423b-b051-55ff1d00728c}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="255,22,1,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="1" is_animated="0" frame_rate="10" alpha="0.3">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{a80c6610-2b98-43b4-8865-26e514e3eda1}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="255,107,1,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="247,247,247,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="2" is_animated="0" frame_rate="10" alpha="0.3">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{e4bd055b-a60b-4e26-9059-49d86d36c41a}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="255,234,1,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="247,247,247,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="3" is_animated="0" frame_rate="10" alpha="0.3">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{928f911c-fc04-423b-b051-55ff1d00728c}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="1,225,255,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="4" is_animated="0" frame_rate="10" alpha="0.3">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{928f911c-fc04-423b-b051-55ff1d00728c}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="229,128,214,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</symbols>
<source-symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="0" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{928f911c-fc04-423b-b051-55ff1d00728c}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="232,113,141,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</source-symbol>
<colorramp type="randomcolors" name="[source]">
<Option/>
</colorramp>
<rotation/>
<sizescale/>
</renderer-v2>
<selection mode="Default">
<selectionColor invalid="1"/>
<selectionSymbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{47551579-1613-4e1b-9a0f-4b057441ca9c}" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="0,0,255,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0.26" name="outline_width"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</selectionSymbol>
</selection>
<labeling type="simple">
<settings calloutType="simple">
<text-style fontFamily="Arial" fontWordSpacing="0" textOpacity="1" fontSize="10" previewBkgrdColor="255,255,255,255" fontUnderline="0" fontStrikeout="0" multilineHeightUnit="Percentage" multilineHeight="1" fontLetterSpacing="0" useSubstitutions="0" forcedBold="0" forcedItalic="0" textOrientation="horizontal" capitalization="0" namedStyle="Normale" allowHtml="0" fieldName="Name" fontKerning="1" fontSizeUnit="Point" textColor="50,50,50,255" fontSizeMapUnitScale="3x:0,0,0,0,0,0" isExpression="0" legendString="Aa" fontWeight="50" fontItalic="0" blendMode="0">
<families/>
<text-buffer bufferBlendMode="0" bufferSizeUnits="MM" bufferDraw="1" bufferSize="1" bufferColor="250,250,250,255" bufferJoinStyle="128" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferOpacity="1"/>
<text-mask maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskedSymbolLayers="" maskType="0" maskOpacity="1" maskEnabled="0" maskJoinStyle="128" maskSize="0" maskSizeUnits="MM"/>
<background shapeJoinStyle="64" shapeSizeType="0" shapeType="0" shapeBorderWidthUnit="Point" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeSizeY="0" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeBorderWidth="0" shapeOffsetY="0" shapeRadiiUnit="Point" shapeRotation="0" shapeOffsetUnit="Point" shapeSizeUnit="Point" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeDraw="0" shapeRadiiX="0" shapeRotationType="0" shapeOffsetX="0" shapeSVGFile="" shapeOpacity="1" shapeRadiiY="0" shapeFillColor="255,255,255,255" shapeSizeX="0" shapeBorderColor="128,128,128,255" shapeBlendMode="0">
<symbol force_rhr="0" clip_to_extent="1" type="marker" name="markerSymbol" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="" pass="0" class="SimpleMarker" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="0" name="angle"/>
<Option type="QString" value="square" name="cap_style"/>
<Option type="QString" value="114,155,111,255" name="color"/>
<Option type="QString" value="1" name="horizontal_anchor_point"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="circle" name="name"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="35,35,35,255" name="outline_color"/>
<Option type="QString" value="solid" name="outline_style"/>
<Option type="QString" value="0" name="outline_width"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
<Option type="QString" value="MM" name="outline_width_unit"/>
<Option type="QString" value="diameter" name="scale_method"/>
<Option type="QString" value="2" name="size"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
<Option type="QString" value="MM" name="size_unit"/>
<Option type="QString" value="1" name="vertical_anchor_point"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
<symbol force_rhr="0" clip_to_extent="1" type="fill" name="fillSymbol" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="" pass="0" class="SimpleFill" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
<Option type="QString" value="255,255,255,255" name="color"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="0,0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="128,128,128,255" name="outline_color"/>
<Option type="QString" value="no" name="outline_style"/>
<Option type="QString" value="0" name="outline_width"/>
<Option type="QString" value="Point" name="outline_width_unit"/>
<Option type="QString" value="solid" name="style"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</background>
<shadow shadowScale="100" shadowRadiusAlphaOnly="0" shadowDraw="0" shadowUnder="0" shadowBlendMode="6" shadowRadius="1.5" shadowOffsetAngle="135" shadowOffsetUnit="MM" shadowOffsetDist="1" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOpacity="0.69999999999999996" shadowRadiusUnit="MM" shadowColor="0,0,0,255" shadowOffsetGlobal="1"/>
<dd_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</dd_properties>
<substitutions/>
</text-style>
<text-format placeDirectionSymbol="0" formatNumbers="0" wrapChar="" leftDirectionSymbol="<" autoWrapLength="0" decimals="3" reverseDirectionSymbol="0" plussign="0" addDirectionSymbol="0" multilineAlign="3" useMaxLineLengthForAutoWrap="1" rightDirectionSymbol=">"/>
<placement distUnits="MM" preserveRotation="1" dist="0" allowDegraded="0" fitInPolygonOnly="0" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" labelOffsetMapUnitScale="3x:0,0,0,0,0,0" maxCurvedCharAngleOut="-25" quadOffset="4" polygonPlacementFlags="2" rotationUnit="AngleDegrees" centroidWhole="0" lineAnchorPercent="0.5" geometryGenerator="" rotationAngle="0" overlapHandling="PreventOverlap" placementFlags="10" priority="5" lineAnchorClipping="0" xOffset="0" placement="0" lineAnchorType="0" centroidInside="0" layerType="PolygonGeometry" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" repeatDistance="0" offsetType="0" lineAnchorTextPoint="FollowPlacement" maxCurvedCharAngleIn="25" offsetUnits="MM" overrunDistanceUnit="MM" geometryGeneratorEnabled="0" repeatDistanceUnits="MM" geometryGeneratorType="PointGeometry" overrunDistance="0" yOffset="0" distMapUnitScale="3x:0,0,0,0,0,0"/>
<rendering upsidedownLabels="0" limitNumLabels="0" fontLimitPixelSize="0" zIndex="0" fontMaxPixelSize="10000" mergeLines="0" obstacleType="1" labelPerPart="0" unplacedVisibility="0" obstacle="1" scaleMin="0" minFeatureSize="0" obstacleFactor="1" scaleVisibility="1" scaleMax="100000" maxNumLabels="2000" fontMinPixelSize="3" drawLabels="1"/>
<dd_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</dd_properties>
<callout type="simple">
<Option type="Map">
<Option type="QString" value="pole_of_inaccessibility" name="anchorPoint"/>
<Option type="int" value="0" name="blendMode"/>
<Option type="Map" name="ddProperties">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
<Option type="bool" value="false" name="drawToAllParts"/>
<Option type="QString" value="0" name="enabled"/>
<Option type="QString" value="point_on_exterior" name="labelAnchorPoint"/>
<Option type="QString" value="<symbol force_rhr="0" clip_to_extent="1" type="line" name="symbol" is_animated="0" frame_rate="10" alpha="1"><data_defined_properties><Option type="Map"><Option type="QString" value="" name="name"/><Option name="properties"/><Option type="QString" value="collection" name="type"/></Option></data_defined_properties><layer id="{5aa35c12-884f-48be-87ef-e559501a1dbc}" pass="0" class="SimpleLine" locked="0" enabled="1"><Option type="Map"><Option type="QString" value="0" name="align_dash_pattern"/><Option type="QString" value="square" name="capstyle"/><Option type="QString" value="5;2" name="customdash"/><Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/><Option type="QString" value="MM" name="customdash_unit"/><Option type="QString" value="0" name="dash_pattern_offset"/><Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/><Option type="QString" value="MM" name="dash_pattern_offset_unit"/><Option type="QString" value="0" name="draw_inside_polygon"/><Option type="QString" value="bevel" name="joinstyle"/><Option type="QString" value="60,60,60,255" name="line_color"/><Option type="QString" value="solid" name="line_style"/><Option type="QString" value="0.3" name="line_width"/><Option type="QString" value="MM" name="line_width_unit"/><Option type="QString" value="0" name="offset"/><Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/><Option type="QString" value="MM" name="offset_unit"/><Option type="QString" value="0" name="ring_filter"/><Option type="QString" value="0" name="trim_distance_end"/><Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/><Option type="QString" value="MM" name="trim_distance_end_unit"/><Option type="QString" value="0" name="trim_distance_start"/><Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/><Option type="QString" value="MM" name="trim_distance_start_unit"/><Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/><Option type="QString" value="0" name="use_custom_dash"/><Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/></Option><data_defined_properties><Option type="Map"><Option type="QString" value="" name="name"/><Option name="properties"/><Option type="QString" value="collection" name="type"/></Option></data_defined_properties></layer></symbol>" name="lineSymbol"/>
<Option type="double" value="0" name="minLength"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="minLengthMapUnitScale"/>
<Option type="QString" value="MM" name="minLengthUnit"/>
<Option type="double" value="0" name="offsetFromAnchor"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offsetFromAnchorMapUnitScale"/>
<Option type="QString" value="MM" name="offsetFromAnchorUnit"/>
<Option type="double" value="0" name="offsetFromLabel"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offsetFromLabelMapUnitScale"/>
<Option type="QString" value="MM" name="offsetFromLabelUnit"/>
</Option>
</callout>
</settings>
</labeling>
<customproperties>
<Option type="Map">
<Option type="int" value="0" name="embeddedWidgets/count"/>
<Option name="variableNames"/>
<Option name="variableValues"/>
</Option>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerOpacity>1</layerOpacity>
<SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1">
<DiagramCategory scaleBasedVisibility="0" enabled="0" lineSizeType="MM" height="15" sizeScale="3x:0,0,0,0,0,0" spacingUnitScale="3x:0,0,0,0,0,0" spacing="5" lineSizeScale="3x:0,0,0,0,0,0" minScaleDenominator="0" diagramOrientation="Up" rotationOffset="270" sizeType="MM" barWidth="5" direction="0" spacingUnit="MM" width="15" backgroundAlpha="255" penColor="#000000" minimumSize="0" backgroundColor="#ffffff" labelPlacementMethod="XHeight" showAxis="1" penAlpha="255" maxScaleDenominator="1e+08" scaleDependency="Area" penWidth="0" opacity="1">
<fontProperties style="" bold="0" description="MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0" strikethrough="0" italic="0" underline="0"/>
<axisSymbol>
<symbol force_rhr="0" clip_to_extent="1" type="line" name="" is_animated="0" frame_rate="10" alpha="1">
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
<layer id="{6d7c6a7f-5103-4f5b-a820-d707ece3dcf6}" pass="0" class="SimpleLine" locked="0" enabled="1">
<Option type="Map">
<Option type="QString" value="0" name="align_dash_pattern"/>
<Option type="QString" value="square" name="capstyle"/>
<Option type="QString" value="5;2" name="customdash"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/>
<Option type="QString" value="MM" name="customdash_unit"/>
<Option type="QString" value="0" name="dash_pattern_offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/>
<Option type="QString" value="MM" name="dash_pattern_offset_unit"/>
<Option type="QString" value="0" name="draw_inside_polygon"/>
<Option type="QString" value="bevel" name="joinstyle"/>
<Option type="QString" value="35,35,35,255" name="line_color"/>
<Option type="QString" value="solid" name="line_style"/>
<Option type="QString" value="0.26" name="line_width"/>
<Option type="QString" value="MM" name="line_width_unit"/>
<Option type="QString" value="0" name="offset"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
<Option type="QString" value="MM" name="offset_unit"/>
<Option type="QString" value="0" name="ring_filter"/>
<Option type="QString" value="0" name="trim_distance_end"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/>
<Option type="QString" value="MM" name="trim_distance_end_unit"/>
<Option type="QString" value="0" name="trim_distance_start"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/>
<Option type="QString" value="MM" name="trim_distance_start_unit"/>
<Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/>
<Option type="QString" value="0" name="use_custom_dash"/>
<Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</axisSymbol>
</DiagramCategory>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings linePlacementFlags="18" obstacle="0" placement="1" dist="0" priority="0" showAll="1" zIndex="0">
<properties>
<Option type="Map">
<Option type="QString" value="" name="name"/>
<Option name="properties"/>
<Option type="QString" value="collection" name="type"/>
</Option>
</properties>
</DiagramLayerSettings>
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
<activeChecks/>
<checkConfiguration type="Map">
<Option type="Map" name="QgsGeometryGapCheck">
<Option type="double" value="0" name="allowedGapsBuffer"/>
<Option type="bool" value="false" name="allowedGapsEnabled"/>
<Option type="QString" value="" name="allowedGapsLayer"/>
</Option>
</checkConfiguration>
</geometryOptions>
<legend showLabelLegend="0" type="default-vector"/>
<referencedLayers/>
<fieldConfiguration>
<field configurationFlags="NoFlag" name="ID">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Name">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Type">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Restrictio">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Reason">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Lower_Limi">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
<field configurationFlags="NoFlag" name="Upper_Limi">
<editWidget type="TextEdit">
<config>
<Option/>
</config>
</editWidget>
</field>
</fieldConfiguration>
<aliases>
<alias index="0" field="ID" name=""/>
<alias index="1" field="Name" name=""/>
<alias index="2" field="Type" name=""/>
<alias index="3" field="Restrictio" name=""/>
<alias index="4" field="Reason" name=""/>
<alias index="5" field="Lower_Limi" name=""/>
<alias index="6" field="Upper_Limi" name=""/>
</aliases>
<splitPolicies>
<policy policy="Duplicate" field="ID"/>
<policy policy="Duplicate" field="Name"/>
<policy policy="Duplicate" field="Type"/>
<policy policy="Duplicate" field="Restrictio"/>
<policy policy="Duplicate" field="Reason"/>
<policy policy="Duplicate" field="Lower_Limi"/>
<policy policy="Duplicate" field="Upper_Limi"/>
</splitPolicies>
<defaults>
<default field="ID" applyOnUpdate="0" expression=""/>
<default field="Name" applyOnUpdate="0" expression=""/>
<default field="Type" applyOnUpdate="0" expression=""/>
<default field="Restrictio" applyOnUpdate="0" expression=""/>
<default field="Reason" applyOnUpdate="0" expression=""/>
<default field="Lower_Limi" applyOnUpdate="0" expression=""/>
<default field="Upper_Limi" applyOnUpdate="0" expression=""/>
</defaults>
<constraints>
<constraint exp_strength="0" notnull_strength="0" field="ID" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Name" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Type" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Restrictio" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Reason" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Lower_Limi" unique_strength="0" constraints="0"/>
<constraint exp_strength="0" notnull_strength="0" field="Upper_Limi" unique_strength="0" constraints="0"/>
</constraints>
<constraintExpressions>
<constraint exp="" field="ID" desc=""/>
<constraint exp="" field="Name" desc=""/>
<constraint exp="" field="Type" desc=""/>
<constraint exp="" field="Restrictio" desc=""/>
<constraint exp="" field="Reason" desc=""/>
<constraint exp="" field="Lower_Limi" desc=""/>
<constraint exp="" field="Upper_Limi" desc=""/>
</constraintExpressions>
<expressionfields/>
<attributeactions>
<defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/>
</attributeactions>
<attributetableconfig sortOrder="0" sortExpression="" actionWidgetStyle="dropDown">
<columns>
<column hidden="0" width="-1" type="field" name="ID"/>
<column hidden="0" width="-1" type="field" name="Name"/>
<column hidden="0" width="-1" type="field" name="Type"/>
<column hidden="0" width="-1" type="field" name="Restrictio"/>
<column hidden="0" width="-1" type="field" name="Reason"/>
<column hidden="0" width="-1" type="field" name="Lower_Limi"/>
<column hidden="0" width="-1" type="field" name="Upper_Limi"/>
<column hidden="1" width="-1" type="actions"/>
</columns>
</attributetableconfig>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<storedexpressions/>
<editform tolerant="1"></editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath></editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
I moduli di QGIS possono avere una funzione Python che può essere chiamata quando un modulo viene aperto.
Usa questa funzione per aggiungere logica extra ai tuoi moduli.
Inserisci il nome della funzione nel campo "Funzione Python di avvio".
Segue un esempio:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<editable>
<field name="ID" editable="1"/>
<field name="Lower_Limi" editable="1"/>
<field name="Name" editable="1"/>
<field name="Reason" editable="1"/>
<field name="Restrictio" editable="1"/>
<field name="Type" editable="1"/>
<field name="Upper_Limi" editable="1"/>
</editable>
<labelOnTop>
<field labelOnTop="0" name="ID"/>
<field labelOnTop="0" name="Lower_Limi"/>
<field labelOnTop="0" name="Name"/>
<field labelOnTop="0" name="Reason"/>
<field labelOnTop="0" name="Restrictio"/>
<field labelOnTop="0" name="Type"/>
<field labelOnTop="0" name="Upper_Limi"/>
</labelOnTop>
<reuseLastValue>
<field name="ID" reuseLastValue="0"/>
<field name="Lower_Limi" reuseLastValue="0"/>
<field name="Name" reuseLastValue="0"/>
<field name="Reason" reuseLastValue="0"/>
<field name="Restrictio" reuseLastValue="0"/>
<field name="Type" reuseLastValue="0"/>
<field name="Upper_Limi" reuseLastValue="0"/>
</reuseLastValue>
<dataDefinedFieldProperties/>
<widgets/>
<previewExpression>"Name"</previewExpression>
<mapTip enabled="1"></mapTip>
<layerGeometryType>2</layerGeometryType>
</qgis>
Incollalo in blocco note e salva il file con estensione .qml
Poi in QGIS vai sulle proprietà dello shapefile appena creato:
A questo punto carica il file con estensione .qml appena creato premendo su carica stile:
Ora anche lo stile dovresti vederlo correttamente.
Spero di esserti stato in qualche modo di aiuto, buon lavoro!