From ee95a54e4f70fd7f911e8a2cacfb342c85213937 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Tue, 11 Jun 2024 19:28:10 +0200 Subject: config.yml: Add field comments. (Commented out for now since Bookworm has only GDAL v3.6.) --- config.yml | 40 ++++++++++++++++++++++++++++++++++++++++ webmap-import | 4 +++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/config.yml b/config.yml index eb59fb0..e82dce5 100644 --- a/config.yml +++ b/config.yml @@ -236,19 +236,24 @@ layers: create: geometry-type: MULTIPOLYGON fields: + # https://www.lantmateriet.se/globalassets/geodata/geodataprodukter/pb-topografi-250-nedladdning-vektor.pdf + # 5.1.5 (tabell 5) - name: objektidentitet type: String subtype: UUID unique: true #width: 36 + #comment: globalt unik identitet för generaliserat objekt - name: skapad type: DateTime #tz: local + #comment: tidpunkt när objektet ändrades - name: lanskod type: Integer subtype: Int16 unique: true nullable: false + #comment: tvåsiffrig kod för län source: # https://www.lantmateriet.se/sv/geodata/vara-produkter/produktlista/topografi-250-nedladdning-vektor/ cache: administrativindelning_sverige.zip @@ -269,19 +274,24 @@ layers: create: geometry-type: MULTIPOLYGON fields: + # https://www.lantmateriet.se/globalassets/geodata/geodataprodukter/pb-topografi-250-nedladdning-vektor.pdf + # 5.1.6 (tabell 7) - name: objektidentitet type: String subtype: UUID unique: true #width: 36 + #comment: globalt unik identitet för generaliserat objekt - name: skapad type: DateTime #tz: local + #comment: tidpunkt när objektet ändrades - name: kommunkod type: Integer subtype: Int16 unique: true nullable: false + #comment: fyrsiffrig kod för kommun source: # https://www.lantmateriet.se/sv/geodata/vara-produkter/produktlista/topografi-250-nedladdning-vektor/ cache: administrativindelning_sverige.zip @@ -401,58 +411,73 @@ layers: create: geometry-type: MULTIPOLYGON fields: + # https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/yttre-granser-for-avverkningsanmalda-omraden---produktbeskrivning.pdf + # ”Ett urval görs så att endast de som är < 5 år och inte avverkade visas. Max 80 %.” - name: OBJECTID type: Integer unique: true nullable: false + #comment: unik identitet - name: Beteckn type: String width: 12 unique: true nullable: false + #comment: ärendebeteckning - name: ArendeAr type: Integer subtype: Int16 nullable: false + #comment: år anmälan/ansökan registrerades - name: Avverktyp type: String width: 254 nullable: false + #comment: vad anmälan/ansökan gäller - name: Skogstyp type: String width: 254 nullable: false + #comment: anger om avverkning är inom fjällnära skog eller normal skog - name: Inkomdatum type: Date nullable: false + #comment: anmälan/ansökan inkom datum - name: AnmaldHa # XXX convert to m²? type: Real subtype: Float32 nullable: false + #comment: areal anmält (ha) - name: SkogsodlHa type: Real subtype: Float32 nullable: false + #comment: areal plantering (ha) - name: NatforHa type: Real subtype: Float32 nullable: false + #comment: areal naturlig föryngring (ha) - name: AvvSasong type: String width: 254 nullable: false + #comment: avverkningssäsong - name: ArendeStat type: String width: 254 nullable: false + #comment: ärendestatus - name: AvvHa type: Real subtype: Float32 + #comment: avverkad areal (ha) - name: Avverkning type: String width: 254 nullable: false + #comment: Avverkningsamalan/NyAvverkningsanmalan source: download: url: 'https://geodpags.skogsstyrelsen.se/geodataport/data/sksAvverkAnm.zip' @@ -487,59 +512,74 @@ layers: create: geometry-type: MULTIPOLYGON fields: + # https://www.skogsstyrelsen.se/globalassets/sjalvservice/karttjanster/geodatatjanster/produktbeskrivningar/utforda-avverkningar---produktbeskrivning.pdf - name: OBJECTID type: Integer # XXX there are duplicates(!?) #unique: true nullable: false + #comment: unik identitet - name: Beteckn type: String width: 12 #unique: true # TODO: map "Visas ej" to NULL nullable: false + #comment: ärendebeteckning - name: ArendeAr type: Integer subtype: Int16 nullable: false + #comment: år anmälan/ansökan registrerades - name: Avverktyp type: String width: 254 nullable: false + #comment: vad anmälan/ansökan gäller - name: Skogstyp type: String width: 254 nullable: false + #comment: anger om avverkning är inom fjällnära skog, ädellövskog eller normal skog - name: AnmaldHa type: Real subtype: Float32 #nullable: false + #comment: areal anmält (ha) - name: SkogsodlHa type: Real subtype: Float32 nullable: false + #comment: areal plantering (ha) - name: NatforHa type: Real subtype: Float32 nullable: false + #comment: areal naturlig föryngring (ha) - name: Avvdatum type: Date nullable: false + #comment: datum för avverkning - name: KallaDatum type: Date + #comment: ursprung för datum för avverkning (vid ”Uppgift saknas” är det vanligen Skogsstyrelsens personal som registrerat datumet) - name: KallaAreal type: String width: 62 + #comment: ursprung för areal avverkning (vid ”Uppgift saknas” är det vanligen Skogsstyrelsens personal som registrerat datumet) - name: Forebild type: String width: 62 + #comment: namnet på den gamla bilden i skillnadsanalysen - name: Efterbild type: String width: 62 + #comment: namnet på den nya bilden i skillnadsanalysen - name: ArealHa type: Real subtype: Float32 nullable: false + #comment: areal för ytan (ha) sources: - source: diff --git a/webmap-import b/webmap-import index 56d907c..1bb235a 100755 --- a/webmap-import +++ b/webmap-import @@ -284,7 +284,7 @@ def parseSubFieldType(name): else: raise Exception(f'Unknown field subtype "{name}"') -# Parse timezone (WARN for GDAL ≥3.8 only) +# Parse timezone TZ_RE = re.compile(r'(?:UTC\b)?([\+\-]?)([0-9][0-9]):?([0-9][0-9])', flags=re.IGNORECASE) def parseTimeZone(tz): if tz is None: @@ -381,6 +381,7 @@ def validateSchema(layers, drvo=None, lco_defaults=None): elif k2 == 'alternativename' or k2 == 'alias': fld_def2['AlternativeName'] = v elif k2 == 'comment': + # (WARN support added in GDAL 3.7) fld_def2['Comment'] = v elif k2 == 'type': @@ -388,6 +389,7 @@ def validateSchema(layers, drvo=None, lco_defaults=None): elif k2 == 'subtype': fld_def2['SubType'] = parseSubFieldType(v) elif k2 == 'tz': + # (WARN support added in GDAL 3.8) fld_def2['TZFlag'] = parseTimeZone(v) elif k2 == 'width' and v is not None and isinstance(v, int): fld_def2['Width'] = v -- cgit v1.2.3