From 0760d8d60dbeb6c9a5a26cecc667c26b72ab56e6 Mon Sep 17 00:00:00 2001 From: TULCHINSKI LIRAN Date: Wed, 9 Sep 2026 16:10:27 +0300 Subject: [PATCH 1/4] helm: updated the dem fields in order to deploy the app --- pycsw/plugins/profiles/mc_dem/mc_dem.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pycsw/plugins/profiles/mc_dem/mc_dem.py b/pycsw/plugins/profiles/mc_dem/mc_dem.py index acc38add..682b46dd 100644 --- a/pycsw/plugins/profiles/mc_dem/mc_dem.py +++ b/pycsw/plugins/profiles/mc_dem/mc_dem.py @@ -31,22 +31,31 @@ def __init__(self, model, namespaces, context): 'mc:ingestionDateUTC': Queryable(context.md_core_model['mappings']['pycsw:ingestionDateUTC'], 'mc:ingestionDateUTC'), 'mc:acquisitionTimeBeginUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_begin'], 'mc:acquisitionTimeBeginUTC'), 'mc:acquisitionTimeEndUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_end'], 'mc:acquisitionTimeEndUTC'), + 'mc:imagingTimeBeginUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_begin'], 'mc:imagingTimeBeginUTC'), + 'mc:imagingTimeEndUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_end'], 'mc:imagingTimeEndUTC'), 'mc:minResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:minResolutionDegree'], 'mc:minResolutionDegree'), 'mc:maxResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionDegree'], 'mc:maxResolutionDegree'), + 'mc:resolutionDeg': Queryable(context.md_core_model['mappings']['pycsw:resolutionDeg'], 'mc:resolutionDeg'), 'mc:minResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:minResolutionMeter'], 'mc:minResolutionMeter'), 'mc:maxResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionMeter'], 'mc:maxResolutionMeter'), + 'mc:resolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:resolutionMeter'], 'mc:resolutionMeter'), 'mc:minAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minAbsoluteAccuracyLEP90'], 'mc:minAbsoluteAccuracyLEP90'), 'mc:maxAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxAbsoluteAccuracyLEP90'], 'mc:maxAbsoluteAccuracyLEP90'), + 'mc:absoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:absoluteAccuracyLEP90'], 'mc:absoluteAccuracyLEP90'), 'mc:minRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minRelativeAccuracyLEP90'], 'mc:minRelativeAccuracyLEP90'), 'mc:maxRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxRelativeAccuracyLEP90'], 'mc:maxRelativeAccuracyLEP90'), + 'mc:relativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:relativeAccuracyLEP90'], 'mc:relativeAccuracyLEP90'), 'mc:minHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:minHorizontalAccuracyCEP90'], 'mc:minHorizontalAccuracyCEP90'), 'mc:maxHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:maxHorizontalAccuracyCEP90'], 'mc:maxHorizontalAccuracyCEP90'), 'mc:verticalType': Queryable(context.md_core_model['mappings']['pycsw:verticalType'], 'mc:verticalType'), + 'mc:undulationModel': Queryable(context.md_core_model['mappings']['pycsw:undulationModel'], 'mc:undulationModel'), 'mc:verticalSrsId': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsId'], 'mc:verticalSrsId'), 'mc:verticalSrsName': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsName'], 'mc:verticalSrsName'), 'mc:sensors': Queryable(context.md_core_model['mappings']['pycsw:sensorType'], 'mc:sensors'), 'mc:srsId': Queryable(context.md_core_model['mappings']['pycsw:CRS'], 'mc:srsId'), 'mc:srsName': Queryable(context.md_core_model['mappings']['pycsw:CRSName'], 'mc:srsName'), + 'mc:SRS': Queryable(context.md_core_model['mappings']['pycsw:CRS'], 'mc:SRS'), + 'mc:SRSName': Queryable(context.md_core_model['mappings']['pycsw:CRSName'], 'mc:SRSName'), 'mc:region': Queryable(context.md_core_model['mappings']['pycsw:region'], 'mc:region'), 'mc:dataType': Queryable(context.md_core_model['mappings']['pycsw:dataType'], 'mc:dataType'), 'mc:noDataValue': Queryable(context.md_core_model['mappings']['pycsw:noDataValue'], 'mc:noDataValue'), From d3fe3026c03f40c0b5f1a93b179f502e403e0ee5 Mon Sep 17 00:00:00 2001 From: TULCHINSKI LIRAN Date: Thu, 10 Sep 2026 16:22:24 +0300 Subject: [PATCH 2/4] chore: added v2 dem --- pycsw/plugins/profiles/mc_dem/mc_dem.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pycsw/plugins/profiles/mc_dem/mc_dem.py b/pycsw/plugins/profiles/mc_dem/mc_dem.py index 682b46dd..acc38add 100644 --- a/pycsw/plugins/profiles/mc_dem/mc_dem.py +++ b/pycsw/plugins/profiles/mc_dem/mc_dem.py @@ -31,31 +31,22 @@ def __init__(self, model, namespaces, context): 'mc:ingestionDateUTC': Queryable(context.md_core_model['mappings']['pycsw:ingestionDateUTC'], 'mc:ingestionDateUTC'), 'mc:acquisitionTimeBeginUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_begin'], 'mc:acquisitionTimeBeginUTC'), 'mc:acquisitionTimeEndUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_end'], 'mc:acquisitionTimeEndUTC'), - 'mc:imagingTimeBeginUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_begin'], 'mc:imagingTimeBeginUTC'), - 'mc:imagingTimeEndUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_end'], 'mc:imagingTimeEndUTC'), 'mc:minResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:minResolutionDegree'], 'mc:minResolutionDegree'), 'mc:maxResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionDegree'], 'mc:maxResolutionDegree'), - 'mc:resolutionDeg': Queryable(context.md_core_model['mappings']['pycsw:resolutionDeg'], 'mc:resolutionDeg'), 'mc:minResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:minResolutionMeter'], 'mc:minResolutionMeter'), 'mc:maxResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionMeter'], 'mc:maxResolutionMeter'), - 'mc:resolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:resolutionMeter'], 'mc:resolutionMeter'), 'mc:minAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minAbsoluteAccuracyLEP90'], 'mc:minAbsoluteAccuracyLEP90'), 'mc:maxAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxAbsoluteAccuracyLEP90'], 'mc:maxAbsoluteAccuracyLEP90'), - 'mc:absoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:absoluteAccuracyLEP90'], 'mc:absoluteAccuracyLEP90'), 'mc:minRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minRelativeAccuracyLEP90'], 'mc:minRelativeAccuracyLEP90'), 'mc:maxRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxRelativeAccuracyLEP90'], 'mc:maxRelativeAccuracyLEP90'), - 'mc:relativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:relativeAccuracyLEP90'], 'mc:relativeAccuracyLEP90'), 'mc:minHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:minHorizontalAccuracyCEP90'], 'mc:minHorizontalAccuracyCEP90'), 'mc:maxHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:maxHorizontalAccuracyCEP90'], 'mc:maxHorizontalAccuracyCEP90'), 'mc:verticalType': Queryable(context.md_core_model['mappings']['pycsw:verticalType'], 'mc:verticalType'), - 'mc:undulationModel': Queryable(context.md_core_model['mappings']['pycsw:undulationModel'], 'mc:undulationModel'), 'mc:verticalSrsId': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsId'], 'mc:verticalSrsId'), 'mc:verticalSrsName': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsName'], 'mc:verticalSrsName'), 'mc:sensors': Queryable(context.md_core_model['mappings']['pycsw:sensorType'], 'mc:sensors'), 'mc:srsId': Queryable(context.md_core_model['mappings']['pycsw:CRS'], 'mc:srsId'), 'mc:srsName': Queryable(context.md_core_model['mappings']['pycsw:CRSName'], 'mc:srsName'), - 'mc:SRS': Queryable(context.md_core_model['mappings']['pycsw:CRS'], 'mc:SRS'), - 'mc:SRSName': Queryable(context.md_core_model['mappings']['pycsw:CRSName'], 'mc:SRSName'), 'mc:region': Queryable(context.md_core_model['mappings']['pycsw:region'], 'mc:region'), 'mc:dataType': Queryable(context.md_core_model['mappings']['pycsw:dataType'], 'mc:dataType'), 'mc:noDataValue': Queryable(context.md_core_model['mappings']['pycsw:noDataValue'], 'mc:noDataValue'), From 6fa4bf56326f9cdec9a6c5df84f85bd1b2dc1944 Mon Sep 17 00:00:00 2001 From: TULCHINSKI LIRAN Date: Thu, 10 Sep 2026 16:22:49 +0300 Subject: [PATCH 3/4] chore: added v2 dem --- pycsw/plugins/profiles/mc_dem_v2/__init__.py | 0 pycsw/plugins/profiles/mc_dem_v2/mc_dem_v2.py | 86 ++++++++++++++++++ .../mc_dem_v2/schemas/mcdem-record.xsd | 87 +++++++++++++++++++ 3 files changed, 173 insertions(+) create mode 100644 pycsw/plugins/profiles/mc_dem_v2/__init__.py create mode 100644 pycsw/plugins/profiles/mc_dem_v2/mc_dem_v2.py create mode 100644 pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd diff --git a/pycsw/plugins/profiles/mc_dem_v2/__init__.py b/pycsw/plugins/profiles/mc_dem_v2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pycsw/plugins/profiles/mc_dem_v2/mc_dem_v2.py b/pycsw/plugins/profiles/mc_dem_v2/mc_dem_v2.py new file mode 100644 index 00000000..ecb2388d --- /dev/null +++ b/pycsw/plugins/profiles/mc_dem_v2/mc_dem_v2.py @@ -0,0 +1,86 @@ +from pycsw.plugins.profiles.base_profile.models.models import ProfileRepository, Queryable, TypenameModel +from pycsw.plugins.profiles.base_profile import base_profile + + +class MCDEMV2(base_profile.base_profile): + ''' MCDEMV2 class ''' + + def __init__(self, model, namespaces, context): + + prefix = 'mc' + typename = '%s:MCDEMRecord' % (prefix) + main_namespace = 'http://schema.mapcolonies.com/dem' + + schemas_pathes = [['plugins', 'profiles', 'mc_dem_v2', 'schemas', 'mcdem-record.xsd']] + + added_namespaces = { + prefix: main_namespace + } + + profileRepository: ProfileRepository = { + typename: TypenameModel( + added_namespaces[prefix], + { + 'MCDEMQueryables': { + 'mc:id': Queryable(context.md_core_model['mappings']['pycsw:Identifier'], 'mc:id'), + 'mc:productId': Queryable(context.md_core_model['mappings']['pycsw:ProductId'], 'mc:productId'), + 'mc:productType': Queryable(context.md_core_model['mappings']['pycsw:ProductType'], 'mc:productType'), + 'mc:productSubType': Queryable(context.md_core_model['mappings']['pycsw:productSubType'], 'mc:productSubType'), + 'mc:productName': Queryable(context.md_core_model['mappings']['pycsw:Title'], 'mc:productName'), + 'mc:productVersion': Queryable(context.md_core_model['mappings']['pycsw:ProductVersion'], 'mc:productVersion'), + 'mc:ingestionDateUTC': Queryable(context.md_core_model['mappings']['pycsw:ingestionDateUTC'], 'mc:ingestionDateUTC'), + 'mc:imagingTimeBeginUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_begin'], 'mc:imagingTimeBeginUTC'), + 'mc:imagingTimeEndUTC': Queryable(context.md_core_model['mappings']['pycsw:TempExtent_end'], 'mc:imagingTimeEndUTC'), + 'mc:minResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:minResolutionDegree'], 'mc:minResolutionDegree'), + 'mc:maxResolutionDegree': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionDegree'], 'mc:maxResolutionDegree'), + 'mc:resolutionDeg': Queryable(context.md_core_model['mappings']['pycsw:resolutionDeg'], 'mc:resolutionDeg'), + 'mc:minResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:minResolutionMeter'], 'mc:minResolutionMeter'), + 'mc:maxResolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:maxResolutionMeter'], 'mc:maxResolutionMeter'), + 'mc:resolutionMeter': Queryable(context.md_core_model['mappings']['pycsw:resolutionMeter'], 'mc:resolutionMeter'), + 'mc:minAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minAbsoluteAccuracyLEP90'], 'mc:minAbsoluteAccuracyLEP90'), + 'mc:maxAbsoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxAbsoluteAccuracyLEP90'], 'mc:maxAbsoluteAccuracyLEP90'), + 'mc:absoluteAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:absoluteAccuracyLEP90'], 'mc:absoluteAccuracyLEP90'), + 'mc:minRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:minRelativeAccuracyLEP90'], 'mc:minRelativeAccuracyLEP90'), + 'mc:maxRelativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:maxRelativeAccuracyLEP90'], 'mc:maxRelativeAccuracyLEP90'), + 'mc:relativeAccuracyLEP90': Queryable(context.md_core_model['mappings']['pycsw:relativeAccuracyLEP90'], 'mc:relativeAccuracyLEP90'), + 'mc:minHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:minHorizontalAccuracyCEP90'], 'mc:minHorizontalAccuracyCEP90'), + 'mc:maxHorizontalAccuracyCEP90': Queryable(context.md_core_model['mappings']['pycsw:maxHorizontalAccuracyCEP90'], 'mc:maxHorizontalAccuracyCEP90'), + 'mc:verticalType': Queryable(context.md_core_model['mappings']['pycsw:verticalType'], 'mc:verticalType'), + 'mc:undulationModel': Queryable(context.md_core_model['mappings']['pycsw:undulationModel'], 'mc:undulationModel'), + 'mc:verticalSrsId': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsId'], 'mc:verticalSrsId'), + 'mc:verticalSrsName': Queryable(context.md_core_model['mappings']['pycsw:verticalSrsName'], 'mc:verticalSrsName'), + 'mc:sensors': Queryable(context.md_core_model['mappings']['pycsw:sensorType'], 'mc:sensors'), + 'mc:SRS': Queryable(context.md_core_model['mappings']['pycsw:CRS'], 'mc:SRS'), + 'mc:SRSName': Queryable(context.md_core_model['mappings']['pycsw:CRSName'], 'mc:SRSName'), + 'mc:region': Queryable(context.md_core_model['mappings']['pycsw:region'], 'mc:region'), + 'mc:dataType': Queryable(context.md_core_model['mappings']['pycsw:dataType'], 'mc:dataType'), + 'mc:noDataValue': Queryable(context.md_core_model['mappings']['pycsw:noDataValue'], 'mc:noDataValue'), + 'mc:classification': Queryable(context.md_core_model['mappings']['pycsw:Classification'], 'mc:classification'), + 'mc:description': Queryable(context.md_core_model['mappings']['pycsw:Abstract'], 'mc:description'), + 'mc:areaOrPoint': Queryable(context.md_core_model['mappings']['pycsw:areaOrPoint'], 'mc:areaOrPoint'), + 'mc:footprint': Queryable(context.md_core_model['mappings']['pycsw:footprint'], 'mc:footprint'), + 'mc:links': Queryable(context.md_core_model['mappings']['pycsw:Links'], 'mc:links'), + 'mc:updateDateUTC': Queryable(context.md_core_model['mappings']['pycsw:updateDateUTC'], 'mc:updateDateUTC'), + 'mc:producerName': Queryable(context.md_core_model['mappings']['pycsw:Creator'], 'mc:producerName'), + 'mc:type': Queryable(context.md_core_model['mappings']['pycsw:Type'], 'mc:type'), + 'mc:insertDateUTC': Queryable(context.md_core_model['mappings']['pycsw:InsertDate'], 'mc:insertDateUTC'), + 'mc:keywords': Queryable(context.md_core_model['mappings']['pycsw:Keywords'], 'mc:keywords'), + 'mc:boundingBox': Queryable(context.md_core_model['mappings']['pycsw:BoundingBox'], 'mc:boundingBox') + } + }) + } + + super().__init__(name='mc_dem_v2', + version='2.0.0', + title='Map Colonies DEM v2 profile of CSW', + url='https://github.com/MapColonies', + typename=typename, + model=model, + core_namespaces=namespaces, + added_namespaces=added_namespaces, + repositories=profileRepository, + schemas_paths=schemas_pathes, + context=context, + prefix=prefix, + main_namespace=main_namespace + ) diff --git a/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd b/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd new file mode 100644 index 00000000..f6721a22 --- /dev/null +++ b/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd @@ -0,0 +1,87 @@ + From b23a503b872ba5e1163e64029a23dcd670e25576 Mon Sep 17 00:00:00 2001 From: TULCHINSKI LIRAN Date: Thu, 10 Sep 2026 17:30:04 +0300 Subject: [PATCH 4/4] chore: update mc_dem_v2 XSD schema with v2 field names Co-Authored-By: Claude Sonnet 4.6 --- .../mc_dem_v2/schemas/mcdem-record.xsd | 120 +++++++++++------- 1 file changed, 75 insertions(+), 45 deletions(-) diff --git a/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd b/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd index f6721a22..3d40bb43 100644 --- a/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd +++ b/pycsw/plugins/profiles/mc_dem_v2/schemas/mcdem-record.xsd @@ -1,44 +1,59 @@