aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2024-06-11 19:28:10 +0200
committerGuilhem Moulin <guilhem@fripost.org>2024-06-11 20:47:22 +0200
commitee95a54e4f70fd7f911e8a2cacfb342c85213937 (patch)
treef3c8927a346024f249a299cbc1b80facc828e2b7
parent13b0de59786afa7b64e6807a4a658e54f389fd18 (diff)
config.yml: Add field comments.
(Commented out for now since Bookworm has only GDAL v3.6.)
-rw-r--r--config.yml40
-rwxr-xr-xwebmap-import4
2 files changed, 43 insertions, 1 deletions
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