aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2024-06-20 15:34:18 +0200
committerGuilhem Moulin <guilhem@fripost.org>2024-06-20 16:06:04 +0200
commit279424f34102fb87c86f70cee1425dc7cdab3814 (patch)
treec90bee1b6b719d4c67467b408f12413271999321
parentbaec26389dacb5541966baf7b1aaad2636b8882c (diff)
Conditionally use GetComment()/SetComment() depending on the GDAL version.
OGRFieldDefn: add GetComment() / SetComment() methods were added in OGR 3.7.0, cf. https://github.com/OSGeo/gdal/blob/master/NEWS.md#core-5 . Don't comment out comments on field definitions. Instead we check the GDAL/OGR version and ignore comments on field definitions if the OGR version is too old.
-rw-r--r--common.py15
-rw-r--r--config.yml144
-rwxr-xr-xwebmap-import10
3 files changed, 95 insertions, 74 deletions
diff --git a/common.py b/common.py
index 247e733..78fa4fd 100644
--- a/common.py
+++ b/common.py
@@ -186,6 +186,21 @@ def format_time(s):
h, m = divmod(m, 60)
return f'{h:02d}:{m:02d}:{s + fs:06.3f}'
+# Return a boolean indicating whether the installer GDAL version is
+# greater than or equal to the provider (maj, min, rev) triplet.
+def gdal_version_min(maj=0, min=0, rev=0):
+ if maj < 1 or (maj == 1 and min < 10):
+ # GDAL_VERSION_NUM() macro was changed in 1.10. That version
+ # was released in 2013 so we blindly assume the installer
+ # version is more recent
+ return True
+
+ from osgeo import gdal
+ version_cur = int(gdal.VersionInfo());
+ # cf. GDAL_COMPUTE_VERSION(maj,min,rev) in gcore/gdal_version.h.in
+ version_min = maj*1000000 + min*10000 + rev*100
+ return version_min <= version_cur
+
######
# The function definitions below are taken from cpython's source code
diff --git a/config.yml b/config.yml
index 6f9bf91..d95e663 100644
--- a/config.yml
+++ b/config.yml
@@ -261,17 +261,17 @@ layers:
subtype: UUID
unique: true
#width: 36
- #comment: Globalt unik identitet för generaliserat objekt
+ comment: Globalt unik identitet för generaliserat objekt
- name: skapad
type: DateTime
#tz: local
- #comment: Tidpunkt när objektet ändrades
+ comment: Tidpunkt när objektet ändrades
- name: lanskod
type: Integer
subtype: Int16
unique: true
nullable: false
- #comment: Tvåsiffrig kod för län
+ 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
@@ -299,17 +299,17 @@ layers:
subtype: UUID
unique: true
#width: 36
- #comment: Globalt unik identitet för generaliserat objekt
+ comment: Globalt unik identitet för generaliserat objekt
- name: skapad
type: DateTime
#tz: local
- #comment: Tidpunkt när objektet ändrades
+ comment: Tidpunkt när objektet ändrades
- name: kommunkod
type: Integer
subtype: Int16
unique: true
nullable: false
- #comment: Fyrsiffrig kod för kommun
+ comment: Fyrsiffrig kod för kommun
source:
# https://www.lantmateriet.se/sv/geodata/vara-produkter/produktlista/topografi-250-nedladdning-vektor/
cache: administrativindelning_sverige.zip
@@ -435,67 +435,67 @@ layers:
type: Integer
unique: true
nullable: false
- #comment: Unik identitet
+ comment: Unik identitet
- name: Beteckn
type: String
width: 12
unique: true
nullable: false
- #comment: Ärendebeteckning
+ comment: Ärendebeteckning
- name: ArendeAr
type: Integer
subtype: Int16
nullable: false
- #comment: År anmälan/ansökan registrerades
+ comment: År anmälan/ansökan registrerades
- name: Avverktyp
type: String
width: 254
nullable: false
- #comment: Vad anmälan/ansökan gäller
+ 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
+ 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
+ comment: Anmälan/ansökan inkom datum
- name: AnmaldHa
# XXX convert to m²?
type: Real
subtype: Float32
nullable: false
- #comment: Areal anmält (ha)
+ comment: Areal anmält (ha)
- name: SkogsodlHa
type: Real
subtype: Float32
nullable: false
- #comment: Areal plantering (ha)
+ comment: Areal plantering (ha)
- name: NatforHa
type: Real
subtype: Float32
nullable: false
- #comment: Areal naturlig föryngring (ha)
+ comment: Areal naturlig föryngring (ha)
- name: AvvSasong
type: String
width: 254
nullable: false
- #comment: Avverkningssäsong
+ comment: Avverkningssäsong
- name: ArendeStat
type: String
width: 254
nullable: false
- #comment: Ärendestatus
+ comment: Ärendestatus
- name: AvvHa
type: Real
subtype: Float32
- #comment: Avverkad areal (ha)
+ comment: Avverkad areal (ha)
- name: Avverkning
type: String
width: 254
nullable: false
- #comment: Avverkningsamalan/NyAvverkningsanmalan
+ comment: Avverkningsamalan/NyAvverkningsanmalan
source:
download:
url: 'https://geodpags.skogsstyrelsen.se/geodataport/data/sksAvverkAnm.zip'
@@ -535,68 +535,68 @@ layers:
type: Integer
unique: true
nullable: false
- #comment: Unik identitet
+ comment: Unik identitet
- name: Beteckn
type: String
width: 12
unique: true
# obfuscated codes are mapped to NULL
nullable: true
- #comment: Ärendebeteckning
+ comment: Ärendebeteckning
- name: ArendeAr
type: Integer
subtype: Int16
nullable: false
- #comment: År anmälan/ansökan registrerades
+ comment: År anmälan/ansökan registrerades
- name: Avverktyp
type: String
width: 254
nullable: false
- #comment: Vad anmälan/ansökan gäller
+ 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
+ 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)
+ comment: Areal anmält (ha)
- name: SkogsodlHa
type: Real
subtype: Float32
nullable: false
- #comment: Areal plantering (ha)
+ comment: Areal plantering (ha)
- name: NatforHa
type: Real
subtype: Float32
nullable: false
- #comment: Areal naturlig föryngring (ha)
+ comment: Areal naturlig föryngring (ha)
- name: Avvdatum
type: Date
nullable: false
- #comment: Datum för avverkning
+ 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)
+ 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)
+ 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
+ comment: Namnet på den gamla bilden i skillnadsanalysen
- name: Efterbild
type: String
width: 62
- #comment: Namnet på den nya bilden i skillnadsanalysen
+ comment: Namnet på den nya bilden i skillnadsanalysen
- name: ArealHa
type: Real
subtype: Float32
nullable: false
- #comment: Areal för ytan (ha)
+ comment: Areal för ytan (ha)
sources:
- source:
@@ -769,17 +769,17 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Applicant
type: String
nullable: false
width: 254
- #comment: Sökandens namn
+ comment: Sökandens namn
- name: ApplicationDate
type: Date
nullable: false
@@ -791,7 +791,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -823,25 +823,25 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Owner
type: String
nullable: false
width: 254
- #comment: Ägares namn
+ comment: Ägares namn
- name: ValidFrom
type: Date
nullable: false
- #comment: När tillståndets giltighet börjar
+ comment: När tillståndets giltighet börjar
- name: ValidTo
type: Date
nullable: false
- #comment: När tillståndets giltighet slutar
+ comment: När tillståndets giltighet slutar
- name: DiaryNr
type: String
unique: true
@@ -849,7 +849,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -884,10 +884,10 @@ layers:
type: String
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: DecisionDate
type: Date
- #comment: Beslutsdatum
+ comment: Beslutsdatum
- name: DiaryNr
type: String
unique: true
@@ -895,7 +895,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -931,17 +931,17 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Applicant
type: String
nullable: false
width: 254
- #comment: Sökandens namn
+ comment: Sökandens namn
- name: ApplicationDate
type: Date
nullable: false
@@ -953,7 +953,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -985,17 +985,17 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Owner
type: String
nullable: false
width: 254
- #comment: Ägares namn
+ comment: Ägares namn
- name: LicenceID
type: String
unique: true
@@ -1004,11 +1004,11 @@ layers:
- name: ValidFrom
type: Date
nullable: false
- #comment: När tillståndets giltighet börjar
+ comment: När tillståndets giltighet börjar
- name: ValidTo
type: Date
nullable: false
- #comment: När tillståndets giltighet slutar
+ comment: När tillståndets giltighet slutar
- name: DiaryNr
type: String
unique: true
@@ -1016,7 +1016,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -1080,17 +1080,17 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Applicant
type: String
nullable: false
width: 254
- #comment: Sökandens namn
+ comment: Sökandens namn
- name: ApplicationDate
type: Date
nullable: false
@@ -1102,7 +1102,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -1134,17 +1134,17 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
nullable: false
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Owner
type: String
nullable: false
width: 254
- #comment: Ägares namn
+ comment: Ägares namn
- name: LicenceID
type: String
unique: true
@@ -1153,11 +1153,11 @@ layers:
- name: ValidFrom
type: Date
nullable: false
- #comment: När tillståndets giltighet börjar
+ comment: När tillståndets giltighet börjar
- name: ValidTo
type: Date
nullable: false
- #comment: När tillståndets giltighet slutar
+ comment: När tillståndets giltighet slutar
- name: DiaryNr
type: String
unique: true
@@ -1165,7 +1165,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
@@ -1202,24 +1202,24 @@ layers:
unique: true
nullable: false
width: 254
- #comment: Benämning på området
+ comment: Benämning på området
- name: Mineral
type: String
width: 254
- #comment: Koncessionsmineral
+ comment: Koncessionsmineral
- name: Owner
type: String
nullable: false
width: 254
- #comment: Ägares namn
+ comment: Ägares namn
- name: ValidFrom
type: Date
nullable: false
- #comment: När tillståndets giltighet börjar
+ comment: När tillståndets giltighet börjar
- name: ValidTo
type: Date
nullable: false
- #comment: När tillståndets giltighet slutar
+ comment: När tillståndets giltighet slutar
- name: DiaryNr
type: String
unique: true
@@ -1227,7 +1227,7 @@ layers:
- name: LastUpdated
type: Date
nullable: false
- #comment: Datum för senaste uppdatering
+ comment: Datum för senaste uppdatering
source:
download:
module: webmap-download-mrr
diff --git a/webmap-import b/webmap-import
index 8a2848d..901360d 100755
--- a/webmap-import
+++ b/webmap-import
@@ -340,6 +340,9 @@ def validateSchema(layers, drvo=None, lco_defaults=None):
drvoSupportsNotNULLFields = getMetadataItem(drvo, GDAL_DCAP_NOTNULL_FIELDS)
drvoSupportsUniqueFields = getMetadataItem(drvo, GDAL_DCAP_UNIQUE_FIELDS)
+ # Cf. https://github.com/OSGeo/gdal/blob/master/NEWS.md
+ hasCommentSupport = common.gdal_version_min(maj=3, min=7) # GetComment()/SetComment() added in 3.7.0
+
for layername, layerdef in layers.items():
create = layerdef.get('create', None)
if create is None or len(create) < 1:
@@ -381,8 +384,11 @@ 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
+ if hasCommentSupport:
+ fld_def2['Comment'] = v
+ else:
+ logging.debug('Ignoring Comment="%s" on field "%s" (OGR v%s is too old)',
+ v, fld_name, gdal.__version__)
elif k2 == 'type':
fld_def2['Type'] = parseFieldType(v)