From a294a8a3bb80768ba90b6c4c0cdd21d40e6909cb Mon Sep 17 00:00:00 2001 From: Ivor Bosloper Date: Wed, 7 Oct 2026 00:28:29 +0200 Subject: [PATCH 1/3] US-CA SCM: all nine editions, 2014-2024 The crop column differs per schema generation: MAIN_CROP from 2019, the main-season CROPTYP2 in 2016 and 2018, and in 2014 only a name, mapped with the name/code pairs of 2016. Provider is DWR, the date 1 July of the edition year. Co-Authored-By: Claude Opus 5.5 --- fiboa_cli/datasets/data-files/us_ca_scm.csv | 58 -------- fiboa_cli/datasets/us_ca_scm.py | 132 +++++++++++++++--- .../us_ca_scm/i15_crop_mapping_2014_gdb.zip | Bin 0 -> 20584 bytes .../us_ca_scm/i15_crop_mapping_2018_gdb.zip | Bin 0 -> 20873 bytes ..._mapping_2023_provisional_20241127.gdb.zip | Bin 42956 -> 0 bytes ..._mapping_2024_provisional_20251208.gdb.zip | Bin 0 -> 19563 bytes tests/data-files/convert/us_ca_scm/scm.csv | 23 ++- tests/test_convert.py | 6 + 8 files changed, 138 insertions(+), 81 deletions(-) delete mode 100644 fiboa_cli/datasets/data-files/us_ca_scm.csv create mode 100644 tests/data-files/convert/us_ca_scm/i15_crop_mapping_2014_gdb.zip create mode 100644 tests/data-files/convert/us_ca_scm/i15_crop_mapping_2018_gdb.zip delete mode 100644 tests/data-files/convert/us_ca_scm/i15_crop_mapping_2023_provisional_20241127.gdb.zip create mode 100644 tests/data-files/convert/us_ca_scm/i15_crop_mapping_2024_provisional_20251208.gdb.zip diff --git a/fiboa_cli/datasets/data-files/us_ca_scm.csv b/fiboa_cli/datasets/data-files/us_ca_scm.csv deleted file mode 100644 index c332f615..00000000 --- a/fiboa_cli/datasets/data-files/us_ca_scm.csv +++ /dev/null @@ -1,58 +0,0 @@ -original_name,original_code,color -"****",****,#44aae6 -"Citrus and Subtropical - No Subclass",C,#cb1469 -"Eucalyptus",C10,#410cc9 -"Dates",C4,#43ce34 -"Avocados",C5,#86cb3c -"Olives",C6,#d84d72 -"Subtropical Fruits Misc.",C7,#5eda3f -"Kiwis",C8,#d18274 -"Apples",D1,#d4886f -"Deciduous - Misc.",D10,#9f54d1 -"Almonds",D12,#dfad84 -"Walnuts",D13,#665aea -"Pistachios",D14,#b063d1 -"Pomegranates",D15,#cf8429 -"Pecans",D17,#0fe769 -"Apricots",D2,#1546e7 -"Cherries",D3,#31e4a2 -"Peaches and Nectarines",D5,#b5db77 -"Pears",D6,#ba84ef -"Plums",D7,#ebe41d -"Prunes",D8,#6649e9 -"Cotton",F1,#6ee185 -"Beans (dry)",F10,#e4777e -"Field Misc.",F11,#dcea13 -"Sunflowers",F12,#86d3ec -"Corn, Sorghum or Sudan (grouped for remote sensing classification only)",F16,#0e55e3 -"Safflower",F2,#26cd5b -"Sugar beets",F5,#b5d32f -"Wheat",G2,#7ad3cf -"Grain and Hay - Misc.",G6,#69cdbe -"Idle - Land not cropped in current or prior year, but within last 3 yrs.",I1,#1e38e1 -"Idle - Long Term - land consistently idle for four or more years",I4,#6aade8 -"Alfalfa and alfalfa mixtures",P1,#e1b96a -"Pasture - Mixed",P3,#7a3cde -"Pasture - Native Improved",P4,#de3853 -"Pasture - Induced High Water",P5,#ed2d26 -"Pasture - Miscellaneous Grasses",P6,#61eb26 -"Pasture - Turf Farms",P7,#5b99e9 -"Rice",R1,#c872b5 -"Rice - Wild",R2,#f035a2 -"Onions and Garlic",T10,#4eec5e -"Potatoes",T12,#e7da85 -"Sweet Potatoes",T13,#ef6ec6 -"Flowers, nursery and Christmas Tree Farms",T16,#6264e5 -"Truck Crops - Misc.",T18,#e95ad8 -"Bushberries",T19,#96d26c -"Strawberries",T20,#d116e6 -"Peppers (Chili, Bell, etc.)",T21,#73cbda -"Greenhouse",T27,#ab1ccf -"Lettuce or Leafy Greens (grouped for remote sensing classification only)",T30,#47d047 -"Tomatoes (all)",T32,#de4980 -"Cole crops (mixture of T22-T25)",T4,#31db89 -"Carrots",T6,#cb19c8 -"Melons, Squash, and Cucumbers",T9,#bdd879 -"Vineyards - No Subclass",V,#ebcc65 -"Not cropped, or unclassified at the time of remote-sensing analysis. Idle status not determined",X,#4debc1 -"Young Perennial (grouped for remote sensing or when CLASS C, D or V is not determined)",YP,#ef8c57 diff --git a/fiboa_cli/datasets/us_ca_scm.py b/fiboa_cli/datasets/us_ca_scm.py index 69cf7f53..9809a095 100644 --- a/fiboa_cli/datasets/us_ca_scm.py +++ b/fiboa_cli/datasets/us_ca_scm.py @@ -1,21 +1,107 @@ -from os.path import dirname, join - from vecorel_cli.conversion.admin import AdminConverterMixin from ..conversion.fiboa_converter import FiboaBaseConverter -from .commons.hcat import AddHCATMixin, load_hcat_mapping +from .commons.hcat import AddHCATMixin + +BASE = "https://data.cnra.ca.gov/dataset/6c3d65e3-35bb-49e1-a51e-49d5a2cf09a9/resource" + +# 2014 names its crops only; each name has one dominant code in 2016, which has both +CROP_CODE_BY_NAME = { + "Alfalfa and Alfalfa Mixtures": "P1", + "Almonds": "D12", + "Apples": "D1", + "Avocados": "C5", + "Beans (Dry)": "F10", + "Bush Berries": "T19", + "Carrots": "T6", + "Cherries": "D3", + "Citrus": "C", + "Cole Crops": "T4", + "Corn, Sorghum and Sudan": "F16", + "Cotton": "F1", + "Dates": "C4", + "Flowers, Nursery and Christmas Tree Farms": "T16", + "Grapes": "V", + "Greenhouse": "T27", + "Idle": "X", + "Kiwis": "C8", + "Lettuce/Leafy Greens": "T8", + "Managed Wetland": "NR", + "Melons, Squash and Cucumbers": "T9", + "Miscellaneous Deciduous": "D10", + "Miscellaneous Field Crops": "F11", + "Miscellaneous Grain and Hay": "G6", + "Miscellaneous Grasses": "P6", + "Miscellaneous Subtropical Fruits": "C7", + "Miscellaneous Truck Crops": "T18", + "Mixed Pasture": "P3", + "Olives": "C6", + "Onions and Garlic": "T10", + "Peaches/Nectarines": "D5", + "Pears": "D6", + "Peppers": "T21", + "Pistachios": "D14", + "Plums, Prunes and Apricots": "D16", + "Pomegranates": "D15", + "Potatoes and Sweet Potatoes": "T31", + "Rice": "R1", + "Safflower": "F2", + "Strawberries": "T20", + "Sunflowers": "F12", + "Tomatoes": "T15", + "Urban": "U", + "Walnuts": "D13", + "Wheat": "G2", + "Wild Rice": "R2", + "Young Perennials": "YP", +} class Converter(AdminConverterMixin, AddHCATMixin, FiboaBaseConverter): variants = { + "2024": { + f"{BASE}/157956a5-507e-4c6c-b161-b21361488576/download/i15_crop_mapping_2024_provisional_20251208.gdb.zip": [ + "i15_Crop_Mapping_2024_Provisional_20251208.gdb" + ] + }, "2023": { - "https://data.cnra.ca.gov/dataset/6c3d65e3-35bb-49e1-a51e-49d5a2cf09a9/resource/4e17ca38-268e-4bf5-bbc5-09636d44ed60/download/i15_crop_mapping_2023_provisional_20241127.gdb.zip": [ - "i15_Crop_Mapping_2023_Provisional_20241127.gdb" + f"{BASE}/4e17ca38-268e-4bf5-bbc5-09636d44ed60/download/i15_crop_mapping_2023_final.gdb.zip": [ + "i15_Crop_Mapping_2023_Final.gdb" ] }, "2022": { - "https://data.cnra.ca.gov/dataset/6c3d65e3-35bb-49e1-a51e-49d5a2cf09a9/resource/f38d3f6f-dcf1-4553-9f07-4f381d494320/download/i15_crop_mapping_2022_provisional_gdb.zip": [ - "i15_Crop_Mapping_2022_Provisional_GDB/i15_Crop_Mapping_2022_Provisional.gdb" + f"{BASE}/e41f74d2-7ff9-4871-bc95-1e9673fc53cb/download/i15_crop_mapping_2022.gdb.zip": [ + "i15_crop_mapping_2022.gdb" + ] + }, + "2021": { + f"{BASE}/cd1ce211-ac75-44b4-9ea4-345ce2fd0548/download/i15_crop_mapping_2021_gdb.zip": [ + "i15_Crop_Mapping_2021_GDB/i15_Crop_Mapping_2021.gdb" + ] + }, + "2020": { + f"{BASE}/44c1bde8-7ac4-4582-b8de-d09264e180fb/download/i15_crop_mapping_2020-gdb.zip": [ + "i15_Crop_Mapping_2020 GDB/i15_Crop_Mapping_2020.gdb" + ] + }, + "2019": { + f"{BASE}/519a6ac2-77f5-4da6-85f3-ada74d7eddee/download/i15_crop_mapping_2019_gdb.zip": [ + "i15_Crop_Mapping_2019_GDB/i15_Crop_Mapping_2019.gdb" + ] + }, + "2018": { + f"{BASE}/05dc698d-9587-453a-a494-a07beadbbe62/download/i15_crop_mapping_2018_gdb.zip": [ + "i15_Crop_Mapping_2018_GDB/i15_Crop_Mapping_2018.gdb" + ] + }, + "2016": { + f"{BASE}/489d7ab8-f68a-45b4-8113-bb89bc4d9a9c/download/i15_crop_mapping_2016_gdb.zip": [ + "i15_Crop_Mapping_2016_GDB/i15_Crop_Mapping_2016.gdb" + ] + }, + "2014": { + f"{BASE}/04f89c79-59d1-4981-a3ab-853fdbc79d37/download/i15_crop_mapping_2014_gdb.zip": [ + "i15_Crop_Mapping_2014_GDB/i15_Crop_Mapping_2014.gdb" ] }, } @@ -26,22 +112,19 @@ class Converter(AdminConverterMixin, AddHCATMixin, FiboaBaseConverter): description = """ For many years, the California Department of Water Resources (DWR) has collected land use data throughout the state and used this information to develop water use estimates for statewide and regional planning efforts, including water -use projections, water use efficiency evaluation, groundwater model development, and water transfers. These data are -essential for regional analysis and decision making, which has become increasingly important as DWR and other state agencies -seek to address resource management issues, regulatory compliance issues, environmental impacts, ecosystem services, -urban and economic development, and other issues. +use projections, water use efficiency evaluation, groundwater model development, and water transfers. The statewide +crop maps are made from remote sensing by Land IQ under contract to DWR. 2024 is provisional. """ - provider = "County of Santa Clara " + provider = "California Department of Water Resources " + attribution = "California Department of Water Resources, Statewide Crop Mapping" license = "CC0-1.0" columns = { "geometry": "geometry", "UniqueID": "id", - "MAIN_CROP": "crop:code", + "crop_code": "crop:code", "crop:name": "crop:name", "COUNTY": "admin_level_2", - } - column_additions = { - "determination:datetime": "2023-05-01T00:00:00Z", + "determination:datetime": "determination:datetime", } hcat_mapping_csv = "https://fiboa.org/code/us/ca/scm.csv" missing_schemas = { @@ -51,11 +134,16 @@ class Converter(AdminConverterMixin, AddHCATMixin, FiboaBaseConverter): } def migrate(self, gdf): - """ - Perform migration on the GeoDataFrame to map crop names using a provided mapping file. - """ gdf = super().migrate(gdf) - mapping = load_hcat_mapping(url=join(dirname(__file__), "data-files", "us_ca_scm.csv")) - original_name_mapping = {e["original_code"]: e["original_name"] for e in mapping} - gdf["crop:name"] = gdf["MAIN_CROP"].map(original_name_mapping) + # three generations of the schema: names (2014), seasons (2016, 2018), a main crop + if "MAIN_CROP" in gdf.columns: + gdf["crop_code"] = gdf["MAIN_CROP"] + elif "CROPTYP2" in gdf.columns: + gdf["crop_code"] = gdf["CROPTYP2"] + else: + gdf["crop_code"] = gdf[f"Crop{self.variant}"].map(CROP_CODE_BY_NAME) + gdf["crop:name"] = gdf["crop_code"].map(self.hcat_lookup("original_code", "original_name")) + if "County" in gdf.columns: + gdf = gdf.rename(columns={"County": "COUNTY"}) + gdf["determination:datetime"] = f"{self.variant}-07-01T00:00:00Z" return gdf diff --git a/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2014_gdb.zip b/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2014_gdb.zip new file mode 100644 index 0000000000000000000000000000000000000000..e025067609c6ca921d68f7bca4312d73426d0673 GIT binary patch literal 20584 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 literal 0 HcmV?d00001 diff --git a/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2018_gdb.zip b/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2018_gdb.zip new file mode 100644 index 0000000000000000000000000000000000000000..a561972d09fe198d359614e39430c7c0b4a6583e GIT binary patch literal 20873 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 diff --git a/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2024_provisional_20251208.gdb.zip b/tests/data-files/convert/us_ca_scm/i15_crop_mapping_2024_provisional_20251208.gdb.zip new file mode 100644 index 0000000000000000000000000000000000000000..9fac9d175e59fa9a714127888704a99851ca835d GIT binary patch literal 19563 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 literal 0 HcmV?d00001 diff --git a/tests/data-files/convert/us_ca_scm/scm.csv b/tests/data-files/convert/us_ca_scm/scm.csv index 87bdf1ff..f86914d9 100644 --- a/tests/data-files/convert/us_ca_scm/scm.csv +++ b/tests/data-files/convert/us_ca_scm/scm.csv @@ -56,5 +56,26 @@ original_name,original_code,color,translated_name,HCAT3_name,HCAT3_code "Vineyards - No Subclass",V,#ebcc65,"Vineyards - No Subclass",vineyards_wine_vine_rebland_grapes,3303060000 "Not cropped, or unclassified at the time of remote-sensing analysis. Idle status not determined",X,#4debc1,"Not cropped, or unclassified at the time of remote-sensing analysis. Idle status not determined",not_known_and_other,3399000000 "Young Perennial (grouped for remote sensing or when CLASS C, D or V is not determined)",YP,#ef8c57,"Young Perennial (grouped for remote sensing or when CLASS C, D or V is not determined)",permanent_crops_perennial,3303000000 -"Unclassified",U,#4debc1,"Unclassified",not_known_and_other,3399000000 +"Urban",U,#4debc1,"Urban",not_known_and_other,3399000000 "Urban Landscape",UL2,#4debc1,"Urban Landscape",not_known_and_other,3399000000 +"Citrus - Lemons",C2,#f1a543,"Citrus - Lemons",citrus_plantations,3303040000 +"Citrus - Oranges",C3,#3abe12,"Citrus - Oranges",citrus_plantations,3303040000 +"Deciduous Fruits and Nuts - No Subclass",D,#f623e7,"Deciduous Fruits and Nuts - No Subclass",permanent_crops_perennial,3303000000 +"Deciduous - Mixed",D11,#c0e3be,"Deciduous - Mixed",unspecified_orchards_fruits,3303019800 +"Plums, Prunes and Apricots (grouped for remote sensing classification only)",D16,#6fd9ec,"Plums, Prunes and Apricots (grouped for remote sensing classification only)",orchards_fruits,3303010000 +"Field Crops - No Subclass",F,#800618,"Field Crops - No Subclass",other_arable_land_crops,3301990000 +"Corn (field and sweet)",F6,#1faf42,"Corn (field and sweet)",grain_maize_corn_popcorn,3301010600 +"Grain and Hay - No Subclass",G,#dfcf28,"Grain and Hay - No Subclass",cereal,3301010000 +"Grain and Hay - Mixed",G7,#bf9175,"Grain and Hay - Mixed",other_arable_land_crops,3301990000 +"Idle - New lands being prepared for crop production",I2,#8213a4,"Idle - New lands being prepared for crop production",fallow_land_not_crop,3301110000 +"Riparian Vegetation",NR,#c3938d,"Riparian Vegetation",not_known_and_other,3399000000 +"Pasture - No Subclass",P,#44c29e,"Pasture - No Subclass",pasture_meadow_grassland_grass,3302000000 +"Pasture - Clover",P2,#589059,"Pasture - Clover",clover,3301090303 +"Rice - No Subclass",R,#e1e1d3,"Rice - No Subclass",rice,3301010700 +"Truck, Nursery and Berry Crops - No Subclass",T,#b9ece1,"Truck, Nursery and Berry Crops - No Subclass",fresh_vegetables,3301070000 +"Artichokes",T1,#ce499d,"Artichokes",artichoke,3301270000 +"Tomatoes (processing)",T15,#b6520b,"Tomatoes (processing)",tomato,3301280000 +"Truck Crops - Mixed (four or more)",T17,#cc75c1,"Truck Crops - Mixed (four or more)",fresh_vegetables,3301070000 +"Potato and Sweet Potato (grouped for remote sensing classification only)",T31,#25ddda,"Potato and Sweet Potato (grouped for remote sensing classification only)",potatoes,3301030000 +"Lettuce (all types)",T8,#001cf4,"Lettuce (all types)",salads_lettuce_leaf_vegetables,3301310000 +"Vineyards - Wine Grapes",V2,#ec765f,"Vineyards - Wine Grapes",vineyards_wine_vine_rebland_grapes,3303060000 diff --git a/tests/test_convert.py b/tests/test_convert.py index 71152081..3f1034ae 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -68,6 +68,8 @@ "cz#2020", "us_usda_cropland", "us_ca_scm", + "us_ca_scm#2018", + "us_ca_scm#2014", "jp", "lv", "ie", @@ -177,6 +179,10 @@ def _input_files(converter, *names): "input_files": {f"{test_path}/es_an/SP25_REC_PROV_04.zip": ["SP25_REC_04.shp"]}, }, "sk#2018": {"variant": "2018"}, + # three schema generations: a main crop, crops per season (2016, 2018), crop names (2014) + "us_ca_scm": {"variant": "2024"}, + "us_ca_scm#2018": {"variant": "2018"}, + "us_ca_scm#2014": {"variant": "2014"}, "bg": {"variant": "2025", **_input_files("bg", "bg_agricultural_land_2025.zip")}, "bg#2022": {"variant": "2022", **_input_files("bg", "bg_agricultural_land_2022.zip")}, "es_cat": _input_files("es_cat", "Cultius_DUN2023_GPKG.zip"), From d12a6a302f9484321b9bc06c1ff160619f7133d9 Mon Sep 17 00:00:00 2001 From: Ivor Bosloper Date: Wed, 7 Oct 2026 06:03:17 +0200 Subject: [PATCH 2/3] US-CA SCM: leave out the urban mask and other non-field classes DWR maps the whole state. Its urban mask (U, or **** in 2020-2022) is some 2 million ha in county-sized polygons, the largest above the fiboa area maximum; UL2 and NR are urban landscape and riparian vegetation. Co-Authored-By: Claude Opus 5.5 --- fiboa_cli/datasets/us_ca_scm.py | 7 +++++++ tests/test_convert.py | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/fiboa_cli/datasets/us_ca_scm.py b/fiboa_cli/datasets/us_ca_scm.py index 9809a095..9644910b 100644 --- a/fiboa_cli/datasets/us_ca_scm.py +++ b/fiboa_cli/datasets/us_ca_scm.py @@ -56,6 +56,10 @@ "Young Perennials": "YP", } +# DWR maps the whole state; these classes are its urban mask (county-sized polygons, +# "****" in 2020-2022), urban landscape and riparian vegetation, not fields +NON_AGRICULTURAL = {"U", "****", "UL2", "NR"} + class Converter(AdminConverterMixin, AddHCATMixin, FiboaBaseConverter): variants = { @@ -126,6 +130,9 @@ class Converter(AdminConverterMixin, AddHCATMixin, FiboaBaseConverter): "COUNTY": "admin_level_2", "determination:datetime": "determination:datetime", } + column_filters = { + "crop_code": lambda col: (col.isin(NON_AGRICULTURAL), True), + } hcat_mapping_csv = "https://fiboa.org/code/us/ca/scm.csv" missing_schemas = { "properties": { diff --git a/tests/test_convert.py b/tests/test_convert.py index 3f1034ae..1b7ff944 100644 --- a/tests/test_convert.py +++ b/tests/test_convert.py @@ -281,6 +281,13 @@ def _input_files(converter, *names): }, } +# Classes a converter filters out, and that the fixture does contain +filtered_codes = { + # DWR maps the whole state: the urban mask is county-sized polygons, not fields + "us_ca_scm#2018": ("U",), + "us_ca_scm#2014": ("U",), +} + # Mapping loaders to patch besides commons.hcat, e.g. where a converter imports one by name mapping_lookups = { "pt": ("fiboa_cli.datasets.pt.load_hcat_mapping",), @@ -345,6 +352,9 @@ def load_mapping(csv_file=None, url=None): f"e.g. {df.loc[floaty, 'id'].head(3).tolist()}" ) + dropped = [c for c in filtered_codes.get(converter, ()) if c in set(df["crop:code"])] + assert not dropped, f"{converter} kept rows it should filter out: crop:code {dropped}" + if "metrics:area" in df.columns and converter not in ("de_bb",): # Check for accidental hectare conversion; fields should be more than 10 square meters assert (df["metrics:area"] > 10).all() From c6f2b599885151a58a1c76403f82bc7d3151bee0 Mon Sep 17 00:00:00 2001 From: Ivor Bosloper Date: Wed, 7 Oct 2026 06:31:39 +0200 Subject: [PATCH 3/3] US-CA SCM: the 2014 name/code pairs as a data file, and a changelog entry Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 5 ++ .../datasets/data-files/us_ca_scm_2014.csv | 48 ++++++++++++++++ fiboa_cli/datasets/us_ca_scm.py | 56 ++----------------- 3 files changed, 58 insertions(+), 51 deletions(-) create mode 100644 fiboa_cli/datasets/data-files/us_ca_scm_2014.csv diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d4d3b74..15d8c24f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - SI: Extended editions back to 2019. - SK: Editions now cover 2018-2026 from the per-campaign datasets on data.slovensko.sk. - US-CSB: Editions now cover 2017-2024. +- US-CA SCM: + - Editions now cover 2014, 2016 and 2018-2024 (2024 provisional), from the current portal URLs. + - The crop is `MAIN_CROP` from 2019, the main-season `CROPTYP2` in 2016 and 2018, and in 2014 a name mapped to its code through `us_ca_scm_2014.csv`. + - The urban mask (`U`, `****`), urban landscape (`UL2`) and riparian vegetation (`NR`) are left out: they are not fields. + - The provider is the California Department of Water Resources; `determination:datetime` is 1 July of the edition year. ### Removed - CH: Removed the national `ch` converter, whose single licence could not cover the cantons' differing terms; the canton converters replace it, and a Swiss file is `fiboa merge` of their outputs. diff --git a/fiboa_cli/datasets/data-files/us_ca_scm_2014.csv b/fiboa_cli/datasets/data-files/us_ca_scm_2014.csv new file mode 100644 index 00000000..be774d53 --- /dev/null +++ b/fiboa_cli/datasets/data-files/us_ca_scm_2014.csv @@ -0,0 +1,48 @@ +original_name,original_code +Alfalfa and Alfalfa Mixtures,P1 +Almonds,D12 +Apples,D1 +Avocados,C5 +Beans (Dry),F10 +Bush Berries,T19 +Carrots,T6 +Cherries,D3 +Citrus,C +Cole Crops,T4 +"Corn, Sorghum and Sudan",F16 +Cotton,F1 +Dates,C4 +"Flowers, Nursery and Christmas Tree Farms",T16 +Grapes,V +Greenhouse,T27 +Idle,X +Kiwis,C8 +Lettuce/Leafy Greens,T8 +Managed Wetland,NR +"Melons, Squash and Cucumbers",T9 +Miscellaneous Deciduous,D10 +Miscellaneous Field Crops,F11 +Miscellaneous Grain and Hay,G6 +Miscellaneous Grasses,P6 +Miscellaneous Subtropical Fruits,C7 +Miscellaneous Truck Crops,T18 +Mixed Pasture,P3 +Olives,C6 +Onions and Garlic,T10 +Peaches/Nectarines,D5 +Pears,D6 +Peppers,T21 +Pistachios,D14 +"Plums, Prunes and Apricots",D16 +Pomegranates,D15 +Potatoes and Sweet Potatoes,T31 +Rice,R1 +Safflower,F2 +Strawberries,T20 +Sunflowers,F12 +Tomatoes,T15 +Urban,U +Walnuts,D13 +Wheat,G2 +Wild Rice,R2 +Young Perennials,YP diff --git a/fiboa_cli/datasets/us_ca_scm.py b/fiboa_cli/datasets/us_ca_scm.py index 9644910b..bcc6609c 100644 --- a/fiboa_cli/datasets/us_ca_scm.py +++ b/fiboa_cli/datasets/us_ca_scm.py @@ -1,60 +1,13 @@ from vecorel_cli.conversion.admin import AdminConverterMixin from ..conversion.fiboa_converter import FiboaBaseConverter +from .commons.data import read_data_csv from .commons.hcat import AddHCATMixin BASE = "https://data.cnra.ca.gov/dataset/6c3d65e3-35bb-49e1-a51e-49d5a2cf09a9/resource" -# 2014 names its crops only; each name has one dominant code in 2016, which has both -CROP_CODE_BY_NAME = { - "Alfalfa and Alfalfa Mixtures": "P1", - "Almonds": "D12", - "Apples": "D1", - "Avocados": "C5", - "Beans (Dry)": "F10", - "Bush Berries": "T19", - "Carrots": "T6", - "Cherries": "D3", - "Citrus": "C", - "Cole Crops": "T4", - "Corn, Sorghum and Sudan": "F16", - "Cotton": "F1", - "Dates": "C4", - "Flowers, Nursery and Christmas Tree Farms": "T16", - "Grapes": "V", - "Greenhouse": "T27", - "Idle": "X", - "Kiwis": "C8", - "Lettuce/Leafy Greens": "T8", - "Managed Wetland": "NR", - "Melons, Squash and Cucumbers": "T9", - "Miscellaneous Deciduous": "D10", - "Miscellaneous Field Crops": "F11", - "Miscellaneous Grain and Hay": "G6", - "Miscellaneous Grasses": "P6", - "Miscellaneous Subtropical Fruits": "C7", - "Miscellaneous Truck Crops": "T18", - "Mixed Pasture": "P3", - "Olives": "C6", - "Onions and Garlic": "T10", - "Peaches/Nectarines": "D5", - "Pears": "D6", - "Peppers": "T21", - "Pistachios": "D14", - "Plums, Prunes and Apricots": "D16", - "Pomegranates": "D15", - "Potatoes and Sweet Potatoes": "T31", - "Rice": "R1", - "Safflower": "F2", - "Strawberries": "T20", - "Sunflowers": "F12", - "Tomatoes": "T15", - "Urban": "U", - "Walnuts": "D13", - "Wheat": "G2", - "Wild Rice": "R2", - "Young Perennials": "YP", -} +# 2014 names its crops only; the codes are the names' dominant codes in 2016, which has both +CODES_2014_FILE = "us_ca_scm_2014.csv" # DWR maps the whole state; these classes are its urban mask (county-sized polygons, # "****" in 2020-2022), urban landscape and riparian vegetation, not fields @@ -148,7 +101,8 @@ def migrate(self, gdf): elif "CROPTYP2" in gdf.columns: gdf["crop_code"] = gdf["CROPTYP2"] else: - gdf["crop_code"] = gdf[f"Crop{self.variant}"].map(CROP_CODE_BY_NAME) + codes = {r["original_name"]: r["original_code"] for r in read_data_csv(CODES_2014_FILE)} + gdf["crop_code"] = gdf[f"Crop{self.variant}"].map(codes) gdf["crop:name"] = gdf["crop_code"].map(self.hcat_lookup("original_code", "original_name")) if "County" in gdf.columns: gdf = gdf.rename(columns={"County": "COUNTY"})