Spaces:
Runtime error
Runtime error
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| from typing import List, Dict, Any, Optional | |
| def generate_map(gps_coordinates: List[List[float]], map_items: List[Dict[str, Any]]) -> Optional[str]: | |
| """ | |
| Generate a map showing issue locations based on GPS coordinates. | |
| Args: | |
| gps_coordinates: List of [latitude, longitude] coordinates. | |
| map_items: List of detected items (cracks, holes, potholes, missing patches) to plot. | |
| Returns: | |
| Path to the generated map image, or None if generation fails. | |
| """ | |
| try: | |
| fig, ax = plt.subplots(figsize=(5, 3)) | |
| if gps_coordinates: | |
| lats, longs = zip(*gps_coordinates) | |
| ax.plot(longs, lats, 'b-', label='Path') # Blue line for path | |
| for item in map_items: | |
| gps = item.get('gps', [0, 0]) | |
| lat, lon = gps | |
| # Use a default severity if the key is missing | |
| severity = item.get('severity', 'Moderate') # Default to 'Moderate' | |
| dtype = item.get('type', '') | |
| # Custom colors for holes as per requirement | |
| if dtype in ['hole', 'pothole']: | |
| if severity == 'Mild': | |
| color = 'darkgreen' # Green dot for minor holes | |
| elif severity == 'Moderate': | |
| color = 'yellow' # Yellow dot for moderate holes | |
| else: | |
| color = 'darkred' # Severe holes remain dark red | |
| else: | |
| # Existing logic for other types | |
| color = 'darkred' if severity == 'Severe' else 'yellow' if severity == 'Moderate' else 'darkgreen' | |
| marker = 'x' if dtype == 'crack' else 'o' if dtype in ['hole', 'pothole'] else '^' | |
| ax.scatter(lon, lat, c=color, marker=marker, label=dtype.capitalize(), s=100) | |
| ax.set_xlabel('Longitude') | |
| ax.set_ylabel('Latitude') | |
| ax.set_title('Issue Locations') | |
| handles, labels = ax.get_legend_handles_labels() | |
| by_label = dict(zip(labels, handles)) | |
| ax.legend(by_label.values(), by_label.keys()) | |
| ax.grid(True) | |
| map_path = "map_temp.png" | |
| fig.savefig(map_path, bbox_inches='tight') | |
| plt.close(fig) | |
| return map_path | |
| except Exception as e: | |
| print(f"Error generating map: {str(e)}") | |
| return None |