diff --git a/public_data/admin/DataSourceAdmin.py b/public_data/admin/DataSourceAdmin.py deleted file mode 100644 index 660bc152d..000000000 --- a/public_data/admin/DataSourceAdmin.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.contrib.gis import admin - -from public_data.models import DataSource - - -@admin.register(DataSource) -class DataSourceAdmin(admin.ModelAdmin): - model = DataSource - list_display = ( - "dataset", - "name", - "official_land_id", - "millesimes", - ) - search_fields = ( - "productor", - "dataset", - "name", - "official_land_id", - ) - ordering = ("productor", "dataset", "name") diff --git a/public_data/admin/__init__.py b/public_data/admin/__init__.py index 9c45d9d89..d275a5c6d 100644 --- a/public_data/admin/__init__.py +++ b/public_data/admin/__init__.py @@ -1,7 +1,6 @@ from .CeremaAdmin import CeremaAdmin from .CommuneAdmin import CommuneAdmin from .CommunePopAdmin import CommunePopAdmin -from .DataSourceAdmin import DataSourceAdmin from .DepartementAdmin import DepartementAdmin from .EpciAdmin import EpciAdmin from .OcsgeAdmin import OcsgeAdmin @@ -19,7 +18,6 @@ "CeremaAdmin", "CommuneAdmin", "CommunePopAdmin", - "DataSourceAdmin", "DepartementAdmin", "EpciAdmin", "OcsgeAdmin", diff --git a/public_data/factories.py b/public_data/factories.py deleted file mode 100644 index 1ab11dcb2..000000000 --- a/public_data/factories.py +++ /dev/null @@ -1,61 +0,0 @@ -import logging -import re -import secrets -import string -from typing import Any, Callable, Dict, Tuple - -from public_data.models import DataSource - -logger = logging.getLogger(__name__) - - -class LayerMapperFactory: - def __init__(self, data_source: DataSource): - self.data_source = data_source - - def get_class_properties(self, module_name: str) -> Dict[str, Any]: - properties = { - "Meta": type("Meta", (), {"proxy": True}), - "shape_file_path": self.data_source.path, - "departement_id": self.data_source.official_land_id, - "srid": self.data_source.srid, - "__module__": module_name, - } - if self.data_source.mapping: - properties["mapping"] = self.data_source.mapping - return properties - - def get_base_class(self) -> Tuple: - """Return the base class from which the proxy should inherit from. - - The base class returned should be a child of AutoLoadMixin: - >>> if not issubclass(base_class, AutoLoadMixin): - >>> raise TypeError(f"Base class {base_class} should inherit from AutoLoadMixin.") - """ - raise NotImplementedError("You need to define which base class to use.") - - def get_class_name(self) -> str: - """Build a class name in KamelCase. - - Naming rule: Auto{data_name}{official_land_id}{year} - Example: AutoOcsgeDiff3220182021 - """ - unique_token = "".join(secrets.choice(string.ascii_lowercase) for _ in range(5)) - raw_words = [ - "Auto", - unique_token, - self.data_source.name, - self.data_source.official_land_id, - ] + list(map(str, self.data_source.millesimes)) - splited_words = [sub_word for word in raw_words for sub_word in word.split("_")] - cleaned_words = [re.sub(r"[\W_]", "", word) for word in splited_words] - class_name = "".join([word.capitalize() for word in cleaned_words if word]) - return class_name - - def get_layer_mapper_proxy_class(self, module_name: str = __name__) -> Callable: - logger.info("Create class for module=%s", module_name) - return type( - self.get_class_name(), - self.get_base_class(), - self.get_class_properties(module_name), - ) diff --git a/public_data/loaders.py b/public_data/loaders.py deleted file mode 100644 index 51e0ef0af..000000000 --- a/public_data/loaders.py +++ /dev/null @@ -1,325 +0,0 @@ -from typing import Self - -from django.contrib.gis.db.models.functions import Area -from django.db.models import DecimalField, F -from django.db.models.functions import Cast - -from public_data.models import ( - SRID, - AutoLoadMixin, - CouvertureUsageMatrix, - Ocsge, - OcsgeDiff, - ZoneConstruite, -) -from public_data.models.cerema import Cerema -from utils.db import DynamicSRIDTransform - - -# syntaxic sugar to avoid writing long line of code -# cache has been added to matrix_dict method -def get_matrix(cs, us): - return CouvertureUsageMatrix().matrix_dict()[(cs, us)] - - -class AutoOcsge(AutoLoadMixin, Ocsge): - class Meta: - proxy = True - - mapping = { - "id_source": "ID", - "couverture": "CODE_CS", - "usage": "CODE_US", - "mpoly": "MULTIPOLYGON", - } - - def save(self, *args, **kwargs) -> Self: - self.year = self.__class__._year - self.departement = self.__class__._departement - self.srid_source = self.srid - - self.matrix = get_matrix(self.couverture, self.usage) - self.is_artificial = bool(self.matrix.is_artificial) - - if self.matrix.couverture: - self.couverture_label = self.matrix.couverture.label - if self.matrix.usage: - self.usage_label = self.matrix.usage.label - - return super().save(*args, **kwargs) - - @classmethod - def clean_data(cls) -> None: - cls.objects.filter( - departement=cls._departement, - year=cls._year, - ).delete() - - @classmethod - def calculate_fields(cls) -> None: - cls.objects.filter( - departement=cls._departement, - year=cls._year, - ).update( - surface=Cast( - Area(DynamicSRIDTransform("mpoly", "srid_source")), - DecimalField(max_digits=15, decimal_places=4), - ) - ) - - -class AutoOcsgeDiff(AutoLoadMixin, OcsgeDiff): - class Meta: - proxy = True - - @classmethod - @property - def mapping(cls) -> dict[str, str]: - return { - "cs_old": f"CS_{cls._year_old}", - "us_old": f"US_{cls._year_old}", - "cs_new": f"CS_{cls._year_new}", - "us_new": f"US_{cls._year_new}", - "mpoly": "MULTIPOLYGON", - } - - def before_save(self) -> None: - self.year_new = self.__class__._year_new - self.year_old = self.__class__._year_old - self.departement = self.__class__._departement - self.srid_source = self.srid - - self.new_matrix = get_matrix(self.cs_new, self.us_new) - self.new_is_artif = bool(self.new_matrix.is_artificial) - - if self.new_matrix.couverture: - self.cs_new_label = self.new_matrix.couverture.label - - if self.new_matrix.usage: - self.us_new_label = self.new_matrix.usage.label - - self.old_matrix = get_matrix(self.cs_old, self.us_old) - self.old_is_artif = bool(self.old_matrix.is_artificial) - - if self.old_matrix.couverture: - self.cs_old_label = self.old_matrix.couverture.label - if self.old_matrix.usage: - self.us_old_label = self.old_matrix.usage.label - - self.is_new_artif = not self.old_is_artif and self.new_is_artif - self.is_new_natural = self.old_is_artif and not self.new_is_artif - - @classmethod - def calculate_fields(cls) -> None: - cls.objects.filter( - departement=cls._departement, - year_new=cls._year_new, - year_old=cls._year_old, - ).update( - surface=Cast( - Area(DynamicSRIDTransform("mpoly", "srid_source")), - DecimalField(max_digits=15, decimal_places=4), - ) - ) - - @classmethod - def clean_data(cls) -> None: - cls.objects.filter( - departement=cls._departement, - year_new=cls._year_new, - year_old=cls._year_old, - ).delete() - - -class AutoZoneConstruite(AutoLoadMixin, ZoneConstruite): - class Meta: - proxy = True - - mapping = { - "id_source": "ID", - "millesime": "MILLESIME", - "mpoly": "MULTIPOLYGON", - } - - def save(self, *args, **kwargs) -> Self: - self.year = int(self._year) - self.departement = self.__class__._departement - self.srid_source = self.srid - self.surface = self.mpoly.transform(self.srid, clone=True).area - self.departement = self._departement - return super().save(*args, **kwargs) - - @classmethod - def clean_data(cls) -> None: - cls.objects.filter( - departement=cls._departement, - year=cls._year, - ).delete() - - -class BaseLoadCerema(AutoLoadMixin, Cerema): - class Meta: - proxy = True - - mapping = { - "city_insee": "IDCOM", - "city_name": "IDCOMTXT", - "region_id": "IDREG", - "region_name": "IDREGTXT", - "dept_id": "IDDEP", - "dept_name": "IDDEPTXT", - "epci_id": "EPCI22", - "epci_name": "EPCI22TXT", - "scot": "SCOT", - "naf09art10": "NAF09ART10", - "art09act10": "ART09ACT10", - "art09hab10": "ART09HAB10", - "art09mix10": "ART09MIX10", - "art09rou10": "ART09ROU10", - "art09fer10": "ART09FER10", - "art09inc10": "ART09INC10", - "naf10art11": "NAF10ART11", - "art10act11": "ART10ACT11", - "art10hab11": "ART10HAB11", - "art10mix11": "ART10MIX11", - "art10rou11": "ART10ROU11", - "art10fer11": "ART10FER11", - "art10inc11": "ART10INC11", - "naf11art12": "NAF11ART12", - "art11act12": "ART11ACT12", - "art11hab12": "ART11HAB12", - "art11mix12": "ART11MIX12", - "art11rou12": "ART11ROU12", - "art11fer12": "ART11FER12", - "art11inc12": "ART11INC12", - "naf12art13": "NAF12ART13", - "art12act13": "ART12ACT13", - "art12hab13": "ART12HAB13", - "art12mix13": "ART12MIX13", - "art12rou13": "ART12ROU13", - "art12fer13": "ART12FER13", - "art12inc13": "ART12INC13", - "naf13art14": "NAF13ART14", - "art13act14": "ART13ACT14", - "art13hab14": "ART13HAB14", - "art13mix14": "ART13MIX14", - "art13rou14": "ART13ROU14", - "art13fer14": "ART13FER14", - "art13inc14": "ART13INC14", - "naf14art15": "NAF14ART15", - "art14act15": "ART14ACT15", - "art14hab15": "ART14HAB15", - "art14mix15": "ART14MIX15", - "art14rou15": "ART14ROU15", - "art14fer15": "ART14FER15", - "art14inc15": "ART14INC15", - "naf15art16": "NAF15ART16", - "art15act16": "ART15ACT16", - "art15hab16": "ART15HAB16", - "art15mix16": "ART15MIX16", - "art15rou16": "ART15ROU16", - "art15fer16": "ART15FER16", - "art15inc16": "ART15INC16", - "naf16art17": "NAF16ART17", - "art16act17": "ART16ACT17", - "art16hab17": "ART16HAB17", - "art16mix17": "ART16MIX17", - "art16rou17": "ART16ROU17", - "art16fer17": "ART16FER17", - "art16inc17": "ART16INC17", - "naf17art18": "NAF17ART18", - "art17act18": "ART17ACT18", - "art17hab18": "ART17HAB18", - "art17mix18": "ART17MIX18", - "art17rou18": "ART17ROU18", - "art17fer18": "ART17FER18", - "art17inc18": "ART17INC18", - "naf18art19": "NAF18ART19", - "art18act19": "ART18ACT19", - "art18hab19": "ART18HAB19", - "art18mix19": "ART18MIX19", - "art18rou19": "ART18ROU19", - "art18fer19": "ART18FER19", - "art18inc19": "ART18INC19", - "naf19art20": "NAF19ART20", - "art19act20": "ART19ACT20", - "art19hab20": "ART19HAB20", - "art19mix20": "ART19MIX20", - "art19rou20": "ART19ROU20", - "art19fer20": "ART19FER20", - "art19inc20": "ART19INC20", - "naf20art21": "NAF20ART21", - "art20act21": "ART20ACT21", - "art20hab21": "ART20HAB21", - "art20mix21": "ART20MIX21", - "art20rou21": "ART20ROU21", - "art20fer21": "ART20FER21", - "art20inc21": "ART20INC21", - "naf21art22": "NAF21ART22", - "art21act22": "ART21ACT22", - "art21hab22": "ART21HAB22", - "art21mix22": "ART21MIX22", - "art21rou22": "ART21ROU22", - "art21fer22": "ART21FER22", - "art21inc22": "ART21INC22", - "mpoly": "MULTIPOLYGON", - # mis dans la table tel quel (pas d'usage à date) - "naf09art22": "NAF09ART22", - "art09act22": "ART09ACT22", - "art09hab22": "ART09HAB22", - "art09mix22": "ART09MIX22", - "art09inc22": "ART09INC22", - "art09rou22": "ART09ROU22", - "art09fer22": "ART09FER22", - "artcom2020": "ARTCOM2020", - "pop13": "POP13", - "pop19": "POP19", - "pop1319": "POP1319", - "men13": "MEN13", - "men19": "MEN19", - "men1319": "MEN1319", - "emp13": "EMP13", - "emp19": "EMP19", - "emp1319": "EMP1319", - "mepart1319": "MEPART1319", - "menhab1319": "MENHAB1319", - "artpop1319": "ARTPOP1319", - "surfcom2022": "SURFCOM202", - "aav2020": "AAV2020", - "aav2020txt": "AAV2020TXT", - "aav2020_ty": "AAV2020_TY", - } - - def __str__(self): - return f"{self.region_name}-{self.dept_name}-{self.city_name}({self.city_insee})" - - @classmethod - def calculate_fields(cls): - """Calculate fields to speedup user consultation.""" - fields = cls.get_art_field(2011, 2020) - kwargs = { - "naf11art21": sum([F(f) for f in fields]), - "art11hab21": sum([F(f.replace("art", "hab").replace("naf", "art")) for f in fields]), - "art11act21": sum([F(f.replace("art", "act").replace("naf", "art")) for f in fields]), - } - cls.objects.update(**kwargs) - - @classmethod - def clean_data(cls): - cls.objects.filter(srid_source=SRID.LAMBERT_93).delete() - - -class BaseLoadCeremaDromCom(BaseLoadCerema): - """ - Base class for DROM COM - NOTE: we exclude surfcom2022 and artcom2020 because they are not available for DROM COM - """ - - class Meta: - proxy = True - - mapping = {k: v for k, v in BaseLoadCerema.mapping.items() if k not in ["surfcom2022", "artcom2020"]} - - @classmethod - def clean_data(cls) -> None: - return cls.objects.filter(dept_id=cls.departement_id).delete() diff --git a/public_data/management/commands/load_cerema.py b/public_data/management/commands/load_cerema.py deleted file mode 100644 index e25e03674..000000000 --- a/public_data/management/commands/load_cerema.py +++ /dev/null @@ -1,65 +0,0 @@ -import logging -from typing import Callable, Tuple - -from django.core.management.base import BaseCommand - -from public_data import loaders -from public_data.factories import LayerMapperFactory -from public_data.models import DataSource - -logger = logging.getLogger("management.commands") - - -class CeremaFactory(LayerMapperFactory): - def get_base_class(self) -> Tuple[Callable]: - base_class = loaders.BaseLoadCeremaDromCom - if self.data_source.official_land_id == "MetropoleEtCorse": - base_class = loaders.BaseLoadCerema - return (base_class,) - - -class Command(BaseCommand): - help = "Load data from Cerema" - - def add_arguments(self, parser): - parser.add_argument( - "--verbose", - action="store_true", - help="reduce output", - ) - parser.add_argument( - "--official_land_ids", - nargs="+", - type=int, - help="Select what to to load using official land id source's property", - ) - - def get_queryset(self): - """Filter sources of data to return only Cerema sources and MAJIC dataset.""" - return DataSource.objects.filter( - productor=DataSource.ProductorChoices.CEREMA, - dataset=DataSource.DatasetChoices.MAJIC, - ) - - def handle(self, *args, **options): - logger.info("Start load_cerema") - - sources = self.get_queryset() - - if options.get("official_land_ids"): - logger.info("filter on official_land_ids=%s", options["official_land_ids"]) - sources = sources.filter(official_land_id__in=options["official_land_ids"]) - - if not sources.exists(): - logger.warning("No data source found") - return - - logger.info("Nb sources found=%d", sources.count()) - - for source in sources: - factory = CeremaFactory(source) - layer_mapper_proxy_class = factory.get_layer_mapper_proxy_class(module_name=__name__) - logger.info("Process %s", layer_mapper_proxy_class.__name__) - layer_mapper_proxy_class.load() - - logger.info("End load_cerema") diff --git a/public_data/migrations/0012_ocsge2015.py b/public_data/migrations/0012_ocsge2015.py index a59e314b7..d2c2813a4 100644 --- a/public_data/migrations/0012_ocsge2015.py +++ b/public_data/migrations/0012_ocsge2015.py @@ -60,7 +60,6 @@ class Migration(migrations.Migration): ], bases=( models.Model, - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, ), ), diff --git a/public_data/migrations/0019_ocsge2018.py b/public_data/migrations/0019_ocsge2018.py index e102ccaae..822a6e78a 100644 --- a/public_data/migrations/0019_ocsge2018.py +++ b/public_data/migrations/0019_ocsge2018.py @@ -103,7 +103,6 @@ class Migration(migrations.Migration): }, bases=( models.Model, - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, ), ), diff --git a/public_data/migrations/0022_auto_20211025_2135.py b/public_data/migrations/0022_auto_20211025_2135.py index 8331cfd6e..34c22a75a 100644 --- a/public_data/migrations/0022_auto_20211025_2135.py +++ b/public_data/migrations/0022_auto_20211025_2135.py @@ -111,7 +111,6 @@ class Migration(migrations.Migration): ], bases=( models.Model, - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, ), ), diff --git a/public_data/migrations/0028_consocerema.py b/public_data/migrations/0028_consocerema.py index 162c1762d..5f3f65679 100644 --- a/public_data/migrations/0028_consocerema.py +++ b/public_data/migrations/0028_consocerema.py @@ -59,7 +59,6 @@ class Migration(migrations.Migration): ), ], bases=( - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, models.Model, ), diff --git a/public_data/migrations/0031_auto_20211217_2220.py b/public_data/migrations/0031_auto_20211217_2220.py index 9a9759530..ce4d41b78 100644 --- a/public_data/migrations/0031_auto_20211217_2220.py +++ b/public_data/migrations/0031_auto_20211217_2220.py @@ -115,7 +115,6 @@ class Migration(migrations.Migration): ), ], bases=( - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, models.Model, ), diff --git a/public_data/migrations/0047_ocsgediff.py b/public_data/migrations/0047_ocsgediff.py index 4c8a41dcc..23e6116cd 100644 --- a/public_data/migrations/0047_ocsgediff.py +++ b/public_data/migrations/0047_ocsgediff.py @@ -150,7 +150,6 @@ class Migration(migrations.Migration): ("is_new_naf", models.BooleanField(blank=True, null=True)), ], bases=( - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, models.Model, ), diff --git a/public_data/migrations/0048_auto_20220504_1041.py b/public_data/migrations/0048_auto_20220504_1041.py index 8caf53534..7d1a16290 100644 --- a/public_data/migrations/0048_auto_20220504_1041.py +++ b/public_data/migrations/0048_auto_20220504_1041.py @@ -51,7 +51,6 @@ class Migration(migrations.Migration): ), ], bases=( - public_data.models.mixins.AutoLoadMixin, public_data.models.mixins.DataColorationMixin, models.Model, ), diff --git a/public_data/migrations/0064_artificialarea.py b/public_data/migrations/0064_artificialarea.py index 330286d5f..05edb32f2 100644 --- a/public_data/migrations/0064_artificialarea.py +++ b/public_data/migrations/0064_artificialarea.py @@ -53,7 +53,6 @@ class Migration(migrations.Migration): ), ], bases=( - public_data.models.mixins.TruncateTableMixin, public_data.models.mixins.DataColorationMixin, models.Model, ), diff --git a/public_data/migrations/0190_delete_datasource_delete_refplan.py b/public_data/migrations/0190_delete_datasource_delete_refplan.py new file mode 100644 index 000000000..5c3a8c406 --- /dev/null +++ b/public_data/migrations/0190_delete_datasource_delete_refplan.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.13 on 2024-10-02 18:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("public_data", "0189_alter_commune_options_alter_departement_options_and_more"), + ] + + operations = [ + migrations.DeleteModel( + name="DataSource", + ), + migrations.DeleteModel( + name="RefPlan", + ), + ] diff --git a/public_data/models/__init__.py b/public_data/models/__init__.py index ac022b959..ecb876f37 100644 --- a/public_data/models/__init__.py +++ b/public_data/models/__init__.py @@ -1,7 +1,6 @@ from .administration import * # noqa: F401, F403 +from .cerema import Cerema # noqa: F401 from .couverture_usage import * # noqa: F401, F403 -from .data_source import * # noqa: F401, F403 -from .deprecated import * # noqa: F401, F403 from .gpu import * # noqa: F401, F403 from .mixins import * # noqa: F401, F403 from .ocsge import ArtificialArea, Ocsge, OcsgeDiff, ZoneConstruite # noqa: F401, F403 diff --git a/public_data/models/data_source.py b/public_data/models/data_source.py deleted file mode 100644 index bd670ce07..000000000 --- a/public_data/models/data_source.py +++ /dev/null @@ -1,125 +0,0 @@ -from django.contrib.postgres.fields import ArrayField -from django.db import models - -from public_data.models.enums import SRID - -from .cerema import Cerema -from .ocsge import Ocsge, OcsgeDiff, ZoneConstruite - - -class DataSource(models.Model): - class Meta: - verbose_name = "Source de données" - verbose_name_plural = "Sources de données" - unique_together = ["productor", "dataset", "name", "millesimes", "official_land_id"] - ordering = ["official_land_id", "millesimes", "name"] - - class ProductorChoices(models.TextChoices): - IGN = "IGN", "Institut national de l'information géographique et forestière" - CEREMA = ( - "CEREMA", - "Centre d'études et d'expertise sur les risques, l'environnement, la mobilité et l'aménagement", - ) - MDA = "MDA", "Mon Diagnostic Artficialisation" - - class DatasetChoices(models.TextChoices): - OCSGE = "OCSGE", "Occupation du sol à grande échelle" - MAJIC = "MAJIC", "Mise A Jour des Informations Cadastrales" - ADMIN_EXPRESS = "ADMIN_EXPRESS", "ADMIN EXPRESS" - - class DataNameChoices(models.TextChoices): - OCCUPATION_DU_SOL = "OCCUPATION_DU_SOL", "Couverture et usage du sol" - DIFFERENCE = "DIFFERENCE", "Différence entre deux OCSGE" - ZONE_CONSTRUITE = "ZONE_CONSTRUITE", "Zone construite" - ZONE_ARTIFICIELLE = "ZONE_ARTIFICIELLE", "Zone artificielle" - CONSOMMATION_ESPACE = "CONSOMMATION_ESPACE", "Consommation d'espace" - DEPARTEMENTS = "DEPARTEMENTS", "Départements" - - productor = models.CharField("Producteur", max_length=255, choices=ProductorChoices.choices) - dataset = models.CharField("Jeu de donnée", max_length=255, choices=DatasetChoices.choices) - name = models.CharField( - "Nom", - max_length=255, - choices=DataNameChoices.choices, - help_text="Nom de la couche de données au sein du jeu de donnée", - ) - millesimes = ArrayField( - models.IntegerField(), - verbose_name="Millésime(s)", - blank=True, - null=True, - help_text="Séparer les années par une virgule si la donnée concerne plusieurs années", - ) - mapping = models.JSONField( - blank=True, null=True, help_text="A renseigner uniquement si le mapping n'est pas standard." - ) - path = models.CharField("Chemin sur S3", max_length=255) - shapefile_name = models.CharField("Nom du shapefile", max_length=255) - source_url = models.URLField( - "URL de la source", - blank=True, - null=True, - help_text="Cet URL peut-être le même pour plusieurs sources (par exemple, si contenu dans archive zip)", - ) - official_land_id = models.CharField( - verbose_name="ID du territoire", - help_text=( - "\nID officiel du territoire (code INSEE, SIREN, etc.)
" - "\nPeut-être vide si la donnée ne concerne pas un territoire spécifique" - "\n(par exemple, s'il concerne la France entière, ou un DROM-COM entier)" - ), - max_length=255, - ) - srid = models.IntegerField( - "SRID", - choices=SRID.choices, - default=SRID.LAMBERT_93, - ) - - def __str__(self) -> str: - return f"{self.productor} - {self.dataset} - {self.official_land_id} - {self.name} - {self.millesimes}" - - def millesimes_string(self) -> str: - return "_".join(map(str, self.millesimes)) - - def get_build_name(self) -> str: - return ( - "_".join( - [ - self.dataset, - self.name, - self.official_land_id, - "_".join(map(str, self.millesimes)), - self.ProductorChoices.MDA, - ] - ) - + ".shp.zip" - ) - - def delete_loaded_data(self): - if self.productor != self.ProductorChoices.MDA: - raise ValueError("Only MDA data can be deleted") - - model: models.Model = { - self.DataNameChoices.OCCUPATION_DU_SOL: Ocsge, - self.DataNameChoices.ZONE_CONSTRUITE: ZoneConstruite, - self.DataNameChoices.DIFFERENCE: OcsgeDiff, - self.DataNameChoices.CONSOMMATION_ESPACE: Cerema, - }[self.name] - - if self.name == self.DataNameChoices.DIFFERENCE: - return model.objects.filter( - departement=self.official_land_id, - year_old=min(self.millesimes), - year_new=max(self.millesimes), - ).delete() - elif self.name == self.DataNameChoices.CONSOMMATION_ESPACE: - if self.official_land_id == "MetropoleEtCorse": - return model.objects.filter(srid_source=self.srid).delete() - else: - return model.objects.filter(dept_id=self.official_land_id).delete() - else: - return model.objects.filter( - departement=self.official_land_id, - year=self.millesimes[0], - ).delete() diff --git a/public_data/models/data_source_fixture.json b/public_data/models/data_source_fixture.json deleted file mode 100644 index 4d987a3ff..000000000 --- a/public_data/models/data_source_fixture.json +++ /dev/null @@ -1,3522 +0,0 @@ -[ - { - "model": "public_data.datasource", - "pk": 1, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "essonne_ocsge_2018.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D091_2018-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D091_2018-01-01.7z", - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 2, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "essonne_ocsge_2021.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D091_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D091_2021-01-01.7z", - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 3, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "essonne_zone_construite_2018.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D091_2018-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D091_2018-01-01.7z", - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 4, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "essonne_zone_construite_2021.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D091_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D091_2021-01-01.7z", - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 5, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "essonne_diff_2018_2021.zip", - "shapefile_name": "DIFF_91_2021_2018.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1_DIFF$OCS-GE-NG_1-1__SHP_LAMB93_D091_DIFF_2018-2021/file/OCS-GE-NG_1-1__SHP_LAMB93_D091_DIFF_2018-2021.7z", - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 11, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "hauts_de_seine_ocsge_2018_corrige.zip", - "shapefile_name": "hauts_de_seine_ocsge_2018_corrige.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D092_2018-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D092_2018-01-01.7z", - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 12, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "hauts_de_seine_ocsge_2021_corrige.zip", - "shapefile_name": "hauts_de_seine_ocsge_2021_corrige.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D092_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D092_2021-01-01.7z", - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 13, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "hauts_de_seine_zone_construite_2018_corrige.zip", - "shapefile_name": "hauts_de_seine_zone_construite_2018_corrige.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D092_2018-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D092_2018-01-01.7z", - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 14, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "hauts_de_seine_zone_construite_2021_corrige.zip", - "shapefile_name": "hauts_de_seine_zone_construite_2021_corrige.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D092_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D092_2021-01-01.7z", - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 15, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "hauts_de_seine_diff_2018_2021_corrige.zip", - "shapefile_name": "hauts_de_seine_diff_2018_2021_corrige.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1_DIFF$OCS-GE-NG_1-1__SHP_LAMB93_D092_DIFF_2018-2021/file/OCS-GE-NG_1-1__SHP_LAMB93_D092_DIFF_2018-2021.7z", - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 21, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "seine_et_marne_ocsge_2017.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D077_2017-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D077_2017-01-01.7z", - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 22, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "seine_et_marne_ocsge_2021.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D077_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D077_2021-01-01.7z", - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 23, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "seine_et_marne_zone_construite_2017.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D077_2017-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D077_2017-01-01.7z", - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 24, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "seine_et_marne_zone_construite_2021.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1$OCS-GE-NG_1-1__SHP_LAMB93_D077_2021-01-01/file/OCS-GE-NG_1-1__SHP_LAMB93_D077_2021-01-01.7z", - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 25, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2021\"]", - "mapping": null, - "path": "seine_et_marne_diff_2017_2021.zip", - "shapefile_name": "DIFF_77_2021_2017.shp", - "source_url": "https://wxs.ign.fr/c2vbqzbz832vi4tkvvmtsoh6/telechargement/inspire/OCSGE-NG-PACK_1-1_DIFF$OCS-GE-NG_1-1__SHP_LAMB93_D077_DIFF_2017-2021/file/OCS-GE-NG_1-1__SHP_LAMB93_D077_DIFF_2017-2021.7z", - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 32, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "ille_et_vilaine_ocsge_2017_corrige.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D035_2017/OCS-GE-NG_1-1__SHP_LAMB93_D035_2017.7z", - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 33, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "ille_et_vilaine_ocsge_2020_corrige.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D035_2020/OCS-GE-NG_1-1__SHP_LAMB93_D035_2020.7z", - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 34, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "ille_et_vilaine_zone_construite_2017.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D035_2017/OCS-GE-NG_1-1__SHP_LAMB93_D035_2017.7z", - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 35, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "ille_et_vilaine_zone_construite_2020.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D035_2020/OCS-GE-NG_1-1__SHP_LAMB93_D035_2020.7z", - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 36, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "ille_et_vilaine_diff_2017_2020.zip", - "shapefile_name": "DIFF_35_2020_2017.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D035_2017-2020/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D035_2017-2020.7z", - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 37, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "var_ocsge_2017_corrige.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D083_2017/OCS-GE-NG_1-1__SHP_LAMB93_D083_2017.7z", - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 39, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "var_diff_2017_2020.zip", - "shapefile_name": "DIFF_83_2020_2017.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D083_2017-2020/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D083_2017-2020.7z", - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 40, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "var_zone_construite_2017.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D083_2017/OCS-GE-NG_1-1__SHP_LAMB93_D083_2017.7z", - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 42, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "val_de_marne_2018_corrige.zip", - "shapefile_name": "val_de_marne_2018_corrige.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D094_2018/OCS-GE-NG_1-1__SHP_LAMB93_D094_2018.7z", - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 43, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "val_de_marne_2021_corrige.zip", - "shapefile_name": "val_de_marne_2021_corrige.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D094_2021/OCS-GE-NG_1-1__SHP_LAMB93_D094_2021.7z", - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 44, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "val_de_marne_zone_construite_2018.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D094_2018/OCS-GE-NG_1-1__SHP_LAMB93_D094_2018.7z", - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 45, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "val_de_marne_zone_construite_2021.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D094_2021/OCS-GE-NG_1-1__SHP_LAMB93_D094_2021.7z", - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 46, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "val_de_marne_18_21_diff.zip", - "shapefile_name": "DIFF_94_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D094_2018-2021/OCS-GE-NG_1-1_DIFF_SHP_LAMB93_D094_2018-2021.7z", - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 52, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_35_2017_2020_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 53, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_35_2017_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 54, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_35_2017_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 55, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_35_2020_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 56, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_35_2020_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 57, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_92_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 58, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_92_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 59, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_92_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 60, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_92_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 61, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_92_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 62, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_91_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 63, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_91_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 64, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_91_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 65, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_91_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 66, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_91_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 67, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_40_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 68, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_40_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 69, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_40_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 70, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_40_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 71, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_40_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 72, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_77_2017_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 73, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_77_2017_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 74, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_77_2017_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 75, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_77_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 76, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_77_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 77, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_83_2017_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 78, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_83_2017_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 79, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_83_2017_2020_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 80, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_83_2020_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 81, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_83_2020_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "83", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 82, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_94_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 83, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_94_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 84, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_94_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 85, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_94_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 86, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_94_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 87, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "ocsge_rhone_2017.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D069_2017-01-01/OCS-GE_2-0__SHP_LAMB93_D069_2017-01-01.7z", - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 88, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "ocsge_rhone_2020.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D069_2020-01-01/OCS-GE_2-0__SHP_LAMB93_D069_2020-01-01.7z", - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 89, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "zone_construite_rhone_2017.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D069_2017-01-01/OCS-GE_2-0__SHP_LAMB93_D069_2017-01-01.7z", - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 90, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "zone_construite_rhone_2020.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D069_2020-01-01/OCS-GE_2-0__SHP_LAMB93_D069_2020-01-01.7z", - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 91, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "rhone_diff_17_20.zip", - "shapefile_name": "DIFF_69_2020_2017.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D069_DIFF_2017-2020/OCS-GE_2-0__SHP_LAMB93_D069_DIFF_2017-2020.7z", - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 92, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_69_2017_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 93, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_69_2020_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 94, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2017\", \"2020\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_69_2017_2020_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 95, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_69_2017_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 96, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_69_2020_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 97, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_69_2017_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 98, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_69_2020_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "69", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 99, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_94_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 100, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_94_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "94", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 101, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "isere_ocsge_2018.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D038_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D038_2018-01-01.7z", - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 102, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "isere_ocsge_2021.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D038_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D038_2021-01-01.7z", - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 103, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "isere_zone_construite_2018.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D038_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D038_2018-01-01.7z", - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 104, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "isere_zone_construite_2021.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D038_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D038_2021-01-01.7z", - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 105, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "isere_diff_18_21.zip", - "shapefile_name": "DIFF_38_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D038_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D038_DIFF_2018-2021.7z", - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 106, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_38_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 107, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_38_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 108, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_38_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 109, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_38_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 110, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_38_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 112, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_38_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 113, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_38_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "38", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 123, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "29_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_29_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D029_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D029_DIFF_2018-2021.7z", - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 124, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "29_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D029_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D029_2018-01-01.7z", - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 125, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "29_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D029_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D029_2021-01-01.7z", - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 126, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "29_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D029_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D029_2021-01-01.7z", - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 127, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "29_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D029_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D029_2018-01-01.7z", - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 128, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "37_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_37_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D037_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D037_DIFF_2018-2021.7z", - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 129, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "37_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D037_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D037_2021-01-01.7z", - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 130, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "37_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D037_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D037_2018-01-01.7z", - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 131, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "37_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D037_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D037_2018-01-01.7z", - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 132, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "37_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D037_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D037_2021-01-01.7z", - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 133, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "67_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_67_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D067_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D067_DIFF_2018-2021.7z", - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 134, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "67_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D067_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D067_2018-01-01.7z", - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 135, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "67_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D067_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D067_2021-01-01.7z", - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 136, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "67_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D067_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D067_2018-01-01.7z", - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 137, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "67_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D067_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D067_2021-01-01.7z", - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 149, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "11_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_11_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D011_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D011_DIFF_2018-2021.7z", - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 154, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "84_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_84_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D084_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D084_DIFF_2018-2021.7z", - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 155, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "11_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D011_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D011_2018-01-01.7z", - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 156, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "11_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D011_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D011_2021-01-01.7z", - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 157, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "11_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D011_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D011_2018-01-01.7z", - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 158, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "11_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D011_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D011_2021-01-01.7z", - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 159, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "84_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D084_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D084_2018-01-01.7z", - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 160, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "84_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D084_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D084_2021-01-01.7z", - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 161, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "84_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D084_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D084_2021-01-01.7z", - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 162, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "84_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D084_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D084_2018-01-01.7z", - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 178, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_37_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 179, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_37_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 180, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_37_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 181, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_37_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 182, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_37_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 183, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_37_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 184, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_37_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "37", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 185, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_67_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 186, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_67_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 187, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_67_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 188, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_67_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 189, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_67_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 190, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_11_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 191, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_11_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 192, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_11_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 193, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_11_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 194, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_11_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 195, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_11_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 196, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_11_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "11", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 197, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_29_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 198, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_29_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 199, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_29_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 200, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_29_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 201, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_29_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 202, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_29_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 203, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_29_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "29", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 204, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_67_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 205, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_67_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "67", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 206, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_84_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 207, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_84_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 208, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_84_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 209, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_84_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 210, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_84_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 211, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_84_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 212, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_84_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "84", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 218, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2016\", \"2019\"]", - "mapping": null, - "path": "32_DIFFERENCE_2016_2019_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_32_2019_2016.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D032_DIFF_2016-2019/OCS-GE_2-0__SHP_LAMB93_D032_DIFF_2016-2019.7z", - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 220, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2016\"]", - "mapping": null, - "path": "32_OCCUPATION_DU_SOL_2016_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D032_2016-01-01/OCS-GE_2-0__SHP_LAMB93_D032_2016-01-01.7z", - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 221, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2019\"]", - "mapping": null, - "path": "32_OCCUPATION_DU_SOL_2019_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D032_2019-01-01/OCS-GE_2-0__SHP_LAMB93_D032_2019-01-01.7z", - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 222, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2016\"]", - "mapping": null, - "path": "32_ZONE_CONSTRUITE_2016_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D032_2016-01-01/OCS-GE_2-0__SHP_LAMB93_D032_2016-01-01.7z", - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 223, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2019\"]", - "mapping": null, - "path": "32_ZONE_CONSTRUITE_2019_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D032_2019-01-01/OCS-GE_2-0__SHP_LAMB93_D032_2019-01-01.7z", - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 224, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2016\", \"2019\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_32_2016_2019_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 225, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2016\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_32_2016_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 226, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2019\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_32_2019_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 227, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2016\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_32_2016_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 228, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2019\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_32_2019_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 229, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2016\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_32_2016_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 230, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2019\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_32_2019_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "32", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 231, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_35_2017_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 232, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2020\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_35_2020_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "35", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 233, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "66_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D066_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D066_2021-01-01.7z", - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 234, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "66_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D066_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D066_2021-01-01.7z", - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 235, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "66_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D066_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D066_2018-01-01.7z", - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 236, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "66_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D066_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D066_2018-01-01.7z", - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 237, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "66_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_D066_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0_DIFF_SHP_LAMB93_D066_2018-2021/OCS-GE_2-0_DIFF_SHP_LAMB93_D066_2018-2021.7z", - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 238, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_66_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 239, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_66_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 240, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_66_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 241, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_66_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 242, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_66_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 243, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_66_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 244, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_66_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "66", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 245, - "fields": { - "productor": "CEREMA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "cerema_2023.zip", - "shapefile_name": "cerema_2023.shp", - "source_url": "https://cerema.app.box.com/v/pnb-action7-indicateurs-ff/file/1512847131932", - "official_land_id": "MetropoleEtCorse", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 246, - "fields": { - "productor": "MDA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "MAJIC_CONSOMMATION_ESPACE_MetropoleEtCorse_2009_2023_MDA.shp.zip", - "shapefile_name": "CONSOMMATION_ESPACE.shp", - "source_url": null, - "official_land_id": "MetropoleEtCorse", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 247, - "fields": { - "productor": "CEREMA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "cerema_2023_971.zip", - "shapefile_name": "obs_artif_conso_com_2009_2023_971.shp", - "source_url": "https://cerema.app.box.com/v/pnb-action7-indicateurs-ff/file/1512838206072", - "official_land_id": "971", - "srid": 32620 - } - }, - { - "model": "public_data.datasource", - "pk": 248, - "fields": { - "productor": "CEREMA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "cerema_2023_972.zip", - "shapefile_name": "obs_artif_conso_com_2009_2023_972.shp", - "source_url": "https://cerema.app.box.com/v/pnb-action7-indicateurs-ff/file/1512827044358", - "official_land_id": "972", - "srid": 32620 - } - }, - { - "model": "public_data.datasource", - "pk": 249, - "fields": { - "productor": "CEREMA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "cerema_2023_973.zip", - "shapefile_name": "obs_artif_conso_com_2009_2023_973.shp", - "source_url": "https://cerema.app.box.com/v/pnb-action7-indicateurs-ff/file/1512828738470", - "official_land_id": "973", - "srid": 2972 - } - }, - { - "model": "public_data.datasource", - "pk": 250, - "fields": { - "productor": "CEREMA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "cerema_2023_974.zip", - "shapefile_name": "obs_artif_conso_com_2009_2023_974.shp", - "source_url": "https://cerema.app.box.com/v/pnb-action7-indicateurs-ff/file/1512840025235", - "official_land_id": "974", - "srid": 2975 - } - }, - { - "model": "public_data.datasource", - "pk": 251, - "fields": { - "productor": "MDA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "MAJIC_CONSOMMATION_ESPACE_971_2009_2023_MDA.shp.zip", - "shapefile_name": "CONSOMMATION_ESPACE.shp", - "source_url": null, - "official_land_id": "971", - "srid": 32620 - } - }, - { - "model": "public_data.datasource", - "pk": 252, - "fields": { - "productor": "MDA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "MAJIC_CONSOMMATION_ESPACE_972_2009_2023_MDA.shp.zip", - "shapefile_name": "CONSOMMATION_ESPACE.shp", - "source_url": null, - "official_land_id": "972", - "srid": 32620 - } - }, - { - "model": "public_data.datasource", - "pk": 253, - "fields": { - "productor": "MDA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "MAJIC_CONSOMMATION_ESPACE_973_2009_2023_MDA.shp.zip", - "shapefile_name": "CONSOMMATION_ESPACE.shp", - "source_url": null, - "official_land_id": "973", - "srid": 2972 - } - }, - { - "model": "public_data.datasource", - "pk": 254, - "fields": { - "productor": "MDA", - "dataset": "MAJIC", - "name": "CONSOMMATION_ESPACE", - "millesimes": "[\"2009\", \"2023\"]", - "mapping": null, - "path": "MAJIC_CONSOMMATION_ESPACE_974_2009_2023_MDA.shp.zip", - "shapefile_name": "CONSOMMATION_ESPACE.shp", - "source_url": null, - "official_land_id": "974", - "srid": 2975 - } - }, - { - "model": "public_data.datasource", - "pk": 255, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "62_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_62_2021_2019.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE-NG_1-1__SHP_LAMB93_D062_DIFF_2018-2021/OCS-GE-NG_1-1__SHP_LAMB93_D062_DIFF_2018-2021.7z", - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 256, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "62_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D062_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D062_2018-01-01.7z", - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 257, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "62_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D062_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D062_2018-01-01.7z", - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 258, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "62_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D062_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D062_2021-01-01.7z", - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 259, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "62_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D062_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D062_2021-01-01.7z", - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 260, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_62_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 261, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_62_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 262, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_62_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 263, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_62_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 264, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_62_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 265, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_62_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 266, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_62_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "62", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 268, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_91_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 269, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_91_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "91", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 270, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_92_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 271, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_92_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "92", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 275, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "40_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D040_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D040_2021-01-01.7z", - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 276, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "40_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D040_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D040_2021-01-01.7z", - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 277, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "40_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D040_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D040_2018-01-01.7z", - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 278, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "40_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D040_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D040_2018-01-01.7z", - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 279, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "40_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_40_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D040_DIFF_2018-2021/OCS-GE_2-0__SHP_LAMB93_D040_DIFF_2018-2021.7z", - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 280, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2017\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_77_2017_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 281, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_77_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "77", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 282, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_40_2018_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 283, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_ARTIFICIELLE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_ARTIFICIELLE_40_2021_MDA.shp.zip", - "shapefile_name": "ZONE_ARTIFICIELLE.shp", - "source_url": null, - "official_land_id": "40", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 284, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "33_OCCUPATION_DU_SOL_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D033_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D033_2018-01-01.7z", - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 285, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "33_ZONE_CONSTRUITE_2018_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D033_2018-01-01/OCS-GE_2-0__SHP_LAMB93_D033_2018-01-01.7z", - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 286, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "33_OCCUPATION_DU_SOL_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "OCCUPATION_SOL.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D033_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D033_2021-01-01.7z", - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 287, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "33_ZONE_CONSTRUITE_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0__SHP_LAMB93_D033_2021-01-01/OCS-GE_2-0__SHP_LAMB93_D033_2021-01-01.7z", - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 288, - "fields": { - "productor": "IGN", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "33_DIFFERENCE_2018_2021_IGN_REPACKED.shp.zip", - "shapefile_name": "DIFF_D033_2021_2018.shp", - "source_url": "https://data.geopf.fr/telechargement/download/OCSGE/OCS-GE_2-0_DIFF_SHP_LAMB93_D033_2018-2021/OCS-GE_2-0_DIFF_SHP_LAMB93_D033_2018-2021.7z", - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 289, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "DIFFERENCE", - "millesimes": "[\"2018\", \"2021\"]", - "mapping": null, - "path": "OCSGE_DIFFERENCE_33_2018_2021_MDA.shp.zip", - "shapefile_name": "DIFFERENCE.shp", - "source_url": null, - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 290, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_33_2018_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 291, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "ZONE_CONSTRUITE", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_ZONE_CONSTRUITE_33_2021_MDA.shp.zip", - "shapefile_name": "ZONE_CONSTRUITE.shp", - "source_url": null, - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 292, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2018\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_33_2018_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "33", - "srid": 2154 - } - }, - { - "model": "public_data.datasource", - "pk": 293, - "fields": { - "productor": "MDA", - "dataset": "OCSGE", - "name": "OCCUPATION_DU_SOL", - "millesimes": "[\"2021\"]", - "mapping": null, - "path": "OCSGE_OCCUPATION_DU_SOL_33_2021_MDA.shp.zip", - "shapefile_name": "OCCUPATION_DU_SOL.shp", - "source_url": null, - "official_land_id": "33", - "srid": 2154 - } - } -] \ No newline at end of file diff --git a/public_data/models/deprecated.py b/public_data/models/deprecated.py deleted file mode 100644 index ca81bcbe3..000000000 --- a/public_data/models/deprecated.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Ce fichier contient tous les modèles dit "DEPRECATED". Ce sont des modèles qu'il -faut migrer vers les nouvelles façons de stocker les données. Cela nécessite souvent -beaucoup de travail (les views sont également à changer, voir le front) et cela a été -remis à plus tard (dette technique). - -Il est également probable que certains modèles ont été total décommissioné mais pas -encore retiré de ce fichier. -""" -from .cerema import Cerema - - -class RefPlan(Cerema): - """ - Utilisé avant la récupération du fichier du Cerema - !!! DEPRECATED !!! - Available for retro-compatibility - """ - - class Meta: - proxy = True diff --git a/public_data/models/mixins.py b/public_data/models/mixins.py index d1d031656..1d0a1748b 100644 --- a/public_data/models/mixins.py +++ b/public_data/models/mixins.py @@ -1,18 +1,10 @@ -from logging import DEBUG, INFO, getLogger +from logging import getLogger from os import getenv -from pathlib import Path -from tempfile import TemporaryDirectory -from typing import Dict -from zipfile import ZipFile import numpy as np from colour import Color -from django.contrib.gis.utils import LayerMapping from django.core.exceptions import FieldDoesNotExist -from django.db import connection -from public_data.models.enums import SRID -from public_data.storages import DataStorage from utils.colors import get_onecolor_gradient, get_random_color, is_valid logger = getLogger(__name__) @@ -20,254 +12,6 @@ LOCAL_FILE_DIRECTORY = getenv("LOCAL_FILE_DIRECTORY") -class AutoLoadMixin: - """ - Enable auto loading of data into database according to - * shape_file_path - usually shape file is in media directory - * mapping - between feature name and database field name - Those two needs to be set in child class. - """ - - @property - def shape_file_path(self) -> str: - """ - Path to the shapefile to load, either on S3 or locally - - Local path is relative to the env variable LOCAL_FILE_DIRECTORY - S3 path is relative to the value defined in DataStorage.location - - Example: - LOCAL_FILE_DIRECTORY = 'public_data/local_data' - shape_file_path = 'communes/communes-2021-01-01.shp' - - will load the shapefile from public_data/local_data/communes/communes-2021-01-01.shp - """ - raise NotImplementedError("The shape_file_path property must be set in child class") - - @property - def mapping(self) -> Dict[str, str]: - """ - Mapping between shapefile fields and model fields - for geodjango's LayerMapping - """ - raise NotImplementedError("The mapping property must be set in child class") - - @property - def srid(self) -> int: - """ - SRID of the source shapefile - Defaults to LAMBERT_93, override if needed. - - NOTE: getting the SRID from the shapefile is not 100% reliable - hence the need to set it manually. - """ - return SRID.LAMBERT_93 - - def before_save(self) -> None: - if hasattr(self.__class__, "srid_source"): - self.srid_source = self.__class__.srid - - def save(self, *args, **kwargs): - self.before_save() - super().save(*args, **kwargs) - self.after_save() - return self - - def after_save(self) -> None: - """Hook to do things after saving""" - - @classmethod - def calculate_fields(cls) -> None: - """Override if you need to calculate some fields after loading data.""" - - @staticmethod - def prepare_shapefile(shape_file_path: Path) -> None: - """Hook that prepares shapefile before loading it into database - Useful to modify shapefile fields type before mapping - - Note that this method will update in place in case - a local file is used. If the shapefile is retrieved from S3, - it will update the file from the temporary directory it - is extracted to. - - Args: - shape_file_path: path to the shapefile to prepare - (provided by the load method) - """ - - @staticmethod - def __check_path_is_a_regular_file(path: Path) -> None: - if not path.is_file(): - raise FileNotFoundError(f"{path} is not a regular file") - - @staticmethod - def __check_path_suffix_is_shapefile(path: Path) -> None: - if path.suffix != ".shp": - raise FileNotFoundError(f"{path} is not a shapefile") - - @staticmethod - def __check_prj_file_exists(path: Path) -> None: - prj_file_path = path.with_suffix(suffix=".prj") - - if not prj_file_path.exists(): - raise FileNotFoundError(f"{prj_file_path} is missing") - - @classmethod - def __check_is_shape_file(cls, shape_file_path: Path) -> None: - cls.__check_path_is_a_regular_file(shape_file_path) - cls.__check_path_suffix_is_shapefile(shape_file_path) - cls.__check_prj_file_exists(shape_file_path) - - def __retrieve_zipped_shapefile_from_s3( - file_name_on_s3: str, - output_path: Path, - ) -> Path: - storage = DataStorage() - - if not storage.exists(file_name_on_s3): - raise FileNotFoundError(f"{file_name_on_s3} could not be found on S3") - - output_zip_path = f"{output_path}/{file_name_on_s3}" - - storage.bucket.download_file( - Key=f"{storage.location}/{file_name_on_s3}", - Filename=output_zip_path, - ) - - return output_zip_path - - def __extract_zipped_shapefile( - zipped_shapefile_path: Path, - output_path: Path, - ) -> Path: - with ZipFile(zipped_shapefile_path) as zip_file: - zip_file.extractall(output_path) - - return output_path - - def __get_shapefile_path_from_folder(folder_path: Path) -> Path: - for tempfile in folder_path.rglob("*.shp"): - if tempfile.name.startswith("._"): - continue - - return tempfile - - raise FileNotFoundError("No file with .shp suffix") - - @classmethod - def clean_data(cls) -> None: - """Delete previously loaded data - - The implementation of the method should ensure idempotency - by removing entirely and exclusively the data previously loaded - by the child class - """ - raise NotImplementedError(f"No clean_data method implemented for the class {cls.__name__}") - - @classmethod - def load( - cls, - local_file_path=None, - local_file_directory=LOCAL_FILE_DIRECTORY, - verbose=True, - layer_mapper_strict=True, - layer_mapper_silent=False, - layer_mapper_encoding="utf-8", - layer_mapper_step=1000, - ) -> None: - """Populate table with data from shapefile then calculate all fields - - If no local_file_path is provided, the shapefile is downloaded from S3, - and then extracted in a temporary directory. - - All arguments are optional and only affects how LayerMapper behave - LayerMapper documentation: - - https://docs.djangoproject.com/en/4.2/ref/contrib/gis/layermapping/ - - Args: - verbose: print more information - local_file_path: path to a local shapefile - local_file_directory: directory where to find the local shapefile - layer_mapper_strict: raise exception if a field is missing - layer_mapper_silent: do not print anything - layer_mapper_encoding: encoding of the shapefile - layer_mapper_step: number of rows to process at once - - Raises: - FileNotFoundError: if the shapefile is not found on S3 or locally - NotImplementedError: if the child class does not implement the shape_file_path property - """ - - logger.setLevel(DEBUG if verbose else INFO) - - logger.info("Loading data from class %s", cls.__name__) - - with TemporaryDirectory() as temporary_directory: - if not local_file_path: - logger.info("Retrieving zipped shapefile from S3") - - zipped_shapefile_path = cls.__retrieve_zipped_shapefile_from_s3( - file_name_on_s3=cls.shape_file_path, - output_path=Path(temporary_directory), - ) - logger.debug(f"Zipped shapefile temporary path: {zipped_shapefile_path}") - - logger.debug("Extracting zipped shapefile") - - shapefile_folder_path = cls.__extract_zipped_shapefile( - zipped_shapefile_path=zipped_shapefile_path, - output_path=Path(temporary_directory), - ) - - logger.debug(f"Extracted shapefile folder path: {shapefile_folder_path}") - - shape_file_path = cls.__get_shapefile_path_from_folder(shapefile_folder_path) - else: - logger.info("Using local shapefile") - - shape_file_path = Path(f"{local_file_directory}/{local_file_path}") - - logger.info("Shapefile path: %s", shape_file_path) - - cls.__check_is_shape_file(shape_file_path) - - logger.debug("Shapefile is valid ✅") - - logger.info("Preparing shapefile") - - cls.prepare_shapefile(shape_file_path) - - logger.info("Cleaning previously loaded data") - - cls.clean_data() - - logger.info("Setting up LayerMapper") - - layer_mapper = LayerMapping( - model=cls, - data=shape_file_path, - mapping=cls.mapping, - encoding=layer_mapper_encoding, - transaction_mode="commit_on_success", - ) - - logger.info("Saving mapped entities") - - layer_mapper.save( - strict=layer_mapper_strict, - silent=layer_mapper_silent, - verbose=verbose, - progress=True, - step=layer_mapper_step, - ) - - logger.info("Calculating fields") - - cls.calculate_fields() - - logger.info("Done loading data from class %s", cls.__name__) - - class DataColorationMixin: """DataColorationMixin add class' methods: - get_property_percentile: return percentiles of a property's distribution @@ -348,15 +92,3 @@ def get_percentile(cls, property_name=None, percentiles=None): return None else: return np.percentile(rows, percentiles, interpolation="lower") - - -class TruncateTableMixin: - """enable a truncate statement (compatible only with PostgreSQL so far)""" - - @classmethod - def truncate(cls, restart_id=True): - query = f'TRUNCATE TABLE "{cls._meta.db_table}"' - if restart_id: - query += " RESTART IDENTITY" - with connection.cursor() as cursor: - cursor.execute(query) diff --git a/public_data/readme.MD b/public_data/readme.MD deleted file mode 100644 index 2b6958218..000000000 --- a/public_data/readme.MD +++ /dev/null @@ -1,72 +0,0 @@ - - -## Management commands - - -### shp2model - -La commande attend un chemin relatif ou absolue vers un fichier shape (extension .shp). - -Exemple : `./manage.py shp2model ./public_data/media/mondossier/monfichier.shp` - -La commande va analyser le contenu du fichier et fournir un squelette de model selon les règles suivantes : -- Nom de la classe : nom du layer (en camelcase) -- Hérite de la classe `AutoLoadMixin` -- Un champ va être ajouté par feature avec pour nom le nom du champ en minuscule. Le type de champ est fonction du type OFT trouvé et le max_length est issu du field_width du fichier. -- un champ MultiPolygon est ajouté (nom: mpoly) -- le chemin vers le fichier est conservé dans la propriété shape_file_path -- le mapping entre les champs du fichier shape et les champs de la classe est conservé dans la propriété mapping - -Exemple: -``` -class Artificialisee2015to2018(AutoLoadMixin): - """ - A_B_2015_2018 : la surface (en hectares) artificialisée entre 2015 et 2018 - Données construites par Philippe - """ - - surface = models.IntegerField(_("surface"), max_length=10) - cs_2018 = models.CharField(_("cs_2018"), max_length=254) - us_2018 = models.CharField(_("us_2018"), max_length=254) - cs_2015 = models.CharField(_("cs_2015"), max_length=254) - us_2015 = models.CharField(_("us_2015"), max_length=254) - - mpoly = models.MultiPolygonField() - - shape_file_path = Path("public_data/media/a_b_2015_2018/A_B_2015_2018.shp") - mapping = { - "surface": "Surface", - "cs_2018": "cs_2018", - "us_2018": "us_2018", - "cs_2015": "cs_2015", - "us_2015": "us_2015", - "mpoly": "MULTIPOLYGON", - } -``` - -### load_data et AutoLoadMixin - -Ci-dessus, vous avez remarqué que le squelette hérite de la classe AutoLoadMixin (et nom models.Model comme il est de coutume). C'est pour que la classe embarque une méthode de classe "Load()" qui permet de charger les données en base depuis le fichier shape. - -Cette fonctionnalité est activée au travers de la commande load_data qui prend le nom du classe en paramètre. Exemple : `./manage.py load_data public_data.models.Artificialisee2015to2018` - -La méthode load() va : -- vider la base de donner (delete global) -- utiliser `LayerMapping` (issue de GeoDjango) avec les 2 propriétés détaillées précédemment : shape_file_path et mapping -- uploader le contenu du fichier dans la base - -## Données de l'INSEE - -2 données sont chargées depuis l'INSEE : -- Population des communes (incluant un historique depuis 2006) -- nombre de ménages par communes (incluant un historique depuis 2008) - -Ces données sont stockées dans CommunePop et accessible depuis Commune.pop.all() - -Pour charger ces données, 2 fichiers sont utilisées et ils doivent être disponibles dans s3://[bucketname]/data : -- pop : base-pop-historiques-1876-2019.xlsx, colonnes : CODGEO, LIBGEO, 2019 à 2006 -- ménage : base-cc-coupl-fam-men-2018-lite.xlsx, colonnes : CODGEO, LIBGEO, 2018 à 2008 - -L'INSEE ne fournit le nombre de ménage que pour 2018, 2013 et 2008. Les années manquantes ont été complétées avec une estimation en utilisant une droite affine. - -La commande pour charger les fichiers est : `python manage.py load_insee`