diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2024-06-20 15:34:18 +0200 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2024-06-20 16:06:04 +0200 |
commit | 279424f34102fb87c86f70cee1425dc7cdab3814 (patch) | |
tree | c90bee1b6b719d4c67467b408f12413271999321 | |
parent | baec26389dacb5541966baf7b1aaad2636b8882c (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.py | 15 | ||||
-rw-r--r-- | config.yml | 144 | ||||
-rwxr-xr-x | webmap-import | 10 |
3 files changed, 95 insertions, 74 deletions
@@ -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 @@ -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) |