# Network Elements Field Mapping Guide This document maps shapefile fields to Verofy API fields for network_elements. ## Data Analysis Summary **Source:** Map Project ID 15685 **Total Network Elements:** 263 **Date Retrieved:** 2025-12-09 ## Shapefile Structure From `network_elements.shp`: | Field Name | Data Type | Sample Values | |------------|-----------|---------------| | Type | String | "Anchor", "Slack Coil" | | Group 1 | String | "Zone 01" | | Group 2 | String | null | | Latitude | Float | 40.773628 | | Longitude | Float | -124.158326 | | UID | Integer | 0, 1, 2, ... | ## Verofy API Structure From `map-element` API endpoint: | Field Name | Data Type | Required | Sample Values | |------------|-----------|----------|---------------| | id | Integer | Auto | 202367 | | mapProjectId | Integer | **Yes** | 15685 | | name | String | **Yes** | "E-202367" | | latitude | String | **Yes** | "40.773628" | | longitude | String | **Yes** | "-124.158326" | | typeId | Integer | **Yes** | 35 (Anchor), 7 (Slack Coil) | | statusId | Integer | **Yes** | 1 (Planned), 2 (Complete) | | group1 | String | No | "Zone 01" | | group2 | String | No | null | | manufacturer | String | No | null | | size | String | No | null | | description | String | No | null | | locked | Integer | No | 0 (unlocked), 1 (locked) | | custom | Integer | No | 0 | | color | String | No | null | | opacity | String | No | null | | shapeId | Integer | No | null | | styleSize | Integer | No | null | ## Field Mapping ### Direct Mappings | Shapefile Field | API Field | Transformation | |-----------------|-----------|----------------| | Latitude | latitude | Convert float to string | | Longitude | longitude | Convert float to string | | Group 1 | group1 | Direct copy (string) | | Group 2 | group2 | Direct copy (string) | ### Type Mapping (Lookup Required) The shapefile `Type` field (string) must be mapped to API `typeId` (integer) using the MapElementType reference: | Shapefile Type Value | API typeId | Type Name in Verofy | |----------------------|------------|---------------------| | "Anchor" | 35 | Anchor | | "Slack Coil" | 7 | Slack Coil | | "Railroad Crossing" | 8 | Railroad Crossing | | "Water Crossing" | 10 | Water Crossing | | "Road Crossing" | 11 | Road Crossing | | "ILA" | 13 | ILA | | "Gas Crossing" | 14 | Gas Crossing | | "MPOE" | 15 | MPOE | | "Bore Pit" | 16 | Bore Pit | | "Marker Post" | 17 | Marker Post | | "SFP" | 18 | SFP | | "Midspan" | 21 | Midspan | | "Storage Yard" | 23 | Storage Yard | | "Router" | 25 | Router | | "Switch" | 27 | Switch | | "CPU" | 28 | CPU | | "Regulatory Compliance" | 29 | Regulatory Compliance | | "Resto - Pothole" | 31 | Resto - Pothole | | "Resto - Seed" | 32 | Resto - Seed | | "Resto - Asphalt" | 33 | Resto - Asphalt | | "Riser" | 34 | Riser | ### Generated/Default Values | API Field | Value | Notes | |-----------|-------|-------| | mapProjectId | User provided | Required parameter | | name | "NE-{UID}" or "E-{UID}" | Generated from UID field | | statusId | 1 | Default to "Planned" | | locked | 0 | Default to unlocked | | custom | 0 | Default value | ### Unused Shapefile Fields | Field | Reason | |-------|--------| | UID | Used only to generate name field | ### Unused API Fields These fields are set to null/0 by default unless specific data is available: - manufacturer - size - description - color - opacity - shapeId - styleSize ## API Endpoint **Endpoint:** `POST /v1/map-network-element/create` **Authentication:** Bearer token required **Success Response:** 201 Created ## Example API Request ```json { "mapProjectId": 15685, "name": "E-202367", "latitude": "40.773628", "longitude": "-124.158326", "typeId": 35, "statusId": 1, "group1": "Zone 01", "group2": null, "locked": 0 } ``` ## Implementation Notes 1. **Type Lookup:** The current `verofy_uploader.py` incorrectly maps `Type` to `type` (string field). It should map to `typeId` (integer) using the MapElementType reference lookup. 2. **Reference Data:** Load MapElementType references from `all_references.json` or create a dedicated reference file. 3. **Error Handling:** If a Type value from the shapefile is not found in the lookup table, either: - Log a warning and skip the record - Use a default typeId (e.g., 35 for Anchor) - Fail with a clear error message 4. **Name Generation:** Consider using UID to generate unique names like "E-{UID}" to match Verofy's naming convention. ## Status Reference | statusId | Status Name | Description | |----------|-------------|-------------| | 1 | Planned | Element is planned but not yet complete | | 2 | Complete | Element has been completed | Default to statusId: 1 (Planned) for new imports.