// AUTO-GENERATED for the Processing menu's Whitebox tool categories.
// Whitebox tools come from the Whitebox Next Gen catalog snapshot
// (opengeos/Whitebox-Next-Gen-ArcGIS WNG/data/catalog_snapshot.json);
// GeoLibre-authored WASM tools come from the geolibre-wasm manifests and
// are grouped under a "GeoLibre" subheading. Tool ids match the
// runtime/sidecar/WASM catalog used by ProcessingDialog.
// Regenerate with scripts/gen-whitebox-menu-catalog.mjs; do not hand-edit.
// Tool/subcategory names are catalog data and are intentionally not
// translated, matching the Whitebox toolbox dialog.

import type { ParseKeys } from "i18next";

export interface WhiteboxMenuTool {
  /** Tool id, passed to ProcessingDialog to preselect the tool. */
  id: string;
  /** Human-readable tool name from the catalog. */
  name: string;
}

export interface WhiteboxMenuSubcategory {
  /** Subcategory label (catalog data, not translated). */
  label: string;
  tools: WhiteboxMenuTool[];
}

export interface WhiteboxMenuCategory {
  /** Stable key for the top-level submenu. */
  key: string;
  /** i18n key for the submenu label. */
  labelKey: ParseKeys;
  subcategories: WhiteboxMenuSubcategory[];
}

/** 1009 tools across 9 categories. */
export const WHITEBOX_MENU_CATALOG: WhiteboxMenuCategory[] = [
  {
    key: "conversion",
    labelKey: "toolbar.item.conversion",
    subcategories: [
      {
        label: "GeoLibre",
        tools: [
          { id: "calculate_transit_service_frequency", name: "Calculate Transit Service Frequency" },
          { id: "excel_to_table", name: "Excel To Table" },
          { id: "extract_scanned_features", name: "Extract Scanned Features" },
          { id: "features_to_gpx", name: "Features To GPX" },
          { id: "features_to_gtfs", name: "Features To GTFS" },
          { id: "gpx_to_features", name: "GPX To Features" },
          { id: "gtfs_to_features", name: "GTFS To Features" },
          { id: "h3_to_vector", name: "H3 Cells to Polygons" },
          { id: "h3_polyfill", name: "H3 Polyfill" },
          { id: "kml_to_features", name: "KML To Features" },
          { id: "pmtiles_extract", name: "PMTiles Extract" },
          { id: "raster_to_h3", name: "Raster to H3 Bins" },
          { id: "write_pmtiles", name: "Raster to PMTiles" },
          { id: "raster_to_tiles", name: "Raster to XYZ Tiles" },
          { id: "read_geoparquet", name: "Read GeoParquet" },
          { id: "vector_convert", name: "Vector Convert" },
          { id: "vector_to_h3", name: "Vector to H3 Bins" },
          { id: "vector_to_pmtiles", name: "Vector to PMTiles" },
          { id: "write_geoparquet", name: "Write GeoParquet" },
        ],
      },
      {
        label: "Geometry & Topology",
        tools: [
          { id: "fix_dangling_arcs", name: "Fix Dangling Arcs" },
          { id: "lines_to_polygons", name: "Lines To Polygons" },
          { id: "multipart_to_singlepart", name: "Multipart To Singlepart" },
          { id: "polygons_to_lines", name: "Polygons To Lines" },
          { id: "remove_polygon_holes", name: "Remove Polygon Holes" },
          { id: "singlepart_to_multipart", name: "Singlepart To Multipart" },
          { id: "topology_rule_autofix", name: "Topology Rule Autofix" },
          { id: "topology_rule_validate", name: "Topology Rule Validate" },
          { id: "topology_validation_report", name: "Topology Validation Report" },
        ],
      },
      {
        label: "Raster/Vector Conversion",
        tools: [
          { id: "convert_nodata_to_zero", name: "Convert Nodata To Zero" },
          { id: "modify_nodata_value", name: "Modify Nodata Value" },
          { id: "new_raster_from_base_raster", name: "New Raster From Base Raster" },
          { id: "new_raster_from_base_vector", name: "New Raster From Base Vector" },
          { id: "raster_to_vector_lines", name: "Raster To Vector Lines" },
          { id: "raster_to_vector_points", name: "Raster To Vector Points" },
          { id: "raster_to_vector_polygons", name: "Raster To Vector Polygons" },
          { id: "remove_raster_polygon_holes", name: "Remove Raster Polygon Holes" },
          { id: "set_nodata_value", name: "Set Nodata Value" },
          { id: "vector_lines_to_raster", name: "Vector Lines To Raster" },
          { id: "vector_points_to_raster", name: "Vector Points To Raster" },
          { id: "vector_polygons_to_raster", name: "Vector Polygons To Raster" },
        ],
      },
      {
        label: "Vector & Table I/O",
        tools: [
          { id: "add_point_coordinates_to_table", name: "Add Point Coordinates To Table" },
          { id: "clean_vector", name: "Clean Vector" },
          { id: "csv_points_to_vector", name: "Csv Points To Vector" },
          { id: "export_table_to_csv", name: "Export Table To Csv" },
          { id: "join_tables", name: "Join Tables" },
          { id: "merge_table_with_csv", name: "Merge Table With Csv" },
          { id: "merge_vectors", name: "Merge Vectors" },
          { id: "reinitialize_attribute_table", name: "Reinitialize Attribute Table" },
          { id: "vector_summary_statistics", name: "Vector Summary Statistics" },
        ],
      },
    ],
  },
  {
    key: "hydrology",
    labelKey: "toolbar.item.hydrology",
    subcategories: [
      {
        label: "GeoLibre",
        tools: [
          { id: "delineate_depressions", name: "Delineate Depressions" },
          { id: "delineate_mounts", name: "Delineate Mounts" },
          { id: "enforce_river_monotonicity", name: "Enforce River Monotonicity" },
          { id: "extract_sinks", name: "Extract Sinks" },
          { id: "fill_spill_merge", name: "Fill-Spill-Merge" },
          { id: "topo_to_raster", name: "Topo To Raster" },
        ],
      },
      {
        label: "Depressions & Storage",
        tools: [
          { id: "breach_depressions_least_cost", name: "Breach Depressions Least Cost" },
          { id: "breach_single_cell_pits", name: "Breach Single Cell Pits" },
          { id: "burn_streams", name: "Burn Streams" },
          { id: "burn_streams_at_roads", name: "Burn Streams At Roads" },
          { id: "depth_in_sink", name: "Depth In Sink" },
          { id: "fill_burn", name: "Fill Burn" },
          { id: "fill_depressions", name: "Fill Depressions" },
          { id: "fill_depressions_planchon_and_darboux", name: "Fill Depressions Planchon And Darboux" },
          { id: "fill_depressions_wang_and_liu", name: "Fill Depressions Wang And Liu" },
          { id: "fill_pits", name: "Fill Pits" },
          { id: "flatten_lakes", name: "Flatten Lakes" },
          { id: "impoundment_size_index", name: "Impoundment Size Index" },
          { id: "insert_dams", name: "Insert Dams" },
          { id: "raise_walls", name: "Raise Walls" },
          { id: "sink", name: "Sink" },
          { id: "stochastic_depression_analysis", name: "Stochastic Depression Analysis" },
          { id: "topological_breach_burn", name: "Topological Breach Burn" },
          { id: "upslope_depression_storage", name: "Upslope Depression Storage" },
        ],
      },
      {
        label: "Flow Routing",
        tools: [
          { id: "average_flowpath_slope", name: "Average Flowpath Slope" },
          { id: "average_upslope_flowpath_length", name: "Average Upslope Flowpath Length" },
          { id: "d8_flow_accum", name: "D8 Flow Accum" },
          { id: "d8_mass_flux", name: "D8 Mass Flux" },
          { id: "d8_pointer", name: "D8 Pointer" },
          { id: "dinf_flow_accum", name: "Dinf Flow Accum" },
          { id: "dinf_mass_flux", name: "Dinf Mass Flux" },
          { id: "dinf_pointer", name: "Dinf Pointer" },
          { id: "downslope_flowpath_length", name: "Downslope Flowpath Length" },
          { id: "fd8_flow_accum", name: "Fd8 Flow Accum" },
          { id: "fd8_pointer", name: "Fd8 Pointer" },
          { id: "flow_accum_full_workflow", name: "Flow Accum Full Workflow" },
          { id: "flow_length_diff", name: "Flow Length Diff" },
          { id: "max_upslope_flowpath_length", name: "Max Upslope Flowpath Length" },
          { id: "max_upslope_value", name: "Max Upslope Value" },
          { id: "mdinf_flow_accum", name: "Mdinf Flow Accum" },
          { id: "minimal_dispersion_flow_algorithm", name: "Minimal Dispersion Flow Algorithm" },
          { id: "num_inflowing_neighbours", name: "Num Inflowing Neighbours" },
          { id: "qin_flow_accumulation", name: "Qin Flow Accumulation" },
          { id: "quinn_flow_accumulation", name: "Quinn Flow Accumulation" },
          { id: "rho8_flow_accum", name: "Rho8 Flow Accum" },
          { id: "rho8_pointer", name: "Rho8 Pointer" },
          { id: "trace_downslope_flowpaths", name: "Trace Downslope Flowpaths" },
        ],
      },
      {
        label: "Hydrologic Indices",
        tools: [
          { id: "depth_to_water", name: "Depth To Water" },
          { id: "distance_to_outlet", name: "Distance To Outlet" },
          { id: "downslope_distance_to_stream", name: "Downslope Distance To Stream" },
          { id: "downslope_index", name: "Downslope Index" },
          { id: "edge_contamination", name: "Edge Contamination" },
          { id: "elev_relative_to_watershed_min_max", name: "Elev Relative To Watershed Min Max" },
          { id: "elevation_above_stream", name: "Elevation Above Stream" },
          { id: "elevation_above_stream_euclidean", name: "Elevation Above Stream Euclidean" },
          { id: "find_noflow_cells", name: "Find Noflow Cells" },
          { id: "find_parallel_flow", name: "Find Parallel Flow" },
          { id: "hydrologic_connectivity", name: "Hydrologic Connectivity" },
          { id: "relative_stream_power_index", name: "Relative Stream Power Index" },
          { id: "sediment_transport_index", name: "Sediment Transport Index" },
          { id: "wetness_index", name: "Wetness Index" },
        ],
      },
      {
        label: "Streams - Longitudinal Analysis",
        tools: [
          { id: "farthest_channel_head", name: "Farthest Channel Head" },
          { id: "find_main_stem", name: "Find Main Stem" },
          { id: "length_of_upstream_channels", name: "Length Of Upstream Channels" },
          { id: "long_profile", name: "Long Profile" },
          { id: "long_profile_from_points", name: "Long Profile From Points" },
        ],
      },
      {
        label: "Streams - Network Extraction",
        tools: [
          { id: "extract_streams", name: "Extract Streams" },
          { id: "extract_valleys", name: "Extract Valleys" },
          { id: "prune_vector_streams", name: "Prune Vector Streams" },
          { id: "raster_streams_to_vector", name: "Raster Streams To Vector" },
          { id: "rasterize_streams", name: "Rasterize Streams" },
          { id: "remove_short_streams", name: "Remove Short Streams" },
          { id: "repair_stream_vector_topology", name: "Repair Stream Vector Topology" },
          { id: "river_centerlines", name: "River Centerlines" },
        ],
      },
      {
        label: "Streams - Ordering Metrics",
        tools: [
          { id: "hack_stream_order", name: "Hack Stream Order" },
          { id: "horton_ratios", name: "Horton Ratios" },
          { id: "horton_stream_order", name: "Horton Stream Order" },
          { id: "shreve_stream_magnitude", name: "Shreve Stream Magnitude" },
          { id: "strahler_order_basins", name: "Strahler Order Basins" },
          { id: "strahler_stream_order", name: "Strahler Stream Order" },
          { id: "stream_link_class", name: "Stream Link Class" },
          { id: "stream_link_identifier", name: "Stream Link Identifier" },
          { id: "stream_link_length", name: "Stream Link Length" },
          { id: "stream_link_slope", name: "Stream Link Slope" },
          { id: "stream_slope_continuous", name: "Stream Slope Continuous" },
          { id: "topological_stream_order", name: "Topological Stream Order" },
          { id: "tributary_identifier", name: "Tributary Identifier" },
          { id: "vector_stream_network_analysis", name: "Vector Stream Network Analysis" },
        ],
      },
      {
        label: "Watersheds & Basins",
        tools: [
          { id: "basins", name: "Basins" },
          { id: "flood_order", name: "Flood Order" },
          { id: "hillslopes", name: "Hillslopes" },
          { id: "isobasins", name: "Isobasins" },
          { id: "jenson_snap_pour_points", name: "Jenson Snap Pour Points" },
          { id: "longest_flowpath", name: "Longest Flowpath" },
          { id: "max_branch_length", name: "Max Branch Length" },
          { id: "snap_pour_points", name: "Snap Pour Points" },
          { id: "subbasins", name: "Subbasins" },
          { id: "unnest_basins", name: "Unnest Basins" },
          { id: "watershed", name: "Watershed" },
          { id: "watershed_from_raster_pour_points", name: "Watershed From Raster Pour Points" },
        ],
      },
    ],
  },
  {
    key: "lidar",
    labelKey: "toolbar.item.lidar",
    subcategories: [
      {
        label: "GeoLibre",
        tools: [
          { id: "assign_projection_lidar", name: "Assign Projection Lidar" },
        ],
      },
      {
        label: "Analysis Metrics",
        tools: [
          { id: "colourize_based_on_class", name: "Colourize Based On Class" },
          { id: "colourize_based_on_point_returns", name: "Colourize Based On Point Returns" },
          { id: "find_flightline_edge_points", name: "Find Flightline Edge Points" },
          { id: "individual_tree_detection", name: "Individual Tree Detection" },
          { id: "lidar_eigenvalue_features", name: "Lidar Eigenvalue Features" },
          { id: "lidar_histogram", name: "Lidar Histogram" },
          { id: "lidar_info", name: "Lidar Info" },
          { id: "lidar_kappa", name: "Lidar Kappa" },
          { id: "lidar_point_density", name: "Lidar Point Density" },
          { id: "lidar_point_return_analysis", name: "Lidar Point Return Analysis" },
          { id: "lidar_point_stats", name: "Lidar Point Stats" },
          { id: "lidar_ransac_planes", name: "Lidar Ransac Planes" },
          { id: "lidar_rooftop_analysis", name: "Lidar Rooftop Analysis" },
          { id: "normal_vectors", name: "Normal Vectors" },
        ],
      },
      {
        label: "Filtering & Classification",
        tools: [
          { id: "classify_buildings_in_lidar", name: "Classify Buildings In Lidar" },
          { id: "classify_lidar", name: "Classify Lidar" },
          { id: "classify_overlap_points", name: "Classify Overlap Points" },
          { id: "clip_lidar_to_polygon", name: "Clip Lidar To Polygon" },
          { id: "erase_polygon_from_lidar", name: "Erase Polygon From Lidar" },
          { id: "filter_lidar", name: "Filter Lidar" },
          { id: "filter_lidar_by_percentile", name: "Filter Lidar By Percentile" },
          { id: "filter_lidar_by_reference_surface", name: "Filter Lidar By Reference Surface" },
          { id: "filter_lidar_classes", name: "Filter Lidar Classes" },
          { id: "filter_lidar_noise", name: "Filter Lidar Noise" },
          { id: "filter_lidar_scan_angles", name: "Filter Lidar Scan Angles" },
          { id: "height_above_ground", name: "Height Above Ground" },
          { id: "improved_ground_point_filter", name: "Improved Ground Point Filter" },
          { id: "individual_tree_segmentation", name: "Individual Tree Segmentation" },
          { id: "lidar_classify_subset", name: "Lidar Classify Subset" },
          { id: "lidar_elevation_slice", name: "Lidar Elevation Slice" },
          { id: "lidar_remove_outliers", name: "Lidar Remove Outliers" },
          { id: "lidar_segmentation", name: "Lidar Segmentation" },
          { id: "lidar_segmentation_based_filter", name: "Lidar Segmentation Based Filter" },
          { id: "modify_lidar", name: "Modify Lidar" },
          { id: "normalize_lidar", name: "Normalize Lidar" },
          { id: "remove_duplicates", name: "Remove Duplicates" },
        ],
      },
      {
        label: "I/O & Management",
        tools: [
          { id: "ascii_to_las", name: "Ascii To Las" },
          { id: "las_to_ascii", name: "Las To Ascii" },
          { id: "las_to_shapefile", name: "Las To Shapefile" },
          { id: "lidar_colourize", name: "Lidar Colourize" },
          { id: "lidar_join", name: "Lidar Join" },
          { id: "lidar_shift", name: "Lidar Shift" },
          { id: "lidar_tile", name: "Lidar Tile" },
          { id: "lidar_tophat_transform", name: "Lidar Tophat Transform" },
          { id: "recover_flightline_info", name: "Recover Flightline Info" },
          { id: "select_tiles_by_polygon", name: "Select Tiles By Polygon" },
          { id: "sort_lidar", name: "Sort Lidar" },
          { id: "split_lidar", name: "Split Lidar" },
        ],
      },
      {
        label: "Interpolation & Gridding",
        tools: [
          { id: "flightline_overlap", name: "Flightline Overlap" },
          { id: "lidar_block_maximum", name: "Lidar Block Maximum" },
          { id: "lidar_block_minimum", name: "Lidar Block Minimum" },
          { id: "lidar_construct_vector_tin", name: "Lidar Construct Vector Tin" },
          { id: "lidar_contour", name: "Lidar Contour" },
          { id: "lidar_digital_surface_model", name: "Lidar Digital Surface Model" },
          { id: "lidar_hex_bin", name: "Lidar Hex Bin" },
          { id: "lidar_hillshade", name: "Lidar Hillshade" },
          { id: "lidar_idw_interpolation", name: "Lidar Idw Interpolation" },
          { id: "lidar_nearest_neighbour_gridding", name: "Lidar Nearest Neighbour Gridding" },
          { id: "lidar_radial_basis_function_interpolation", name: "Lidar Radial Basis Function Interpolation" },
          { id: "lidar_sibson_interpolation", name: "Lidar Sibson Interpolation" },
          { id: "lidar_thin", name: "Lidar Thin" },
          { id: "lidar_thin_high_density", name: "Lidar Thin High Density" },
          { id: "lidar_tile_footprint", name: "Lidar Tile Footprint" },
          { id: "lidar_tin_gridding", name: "Lidar Tin Gridding" },
        ],
      },
    ],
  },
  {
    key: "network",
    labelKey: "toolbar.item.network",
    subcategories: [
      {
        label: "Network Analysis",
        tools: [
          { id: "build_network_topology", name: "Build Network Topology" },
          { id: "closest_facility_network", name: "Closest Facility Network" },
          { id: "generate_network_nodes", name: "Generate Network Nodes" },
          { id: "k_shortest_paths_network", name: "K Shortest Paths Network" },
          { id: "location_allocation_network", name: "Location Allocation Network" },
          { id: "map_matching_v1", name: "Map Matching V1" },
          { id: "multimodal_od_cost_matrix", name: "Multimodal Od Cost Matrix" },
          { id: "multimodal_routes_from_od", name: "Multimodal Routes From Od" },
          { id: "multimodal_shortest_path", name: "Multimodal Shortest Path" },
          { id: "network_accessibility_metrics", name: "Network Accessibility Metrics" },
          { id: "network_centrality_metrics", name: "Network Centrality Metrics" },
          { id: "network_connected_components", name: "Network Connected Components" },
          { id: "network_node_degree", name: "Network Node Degree" },
          { id: "network_od_cost_matrix", name: "Network Od Cost Matrix" },
          { id: "network_routes_from_od", name: "Network Routes From Od" },
          { id: "network_service_area", name: "Network Service Area" },
          { id: "network_topology_audit", name: "Network Topology Audit" },
          { id: "od_sensitivity_analysis", name: "Od Sensitivity Analysis" },
          { id: "shortest_path_network", name: "Shortest Path Network" },
          { id: "snap_points_to_network", name: "Snap Points To Network" },
          { id: "split_lines_at_intersections", name: "Split Lines At Intersections" },
          { id: "transfer_attributes", name: "Transfer Attributes" },
          { id: "travelling_salesman_problem", name: "Travelling Salesman Problem" },
          { id: "vehicle_routing_cvrp", name: "Vehicle Routing Cvrp" },
          { id: "vehicle_routing_pickup_delivery", name: "Vehicle Routing Pickup Delivery" },
          { id: "vehicle_routing_vrptw", name: "Vehicle Routing Vrptw" },
        ],
      },
    ],
  },
  {
    key: "projection",
    labelKey: "toolbar.item.projection",
    subcategories: [
      {
        label: "General",
        tools: [
          { id: "georeference_raster_from_control_points", name: "Georeference Raster From Control Points" },
          { id: "orthorectification", name: "Orthorectification" },
          { id: "reproject_lidar", name: "Reproject Lidar" },
          { id: "reproject_vector", name: "Reproject Vector" },
        ],
      },
    ],
  },
  {
    key: "raster",
    labelKey: "toolbar.item.raster",
    subcategories: [
      {
        label: "GeoLibre",
        tools: [
          { id: "analyze_changes_ccdc", name: "Analyze Changes Using CCDC" },
          { id: "assign_projection_raster", name: "Assign Projection Raster" },
          { id: "band_collection_statistics", name: "Band Collection Statistics" },
          { id: "block_statistics", name: "Block Statistics" },
          { id: "boundary_clean", name: "Boundary Clean" },
          { id: "cell_statistics", name: "Cell Statistics" },
          { id: "classification_accuracy_assessment", name: "Classification Accuracy Assessment" },
          { id: "combine", name: "Combine" },
          { id: "contour_with_barriers", name: "Contour With Barriers" },
          { id: "corridor", name: "Corridor" },
          { id: "cut_fill", name: "Cut Fill" },
          { id: "darcy_flow", name: "Darcy Flow" },
          { id: "dem_filter", name: "DEM Filter" },
          { id: "detect_image_anomalies", name: "Detect Image Anomalies" },
          { id: "diffusion_interpolation_with_barriers", name: "Diffusion Interpolation With Barriers" },
          { id: "empirical_bayesian_kriging", name: "Empirical Bayesian Kriging" },
          { id: "euclidean_direction", name: "Euclidean Direction" },
          { id: "expand_shrink", name: "Expand / Shrink" },
          { id: "extract_cog_subset", name: "Extract COG Subset" },
          { id: "extract_wms_subset", name: "Extract WMS Subset" },
          { id: "extract_xyz_tile_subset", name: "Extract XYZ Tile Subset" },
          { id: "find_argument_statistics", name: "Find Argument Statistics" },
          { id: "focal_flow", name: "Focal Flow" },
          { id: "focal_statistics", name: "Focal Statistics" },
          { id: "fuzzy_overlay", name: "Fuzzy Overlay" },
          { id: "gaussian_geostatistical_simulations", name: "Gaussian Geostatistical Simulations" },
          { id: "multidimensional_anomaly", name: "Generate Multidimensional Anomaly" },
          { id: "generate_trend_raster", name: "Generate Trend Raster" },
          { id: "idw_3d", name: "IDW 3D" },
          { id: "interpolate_from_spatiotemporal_points", name: "Interpolate From Spatiotemporal Points" },
          { id: "interpolate_with_barriers", name: "Interpolate With Barriers" },
          { id: "kernel_density_ratio", name: "Kernel Density Ratio" },
          { id: "kernel_interpolation_with_barriers", name: "Kernel Interpolation With Barriers" },
          { id: "landtrendr", name: "LandTrendr" },
          { id: "las_height_metrics", name: "LAS Height Metrics" },
          { id: "line_density", name: "Line Density" },
          { id: "line_statistics", name: "Line Statistics" },
          { id: "local_polynomial_interpolation", name: "Local Polynomial Interpolation" },
          { id: "locate_regions", name: "Locate Regions" },
          { id: "matched_filter_target_detection", name: "Matched Filter Target Detection (CEM/ACE)" },
          { id: "maximum_likelihood_classification", name: "Maximum Likelihood Classification" },
          { id: "multicriteria_overlay", name: "Multicriteria Overlay" },
          { id: "multilook", name: "Multilook" },
          { id: "optimal_interpolation", name: "Optimal Interpolation" },
          { id: "path_distance", name: "Path Distance" },
          { id: "percentile_contours", name: "Percentile Contours" },
          { id: "point_statistics", name: "Point Statistics" },
          { id: "porous_puff", name: "Porous Puff" },
          { id: "predict_using_trend_raster", name: "Predict Using Trend Raster" },
          { id: "presence_only_prediction", name: "Presence-only Prediction" },
          { id: "pycnophylactic_interpolation", name: "Pycnophylactic Interpolation" },
          { id: "raster_normalize", name: "Raster Normalize" },
          { id: "render_raster_png", name: "Render Raster to PNG" },
          { id: "reproject_raster", name: "Reproject Raster" },
          { id: "rescale_by_function", name: "Rescale By Function" },
          { id: "sar_coherence", name: "SAR Coherence" },
          { id: "slice_raster", name: "Slice Raster" },
          { id: "solar_radiation", name: "Solar Radiation" },
          { id: "space_time_kernel_density", name: "Space Time Kernel Density" },
          { id: "spatial_association_between_zones", name: "Spatial Association Between Zones" },
          { id: "spectral_index", name: "Spectral Index" },
          { id: "split_raster", name: "Split Raster" },
          { id: "storage_capacity", name: "Storage Capacity" },
          { id: "summarize_categorical_raster", name: "Summarize Categorical Raster" },
          { id: "surface_parameters", name: "Surface Parameters" },
          { id: "surface_volume", name: "Surface Volume" },
          { id: "time_series_cross_correlation", name: "Time Series Cross Correlation" },
          { id: "warp_raster", name: "Warp Raster" },
          { id: "weighted_voronoi", name: "Weighted Voronoi" },
          { id: "zonal_characterization", name: "Zonal Characterization" },
          { id: "zonal_fill", name: "Zonal Fill" },
          { id: "zonal_geometry", name: "Zonal Geometry" },
          { id: "zonal_histogram", name: "Zonal Histogram" },
        ],
      },
      {
        label: "General",
        tools: [
          { id: "abs", name: "Abs" },
          { id: "aggregate_raster", name: "Aggregate Raster" },
          { id: "anova", name: "Anova" },
          { id: "arccos", name: "Arccos" },
          { id: "arcosh", name: "Arcosh" },
          { id: "arcsin", name: "Arcsin" },
          { id: "arctan", name: "Arctan" },
          { id: "arsinh", name: "Arsinh" },
          { id: "artanh", name: "Artanh" },
          { id: "atan2", name: "Atan2" },
          { id: "block_maximum", name: "Block Maximum" },
          { id: "block_minimum", name: "Block Minimum" },
          { id: "boundary_shape_complexity", name: "Boundary Shape Complexity" },
          { id: "ceil", name: "Ceil" },
          { id: "centroid_raster", name: "Centroid Raster" },
          { id: "clip_raster_to_polygon", name: "Clip Raster To Polygon" },
          { id: "clump", name: "Clump" },
          { id: "cos", name: "Cos" },
          { id: "cosh", name: "Cosh" },
          { id: "create_plane", name: "Create Plane" },
          { id: "crispness_index", name: "Crispness Index" },
          { id: "cross_tabulation", name: "Cross Tabulation" },
          { id: "cumulative_distribution", name: "Cumulative Distribution" },
          { id: "dbscan", name: "Dbscan" },
          { id: "decrement", name: "Decrement" },
          { id: "edge_proportion", name: "Edge Proportion" },
          { id: "equal_to", name: "Equal To" },
          { id: "erase_polygon_from_raster", name: "Erase Polygon From Raster" },
          { id: "exp", name: "Exp" },
          { id: "exp2", name: "Exp2" },
          { id: "fft_random_field", name: "Fft Random Field" },
          { id: "filter_raster_features_by_area", name: "Filter Raster Features By Area" },
          { id: "find_patch_edge_cells", name: "Find Patch Edge Cells" },
          { id: "floor", name: "Floor" },
          { id: "greater_than", name: "Greater Than" },
          { id: "greater_than_or_equal_to", name: "GreaterThanOrEqualTo" },
          { id: "heat_map", name: "Heat Map" },
          { id: "idw_interpolation", name: "Idw Interpolation" },
          { id: "image_autocorrelation", name: "Image Autocorrelation" },
          { id: "image_correlation", name: "Image Correlation" },
          { id: "image_regression", name: "Image Regression" },
          { id: "increment", name: "Increment" },
          { id: "inplace_add", name: "Inplace Add" },
          { id: "inplace_divide", name: "Inplace Divide" },
          { id: "inplace_multiply", name: "Inplace Multiply" },
          { id: "inplace_subtract", name: "Inplace Subtract" },
          { id: "integer_division", name: "Integer Division" },
          { id: "inverse_pca", name: "Inverse Pca" },
          { id: "is_nodata", name: "Is Nodata" },
          { id: "kappa_index", name: "Kappa Index" },
          { id: "ks_normality_test", name: "Ks Normality Test" },
          { id: "less_than", name: "Less Than" },
          { id: "less_than_or_equal_to", name: "LessThanOrEqualTo" },
          { id: "list_unique_values_raster", name: "List Unique Values Raster" },
          { id: "ln", name: "Ln" },
          { id: "log10", name: "Log10" },
          { id: "log2", name: "Log2" },
          { id: "map_features", name: "Map Features" },
          { id: "max", name: "Max" },
          { id: "min", name: "Min" },
          { id: "modified_shepard_interpolation", name: "Modified Shepard Interpolation" },
          { id: "narrowness_index", name: "Narrowness Index" },
          { id: "negate", name: "Negate" },
          { id: "nibble", name: "Nibble" },
          { id: "not_equal_to", name: "Not Equal To" },
          { id: "ordinary_cokriging", name: "Ordinary CoKriging Interpolation" },
          { id: "paired_sample_t_test", name: "Paired Sample T Test" },
          { id: "phi_coefficient", name: "Phi Coefficient" },
          { id: "principal_component_analysis", name: "Principal Component Analysis" },
          { id: "print_geotiff_tags", name: "Print Geotiff Tags" },
          { id: "quantiles", name: "Quantiles" },
          { id: "radial_basis_function_interpolation", name: "Radial Basis Function Interpolation" },
          { id: "radius_of_gyration", name: "Radius Of Gyration" },
          { id: "random_field", name: "Random Field" },
          { id: "random_forest_classification_fit", name: "Random Forest Classification Fit" },
          { id: "random_forest_classification_predict", name: "Random Forest Classification Predict" },
          { id: "random_forest_regression_fit", name: "Random Forest Regression Fit" },
          { id: "random_forest_regression_predict", name: "Random Forest Regression Predict" },
          { id: "random_sample", name: "Random Sample" },
          { id: "raster_area", name: "Raster Area" },
          { id: "raster_calculator", name: "Raster Calculator" },
          { id: "raster_cell_assignment", name: "Raster Cell Assignment" },
          { id: "raster_histogram", name: "Raster Histogram" },
          { id: "raster_perimeter", name: "Raster Perimeter" },
          { id: "raster_summary_stats", name: "Raster Summary Stats" },
          { id: "reciprocal", name: "Reciprocal" },
          { id: "rescale_value_range", name: "Rescale Value Range" },
          { id: "root_mean_square_error", name: "Root Mean Square Error" },
          { id: "round", name: "Round" },
          { id: "shape_complexity_index_raster", name: "Shape Complexity Index Raster" },
          { id: "sieve", name: "Sieve" },
          { id: "sin", name: "Sin" },
          { id: "sinh", name: "Sinh" },
          { id: "sqrt", name: "Sqrt" },
          { id: "square", name: "Square" },
          { id: "tan", name: "Tan" },
          { id: "tanh", name: "Tanh" },
          { id: "tin_interpolation", name: "Tin Interpolation" },
          { id: "to_degrees", name: "To Degrees" },
          { id: "to_radians", name: "To Radians" },
          { id: "trend_surface", name: "Trend Surface" },
          { id: "trend_surface_vector_points", name: "Trend Surface Vector Points" },
          { id: "truncate", name: "Truncate" },
          { id: "turning_bands_simulation", name: "Turning Bands Simulation" },
          { id: "two_sample_ks_test", name: "Two Sample Ks Test" },
          { id: "wilcoxon_signed_rank_test", name: "Wilcoxon Signed Rank Test" },
          { id: "z_scores", name: "Z Scores" },
          { id: "zonal_statistics", name: "Zonal Statistics" },
        ],
      },
      {
        label: "Distance & Cost",
        tools: [
          { id: "buffer_raster", name: "Buffer Raster" },
          { id: "cost_allocation", name: "Cost Allocation" },
          { id: "cost_distance", name: "Cost Distance" },
          { id: "cost_pathway", name: "Cost Pathway" },
          { id: "euclidean_allocation", name: "Euclidean Allocation" },
          { id: "euclidean_distance", name: "Euclidean Distance" },
        ],
      },
      {
        label: "Local Neighborhood",
        tools: [
          { id: "image_correlation_neighbourhood_analysis", name: "Image Correlation Neighbourhood Analysis" },
          { id: "natural_neighbour_interpolation", name: "Natural Neighbour Interpolation" },
          { id: "nearest_neighbour_interpolation", name: "Nearest Neighbour Interpolation" },
        ],
      },
      {
        label: "Overlay Math",
        tools: [
          { id: "add", name: "Add" },
          { id: "average_overlay", name: "Average Overlay" },
          { id: "bool_and", name: "Bool And" },
          { id: "bool_not", name: "Bool Not" },
          { id: "bool_or", name: "Bool Or" },
          { id: "bool_xor", name: "Bool Xor" },
          { id: "count_if", name: "Count If" },
          { id: "divide", name: "Divide" },
          { id: "highest_position", name: "Highest Position" },
          { id: "lowest_position", name: "Lowest Position" },
          { id: "max_absolute_overlay", name: "Max Absolute Overlay" },
          { id: "max_overlay", name: "Max Overlay" },
          { id: "min_absolute_overlay", name: "Min Absolute Overlay" },
          { id: "min_overlay", name: "Min Overlay" },
          { id: "modulo", name: "Modulo" },
          { id: "multiply", name: "Multiply" },
          { id: "multiply_overlay", name: "Multiply Overlay" },
          { id: "percent_equal_to", name: "Percent Equal To" },
          { id: "percent_greater_than", name: "Percent Greater Than" },
          { id: "percent_less_than", name: "Percent Less Than" },
          { id: "pick_from_list", name: "Pick From List" },
          { id: "power", name: "Power" },
          { id: "standard_deviation_overlay", name: "Standard Deviation Overlay" },
          { id: "subtract", name: "Subtract" },
          { id: "sum_overlay", name: "Sum Overlay" },
          { id: "update_nodata_cells", name: "Update Nodata Cells" },
          { id: "weighted_overlay", name: "Weighted Overlay" },
          { id: "weighted_sum", name: "Weighted Sum" },
        ],
      },
      {
        label: "Reclassify & Mask",
        tools: [
          { id: "conditional_evaluation", name: "Conditional Evaluation" },
          { id: "reclass", name: "Reclass" },
          { id: "reclass_equal_interval", name: "Reclass Equal Interval" },
        ],
      },
      {
        label: "Spatial Statistics",
        tools: [
          { id: "geographically_weighted_regression_raster", name: "Geographically Weighted Regression Raster" },
          { id: "getis_ord_gi_star_raster", name: "Getis Ord Gi Star Raster" },
          { id: "inhomogeneous_intensity_raster", name: "Inhomogeneous Intensity Raster" },
          { id: "local_kriging", name: "Local Kriging" },
          { id: "local_morans_i_lisa_raster", name: "Local Morans I Lisa Raster" },
          { id: "ordinary_kriging", name: "Ordinary Kriging" },
          { id: "simple_kriging", name: "Simple Kriging" },
          { id: "spacetime_kriging", name: "Spacetime Kriging" },
          { id: "spatial_error_regression_raster", name: "Spatial Error Regression Raster" },
          { id: "spatial_lag_regression_raster", name: "Spatial Lag Regression Raster" },
          { id: "universal_kriging", name: "Universal Kriging" },
        ],
      },
    ],
  },
  {
    key: "remoteSensing",
    labelKey: "toolbar.item.remoteSensing",
    subcategories: [
      {
        label: "Change Detection",
        tools: [
          { id: "change_vector_analysis", name: "Change Vector Analysis" },
          { id: "image_difference_change_detection", name: "Image Difference Change Detection" },
          { id: "pca_based_change_detection", name: "Pca Based Change Detection" },
          { id: "post_classification_change", name: "Post Classification Change" },
          { id: "write_function_memory_insertion", name: "Write Function Memory Insertion" },
        ],
      },
      {
        label: "Classification",
        tools: [
          { id: "evaluate_training_sites", name: "Evaluate Training Sites" },
          { id: "fuzzy_knn_classification", name: "Fuzzy Knn Classification" },
          { id: "generalize_classified_raster", name: "Generalize Classified Raster" },
          { id: "generalize_with_similarity", name: "Generalize With Similarity" },
          { id: "k_means_clustering", name: "K Means Clustering" },
          { id: "knn_classification", name: "Knn Classification" },
          { id: "knn_regression", name: "Knn Regression" },
          { id: "logistic_regression", name: "Logistic Regression" },
          { id: "min_dist_classification", name: "Min Dist Classification" },
          { id: "modified_k_means_clustering", name: "Modified K Means Clustering" },
          { id: "nnd_classification", name: "Nnd Classification" },
          { id: "otsu_thresholding", name: "Otsu Thresholding" },
          { id: "parallelepiped_classification", name: "Parallelepiped Classification" },
          { id: "random_forest_classification", name: "Random Forest Classification" },
          { id: "random_forest_regression", name: "Random Forest Regression" },
          { id: "svm_classification", name: "Svm Classification" },
          { id: "svm_regression", name: "Svm Regression" },
        ],
      },
      {
        label: "Edge & Feature Detection",
        tools: [
          { id: "canny_edge_detection", name: "Canny Edge Detection" },
          { id: "corner_detection", name: "Corner Detection" },
          { id: "laplacian_filter", name: "Laplacian Filter" },
          { id: "laplacian_of_gaussians_filter", name: "Laplacian Of Gaussians Filter" },
          { id: "prewitt_filter", name: "Prewitt Filter" },
          { id: "roberts_cross_filter", name: "Roberts Cross Filter" },
          { id: "sobel_filter", name: "Sobel Filter" },
        ],
      },
      {
        label: "Enhancement & Contrast",
        tools: [
          { id: "balance_contrast_enhancement", name: "Balance Contrast Enhancement" },
          { id: "create_colour_composite", name: "Create Colour Composite" },
          { id: "direct_decorrelation_stretch", name: "Direct Decorrelation Stretch" },
          { id: "false_colour_composite", name: "False Colour Composite" },
          { id: "gamma_correction", name: "Gamma Correction" },
          { id: "gaussian_contrast_stretch", name: "Gaussian Contrast Stretch" },
          { id: "histogram_equalization", name: "Histogram Equalization" },
          { id: "histogram_matching", name: "Histogram Matching" },
          { id: "histogram_matching_two_images", name: "Histogram Matching Two Images" },
          { id: "ihs_to_rgb", name: "Ihs To Rgb" },
          { id: "min_max_contrast_stretch", name: "Min Max Contrast Stretch" },
          { id: "mosaic", name: "Mosaic" },
          { id: "mosaic_with_feathering", name: "Mosaic With Feathering" },
          { id: "normalized_difference_index", name: "Normalized Difference Index" },
          { id: "panchromatic_sharpening", name: "Panchromatic Sharpening" },
          { id: "percentage_contrast_stretch", name: "Percentage Contrast Stretch" },
          { id: "piecewise_contrast_stretch", name: "Piecewise Contrast Stretch" },
          { id: "resample", name: "Resample" },
          { id: "rgb_to_ihs", name: "Rgb To Ihs" },
          { id: "sigmoidal_contrast_stretch", name: "Sigmoidal Contrast Stretch" },
          { id: "split_colour_composite", name: "Split Colour Composite" },
          { id: "standard_deviation_contrast_stretch", name: "Standard Deviation Contrast Stretch" },
          { id: "true_colour_composite", name: "True Colour Composite" },
        ],
      },
      {
        label: "Filters",
        tools: [
          { id: "adaptive_filter", name: "Adaptive Filter" },
          { id: "anisotropic_diffusion_filter", name: "Anisotropic Diffusion Filter" },
          { id: "bilateral_filter", name: "Bilateral Filter" },
          { id: "closing", name: "Closing" },
          { id: "conservative_smoothing_filter", name: "Conservative Smoothing Filter" },
          { id: "diff_of_gaussians_filter", name: "Diff Of Gaussians Filter" },
          { id: "diversity_filter", name: "Diversity Filter" },
          { id: "edge_preserving_mean_filter", name: "Edge Preserving Mean Filter" },
          { id: "emboss_filter", name: "Emboss Filter" },
          { id: "fast_almost_gaussian_filter", name: "Fast Almost Gaussian Filter" },
          { id: "flip_image", name: "Flip Image" },
          { id: "frangi_filter", name: "Frangi Filter" },
          { id: "gabor_filter_bank", name: "Gabor Filter Bank" },
          { id: "gaussian_filter", name: "Gaussian Filter" },
          { id: "glcm_texture", name: "Glcm Texture" },
          { id: "guided_filter", name: "Guided Filter" },
          { id: "high_pass_bilateral_filter", name: "High Pass Bilateral Filter" },
          { id: "high_pass_filter", name: "High Pass Filter" },
          { id: "high_pass_median_filter", name: "High Pass Median Filter" },
          { id: "integral_image_transform", name: "Integral Image Transform" },
          { id: "k_nearest_mean_filter", name: "K Nearest Mean Filter" },
          { id: "kuwahara_filter", name: "Kuwahara Filter" },
          { id: "lee_filter", name: "Lee Filter" },
          { id: "lidar_ground_point_filter", name: "Lidar Ground Point Filter" },
          { id: "line_detection_filter", name: "Line Detection Filter" },
          { id: "line_thinning", name: "Line Thinning" },
          { id: "majority_filter", name: "Majority Filter" },
          { id: "maximum_filter", name: "Maximum Filter" },
          { id: "mean_filter", name: "Mean Filter" },
          { id: "median_filter", name: "Median Filter" },
          { id: "minimum_filter", name: "Minimum Filter" },
          { id: "non_local_means_filter", name: "Non Local Means Filter" },
          { id: "olympic_filter", name: "Olympic Filter" },
          { id: "opening", name: "Opening" },
          { id: "percentile_filter", name: "Percentile Filter" },
          { id: "range_filter", name: "Range Filter" },
          { id: "remove_spurs", name: "Remove Spurs" },
          { id: "savitzky_golay_2d_filter", name: "Savitzky Golay 2d Filter" },
          { id: "scharr_filter", name: "Scharr Filter" },
          { id: "standard_deviation_filter", name: "Standard Deviation Filter" },
          { id: "thicken_raster_line", name: "Thicken Raster Line" },
          { id: "tophat_transform", name: "Tophat Transform" },
          { id: "total_filter", name: "Total Filter" },
          { id: "unsharp_masking", name: "Unsharp Masking" },
          { id: "user_defined_weights_filter", name: "User Defined Weights Filter" },
          { id: "wiener_filter", name: "Wiener Filter" },
        ],
      },
      {
        label: "OBIA",
        tools: [
          { id: "build_object_hierarchy_multiscale", name: "Build Object Hierarchy Multiscale" },
          { id: "classify_objects_ensemble_pro", name: "Classify Objects Ensemble Pro" },
          { id: "classify_objects_random_forest", name: "Classify Objects Random Forest" },
          { id: "classify_objects_rules_basic", name: "Classify Objects Rules Basic" },
          { id: "classify_objects_rules_hierarchical", name: "Classify Objects Rules Hierarchical" },
          { id: "classify_objects_svm", name: "Classify Objects Svm" },
          { id: "evaluate_object_classification_accuracy", name: "Evaluate Object Classification Accuracy" },
          { id: "evaluate_segmentation_quality_pro", name: "Evaluate Segmentation Quality Pro" },
          { id: "image_segmentation", name: "Image Segmentation" },
          { id: "image_slider", name: "Image Slider" },
          { id: "image_stack_profile", name: "Image Stack Profile" },
          { id: "obia_audit_report_pro", name: "Obia Audit Report Pro" },
          { id: "obia_batch_orchestrator_pro", name: "Obia Batch Orchestrator Pro" },
          { id: "obia_pipeline_basic", name: "Obia Pipeline Basic" },
          { id: "object_class_probability_maps", name: "Object Class Probability Maps" },
          { id: "object_features_context_neighbors", name: "Object Features Context Neighbors" },
          { id: "object_features_shape_basic", name: "Object Features Shape Basic" },
          { id: "object_features_spectral_basic", name: "Object Features Spectral Basic" },
          { id: "object_features_texture_glcm_basic", name: "Object Features Texture Glcm Basic" },
          { id: "object_features_topology_relations", name: "Object Features Topology Relations" },
          { id: "object_uncertainty_diagnostics_pro", name: "Object Uncertainty Diagnostics Pro" },
          { id: "objects_boundary_refinement_pro", name: "Objects Boundary Refinement Pro" },
          { id: "objects_enforce_min_mapping_unit", name: "Objects Enforce Min Mapping Unit" },
          { id: "polygons_to_segments", name: "Polygons To Segments" },
          { id: "propagate_labels_across_hierarchy", name: "Propagate Labels Across Hierarchy" },
          { id: "segment_graph_felzenszwalb", name: "Segment Graph Felzenszwalb" },
          { id: "segment_multiresolution_hierarchical", name: "Segment Multiresolution Hierarchical" },
          { id: "segment_scale_parameter_optimizer", name: "Segment Scale Parameter Optimizer" },
          { id: "segment_slic_superpixels", name: "Segment Slic Superpixels" },
          { id: "segment_watershed_markers", name: "Segment Watershed Markers" },
          { id: "segments_merge_small_regions", name: "Segments Merge Small Regions" },
          { id: "segments_split_low_cohesion", name: "Segments Split Low Cohesion" },
          { id: "segments_to_polygons", name: "Segments To Polygons" },
        ],
      },
      {
        label: "Radiometric Correction",
        tools: [
          { id: "brdf_normalization", name: "Brdf Normalization" },
          { id: "correct_vignetting", name: "Correct Vignetting" },
          { id: "dark_object_subtraction", name: "Dark Object Subtraction" },
          { id: "dn_to_toa_reflectance", name: "Dn To Toa Reflectance" },
          { id: "terrain_corrected_optical_analytics", name: "Terrain Corrected Optical Analytics" },
        ],
      },
      {
        label: "SAR",
        tools: [
          { id: "cloude_pottier_decomposition", name: "Cloude Pottier Decomposition" },
          { id: "enhanced_lee_filter", name: "Enhanced Lee Filter" },
          { id: "freeman_durden_decomposition", name: "Freeman Durden Decomposition" },
          { id: "frost_filter", name: "Frost Filter" },
          { id: "gamma_map_filter", name: "Gamma Map Filter" },
          { id: "h_alpha_wisart_classification", name: "H Alpha Wisart Classification" },
          { id: "kuan_filter", name: "Kuan Filter" },
          { id: "refined_lee_filter", name: "Refined Lee Filter" },
          { id: "wisart_iterative_clustering", name: "Wisart Iterative Clustering" },
          { id: "yamaguchi_4component_decomposition", name: "Yamaguchi 4component Decomposition" },
        ],
      },
      {
        label: "Spectral Analytics",
        tools: [
          { id: "continuum_removal", name: "Continuum Removal" },
          { id: "linear_spectral_unmixing", name: "Linear Spectral Unmixing" },
          { id: "minimum_noise_fraction", name: "Minimum Noise Fraction" },
          { id: "spectral_angle_mapper", name: "Spectral Angle Mapper" },
          { id: "spectral_library_matching", name: "Spectral Library Matching" },
        ],
      },
      {
        label: "Thermal & Emissivity",
        tools: [
          { id: "land_surface_temperature_single_channel", name: "Land Surface Temperature Single Channel" },
          { id: "land_surface_temperature_split_window", name: "Land Surface Temperature Split Window" },
          { id: "ndvi_based_emissivity", name: "Ndvi Based Emissivity" },
        ],
      },
    ],
  },
  {
    key: "terrain",
    labelKey: "toolbar.item.terrain",
    subcategories: [
      {
        label: "General",
        tools: [
          { id: "assess_route", name: "Assess Route" },
          { id: "breakline_mapping", name: "Breakline Mapping" },
          { id: "convergence_index", name: "Convergence Index" },
          { id: "dem_void_filling", name: "Dem Void Filling" },
          { id: "deviation_from_mean_elevation", name: "Deviation From Mean Elevation" },
          { id: "difference_from_mean_elevation", name: "Difference From Mean Elevation" },
          { id: "directional_relief", name: "Directional Relief" },
          { id: "elev_above_pit", name: "Elev Above Pit" },
          { id: "elev_above_pit_dist", name: "Elev Above Pit Dist" },
          { id: "elevation_percentile", name: "Elevation Percentile" },
          { id: "embankment_mapping", name: "Embankment Mapping" },
          { id: "exposure_towards_wind_flux", name: "Exposure Towards Wind Flux" },
          { id: "feature_preserving_smoothing", name: "Feature Preserving Smoothing" },
          { id: "feature_preserving_smoothing_multiscale", name: "Feature Preserving Smoothing Multiscale" },
          { id: "fetch_analysis", name: "Fetch Analysis" },
          { id: "fill_missing_data", name: "Fill Missing Data" },
          { id: "find_ridges", name: "Find Ridges" },
          { id: "hillshade", name: "Hillshade" },
          { id: "hypsometrically_tinted_hillshade", name: "Hypsometrically Tinted Hillshade" },
          { id: "local_hypsometric_analysis", name: "Local Hypsometric Analysis" },
          { id: "low_points_on_headwater_divides", name: "Low Points On Headwater Divides" },
          { id: "map_off_terrain_objects", name: "Map Off Terrain Objects" },
          { id: "max_downslope_elev_change", name: "Max Downslope Elev Change" },
          { id: "max_upslope_elev_change", name: "Max Upslope Elev Change" },
          { id: "min_downslope_elev_change", name: "Min Downslope Elev Change" },
          { id: "multidirectional_hillshade", name: "Multidirectional Hillshade" },
          { id: "num_downslope_neighbours", name: "Num Downslope Neighbours" },
          { id: "num_upslope_neighbours", name: "Num Upslope Neighbours" },
          { id: "profile", name: "Profile" },
          { id: "remove_off_terrain_objects", name: "Remove Off Terrain Objects" },
          { id: "ridge_and_valley_vectors", name: "Ridge And Valley Vectors" },
          { id: "slope_vs_aspect_plot", name: "Slope Vs Aspect Plot" },
          { id: "slope_vs_elev_plot", name: "Slope Vs Elev Plot" },
          { id: "smooth_vegetation_residual", name: "Smooth Vegetation Residual" },
          { id: "surface_area_ratio", name: "Surface Area Ratio" },
          { id: "topographic_hachures", name: "Topographic Hachures" },
        ],
      },
      {
        label: "Derivatives",
        tools: [
          { id: "accumulation_curvature", name: "Accumulation Curvature" },
          { id: "aspect", name: "Aspect" },
          { id: "casorati_curvature", name: "Casorati Curvature" },
          { id: "curvedness", name: "Curvedness" },
          { id: "difference_curvature", name: "Difference Curvature" },
          { id: "gaussian_curvature", name: "Gaussian Curvature" },
          { id: "generating_function", name: "Generating Function" },
          { id: "horizontal_excess_curvature", name: "Horizontal Excess Curvature" },
          { id: "maximal_curvature", name: "Maximal Curvature" },
          { id: "mean_curvature", name: "Mean Curvature" },
          { id: "minimal_curvature", name: "Minimal Curvature" },
          { id: "plan_curvature", name: "Plan Curvature" },
          { id: "principal_curvature_direction", name: "Principal Curvature Direction" },
          { id: "profile_curvature", name: "Profile Curvature" },
          { id: "relative_aspect", name: "Relative Aspect" },
          { id: "ring_curvature", name: "Ring Curvature" },
          { id: "rotor", name: "Rotor" },
          { id: "shape_index", name: "Shape Index" },
          { id: "slope", name: "Slope" },
          { id: "tangential_curvature", name: "Tangential Curvature" },
          { id: "total_curvature", name: "Total Curvature" },
          { id: "unsphericity", name: "Unsphericity" },
          { id: "vertical_excess_curvature", name: "Vertical Excess Curvature" },
        ],
      },
      {
        label: "Landform Indices",
        tools: [
          { id: "elev_relative_to_min_max", name: "Elev Relative To Min Max" },
          { id: "geomorphons", name: "Geomorphons" },
          { id: "hypsometric_analysis", name: "Hypsometric Analysis" },
          { id: "multiscale_topographic_position_class", name: "Multiscale Topographic Position Class" },
          { id: "pennock_landform_classification", name: "Pennock Landform Classification" },
          { id: "percent_elev_range", name: "Percent Elev Range" },
          { id: "relative_topographic_position", name: "Relative Topographic Position" },
        ],
      },
      {
        label: "Multiscale Signatures",
        tools: [
          { id: "max_anisotropy_dev", name: "Max Anisotropy Dev" },
          { id: "max_anisotropy_dev_signature", name: "Max Anisotropy Dev Signature" },
          { id: "max_difference_from_mean", name: "Max Difference From Mean" },
          { id: "max_elev_dev_signature", name: "Max Elev Dev Signature" },
          { id: "max_elevation_deviation", name: "Max Elevation Deviation" },
          { id: "multiscale_curvatures", name: "Multiscale Curvatures" },
          { id: "multiscale_elevated_index", name: "Multiscale Elevated Index" },
          { id: "multiscale_elevation_percentile", name: "Multiscale Elevation Percentile" },
          { id: "multiscale_low_lying_index", name: "Multiscale Low Lying Index" },
          { id: "multiscale_roughness", name: "Multiscale Roughness" },
          { id: "multiscale_roughness_signature", name: "Multiscale Roughness Signature" },
          { id: "multiscale_std_dev_normals", name: "Multiscale Std Dev Normals" },
          { id: "multiscale_std_dev_normals_signature", name: "Multiscale Std Dev Normals Signature" },
          { id: "multiscale_topographic_position_image", name: "Multiscale Topographic Position Image" },
          { id: "topographic_position_animation", name: "Topographic Position Animation" },
        ],
      },
      {
        label: "Roughness & Texture",
        tools: [
          { id: "average_normal_vector_angular_deviation", name: "Average Normal Vector Angular Deviation" },
          { id: "circular_variance_of_aspect", name: "Circular Variance Of Aspect" },
          { id: "edge_density", name: "Edge Density" },
          { id: "ruggedness_index", name: "Ruggedness Index" },
          { id: "spherical_std_dev_of_normals", name: "Spherical Std Dev Of Normals" },
          { id: "standard_deviation_of_slope", name: "Standard Deviation Of Slope" },
        ],
      },
      {
        label: "Visibility",
        tools: [
          { id: "average_horizon_distance", name: "Average Horizon Distance" },
          { id: "horizon_angle", name: "Horizon Angle" },
          { id: "horizon_area", name: "Horizon Area" },
          { id: "openness", name: "Openness" },
          { id: "shadow_animation", name: "Shadow Animation" },
          { id: "shadow_image", name: "Shadow Image" },
          { id: "sky_view_factor", name: "Sky View Factor" },
          { id: "skyline_analysis", name: "Skyline Analysis" },
          { id: "time_in_daylight", name: "Time In Daylight" },
          { id: "viewshed", name: "Viewshed" },
          { id: "visibility_index", name: "Visibility Index" },
        ],
      },
      {
        label: "Workflow Products",
        tools: [
          { id: "topo_render", name: "Topo Render" },
        ],
      },
    ],
  },
  {
    key: "vector",
    labelKey: "toolbar.item.vector",
    subcategories: [
      {
        label: "GeoLibre",
        tools: [
          { id: "add_surface_information", name: "Add Surface Information" },
          { id: "adjust_3d_z", name: "Adjust 3D Z" },
          { id: "adjust_stream_to_raster", name: "Adjust Stream To Raster" },
          { id: "aggregate_points", name: "Aggregate Points" },
          { id: "aggregate_polygons", name: "Aggregate Polygons" },
          { id: "align_features", name: "Align Features" },
          { id: "apportion_polygon", name: "Apportion Polygon" },
          { id: "assign_projection_vector", name: "Assign Projection Vector" },
          { id: "attribute_uncertainty", name: "Attribute Uncertainty" },
          { id: "bivariate_spatial_association", name: "Bivariate Spatial Association" },
          { id: "buffer_3d", name: "Buffer 3D" },
          { id: "build_balanced_zones", name: "Build Balanced Zones" },
          { id: "build_seamlines", name: "Build Seamlines" },
          { id: "calculate_adjacent_fields", name: "Calculate Adjacent Fields" },
          { id: "calculate_central_meridian_and_parallels", name: "Calculate Central Meridian And Parallels" },
          { id: "calculate_composite_index", name: "Calculate Composite Index" },
          { id: "calculate_distance_band", name: "Calculate Distance Band" },
          { id: "calculate_grid_convergence_angle", name: "Calculate Grid Convergence Angle" },
          { id: "calculate_missing_z_values", name: "Calculate Missing Z Values" },
          { id: "calculate_motion_statistics", name: "Calculate Motion Statistics" },
          { id: "calculate_polygon_main_angle", name: "Calculate Polygon Main Angle" },
          { id: "calculate_rates", name: "Calculate Rates" },
          { id: "calculate_transformation_errors", name: "Calculate Transformation Errors" },
          { id: "calculate_utm_zone", name: "Calculate UTM Zone" },
          { id: "cartogram", name: "Cartogram" },
          { id: "causal_inference_analysis", name: "Causal Inference Analysis" },
          { id: "cell_records_to_sectors", name: "Cell Records To Sectors" },
          { id: "central_feature", name: "Central Feature / Linear Directional Mean" },
          { id: "change_point_detection", name: "Change Point Detection" },
          { id: "collapse_dual_lines_to_centerline", name: "Collapse Dual Lines To Centerline" },
          { id: "collapse_hydro_polygon", name: "Collapse Hydro Polygon" },
          { id: "collapse_road_detail", name: "Collapse Road Detail" },
          { id: "collect_events", name: "Collect Events" },
          { id: "colocation_analysis", name: "Colocation Analysis" },
          { id: "color_polygons", name: "Color Polygons" },
          { id: "compare_spatial_weights", name: "Compare Spatial Weights" },
          { id: "compute_accuracy_for_object_detection", name: "Compute Accuracy For Object Detection" },
          { id: "construct_sight_lines", name: "Construct Sight Lines" },
          { id: "convert_coordinate_notation", name: "Convert Coordinate Notation" },
          { id: "cost_connectivity", name: "Cost Connectivity" },
          { id: "count_overlapping_features", name: "Count Overlapping Features" },
          { id: "create_cartographic_partitions", name: "Create Cartographic Partitions" },
          { id: "create_overpass", name: "Create Overpass" },
          { id: "create_routes", name: "Create Routes" },
          { id: "create_spatial_sampling_locations", name: "Create Spatial Sampling Locations" },
          { id: "create_spatially_balanced_points", name: "Create Spatially Balanced Points" },
          { id: "create_underpass", name: "Create Underpass" },
          { id: "cul_de_sac_masks", name: "Cul-De-Sac Masks" },
          { id: "delineate_built_up_areas", name: "Delineate Built-Up Areas" },
          { id: "dendrogram", name: "Dendrogram" },
          { id: "densify_sampling_network", name: "Densify Sampling Network" },
          { id: "detect_feature_changes", name: "Detect Feature Changes" },
          { id: "detect_graphic_conflict", name: "Detect Graphic Conflict" },
          { id: "detect_incidents", name: "Detect Incidents" },
          { id: "dice", name: "Dice" },
          { id: "dimension_reduction", name: "Dimension Reduction" },
          { id: "directional_distribution", name: "Directional Distribution" },
          { id: "directional_trend", name: "Directional Trend" },
          { id: "disperse_markers", name: "Disperse Markers" },
          { id: "dissolve_route_events", name: "Dissolve Route Events" },
          { id: "edgematch_features", name: "Edgematch Features" },
          { id: "eighty_twenty_analysis", name: "Eighty Twenty Analysis" },
          { id: "eliminate_polygon_part", name: "Eliminate Polygon Part" },
          { id: "eliminate_polygons", name: "Eliminate Polygons" },
          { id: "emerging_hot_spot_analysis", name: "Emerging Hot Spot Analysis" },
          { id: "estimate_time_to_event", name: "Estimate Time To Event" },
          { id: "evaluate_bin_sizes", name: "Evaluate Bin Sizes" },
          { id: "exploratory_interpolation", name: "Exploratory Interpolation" },
          { id: "exploratory_regression", name: "Exploratory Regression" },
          { id: "extract_locations_from_text", name: "Extract Locations From Text" },
          { id: "feature_outline_masks", name: "Feature Outline Masks" },
          { id: "feature_to_line", name: "Feature To Line" },
          { id: "feature_vertices_to_points", name: "Feature Vertices To Points" },
          { id: "fill_missing_values", name: "Fill Missing Values" },
          { id: "find_dwell_locations", name: "Find Dwell Locations" },
          { id: "find_identical", name: "Find Identical" },
          { id: "find_meeting_locations", name: "Find Meeting Locations" },
          { id: "find_space_time_matches", name: "Find Space Time Matches" },
          { id: "flip_line", name: "Flip Line" },
          { id: "forest_based_forecast", name: "Forest-based Forecast" },
          { id: "generalized_linear_regression", name: "Generalized Linear Regression" },
          { id: "generate_breach_lines", name: "Generate Breach Lines" },
          { id: "generate_near_table", name: "Generate Near Table" },
          { id: "generate_od_links", name: "Generate Origin-Destination Links" },
          { id: "generate_points_along_3d_lines", name: "Generate Points Along 3D Lines" },
          { id: "generate_spatial_weights_matrix", name: "Generate Spatial Weights Matrix" },
          { id: "generate_subset_polygons", name: "Generate Subset Polygons" },
          { id: "generate_transects_along_lines", name: "Generate Transects Along Lines" },
          { id: "geodetic_densify", name: "Geodetic Densify" },
          { id: "geographically_weighted_regression", name: "Geographically Weighted Regression" },
          { id: "geotagged_photos_to_points", name: "GeoTagged Photos To Points" },
          { id: "graphic_buffer", name: "Graphic Buffer" },
          { id: "grid_index_features", name: "Grid Index Features" },
          { id: "group_by_proximity", name: "Group By Proximity" },
          { id: "hdbscan", name: "HDBSCAN Clustering" },
          { id: "getis_ord_general_g", name: "High/Low Clustering (Getis-Ord General G)" },
          { id: "hot_spot_analysis_comparison", name: "Hot Spot Analysis Comparison" },
          { id: "identify_narrow_polygons", name: "Identify Narrow Polygons" },
          { id: "incremental_spatial_autocorrelation", name: "Incremental Spatial Autocorrelation" },
          { id: "inside_3d", name: "Inside 3D" },
          { id: "integrate", name: "Integrate" },
          { id: "interpolate_shape", name: "Interpolate Shape" },
          { id: "intersecting_layers_masks", name: "Intersecting Layers Masks" },
          { id: "line_of_sight", name: "Line Of Sight" },
          { id: "local_bivariate_relationships", name: "Local Bivariate Relationships" },
          { id: "local_outlier_analysis", name: "Local Outlier Analysis" },
          { id: "locate_lines_along_routes", name: "Locate Lines Along Routes" },
          { id: "median_center", name: "Median Center" },
          { id: "merge_divided_roads", name: "Merge Divided Roads" },
          { id: "merge_lines_by_pseudo_node", name: "Merge Lines By Pseudo Node" },
          { id: "minimum_bounding_volume", name: "Minimum Bounding Volume" },
          { id: "multiple_ring_buffer", name: "Multiple Ring Buffer" },
          { id: "mgwr", name: "Multiscale Geographically Weighted Regression" },
          { id: "multivariate_clustering", name: "Multivariate Clustering" },
          { id: "near_3d", name: "Near 3D" },
          { id: "neighborhood_summary_statistics", name: "Neighborhood Summary Statistics" },
          { id: "non_maximum_suppression", name: "Non Maximum Suppression" },
          { id: "optics_clustering", name: "OPTICS Clustering" },
          { id: "optimal_corridor_connections", name: "Optimal Corridor Connections" },
          { id: "optimized_hot_spot_analysis", name: "Optimized Hot Spot Analysis" },
          { id: "optimized_outlier_analysis", name: "Optimized Outlier Analysis" },
          { id: "pairwise_comparison_weights", name: "Pairwise Comparison Weights" },
          { id: "pivot_table", name: "Pivot Table" },
          { id: "points_to_line", name: "Points To Line" },
          { id: "points_to_path", name: "Points To Path" },
          { id: "polygon_neighbors", name: "Polygon Neighbors" },
          { id: "polygon_volume", name: "Polygon Volume" },
          { id: "propagate_displacement", name: "Propagate Displacement" },
          { id: "reclassify_field", name: "Reclassify Field" },
          { id: "reconstruct_tracks", name: "Reconstruct Tracks" },
          { id: "regularize_adjacent_building_footprint", name: "Regularize Adjacent Building Footprint" },
          { id: "regularize_building_footprints", name: "Regularize Building Footprints" },
          { id: "remove_overlap_multiple", name: "Remove Overlap (Multiple)" },
          { id: "render_vector_png", name: "Render Vector to PNG" },
          { id: "repair_geometry", name: "Repair Geometry" },
          { id: "resolve_building_conflicts", name: "Resolve Building Conflicts" },
          { id: "resolve_road_conflicts", name: "Resolve Road Conflicts" },
          { id: "ripleys_k", name: "Ripley's K" },
          { id: "rubbersheet_features", name: "Rubbersheet Features" },
          { id: "similarity_search", name: "Similarity Search" },
          { id: "simplify_3d_line", name: "Simplify 3D Line" },
          { id: "simplify_building", name: "Simplify Building" },
          { id: "simplify_by_circular_arcs", name: "Simplify By Circular Arcs" },
          { id: "simplify_shared_edges", name: "Simplify Shared Edges" },
          { id: "smooth_natural_features", name: "Smooth Natural Features" },
          { id: "smooth_shared_edges", name: "Smooth Shared Edges" },
          { id: "snap_tracks", name: "Snap Tracks" },
          { id: "sort_features", name: "Sort Features" },
          { id: "spatial_eigenvector_filtering", name: "Spatial Eigenvector Filtering (MESF)" },
          { id: "spatial_outlier_detection", name: "Spatial Outlier Detection" },
          { id: "spatially_constrained_multivariate_clustering", name: "Spatially Constrained Multivariate Clustering" },
          { id: "split_by_attributes", name: "Split By Attributes" },
          { id: "split_by_features", name: "Split By Features" },
          { id: "split_line_at_point", name: "Split Line At Point" },
          { id: "stack_profile", name: "Stack Profile" },
          { id: "strip_map_index_features", name: "Strip Map Index Features" },
          { id: "subdivide_polygon", name: "Subdivide Polygon" },
          { id: "subset_features", name: "Subset Features" },
          { id: "summarize_nearby", name: "Summarize Nearby" },
          { id: "summarize_percent_change", name: "Summarize Percent Change" },
          { id: "summarize_within", name: "Summarize Within" },
          { id: "summary_statistics", name: "Summary Statistics" },
          { id: "table_to_geometry", name: "Table To Geometry" },
          { id: "tabulate_intersection", name: "Tabulate Intersection" },
          { id: "thin_road_network", name: "Thin Road Network" },
          { id: "time_series_clustering", name: "Time Series Clustering" },
          { id: "time_series_forecast", name: "Time Series Forecast" },
          { id: "time_series_smoothing", name: "Time Series Smoothing" },
          { id: "trace_proximity_events", name: "Trace Proximity Events" },
          { id: "transform_features", name: "Transform Features" },
          { id: "transform_fields", name: "Transform Fields" },
          { id: "transform_route_events", name: "Transform Route Events" },
          { id: "trim_line", name: "Trim Line" },
          { id: "union_3d", name: "Union 3D" },
          { id: "voxel_isosurface", name: "Voxel Isosurface" },
        ],
      },
      {
        label: "General",
        tools: [
          { id: "buffer_vector", name: "Buffer Vector" },
          { id: "directional_variogram", name: "Directional Variogram Analysis" },
          { id: "estimate_variogram", name: "Estimate Variogram" },
          { id: "fit_variogram", name: "Fit Variogram Model" },
        ],
      },
      {
        label: "Attribute Analysis",
        tools: [
          { id: "add_field", name: "Add Field" },
          { id: "add_geometry_attributes", name: "Add Geometry Attributes" },
          { id: "attribute_correlation", name: "Attribute Correlation" },
          { id: "attribute_histogram", name: "Attribute Histogram" },
          { id: "attribute_scattergram", name: "Attribute Scattergram" },
          { id: "delete_field", name: "Delete Field" },
          { id: "extract_by_attribute", name: "Extract By Attribute" },
          { id: "field_calculator", name: "Field Calculator" },
          { id: "filter_vector_features_by_area", name: "Filter Vector Features By Area" },
          { id: "list_unique_values", name: "List Unique Values" },
          { id: "rename_field", name: "Rename Field" },
        ],
      },
      {
        label: "Geometry Processing",
        tools: [
          { id: "centroid_vector", name: "Centroid Vector" },
          { id: "concave_hull", name: "Concave Hull" },
          { id: "densify_features", name: "Densify Features" },
          { id: "eliminate_coincident_points", name: "Eliminate Coincident Points" },
          { id: "extend_vector_lines", name: "Extend Vector Lines" },
          { id: "merge_line_segments", name: "Merge Line Segments" },
          { id: "minimum_bounding_box", name: "Minimum Bounding Box" },
          { id: "minimum_bounding_circle", name: "Minimum Bounding Circle" },
          { id: "minimum_bounding_envelope", name: "Minimum Bounding Envelope" },
          { id: "minimum_convex_hull", name: "Minimum Convex Hull" },
          { id: "polygonize", name: "Polygonize" },
          { id: "representative_point_vector", name: "Representative Point Vector" },
          { id: "simplify_features", name: "Simplify Features" },
          { id: "smooth_vectors", name: "Smooth Vectors" },
          { id: "snap_endnodes", name: "Snap Endnodes" },
          { id: "split_vector_lines", name: "Split Vector Lines" },
          { id: "split_with_lines", name: "Split With Lines" },
        ],
      },
      {
        label: "Linear Referencing",
        tools: [
          { id: "locate_points_along_routes", name: "Locate Points Along Routes" },
          { id: "points_along_lines", name: "Points Along Lines" },
          { id: "route_calibrate", name: "Route Calibrate" },
          { id: "route_event_lines_from_layer", name: "Route Event Lines From Layer" },
          { id: "route_event_lines_from_table", name: "Route Event Lines From Table" },
          { id: "route_event_merge", name: "Route Event Merge" },
          { id: "route_event_overlay", name: "Route Event Overlay" },
          { id: "route_event_points_from_layer", name: "Route Event Points From Layer" },
          { id: "route_event_points_from_table", name: "Route Event Points From Table" },
          { id: "route_event_split", name: "Route Event Split" },
          { id: "route_measure_qa", name: "Route Measure Qa" },
          { id: "route_recalibrate", name: "Route Recalibrate" },
          { id: "snap_events_to_routes", name: "Snap Events To Routes" },
        ],
      },
      {
        label: "Online Data",
        tools: [
          { id: "download_osm_vector", name: "Download Osm Vector" },
        ],
      },
      {
        label: "Overlay Analysis",
        tools: [
          { id: "clip", name: "Clip" },
          { id: "difference", name: "Difference" },
          { id: "dissolve", name: "Dissolve" },
          { id: "erase", name: "Erase" },
          { id: "identity", name: "Identity" },
          { id: "intersect", name: "Intersect" },
          { id: "line_intersections", name: "Line Intersections" },
          { id: "line_polygon_clip", name: "Line Polygon Clip" },
          { id: "near", name: "Near" },
          { id: "select_by_location", name: "Select By Location" },
          { id: "spatial_join", name: "Spatial Join" },
          { id: "symmetrical_difference", name: "Symmetrical Difference" },
          { id: "union", name: "Union" },
          { id: "update", name: "Update" },
        ],
      },
      {
        label: "Sampling & Gridding",
        tools: [
          { id: "construct_vector_tin", name: "Construct Vector Tin" },
          { id: "contours_from_points", name: "Contours From Points" },
          { id: "contours_from_raster", name: "Contours From Raster" },
          { id: "extract_nodes", name: "Extract Nodes" },
          { id: "extract_raster_values_at_points", name: "Extract Raster Values At Points" },
          { id: "find_lowest_or_highest_points", name: "Find Lowest Or Highest Points" },
          { id: "hexagonal_grid_from_raster_base", name: "Hexagonal Grid From Raster Base" },
          { id: "hexagonal_grid_from_vector_base", name: "Hexagonal Grid From Vector Base" },
          { id: "layer_footprint_raster", name: "Layer Footprint Raster" },
          { id: "layer_footprint_vector", name: "Layer Footprint Vector" },
          { id: "medoid", name: "Medoid" },
          { id: "random_points_in_polygon", name: "Random Points In Polygon" },
          { id: "rectangular_grid_from_raster_base", name: "Rectangular Grid From Raster Base" },
          { id: "rectangular_grid_from_vector_base", name: "Rectangular Grid From Vector Base" },
          { id: "vector_hex_binning", name: "Vector Hex Binning" },
          { id: "voronoi_diagram", name: "Voronoi Diagram" },
        ],
      },
      {
        label: "Shape Metrics",
        tools: [
          { id: "compactness_ratio", name: "Compactness Ratio" },
          { id: "deviation_from_regional_direction", name: "Deviation From Regional Direction" },
          { id: "elongation_ratio", name: "Elongation Ratio" },
          { id: "hole_proportion", name: "Hole Proportion" },
          { id: "linearity_index", name: "Linearity Index" },
          { id: "narrowness_index_vector", name: "Narrowness Index Vector" },
          { id: "patch_orientation", name: "Patch Orientation" },
          { id: "perimeter_area_ratio", name: "Perimeter Area Ratio" },
          { id: "polygon_area", name: "Polygon Area" },
          { id: "polygon_long_axis", name: "Polygon Long Axis" },
          { id: "polygon_perimeter", name: "Polygon Perimeter" },
          { id: "polygon_short_axis", name: "Polygon Short Axis" },
          { id: "related_circumscribing_circle", name: "Related Circumscribing Circle" },
          { id: "shape_complexity_index_vector", name: "Shape Complexity Index Vector" },
        ],
      },
      {
        label: "Spatial Statistics",
        tools: [
          { id: "envelope_test", name: "Envelope Test" },
          { id: "getis_ord_gi_star", name: "Getis Ord Gi Star" },
          { id: "global_morans_i", name: "Global Morans I" },
          { id: "hotspot_vs_process", name: "Hotspot Vs Process" },
          { id: "inhomogeneous_baseline", name: "Inhomogeneous Baseline" },
          { id: "local_morans_i_lisa", name: "Local Morans I Lisa" },
          { id: "nearest_neighbour_index", name: "Nearest Neighbour Index" },
          { id: "point_pattern_envelope", name: "Point Pattern Envelope" },
          { id: "point_process_residuals", name: "Point Process Residuals" },
          { id: "point_process_residuals_comparison", name: "Point Process Residuals Comparison" },
          { id: "quadrat_count_test", name: "Quadrat Count Test" },
          { id: "ripleys_k_function", name: "Ripleys K Function" },
          { id: "ripleys_k_test", name: "Ripleys K Test" },
          { id: "spatial_error_regression", name: "Spatial Error Regression" },
          { id: "spatial_lag_regression", name: "Spatial Lag Regression" },
        ],
      },
    ],
  },
];
