diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eec1ce0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+# --- OS System Files
+# Mac
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Windows
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+Desktop.ini
+$RECYCLE.BIN/
+
+# Linux
+*~
+.fuse_hidden*
+.directory
+.Trash-*
+
+# --- Python ---
+# Compiled bytecode
+__pycache__/
+*.pyc
+*.pyo
+*.pyd
+
+# Virtual Environments
+venv/
+env/
+.venv/
+
+# --- Jupyter Notebooks
+.ipynb_checkpoints
+
+# --- Environment Variables ---
+.env
+
+# --- IDE/Editor Settings
+.vscode/
+.idea/
+
+# --- JavaScript / Web ---
+config.js
+node_modules/
+.npm
+dist/
\ No newline at end of file
diff --git a/README.md b/README.md
index 79b02ca..b894880 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,38 @@
-# Insights Recipes
+# Insights samples
-This repository contains samples for the Insights produts from Google Maps Platform.
+This repository contains samples for the Insights products from Google Maps Platform.
-You can learn more about the products on the [product page](https://mapsplatform.google.com/maps-products/geospatial-analytics)
+You can learn more about the products on the [product page](https://mapsplatform.google.com/maps-products/geospatial-analytics).
-### Imagery Insights
+### Street View Insights
[Docs](https://developers.google.com/maps/documentation/imagery-insights)
### Places Insights
-[Demo](https://mapsplatform.google.com/demos/places-insights/)
-[Docs](https://developers.google.com/maps/documentation/placesinsights)
+[Docs](https://developers.google.com/maps/documentation/placesinsights) | [Demo](https://mapsplatform.google.com/demos/places-insights/)
### Roads Management Insights
-[Demo](https://google-rmi-demo-1024202510105.us-central1.run.app/)
-[Doc](https://developers.google.com/maps/documentation/roads-management-insights)
+[Docs](https://developers.google.com/maps/documentation/roads-management-insights) | [Demo](https://google-rmi-demo-1024202510105.us-central1.run.app/)
+### Population Dynamics Insights
+[Docs](https://developers.google.com/maps/documentation/population-dynamics-insights)
## Available Recipe Collections
-* [`imagery_insights/`](imagery_insights/): Recipes for insights from imagery data.
+* [`places_insights/`](places_insights/): Samples for analyzing the Places Insights BigQuery dataset.
+ * [`notebooks/`](places_insights/notebooks/): Example Google Colab notebooks for querying the dataset and visualizing the results.
+ * [`custom_location_scores/`](places_insights/notebooks/custom_location_scores/): Combines Places Insights data with BigQuery `AI.GENERATE` (Gemini) to calculate and visualize AI-powered suitability scores for real estate listings based on a specific user persona.
+ * [`nevada_site_selection/`](places_insights/notebooks/nevada_site_selection/): Demonstrates a multi-stage site selection workflow for a new coffee shop in Las Vegas, combining competitor analysis, commercial suitability scoring, and target market density on an interactive map.
+ * [`sample_data_demo/`](places_insights/notebooks/sample_data_demo/): A technical introduction demonstrating how to query, aggregate, and visualize Places Insights data in BigQuery using Standard SQL, Python, and the H3 grid system to analyze commercial density across global cities.
+ * [`spot_check_results/`](places_insights/notebooks/spot_check_results/): Illustrates a workflow for spot-checking analytical data by combining H3 density aggregations with the Place Details API to visualize both statistical hotspots and individual locations on an interactive map.
+ * [`places-insights-demo/`](places_insights/places-insights-demo/): Source code for an interactive JavaScript web application demo.
+ * [`sample_queries/`](places_insights/sample_queries/): Sample SQL queries for aggregating location data directly in BigQuery.
* [`roads_management_insights/`](roads_management_insights/): Recipes for insights related to roads management.
* [`route_registration_from_csv/`](roads_management_insights/route_registration_from_csv/): A Python script to create routes in Google Roads API from a CSV file.
+* [`street_view_insights/`](street_view_insights/): Recipes for insights from imagery data.
## License
@@ -40,4 +48,4 @@ See [`SECURITY.md`](SECURITY.md) for details on how to report security vulnerabi
## Contributing
-See [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to contribute to this project.
+See [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to contribute to this project.
\ No newline at end of file
diff --git a/imagery_insights/notebooks/classify_road_signs_and_save_in_bq.ipynb b/imagery_insights/notebooks/classify_road_signs_and_save_in_bq.ipynb
deleted file mode 100644
index c17eb99..0000000
--- a/imagery_insights/notebooks/classify_road_signs_and_save_in_bq.ipynb
+++ /dev/null
@@ -1,6130 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "VBkYvdqmYr7R",
- "metadata": {
- "id": "VBkYvdqmYr7R"
- },
- "source": [
- "# Environment setup"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2ec5e817",
- "metadata": {},
- "source": [
- "# Copyright 2025 Google LLC\n",
- "#\n",
- "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
- "# you may not use this file except in compliance with the License.\n",
- "# You may obtain a copy of the License at\n",
- "#\n",
- "# https://www.apache.org/licenses/LICENSE-2.0\n",
- "#\n",
- "# Unless required by applicable law or agreed to in writing, software\n",
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
- "# See the License for the specific language governing permissions and\n",
- "# limitations under the License."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "153evZBGZuFV",
- "metadata": {
- "id": "153evZBGZuFV"
- },
- "source": [
- "Make sure to edit all the cells marked as `TODO`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ivuQEctAe1km",
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 1000
- },
- "collapsed": true,
- "id": "ivuQEctAe1km",
- "outputId": "c9e52a49-ff1d-462e-9add-996482a53e86"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Requirement already satisfied: google-cloud-bigquery in /usr/local/lib/python3.10/dist-packages (3.25.0)\n",
- "Collecting google-cloud-bigquery\n",
- " Downloading google_cloud_bigquery-3.31.0-py3-none-any.whl.metadata (7.7 kB)\n",
- "Requirement already satisfied: google-generativeai in /usr/local/lib/python3.10/dist-packages (0.8.3)\n",
- "Collecting google-generativeai\n",
- " Downloading google_generativeai-0.8.4-py3-none-any.whl.metadata (4.2 kB)\n",
- "Requirement already satisfied: google-api-core<3.0.0,>=2.11.1 in /usr/local/lib/python3.10/dist-packages (from google-api-core[grpc]<3.0.0,>=2.11.1->google-cloud-bigquery) (2.19.2)\n",
- "Requirement already satisfied: google-auth<3.0.0,>=2.14.1 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (2.27.0)\n",
- "Requirement already satisfied: google-cloud-core<3.0.0,>=2.4.1 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (2.4.1)\n",
- "Requirement already satisfied: google-resumable-media<3.0.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (2.7.2)\n",
- "Requirement already satisfied: packaging>=24.2.0 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (24.2)\n",
- "Requirement already satisfied: python-dateutil<3.0.0,>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (2.8.2)\n",
- "Requirement already satisfied: requests<3.0.0,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from google-cloud-bigquery) (2.32.3)\n",
- "Collecting google-ai-generativelanguage==0.6.15 (from google-generativeai)\n",
- " Downloading google_ai_generativelanguage-0.6.15-py3-none-any.whl.metadata (5.7 kB)\n",
- "Requirement already satisfied: google-api-python-client in /usr/local/lib/python3.10/dist-packages (from google-generativeai) (2.155.0)\n",
- "Requirement already satisfied: protobuf in /usr/local/lib/python3.10/dist-packages (from google-generativeai) (4.25.5)\n",
- "Requirement already satisfied: pydantic in /usr/local/lib/python3.10/dist-packages (from google-generativeai) (2.10.4)\n",
- "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from google-generativeai) (4.67.1)\n",
- "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from google-generativeai) (4.12.2)\n",
- "Requirement already satisfied: proto-plus<2.0.0dev,>=1.22.3 in /usr/local/lib/python3.10/dist-packages (from google-ai-generativelanguage==0.6.15->google-generativeai) (1.25.0)\n",
- "Requirement already satisfied: googleapis-common-protos<2.0.dev0,>=1.56.2 in /usr/local/lib/python3.10/dist-packages (from google-api-core<3.0.0,>=2.11.1->google-api-core[grpc]<3.0.0,>=2.11.1->google-cloud-bigquery) (1.66.0)\n",
- "Requirement already satisfied: grpcio<2.0dev,>=1.33.2 in /usr/local/lib/python3.10/dist-packages (from google-api-core[grpc]<3.0.0,>=2.11.1->google-cloud-bigquery) (1.69.0)\n",
- "Requirement already satisfied: grpcio-status<2.0.dev0,>=1.33.2 in /usr/local/lib/python3.10/dist-packages (from google-api-core[grpc]<3.0.0,>=2.11.1->google-cloud-bigquery) (1.62.3)\n",
- "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3.0.0,>=2.14.1->google-cloud-bigquery) (5.5.0)\n",
- "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3.0.0,>=2.14.1->google-cloud-bigquery) (0.4.1)\n",
- "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3.0.0,>=2.14.1->google-cloud-bigquery) (4.9)\n",
- "Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib/python3.10/dist-packages (from google-resumable-media<3.0.0,>=2.0.0->google-cloud-bigquery) (1.6.0)\n",
- "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil<3.0.0,>=2.8.2->google-cloud-bigquery) (1.17.0)\n",
- "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.21.0->google-cloud-bigquery) (3.4.1)\n",
- "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.21.0->google-cloud-bigquery) (3.10)\n",
- "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.21.0->google-cloud-bigquery) (2.3.0)\n",
- "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.21.0->google-cloud-bigquery) (2024.12.14)\n",
- "Requirement already satisfied: httplib2<1.dev0,>=0.19.0 in /usr/local/lib/python3.10/dist-packages (from google-api-python-client->google-generativeai) (0.22.0)\n",
- "Requirement already satisfied: google-auth-httplib2<1.0.0,>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from google-api-python-client->google-generativeai) (0.2.0)\n",
- "Requirement already satisfied: uritemplate<5,>=3.0.1 in /usr/local/lib/python3.10/dist-packages (from google-api-python-client->google-generativeai) (4.1.1)\n",
- "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.10/dist-packages (from pydantic->google-generativeai) (0.7.0)\n",
- "Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.10/dist-packages (from pydantic->google-generativeai) (2.27.2)\n",
- "Requirement already satisfied: pyparsing!=3.0.0,!=3.0.1,!=3.0.2,!=3.0.3,<4,>=2.4.2 in /usr/local/lib/python3.10/dist-packages (from httplib2<1.dev0,>=0.19.0->google-api-python-client->google-generativeai) (3.2.1)\n",
- "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3.0.0,>=2.14.1->google-cloud-bigquery) (0.6.1)\n",
- "Downloading google_cloud_bigquery-3.31.0-py3-none-any.whl (250 kB)\n",
- "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m250.1/250.1 kB\u001b[0m \u001b[31m5.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
- "\u001b[?25hDownloading google_generativeai-0.8.4-py3-none-any.whl (175 kB)\n",
- "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m175.4/175.4 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
- "\u001b[?25hDownloading google_ai_generativelanguage-0.6.15-py3-none-any.whl (1.3 MB)\n",
- "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m41.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
- "\u001b[?25hInstalling collected packages: google-cloud-bigquery, google-ai-generativelanguage, google-generativeai\n",
- " Attempting uninstall: google-cloud-bigquery\n",
- " Found existing installation: google-cloud-bigquery 3.25.0\n",
- " Uninstalling google-cloud-bigquery-3.25.0:\n",
- " Successfully uninstalled google-cloud-bigquery-3.25.0\n",
- " Attempting uninstall: google-ai-generativelanguage\n",
- " Found existing installation: google-ai-generativelanguage 0.6.10\n",
- " Uninstalling google-ai-generativelanguage-0.6.10:\n",
- " Successfully uninstalled google-ai-generativelanguage-0.6.10\n",
- " Attempting uninstall: google-generativeai\n",
- " Found existing installation: google-generativeai 0.8.3\n",
- " Uninstalling google-generativeai-0.8.3:\n",
- " Successfully uninstalled google-generativeai-0.8.3\n",
- "Successfully installed google-ai-generativelanguage-0.6.15 google-cloud-bigquery-3.31.0 google-generativeai-0.8.4\n"
- ]
- },
- {
- "data": {
- "application/vnd.colab-display-data+json": {
- "id": "1db00362316547ed9c0d77fed2aafb87",
- "pip_warning": {
- "packages": [
- "google"
- ]
- }
- }
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "!pip install --upgrade google-cloud-bigquery google-generativeai"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "7J3_MOE2jm10",
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7J3_MOE2jm10",
- "outputId": "f7e38d89-f276-433d-e4f4-a00aed856a61"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "WARNING: google.colab.auth.authenticate_user() is not supported in Colab Enterprise.\n"
- ]
- }
- ],
- "source": [
- "import sys\n",
- "\n",
- "if \"google.colab\" in sys.modules:\n",
- " from google.colab import auth\n",
- " auth.authenticate_user()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "IvdgWhqXegLR",
- "metadata": {
- "cellView": "form",
- "id": "IvdgWhqXegLR"
- },
- "outputs": [],
- "source": [
- "# TODO(developer): Set project_id to your project's ID.\n",
- "PROJECT_ID = \"imagery-insights-sandbox\" # @param {type:\"string\"}\n",
- "\n",
- "# TODO(developer): Set dataset_id to the ID of the dataset that the table belongs to.\n",
- "DATASET_ID = \"road_signs_dcr\" # @param {type:\"string\"}\n",
- "\n",
- "table_tracks = f\"`{PROJECT_ID}.{DATASET_ID}.tracks_view`\" # Fully qualified table name\n",
- "table_observations = f\"`{PROJECT_ID}.{DATASET_ID}.observations_view`\"\n",
- "table_urls = f\"`{PROJECT_ID}.{DATASET_ID}.urls_view`\""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "vDO30v3m05Gq",
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "vDO30v3m05Gq",
- "outputId": "eb0db1e2-e9ad-44c5-99ae-26736002c44d"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "`imagery-insights-sandbox.road_signs_dcr.tracks_view`\n",
- "`imagery-insights-sandbox.road_signs_dcr.observations_view`\n",
- "`imagery-insights-sandbox.road_signs_dcr.urls_view`\n"
- ]
- }
- ],
- "source": [
- "print(table_tracks)\n",
- "print(table_observations)\n",
- "print(table_urls)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "_q_G4QkWl1KS",
- "metadata": {
- "id": "_q_G4QkWl1KS"
- },
- "outputs": [],
- "source": [
- "MODEL_ID = \"gemini-2.0-flash\" # @param {type: \"string\"}\n",
- "LOCATION = \"us-central1\" # @param {type: \"string\"}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "viFsFg6QjuC1",
- "metadata": {
- "id": "viFsFg6QjuC1"
- },
- "outputs": [],
- "source": [
- "import os\n",
- "\n",
- "if not PROJECT_ID or PROJECT_ID == \"your-project-id\":\n",
- " PROJECT_ID = str(os.environ.get(\"GOOGLE_CLOUD_PROJECT\"))\n",
- "\n",
- "if not LOCATION:\n",
- " LOCATION = os.environ.get(\"GOOGLE_CLOUD_REGION\", \"us-central1\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "vpXheVQqlB4T",
- "metadata": {
- "id": "vpXheVQqlB4T"
- },
- "outputs": [],
- "source": [
- "from google.cloud import bigquery\n",
- "from google import genai\n",
- "\n",
- "vertex_ai_client = genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION)\n",
- "bq_client = bigquery.Client()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "KjbkssFXYxoq",
- "metadata": {
- "id": "KjbkssFXYxoq"
- },
- "source": [
- "# Let's fetch the data from BigQuery"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "dXABCU_2Y6F6",
- "metadata": {
- "id": "dXABCU_2Y6F6"
- },
- "source": [
- "This code snippet constructs a series of temporary SQL tables to join track data, observation details, and associated URLs, ultimately producing a final table containing combined information ordered by track ID.\n",
- "\n",
- "It prepares and organizes data for analysis by linking related track, observation, and URL information."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "dnuPsmdvehVW",
- "metadata": {
- "id": "dnuPsmdvehVW"
- },
- "outputs": [],
- "source": [
- "# Create a temporary table with a sample of 5 tracks.\n",
- "sql_create_temp_tracks = f\"\"\"\n",
- "CREATE OR REPLACE TEMP TABLE TempTracks AS\n",
- "SELECT\n",
- " *\n",
- "FROM\n",
- " {table_tracks};\n",
- "\"\"\"\n",
- "\n",
- "# Create a temporary table with (trackId, observationId) pairs and Google Maps URLs.\n",
- "sql_create_track_observation_pairs = \"\"\"\n",
- "CREATE OR REPLACE TEMP TABLE TempTrackObservationPairs AS\n",
- "SELECT\n",
- " t.trackId,\n",
- " observationId,\n",
- " ST_GeogPoint(ST_X(geometry), ST_Y(geometry)) AS geographic_point,\n",
- " FORMAT('https://maps.google.com/?q=%f,%f', ST_Y(t.geometry), ST_X(t.geometry)) AS google_maps_url\n",
- "FROM\n",
- " TempTracks AS t\n",
- "CROSS JOIN\n",
- " UNNEST(t.observationIds) AS observationId;\n",
- "\"\"\"\n",
- "\n",
- "# Create a temporary table with observation metadata (timestamp, bbox).\n",
- "sql_create_observation_metadata = f\"\"\"\n",
- "CREATE OR REPLACE TEMP TABLE TempObservationMetadata AS\n",
- "SELECT\n",
- " observationId,\n",
- " captureTimestamp,\n",
- " bbox\n",
- "FROM\n",
- " {table_observations};\n",
- " -- WHERE observationId IN (SELECT observationId FROM TempTrackObservationPairs) -- Optional\n",
- "\"\"\"\n",
- "\n",
- "# Create a temporary table joining track/observation pairs, URLs, and metadata.\n",
- "sql_create_joined_data = f\"\"\"\n",
- "CREATE OR REPLACE TEMP TABLE TempJoinedData AS\n",
- "SELECT\n",
- " top.trackId,\n",
- " top.observationId,\n",
- " top.geographic_point,\n",
- " top.google_maps_url,\n",
- " u.signedUrl,\n",
- " om.captureTimestamp,\n",
- " om.bbox\n",
- "FROM\n",
- " TempTrackObservationPairs AS top\n",
- "INNER JOIN\n",
- " {table_urls} AS u\n",
- " ON top.observationId = u.observationId\n",
- "INNER JOIN\n",
- " TempObservationMetadata AS om\n",
- " ON top.observationId = om.observationId;\n",
- "\"\"\"\n",
- "\n",
- "# Select all columns from the joined data, ordered by trackId.\n",
- "sql_final_select = \"\"\"\n",
- "SELECT * FROM TempJoinedData ORDER BY trackId;\n",
- "\"\"\"\n",
- "\n",
- "# --- Optional Cleanup (Uncomment if needed) ---\n",
- "# sql_cleanup = \"\"\"\n",
- "# DROP TABLE TempTracks;\n",
- "# DROP TABLE TempTrackObservationPairs;\n",
- "# DROP TABLE TempObservationMetadata;\n",
- "# DROP TABLE TempJoinedData;\n",
- "# \"\"\""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "2ajdM7Pteiw_",
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "2ajdM7Pteiw_",
- "outputId": "d25d8ff6-6ea1-45f7-8e23-91de6dd173d7"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Query executed successfully!\n"
- ]
- }
- ],
- "source": [
- "# Execute each query part\n",
- "query_jobs = []\n",
- "\n",
- "merged_queries = f\"\"\"\n",
- "{sql_create_temp_tracks}\n",
- "{sql_create_track_observation_pairs}\n",
- "{sql_create_observation_metadata}\n",
- "{sql_create_joined_data}\n",
- "{sql_final_select}\n",
- "\"\"\"\n",
- "# add sql_cleanup # Uncomment if you want to explicitly drop the tables\n",
- "\n",
- "query_job = bq_client.query(merged_queries)\n",
- "query_jobs.append(query_job) # Store the job object\n",
- "query_job.result() # Wait for the query to complete\n",
- "print(f\"Query executed successfully!\")\n",
- "\n",
- "# Get results from the final query (SELECT * FROM TempJoinedData)\n",
- "results = query_jobs[-1].result() # Get results from last query job"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "BQsl9ztNbweY",
- "metadata": {
- "id": "BQsl9ztNbweY"
- },
- "source": [
- "# Data and image classification\n",
- "Let's process the results and anlyze the road sign images using Gemini (or any other model)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "AzOYNPlyS2fF",
- "metadata": {
- "id": "AzOYNPlyS2fF"
- },
- "outputs": [],
- "source": [
- "# Import necessary libraries\n",
- "import typing # Standard library\n",
- "import os # Standard library\n",
- "import json # For parsing JSON responses\n",
- "import io # For handling byte streams (e.g., for image data)\n",
- "\n",
- "# Define placeholder classes in the global scope\n",
- "class GenaiPlaceholder:\n",
- " \"\"\"Placeholder for the 'genai' module if it's not found or is malformed.\"\"\"\n",
- " Client = type('Client', (object,), {})\n",
- " # The 'models' attribute on a client instance would be an object,\n",
- " # so we don't need a GenerativeModel class placeholder at this level\n",
- " # if we are using client.models.generate_content.\n",
- " # However, 'GenerativeModel' might be a type hint or used elsewhere, so keep a basic one.\n",
- " GenerativeModel = type('GenerativeModel', (object,), {})\n",
- " models = type('ModelsServicePlaceholder', (object,), {'generate_content': lambda **kwargs: None})() # Placeholder for client.models\n",
- "\n",
- " @staticmethod\n",
- " def _Part_from_text_static(text): return None\n",
- " @staticmethod\n",
- " def _Part_from_uri_static(uri, mime_type): return None\n",
- " @staticmethod\n",
- " def _Part_from_bytes_static(data, mime_type): return None\n",
- " Part = type('Part', (object,), {'from_text': _Part_from_text_static, 'from_uri': _Part_from_uri_static, 'from_bytes': _Part_from_bytes_static})\n",
- " Content = type('Content', (object,), {})\n",
- " Tool = type('Tool', (object,), {})\n",
- " Retrieval = type('Retrieval', (object,), {})\n",
- " VertexRagStore = type('VertexRagStore', (object,), {})\n",
- " GenerationConfig = type('GenerationConfig', (object,), {})\n",
- " GenerateContentResponse = type('GenerateContentResponse', (object,), {})\n",
- " types = type('TypesPlaceholderSubmodule', (object,), {\n",
- " 'Part': Part, 'Content': Content, 'Tool': Tool, 'Retrieval': Retrieval,\n",
- " 'VertexRagStore': VertexRagStore, 'GenerationConfig': GenerationConfig,\n",
- " 'GenerateContentResponse': GenerateContentResponse\n",
- " })\n",
- "\n",
- "class TypesPlaceholder:\n",
- " \"\"\"Placeholder for a separate 'types' module if needed.\"\"\"\n",
- " Part = GenaiPlaceholder.Part\n",
- " Content = GenaiPlaceholder.Content\n",
- " Tool = GenaiPlaceholder.Tool\n",
- " Retrieval = GenaiPlaceholder.Retrieval\n",
- " VertexRagStore = GenaiPlaceholder.VertexRagStore\n",
- " GenerationConfig = GenaiPlaceholder.GenerationConfig\n",
- " GenerateContentResponse = GenaiPlaceholder.GenerateContentResponse\n",
- "\n",
- "# Initialize module variables\n",
- "genai_module = GenaiPlaceholder()\n",
- "gg_types = TypesPlaceholder()\n",
- "_libraries_loaded_successfully = False\n",
- "\n",
- "# --- Diagnostic Step 1: Check 'google.cloud.aiplatform' import ---\n",
- "_google_cloud_aiplatform_imported_successfully = False\n",
- "print(\"--- Diagnostic: Checking 'google.cloud.aiplatform' import ---\")\n",
- "try:\n",
- " import google.cloud.aiplatform\n",
- " _google_cloud_aiplatform_imported_successfully = True\n",
- " print(f\"Successfully imported 'google.cloud.aiplatform'. Path: {getattr(google.cloud.aiplatform, '__file__', 'N/A')}\")\n",
- "except Exception as e_aip:\n",
- " print(f\"WARNING: Could not import 'google.cloud.aiplatform'. This is needed for VertexAI client. Error: {e_aip}\")\n",
- "print(\"--------------------------------------------------------------\")\n",
- "\n",
- "# --- Attempt to import and configure 'genai' and its 'types' ---\n",
- "print(\"\\n--- Attempting to configure 'genai' (for Client & client.models) and 'types' (for Part) ---\")\n",
- "\n",
- "# Attempt 1: User's preferred pattern 'from google import genai' and 'from google.genai import types'\n",
- "try:\n",
- " from google import genai as attempt1_genai\n",
- " print(f\"Attempt 1: 'from google import genai' successful. Path: {getattr(attempt1_genai, '__file__', 'N/A')}\")\n",
- "\n",
- " from google.genai import types as attempt1_types\n",
- " print(f\"Attempt 1: 'from google.genai import types' successful. Path: {getattr(attempt1_types, '__file__', 'N/A')}\")\n",
- "\n",
- " has_client = hasattr(attempt1_genai, 'Client')\n",
- " # Check if the client instance would have a 'models' attribute with 'generate_content'\n",
- " # This is a bit indirect; we assume if Client exists, its instance will have .models.generate_content\n",
- " has_models_with_generate_content = hasattr(attempt1_genai, 'Client') # Simplified check, real check on client instance later\n",
- " has_part_in_types = hasattr(attempt1_types, 'Part')\n",
- " has_generationconfig_in_types = hasattr(attempt1_types, 'GenerationConfig') # Check another key type\n",
- "\n",
- " if has_client and has_models_with_generate_content and has_part_in_types and has_generationconfig_in_types:\n",
- " print(\"INFO: Attempt 1 ('from google import genai' and 'from google.genai import types') provides necessary attributes ('Client', 'models' structure anticipated, 'types.Part', 'types.GenerationConfig'). Using this setup.\")\n",
- " genai_module = attempt1_genai\n",
- " gg_types = attempt1_types\n",
- " _libraries_loaded_successfully = True\n",
- " else:\n",
- " print(\"WARNING: Attempt 1 ('from google import genai' and 'from google.genai import types') did not provide a complete setup:\")\n",
- " if not has_client: print(\" - Missing 'genai.Client'\")\n",
- " if not has_models_with_generate_content: print(\" - 'genai.Client' might not yield '.models.generate_content' (anticipated)\")\n",
- " if not has_part_in_types: print(\" - Missing 'types.Part'\")\n",
- " if not has_generationconfig_in_types: print(\" - Missing 'types.GenerationConfig'\")\n",
- " if not _libraries_loaded_successfully: print(\" Will try fallback 'import google.generativeai'.\")\n",
- "\n",
- "except (ImportError, Exception) as e_attempt1:\n",
- " print(f\"Attempt 1: Failed or error during 'from google import genai' or 'from google.genai import types'. Error: {e_attempt1}\")\n",
- " print(\" Will try fallback 'import google.generativeai'.\")\n",
- "\n",
- "# Attempt 2: Try 'import google.generativeai' if Attempt 1 failed\n",
- "if not _libraries_loaded_successfully:\n",
- " try:\n",
- " import google.generativeai as attempt2_genai\n",
- " print(f\"Attempt 2: 'import google.generativeai' successful. Path: {getattr(attempt2_genai, '__file__', 'N/A')}\")\n",
- "\n",
- " # For this import, types are usually directly under google.generativeai.types\n",
- " attempt2_types_candidate = None\n",
- " if hasattr(attempt2_genai, 'types') and hasattr(attempt2_genai.types, 'Part'):\n",
- " attempt2_types_candidate = attempt2_genai.types\n",
- " print(\" INFO: Found 'types.Part' via 'google.generativeai.types'.\")\n",
- " else: # Try separate import if not on main module or Part is missing\n",
- " try:\n",
- " from google.generativeai import types as attempt2_separate_types\n",
- " print(f\" Attempted separate import of 'google.generativeai.types'. Path: {getattr(attempt2_separate_types, '__file__', 'N/A')}\")\n",
- " if hasattr(attempt2_separate_types, 'Part'):\n",
- " attempt2_types_candidate = attempt2_separate_types\n",
- " print(\" INFO: Found 'Part' in separately imported 'google.generativeai.types'.\")\n",
- " else: print(\" WARNING: Separately imported 'google.generativeai.types' is MISSING 'Part'.\")\n",
- " except (ImportError, Exception) as e_sep_types:\n",
- " print(f\" WARNING: Failed to import 'google.generativeai.types' separately. Error: {e_sep_types}\")\n",
- "\n",
- " has_client = hasattr(attempt2_genai, 'Client')\n",
- " has_models_with_generate_content = hasattr(attempt2_genai, 'Client') # Simplified check\n",
- " has_part_in_types = attempt2_types_candidate and hasattr(attempt2_types_candidate, 'Part')\n",
- " has_generationconfig_in_types = attempt2_types_candidate and hasattr(attempt2_types_candidate, 'GenerationConfig')\n",
- "\n",
- " if has_client and has_models_with_generate_content and has_part_in_types and has_generationconfig_in_types:\n",
- " print(\"INFO: Attempt 2 ('import google.generativeai') provides 'Client', 'models' structure anticipated, and 'types' with 'Part'/'GenerationConfig'. Using this setup.\")\n",
- " genai_module = attempt2_genai\n",
- " gg_types = attempt2_types_candidate\n",
- " _libraries_loaded_successfully = True\n",
- " else:\n",
- " print(\"ERROR: Attempt 2 ('import google.generativeai') also did not provide a complete setup:\")\n",
- " if not has_client: print(\" - Missing 'Client'\")\n",
- " if not has_models_with_generate_content: print(\" - 'Client' might not yield '.models.generate_content' (anticipated)\")\n",
- " if not has_part_in_types: print(\" - Could not find 'types.Part'\")\n",
- " if not has_generationconfig_in_types: print(\" - Could not find 'types.GenerationConfig'\")\n",
- "\n",
- " except (ImportError, Exception) as e_attempt2:\n",
- " print(f\"Attempt 2: Failed or error during 'import google.generativeai'. Error: {e_attempt2}\")\n",
- "\n",
- "if not _libraries_loaded_successfully:\n",
- " print(\"\\n######################################################################################\")\n",
- " print(\"FINAL ERROR: Could not establish a working setup for 'genai.Client' (with '.models' attribute) and 'types.Part'.\")\n",
- " if not _google_cloud_aiplatform_imported_successfully:\n",
- " print(\" This might be related to 'google.cloud.aiplatform' not being available for the genai library.\")\n",
- " print(\" RECOMMENDATION: Ensure 'google-generativeai' (>=0.5.0 for Vertex) and 'google-cloud-aiplatform' are correctly installed and compatible.\")\n",
- " print(\" Run 'pip install --upgrade google-generativeai google-cloud-aiplatform' in your Colab environment and RESTART THE RUNTIME.\")\n",
- " print(\" The script will use placeholder objects, and API calls will not function correctly.\")\n",
- " print(\"######################################################################################\")\n",
- " genai_module = GenaiPlaceholder()\n",
- " gg_types = TypesPlaceholder()\n",
- "\n",
- "print(\"--------------------------------------------------------------\")\n",
- "\n",
- "# --- Configuration ---\n",
- "GCP_PROJECT_ID = os.getenv(\"GCP_PROJECT_ID\", \"imagery-insights-sandbox\")\n",
- "GCP_LOCATION = os.getenv(\"GCP_LOCATION\", \"us-central1\")\n",
- "\n",
- "VISION_MODEL_NAME_LAMP = \"gemini-pro-vision\"\n",
- "RAG_MODEL_NAME_LAMP = \"gemini-1.5-pro-preview-0409\"\n",
- "RAG_CORPUS_PATH = f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/ragCorpora/6917529027641081856\"\n",
- "DEFAULT_ROAD_SIGN_MODEL = \"gemini-1.5-flash-latest\"\n",
- "\n",
- "# --- Helper Function to Initialize Client ---\n",
- "def initialize_genai_client():\n",
- " if not _libraries_loaded_successfully:\n",
- " print(\"GenAI library not properly loaded. Cannot initialize client.\")\n",
- " return None\n",
- " try:\n",
- " client = genai_module.Client(\n",
- " vertexai=True,\n",
- " project=GCP_PROJECT_ID,\n",
- " location=GCP_LOCATION,\n",
- " )\n",
- " print(f\"DEBUG: Type of initialized client object: {type(client)}\")\n",
- " print(f\"DEBUG: Attributes of initialized client object: {dir(client)}\")\n",
- " if not hasattr(client, 'models') or not hasattr(client.models, 'generate_content'):\n",
- " print(\"ERROR: Initialized client does NOT have '.models.generate_content()' method as expected!\")\n",
- " return None # Critical failure if this specific invocation pattern is targeted\n",
- " print(f\"GenAI Client Initialized and Configured for Vertex AI (project '{GCP_PROJECT_ID}', location '{GCP_LOCATION}').\")\n",
- " return client\n",
- " except Exception as e:\n",
- " print(f\"Error initializing GenAI client: {e}\")\n",
- " return None\n",
- "\n",
- "# --- Function for Step 1: Lamp Image Analysis ---\n",
- "def get_lamp_description_from_image(client: typing.Optional['genai_module.Client'], gcs_url: str) -> typing.Optional[str]:\n",
- " print(f\"--- Step 1 (Lamp): Analyzing image {gcs_url} ---\")\n",
- " if not _libraries_loaded_successfully or not client:\n",
- " print(\"Error: GenAI client/types not properly loaded for lamp image analysis.\")\n",
- " return None\n",
- " try:\n",
- " prompt_text_part = gg_types.Part.from_text(text=\"\"\"Analyze the provided image.\n",
- "Instructions:\n",
- "1. Determine if the image clearly shows a utility pole or a street lamp.\n",
- "2. If it shows a street lamp, provide a detailed description focusing on:\n",
- " - Overall shape and structure, Lamp head type and shape, Arm type, Pole material and color, Any other key identifying features.\n",
- "3. If it is clearly a utility pole (carrying wires, transformers, etc.) and not a street lamp, respond ONLY with: \"UTILITY_POLE\".\n",
- "4. If the image does not clearly show either, or is ambiguous, respond ONLY with: \"UNCLEAR_IMAGE\".\n",
- "\"\"\")\n",
- " image_part = gg_types.Part.from_uri(uri=gcs_url, mime_type=\"image/jpeg\")\n",
- "\n",
- " current_generation_config = gg_types.GenerationConfig(temperature=0.2)\n",
- " print(f\"Attempting to generate content for lamp vision model: {VISION_MODEL_NAME_LAMP}\")\n",
- " response = client.models.generate_content(\n",
- " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{VISION_MODEL_NAME_LAMP}\", # Vertex model path\n",
- " contents=[prompt_text_part, image_part],\n",
- " generation_config=current_generation_config\n",
- " )\n",
- " print(\"Lamp vision content generation complete.\")\n",
- "\n",
- " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
- " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
- " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
- " print(\"Error: Lamp vision model response is empty or malformed.\")\n",
- " return None\n",
- "\n",
- " # Assuming response.text is available for this invocation pattern\n",
- " description = \"\"\n",
- " if response.candidates[0].content.parts:\n",
- " for part in response.candidates[0].content.parts:\n",
- " if hasattr(part, 'text'):\n",
- " description += part.text\n",
- " description = description.strip()\n",
- "\n",
- " if not description and hasattr(response, 'text'): # Fallback if parts don't have text but response object does\n",
- " description = response.text.strip()\n",
- "\n",
- " print(f\"Lamp image analysis result: {description}\")\n",
- " if description in [\"UTILITY_POLE\", \"UNCLEAR_IMAGE\"]:\n",
- " print(\"Image identified as utility pole or unclear. Skipping lamp classification.\")\n",
- " return None\n",
- " elif \"error\" in description.lower():\n",
- " print(f\"Lamp vision model returned an error message: {description}\")\n",
- " return None\n",
- " return description\n",
- " except AttributeError as ae:\n",
- " error_detail = str(ae)\n",
- " print(f\"AttributeError during lamp image analysis (Step 1): {error_detail}.\")\n",
- " return None\n",
- " except Exception as e:\n",
- " print(f\"An unexpected error occurred during lamp image analysis (Step 1): {e}\")\n",
- " return None\n",
- "\n",
- "# --- Function for Step 2: Lamp RAG Classification ---\n",
- "def classify_lamp_with_rag(client: typing.Optional['genai_module.Client'], lamp_description: str) -> typing.Optional[str]:\n",
- " print(f\"\\n--- Step 2 (Lamp): Classifying lamp using RAG ---\")\n",
- " if not _libraries_loaded_successfully or not client:\n",
- " print(\"Error: GenAI client/types not properly loaded for lamp RAG classification.\")\n",
- " return None\n",
- " try:\n",
- " rag_prompt_text_part = gg_types.Part.from_text(text=f\"Lamp Description: {lamp_description}\\n...\")\n",
- " si_text1 = \"You are a lighting expert...\"\n",
- " system_instruction_part = gg_types.Part.from_text(text=si_text1) # This becomes part of contents for client.models.generate_content\n",
- "\n",
- " # For client.models.generate_content, system_instruction is a top-level param\n",
- " # Contents should be a list of Content objects or dicts\n",
- " contents_for_rag = [\n",
- " # gg_types.Content(parts=[system_instruction_part]), # System instruction can be a top-level param\n",
- " gg_types.Content(role=\"user\", parts=[rag_prompt_text_part])\n",
- " ]\n",
- "\n",
- " tools_for_rag = [gg_types.Tool(retrieval=gg_types.Retrieval(source=gg_types.VertexRagStore(rag_corpora=[RAG_CORPUS_PATH], similarity_top_k=10)))]\n",
- " rag_generation_config = gg_types.GenerationConfig(temperature=0.3, top_p=0.95, max_output_tokens=512)\n",
- " safety_settings_rag = [{\"category\": c, \"threshold\": \"BLOCK_MEDIUM_AND_ABOVE\"} for c in [\"HARM_CATEGORY_HARASSMENT\", \"HARM_CATEGORY_HATE_SPEECH\", \"HARM_CATEGORY_SEXUALLY_EXPLICIT\", \"HARM_CATEGORY_DANGEROUS_CONTENT\"]]\n",
- "\n",
- " print(f\"Attempting to generate content for lamp RAG model: {RAG_MODEL_NAME_LAMP}\")\n",
- " response = client.models.generate_content(\n",
- " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{RAG_MODEL_NAME_LAMP}\", # Vertex model path\n",
- " contents=contents_for_rag,\n",
- " system_instruction=system_instruction_part, # Pass system instruction here\n",
- " tools=tools_for_rag,\n",
- " safety_settings=safety_settings_rag,\n",
- " generation_config=rag_generation_config\n",
- " )\n",
- " print(\"Lamp RAG content generation complete.\")\n",
- "\n",
- " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
- " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
- " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
- " print(\"Error: Lamp RAG model response is empty or malformed.\")\n",
- " if hasattr(response, 'prompt_feedback') and response.prompt_feedback.block_reason:\n",
- " print(f\"Prompt blocked due to: {response.prompt_feedback.block_reason_message}\")\n",
- " return None\n",
- "\n",
- " final_result = \"\"\n",
- " if response.candidates[0].content.parts:\n",
- " for part in response.candidates[0].content.parts:\n",
- " if hasattr(part, 'text'):\n",
- " final_result += part.text\n",
- " final_result = final_result.strip()\n",
- "\n",
- " if not final_result and hasattr(response, 'text'): # Fallback\n",
- " final_result = response.text.strip()\n",
- "\n",
- " print(f\"Lamp RAG Classification result: {final_result}\")\n",
- " return final_result\n",
- " except AttributeError as ae:\n",
- " error_detail = str(ae)\n",
- " print(f\"AttributeError during lamp RAG classification (Step 2): {error_detail}.\")\n",
- " return None\n",
- " except Exception as e:\n",
- " print(f\"An unexpected error occurred during lamp RAG classification (Step 2): {e}\")\n",
- " return None\n",
- "\n",
- "# --- Main Lamp Orchestration Function ---\n",
- "def analyze_and_classify_lamp(client: typing.Optional['genai_module.Client'], gcs_url: str):\n",
- " print(f\"\\nStarting lamp analysis for image: {gcs_url}\")\n",
- " if not client:\n",
- " print(\"Lamp analysis: GenAI client is not provided or not initialized. Exiting lamp analysis.\")\n",
- " return\n",
- " lamp_description = get_lamp_description_from_image(client, gcs_url)\n",
- " if lamp_description:\n",
- " classification_result = classify_lamp_with_rag(client, lamp_description)\n",
- " if classification_result: print(f\"\\n=== Final Lamp Classification for {gcs_url} ===\\n{classification_result}\\n===============================================\")\n",
- " else: print(f\"\\nFailed to get lamp classification for {gcs_url} after obtaining description.\")\n",
- " else: print(f\"\\nNo valid lamp description obtained for {gcs_url}. Cannot proceed to lamp classification.\")\n",
- "\n",
- "# --- Function for Road Sign Classification ---\n",
- "def classify_road_sign(client: typing.Optional['genai_module.Client'], image_data: bytes, model_name: str = DEFAULT_ROAD_SIGN_MODEL) -> dict:\n",
- " print(f\"\\n--- Classifying road sign using model: {model_name} ---\")\n",
- " if not _libraries_loaded_successfully or not client:\n",
- " return {\"error\": \"Client/Types not loaded\", \"details\": \"GenAI library (Client, client.models or types.Part) not available.\"}\n",
- " if not isinstance(image_data, bytes): return {\"error\": \"Invalid input type\", \"details\": \"image_data must be bytes.\"}\n",
- " try:\n",
- " prompt_text = \"\"\"Classify the road sign in this image into one of the following categories:\n",
- " * Stop, * Yield, * Speed Limit, * Pedestrian Crossing, * No Parking, * Turn, * Do not enter, * Street name, * Other\n",
- " Provide the category and a description in JSON format.\n",
- " Provide a field called \"sign_quality\" (Good, Fair, Poor, Critical, Other).\n",
- " If image quality is poor, include notes in \"image_quality_notes\".\n",
- " Return as a json object. Example:\n",
- " ```json\n",
- " {\n",
- " \"category\": \"Stop\", \"sign_quality\": \"Good\",\n",
- " \"description\": \"A red octagonal stop sign is clearly visible.\",\n",
- " \"image_quality_notes\": \"image is clear\"\n",
- " }\n",
- " ```\"\"\"\n",
- " image_part = gg_types.Part.from_bytes(data=image_data, mime_type=\"image/jpeg\")\n",
- "\n",
- " # Construct contents list:\n",
- " # The prompt should be a Part if it's multi-turn or complex, or just a string.\n",
- " # For client.models.generate_content, contents is a list of Content objects or dicts.\n",
- " # Each Content object has a 'parts' list.\n",
- " contents_for_road_sign = [\n",
- " gg_types.Content(parts=[gg_types.Part.from_text(prompt_text), image_part])\n",
- " ]\n",
- "\n",
- " print(f\"Attempting to generate content for road sign model: {model_name}\")\n",
- " # Use client.models.generate_content\n",
- " response: 'gg_types.GenerateContentResponse' = client.models.generate_content(\n",
- " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{model_name}\", # Vertex model path\n",
- " contents=contents_for_road_sign\n",
- " )\n",
- " print(\"Road sign classification content generation complete.\")\n",
- "\n",
- " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
- " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
- " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
- " return {\"error\": \"Model response empty\", \"details\": \"No content parts in response.\"}\n",
- "\n",
- " json_text = \"\"\n",
- " if response.candidates[0].content.parts:\n",
- " for part in response.candidates[0].content.parts:\n",
- " if hasattr(part, 'text'):\n",
- " json_text += part.text\n",
- " json_text = json_text.strip()\n",
- "\n",
- " if not json_text and hasattr(response, 'text'): # Fallback\n",
- " json_text = response.text.strip()\n",
- "\n",
- " print(f\"Raw response text from road sign model: {json_text[:200]}...\")\n",
- "\n",
- " if json_text.startswith(\"```json\"): json_text = json_text[7:]\n",
- " if json_text.endswith(\"```\"): json_text = json_text[:-3]\n",
- "\n",
- " result_dict = json.loads(json_text.strip())\n",
- " print(f\"Parsed road sign classification: {result_dict}\")\n",
- " return result_dict\n",
- " except AttributeError as ae:\n",
- " error_detail = str(ae)\n",
- " print(f\"AttributeError during road sign classification: {error_detail}.\")\n",
- " return {\"error\": \"AttributeError\", \"details\": error_detail}\n",
- " except json.JSONDecodeError as je:\n",
- " return {\"error\": \"JSONDecodeError\", \"details\": str(je), \"raw_response\": json_text} # Return the text we tried to parse\n",
- " except Exception as e:\n",
- " return {\"error\": \"Unexpected error\", \"details\": str(e)}\n",
- "\n",
- "# --- Example Usage ---\n",
- "if __name__ == \"__main__\":\n",
- " if not _libraries_loaded_successfully:\n",
- " print(\"\\nCannot run examples: Critical libraries (GenAI Client with .models or Types.Part) failed to load.\")\n",
- " print(\"RECOMMENDATION: Run 'pip install --upgrade google-generativeai google-cloud-aiplatform' in your Colab environment and RESTART THE RUNTIME.\")\n",
- " else:\n",
- " print(\"\\nLibraries loaded. Initializing client for examples...\")\n",
- " master_client = initialize_genai_client()\n",
- "\n",
- " if master_client:\n",
- " print(\"\\n--- Running Lamp Analysis Examples (Commented Out) ---\")\n",
- " # analyze_and_classify_lamp(master_client, \"gs://utility-poles/o1:0010f9db7600bf7de3cd2874d8ae421c_00250082.jpg\")\n",
- " print(\"\\n\\n--- Running Road Sign Classification Example ---\")\n",
- " dummy_jpeg_bytes = (\n",
- " b'\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00\\x01\\x00\\x01\\x00\\x00\\xff\\xdb\\x00C\\x00\\x08\\x06\\x06\\x07\\x06\\x05\\x08\\x07\\x07\\x07\\t\\t\\x08\\n\\x0c\\x14\\r\\x0c\\x0b\\x0b\\x0c\\x19\\x12\\x13\\x0f\\x14\\x1d\\x1a\\x11\\x11\\x18!\\x1e\\x18\\x1a\\x1d(%\\x1e\\x1f#\\x1c\\x1c #%)\\x17\\x1f\\x1f+('\n",
- " b'\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\xff\\xc9\\x00\\x0b\\x08\\x00\\x01\\x00\\x01\\x01\\x01\\x11\\x00\\xff\\xda\\x00\\x08\\x01\\x01\\x00\\x00?\\x00\\xd2\\xcf \\xff\\xd9'\n",
- " )\n",
- " print(\"Classifying dummy road sign image...\")\n",
- " # Note: The 'client' parameter to classify_road_sign is the initialized vertex_ai_client\n",
- " classification_result = classify_road_sign(master_client, dummy_jpeg_bytes, model_name=DEFAULT_ROAD_SIGN_MODEL)\n",
- "\n",
- " print(\"\\n=== Road Sign Classification Result ===\")\n",
- " if \"error\" in classification_result:\n",
- " print(f\"Error: {classification_result['error']}\\nDetails: {classification_result.get('details', 'N/A')}\")\n",
- " if \"raw_response\" in classification_result: print(f\"Raw Model Response: {classification_result['raw_response'][:500]}...\")\n",
- " else:\n",
- " print(json.dumps(classification_result, indent=4))\n",
- " print(\"======================================\")\n",
- " else:\n",
- " print(\"\\nGenAI client initialization failed. Cannot run examples.\")\n",
- " print(\"\\nProcessing finished.\")\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "BeyUgeu0beKc",
- "metadata": {
- "id": "BeyUgeu0beKc"
- },
- "source": [
- "# Insert image data int Bigquery\n",
- "\n",
- "We may want to store the image classification reponse in a BQ table."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "JfxGpi0gbbNw",
- "metadata": {
- "id": "JfxGpi0gbbNw"
- },
- "outputs": [],
- "source": [
- "\n",
- "\n",
- "from google.cloud import bigquery\n",
- "from typing import Dict, Any\n",
- "\n",
- "#PROJECT_ID = \"imagery-insights-sandbox\" # Replace with your project ID\n",
- "ANALYSIS_DATASET_ID = \"imagery_analysis\" # @param {type: \"string\"}\n",
- "\n",
- "def insert_image_report_to_bq(image_report: Dict[str, Any]) -> None:\n",
- " \"\"\"\n",
- " Inserts a single image report dictionary into a BigQuery table.\n",
- "\n",
- " Args:\n",
- " image_report: A dictionary representing the image report.\n",
- " \"\"\"\n",
- " ANALYSIS_RESULTS_TABLE = \"road_sign_data\" # @param {type: \"string\"}\n",
- "\n",
- " client = bigquery.Client(project=PROJECT_ID)\n",
- " table_ref = client.dataset(ANALYSIS_DATASET_ID).table(ANALYSIS_RESULTS_TABLE)\n",
- "\n",
- " try:\n",
- " errors = client.insert_rows_json(table_ref, [image_report]) # Corrected line\n",
- " if errors:\n",
- " print(f\"Error inserting image report: {errors}\")\n",
- " else:\n",
- " print(\"Image report inserted successfully.\")\n",
- " except Exception as e:\n",
- " print(f\"An error occurred during BigQuery insertion: {e}\")\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "_yIYkO6IbsIz",
- "metadata": {
- "id": "_yIYkO6IbsIz"
- },
- "source": []
- },
- {
- "cell_type": "markdown",
- "id": "H2m-WNIob4Ww",
- "metadata": {
- "id": "H2m-WNIob4Ww"
- },
- "source": [
- "# Create the data element\n",
- "\n",
- "We want to combine results from the original query along with image analysis results in a single dict object.\n",
- "\n",
- "With this object we can either\n",
- "\n",
- "1. Insert in BQ\n",
- "2. Just visualize the data as pandas dataframe\n",
- "3. export as json/csv\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "Svh317jJaLkF",
- "metadata": {
- "id": "Svh317jJaLkF"
- },
- "outputs": [],
- "source": [
- "import requests\n",
- "import PIL.Image\n",
- "import importlib\n",
- "import io\n",
- "from typing import List, Dict, Any\n",
- "from decimal import Decimal\n",
- "import datetime\n",
- "importlib.reload(datetime)\n",
- "\n",
- "def process_image_reports(results: List[Any]) -> List[Dict[str, Any]]:\n",
- " \"\"\"\n",
- " Processes a list of results, retrieves images from signed URLs, classifies them, and inserts into BigQuery.\n",
- " \"\"\"\n",
- " all_reports: List[Dict[str, Any]] = []\n",
- " for image_counter, row in enumerate(results, 0):\n",
- " track_id: Any = getattr(row, \"trackId\", None)\n",
- " observation_id: Any = getattr(row, \"observationId\", None)\n",
- " geographic_point: Any = getattr(row, \"geographic_point\", None)\n",
- " maps_url: Any = getattr(row, \"google_maps_url\", None)\n",
- " capture_timestamp: Any = getattr(row, \"captureTimestamp\", None)\n",
- " bbox: Any = getattr(row, \"bbox\", None)\n",
- " signed_url: str = getattr(row, \"signedUrl\", \"\")\n",
- "\n",
- " print(f\"Processing image {image_counter}: trackId={track_id}, observationId={observation_id}\")\n",
- " print(f\"Processing image {image_counter}: timestamp={capture_timestamp}, observationId={observation_id}\")\n",
- "\n",
- " try:\n",
- " response = requests.get(signed_url, stream=True, timeout=10)\n",
- " response.raise_for_status()\n",
- " image_data: bytes = response.content\n",
- "\n",
- " gemini_response: dict = classify_road_sign(image_data)\n",
- "\n",
- " print(f\"The classification type is ##### {gemini_response}\")\n",
- "\n",
- " if \"error\" in gemini_response:\n",
- " print(f\" Error classifying image {image_counter}: {gemini_response['error']}\")\n",
- " category = None\n",
- " description = None\n",
- " image_quality_notes = None\n",
- " sign_quality = None\n",
- " else:\n",
- " category = gemini_response.get(\"category\")\n",
- " description = gemini_response.get(\"description\")\n",
- " image_quality_notes = gemini_response.get(\"image_quality_notes\")\n",
- " sign_quality = gemini_response.get(\"sign_quality\")\n",
- "\n",
- " # Convert captureTimestamp to ISO 8601 string\n",
- " capture_datetime_str = None\n",
- " if capture_timestamp:\n",
- " if isinstance(capture_timestamp, datetime.datetime):\n",
- " capture_datetime_str = capture_timestamp.isoformat()\n",
- " else:\n",
- " print(f\"Warning: Unexpected captureTimestamp type: {type(capture_timestamp)}\")\n",
- " capture_datetime_str = None\n",
- "\n",
- " image_report: Dict[str, Any] = {\n",
- " \"trackId\": str(track_id),\n",
- " \"observationId\": str(observation_id),\n",
- " \"geographic_point\": str(geographic_point),\n",
- " \"mapsURL\": str(maps_url),\n",
- " \"captureTimestamp\": capture_datetime_str, # Use ISO 8601 string\n",
- " \"signedUrl\": str(signed_url),\n",
- " \"category\": category,\n",
- " \"description\": description,\n",
- " \"image_quality_notes\": image_quality_notes,\n",
- " \"sign_quality\": sign_quality,\n",
- " }\n",
- "\n",
- " # Convert bbox to JSON string\n",
- " bbox_data = bbox\n",
- " if bbox_data:\n",
- " def convert_decimal(obj):\n",
- " if isinstance(obj, Decimal):\n",
- " return float(obj)\n",
- " raise TypeError\n",
- "\n",
- " image_report['bbox'] = json.dumps(bbox_data, default=convert_decimal)\n",
- "\n",
- " all_reports.append(image_report)\n",
- " print(f\"image_report to be inserted: {image_report}\")\n",
- " insert_image_report_to_bq(image_report)\n",
- "\n",
- " except requests.exceptions.RequestException as e:\n",
- " print(f\" Error processing image {image_counter}: {e}\")\n",
- " except PIL.UnidentifiedImageError as e:\n",
- " print(f\" Error processing image {image_counter}: Invalid image data - {e}\")\n",
- " except Exception as e:\n",
- " print(f\" Error processing image {image_counter}: {e}\")\n",
- "\n",
- " return all_reports\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "pKhnr-GYbwRx",
- "metadata": {
- "id": "pKhnr-GYbwRx"
- },
- "source": [
- "# Analyzie the images with Gemini"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "vsb8vrf0iyfE",
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "vsb8vrf0iyfE",
- "outputId": "450acc03-f67d-4f29-afe4-f82bd8d39e78"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a \\'no parking\\' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43740690322149367, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d8259517def436febb7edd575c263e:ffff005f', 'observationId': 'o1:adb0315c208fa608026a8bf1ba028207:00110060', 'geographic_point': 'POINT(-111.934369392931 40.7594460125518)', 'mapsURL': 'https://maps.google.com/?q=40.759446,-111.934369', 'captureTimestamp': '2019-05-01T23:23:36.190150+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadb0315c208fa608026a8bf1ba028207%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=954e4995775cb00a37d977cd6b5c201b9cefc5a63cc04a34d1907365ec0532a3e122a1de924cdc3e2f6ff9358a9a5b9d8128785013e5db13ab8353443d4d02e92fab16a92e2da0104830269f4afd234cd2270b11df282e6a44a72f6cec253d6ea3a6f28b00ae2548d82a39ea6d28ac82bbebeb44e79bac497191f4665d56e310e1abe6c8fb0345dafb84a0e056ffd0cc9c2e07c1e518b88b94ef3d638c620c47f423e20b8bacb796ce72d6e380ebc72626f11b26f55291c5ad8324acd302fba024016274a756e9436ac7fc452deebd76f40bc5a112a22921db207cd5e298f6c2e37031e1c0f5faf26b473ee2540042140e28d23b6420e1707d49585d277f8f88', 'category': 'No Parking', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2013.0, \"x\": 1172.0}, \"hi\": {\"y\": 2172.0, \"x\": 1253.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5090: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:e94b7a63caf8593151c7e7711697d3b2:00110060\n",
- "Processing image 5090: timestamp=2024-01-30 16:24:41.879033+00:00, observationId=o1:e94b7a63caf8593151c7e7711697d3b2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\\\\"Sunshine Dr N\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15273912074202198, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:e94b7a63caf8593151c7e7711697d3b2:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2024-01-30T16:24:41.879033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae94b7a63caf8593151c7e7711697d3b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa83eb9f56cbc4efea63c6d96ead57622f0f8e209f51d913d6b83cd7d5769a81663bdf9567f0b5b6194b4f674291d208d266974c70275bdc87efc3e5947a23fe16c929f95f8c5205ae1823e02768884d2ccf7617a886e8d371385a9a7b9c7eab20dae9386f38a6d80841678e6f8c96b5dbc4246daeff0b9aa00adcdbf3d98717d76008bdc8e2f15cc32b64b56b28dddb42354b478c38da003e4cc11d6633c797d47d0eae04d77d4cc011e95c3de5be6b7b79b741d9bedb14a914cd588b0fb97bcc676af6d984025f54f937b5669a0487733675edd5709f9e2af48b8c81e592a2db86ce5f0cf8bd6adf7cb9f9cbfcfef85796ffe0578ae7b7a24b9c8ac9d6a66f', 'category': 'Street name', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2301.0, \"x\": 317.0}, \"hi\": {\"y\": 2435.0, \"x\": 870.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5091: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:0cf9302da38e5019f24b7a3192cf0d63:00110060\n",
- "Processing image 5091: timestamp=2016-06-01 19:37:38.473376+00:00, observationId=o1:0cf9302da38e5019f24b7a3192cf0d63:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with \\'Sunshine Dr East\\' on the top and \\'Sunshine Dr North\\' on the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10560789500197319, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:0cf9302da38e5019f24b7a3192cf0d63:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:38.473376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0cf9302da38e5019f24b7a3192cf0d63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=12d15453fd96ebc302d164ca403db15ac97d7efbb5b04d707e0891d0c7c15ee3b032d1135abf75d45aa47b60b0566a36f7a45a63a680902ab6b11fff5fab102b5b2e7747da9bcb5c17a2d6ca142d002a8aadc21a4fda8473c323c58553e1ab998f4d55c7d9c6ab370476686acf064d1dc1fee7330c9f51d99c78a343afebcc06aad3fa6f9c0e6cf5f0942aaaf6e85bffcc75312390d9245a1b816af15fac146acf9942492aba15de3d903212e6c9bfeeca4e3f3e5a0faff7286e68e773a696f45e7a3a99d7eceded302a5563ed3b4c9f7b71c68b125174d724f2335c7c467a80329c866d86079290bc7b745ae9144404662ae41bf6241015b9d624ed552d7dab', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1106.0, \"x\": 0.0}, \"hi\": {\"y\": 1144.0, \"x\": 179.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5092: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:8949d3bed84973526bf70a533ceaa1a9:00110060\n",
- "Processing image 5092: timestamp=2016-06-01 19:37:40.626863+00:00, observationId=o1:8949d3bed84973526bf70a533ceaa1a9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two green street name signs, one above the other. The top sign reads \\\\\"Sunshine Dr East\\\\\" and the bottom sign reads \\\\\"Sunshine Dr North\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.073867315199317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:8949d3bed84973526bf70a533ceaa1a9:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:40.626863+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8949d3bed84973526bf70a533ceaa1a9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092627Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4a7e4abc8c0817bd74a21f2adf4301e10661c624577c6f26deaf47408b4ea58d7a1d61182e05346e6011404cf101908ef299a74fadf5b5894cac2224b38d1a85aae34c1145c6e888437dafaf4992d7f1f5588dfbe069dac8e20ffbf94fc21036f50f9b85697ff2eb2355f24c00c7f7970f10d23b4e9f1fe440aaab1f15a09265ac305718df04b4101d26fa33316d823e574692e2acc63de942fb6f29db51fcd86cc47099cd48a77cd30f777c4b5319f2f61b6eeae9f48cf5925a5f7b5db94040603889cd07e4a8154fba052b5b3e143ce1cb9e076fd592d579586e9e917fdc33de344b9ca2d5949b12ecc70a6fb89ec87d55b04ddacd5e1dded17aa041f0f75', 'category': 'Street name', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 142.0, \"x\": 767.0}, \"hi\": {\"y\": 206.0, \"x\": 909.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5093: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:27639c5d192e2d8f6c460d1c7542103b:00110060\n",
- "Processing image 5093: timestamp=2024-01-30 16:24:39.415066+00:00, observationId=o1:27639c5d192e2d8f6c460d1c7542103b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs. One reads \\'Sunshine Dr E\\' and the other reads \\'Sunshine Dr N\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13017322647739465, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2041, total_token_count=2112) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:27639c5d192e2d8f6c460d1c7542103b:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2024-01-30T16:24:39.415066+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27639c5d192e2d8f6c460d1c7542103b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=719577778ba2cb19ce416189836ce26879b722e378a6b4f797787dcc46578893b9a9e127a374b5b3738739cf9681a3961c8e814be3d4b2bd503a68971a69b918b782acd0000c277cc5057d93a411129fe642469f3bad35c18944c6cc082baf11ad7cf036ba6af6cefe5c8b6e1a708c2ec7a9e45386d66ddfb6bf9702d68e811609f385d65f1b86bec0cbf7244baf7cadc6977e8f30fc0653f4a917df37a3eac8d82ecbb28a542ba4d5111f56c6b0728d0cbca8bc672da75cd02bca24a81e4b5b7ff4cbe5898d54829a504d7e0a7fc6db6b5a2df8f6b3f33311206fe031804e099187abb2bb4211b82ceb1650eb728411711db3af3f20f27f975c7ad0574292b2', 'category': 'Street name', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3228.0, \"x\": 2699.0}, \"hi\": {\"y\": 3274.0, \"x\": 2869.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5094: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060\n",
- "Processing image 5094: timestamp=2016-06-01 19:37:38.473376+00:00, observationId=o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street name sign. The upper sign reads \\\\\"Sunshine Dr E\\\\\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.\",\\n \"image_quality_notes\": \"The image quality is a little blurry, but the main sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47823693617334906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:38.473376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ab69d5fd24e23d2fb1b9a8238d2cc2e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8c20e962b7b0432239accb7b89d16dbe422e3185b5f194dc8cb70a7f2a0aabe6613867b3267f12f95cdee8828cb167eb55e9c6f2284eaa785aab0bb3a5cac61faa18460518d9a609a6fb9c909245b26d9c8da6e988367886e482fc635273a0f4e398aee7e54b8a57f72b5db5f02a96c5023164f0bce95e55b099a6d764c7b3e45d0ec10dc559a2a99ade1c38057e97ce801a894ee8db4d4dfa39d2e6e5bc4823a26b8d7def2aebebfa647a58c078f17a220eaf3ed970e4f8d96b0f6f24db4b6c5fddc4715edecdfff3b826183af343735001b4c4a2fc8f6cd49f4b214265640969baa48ec589e25771f6c2d7249bb6df9a2a9eaa808e66b653c9f59bf2e573b6', 'category': 'Street name', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 787.0, \"x\": 1779.0}, \"hi\": {\"y\": 846.0, \"x\": 1945.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5095: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:26417b42fe84cf823c574faf22c63aeb:00110060\n",
- "Processing image 5095: timestamp=2021-11-05 18:07:09.547805+00:00, observationId=o1:26417b42fe84cf823c574faf22c63aeb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a construction zone marker with alternating white and orange stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23617178706799524, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:26417b42fe84cf823c574faf22c63aeb:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.547805+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26417b42fe84cf823c574faf22c63aeb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=26c2202164039fd8e37e63d47dc472dd2b0e8af4a5715ef8ac69af4993b3238b909ea375ec609dfdb0dee0e4f940520aac604d0438c817c7326b5eeb833e39f07f22a3dfd28e051ff2daffb718f80acb26f120ac6501a34b35c9d8569f0fe37d56b87ca6443dbc718c0d45ec6a154bb6bc53c1c7e705f97e4023def4cea0cdcab404c7d66a61260666f92d0ae48e803bbeb9c3243e996c884f02ab2f840eb1a8f2233b134e77fef0122c76128dcd1242307d3e640535f639085db8bc6180003a9bc27796902808dccb3da8006a4ab2c14b4d984544a605496c7b778ed64256d438e331442ac4afc557bae77848e505c2c0605031e85e3b4e34dbd33ebe50da3c', 'category': 'Other', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3766.0, \"x\": 2297.0}, \"hi\": {\"y\": 4135.0, \"x\": 2394.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5096: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:670302864aa844cc50d55553cec0918e:00110060\n",
- "Processing image 5096: timestamp=2021-11-05 18:07:09.247812+00:00, observationId=o1:670302864aa844cc50d55553cec0918e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1866093635559082, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:670302864aa844cc50d55553cec0918e:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.247812+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A670302864aa844cc50d55553cec0918e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8624c79a1b66c838b13042576a15d9c52bdcfc912829962ae4784f91598179e7031901a1dd0bf0e99c748a7d21a95634265fdd2421cd38758c28dcf6b2aee78d08e58ccaac2d98b3a9fca836455c356196c33c3e2efff80665eddcf1229b8f0ad5c13f3889f232d585bd82a164b49f42267d8a2ed87a572b8a94c2760e6c1d6c8ef9c6acd2ac5f356649cd8762d65e1a7bf9f5e8abca6ade7df0f737636debd18dc10130dd4ac543fe219e782c30b96f308e2fa0c9a9d3f260fa42811d48c8cc7b5c2a04877012dd0d04179c8128b61d44fd6cc670af727311a69fb0f984346b7e9c5be550103e9ec80f83f6aeda73d342fd37c31edef808d79f7ad75403106', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3600.0, \"x\": 2679.0}, \"hi\": {\"y\": 4493.0, \"x\": 2880.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5097: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:7d7d301f478458826336d649af51aace:00110060\n",
- "Processing image 5097: timestamp=2021-11-05 18:07:10.147817+00:00, observationId=o1:7d7d301f478458826336d649af51aace:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is a traffic cone. It is orange and white striped.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15426961202470083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:7d7d301f478458826336d649af51aace:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:10.147817+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d7d301f478458826336d649af51aace%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92acd638381f528e1655dc27913603099a5c2c09a8e23db854c250093d77ac1fa53cff6d3041ae7cca560b86015f762ee32d439c16738059629f91b3203580b34efe22d64424ac819df0f993292b6da76a3bfacf1d1d1f2fb5216ae6704eb141133fdf65ca217564855871700c386eded935554e1c7fdacd23956ce87ee18e3e4bd28f07c1872652932fdb51fb5d3276cc6ac135cdad07b38c0fd97591b49d4d2f311e08b0b41c1f9e8425eef86d333270677d088f33eec2f75cec84b3c603dc1749d9927db38cbfe2b62c0ac0c3da96ad6fcd175f7d93353a8cb233a4175c956a7f84b8132d59f7c08b533101de3e6b8a17f5f80e78ea11dcfd79202fc22d0e', 'category': 'Other', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3416.0, \"x\": 2956.0}, \"hi\": {\"y\": 3584.0, \"x\": 3007.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5098: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060\n",
- "Processing image 5098: timestamp=2021-11-05 18:07:09.247812+00:00, observationId=o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3928672105838091, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2557, total_token_count=2635) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.247812+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aca4a0a4d4a8a8a96787174a28beeecdd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87d516a7ce12f001533999a4cc13bf4ccb25977ab18994f730da2367022fade444e096a7d75199f3ef3143b92af0064ad53717b91dacab090def563f77cdd7d419fa3d9e6ba72a569765e6ae43aab9130af09749fd743c025c59f468b93c08d089fd512ba5a949199792138eb560ac39250db6f48e3a4a1ad002123780f3ba0fc637d1246ff3f31f48088458eb72d5baf8ecd9aa69d7152808c9bcc1ee107c4c971d9559f2024bd901965f787113f963801dbbcbe80bf9790751dcb06977ab0e5895bf2e97b8de0cf13f151c242a55ddde362cd1d1ff47ba5e4cb1f7a21c9f8aea95556580b6a1f9e2e8ed6c7ac5cfef78e6e0435d4fbc01f133bf72626e3b3c', 'category': 'Other', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4446.0, \"x\": 353.0}, \"hi\": {\"y\": 5278.0, \"x\": 612.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5099: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:8be70deb22cba56ccc8d765e94010fca:00110060\n",
- "Processing image 5099: timestamp=2021-11-05 18:07:09.847848+00:00, observationId=o1:8be70deb22cba56ccc8d765e94010fca:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic cone with orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1378087043762207, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=1525, total_token_count=1580) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:8be70deb22cba56ccc8d765e94010fca:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.847848+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8be70deb22cba56ccc8d765e94010fca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abd7550eb92b47f3d9a0aae0abc85ddbe93cf2093909521ff4bb096f272b3e1fa8a2d2df78b789c13f68a5b311cbcb4cda79469b797ffc7866dacad84f9e078bdb0ed4f9119106b350c2b29b94a7e90ea18c706ed5fbe761f8eeab3e1c900c79a58c2d61e94bef544474f415016fae0b9e1954294b48bc43d8392341c764e680d5b00c47c58deeeb23fbf616dd88bbee30aded347f985a531e06cf70b33ae97f01b74d4111d921b46660213c74cfa6b3f9bea42dce5c29dbf6f0a3ac5c18e208d25a1509e0c1acebefaff9bea3d5935a2bb3b7456c9866d17b5802123c0be92ecbd3daf2c7b9578066f9832a745b5cbb9f3c181180be6714950fa5fabab2cefa', 'category': 'Other', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3527.0, \"x\": 2770.0}, \"hi\": {\"y\": 3750.0, \"x\": 2830.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5100: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:8ca508fb4dec16c8c2a42905766d1728:00110060\n",
- "Processing image 5100: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:8ca508fb4dec16c8c2a42905766d1728:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone. It\\'s orange with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1685226809593939, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:8ca508fb4dec16c8c2a42905766d1728:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ca508fb4dec16c8c2a42905766d1728%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b9776c6bad3cc98a170dcb8282c9e006e87526404052b5acedde5cc41d5158a1f8c7ea34b55af877b7a75a8d36b7af0e158ec5f1934982ef15c4df69038d7e1899913cc5f3a698099b145fa9fe09cf064a4c2bf346d3334ac37a3b860eca3d27f0a9fcd2064dfda95d97f2b9980d6de91fa73355f1b838522a37f35c8e3bae00b3d63a4e40a7fdfb636b18928114ffbd0c9f5d662d34d7713b3eb8ae769ce76122074d0dd27df7e3bbb5ee376c01be9b72edec0d3cb3c709bcb149ad52fc92847c1e11001f008d9f93eb97762337bc09c832cfc3d47101fd63fb400184123bb65fe794e81fbb5632031c5a0fd2ae0206b39a281b620fcf01ee4c93941b1c0c51', 'category': 'Other', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3163.0, \"x\": 3370.0}, \"hi\": {\"y\": 3793.0, \"x\": 3533.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5101: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:950e6888ff2fb7c756df318b5e278b12:00110060\n",
- "Processing image 5101: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:950e6888ff2fb7c756df318b5e278b12:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white and orange striped traffic barrier is visible, mounted on a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23911488440728956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:950e6888ff2fb7c756df318b5e278b12:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A950e6888ff2fb7c756df318b5e278b12%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37f54fa63bfbab4a65a243e925b0176731b5daa49dc8768a723c232c6354a2eadfa596100a1b4bdac4c142cabcc2b8031d0abe2939e1682feb69823692d48dc7adbfdf252a1e0ec134201e3462128a28ccfc3778b9198f9c13608968d04613a14b5541b3b2f16828ffc545bb90e4dbd2ec3c4ee5716e4ac85fe97b08fcdc4f72f7d25353cbcfd5389b827964feb83671c81ceea30b31f2022e1531b345ca9db94e0a553ceb64f2c55282bfe76afdbd5b6455e97f46436efb1c7ee8f6f737fea5c4daa2191e3246b3855435c49868cf00a8eb59c7c63dea13ad6644476c4c17719373ebc78bdf2a48d754e952c7616a74f1f43d7054301426a2aa20e3f012b8f0', 'category': 'Other', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3518.0, \"x\": 2705.0}, \"hi\": {\"y\": 4356.0, \"x\": 2936.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5102: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:c10aa42369e791ae72085a1a88b155dd:00110060\n",
- "Processing image 5102: timestamp=2022-06-24 20:11:16.286610+00:00, observationId=o1:c10aa42369e791ae72085a1a88b155dd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4226243019104004, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2557, total_token_count=2637) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:c10aa42369e791ae72085a1a88b155dd:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.286610+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac10aa42369e791ae72085a1a88b155dd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13fde203d6d80308207cdda739e1a664e77651f9526a0eefbd648858ef59dbb68fcdf671053a04156dfef96ec8218c319191e9fdc5187c7bb019ded90a31c43a00e1835818728a3ce35ec79dcea65d66a83ddc7a22e8ae81fabda6cf24da1fb1417e2b13b896e7734afef9c30c9a23832b15844daa3d215379d42d659461dd870ecf81ab567d24298bc9fb2d91b0ceda2c56ac2add2365ae1166951f5b3716bda3d70e42ef78b48e037d1760a7ec53f3c559b8e6c6001d205495fa520affcba04be9beacfecdc99b4ece95c6e0684c8ecb9ce0353b27c67bbf24518080c63de746681a3b6ed07002225c9a2871b36b6cfd64f00b9b75757204f42b28d3a25cb5', 'category': 'Other', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4170.0, \"x\": 1323.0}, \"hi\": {\"y\": 4749.0, \"x\": 1455.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5103: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:abeb72154c1c637d380fe9cc70baaa4c:00110060\n",
- "Processing image 5103: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:abeb72154c1c637d380fe9cc70baaa4c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It\\'s a type of traffic warning device.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34499271099384016, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2557, total_token_count=2635) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:abeb72154c1c637d380fe9cc70baaa4c:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aabeb72154c1c637d380fe9cc70baaa4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13d5bcb8ac322f7dce0c13e30073fb96e47301a9e66969a6b030adc6748685f885b9c7297fa0df8a41e3f85804fb86fa94ef30898a476b4956f40b243f7f56d7f20be4f9898163514b3f92f9a27900aad1816f253fb4a0b9ab6c37070f6fced8c5c2f91428c6f03a1c1492c2d8c4910523cecbed6552ec2db9822a4a554285c4700752e129d8ed3b79d2fc511fad17b95ed65c7affdd45a1ca9238087dd8c23f68b780cf00f9a5a4a2b13d43b696d98d9df6b3aa197e119c0bdb6462a114ce5f9b73b6f1e23b2409efe013738fb0a697c3859304b825660bfaa55c5574b626cf90f48e71d723c89d75b8b792cfb78544c365c7d42c84729760bc2d95282d8738', 'category': 'Other', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4424.0, \"x\": 116.0}, \"hi\": {\"y\": 5160.0, \"x\": 285.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5104: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:27ce985f833908015c1b1b8645ce8c32:00110060\n",
- "Processing image 5104: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:27ce985f833908015c1b1b8645ce8c32:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A white sign with diagonal orange stripes, typically used for construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16881156736804592, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:27ce985f833908015c1b1b8645ce8c32:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27ce985f833908015c1b1b8645ce8c32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2415272d2f398a826683f2aa0b9df98f7c44727c0f65c51eb952e844eb834c77e8b47ddca0d548b178632bdfb1d01c041100a15a3c1add79a5290bc06872e023d5822bb942a99422a2d8611b3dca389fe89ef8aaf22d04b843549c87509318e7e68eff1ebbcb310ade12e0a098f081c1e8660ac44f1011a18b5ff9565367b8be9c9b5a97d3a1fd501b8968cdc9330387bd26d95da628365e61c9df7cb933ef3b8ee27e4a5f96bb92d88327b4bf9c1c8d7e1651dbb97fdba8fd54c3fd8cee8d701840b51236b216ef03e2a6adc5f0db82ab804364fd32278433608cf4fe376faf1d300083103b58e9643a0516541226ebaf0e2a6c4d679c92b7a24c56a936fe27', 'category': 'Other', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3951.0, \"x\": 1260.0}, \"hi\": {\"y\": 4497.0, \"x\": 1368.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5105: trackId=t1:02dbe702f300d933ffae6dfd4161727b:ffff005f, observationId=o1:91b9f3972d736a7df209f628f9aee7b3:00110060\n",
- "Processing image 5105: timestamp=2022-05-31 17:30:22.845744+00:00, observationId=o1:91b9f3972d736a7df209f628f9aee7b3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with a \\'P\\' crossed out and an arrow indicating the zone where parking is not permitted.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2673229490007673, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbe702f300d933ffae6dfd4161727b:ffff005f', 'observationId': 'o1:91b9f3972d736a7df209f628f9aee7b3:00110060', 'geographic_point': 'POINT(-111.947099467024 40.7726580514391)', 'mapsURL': 'https://maps.google.com/?q=40.772658,-111.947099', 'captureTimestamp': '2022-05-31T17:30:22.845744+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A91b9f3972d736a7df209f628f9aee7b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1bc167dbbdb8342f7002e083cb148f5d37dc18f61994480dc8b4fa37d423082ac9c7ebbde6481f2f2adefa1faf36437e7278681f6aed811ac780bb08cc18c4a0abfa26d98615231e7290027f3a7d114202bfc10598032f446a927dd0692ee4de6c342a259200b7230a9a473e34c2753d09a99d06c39f0f09cea34082a4f0f0f77d4752df4c97326b550dfe5804c11f2dba6657189b53ace2a903266b35c92f19dfe30df993cddb81156adf9cefa00b908e8422e4162713d1415257dee8b54f45dc273df121612b56d9547c7c1ba70e634c25d1b95395f7af05fbfbb7649201f0025878dc2b09c0c4f76cfbb15c129e31b28b65b1388472a490f8b47d3db7181', 'category': 'No Parking', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2292.0, \"x\": 715.0}, \"hi\": {\"y\": 2436.0, \"x\": 803.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5106: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060\n",
- "Processing image 5106: timestamp=2021-05-05 18:14:21.310595+00:00, observationId=o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.39513855510287815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:21.310595+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4ab7f06fcb88e7e4a282d0390f54854%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f4071bf1259d37c7d19b92625c9bc58a4a8fa74f649070f02eca073b438b21b24e1215aaa91a3dd25a3c564a1043d89b1023a4d3da04369cb00a4dce0ecd23c2179714e779077a4c5dadffdd451a57925b3b739f58598d790ce666fc520adcf56a680fbf2e4e008224dca1afc7467a8c0aa553eadb412e717ab10deabd032db38d4d8fd4e3346e0a6b61890cab4123afd8b88089ed0cca5d8012eaaf7d99d0f982cddca9e4a994a0b770ff9bc6b2aed03be8705efc178734f2ff455f88bfaeaf962ead0e5977e94814264c1bf03eb597554d24600645d51ef5da0ddfadb30474c1604b44eba1e256d3b651b7c829a7792136c6df6d64f6820efcf2210482d4c', 'category': 'Other', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3440.0, \"x\": 2730.0}, \"hi\": {\"y\": 3515.0, \"x\": 2760.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5107: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:567cbff614a5e29e34f7e23aa99b7f70:00110060\n",
- "Processing image 5107: timestamp=2021-05-05 18:14:21.662580+00:00, observationId=o1:567cbff614a5e29e34f7e23aa99b7f70:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16861195313303093, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:567cbff614a5e29e34f7e23aa99b7f70:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:21.662580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A567cbff614a5e29e34f7e23aa99b7f70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a99b57cf9e92cb53986c49cfb3bde90ccfb2bf12429e58e7464bd73c310a37554cefa27c5c816f89fe09036cff7af51f19edb4fd96c15537507ad12bf4176cea9e92308ab3d3af8aa76d99404c0616ca5b91d901b577a3c63ed5178ac12f65c04aa45dbbcda38a931c6c0db0dba31271f93bb52ff50f9c4d51ecef1e01df64d07a2de1258a39f553f56c1b6940fe205dd74602bd5e83fef445d4f3be0d16f45a2ba139d1d3683102f67b82230aaaddb0eb8b70384276356592fb016eb794b93ee4433f3d160c613ba66d8618eaf73f1713cc3c46fcd027eaabc18af0d134084f2d36790b612b9e6207b757623a8ee20e7008ca10951f2e672fd4e1b26a2cd01', 'category': 'Other', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3492.0, \"x\": 2578.0}, \"hi\": {\"y\": 3586.0, \"x\": 2616.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5108: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060\n",
- "Processing image 5108: timestamp=2021-05-05 18:14:22.014577+00:00, observationId=o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.044021694748489944, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=493, total_token_count=547) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:22.014577+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A433c4ceeb4ef5d4d4a6b99e7b4cb9db8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4c47f35f04b327eddd7a5d83069de0527e298aa3a4bf10340116454315a7d4f4692f516e3923c2adb290d0d862acca93ce9adb316aff8a972689507885a536a22748c3e458f9a257b4d567d20c790716acc18815c091ac837093114da9881cf8c791546c4319b9a8fccd6f46e5c4828234cebfcf2d5e646ac84b4a895fe7ec47cf8948940e0bc56954210e8c3fd1fba0384f5435995748fe58c0a7ae7b48d3bb8d7c789d3514d0aabea7f584db0838b5d03a3e084ace0020c4a1caf727c2fc12ea3197001f6ed4fd77913eec82b755a98e73550dc01b24e470989242c78d706687c116b66fe7dc0b6428837d2abed0d56a941cfd7c2405c4e8996c885568555', 'category': 'Other', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3554.0, \"x\": 2343.0}, \"hi\": {\"y\": 3672.0, \"x\": 2391.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5109: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:deac46062868c5142ffd92e067655db9:00110060\n",
- "Processing image 5109: timestamp=2021-05-05 18:14:22.362602+00:00, observationId=o1:deac46062868c5142ffd92e067655db9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is an orange traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04828955834372002, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:deac46062868c5142ffd92e067655db9:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:22.362602+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adeac46062868c5142ffd92e067655db9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a9f9e0ddaac42868ef4be9532f54921d5d64309addb7d7c103ab8811b4d8c34c3a3014c3414070a48ff8a2b734a119b81d72b8eb1d381232791d8ec29fef78a2b36bbeb12dd67e0568faf6b5a34fbed4d4889ac804327a5d7efed9dbdefd900f037a1f0127d089f9de2340081f14dd9cb64cd38913dab429f2a2d4b66fa27eae2c91334255c57b7aa7dabee1a20f0fe1cec26fe001bdf5043be166f46e5930d2fab0ee4790ca4fec2deae37ef261facf7fc0b43a4b4c2a02bb8ff574d0e47f3cd259773803366c508c0411d0bb1ec2d931a6d1e58e8b0449e27e5e21ac3957de163816fd13dfdda665b3d4725cf6e0964264a83dfcc9303ec16cae5863bed6d', 'category': 'Other', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3671.0, \"x\": 1938.0}, \"hi\": {\"y\": 3826.0, \"x\": 2000.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5110: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060\n",
- "Processing image 5110: timestamp=2021-05-05 18:14:20.254588+00:00, observationId=o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24564069509506226, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:20.254588+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A89968b7a27bc7d1680fd0a4bc4ee81f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b51885ff87d2f63cc489c953a2047fda23ed16462c98400f136b1b6e1eb9e746f27e79a920f2d98d2f1245843b1c6905b7ceff6ff941333887d20b73421b9ff2581b9dfc7bac9055beb3bf18367277a83b6bf26cd3f04cdc9a8fd7741082c647532650cb4f0f6cc56932ef9a0220a8e7716154c0d1ae54f3ff1c7b86f68091460817b56a3001106af64b5063f67c0c816c5dec1f3602cbf01a561401e42c8dc552a652a56a717af8c1c31201c4070bac18cf3bb7112ab92854c5f21b03f06fd71c6bfde5867d14e697015e74b7458952a12aa0c25ec81afc13ac2da3edaed636245dd00257ebf9c2b5df079e66b185dcfcecd1c0c8883af12bdd434ef4f0e4d', 'category': 'Other', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3391.0, \"x\": 2869.0}, \"hi\": {\"y\": 3457.0, \"x\": 2895.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5111: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060\n",
- "Processing image 5111: timestamp=2021-12-06 18:29:53.445110+00:00, observationId=o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a railroad crossing (RR), a \\'No Train Horn\\' sign, and a \\'Bike Lane\\' sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2475311386753136, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:53.445110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa111b2dbb06b207a2de1e6f831a41bd5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b098d90d1a9622ad0cd1eefcd276f2cabb686877e01fa93b571db0d93e38c2c2d345547ef29c16ff73bc30ac6f53ba344c41b2aa0bff1df77a1aaa2c8e82bdfe4926985dea3f086aabee282a7027eda67a3a6f6487181b308178579f343353d4bd1a9dfce351a239c547587b65cfa1d4d68289cf376bac6073a787cd7e1491c1e26dc63a9776deee42cf713b6deb6e0be1b0da7f52fbcf8e90bb5a92a84009403107673e490e23995bb53abdc158a7acb1ac551c2374d745bd09bba0ee7924944a81e3956d036c184eca3e662c8770e2653cf07596a603f43b4bf0a4f77c5039835ccd60751ab4bbbd1c7c09d6cf70e0238bf4d246f0a69986a9569166db47ee', 'category': 'Other', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2881.0, \"x\": 1998.0}, \"hi\": {\"y\": 3109.0, \"x\": 2214.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5112: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:c674377d77ff3bc09744d0e4d1d21092:00110060\n",
- "Processing image 5112: timestamp=2022-10-07 21:04:53.315252+00:00, observationId=o1:c674377d77ff3bc09744d0e4d1d21092:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \\\\\"NO TRAIN HORN\\\\\". A square sign with a bicycle icon and the words \\\\\"BIKE LANE\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29495146467879013, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=3589, total_token_count=3700) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:c674377d77ff3bc09744d0e4d1d21092:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2022-10-07T21:04:53.315252+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac674377d77ff3bc09744d0e4d1d21092%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=00d42867dc3dd05e6e61402159be6290936001269f8644ba67d7a6c739436b3aa3a72c4d288ddf0866c84d5420b52048c3b34453e5b8beb45760b1a20465f830fe222785e5fdf3cd362d99867c5b23ef4b785f4e0213547b9c36416121f6d5bff59ba873dcdb63b1d51baeb2fdf24fc9651c739b9e838f4cb649ba4e7eb816bb813cc3383897520fc3af60b6f61190a45270050399bead0495a66ba31516cb7539323f37150c8bb045dd27a044173c7da7418f97a2874f2066793a9ee0b295b9d7c15327f4b643a1c26b3a6b0f7fdc6d856efd5083966be27133626e299e911105b8178285ab874f84996f8b7ba03945dc7ee91b2b9dfadbfe509d7cb3fed422', 'category': 'Other', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2698.0, \"x\": 2852.0}, \"hi\": {\"y\": 3051.0, \"x\": 3071.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5113: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:104986e1977a01f8779bc49a60078571:00110060\n",
- "Processing image 5113: timestamp=2021-12-06 18:29:54.049531+00:00, observationId=o1:104986e1977a01f8779bc49a60078571:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a railroad crossing warning sign with the letters \\'RR\\' and an \\'X\\'. Below that is a \\'No Train Horn\\' sign. Below that is a bike lane sign with a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3073709011077881, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3589, total_token_count=3685) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:104986e1977a01f8779bc49a60078571:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:54.049531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A104986e1977a01f8779bc49a60078571%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94fbdb859e88ce5be8cbeb00ecb45518374a5afd57f28b9b087d18c982c51332657ebdf101bcf41ecdb3a5b3dac9e635c1e3219763d6ef0976a20cfcaf3ffd9f09af5c03d7615e10022430b51be64ab482e9a19000187cde46f4dbc74461ea367c81670e86146db469116c989c838618c16ffdd724267c922aab94b50d9359865b89498c958a38df407000aef35254318762274759d369b157cf0a364311fdfac2ebeced54f511ccdd06ac1ad322e9c53d82ac04660051018b10cac1bfeb6813e38f3c0461ec87d736e5117ebd6849d178b794da1418618a08bfc7992d083007c285159adcf14a02a3149031cd2243a860b64ac7c278e93aec7b981538a5a83c', 'category': 'Other', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2587.0, \"x\": 3200.0}, \"hi\": {\"y\": 2993.0, \"x\": 3402.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5114: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:a7ce053cf9fa29d74acd869b5ead7972:00110060\n",
- "Processing image 5114: timestamp=2021-12-06 18:29:54.049531+00:00, observationId=o1:a7ce053cf9fa29d74acd869b5ead7972:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says \\'NO TRAIN HORN\\'. The last one has a drawing of a bicycle and it says \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40614198755334924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3589, total_token_count=3697) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:a7ce053cf9fa29d74acd869b5ead7972:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:54.049531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7ce053cf9fa29d74acd869b5ead7972%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=56393ebde0691414381610b2ec8a279bd4539b8d20280378b1688c7d2ff40ab4c8906f48c37dbdfbdfe8c0645163899000dd0d9886d594f09838a15fd47ebb9b97b2e078ba74a0e9107ac53c7dd5b9f9d018e1276bc6d21c2b52e344954d25a08e077844ba966f0dbebae7afb6f940932fdcb09e550afc862b0786ee798cd420d0b839501c26f4d97754a1157ad4cb4d7c96351a2b510cb0a77d32db2c65a56ee27a386729dbf1bd74f54821c4b55958ed7291a5bda918e5334596fac2ac9820bd71b2c9ca43596d8136eeb8034c6025b7bcd9734713553ca0c850ff0ebc0b1c2be48c362266b4b9158dc61cc83a86decd684c6c7e8f6a3d38d317446a4fa6f8', 'category': 'Other', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1684.0, \"x\": 211.0}, \"hi\": {\"y\": 2095.0, \"x\": 403.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5115: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:5e7bce01e283d565d46920c65abdb859:00110060\n",
- "Processing image 5115: timestamp=2022-10-07 21:04:51.715231+00:00, observationId=o1:5e7bce01e283d565d46920c65abdb859:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign consists of three signs. The top sign is a yellow circle with a black \\'X\\' and the letters \\'RR\\' indicating a railroad crossing ahead. The middle sign says \\'NO TRAIN HORN\\' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words \\'BIKE LANE\\' in white letters on a black background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25178555079868864, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=119, prompt_token_count=3073, total_token_count=3192) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:5e7bce01e283d565d46920c65abdb859:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2022-10-07T21:04:51.715231+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5e7bce01e283d565d46920c65abdb859%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091729Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b0a564881772373474f054d7856768738e315dc8cdab78ae72394979b97505babbb001ccff7adab399294d73abf2771bb0a056364ec91e44c9ea7d54a38f01fff729d8e8f67e5bf2dca8af5541e7343f9281c9a71316090b7f38eeb6c6e0f0ccfdeebc6e9dfba29bc2c8a402ab526242d7c133ccb8b1ebaf4942d7fbb3aae324b75975a3dba4ee8c952e31ad62bea1f94b255be6b8899d1b5dca36d872ff6ede7243adc4f668af131e0105975ccb4af28fe160fc26df9daf5f50a10a0045a90117f5f91a54a140c45205b5bb2a789c4de4e2a4504669c383fb9d59a5ded6d888ae3ed1e09dea2bdffaa7ef6f3ebd68cf299d3a732c010d9a0043744a08b0d9d', 'category': 'Other', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2884.0, \"x\": 1830.0}, \"hi\": {\"y\": 3109.0, \"x\": 2028.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5116: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060\n",
- "Processing image 5116: timestamp=2016-11-16 17:48:42.792838+00:00, observationId=o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names: N Lake Ave and Bon Air St.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12975811189220798, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2016-11-16T17:48:42.792838+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aea20532549dfcf6deb25e0043d4ddbc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b27fe19a1418f671794109bfc41c68b03c3cc007903e652912749ea332c3b1d1fa78678d102dd21db667fb73a7c60c3dadda9124f249fef34531c4ff611925d23e872db41617a2100d5c133daab8588946b317bedd6da6ad4586b205d92c0fe94f05ab82638251d308af39a3af506d3d08c6175e37947e260313906f85ecbf9871a447b89c614a6135d5a655f3a1ad46086028ed5a817735833741b036c9e775b6dce4be928b2c5c3940823f9a12b2a7172f0828dea49e71730e8a27278987864e20f22fd8c851d55581c85e18031d6a518a631924392a6fcfb59cdf2ca31ebf3c30f647ffd836e850e5dd5c027504856c1b7aead2125244c174721b5b44ede', 'category': 'Street name', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1075.0, \"x\": 1873.0}, \"hi\": {\"y\": 1119.0, \"x\": 1932.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5117: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:be3a612cf849259549a4681a08bdc86a:00110060\n",
- "Processing image 5117: timestamp=2024-02-08 20:32:38.800444+00:00, observationId=o1:be3a612cf849259549a4681a08bdc86a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads N Lake Ave with an arrow indicating the direction\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3337629954020182, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=2041, total_token_count=2101) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:be3a612cf849259549a4681a08bdc86a:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:32:38.800444+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abe3a612cf849259549a4681a08bdc86a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=23e72b38b96a7b39b0392af889f1b523646b422f93dc9ff398f416e8b36b684d6cc12b1b611914a9edcbaad0855238a303d6594d2206b0911f677235c3e9871d7693666fa3ba2609822aea17e96b86f6474fe4366ea07fcef0178808e17cc072a7c59ea1fdd5ee43f8212492d11e4e55a1e6c80b7ee7b05a03e168eb8974e0a97933e80a3306d76d79b044c01b92c492be27217121e90b8f310e8cdde8da3445f6d6ec467616e99386f76706566d410fb245ad37f71544d6a3d0754b0b73a4970089ae3ca7c802742d9d87ac7699aa09c6e15d9ed8f36bb173cb3b2f7546e5526cf1574600cddc024c0092572b9e0417a6dfd0180fab12086521dbf9f5e9c3f6', 'category': 'Street name', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 1559.0}, \"hi\": {\"y\": 3193.0, \"x\": 1665.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5118: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:b2943487208ff90d88521da4fb33a0f3:00110060\n",
- "Processing image 5118: timestamp=2024-02-08 20:26:42.674118+00:00, observationId=o1:b2943487208ff90d88521da4fb33a0f3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Two street name signs are present. The top one reads \\\\\"N Lake AV 1100\\\\\", and the bottom one reads \\\\\"Air\\\\\".\",\\n \"image_quality_notes\": \"The image is a bit blurry but good enough.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31855787549700054, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.'}\n",
- "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:b2943487208ff90d88521da4fb33a0f3:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:26:42.674118+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab2943487208ff90d88521da4fb33a0f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=84a2616ffbebe6d7262c11347ee1a7ea168304350ff31947d7ef0b04a0c99cc659adcb015ed7a41c942ccb900abde7d37ec4c22c2b641282f11fafab408842a8ba3487b78662b08625b32beada9f92cbd4ad37fb4e21f1c994ee0ba058608c19228ded1ca331e91fd9ba3191e43e9bf1c723f0eaf22c8fb5c74483c11d8e57553593382a72582dcad48b0c8569577890bcc028d090a1d9ff0fd4ed0995ff2ebc11eacb3cef8936c7f65076809cc97168e1bff038a6f8b02cefa41bbead883587919cc110b784ed886166400278b7d9f968019300e12d4b923fb485b4d25622089e559e5b2d922923a3e41012c7d6ce9732c5275cf0f802842c1bab1fdbebf532', 'category': 'Street name', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2945.0, \"x\": 1744.0}, \"hi\": {\"y\": 3007.0, \"x\": 1924.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5119: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:4d2464074924c59e37415dceac6a7a11:00110060\n",
- "Processing image 5119: timestamp=2011-05-05 22:12:22.207885+00:00, observationId=o1:4d2464074924c59e37415dceac6a7a11:00110060\n",
- " Error processing image 5119: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d2464074924c59e37415dceac6a7a11%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fa07bd27ed200002dc05fc7faf9101f033636ad0261cc1dc002a6874e44bab9989ffb7cc4bb4fb5bf15751dbd3ccc561ff48a4568c91ac4e2d811770a71e689eed74a3e5b90c76e1ec67396691ea72b99864c4bbfdef8c5e51411eeaabc7cac04cd612a9e923274e7714f85511e12069234ef36a24b3ca3ae21ad87fb387d457f76d8bc488f456ce35385ac46ad236e0a70ba9d5581859b55f0fcf423b8a8a6b9550aaaa61ab991e9740942407c4b3e631e187c4c5d22df41fffe074b36935573755a47adc31fb8ac22cf20633111bb59d065ceb29adeffca9c77586027a7f4132c095c3dfff6aac3bbefd93ad41fb9c953c08c1b67cde2dacb7f24c41ab962\n",
- "Processing image 5120: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:27e8ec20bdfb8b016a86884de80d48f7:00110060\n",
- "Processing image 5120: timestamp=2024-02-08 20:23:34.754929+00:00, observationId=o1:27e8ec20bdfb8b016a86884de80d48f7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'N Lake Av 1100\\'. The street name sign is green with white lettering.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24826123373849052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:27e8ec20bdfb8b016a86884de80d48f7:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:23:34.754929+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27e8ec20bdfb8b016a86884de80d48f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=adfeff90a363a8e0b9a94bbac4fb13bd3049867b74348c0316bf3ef77a20f4497f65041d653ac0d21395b24ec16ecb6bd1e5c5862e260517a888c9e9412ea5ee612c18abe6a002a5c2247670b2b635c5220284821cbd2e64409eb364333c5b503e9fff5f0e1b7f78209b398e70b44bf6e4400616a418e6fa7b491e491a5a1d863adc8c4b7347c72d8816291337b572d13c749885a0a53f3edef90ce5a260e0fec4861fb5a8cec2a11eec33b83a953cb38ccd0dab7accd43736f9406bd001c990c46e4f1e5564a50dc4e49c38d95da2cac8cfad84a7baf728e121d2e99ac3beff60767befef5b385cf2de32301790f0124a287ccabfa4da92798cc93ff6b3ea49', 'category': 'Street name', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1317.0, \"x\": 1508.0}, \"hi\": {\"y\": 1545.0, \"x\": 2230.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5121: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:95da867472434f18df9a1f69235b445b:00110060\n",
- "Processing image 5121: timestamp=2022-06-23 17:20:14.146654+00:00, observationId=o1:95da867472434f18df9a1f69235b445b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped, yellow with black writing reading \\'DEAD END\\'. There is also a green street sign with white text reading \\'500 N\\' above the dead end sign\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3039343243553525, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:95da867472434f18df9a1f69235b445b:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:14.146654+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A95da867472434f18df9a1f69235b445b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=202f98c61c6ff4f403b4ffdad1456c9c6ca2522cb97bc6d5ba127ff06a8fe486076d888e8cc8b0bf54178a25437699a1bdf40e9a796331c83f06526dbd706312caeb61fa6a2f27cad623d26bf75ac809f69266c247f0eae4bc4cfe1830133445c1d8601f8655b17ee67fd64c0840b13cf78eb9a8b542bef48d1884885e347a4d98f7a3edc206ca912c972e81f117beee1d17417a70bcf14462af457bcd8d86cb0a6230d053cf3078fcd8db0eafbabfd432bcacea9af70dbe217ee025f2278cf2fbc609f72af288efac9bec52b97160c5d40e40b5e886950fa9024bf767ffe5534ef449c70398056e91f97ec9ac96835151c52fa356ea1d349b2cc914d41e3617', 'category': 'Other', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1993.0, \"x\": 1974.0}, \"hi\": {\"y\": 2334.0, \"x\": 2301.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5122: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:c56d7b8100008c8658ba67b8de27dcff:00110060\n",
- "Processing image 5122: timestamp=2022-06-23 17:20:13.622769+00:00, observationId=o1:c56d7b8100008c8658ba67b8de27dcff:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with the text \\'DEAD END\\'. Above it are street name signs, one reading \\'500 N\\' and the other reading \\'Erie St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20098486813631924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2557, total_token_count=2645) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:c56d7b8100008c8658ba67b8de27dcff:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:13.622769+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac56d7b8100008c8658ba67b8de27dcff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a886842a4adb575eed052ae6c7dbdfe6aac2f4607cc7f5310f81fe9f3ca0e2afc660dfa604e839f96f56cd8a6accb4fbbbb42dc58548334dc52f79ee37c3e066652346bfd4641ffae49d3926c3db477ecf5c8e4adafe33f572b09cf9d5f6d65c65c192e3bf3f8346db161fb08ece70c28aff5be0f3b4c6c90b44506ae4f4169186b102f48140443dbdeaaae895eb1864ac2021a1d795fd1dfe536967b3effb304450a47ad96dad3873236ddce0905f93a553771ed462d20fd54f22b8bbab75420df76f00662d7f528f45c8b81988ca175dc55f4f15ccdd086b457125c50a1a83b2511d766505bc849e78eed8fcfb1b840c1d53b639ca3b77aa107198247a6d7e', 'category': 'Other', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2012.0, \"x\": 457.0}, \"hi\": {\"y\": 2330.0, \"x\": 728.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5123: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060\n",
- "Processing image 5123: timestamp=2022-06-23 17:20:14.666799+00:00, observationId=o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with the words \\'DEAD END\\' in black. Above it are two street name signs: \\'500 N\\' and \\'Erie St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2305958384559268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:14.666799+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16ad34faa5c9a5867ab1e54fdcd6fd13%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091635Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3284754c73ac3ef6b59a0b9cb49a57c5e0f2316a04bcb057ebafe6892f05ad8c80c23f5e9eb4ac8698a54019ea64a8f0f5d7237a7678d17673ca192915c3c5f3a15dd38e769e6f564d75ca172662c62493b2dc14c6d1696427d0a009102c081327d363232c61c1aef6ab18523d6f392498bd79191a9d8e6898f8cea2a5b62ab767e14497d093da01e7c994286cc3f0227efcc921fa646870987d63a3e3ef28f607a27a18675076a3829f40178996907262274958fbbc72c92fc80ecb133f8cf61e392034f50b06a20f1fa04a78fc4ca79774f2d18f5f8c11eaf5417f05752dfc70b528b91186ebf7874d6a0485d2d186e38db3f58acea366c17227801ace5661', 'category': 'Other', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2984.0, \"x\": 373.0}, \"hi\": {\"y\": 3266.0, \"x\": 607.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5124: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:b01102f61dadcb54e69e3e6c0841091a:00110060\n",
- "Processing image 5124: timestamp=2022-12-06 22:31:48.091147+00:00, observationId=o1:b01102f61dadcb54e69e3e6c0841091a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30877261966853947, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:b01102f61dadcb54e69e3e6c0841091a:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-06T22:31:48.091147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab01102f61dadcb54e69e3e6c0841091a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f0cb3a4cbb34db650d2d9d11e8f47ecd78f6d217353d7f64cf957642265f9e023ad79bc31395e9a89ce8896c5e31ff3578b997b2493aa2c0e699d5dab7b25e6784ec4284122d219147251dbd866d686bb2be938b4b9cae5c07815b079e148afa43b87abb5f45f3ce9a95df3c9ca89151f126ee5c0a3c654946402526aa3ea0578b15d88f8a0472f6a25addfcc17725c881821313b0362203f8071a40b20f73a549fb4b2d38bb8135ab4533cf11035871f3d68bea08da0e7320e9fe5264ffef03c2232b1d44ce25376589bc15d3aeb18abe3de7e9736f787a5e538fe744e3ca2942cee71e0c44e9696c85b4bc376b7cbd505ae1ba5074d077159635869e0a350', 'category': 'No Parking', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2054.0, \"x\": 450.0}, \"hi\": {\"y\": 2340.0, \"x\": 624.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5125: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:6fd04566c517adfcb745f85086409273:00110060\n",
- "Processing image 5125: timestamp=2022-12-06 22:31:48.091147+00:00, observationId=o1:6fd04566c517adfcb745f85086409273:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.\",\\n \"image_quality_notes\": \"Image is somewhat clear, but the sign is small and further away.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.52377660650956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.'}\n",
- "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:6fd04566c517adfcb745f85086409273:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-06T22:31:48.091147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6fd04566c517adfcb745f85086409273%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11f1f409b6ff3b503b8390d144a5956acf735815b85fe0b6303ad55027236b8c371223f240ecfde9ceca2a4c6bad4538e174ea2445416bc0de536fddad83d52aa670dafa7fe211f55347313c1b84718f880903c3498dc6b5dab949c6aa39c255c720d7064da07e19c01b8aab689fa86b791fce5698dc844b59a1e4528cb5abce92c4179c485ab74a40af621fea7a420f528b4cf214763ee59d0336e492bb2e6dbb80b29f87a808cd0928245079f8d4811f239a5f84c2e639d6a519e66df62da8d13e172f7da20ae33d3ee141f8d13e15cc53ba5da00a70249dcd21763451946e4ecf2e5b6883d95733bc87b2ff69f57150014badfa35a5b946a20e678b221dbc', 'category': 'No Parking', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2931.0, \"x\": 3472.0}, \"hi\": {\"y\": 3221.0, \"x\": 3646.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5126: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:34e51ee9515c4274a6b8a97e4d609f67:00110060\n",
- "Processing image 5126: timestamp=2022-11-22 22:16:39.017530+00:00, observationId=o1:34e51ee9515c4274a6b8a97e4d609f67:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29373609697496567, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:34e51ee9515c4274a6b8a97e4d609f67:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-11-22T22:16:39.017530+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34e51ee9515c4274a6b8a97e4d609f67%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4902d1b141d856b64000dea5c2942ecb0b849a4601365ec96901488f24dc936a8fa1d22689cafc2a77b6b2b43e47bea4ffa35b6b909630e5e867d15eac267b7fe342a7ab29128179d8e11751ea81945d822e9cb837ff6c4eab2d3f25a4723c4edfb8660381710b7a81b0d1fb59a07a9bfd8b96845dfd99180667960019f1b82889549c3cc4ec2e011f8b7de52b8141319b67bc656db4540ae90d2ce0e16b936d0b585d880d809d5392d654f19f279ba9b6b4215efec280f3e4c191311578580cde0dbd147ca07fe125eda7e4c90fb01345d188bdd12ba365b63821c8eeb9596df50abc78ab99741a3bb57fd848a1f3cfe0de04333699d6a2100de835d8db371f', 'category': 'No Parking', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2028.0, \"x\": 799.0}, \"hi\": {\"y\": 2323.0, \"x\": 965.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5127: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:55203e8046e2978e2c959c105dcd98bf:00110060\n",
- "Processing image 5127: timestamp=2022-12-07 22:22:36.742608+00:00, observationId=o1:55203e8046e2978e2c959c105dcd98bf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is green and white and says \\'2 HR Parking 8 AM to 6 PM\\' with arrows pointing left and right, indicating the parking restriction applies in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16826725006103516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:55203e8046e2978e2c959c105dcd98bf:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-07T22:22:36.742608+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A55203e8046e2978e2c959c105dcd98bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=09ca1daa2069d86d503e318537f2615b4957ee6501b9623ac1ee15e000c4a66e783edb0d40f46e073b1a32ead47f6de5bb9de0e797b1553d3639cfb5d8a690ddafe47a5bb14baf8a4d426cb4deae957a7b73c6ffd13fe638ffc542598a6af84731dec4459c17885e8cf601127e24f4caea99b738013219a3132c9e5cc7e8bdc9b299d1d39a49ec8a6cb36dcce87e0c6ea8dedfa2f1c7e7cef084fc8c59daaa1c8ca9d0d9f661094e27484c3eae6ecf399d7b07bc21dc4826a023a5105f0bf9142620b06502e1695aa3c9e9c83bade17950d6aa2f82ae130dc1a149023f89ce1c3d16b3034b9d59c0cd526072409ebcfd63e09b26c6a6cade233af25e9b26defb', 'category': 'Other', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2046.0, \"x\": 713.0}, \"hi\": {\"y\": 2325.0, \"x\": 882.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5128: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:3817afe264ed4f9c122ef47e31187f03:00110060\n",
- "Processing image 5128: timestamp=2022-12-08 22:29:52.455369+00:00, observationId=o1:3817afe264ed4f9c122ef47e31187f03:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1927472907052913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:3817afe264ed4f9c122ef47e31187f03:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-08T22:29:52.455369+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3817afe264ed4f9c122ef47e31187f03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=787c339f0c98a55a726bf6d9a96a19481844c8284ea3ec6989f86efee9616ea63110f24d493b490ad07c0e4659066380b0df4726edb4a498a2cb603d85b340aa77c1033fdfe65230d4c553d9aefc81cecf6c58c1320a082b71913b7960c5d25505bae62487bba9b824ef340326e495146a9664133598b78be55317e4cf239e304e714230bc62a4c963b62a1d9f87b8ea54a46cddedd68d11f2f900b98a9e7cca3fc7be0b9c95a31bbc3fba750b90f1054b51f4f34404922ce1353f9ab5c116d0fc813d70d849da2f9bee387db2eb2cdd41e5aed6b4842552f8ae301e8dd386ca83bc2c4efdd4468036666db76ce2653c13c7f8f21a08361de728cfec52003918', 'category': 'No Parking', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2985.0, \"x\": 2936.0}, \"hi\": {\"y\": 3234.0, \"x\": 3098.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5129: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:9025296de258fd8c0eb7e8ceb8b2b8f1:00110060\n",
- "Processing image 5129: timestamp=2011-05-03 15:28:56.083045+00:00, observationId=o1:9025296de258fd8c0eb7e8ceb8b2b8f1:00110060\n",
- " Error processing image 5129: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9025296de258fd8c0eb7e8ceb8b2b8f1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2fad3e2f954690e65ab2e676cde3407b4cb7914b163f90bb4d63d97aca7469308dd6a5fc1ef38c7fb094b815cdd835d9fb4cc799c08898ab990f14115acb3181b9275a4ed56f04bec3844f90e14c80b36083403b156705b0c9e437fff0ccb350af75160ce5ee64678be48c2682e00e91cce8238b5c31e377a5f18bfd3528b1d0309cf924c0d62e7d58c1a231722a439374b61f85f3dac1a07d4c0ce9c0b5d6b9c2fc3575bc71f29f35afdc808c11ac26e6f66a962e68c910a68f732992930de3e9b8f8e77572e65298ac71b742eb14b4ccfee09d4ac9d75488045477ffef4333cf6b29632073810f64d3082d7ba2f3ab48e3387c6208fdae77fef1788f0781f2\n",
- "Processing image 5130: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:e773b05c8f759e48fe9cee63d1cb02b3:00110060\n",
- "Processing image 5130: timestamp=2011-05-03 16:12:07.209660+00:00, observationId=o1:e773b05c8f759e48fe9cee63d1cb02b3:00110060\n",
- " Error processing image 5130: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae773b05c8f759e48fe9cee63d1cb02b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b0558a2c52d9ab04a2d40d665e642258d904bf2caeb087e90a56af5461d71916937b18bec6860c737ccbe325fdc9279035a394182c4c86c0efa59e512e914efc7bbb7181779c63b3f88c77c36b63923d1c8777ba418716944e79ec9f263e701c1e152765d95fd140867a2e1f104e58b4253c07accf3f924c5050740581113f90f16b6f1de08d7d8d870429a170f8716eafe25d7dab46f176edce6a9f534eea76ecd7777e8d33ba638ee298d39bd912098292e4cf57bd17a4077dbce95829412f331f03bbdbbaae49dd0a612ba4cfa4c95a17145f53725cd4368f453f1ef23af4c70762468c0555b7c2977e97a0550a637a22d266a9259531046fa0b33a46762\n",
- "Processing image 5131: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:c9ed79d54753409a30cea917f8a917af:00110060\n",
- "Processing image 5131: timestamp=2011-05-03 15:28:31.722187+00:00, observationId=o1:c9ed79d54753409a30cea917f8a917af:00110060\n",
- " Error processing image 5131: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac9ed79d54753409a30cea917f8a917af%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=607a8762d5e2e730b873b6f0d453891a1f117f081dafe8f15e9b3d53a94101d94b956ef4ec1ea795609fa7ff236408a78b1e932a00ac97a19624d6f3bd18cc89aed3b57ca4a04659c047cbc89695974b95a92b3c48275c2a0931f3fa79e5d075eeb862c110682f547377f4057a851f0f45bdbe4570d94b03214acbdf9b56490957cec7f7cdaf559dbccd48d90159f430350becd33c9433c6c1e029cd4321e9315a5050ba155c41360156328a6d8fa4f3305851668334fc2d48f0d7df0839ceadebe58e5a2cea6cd78c325a3446c30cdfd59eb60bb50dcc8a684db0107fcbd0d7756e672a59ffdf0c5ef7c36b423fec9cb289f9a7a1e57eda9a64a11ff1d48422\n",
- "Processing image 5132: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:e1b424c2fc4c173699e4714fd380dd66:00110060\n",
- "Processing image 5132: timestamp=2024-02-05 21:03:50.792756+00:00, observationId=o1:e1b424c2fc4c173699e4714fd380dd66:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows the street names Jonila Av and Denton St.\",\\n \"image_quality_notes\": \"Image quality is acceptable. The street names can be read. There is also a gray octagonal shape sign under the street name, but no letters are visible on the sign. The octagonal sign could be a stop sign, but this is hard to verify as there are no letters visible on the sign\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7589830577882946, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=3073, total_token_count=3190) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)'}\n",
- " Error classifying image 5132: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)\n",
- "image_report to be inserted: {'trackId': 't1:02e1362ed5e870536f689ab90431d3d5:ffff005f', 'observationId': 'o1:e1b424c2fc4c173699e4714fd380dd66:00110060', 'geographic_point': 'POINT(-81.9429484244837 28.0129695529294)', 'mapsURL': 'https://maps.google.com/?q=28.012970,-81.942948', 'captureTimestamp': '2024-02-05T21:03:50.792756+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae1b424c2fc4c173699e4714fd380dd66%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ab1ed874d3b4955989979abf9f139a203fe8a4404fe253b1f595d0543657f548a0b38ab3e5517ce8540db67b553b886de9af571b72bf95e865f5bd50610e4c29319cfb72731e61e9f2c9bb2909d000b9b30411b8dfb7a04fa4b36081fae2f804902c105fc1dab7f077cf3bff1adb6393ac9f05799f1fb4620021423d9991dd9b7737f17b575deaaa5d93cb71f2d4d96665088347e3f880bcc6717c3719c4def845f351f47e6e039ba4f89ac0708e1c34a94e971846bee327c37ff8b6b13d3bddb2d85edcfbfec16fad5c4e6c3c572a6222fe1443bb47355eedfa85e04a62fab93afb61f265cb2cfa998c6ca06c588ae30adad42726a21e3b78901b7d190dceb', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2027.0, \"x\": 3404.0}, \"hi\": {\"y\": 2136.0, \"x\": 3643.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5133: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:04673b52d9ed60cad9130a855ca39447:00110060\n",
- "Processing image 5133: timestamp=2022-06-21 17:10:28.116545+00:00, observationId=o1:04673b52d9ed60cad9130a855ca39447:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are visible, reading \\\\\"Jonila Av\\\\\" and \\\\\"Denton St\\\\\" . Arrows are present on the signs\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31522496541341144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e1362ed5e870536f689ab90431d3d5:ffff005f', 'observationId': 'o1:04673b52d9ed60cad9130a855ca39447:00110060', 'geographic_point': 'POINT(-81.9429484244837 28.0129695529294)', 'mapsURL': 'https://maps.google.com/?q=28.012970,-81.942948', 'captureTimestamp': '2022-06-21T17:10:28.116545+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A04673b52d9ed60cad9130a855ca39447%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d003b31c148f5c333b3f6f77f64a617ec86854d5c0a47085e6de917bfa7fa8e7ffd03af12f5146447da10693420adc72c32cabd5eaeabd6720fc3132250d598d671745270203b2f3601acdb9cc0f04244af459b4ed54f67d049019225b4da2616f84e6af179a0f61b19562b4365437166aab3fc50d8ae930d54b5aaa5fe5fac7a6c5e29f2752128f5cb35ff187e7b36b256a0b22fca0aeea05352dd8a1bccffba4edf37809f437c4ed0db23bb4879ce7283dbeeec79a754460a8d7edce27094699a9a1405a7ab79ae4db38dcf8ca455919a648bc06e5253c7fac43a46638528728a365d2df17ba34737f5eb493d71aa333d099cdab9bbd76c7df97e9f21329a', 'category': 'Street name', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2920.0, \"x\": 848.0}, \"hi\": {\"y\": 2987.0, \"x\": 957.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5134: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:a61996b7126b094d47639ca0f6f73f6d:00110060\n",
- "Processing image 5134: timestamp=2024-02-08 20:49:00.950580+00:00, observationId=o1:a61996b7126b094d47639ca0f6f73f6d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43124954788773145, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2557, total_token_count=2638) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:a61996b7126b094d47639ca0f6f73f6d:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:49:00.950580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa61996b7126b094d47639ca0f6f73f6d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=863b239d993ddd30cf382811c32dae5cc4a1b8fcf143cbbb66e3280e53ac1ab2ab5145f2833c695e53f898e9b427be5804d86b9c11a077415e764e7a72fa12c0cde271732b1ff035d3ad2f490d97c012eed8fbd840c48735c876947eadeba00b26a1a2c9fd8085c837e49b9c2f892cf99fcfdb38bdcec7e7f7f14042c1757ba4cbb82adb8b58c45d913e2ed228ec4dc1a0738251457d9e41ac98acd4c7dbc84b70eb08fd163fb010af02c64f0b104c7f28fcc507467d717aeceec131a9fc4623c61f1a136ddaa0b5d9f582635324cf3d4ba1375fdfdd753b572e428e012a08c266985be35086b6a85996f224aefa5f38c305ee4e8d8b4a61f167d4868effbd39', 'category': 'Other', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2855.0, \"x\": 474.0}, \"hi\": {\"y\": 3546.0, \"x\": 854.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5135: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060\n",
- "Processing image 5135: timestamp=2019-07-02 13:42:24.976738+00:00, observationId=o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there\\'s a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.481799117917937, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=123, prompt_token_count=2041, total_token_count=2164) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2019-07-02T13:42:24.976738+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad362d64d6c633c4ab5c31a2dd43ec085%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b239977aef01fb0ec715692048b384ae226658b1e9645d9b9ea0745eb2996c95b9687b375cc20c32b0dbee6ed65344791f05d288352ab175876ef41906d7fd3c5eed92b6f67be5de610f8b909d43e25833cfafb83700afe4fd6b64eb159847668b93586850ddeb57e7f1c433a398342bb48759f1a7e24bc974fad25024271229bed456d41df181ec385f58e68112d7e5bb21362c075417b4af2292a6591c5c29d825254c2466bb17e4caf9cfca47c1287c1b229d89b05f5f44e88020ddcf1c6775ef422814e222d10a291c35d8f7d7fd85bf827ac89132fe9a0bbe02295c6d55378ece31d72bc37b715c353ec62c18fc0acd328f0458bbb7a6a43e8ab5e24147', 'category': 'Other', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2861.0, \"x\": 1403.0}, \"hi\": {\"y\": 3371.0, \"x\": 1736.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5136: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060\n",
- "Processing image 5136: timestamp=2024-02-08 20:47:23.961093+00:00, observationId=o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47808812115643473, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:47:23.961093+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aafe0f0333f3eb37eb360e6291b5e4b6a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b3d373d93240e63b925237345184a1f76e0498c15e4a55266a6941a06c4cf3a1590e75a4f7044cbbcd7d6bec731f99d6d28a1d04d6045d5bca7708983f01d61e0280db78debe3a71471e89c32777d250db8b28dab755d36884fb80974996ccd79c950e31beee798602b54c556827f3c09574fc44069627060ca604457e33e19e2c5afa5e66fc65ac4d4af0736326a477ee255d2b6b564719feaf33087b5a61a75d0820ac5b02cd55922a1f88cfb48a388b47caf81592742c8ea363e8a0ca8a54dad07ebc952764713fd553da6fec8e1cd7e2e3e8adfe6558411bbd4cb78c95e87e58dceb9d7396d2c5b815dfe1abf4a05c77dcac062a21edfb1b5a7ea3977ed', 'category': 'Turn', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1868.0, \"x\": 2758.0}, \"hi\": {\"y\": 2686.0, \"x\": 3086.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5137: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:953dba2f25f6e2d3ef2e66c76d70dd95:00110060\n",
- "Processing image 5137: timestamp=2011-05-05 22:30:20.501144+00:00, observationId=o1:953dba2f25f6e2d3ef2e66c76d70dd95:00110060\n",
- " Error processing image 5137: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A953dba2f25f6e2d3ef2e66c76d70dd95%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9231d257d42b6936d169fd5365e6c0aabbb05158e47e2ac4290e3c1cdc6dd2fe1aa2c434ce5db040f38114c6d50989dda89283db3acee45a20a02b29f9bb608b61cf95721e2f07238df22fb22fbe0d7ace23739449358519333c044fa5879abd75b0e3b06e65ed027e4452b8c955003652acafe9d3ec2f1cf06c924e75f386dfb67722491728e5ecfc35dfaf7aa3228f9d57103fbc92d41fa6fc4378a56d2d2654f99504840f52ed2ef79585715fac3d6bf697c5686b60efd48d985ede3b192a75402a728ee63c5b6a2103c8414d3e4ebd27d0d9eac58baa91fa0a4c0b42ed542397efbfac332e4157bcd38187cad3deb59ba82e7127c029b2976551f82326f3\n",
- "Processing image 5138: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:386e54f501d41e00bb313d759f6472c1:00110060\n",
- "Processing image 5138: timestamp=2024-02-08 20:49:00.950580+00:00, observationId=o1:386e54f501d41e00bb313d759f6472c1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1878132386641069, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:386e54f501d41e00bb313d759f6472c1:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:49:00.950580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A386e54f501d41e00bb313d759f6472c1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5c6564fbaa4959d28b75b174d997d08c4895b8fe1b5e5ce8551fc0d24307c01da136105911d22bd1244c8ab1f6af86f5c2018df6867b81dfbbda2f2436f0d7376a8702f7c21fe8a1bcf8ab0e46f3506950d88bf89c85cea124b9711d21f37676582fadb690286c098c16dc855da635dc1810371691d6ff5e0ceecff5f52d2dd7723c2a4f4b0803e6d059f1ef2e2c3402f157506da178e484bb0e0496ed9241a62c0895dd5fe95b33c11aa73ed9022dda5e22a669e8242e90afb4bc37885b3fb5cae343b15d6c695dcf3204d9a2e4b0ba91125ffa560a45676786e4a8a4b2cba796297c3002b6d3bc34d523bdab153afcd9de2f1687ee6dadd28ab5853c366af', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1968.0, \"x\": 3458.0}, \"hi\": {\"y\": 2646.0, \"x\": 3657.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5139: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:b362865884e2773938a339f07be87757:00110060\n",
- "Processing image 5139: timestamp=2024-01-11 15:47:03.325991+00:00, observationId=o1:b362865884e2773938a339f07be87757:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.351107985885055, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:b362865884e2773938a339f07be87757:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:47:03.325991+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab362865884e2773938a339f07be87757%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9ab3ab0726124a05967ad582742d81894527c2c4a9e03a10e75f71d35bcec58168d93ded52ac9b1213ae34dc20e18a7ff7a14cbf9e0c0c25333bbec89b2eb4eec7e693b89d8034bd2163d4b7342f79cc4a8fa503b99056e9f8b351712ed630ba69f611ddcb6562cf3f13d75336b43563e8d26a9ff258e57fe98c8d9d1e587331aae91230030ffa96ebc5f609c0a80fae3447cd52f14e76c8ea47bb66d772f56112e850e0ac5c20b7a0f8471cfbfa92c1956b4e53179419ab62c5cd0f2cacfbeb85e0ed6fce80c9c251b01c3baf5699781f92085bf6e5c68d74b4cc364828617fbce910b25b3ea6ae217acb7fca9de8e7cac78da3bee1f63bd6618ea28079b9a5', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2303.0, \"x\": 2995.0}, \"hi\": {\"y\": 2622.0, \"x\": 3224.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5140: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:6451960b4495c7162a9f36ed65b1e025:00110060\n",
- "Processing image 5140: timestamp=2024-01-11 15:47:04.285978+00:00, observationId=o1:6451960b4495c7162a9f36ed65b1e025:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13358292212853065, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:6451960b4495c7162a9f36ed65b1e025:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:47:04.285978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6451960b4495c7162a9f36ed65b1e025%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d15221ee8a32112efb0a971395febe7b4d135977aa319a490297498f9a3076249ae2eba03f19f65a6d069effe4640083ff7e146a48bb4b30c58adc93d264fe7b17cb273cca75647b903ca5d313b4190f10b07928622518d1de2e8e4caac2f389ee315afb39ba4f0632d26a7215fd9048e7e0348262f11a8f50b11b08f04af6111c3ef9543db52cc8faf8abd67a030b067043efe67b60b5fa09eb9005f08fe3346091d94db6752beaeda57e8f0e49beacd9a70a6d38e7f9800c9af3e06335a8f8602fc64dcb2caa51778338c2f289e5b8295b932cf1df6a3aca84cdefdc027480dc216959f02ceadc6ecf1d12c27bbcaab91bea4503ff3a30db367543bd9b1c5', 'category': 'Pedestrian Crossing', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3234.0, \"x\": 1800.0}, \"hi\": {\"y\": 3375.0, \"x\": 2031.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5141: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:495a89e2288bc830484d2f4a7c8a5566:00110060\n",
- "Processing image 5141: timestamp=2021-02-04 20:56:48.765234+00:00, observationId=o1:495a89e2288bc830484d2f4a7c8a5566:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14656032098306193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:495a89e2288bc830484d2f4a7c8a5566:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2021-02-04T20:56:48.765234+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A495a89e2288bc830484d2f4a7c8a5566%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b44c463815f00954067f1e633c4f5df3a897cb5699b8d4a88bdb9d1981e490d7db7d35bbfc4b861cec114978f433cb7527518dfe36c88f83cd33c2f00e51d67c1b20f3dab48ecf142ae232f1c4771b34d703e827e59f77198ffeda07d6394f6d4cf0ed42f7b0e7d88798f233c7f173443a341293414ef296b00c6defcd9830e21030aa0448fe424545c644cd63cd46ab6fbfd4a4d51a038abde2f9ce37fef3280de9a5c27aae240758e72cf09c84a1c84e0a3e7636d3ee539bf3339aacbbfec5bb9ed2f3594e47d78379a6899c474370d34d3ed8e75a3a74d7c92fd6b42f9c8be84c66ddbd461816d180527505500847b272ac20a5db062a75b04feb7f31806', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 1325.0}, \"hi\": {\"y\": 3420.0, \"x\": 1634.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5142: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:80316ba2be637a26a2f741b4df186a21:00110060\n",
- "Processing image 5142: timestamp=2024-01-11 15:44:35.493129+00:00, observationId=o1:80316ba2be637a26a2f741b4df186a21:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22812256813049317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2557, total_token_count=2637) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:80316ba2be637a26a2f741b4df186a21:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:44:35.493129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A80316ba2be637a26a2f741b4df186a21%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091711Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ad42cacce69c0082ef3a3faf449e6643bd3e5721e2081876ce137c6ce1356cce2c2bd10d729f7b0a772abfb6e4d16dc8809ec9bbf69451e3089780a75a5527d41d0998fa8d26a05589467e92d6f562756176cca5a6ad4fb2e94bf3b6ce7b298246012519a093c4b17c4a2180ac82c30c92b92d96cd962b7f74de48a18dd5e14855046d175320e5988c83c86b42c84705c155b6f522c0c065739ae009faba1e53670a4c94dd29bc9f45c021f918053f597e7c7b058b2265dd4856bda4f419d114b5b93a10adfbbe18502b3521a582a7765575b66d79833f64e43bdd34989029a6189e1635613b6b198512d17369a569ec9f1209115564655de94097a084ffe6f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3209.0, \"x\": 1036.0}, \"hi\": {\"y\": 3457.0, \"x\": 1355.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5143: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:315e2960a5d857de987e451eebd2b4b9:00110060\n",
- "Processing image 5143: timestamp=2024-01-11 15:51:43.360478+00:00, observationId=o1:315e2960a5d857de987e451eebd2b4b9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2543809438489147, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3073, total_token_count=3170) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:315e2960a5d857de987e451eebd2b4b9:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:51:43.360478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A315e2960a5d857de987e451eebd2b4b9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=715286843a00bde0da8d422c3d22bf0c90974b93a535ae857c183b023f8ed574b6ae87103e35063f76635b07c7488414cfa5eb089884d41b3b5e2f28b8f7c0319786997fa1c90898226e1f0b32858022d476dc7412344eb550d94baf68bec9fa052d4359b64682e84ef62d8112039f69816f96e050be25812def22c501c6c851282e4543e39b14d9893869bff900f7e703137850deac8aea26af818a395f3d3e7be852023f1e9a7492bd847ae9c0a9249cb52efce0736430e7cac1d1a7a25cb7f65c8f85442d4561e791bfe0080e15f1638c43db1cdf3ca663f353f0cf2f1ed5010887e63294abfbb61d4a868d13c8725238ecf11bc5b7e6b012dd2bf36f0540', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3280.0, \"x\": 596.0}, \"hi\": {\"y\": 3453.0, \"x\": 786.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5144: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060\n",
- "Processing image 5144: timestamp=2024-06-13 17:53:15.193826+00:00, observationId=o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white striped traffic control channelizer. Its purpose is to guide traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30974260965983075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2041, total_token_count=2104) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:15.193826+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A973fd8a80a0dc096e73b2e8d71fe70b9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=51827434932d70736c01b8426fec350d3e0d18a439c3b7bd154dc6a465c3846953bb35539315230158837a05543ba8ce654790fed8632a50f24d66e63d89ce458f8b32828563e765d00282d3fcfad271e4d023a5fb5281a2dc820927d8eef7111f440d97d10e3e4987f1ebdc81b064b43a7b3363bf30debcaac067c283a070505321d980fb57fecc8cd9a197c851f0578f742094609416c13371b7c84ff2b81364181bdb21fa32f2aae3180246876535740ffb436a3d6a64a0d54fff714198423f717803d1c633099ac38104f829bd9f45114bb5a9ea18f3b456e4a842f46865ffd684d8e3bb2c1f66348fbbb37491aeefe16d25fd8998773323fa749183d6e3', 'category': 'Other', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3954.0, \"x\": 2993.0}, \"hi\": {\"y\": 4510.0, \"x\": 3144.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5145: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060\n",
- "Processing image 5145: timestamp=2022-07-07 21:23:11.199126+00:00, observationId=o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20925277026731576, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2022-07-07T21:23:11.199126+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A91470ab8652d9d903a7eeea96fc5a9ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5cdb6ec3de6a5125878bb684678d70e297b51f411176cff399b6f275dc4f484c0cf8f5fc3debc1f26a8ddf95ff197d16bcf68b1a2c7849907849904b0763eccd7782559112101ecd99a7893211925e453bdcf664377336c9554857523e7ab811efa8b44fdc3425488f4506b18e066f42af587564f38a3ed50375c22ecf847507a5392834631a48634532a4bb69025eaa33f3bafaf579002d60c70e5d9ba30996de17e142d4e8f126d66465aee33cdc02e773161a9a3e70005baae88f55e48212b999ec69c02d6ecbb1d823d8ecfe93f1aec470c1ae49d76d8303c8e892f56bbfe8e1d7cdcc542588714000cc12cc64c67f8fd783034cf5a00474ab62ac59b109', 'category': 'Other', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3925.0, \"x\": 2109.0}, \"hi\": {\"y\": 4393.0, \"x\": 2240.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5146: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060\n",
- "Processing image 5146: timestamp=2024-06-13 17:53:14.857710+00:00, observationId=o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49042510986328125, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:14.857710+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A325bedb6b6989b7b7d86f7e0e6e9dfd5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=162e29808970bc5b2555f5ae2d31ddb898a455a2535e83e5a1a39b257e04b8bfbd3cd3754e47c1a0a80e35909651bf53a116be001e9fbdfd0c7b702b1c8ecf10536203956a46629e1129244476d4f5b2739f9444ccf58988c451f702ecc7209430b56de4997533d020a8c01fbcf8ff4c795c2a218be58b05a0cf671daa82f0c730bfb6abc1dd9322e32bfc6f70d5ca90ad3a7cfe9b6423ba8405ffb8cfe5aeadcb3c748fe7694c7b6b68fd8d6aa06eac5308b14dda520157983786b337a3db9bcb388811f5a24ffaabc56a5fbe516dff4b8aa14410bcefc281a679f59db47180d7f6428959cef63131191617df310dc37e3bc652d58930571936b2cddb24d587', 'category': 'Other', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3682.0, \"x\": 1723.0}, \"hi\": {\"y\": 4008.0, \"x\": 1808.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5147: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:266e59d8982f6277c2a1e63289ca3729:00110060\n",
- "Processing image 5147: timestamp=2024-06-16 15:28:54.386726+00:00, observationId=o1:266e59d8982f6277c2a1e63289ca3729:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic control barricade with orange and white diagonal stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32066793609083744, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2041, total_token_count=2098) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:266e59d8982f6277c2a1e63289ca3729:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-16T15:28:54.386726+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A266e59d8982f6277c2a1e63289ca3729%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9abf7e34e11d3dcfcc083e415c11100127e98292f3d416fb4e0220731e7d4fcfbd9d8a188d6de01dddaf47ea089196a92f50169bdede6bd8b670f5a73bc272f3cdb111bb0768c1d3f23488d99aa3c85618dbe5293ff5ac318cf6c2a5572c3120788a08350fc7c669eb77d2fa4759ecbbd1fb659ec318acc279b813f538b6408f6d47e6884adc5a5a857ee132e7bbae0f56df6f660ac05f221bb883d91ec8b9b4597ef4c4a5299086f0c16d7ce6c56fc0a80234699a8b6457199d9705a66b25e1f2ddf22c6e787f7afd1a66bbba04dd27f6cbb6d1458c211c8e2e75ab55a8f0ac20c7c715207a45451dbe2eb5941c946a462c746b6383b2a63ee77a4f6fd878ea', 'category': 'Other', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3764.0, \"x\": 2302.0}, \"hi\": {\"y\": 4160.0, \"x\": 2386.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5148: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:67fe6d24d962d69320e57a2502b92fe2:00110060\n",
- "Processing image 5148: timestamp=2024-06-13 17:53:15.193826+00:00, observationId=o1:67fe6d24d962d69320e57a2502b92fe2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3701341474378431, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:67fe6d24d962d69320e57a2502b92fe2:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:15.193826+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A67fe6d24d962d69320e57a2502b92fe2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e264e0264fac4a4f1f1ac9c0b138604340dfbc82ad2154ddbdfe35120a55e305084377666b42324dd90bb5a08e7c2cfcc70598034030b14bb80fb2df9f688e4ddb3526a18ae12920bf30733a76dd022b76b4879c5a358a87a24e52bb4a338fb64644fefe4236f3206a4fbd68bcde6e01056a7f9868e43167e9661416fe587093110683aa4ef82bd18a75e96b921f336b19d6b78671872e197d1cf09cffee71ae71fda777c0ff36125599cf968c6d88b925740d78e1d892ba05ef875a8a291c8678484a7a5ceb4e8f069ef345cbd91752f03a11be08abf844dd3dc33ab744ae95012c53881588c348a230e32ad6b10388d75950edb22c99ae83082e73c1e6f8f', 'category': 'Other', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3116.0, \"x\": 252.0}, \"hi\": {\"y\": 3721.0, \"x\": 406.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5149: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:2d327c931f47b57053a1eabf59bf694f:00110060\n",
- "Processing image 5149: timestamp=2024-02-14 22:17:49.014897+00:00, observationId=o1:2d327c931f47b57053a1eabf59bf694f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09539043241077, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2557, total_token_count=2629) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:2d327c931f47b57053a1eabf59bf694f:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-14T22:17:49.014897+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d327c931f47b57053a1eabf59bf694f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=718f82961f97c21e1fe257b1fe4b2fa7f96fd3b79e55728f8a5cf0c4bd696e34907c31b3a48bab168dee1698f53a85064c4ba8d15e7d9d759eaa32960e912272e0b911209bec0f36ace18cdfd99e87fb305bd22b2072ff2cc82ac81c5b979c96fa1025d68c4ad8c4bfdb5693947dae35537bb1f02c3c7d59eb16f2084513d4fe01f910e0c12d7cb8e1c641c0299111a64fd7a91accb500e6508f4251e32763467c6e45da6322cbf35017f0ee6f39ba58580f4861efa5b685b6fdabad05b1399cd4b75565f9d9eb7ac720dd80649f34013ba54890b46f40a3d48a6b6e44c700f84af79a88a516a078fecfb2f686c19a1bff79fb5607c2d68663975de44ce864e1', 'category': 'Pedestrian Crossing', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2710.0, \"x\": 1918.0}, \"hi\": {\"y\": 3288.0, \"x\": 2366.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5150: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060\n",
- "Processing image 5150: timestamp=2024-02-20 19:02:49.794159+00:00, observationId=o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign depicting a pedestrian walking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03619218680818202, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:02:49.794159+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d1b83ac0857163d3ac18f9713d7bad1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=04908d57c259654611c378e1b3732f418834608204ec330010e6d0b25f804c23c886fc70cc94b16437b65831f51fac81b00d34317865ab4870111f8cc4aa17f299d1c545a8a2b360ee19b5e898f9ce692ac697cb323c53cbf5ef50055657951d9914d3f7e306104c8a6214e9cc5a3b0100d0fd3f24894d47ac48370fb6521732fa7c5280fee0127c8ade79e91ab01e0ad084ebf5a3829db7a128f72c65ae71ba299402ca7f0630f8bf1a0d562ebfa8abcb861a94bd18d151ac42ec1a624bbbe1e523f7e3f5b88dfa33eb22ea8de902d2ccf0b17aacfb26e0e5e0a6d1f23a975f9509bc3a3577ce3a6c2834432be855ab37c8833c39770315dd809a6b75b8e6de', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2639.0, \"x\": 1977.0}, \"hi\": {\"y\": 3314.0, \"x\": 2496.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5151: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:4244a632873878cc192cf65fed35c32c:00110060\n",
- "Processing image 5151: timestamp=2024-02-20 19:05:47.295878+00:00, observationId=o1:4244a632873878cc192cf65fed35c32c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08324499428272247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:4244a632873878cc192cf65fed35c32c:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:05:47.295878+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4244a632873878cc192cf65fed35c32c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b80bda39f4fcce15d2760672876b7e30b1e34ae7a90964b1dafe40637be5734e713b4452d8fc726cbaae8f0a38f60fe47abcd4a105223b13db2a17dc3c6ade8e9cad25e7aa06d767997078620ad67cb76620bfbc45296af403d05097bb40800bee775f021d61faf794250ec7b7dbf49abe877222b2c6ad66197c172e8ba7a8a27a7438ddb6fc83e0165e47de0a225a249c0efa87f4536e203807dab9baf42fad3c6a323fbcaca062572fd5a71a1779be588ae6f178d7b8fafb3571b2e5d7e4a8d1540e8bc4a4adabff92f436d0513aa974b33ebb86fd1883d091c9d6aff386431c4ae1ced4bccaa261968215f4ba14533ac3c6da4f92b05055783908e2d2393f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1473.0, \"x\": 1188.0}, \"hi\": {\"y\": 2379.0, \"x\": 1383.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5152: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:34d922dabaa0dfd0de39238c4ae5f422:00110060\n",
- "Processing image 5152: timestamp=2024-02-14 22:17:48.694899+00:00, observationId=o1:34d922dabaa0dfd0de39238c4ae5f422:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17325782775878906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:34d922dabaa0dfd0de39238c4ae5f422:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-14T22:17:48.694899+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34d922dabaa0dfd0de39238c4ae5f422%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93a9112f7e85c2e19771dc6aad6f87e2ca66bb26659e99c3c238ee153d7b4e386b499031e47fe8cc386b3a1208eaaa2a85841107d5b60728d2ae94923225ac6fb48405b0b644f717be0f596947eb1c64700453f1401b3228cc5a89a050e469bbe9619b970376f9f241a8864f4e5caf1ea3be8e4d25c8f41aae7febcd82dc02c66f87e6cbd45a8dee02318f7e3eca2942bc670dba8d31e6873472e7df64b139a31969a5a3de12632a141f3c8108340a75934ae7f83e83b3b6f09fb6b7d4a373ca6a18c1f18ea5fac601299bd9c2590d86411037dc42fcbdd0131f2639c0a5877dccfe33d977a7b1b324b09f48ba245c6a3220b69e4177b3766f6b0aaf921cc14d', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2916.0, \"x\": 1201.0}, \"hi\": {\"y\": 3263.0, \"x\": 1517.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5153: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060\n",
- "Processing image 5153: timestamp=2024-02-20 19:05:46.131497+00:00, observationId=o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12434279918670654, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:05:46.131497+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16e8862f2ff5b6fd64e337d1bbe00c94%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=72beb11e6f2360a0e5c05813ba022e78941d0a77af9058f7fe944b8075befe1b97b98c3c770e54a062c4540240485bf5dde49c0fdd8ebfea99d4522afff69099015c53a546fc08409303c0012fa8c68b532f933e721ba65fea19bc07ce300b043310ef39438351cf63f78056bda8b4cf45f0c9bed5d5b704e93164975263a2a4a89de30a16593004ac1d296da121d4349320cf03b7e1c06717544e2ede8adb3a667f420a491def3654dfa384619bd50a062744150a4a6149a3a9b3cdb13897624ad66f7737f4481c00b6b519404d833939bb059aa3d021f577a69a20363fa04be8f49c06f41fb25643bfefe145ac059b4fb2c60d6d83ae6a9321e5794038695c', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2829.0, \"x\": 2019.0}, \"hi\": {\"y\": 3315.0, \"x\": 2439.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5154: trackId=t1:02e2ebb5d7bae8662271eb283ac5e6e9:ffff005f, observationId=o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060\n",
- "Processing image 5154: timestamp=2021-12-29 18:27:08.235453+00:00, observationId=o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign depicts a bicycle symbol above the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13121425128373942, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e2ebb5d7bae8662271eb283ac5e6e9:ffff005f', 'observationId': 'o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060', 'geographic_point': 'POINT(-111.890953487174 40.7379361398839)', 'mapsURL': 'https://maps.google.com/?q=40.737936,-111.890953', 'captureTimestamp': '2021-12-29T18:27:08.235453+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae60c87017bc5ec6b9dd0e8caa344021a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c388e0af9b1f0df7b9c8a58ad981854cc424d8c3954c9705d868d4bef23f5357b71cb65e8ada5df35b8a13a732831b811e1d15415de29b1b4b59aaa72fcb399bfe4ffb3a303d1b9c00a03fbb6fbf201759ff093eba286b144c0d984c53ea3545b314130bbf28cdc62175be81e3ab5baf82f02aebe152a0e53d80996a6933ddf6d7a84d0cd47e8e9f9d5ed0615778d128e07894de5f08692f573e5794917e1171cd0571258e957f65e44fc4f70d0681c244169ea47eb39b5ca7a4eee406a6d93a6fd45e6df90f85cb6ad0e37fd5b0f53e47fe8c6a85c8be21053c0199dfd90bf9f33affcbd0e8a6e43bfb6cc4c0e945a81eaf03bdfaed8e82c54de20387592d8', 'category': 'Other', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2213.0, \"x\": 1271.0}, \"hi\": {\"y\": 2428.0, \"x\": 1366.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5155: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:6c2022dcf83acac3ec8a368d3c5dfd68:00110060\n",
- "Processing image 5155: timestamp=2011-04-27 17:21:14.848261+00:00, observationId=o1:6c2022dcf83acac3ec8a368d3c5dfd68:00110060\n",
- " Error processing image 5155: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6c2022dcf83acac3ec8a368d3c5dfd68%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67319632cbfea20052b365e359595e8d2c8a7d6361fce5305cb81b32ebf67ba44926a56c5a36a2418cdcec28b3368da01c66f4e5e47c1a53ccac48ceb517ab53d2653687688b77431bc3e36547463c81e540963cb1e1993f739946cbd83da3a9bec0b41b71e2eeee26bfd5d5b7f558ece095989106b07a0abd4bd8568207f63b7854fa03f0fb326196ea06bdb81f0202aef9d9d474a1dd1e5d831da27fd24351dd5fb4cf808cf9872354d5621d3210e00874312ebc88bffd40d24046c87571ee03d9efa3ad42405a09fc9b30915ef18fbafcc17238075b628bc685eba0575c556baf5ba98e357d4a526353617e2d8643619f0e8dffccb2c2e5743c9bb0b4ab8d\n",
- "Processing image 5156: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:bcc214d1da94f8fb52e25de26db5035a:00110060\n",
- "Processing image 5156: timestamp=2011-04-27 17:20:55.905218+00:00, observationId=o1:bcc214d1da94f8fb52e25de26db5035a:00110060\n",
- " Error processing image 5156: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abcc214d1da94f8fb52e25de26db5035a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=39898d1a8a2bbde6bfb436e75d83f3a9bbcb2f0df0582f991043c22bf22be4be18839ec704159c8632c89138ce6b287058c4a5b9992c9ce3f4ba3e6443fa6f6c2d9ff8cdb867d866305f60b00f6e5e294cd16acaa5abe7838e2c25972e9466a2be4e2231c5e02b66aafeadab0ba35e85c5094ef607c8b43b524d26b5f28db56d799b53e6f22fda22b7bd8e46396d3c5b946be739288e64bef6a175334d31a92f9523cbb7da216a09222de7ec9cf4aa20a9d7e5cbc9ad4cdfad145590adbdadad35b71f782e67570e9064e3d3829e347fb42c9275dfe7cadcfb29e024faddc8790937086829d0f5ee0d1f064b66183f7a6ba59e6325f85a0ed79c4700c1e1da32\n",
- "Processing image 5157: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:6bd54a9102ea278121dcd9e411900625:00110060\n",
- "Processing image 5157: timestamp=2011-04-27 17:21:15.759358+00:00, observationId=o1:6bd54a9102ea278121dcd9e411900625:00110060\n",
- " Error processing image 5157: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6bd54a9102ea278121dcd9e411900625%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=91b515205a16dc46b77cdbb29d00bf5b7b4f0c051b292ea3fd13d276ac7863cc20871e17f1c7629fc9e929c6e75d7998832b7669e11c7c9333f770a67379f31db94a0722d91486b06e17bfbb2974280125d27b35bbb68379f741eebf347429620466ed5dd9eba6ff7157668a5130701a06250ecc718651d62786d0aa217ebd7234cbe6d8d753dc190b8c20efe246d4ef3f3d989b0a8fb36e957ce5eedd165b98c17567addd5615749628df8820c2d307379c376be535236b5d2f32b7864ea18533522a1a832dd36392b12b2d21e3c947fa50f7cba24004793907fd6360f6991daa5ed5dc07b6d6781a77d2b53ef46b27164f2859afd755481fd53a0744174c01\n",
- "Processing image 5158: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:20b6c7f7cfe4285fd30c82660596fa4a:00110060\n",
- "Processing image 5158: timestamp=2011-04-27 17:21:16.584439+00:00, observationId=o1:20b6c7f7cfe4285fd30c82660596fa4a:00110060\n",
- " Error processing image 5158: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20b6c7f7cfe4285fd30c82660596fa4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=97d77032e3570d4c371b0fd1d8025430c78a993b3e2a8a22d61995dbfaaf19b4f1f47f3758dac17ce1aaa55840adbd446e30cbf6338652b4601c3da001bf828d7df21ea652df0b4ba755d393c352ea2cabb570d344942812d958a71cbaacfb5df341a49f3f86082e74311cd7cc99e50363f0da75a2d839afe0d8820db8e6f83f93739bb6b8e76e424f53b75a98e8010c69a4da5bfc0e9a5487bbb3b926ded8862636669aea8eb3eac31076a5242853832a23ef03674f71446a15183c97f946b94ba495ecb47a075dd0febbbc870b02b44483613491cd78e4f806185722fd56c1a588945bab10a865cf6672ea4e0fc5d6994163b0e239301a21af27396ff3181b\n",
- "Processing image 5159: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:a47be06ae8feaf18465e14aa51d75c8b:00110060\n",
- "Processing image 5159: timestamp=2011-04-27 17:21:16.584439+00:00, observationId=o1:a47be06ae8feaf18465e14aa51d75c8b:00110060\n",
- " Error processing image 5159: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa47be06ae8feaf18465e14aa51d75c8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92fd45e6f90b7d73e2b80119027bb9e1579737c6398e0dcad1bc313641d864591bdbf8c7438bfdcafd3af6fce4b6022ff41a8e0b1b926d48e9f938081a9d69ed6de09d946a14bb5713ad70e244730bce0246c3b8e8f8af0d7214fa4225556462ca3956f8dd734577f018fa14101fb12a1e90b9673560bded0cfbaf865dfacd8c53f2952bf547ca288266f4ca358ea482e4b1d87367dcd6d11b957b8b8cb5143894d44917025fb08c4c928953bdb211358bf4ac7ef47f3ba677500171f0d70593a7792af12ecb1430b915c725c9d18f291804686a01a71b09cdb2294a8075916e57f3762a3e7e2b2955703a5ba5abe2d1bacd376b363037b9a2b9482529fa7def\n",
- "Processing image 5160: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:0141b390b96306edad2113477c790587:00110060\n",
- "Processing image 5160: timestamp=2024-02-06 15:24:54.309801+00:00, observationId=o1:0141b390b96306edad2113477c790587:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text \\'STOP, IN CROSSWALK\\'.\",\\n \"image_quality_notes\": \"The image quality is slightly blurred in the middle, but the signs are still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3262047610440097, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:0141b390b96306edad2113477c790587:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:24:54.309801+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0141b390b96306edad2113477c790587%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d48a0fcf3d7013aca9f3a59ed80736f0bb1fb45923dc9ab564005e27382ee2b8a446e1f5bfaff3210eed3290be54a7ec26c7f8525a6fdfbc71b9e368f3364ce816a17ed19d1eaa887aa3faa86146fff3543963c87e87b951e67712ae0f50f6d45be3e03c01211cd9624ad9bcf0cfc8f4dae61628f41bf20c33456de51772447020e6fa9b0c12054fbcb41556c8973df6ed3606ce4cd8292351e3d559642aeb8df5d69475a9c6d31631a41ed68deef6e1e5af3d73a5d03915ed33a2c7c5b78899fa0d0db885ff549c99eba8850e07b33be8a4c3c9a2ddd15578a4cb7b1265d6dd257147e6260ef8af91fd74f99c343412b3fc4614e0c026ec207fcb15da87d9b', 'category': 'Pedestrian Crossing', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3544.0, \"x\": 1846.0}, \"hi\": {\"y\": 3879.0, \"x\": 2124.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5161: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:511afe5c2b0bff85304c71ac2d189453:00110060\n",
- "Processing image 5161: timestamp=2021-04-07 21:49:32.856065+00:00, observationId=o1:511afe5c2b0bff85304c71ac2d189453:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4304587500435965, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=3073, total_token_count=3185) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:511afe5c2b0bff85304c71ac2d189453:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2021-04-07T21:49:32.856065+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A511afe5c2b0bff85304c71ac2d189453%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3d35ed830c754aa6f72d4a292940bf7c5f74605492ce126b61d6164dffb938f0f78cae3301bf5c754dbe644ea9a7f0b43a6d19cd7e47e1af2ae1146f679abc926df4f072656578baed8ba044d50e28a10af5e52f843100d0a4e780ca43b45a2a9b31f3fbcbc8a3b7a30e990fbba57cdb19382edede50edd5593c52748b83847ab17e424d6e61cd321451f20e493d1544af72bf12c286b5d5d156f1332c654bc4bdd1f24a951b0743c512778702d42e5c237f2626b55f52f99d19ee901263dbafbbaec069e5d69a222ece5e562e93903db7a48be6649fa42d95d5aba14bd0c7203accb24e20eea478a8b674d59b970c4947ebd265ec8280e39af69dbdf36277b9', 'category': 'Pedestrian Crossing', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3602.0, \"x\": 2298.0}, \"hi\": {\"y\": 4029.0, \"x\": 2606.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5162: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060\n",
- "Processing image 5162: timestamp=2024-02-06 15:38:26.592440+00:00, observationId=o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states \\'STOP\\' within a red octagon, along with a pedestrian symbol, and \\'IN CROSSWALK\\' written below. \",\\n \"image_quality_notes\": \"There appears to be a blur over the middle of the image, but the signs are still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4454074466929716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=136, prompt_token_count=2557, total_token_count=2693) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:38:26.592440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa2ac44b0d832f1b69cfc33e2eff7ce75%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b6971e2e997a3ff4011425b367ea00ca225d3d61ce597c49cca0cbef7868adbe879ec3a0b4b0add5cfd243e5db6e9a832ce4fa79775d10647e95702777240c87499cc23fa731bc369512c40d8a65baa34624c06f2f4ed69627c922273271414af2bd023a247fc42193777cfdaf946874361cc68ac2a5035a31934bd75c48aedb69a161b91e16f10653355d605d4bb6d9cbc3c4910e844e14fcaea3ffd083d4672cbb7d228a39a6dcf86eec6f2e86b857e7cc8fcc8c48c32bdd01eb1cc7f1a511e65a1fdcf9ff4f65c9fc674960d65c1b7dca6b34ba42aa613c7a86fabc3994d33d8eaddaaa179a2bc5dcf18224fb489475dd3c42d4f38f6329119e3bf4e92e01', 'category': 'Pedestrian Crossing', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3550.0, \"x\": 1832.0}, \"hi\": {\"y\": 3898.0, \"x\": 2119.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5163: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060\n",
- "Processing image 5163: timestamp=2024-02-06 15:17:41.308953+00:00, observationId=o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4044478542833443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:17:41.308953+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1654ad3c4f914e7bac94fdfe64210b6b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0af2155561735aa5f4f6de08ec0af35bf41fb360ee84dfab554273d48271940486b0b3a85a5017b4fed785c0ff1e9109cf96b60d0c2b6d64ee160fe738335f1463a957675bbe04c9b5e292e16023d621e88f5d95a70d0888e2ebe0360cea9fc51f0f7955eae1110c115ed9050c1b74c8769b2ee388b6590a2328fbb0fd83f4406061d3bcd32bf4b78db1a465028b878539c1057d196f499a17e61d059181bcb3b28cbfd7d9a9f14fb47e7b77d0eff55e0c5d73cef2a1be5ee2abb0dd2b134ed386a030b82fc5a35589ec17716209983ab9c3d9c8213d6a7cb216082b9f9e39b5ab3e54f818a71f8586d42de066b91ad2dc1e10b71fe5feeb655c974fbd86ca44', 'category': 'Pedestrian Crossing', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3536.0, \"x\": 1762.0}, \"hi\": {\"y\": 3876.0, \"x\": 2045.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5164: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060\n",
- "Processing image 5164: timestamp=2021-04-07 21:49:32.148007+00:00, observationId=o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40775618186363805, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=2557, total_token_count=2661) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2021-04-07T21:49:32.148007+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77113c2a3de90d0a9e762ea2ad0dd33b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c7845e035d0b0834e22cff86917a889d6c30a500302c5c6a4787055429bae1cc1f17af760f6c61d0be7ad898bbdfdbfa125142c63dcfad3a69105db7aca5a71dc64187fab14acb71e85ada2730331d64155b348d34faa8e4ba3a3b6ecac70eeaa25edf947cf6b381e149ee5bd7a6e78248e003f665d64f6ed0dfaeb5cffd94a95e08139292b337c8491aaa4ce4287f615e66940b4fcbc8ad4275861779ee462ea19cd38a2b3e4673814ad378a205942059b1bcb2b6cb3fd7cf01a04fdf888c6e31bece1072b3c4ba0c2649934cecdcd656eef9cb4383a1ca1d1d71a2e215f551043aed0457ae0f96272883cfc6b860513bc01ac9a6788b230c36fdc787832f1', 'category': 'Pedestrian Crossing', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3439.0, \"x\": 1194.0}, \"hi\": {\"y\": 3638.0, \"x\": 1387.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5165: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:2ead7485eb9fcc9b5804dde20edb875f:00110060\n",
- "Processing image 5165: timestamp=2024-02-12 19:53:08.254571+00:00, observationId=o1:2ead7485eb9fcc9b5804dde20edb875f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a direction (West) and a route marker, likely a highway or route designation.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32507682569099194, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:2ead7485eb9fcc9b5804dde20edb875f:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:08.254571+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ead7485eb9fcc9b5804dde20edb875f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b55afc415ae0586fe3abb79db695c0a0f8aadc5f33cedee7931a52ed22139e6eb4da88955908316ce2a651c81aaceced6d8c51a686865baec26b2cbf309c16b33af1a5595cb55e23ccbf7b9947855d709953b9cd5bb133b40c56032a781b03db280840beef6c50c3fbe6f171d1ca9d88eee0a7ff8f7fcbcecc1eed72cb933a5cff66c84eaacbbae2ca4e76a2876a5abe650a058b996151c2dcfd9fe947c950efac4adeedd01947ee9eb759aeb0181c2bb4dd3151038a827ba500bd904061998364ae0d6ffe54a6f9c77d772375855b70d8e49773b3287edcf08b99b14a06dd8e134a73e729db69cd8abe248090c8576fd2860c6fc3ffc98d312059105c36be0e', 'category': 'Other', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2974.0, \"x\": 1645.0}, \"hi\": {\"y\": 3045.0, \"x\": 1757.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5166: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060\n",
- "Processing image 5166: timestamp=2024-02-12 19:53:08.958517+00:00, observationId=o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a sign that says \\'West\\' above a highway route marker for route 9 and a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36217641158842706, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:08.958517+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe9c4f4d8e063bd4f991e249a6219d65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae65767eea08df6305b405037a8da57ed3bf9616dec958933d88c4655620aa315f1c6f70a9bf0decafa8aea3b1f2da7ce570fdb31dbd808e5956377bf09b90800de4dfc436827c8aab9c6309fb4e57fb8045842219ab42d75f4696a345c728c6282f9bf7a95de52dc453336fdde553d6b4350330ecde3eed41c7105e44ecb202d8f1e97bcd19aef693e15684caef84d7456290903f20a0e3fc2ad13f3638f5448d88c196de5aa63303a1c287f9f8d860cd9a2c45f02678ba25018a8ce2b4edf9440edc54f862d65a1f46ce2debf266f2cdcc1558e667f27b8521fad8c5860cd4f1b064367464ef1a257f442262e319328617b17f25c14b5297fda2f3bcb5e089', 'category': 'Street name', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2892.0, \"x\": 2181.0}, \"hi\": {\"y\": 2981.0, \"x\": 2315.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5167: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:a221a91aba79438057aa06a6440598ee:00110060\n",
- "Processing image 5167: timestamp=2024-02-12 19:53:14.418508+00:00, observationId=o1:a221a91aba79438057aa06a6440598ee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that this is a West-bound route 92.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29385668231594947, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:a221a91aba79438057aa06a6440598ee:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:14.418508+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa221a91aba79438057aa06a6440598ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b5ce15fbdb364558465fe6bb6da292718006adf763d7987eda99d96fbf2bed38f412e83195a55b1285d7c30416ad26c1f154d073afe15aa901fee747ac587f36de1c5b395c9c210e7ba95c0c902addbe9d581bd53e888237917c8c9589450ac8188195ef6f8764ec0f599186153312682029855b5a7b816f57689818a16c23138fb3ebc228628a304b2f1b9c86df332c680c099caa7103db67be64a36bb6259f5bd4b0408c413063110a52a17925554bc3229ba15c6ed986bcdc50159cfc1269832d050e65b4cbe5046c9abd57fce66f6769407086af5eec86e9308e34a0351389a5368ac12e987b236a735c499272f26ab76536adee436ff33ed0231a59d34a', 'category': 'Street name', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1805.0, \"x\": 649.0}, \"hi\": {\"y\": 1963.0, \"x\": 744.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5168: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:cc95afa1d4283e971968fb56b0cd5516:00110060\n",
- "Processing image 5168: timestamp=2024-02-21 15:01:17.750503+00:00, observationId=o1:cc95afa1d4283e971968fb56b0cd5516:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the route number as 92 with a WEST directional sign above it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22619640643780048, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:cc95afa1d4283e971968fb56b0cd5516:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-21T15:01:17.750503+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc95afa1d4283e971968fb56b0cd5516%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ba9290111566fdcc3d7941b1b47c30cb4161d536e4d748cb2b2315737bb8119529e023a8c8dbbd704017d810eab64b784d909ec7d8549917f1bf663b25d0268fe045959d6c428013a0139d21f4441d4b6fe7fc1120ccd108b133834c5be209a483a47e2401df03d30291bd4f97c1042d5d67ddb1865f737bc36f8175016bc956692f6ced1fa5d1a06ba0e413b238fa355693622cf28feaf8194aea3ebf6dfd6bf35c4cfe5fc9a2055e6037757f6684709364437a3af2387056722a9b0c53781f8ceb5fb3829166714beea290626ef444d3052e6f2d57a4cc6307be7ab4113aa745ca45931247457f512c70b72d3b700fc3623975fd6bd413700916e02086240', 'category': 'Street name', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2974.0, \"x\": 2839.0}, \"hi\": {\"y\": 3051.0, \"x\": 2932.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5169: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:94e452919c7ae3c7fe93bdd531132283:00110060\n",
- "Processing image 5169: timestamp=2024-02-12 19:53:10.006551+00:00, observationId=o1:94e452919c7ae3c7fe93bdd531132283:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign assembly consists of: A \\\\\"WEST\\\\\" direction sign, a route marker for route 92, and a directional sign with a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.334491850454596, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:94e452919c7ae3c7fe93bdd531132283:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:10.006551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A94e452919c7ae3c7fe93bdd531132283%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=635d171bd5a8ab6fed45e714f592811710674840a5e388f24bf30b93a8c2cc7e8c87616fdaeffa6596eb5b50169d6ca8154ca2901078d7eddb719b1a7b600e07bef90155d1ce40266aedf97fcf485611528aa30226cce7684269754729e22c7bf1fe2fb966eb1e7c383875362161cff0d1960f780675fdb5f981f1ad5789ec348c99a30427adfb8ebb3a1592f3fb0d340e03f38adf6503e2bac30cf73dd4cecf6971a76c73f946968d9a4ebd5a13c5b36de6ba06f97b8492748d01431b757d895b3032684073256d7ba3bb21f0bf131c68040721ac52219c8c15f625135635a26df7ad0bd3d1a2c1d409b7662ff667a88567a9279be4613471b777aad3b25a1f', 'category': 'Street name', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2762.0, \"x\": 3003.0}, \"hi\": {\"y\": 2886.0, \"x\": 3135.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5170: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:7d3eb5ae098bf158c0004446e8096aa7:00110060\n",
- "Processing image 5170: timestamp=2024-01-24 16:26:15.732413+00:00, observationId=o1:7d3eb5ae098bf158c0004446e8096aa7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2058994674682617, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:7d3eb5ae098bf158c0004446e8096aa7:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T16:26:15.732413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d3eb5ae098bf158c0004446e8096aa7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=84b56e179902db776a1f5048f890ba8efef77bb83a9a4e35cfe9b6a4e5c5cc64af62134add575da9e09d5d98bba0096b41af1b8c513cded949576a42652008c2af1e98e595b420e58ace155a94eeedc003b9497e131dd13846173040e0bfc5342748f860cc56e4520e931329f59711eb303c4316429b3532ece5205cbe36ea364515a87cf13bd923f846edef271b39c91f203bb78b0a4b41eca2fd84e8a07a747f5b3f38b66b52c397b7b9ef8f7bc1e1fda9b410702744fbd8a36aeae8c478e2815b6af86432ccb57b00f36af72443c3946817dcf33f61d41b614ec9ad5ecd1618dee180c2dcc708f1223f772a8257df07bdb63d168c2356e7f254ebff7b59e4', 'category': 'Other', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3372.0, \"x\": 518.0}, \"hi\": {\"y\": 3453.0, \"x\": 570.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5171: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:410b8938905077e5e19503aca335c002:00110060\n",
- "Processing image 5171: timestamp=2024-01-24 16:26:16.332398+00:00, observationId=o1:410b8938905077e5e19503aca335c002:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15649385594609957, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:410b8938905077e5e19503aca335c002:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T16:26:16.332398+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A410b8938905077e5e19503aca335c002%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=051283fbbd5288460364f7605a5382408686d29b8a00ff6ab1309274342f8f6f9e8836850c064c0accde07e4f269a30fac6ba16fae47e42a24b29ac90c66d9268b7701f657ed37846bc7e11521b26727f0a9a245e3189df16475ee5a6238819563b759b6a8354d477ed47fbea12eeb676836831aa159ddec35e5b53580bd1bdf8d45b2e9da99ee43cf6d605ce945348f10edc7f8bbbff8b52f0d2e1385eff1588d0e238551caca9a3e01f621aa5ef7eaf7b95e1ecf91f2db2e643adc6ec2b266c39c32537c2d270de6529990a81554f49e054fe9b1106740637dfdb009029303923dc6dfbe56b222899bb409e3b3bc563849f66d52120e9655017e7d3d4cc72f', 'category': 'Other', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3453.0, \"x\": 627.0}, \"hi\": {\"y\": 3581.0, \"x\": 706.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5172: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:a5b814c4b792f4dcde98e5a18bef7488:00110060\n",
- "Processing image 5172: timestamp=2024-01-24 15:57:08.464522+00:00, observationId=o1:a5b814c4b792f4dcde98e5a18bef7488:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21267333711896624, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:a5b814c4b792f4dcde98e5a18bef7488:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:57:08.464522+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa5b814c4b792f4dcde98e5a18bef7488%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae380c2af3ef11e9193a4a765bbd64daf19438ea930f3e68aa302e26a7d0b3c95b4e7a9da615a8290cdc497d85f9428b14e6f46cafa8b17e54343a99040ea4fe94ff3dfa04c2477627fc347d7cc2af543bcc90ab6c9d238b9263ebe512ffdb86bd200290c0af69dc276cf38412cf522314fd67b0665f8abbcb88b96c8c0c30418dbf7d846001dd0c4efe83e69901517e300c1b3f6847d35a758d314128664db610076fb7c0c4458ad4229d2eb7ffed1f2cf09b094b5ba955693368760f91313103a28d2d8fa95e5a81d24de9ce368404ceb29cf804fb37779e88f26069d5df17379f254a0c3f049cc6cf3948314ade219dc2783e6fcffdc88adb8b152b72b736', 'category': 'Other', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2957.0, \"x\": 1040.0}, \"hi\": {\"y\": 3374.0, \"x\": 1253.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5173: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:06ceb747177f855742928c23e8c440ab:00110060\n",
- "Processing image 5173: timestamp=2024-01-24 15:57:08.764536+00:00, observationId=o1:06ceb747177f855742928c23e8c440ab:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2350512875450982, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:06ceb747177f855742928c23e8c440ab:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:57:08.764536+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A06ceb747177f855742928c23e8c440ab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3278cb9c0b89436f162c738e058b4eaae809b34fce111be4e345e1fee7c330c3d2d9c194144fcb18954460ae13756fb18de0fa4115116c36c341cdc28d3905eac464f5bdf9ddaf8428cc35aafb44b664216401c7004739968666e954f7fc78175de014dcf39d01b003426dfe5a50314ec2cce1a235ef731c7c47da6d1a4faf460eb76bb3b803ee8472d93ca4e14c64e48e09472ad0900f14022800e90daaca3037b56d8fd7bc8bac05817d9c6762ae06eb0f05b5ebab158c1187e456d4ca4539db0145eec155cb769dca1e6dc0a5d4bb694c33231fc64c8488d8505f4b52457c091430c3c2f4fec9f25c400bee0bf0a4816fa56e5e4f0c1fc005711e7b559c51', 'category': 'Other', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3686.0, \"x\": 2403.0}, \"hi\": {\"y\": 3976.0, \"x\": 2576.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5174: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060\n",
- "Processing image 5174: timestamp=2024-01-24 15:52:51.444550+00:00, observationId=o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white construction barrel.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.060767139707292826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=1525, total_token_count=1581) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:52:51.444550+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A721d4d54ded698a34a0fb0728cd7c1b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3809953859a95bd99e454f018d14b56369d5ac7d2d4054e5e2c031175f2c8b74f84c4bc91ded8474850a846dc558cf2a58b22f25093d08b1cac055f5c943d9098a894cced6b55d5a48c09530455cb5976d55d38713653e35dfac8b297a6276f48a8ce1741fc96ecc94ed23f2324fee34d8b223a8b45c5480dfc247be87044ad7e89ba50ea1ff533b6d729d2bf724afaa79b85f8249c260768e79b8520593b6708566aef019de0409e1d2cd0fdb86a8fe773479c2c834de2f0e62e2e87f84bb7bc5f07c52745b9390977c6881fe0c79dcf59af77148c12c15b740b3a0b80ae9ff446c39089d94a599848815017740bb824212317884c56cd206855a6844490cb8', 'category': 'Other', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3587.0, \"x\": 773.0}, \"hi\": {\"y\": 3824.0, \"x\": 905.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5175: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060\n",
- "Processing image 5175: timestamp=2019-06-05 17:36:42.857051+00:00, observationId=o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone with orange and white stripes. It\\'s likely used for temporary traffic control or road work.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the object is discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2377421705028679, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:42.857051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8cf5e1d0098d2d40930bae5f2bd42a44%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5ed2b6b892d6c090d07a2f45f013d77d06b3d58a6cc6e4d1f266553e34244082c04fc7f2cf8cbab31d6459dfcd5836a5ffd93f8c0201cc5d9c7a6d5250af1893a0564038ff06d033aea02d447bb54799470ea77c8fa977b746c06c68073d7714af13e2d0a77992d4c76daee143b616c4c7437d83719a2964b10b4c48941c7e7c9c179407dba453665c9b5dfc7257be51df2664e937ac97629899264d82ef5e3d5d68933a9d4ff4d97d251a995908ad353c4cdade0bd1db83c1064f84e80a80fc461da7e8e3dd4dd958d3de3294911a47aa88fa7cd55c25c91af51b87a3a7e96d33e21e01744f7919d25daa2e0e168743b88ab4aa51eb58160d96ad815e9feaa', 'category': 'Other', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3905.0, \"x\": 1484.0}, \"hi\": {\"y\": 4474.0, \"x\": 1664.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5176: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060\n",
- "Processing image 5176: timestamp=2019-06-05 17:36:42.857051+00:00, observationId=o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4262398999146741, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=1525, total_token_count=1624) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:42.857051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A352d36fdbac6bedfaa308f2c9ca55d68%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b40d0495877dad9a27255cb4b2f4e9e7bd9ea83677dd69dd79c359485798079a1f6682f9423420468340905eb6873c9870a4958be656d657846ec87ee4345deb192023590498bb84b9b87a8128ad4e66354cce87a7aa350bf86d8870c051ce81ba5640c4dea4ee2453e1b2e5c719e6fbf518114cbae5382dbb56cbfa7be9f37f7e245bbdfa9394c262e25d813b8d25f56f2d89798aad2db966460789b0d939e17d358e58d2369ee43264463145bb3a431d4ccba091447bc0228d3bb8ff1bce6c2e1374e0222dd861ad8ff087f782bebeb317fd5aca7ce3321e2e65b74f507728e97965d227e1df8311a632c2e685e1fb4ccaf1f64f3dd0592c4f654051fd5fc', 'category': 'Other', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3538.0, \"x\": 2601.0}, \"hi\": {\"y\": 3821.0, \"x\": 2691.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5177: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060\n",
- "Processing image 5177: timestamp=2019-06-05 17:36:44.172954+00:00, observationId=o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2619589051203941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:44.172954+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af82bb2578d9d46bc78b6b594b0b52d61%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7d54242c9ee94c400802c8ef6953072cbfe9273b6742d6dbb5c249de9e466e1d1858a728c8ed510e1f69479a5efea3a0125749e18c190bab0a76fe4c9d5c565f600f02b5e66952c1a29b8084590e9afb12bf6d888360d3fd90a6dd6a4a60ab45877fc1d9de5a1907e0ad3afa2ae588ae9d4bcaf624f3b12d5b3ca0ca4a7681a6ec91de92df86556c6c8bd336569145e8bcff3a4d240cedcb36cfed8551d063d048f26807669be3a81f0aaa386c185edf0e8c6d7f3f7aa1016107aecaff2c1aad63a7ee6ddd89c7297565231773188da2dd2af6cfc727b20fbffdb355958fdb06647e980e90447c75468e5591199f507161b513efb9ff187b8243bbc9b1fd6bb9', 'category': 'Other', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3715.0, \"x\": 1728.0}, \"hi\": {\"y\": 4091.0, \"x\": 1850.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5178: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:7bfbeb2fedb403df7315a599237788a5:00110060\n",
- "Processing image 5178: timestamp=2019-06-05 17:36:41.789402+00:00, observationId=o1:7bfbeb2fedb403df7315a599237788a5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17219969720551462, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:7bfbeb2fedb403df7315a599237788a5:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:41.789402+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7bfbeb2fedb403df7315a599237788a5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091414Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5e28ac051bd45a251da47ee9502d65bbd885c07fc7bd3c4c5f045771c27b342d9b6c21d320f6ea8e695f1a4b98de0afbea5a8ca73340d991ba55c9a28d4eac7e37150854f82e5e8b3024cba1d24e52856fdaa4693e52d3927634250151e54109f1ea9d0e09b68120579e0da3a80a0a0b7b26bf5e8bc2cfa7d4593ad1e89328c78e15b9473806963675d9c85b90cd67629b3da43ea0fc294caaac4ec8226aeea10e6e8faf7e428c7cdab2924336ee0b23fcedb76714205aff82cb6f3ed8e4606dd894bf02e4727d034996591283ccbcd906cd83e110910334c453f5545a088f80b65a75d4b145f97c6b19edecf229ca7a31d2fa2aaaa0750567ace1cd2308a5d1', 'category': 'Other', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3285.0, \"x\": 3072.0}, \"hi\": {\"y\": 3346.0, \"x\": 3106.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5179: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:e6b8b30410e55d37d24d579d9a66e49b:00110060\n",
- "Processing image 5179: timestamp=2024-02-08 19:01:47.595820+00:00, observationId=o1:e6b8b30410e55d37d24d579d9a66e49b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays a phone number and the words \\'JUNK CARS\\'. It appears to be an advertisement.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10789996474536497, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:e6b8b30410e55d37d24d579d9a66e49b:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:47.595820+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6b8b30410e55d37d24d579d9a66e49b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=900ac717d2b93a381e9fc012227c19b8037d28c087b988e180fca039fcff1a66c54a7dc0630609dc1690cc13f95c2551b82997a114f6b1f59d6fd0549b4e3f232d3991912da56c58ad716890c7f0fac4bed978ed0b5e9c100447323532b36ee3012782cc7132e64efabd815a69a43f77a6bb8a79a1794236d9b162c1c6e1b0f30ab52d49f1acef8b373d598b28cd09967ea1e7fc67de89fbb3d0bafaaa14e2c08579490bab86ade801c8ab17b8f1e2263c7fee747a37d1a42756e67501eb27cfd86102c94e73fcc6c5c65800af3045ade9b14015242af1bc12cc69eefad9be6204aaaea0edb1720a31a9acf7767c9f33d0337db8b5d3318ac7efa2c12e0a547a', 'category': 'Other', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3535.0, \"x\": 208.0}, \"hi\": {\"y\": 3604.0, \"x\": 269.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5180: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:bf865146cb8eb54c793683ebce4bd5e6:00110060\n",
- "Processing image 5180: timestamp=2024-02-08 19:01:46.863901+00:00, observationId=o1:bf865146cb8eb54c793683ebce4bd5e6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19506541887919107, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:bf865146cb8eb54c793683ebce4bd5e6:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:46.863901+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf865146cb8eb54c793683ebce4bd5e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=913dfb14c6c0a167009191af714cf1050d2e29ddd445b2ce214b738f264c4afd72112fa1ced6e5f08acab9e41069e313c318da8bf2ae79b5122c66a1b38daa2983eaf0f5895b2fefa7146806e72e615aaca508efe56cc45ea869911316d0785fcddffcad1d9dcaf8571f02d14bdfdb2371cee4ac6e057aae6184c36f1dcc09dc1b7f18d6a7c1c45192a7705c0e53383a8e4829844ac7edc09e9de7b60a7dff957e583018588f8f82adf791e7a53bf21cdfe17d8fcf46419def6be579d04b77748bedd0d1a39eedf3b9685c1f4b7baf0eda06f3ed31522fa3ca251a2175c8c750030a1d0c08eb351202b4ea90b5c8ec7cddf048dc4f8631676d4ac3ad2b100e8b', 'category': 'Other', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3424.0, \"x\": 1657.0}, \"hi\": {\"y\": 3462.0, \"x\": 1702.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5181: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060\n",
- "Processing image 5181: timestamp=2024-01-24 20:54:36.627319+00:00, observationId=o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text \\'JUNK CARS\\'. It\\'s not a standard traffic or regulatory road sign.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18021179107298335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-01-24T20:54:36.627319+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57e3a365e7f9ee432bfc0be3d811cc7b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16b9c435d748fd65711914b180b3308e098d9adbc3b45bb9fdeec3f6a6c91d26b8033a36f5356a376073e7df7d0db7bf8904622ae8b361d429ac00a1643651d5e27db637643f9d135a3481d22e895ec5760597b60d71969f285767014cf4cc4cb95d15fbc0256e03d59e197e049f1af1c4888f2e4eff025edc6949fb288de2f01ade820707bebdfea69743fdd8e669dc4fefa5a83543c7def9070a53828fdcf132eb16c61274c2ffd3c767c29cfb9a422f98822fd51b89a4a406113f3d13f4baba0578e1bae41513d736fc347f4104a667444e86dc3505ccbd126ef300697e2ab0b49ed21960bd37091094c5445308777708ed9b865c0de64324c2598867b809', 'category': 'Other', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3754.0, \"x\": 2258.0}, \"hi\": {\"y\": 3891.0, \"x\": 2345.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5182: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060\n",
- "Processing image 5182: timestamp=2024-02-08 19:01:47.595820+00:00, observationId=o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays a phone number (407-900-9979) and the words \\'JUNK CARS\\'. It appears to be an advertisement.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12950676243479659, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:47.595820+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addf6f3d24c5ef31edfa43f3211c1843c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=258b0be43a845e30e981e312c994950294bbab0472cac36c3e0b4e54ae8eed51ded4ceedcaad47fe35300e17a703f9d60b055e1aef97c32e2553aa7e75b4f57fabd57be871a03ac77a6e59a9f570c6879b49d577f8a739841cdd5e6b59432e8b9546b72f00fcd222eafab28d24113ba78afcbdab98d1f5d6fde9f2d622d32170231b5f046fd1b5228331d9c1b636f5294cf9fa8a0c6e0e328448a0167c8d1661dcce34844006687ab008b32bbb28f9e36e9e54317ac42e1a379caf663d0ca699e9f11ae7d95f94dead2251e49e39c794a0115e417a5fcc879da0f6a74c182cb8d21ac8354185ac9b960867fc2a3601e3389ee8735e716a973abcb583878fa118', 'category': 'Other', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2642.0, \"x\": 3187.0}, \"hi\": {\"y\": 2711.0, \"x\": 3245.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5183: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:93522cb9edf7ea31e2a42fa50eefd841:00110060\n",
- "Processing image 5183: timestamp=2024-02-08 19:01:46.491891+00:00, observationId=o1:93522cb9edf7ea31e2a42fa50eefd841:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \\\\\"Bartow\\\\\" on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3437615966796875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:93522cb9edf7ea31e2a42fa50eefd841:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:46.491891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A93522cb9edf7ea31e2a42fa50eefd841%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81e1c513e79eb813e911a07cda8d3ef74234bac31c04aeaa077a379fb67ff7b21b9352d486134a0ccf8417caa079f8b44ac0bdb3978e525993e929435c24858d82e68e74f35153d4e476bc4ef4272ea95188c86c278127aee7c5ad88431a25544a9554304179453b2378071ad6a60facf36057d7f8118de035927cb787116044c68cf66668bff4f59339714dbc5256908b8fff946c60be07317c0e31db508f62f8754844fec2c7a7aeb5cbb6b568b80a0a5c19e901f0cb521320f207dad48966063a9d442beae22c13bd39d82da6e1336bc40a7cb746f790ad8a23798c0fa1d94ccfade17d864d72fb274480bcacfa64f4378442a8d910d3a7e42306d97597aa', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3379.0, \"x\": 2020.0}, \"hi\": {\"y\": 3404.0, \"x\": 2059.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5184: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060\n",
- "Processing image 5184: timestamp=2022-06-30 16:01:07.276095+00:00, observationId=o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25440833568572996, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=3073, total_token_count=3153) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-06-30T16:01:07.276095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48a4dd6e6b4d895a3a94ae18e7d8903b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c2343cf070a9c678ba5695aebf82d5c2381bd057a069b71574cd9a1078acc590f1b90a22e26db3f20b1753357c40a69feebec23ccec0aa1436f325582dae9359870301978f01d9d77405f0d0162f5204e0a247b67c1259458e9224fef2f8b3fb458f51d393946335495174119f5d92c4f05e3ed06e41d17d17ed3261e64d70e757a9d4592e97b5941a93b32352ce68b9233f35943cccf78c6e4710c5ada83cd1b41442f68e93d6af14225e40e52358d5230ae6edc065efa27b8302399be10a761bf909b5291934d2962fa794dc1e99047d8d1abd29f8095dbcb1dfe5cf55fc2e27a408184f5879aa80d4a114ff698a50c5417a4e71c1d026e54272004ca693f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3139.0, \"x\": 2780.0}, \"hi\": {\"y\": 3291.0, \"x\": 2931.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5185: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:3b349f6ca96152354f68f07a3708e8ae:00110060\n",
- "Processing image 5185: timestamp=2022-05-12 21:47:59.106258+00:00, observationId=o1:3b349f6ca96152354f68f07a3708e8ae:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21399870883213, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:3b349f6ca96152354f68f07a3708e8ae:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:47:59.106258+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b349f6ca96152354f68f07a3708e8ae%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=336bd779a24a69dcda0b7bf06ba4f4d9d9858bcbe1d137104a23cd9c59d9406161d7661acc86b987196b21c9cbe5ff4c406725c57b8601029213584f07a4f40e9c20fd0ad7e3cb1b6388b2c7fe3e2d7f760a5dd7516005c5d111be28b15d523bf1cf57b6df7554144168dd18b79a3fa629c9ac13c4b66ff03a0ad71ed34b862bd9155d97b7646159e0fc5380f2afc8160848f5b98654b33b93b5514271e0cb3776919ab3df5556017f8a6551e7ceb8db156844aabeef51c0531b2683008371a296d283a482d219367ff4ef34fa6aa9cf71e1dc565d2af9dad27c2f16d166c22e05d5fbca25bfbbffd64835edc1f598c383bb026480360dc04d1a66b44c05db72', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 1837.0}, \"hi\": {\"y\": 3266.0, \"x\": 1971.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5186: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060\n",
- "Processing image 5186: timestamp=2022-06-30 16:01:06.867965+00:00, observationId=o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4435486097014352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-06-30T16:01:06.867965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac43fa8bccba2b8d140ed3a08daf113b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87f6a607e3be25baec8bf3c67b9d39ff1250fddce088c1d807a101bb115215ea35ebc30a1326b691d05b35a21541e15624bc5786d96702d574a8d3bf7aa05840fa4188ec1831b0670a6fd6094d03c9b76641dea493ace3fa8d513f8090c61af85bf5c73005206f4b949e4c607841add602e822bc44476f93506d50c52fa7c7e5899702acb330603227b26f2b727cd1beb043965c36c337386e631517abf7c940db1a01e17ac4a9c74872c8793c0267a4d0439246baef231d8e3e74e64dfae68fca42ca1e14de4a749bbf1c809c6249526a7e8f0f8a16dc2ff85976785fcd6eb2bc0e6cd37be32f41991a226d435deb7c790b4c470bbd4cbf60295bb641b40500', 'category': 'Pedestrian Crossing', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3180.0, \"x\": 1971.0}, \"hi\": {\"y\": 3285.0, \"x\": 2114.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5187: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:267b14831b34743c23746f1e012467b1:00110060\n",
- "Processing image 5187: timestamp=2022-05-12 21:48:02.742147+00:00, observationId=o1:267b14831b34743c23746f1e012467b1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2139636448451451, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3073, total_token_count=3136) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:267b14831b34743c23746f1e012467b1:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:48:02.742147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A267b14831b34743c23746f1e012467b1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37080e46de8af7d00c2d82ae74eeb3283063cecee7362a84ac0324b70d780ec0da0a2fae252568483eb3d0cb1bcc6a0dbd75b23b219d12499460574453fc626895a29a4caace12c8eb33e44a13a64c66b01b479085b172e47de16939c03c7a0a6ab5497541c41389e7d4a8160a8d8e11a381086e37fdd1ecaf4cd8403a73445ed4487b1bdf23096c8c36d656fb66e6a6cd0791d254f67e72f21b5cdd2959de51d0c417b7b0fd4b1507890d07f4f0e5c396370cfb3d0581093ea7a08c33cedca60733b78f7752f8d10bfe6d9deeb571d98caca424c384069bb384ab0ae3786f2d3bce94c78153dbec726476a45b439e3c10afd4a5ad31744c7dfae4cda597a23c', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2189.0, \"x\": 923.0}, \"hi\": {\"y\": 2371.0, \"x\": 1014.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5188: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:15cca2a1909ade5a9db95eba570567b2:00110060\n",
- "Processing image 5188: timestamp=2022-05-12 21:48:00.998247+00:00, observationId=o1:15cca2a1909ade5a9db95eba570567b2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2646607912503756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:15cca2a1909ade5a9db95eba570567b2:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:48:00.998247+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15cca2a1909ade5a9db95eba570567b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=711ed93ff782aa37a08a2ce920355eea0b133579b9175976c9a8ba6d1991ecab86e00ae1335396f380948816515bb2cf712be8219a47555bdaaa57d8daa6c918be7196bb209b22da7eb21cf1aec3c87860470b8c65f9f41b5a1a240fc65263425672875bec7ea954b2aa9d5fae2c66d99d342d3c5e0d4e97935c10fb64513259f4577a522c21205539b797b51e2b875394c00a452f25ca55338ffe2ba697e53667ecec74872c8cd24f57a71b685256ddf7afde3ae389b78386d22525203fa0bfd1b0ffa4bd28875921d10c6990507f15a74b0fa2921ed752f27a72263ed6f138f3da9d042c4bc912defadb4581b1f5ec7b7e4977ab5a2e82bc7ffed6e170b99c', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 2529.0}, \"hi\": {\"y\": 3290.0, \"x\": 2685.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5189: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060\n",
- "Processing image 5189: timestamp=2024-02-12 17:15:21.925300+00:00, observationId=o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone with white stripes.\",\\n \"image_quality_notes\": \"Image quality is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23632809211467876, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=1525, total_token_count=1583) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:21.925300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae67d77dd92c29ac47d0b509ca1fa27f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=38b01b7195602dbf11ee1c23795a5345f93774c55b915af50f5a2041fc2868acc1a688dd8fe90e8c53a07a69552ab53e0814a34d45e78c19156819df45f13376a5ec8f0abcde20803043f0b0f9da163d8b65d1a0e00f6a59072ccc3284db6dfa2b6f94b3aeba89a0ec8ae055884dba199b8126fcd874ff58da65575e4d835779163463d6520d7dfc65f9f0514fedb0b69580f622ac0fbdeec41cfbb4753854978effb2a98c90712d334ce5b397e923ae5e1d8c1775a125b2c42b1d44ab8e1b541c0bc70592ef449d4d3f783432d104a5bd3329e96d39547390e2a612ed48b57637842b2fb49cae63831d2c2c55fcafcdb294002ac6b87dc76697722856f118ac', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2608.0, \"x\": 116.0}, \"hi\": {\"y\": 2825.0, \"x\": 191.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5190: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:c005ab2cae573aac327dcc5a9b718e3b:00110060\n",
- "Processing image 5190: timestamp=2024-02-12 16:47:38.714320+00:00, observationId=o1:c005ab2cae573aac327dcc5a9b718e3b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is not a road sign. It\\'s an orange and white cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1420904518901438, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:c005ab2cae573aac327dcc5a9b718e3b:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T16:47:38.714320+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac005ab2cae573aac327dcc5a9b718e3b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2789025d203a5e03d74fee9e5e27514c110cf71dd4817bdbe053fcc1721f4e2518373a6039c514a06e70c578d5df2bf7964992e18d897ee3d4d7837201d4b41103b1263a796095507e9cfc57cac7744e0bda8e44d4f9c87bdb7803f95cec60f56b08c638e448cdba6ab23f7a46501f1f135e0c8697f84ed70d9f9c75af0ccbd00215fa5ef0d29e152ccb04692487c28be77a0b7b4133aacda5c59540e6a142f78ab913e9dd6c824fe5c84763478b928e07d49d2523fd408a8bab26500f7bf8782f7cc88acf0bce62d3d1560c17ec31dc917f4357cf5defe18e6338977e7c4a5746010f1b0835ab0b927b69d4f6f9fe4ad5136506bae46a7ec9ea7825f56d296e', 'category': 'Other', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3468.0, \"x\": 2538.0}, \"hi\": {\"y\": 3643.0, \"x\": 2594.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5191: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:a7c8c5f47fe1f5012482600152db775d:00110060\n",
- "Processing image 5191: timestamp=2024-02-12 17:15:21.925300+00:00, observationId=o1:a7c8c5f47fe1f5012482600152db775d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.\",\\n \"image_quality_notes\": \"image is slightly blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4583869676911429, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=1525, total_token_count=1614) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry'}\n",
- "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:a7c8c5f47fe1f5012482600152db775d:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:21.925300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7c8c5f47fe1f5012482600152db775d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c843d509c3d319c7de857d693d578d6841f49df7c793761cd0d9c90e5dd9881724eba8646d533e9ec4c8027d1d3ae23c4c8c7e616cf5f7b75797555b56c1361db98cf67e65a36b2cc1b2a8fc3b9a42a82e2cc6dc7ab03087c78d7998a383a572e427bf9a1960a00e25a8f57153b3961cb967ebce242305a8e8533bd7485563309e3fc312bc6cbcd67c2d49ab85a764158c48fe890b0a0cc4085e716b27e5f4857df5ee51af5de02946eac9b415dcf9398248b28debe49cdc0fec7628a686e068fadb311cfc4ac1b981798ee673f42b82b5939bb2b193a8b609bbab27f711c9f904560a9d527c07dd6c385c32cda1c5013743aa267688bf71a746cd28044102d', 'category': 'Other', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3480.0, \"x\": 3127.0}, \"hi\": {\"y\": 3679.0, \"x\": 3194.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5192: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:29a4c4f743e22c7f957229c4edbd501e:00110060\n",
- "Processing image 5192: timestamp=2024-02-12 16:47:39.190492+00:00, observationId=o1:29a4c4f743e22c7f957229c4edbd501e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04667666175148704, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=493, total_token_count=548) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:29a4c4f743e22c7f957229c4edbd501e:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T16:47:39.190492+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29a4c4f743e22c7f957229c4edbd501e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090927Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=149c235996ed3bd93c850b8f952d69725310ddf4ac7d7354a7346357a19447989108192c3fee52a324a08839aa421368cd4f6a4454223a08e47a46f4fa1f400e399bda6ea08a970037a0f2d56dede6b40ac7fe48c7797eaa611a890fdf5db275a20fbf1596a2d487b829da11afc552e6bd6a478ecf3b5b848f78552c9fa02580a355cf69ea31eb39420317a22fc54cdec6c4ee7b1f80913ff3ed01a8752f43fdd78d50c76ef4dd4e18db0ce0fd6243f6ed245c8646f539bc97443e1942984965b1ceeefb5ae3890e0bbd2929171f858b8d7997ef42d99b8ae58d74f26cc9ae83dc4c74b39cd6fe9dc427687fdc8c3550c311a5557c0909ab9a0709ce24e29b2e', 'category': 'Other', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3434.0, \"x\": 1976.0}, \"hi\": {\"y\": 3572.0, \"x\": 2025.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5193: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:5ce671322eba09afb306a4f6dc8adb1a:00110060\n",
- "Processing image 5193: timestamp=2024-02-12 17:15:22.352273+00:00, observationId=o1:5ce671322eba09afb306a4f6dc8adb1a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone with white reflective stripes is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07373153117665074, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:5ce671322eba09afb306a4f6dc8adb1a:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:22.352273+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5ce671322eba09afb306a4f6dc8adb1a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=30ce1ef2bc747efac8d50f34ed2032e860304c2c7bc3a946494a6c9b8d85cd5ce109c182b3532181065dacd31d12d3e3558bb9bf736e536116cc22b2567a6be415875c0408c7bb460f3218a39d2fcc671033078dec9cc4be7e8e72b54af6b8fe54371cf205f8ca76c9f2fc3d4809d2007b542af50602c8962add32881250475c8f0d34f0bf6c87620928ce9e2e546235b218974d80373c2fea669f71c5c328c35fdf9633b20cc9d1709add90f2b21f5074dfac3ef414043677e9e21af1b5fb7a8fa158724bcb497ec002278f4f2b1c160e03012bd31e0e94c80174e41036273b58b266061dfbcafa97ffdcd6b211112733186253fa53bdb35a489f4dd8ce55fb', 'category': 'Other', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3459.0, \"x\": 2391.0}, \"hi\": {\"y\": 3616.0, \"x\": 2441.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5194: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060\n",
- "Processing image 5194: timestamp=2018-07-18 18:07:20.734603+00:00, observationId=o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a \\\\\"No Parking\\\\\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.\",\\n \"image_quality_notes\": \"The image quality is fair. The signs are identifiable but not perfectly clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29482061821117733, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=1525, total_token_count=1639) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2018-07-18T18:07:20.734603+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A92e52ddd429ee1d4d6b33ae511a66ee7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67d7b023bebf4143d69312250b4b8c63ca6dfccd7ec4d85ee8c60ef34457c25ad80196eec97b67fb247091efd041ca6a80c0e234fde38866c67e36c0e661a5b667ab05250d5b47df79fe42dbb9eacdb604bd2008e4a8e97c4396be5f6c90b4b891ea67d39ef787537ff20bbce40cdc576223404a3b4007eada2afc4bc336029455490e94c3eb6bc446f3bc9ab27f8e9eded66e51013461991d146128c699d95ce023041b50b3a1fdce35202568034229bb54feb9fa5344bac03fd7b513d4cf2a9ccc64bd986fbfdfa1cc212b4436986d3f06aeedb091f9c1dfe37146045d1319db4a2c46e14adc7b6078dab3f65640aa6102b271861b1e36681e6a83039e7328', 'category': 'No Parking', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2408.0, \"x\": 368.0}, \"hi\": {\"y\": 2528.0, \"x\": 449.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5195: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:2634872017200c4b6a705fcbc27c6204:00110060\n",
- "Processing image 5195: timestamp=2018-07-18 18:07:20.734603+00:00, observationId=o1:2634872017200c4b6a705fcbc27c6204:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows parking restrictions. It includes a sign with the letter R crossed out with an arrow, a \\'2 HR Parking 8:00 AM to 6:00 PM\\' sign with an arrow and a \\'45 degree parking\\' sign. It appears to regulate parking in the area.\",\\n \"image_quality_notes\": \"The Image quality is good.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4074197373948656, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=2557, total_token_count=2668) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)'}\n",
- " Error classifying image 5195: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)\n",
- "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:2634872017200c4b6a705fcbc27c6204:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2018-07-18T18:07:20.734603+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2634872017200c4b6a705fcbc27c6204%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=498c72fd45299e9572ce2dc09141cc49f46bb37093e15042001d8fb51e0b47b870868f4814537178fed9999b1d4a6bc1cabc0a1cb331abb4de96edb4066bc1ff48e76c20ac948c037c8c35072bc4fca63faa918b48941e6f2a1ced4118d4a6f10f2864880628816573356565f6cb9502cc6202321e2844bb95c6c25f03412b49c1325832731f72efa6e58b98471be21abeead3bd3b73c9d45fead487c6bf39b4795924b98c6cc25eb225a50ebaf4adc3fec3b9c17456148e5da46f63a6f1d49b44a4abec8f68c7533ebf211bd2e0bf3b0274969a46f614ffbcab0b88451d40c83e23ee717b6a3bade067b40fc4bc39a14659c325d9203b896a500fa2d4769d6a', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 161.0, \"x\": 361.0}, \"hi\": {\"y\": 284.0, \"x\": 443.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5196: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060\n",
- "Processing image 5196: timestamp=2022-10-07 20:20:52.849046+00:00, observationId=o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, \\'no parking\\' but is partially obscured.\",\\n \"image_quality_notes\": \"The image is clear enough to identify the parking restrictions and the general condition of the signs.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.549670620241027, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=138, prompt_token_count=2557, total_token_count=2695) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:52.849046+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8f9906ce3d32c0d538e7ef16ea225d21%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab42d1ed5d2117d93deede04a760bd59a35996bd05495431025331219487137af5021aeff1e13720b0a8c18fd26000a1123b80229c315c34b540f8f3d9123220e116138f21cf6a99232d83b597efa2f4ae4d991332aa5e421d9373a810c09f1fdde169f479bb08acbe825dc781fe3387037841ed263b7fc424b592ad9d3fc49e70d6e2f0fca827462846f5f7759ab10feb9329ebeb7f3725ec9e73fe82ac7228b0b8c67e3b43bef00f54ad1511cbdca3d1cd62b34196469b2c29e6ea5a29679b4d2782aabbef2491e47ceb552bc5039ff267f4602cfb0fe648aff8d41191d7d540f098d04362b2d5305210b7dcc5002d0b824522f6f905a7831f903cada05922', 'category': 'No Parking', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2183.0, \"x\": 299.0}, \"hi\": {\"y\": 2328.0, \"x\": 392.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5197: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060\n",
- "Processing image 5197: timestamp=2022-10-07 20:20:53.737039+00:00, observationId=o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5412735205430251, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=3073, total_token_count=3177) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:53.737039+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7cc60ea5b4ac76e4a76792a40e69b40%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9851600ef9906163c0f07fdd88246339b0a8d5125f09169cdf7f4d6497888d5822ca6316f4ed409664e19feb232ae04624857f063d0e79021d310f9c8512418c6d63d65b6dcd0948b65cb41884219a933b4e88b45d40bf3b3df19dada614c4ba9e671ec07ae72e0f5b44675cd0703ea7bcb04c0194d5f896dc1a982eb17b6c31ecc2c36be36101bf18adefc412ebcc187ef241a4a63a2e9ea5a0205936553437103eccbd76b96d99b9213957c048e0322ea1500a34f16ba80077a8c1d0fa9fb883bb3ac99d6638c2b5e9b27fcd765063b1bdd9e3e631c8ee86aaf5c7684ab4c1b2bf8f37c6079d3d47a1581c3569974bf01e18e8ce3416148eacc50472a1aea1', 'category': 'No Parking', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2122.0, \"x\": 1756.0}, \"hi\": {\"y\": 2281.0, \"x\": 1847.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5198: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:4983991b5a700ed6edb20aaf265b784e:00110060\n",
- "Processing image 5198: timestamp=2022-10-07 20:20:52.849046+00:00, observationId=o1:4983991b5a700ed6edb20aaf265b784e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an \\'Angle Parking\\' sign with a right-pointing arrow. A yellow \\'No Parking\\' sign is also affixed lower on the sign post.\",\\n \"image_quality_notes\": \"The image quality is acceptable but somewhat distant, making some details less clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44464330155720083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=129, prompt_token_count=2557, total_token_count=2686) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:4983991b5a700ed6edb20aaf265b784e:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:52.849046+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4983991b5a700ed6edb20aaf265b784e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=806076a0bf39460c3f806ecb7ce0529bbcb2c4bc37a6cab060f1beb0e8c26420dcdfb00393873a323d0a2ab1d15fd56351d3c5019bea174f99f977d8f08df7c35b879d6f1540da6af7ddbf41c6a2f17ceec68ec8d718c7f51d1eb0c33a887688ed89d170b5c0beb8aad0d7a90a28295bcca0c35f0ba0b363d4c46231c501a6ef9cef9f2a3ffd2a705989921899e3a6701263a1c3172efef80975f094d9b166e32b87c9e15536a34219b553439c83e63af01406043098b049e2a4e0bc868911b14ab69a2bedc33eb3c04974bd2a6c821f39609eb94e8d6ec9d2a38d6c147778601dee9b79f15bfbf859878236806996e54eb98f47029a6ea77b45a1e8b1d2a85b', 'category': 'No Parking', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3064.0, \"x\": 3362.0}, \"hi\": {\"y\": 3213.0, \"x\": 3454.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5199: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:344c346ebc75498a7a5ddca4d5c02777:00110060\n",
- "Processing image 5199: timestamp=2024-01-09 20:03:29.056965+00:00, observationId=o1:344c346ebc75498a7a5ddca4d5c02777:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.\",\\n \"image_quality_notes\": \"The image quality is not good and pixelated.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23252979191866788, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:344c346ebc75498a7a5ddca4d5c02777:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:03:29.056965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A344c346ebc75498a7a5ddca4d5c02777%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8d91e58f604a141f48789a21817f842707e1465887c6668e866cf9a97887d3b2a4f78bc0b21bad1572a8cf31d158ee3664ec7de983dfe41b7f041872fde726f03ad6d5cf87030ffca25b837f7e334d05b09186b62c60e58b2356a0af325fb6f5a46b9d70ba901c30e955b63d03719d96384cc2c0c689de27eba713b8db5227dc3fac7321793ec82e95e879830e9aaadaaa50df1c60f7a99695750673993723df5382a06e5e33308fc10fa27d3d05d9f07799670c5a7a76d852128d5db32b9bc21212fece47db9321bb148df84c2846b436c76886c00c74a3a4512b1f653bf7d6514bc3f9bb3c0b7f154c2087789fc44d76685b3088687d65382c614ed6152fe9', 'category': 'Turn', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 3310.0}, \"hi\": {\"y\": 3275.0, \"x\": 3402.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5200: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:4c716b31a2519287d3e0bcf1547a6e5b:00110060\n",
- "Processing image 5200: timestamp=2011-04-26 18:20:40.226349+00:00, observationId=o1:4c716b31a2519287d3e0bcf1547a6e5b:00110060\n",
- " Error processing image 5200: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4c716b31a2519287d3e0bcf1547a6e5b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=21873a7efb4f742f0557ebec48f35ff33c8d843f296aba0cc0bc96df74cebf426d13079cc0d143ad9129178a63912e10dde3ce91474a32943a287ae5ebb1e1803b5497525f9afff6e9a2a036140f80c812232387a9bce36de1c3376a4c837b883be4ae23d7f15a00a8c18beed9b80e5e3c41ad17e8d6061600c0256f60139997b68a49c39226af0c165be672801370aebf562bbf72551180d7f9c3f47140bb8c9ffca565149ffa88155f59297a1db9ea6fd4bd252b8849a601bf3b115c733370a0d58bfe399bc2cf5eb78b01e9ae420013fb78094441b5521a4458039ccbcdd561d90dbd1ef099f6eb4a9d672679d6403914981df87a815a803a240e9df85df0\n",
- "Processing image 5201: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:b30cebd931fe2432c064c3a91e3d1f02:00110060\n",
- "Processing image 5201: timestamp=2024-01-09 20:04:37.315384+00:00, observationId=o1:b30cebd931fe2432c064c3a91e3d1f02:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains two signs, a diamond-shaped warning sign with no visible symbol and a rectangular sign with a right-pointing arrow. It indicates a turn ahead.\",\\n \"image_quality_notes\": \"The image quality is poor, with a lot of noise, which makes it difficult to discern details.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5054343374151933, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2041, total_token_count=2136) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)'}\n",
- " Error classifying image 5201: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)\n",
- "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:b30cebd931fe2432c064c3a91e3d1f02:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:04:37.315384+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab30cebd931fe2432c064c3a91e3d1f02%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b0454087df985ef7eca23183081e76243aad5137fa9a7c0edebf24caafce2aad36859f309680bf04a6b67a89951fa0828aac41d4729eabb38ed88bd3a27226617ab31dbd4cb87586ff8205090ff9041b592a93966e8eeba532a9f59d8a5866dfeeccf4764c62d230a8a8bcdba9fb45647e23f70039e9c35e8d4df0367a334c3d284a8f797b5eacdfd95cf6f9b1eb053486e74bc48f5cd18d1b8e051c737a747ff367e4f33a54678d325dd2b4603912f03bfe0cebfd2b076c412f4b6f9adbabb9d66137c49608b6fbcb96c95485ac6ffa972c9eebb092b3e81a6c2fbcf0aad1bdd6fc95cb1a59769742def7d56956c8bc7392ed60e83a275973723a3ac9dbb3e4', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 413.0}, \"hi\": {\"y\": 3309.0, \"x\": 520.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5202: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:48aa4c2707e6a5314e1f09298e7e187c:00110060\n",
- "Processing image 5202: timestamp=2019-11-06 13:29:20.841940+00:00, observationId=o1:48aa4c2707e6a5314e1f09298e7e187c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4181005327325118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:48aa4c2707e6a5314e1f09298e7e187c:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2019-11-06T13:29:20.841940+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48aa4c2707e6a5314e1f09298e7e187c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=974908092f1642998450ef88d089918b6552292bd0b36cd76531e37f1740d2c790c5e7ec5c30cbe353c338f9fd42dacae0b00f58438feb7d888b43077358cf6ab2386432ee5da04b4661eba8172d9283de85bb6839296c11b8eec423538d8f8dee4e44f3dec48ae67a46065a53005e6f62fc961c97bc927bd900a888bfadd4642458bcaeb8b69023941b55c602120fc5ac8578eb8189a591d0aada72eb910d9dcb31eb18a66bb944d12b33bf7b7c16347c0efa1a3a48c4c25b6e135146cdf4c66da3658914dbd1d62a0f8a927b006edebe8e2008c4e06fe77ae353cb82e39ea3a5750684476223eac7bbd3262261fe8c70aec18a691b28fa5e38872b8920fc1c', 'category': 'Turn', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2155.0, \"x\": 772.0}, \"hi\": {\"y\": 2196.0, \"x\": 815.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5203: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:f061414cc631b254b1b8410ad87b5060:00110060\n",
- "Processing image 5203: timestamp=2024-01-09 20:04:39.243473+00:00, observationId=o1:f061414cc631b254b1b8410ad87b5060:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it\\'s hard to determine the exact type and condition of the sign.\",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to accurately assess the sign\\'s condition and details.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5751933357932351, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=110, prompt_token_count=1525, total_token_count=1635) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\"}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\"}\n",
- "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:f061414cc631b254b1b8410ad87b5060:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:04:39.243473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af061414cc631b254b1b8410ad87b5060%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bb2d9eeb630ffbd95cb1e274962dec0ca96c29546d2cf653a2e91ba0b9f9687d9295f94b57b6f04e9d846e76a16e468a9694c78080ef7adbbb6d316333a4ebe6f87a041eea20962600bcb7e81f1519caa0c763eb9c0e519a32762cf143fd0a3e4d866e99815b038ef2adc5367fab91b119166b665c279a9b9e43d7eb39064585feabb77f871834ba559ad72feae3697e3941c6d1ab71e4a24627acef70f3d9fb68a3abc9d1158295e1ddc208eaae147724abcd774a345977e9275824e2facb7074bad7deefaef0bb962f0236a9d24099d192c3bdf3a00ee4f76c500abecfd6d04b3b580460a7900e7bcb5d168b9cb7dd1bf3443511688dbb44fbdec1dbb6d6a5', 'category': 'Turn', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 524.0}, \"hi\": {\"y\": 3265.0, \"x\": 588.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5204: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:cd12573198adecdc16628f71204b7a91:00110060\n",
- "Processing image 5204: timestamp=2023-12-27 20:36:10.395093+00:00, observationId=o1:cd12573198adecdc16628f71204b7a91:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09211764570142401, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:cd12573198adecdc16628f71204b7a91:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.395093+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd12573198adecdc16628f71204b7a91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b03da903e9ec94d84baf346df6d76f73b621aa59237952ef4600b31079ff1d2e1919e12b06ed00884415e0c5be1a859bd4e5d2d34b84433befc9b6425121a5186b97dbb0725855e32c7a10f087298f298570a0270e6096ef4d4e0d352d3b06ace4adf21e6db368fe907f8e304be7e52aa76a38ce033b9dda32498086cd3cf3b5fe462a0ddb7af3943adb471acd82cbad20650a0b54b87c41ce8b02779b71fe7e4d8c234f9bbeb7bfb8950d8d1f21517a9c5c9620b1c976901fd674d4694df79bd0f953e36d1e43c5b23e359571184e251de1c9ccc1b2a7947387791157236f25dde62d3a2a1e623d81944b07765f7370d85db27f0962fe8d815b6d08bb3123a2', 'category': 'Other', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3026.0, \"x\": 1906.0}, \"hi\": {\"y\": 3224.0, \"x\": 2120.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5205: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060\n",
- "Processing image 5205: timestamp=2023-12-27 20:36:10.695194+00:00, observationId=o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white square sign that reads \\\\\"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12022345716303046, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=2557, total_token_count=2623) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.695194+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebd05bb89d4a3ce66014da3cac0ca22c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e2b90b0720715cac8a976b0436352384beae0f0a7b42e064be1174ffc9911592ea73a878939c1cb8b2802e0c3101ccfe004d1b1de4fe0ffd4d32aed3c7baba16f97080cb133364869ae01174b01c936d1620400941fead05580f85999989e96329824ab66070bfc7102946e49f6488cdc307e6264c32f550a8193a945bb3b4e1a7134d04cd223b8885934e9a06db8bd8428fe904294695fd13a1e79e3a5c2e7e023e024f9330e395ef313aa0222fdc7808ff41b54e84ddefd53fea67b85c548251ff1714dc99be8be29c079281f3a2872fc96c2e24167b554d2b30905d7087ddf05b77eb622db993765ccd7649ce389169a64d9486382170e7f6a04cb2384bb', 'category': 'Other', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2893.0, \"x\": 2763.0}, \"hi\": {\"y\": 3175.0, \"x\": 2978.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5206: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:63e54342e965d8a00337a67cf82797e4:00110060\n",
- "Processing image 5206: timestamp=2023-12-27 20:36:10.095182+00:00, observationId=o1:63e54342e965d8a00337a67cf82797e4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign states \\'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\'. It is a rectangular sign with black text on a white background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11048652030326225, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:63e54342e965d8a00337a67cf82797e4:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.095182+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A63e54342e965d8a00337a67cf82797e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c49df346407a7e9bd645af3152077d21b0f2cd96f1c378cf8fef4a0cb1aae736e3708b10c639004e09cc76e5bf3d48252f156b0f87d178e12f5b0116382bd68795c7af6ecc55f8a27562eaa1fd4711d7aae733780c473543874b70225e41373f1d7a700e464ddf4dc6192d7b59a320a2e156a884d992cf117da8681bcf4a1f5480fbf38c607ba0668a92de94afab5ee5a4479df7ad3c803078ca2517f46e3373da24ce09a0bf941519d4347c8a12ad866d545bb91b6377ea00c737d54301845d6693104d2fcc57d595e6bd9404264ca5c11f4d788536f7ed9f5d5d54e01400a505593047f1d96ee3955626f2a867505a0122659ce84542d074b9ab5c5d5764d', 'category': 'Other', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3086.0, \"x\": 1455.0}, \"hi\": {\"y\": 3238.0, \"x\": 1639.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5207: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:c4064be1b224618bc78d60b1dfcda81e:00110060\n",
- "Processing image 5207: timestamp=2024-02-12 21:39:19.256204+00:00, observationId=o1:c4064be1b224618bc78d60b1dfcda81e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09265700463325746, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=1525, total_token_count=1587) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:c4064be1b224618bc78d60b1dfcda81e:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2024-02-12T21:39:19.256204+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac4064be1b224618bc78d60b1dfcda81e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abeb54fe7151b3912578c652659866fa743e953f6527cd867ebca740de4fb2a43e17b14c47f384612d78fba003dc96c47b326ecd7dcf450f05194c930f144333a3092959319135c7f6f1f0e4b67c98c448823131a91ce74235f1d7cf379c852801b9516ef550d6f6e3372445fc88987ef4798afb597daa06c9ef483d088ec14b675caf1220777e55b644f8ff3160e3559512b63025cd2374f086bc10b2c9694dccfe910dda507f26e256cf56f294a949072137a56550e120f79e4b8302c18e4ff6a5639da7cd0e357b9830c92401093caa6cd6528e68d60c5f275611d04223bc5a58d48e60c23c2c2f2173b3de9f5b7eb52728421eeaa12e600e70347fbed90c', 'category': 'Other', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2971.0, \"x\": 2116.0}, \"hi\": {\"y\": 3202.0, \"x\": 2322.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5208: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:6893d7ee38dd7d30112a610636c2fe00:00110060\n",
- "Processing image 5208: timestamp=2024-02-12 21:39:18.956184+00:00, observationId=o1:6893d7ee38dd7d30112a610636c2fe00:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that speeding fines are doubled when workers are present.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.037175788717754815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:6893d7ee38dd7d30112a610636c2fe00:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2024-02-12T21:39:18.956184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6893d7ee38dd7d30112a610636c2fe00%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ed335ca3578443d8d73fe4b6dd44f673ca93fdd103fe069146cffa9f6b97b6388ef1f3216c7136b9ed531971b53021b9716f95850cda7b9f14e32869a921657727358ef844b1bfe67bdbc7c226aaef6cfab01adbb230294dbfdf09a9d1ca54d3a299d0fcbcef8630370960ff64a2d5826e6ee2add69b53f84e012681072fba4bdf25f3b4d464a098c6aaea71401684328f0f801744f0b4ff6598f7be5101dda48ef32a864b8f2d10906b866834aeb8a9b03f533b29c55d6d78755aaf7e6229e9d96e061c48032b23a5d2fbd756a4d6ed91a298c8be19bc7ba4e2925f18d3e07f1f78b7eab4e5f2a8d3aeb3f4dd7ca81f1a82f58731e2506dbe8ab22392351d6', 'category': 'Other', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3061.0, \"x\": 1440.0}, \"hi\": {\"y\": 3219.0, \"x\": 1616.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5209: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060\n",
- "Processing image 5209: timestamp=2021-11-05 18:49:51.952800+00:00, observationId=o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.\",\\n \"image_quality_notes\": \"The image is somewhat blurry and distant, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1601943079630534, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2021-11-05T18:49:51.952800+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af43a1f24b410fadeeef83bdd5ece3bf6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=740ad2bbaceccc18eb47d5994d072eedc583a23e618079cd1e6152e0987d60bb5a26fa137aa7bc21eb4dafab7b9b4b9e3391f9294cf9b10be455ece75515737b794b8ddd0b89fc14fbe1c001805feae02da75d737d2dba997d3da6f8a9ad622843e5ab468c26b8d14fa128977ba291c8769785dfa9a3483cb308122b838b68fd27b204dfb5446fac20bc1d6c9e664d5ae243f28f9d262c747b4a585f9cae7ead821cda647f9bdd42fa94cae133db4a46d4211bc578572a75f0208bf2e2eda4aae9dab694a91c29222c3d4e699093517dfbbd1590c13f8102817a99609495fae79a91b2a931f551ef27368dcccd50c18f4f96ffcd7ff7f92340f61e69c5f24c84', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3093.0, \"x\": 3382.0}, \"hi\": {\"y\": 3134.0, \"x\": 3418.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5210: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:e9f9021464b63f62898b78c5ad90ea36:00110060\n",
- "Processing image 5210: timestamp=2022-11-21 21:17:56.630841+00:00, observationId=o1:e9f9021464b63f62898b78c5ad90ea36:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details\",\\n \"image_quality_notes\": \"The image quality is poor, the sign appears blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7193431211321542, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry'}\n",
- "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:e9f9021464b63f62898b78c5ad90ea36:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2022-11-21T21:17:56.630841+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae9f9021464b63f62898b78c5ad90ea36%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15882177684734a088ea33fc8a256f4a49f366ff60326dd1e82f6b3178a54b4c5dd24be8d7f04ccbac14bfd09043be8e8985350fb9333d6ea55188be6b5027852af8ec064a977273be987fcb21cf783c6b3968bb7df66907fa571c710c6fcbe0d627c2c76716fe5f124b0473157bfe61aea3f78a9e9b6b730ffe57722c6e6cba34d86daa303e8444dd1651382c5b3bba807bb2e1968ba2a4a96a3f6d3a6b869e4e2901960d77928a7c54836fa51e2d2d79667047f97205e7d5a7eaf8090cfbd7209fb3e17b6444689438387ceff56375fe1bb70e2814bf58a0848f308ebc24c27eceb6ebb496ec8907ce9a04cacc0c9fa39d0ff8ffc5b59baa960af1f0a0afbb', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 775.0}, \"hi\": {\"y\": 3198.0, \"x\": 820.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5211: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:e07667fc235beb4ff0cb41949e10425a:00110060\n",
- "Processing image 5211: timestamp=2021-10-18 21:31:26.427770+00:00, observationId=o1:e07667fc235beb4ff0cb41949e10425a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22944986624795882, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:e07667fc235beb4ff0cb41949e10425a:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2021-10-18T21:31:26.427770+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae07667fc235beb4ff0cb41949e10425a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6cacc9e823f51d47082534d1ecc2b5a75446187b022fc7e77aa20f385c5726dce9572f9619c39ae8b8321bb700ee8487e77b8919b8c593d6c440e1b4ff1f8cc6353e50265b7bafbca5ec66ccefaf15c850e271a28b15915725d4b70f0402d0d9e2a2d8e42669c17f0966b6724eb229ae0cc2524b63990aec3fa1d67272c4f34391969d2512ff79b0176e21dfc6091c8c5520c3b038c3d364bbc083097b89989a290d5a502fd3cde9fa605928afd332246ec61d1206e8018699991b1481eb4e6a56129fede1e645d0eb984d8fc3a0fa0cab1e0b0b584c743b678192d8150eb40664a59b9381bc081a251d39d6fbf655277c4f77ff46eeb792e913b7b38076ea18', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2214.0, \"x\": 308.0}, \"hi\": {\"y\": 2250.0, \"x\": 343.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5212: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:1d737981e2b05d0a008c34713dbee3cf:00110060\n",
- "Processing image 5212: timestamp=2022-07-07 21:38:48.221519+00:00, observationId=o1:1d737981e2b05d0a008c34713dbee3cf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.\",\\n \"image_quality_notes\": \"The image is slightly blurry, making it difficult to see the sign clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3948891886164633, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:1d737981e2b05d0a008c34713dbee3cf:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2022-07-07T21:38:48.221519+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d737981e2b05d0a008c34713dbee3cf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=488dcdbe211f8346d9e2f8fa0c1db05b03d1599034f4d032495592c4d546df6152cf669ead66658f3666905c2df5e6c92ef58c0e5370c4fd1a800d527541185352716770c4badc9c5e592e325f8e367dff32fbdfec74a35814c4cc99250bec7321c605920e28258e13d235aa171af4751d9437fbd4a57a03a3b6ee24a40624d0218cfed879a7d9db3cf5f30b9a5e976457774764b3e5aacbe83367a1f318c44e8e6ff7a113b701d7fc08ba3fc82f8556d465d5181c9eb9e4cf0e2b8f7008ffde083ddb5142843f815394c2709ff217e1239656c1a8cb205e03468d901761d353e0f0c501416d653b8a8c72f94575b23e61671acd81e28630426f314ad5797544', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3176.0, \"x\": 824.0}, \"hi\": {\"y\": 3218.0, \"x\": 854.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5213: trackId=t1:02ee3215339e635a3f4d9cdd086fb043:ffff005f, observationId=o1:d919e8f23f029957a08a987285a2f1ee:00110060\n",
- "Processing image 5213: timestamp=2019-01-24 19:52:33.048395+00:00, observationId=o1:d919e8f23f029957a08a987285a2f1ee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'PRIVATE PROPERTY NO TRESPASSING\\'. This does not fall into the standard traffic or regulatory signs.\",\\n \"image_quality_notes\": \"The image quality is slightly blurry, but the sign\\'s text is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36760218550519247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=493, total_token_count=575) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\"}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\"}\n",
- "image_report to be inserted: {'trackId': 't1:02ee3215339e635a3f4d9cdd086fb043:ffff005f', 'observationId': 'o1:d919e8f23f029957a08a987285a2f1ee:00110060', 'geographic_point': 'POINT(-81.9942090344183 28.0422911751058)', 'mapsURL': 'https://maps.google.com/?q=28.042291,-81.994209', 'captureTimestamp': '2019-01-24T19:52:33.048395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad919e8f23f029957a08a987285a2f1ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d544dae1869e5ddb478d48d92eb394f964ec889bf821343f13928825ba033ea3ac25b9f9d987da75af71e32808d98f11799b971a34b6d779fbd7a7375809974eba01a5ae89e0563e3a015d2dabaa6ecb81d55ce7cf7e55ef1d96e1b360982bf3e499b8e2e02b2ff768f83b4cdadcf25c452feb8a40f48e6e041a0de21a22f8f3615d8025c784540c5716a610eac4d347623a254116a6a9e85344dcea1168156078adb0b4c799178ae826f3f124b10c9b36197bb36ee1ea14a6ca9d360116fec00c131759bc478f963b2964b5d1dc7e65c56715ec7de20a53f1a684fbcc007c3eaf39e1430b016547a6e80bf7ba8706976667d8c8c0a161b7b50f142bb25a260', 'category': 'Other', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3256.0, \"x\": 3553.0}, \"hi\": {\"y\": 3301.0, \"x\": 3603.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5214: trackId=t1:02ee3215339e635a3f4d9cdd086fb043:ffff005f, observationId=o1:925fc2fd915ef39f56823b2900be1caa:00110060\n",
- "Processing image 5214: timestamp=2019-01-24 19:52:33.048395+00:00, observationId=o1:925fc2fd915ef39f56823b2900be1caa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'PRIVATE PROPERTY NO TRESPASSING\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.056853947968318545, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ee3215339e635a3f4d9cdd086fb043:ffff005f', 'observationId': 'o1:925fc2fd915ef39f56823b2900be1caa:00110060', 'geographic_point': 'POINT(-81.9942090344183 28.0422911751058)', 'mapsURL': 'https://maps.google.com/?q=28.042291,-81.994209', 'captureTimestamp': '2019-01-24T19:52:33.048395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A925fc2fd915ef39f56823b2900be1caa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d71a9aaaef9ba93dead4d6d6050f59f52852b65ca2326e08d80f483548abf5d0740708cefe61ce1e406a80dbb4831f71ef516d3c6805224d8114e346274b3a6274ca0ae14716af9926a6696ec83609b96a49936f07fad00be1e43eed851340a118b67b9044e5b2cf41f2fcd60fd002d6b7a183bce49395bda2fa33666e658def22c8e1e1ab832d60e617a1251ab5a37922fd32c46fdfdf3c3841036fa47a95f83dfc0062e1f4197f3f4aa9c84a46f0fb0ee2ce4b1f04f9e5c0ed95a5db96369042ba5ebe852e359d354180005b17a94918d5c04cae56149314f4f24ffb71b14f3f1638d23a31bf0a79d3bc72097da8020f21ae4984ef273c0faa9e77b850ae0', 'category': 'Other', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2368.0, \"x\": 472.0}, \"hi\": {\"y\": 2412.0, \"x\": 521.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5215: trackId=t1:02eee0c305c4ff733d6606593e653116:ffff005f, observationId=o1:edf32b62ff531fb87ee97363e2545098:00110060\n",
- "Processing image 5215: timestamp=2019-02-14 18:07:05.589126+00:00, observationId=o1:edf32b62ff531fb87ee97363e2545098:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign with white text is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09702635633534398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=2557, total_token_count=2615) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eee0c305c4ff733d6606593e653116:ffff005f', 'observationId': 'o1:edf32b62ff531fb87ee97363e2545098:00110060', 'geographic_point': 'POINT(-81.9810005484937 28.0318006419488)', 'mapsURL': 'https://maps.google.com/?q=28.031801,-81.981001', 'captureTimestamp': '2019-02-14T18:07:05.589126+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedf32b62ff531fb87ee97363e2545098%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4d61e1b68ffbb0a2d024e3db966630a1b12dc2d52160c72ee6d1c2f12400d482958ba982c0ba6c305effecb62a6645ecb1e9b3a8faaf352a549e076e02c23399201c968701170df4e43bf81646d69814813c6ccd3e8f186397fb7506699f49761cd039b1e46ae713bb7aafc33dfc02732fbd871d98ca998e8cf39435903332e304faef1f227013b3a1eefc1e498678638fd3e5ec5ddff2199aec87d9c58d8b852da066bd8afde70f067aa5846fe3996588570418294708377b1c551863bed7a142b9b088ea6baba2a5bce0046ece41ff965d28fefb95a2299ab7522ffc02412f4196629d193514191bcbfde64f00b99af5e12742d1ba69e64b23e1f13050375', 'category': 'Stop', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3652.0, \"x\": 1922.0}, \"hi\": {\"y\": 3870.0, \"x\": 2127.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5216: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:a9947c639b97de252ef2b931bfbeede2:00110060\n",
- "Processing image 5216: timestamp=2022-10-07 20:14:34.858857+00:00, observationId=o1:a9947c639b97de252ef2b931bfbeede2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40403797751978826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:a9947c639b97de252ef2b931bfbeede2:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:34.858857+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa9947c639b97de252ef2b931bfbeede2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37dd3b28c16a902443d896a38599512025a9d5e56be50b0379f88f491cf4559f9c868fa6ed37a69575d01c4b843b4316f77ebd6cf6868755cca4092118e5d58a4c9fb14cc4f8acf3f915e4fc54371f43704397e68cdb12105d1e285e500be9aec6b326c6c1bbad1c20b5c91c4cf9a42d43a2ec47e402bd2d0c57ee9a0f54bd088591d0baf955e4dba7b53b8fc591c622d913ac16d04fda007736e18556e555dca49b27db831153af3174fdc263cbc5844b058abb7d9e53996f352b73e0219169596ed07e98811f9c4edd6cf769a2e2d4663b59d33d0f0fa9c8d82469e41b8512c3afafc529ac84ecf7a2dc6d98774674854bd5f48dace2e9f951d5cc0081e7d8', 'category': 'Other', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3558.0, \"x\": 2828.0}, \"hi\": {\"y\": 3810.0, \"x\": 2895.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5217: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:cc592c9d5020c33a246fac4e4bbffa63:00110060\n",
- "Processing image 5217: timestamp=2022-10-07 20:14:34.482895+00:00, observationId=o1:cc592c9d5020c33a246fac4e4bbffa63:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28851643315068, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:cc592c9d5020c33a246fac4e4bbffa63:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:34.482895+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc592c9d5020c33a246fac4e4bbffa63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08d598d009d5e5efe9501b753eaf95f85d5cbb5174371d42654e2772bb67528eedf4de0dafba64e656f54f541e2e4c02c21061a280c5b5ed300d5e868a3f4684d59da30e9278ddb6a98be8f65f0df5ae0f2e71d5ff6670e867cf1de027232eb3aa8ddf90f7841cf69c9901ceb7ceb0e562305f1f18c829941f836bb1c216c9d1514da31a724f2901db447523569a3077929773c8cd2eecddcb11438bc0b7900e2ba16e92f8e8b73deaa71de680c8bced89a099ef83754b4374e97c2e49f27d724a0551c74662771e08c27d5ddecaae27e598206c2209449e0a6a81aa11ba0910d678ce3efea58be664bc2279867f82d923bcf576bbbba0d2bfeca591b6208acf', 'category': 'Other', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 2999.0}, \"hi\": {\"y\": 3628.0, \"x\": 3048.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5218: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:1debcaa3595bde4ec31ee22802ec1144:00110060\n",
- "Processing image 5218: timestamp=2022-10-07 20:14:35.238897+00:00, observationId=o1:1debcaa3595bde4ec31ee22802ec1144:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2431772571720489, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:1debcaa3595bde4ec31ee22802ec1144:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:35.238897+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1debcaa3595bde4ec31ee22802ec1144%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b88b153ed232d13267c1b59235e7aa098f6822e1bc766ef37841ff1a8f63003796e2511e17d242940613d11c2a4ad860e8c4bb9012ad8d4a49ea20ab2eaaf91575de789ee6aba1c7e3673a4ad2a33b4c5db4ee2e94edde6cb86c1b7061d9f252f4aebc93b14b53bbaeb74268bfc4c27bade979b0f5437c92e434064d292839fe8b6bd17e032b7f8f0c3f2e0065aa956ea8a9d07af126a8b25fecb3a9ba2efb61a2df3665095db36f9b13f04ff4755ea9e5de01a80e055e220b95b572bfc77cff8fd3b761df93a62c8781e6a64823e74b0806762795c4e2d5541ab15169376af2dd67664a95c676e0e7375d10274678666af2261bb66ed48778a06652745ceea8', 'category': 'Other', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3746.0, \"x\": 2440.0}, \"hi\": {\"y\": 4145.0, \"x\": 2555.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5219: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:e3c1017711944aca5bff6950842cf49e:00110060\n",
- "Processing image 5219: timestamp=2022-10-07 20:14:33.362961+00:00, observationId=o1:e3c1017711944aca5bff6950842cf49e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn\\'t discernible from the image, but it\\'s related to road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4474792934599377, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:e3c1017711944aca5bff6950842cf49e:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:33.362961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae3c1017711944aca5bff6950842cf49e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=58078a6cb237b01fa9136b626e31a9fe385ae515a50da339675230c9aa18c8679a918757569ce6eda17366785037c70dc31a3a9828999d5008b1c73e31b24252201a79fd76f0b540f6203d8a51fa9214d50e48c32af5924a4ef8f81358856513885f3c12b28903210de5099fd3cab8c352160066752687671c3217c66355ebb78ae95adee85bc6d23355e6ed25a477b82f95e19f5953867d2d252c25949659a1f570d08d0406aa1e17ee08d010bda52fea3cf82e85e1bf747cf43ce9ca2a4595436149e650841d22f623506856ab987913d830ff912aca9d65754f3d59c33d4d0dab4a4725449f896597eb2ebaf8a3a7e73c95855e83309fa829e36653cfa7e9', 'category': 'Other', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3401.0, \"x\": 3083.0}, \"hi\": {\"y\": 3553.0, \"x\": 3130.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5220: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:b831e113ce4a6fcaaac51d91b893c4da:00110060\n",
- "Processing image 5220: timestamp=2022-10-07 20:14:35.622931+00:00, observationId=o1:b831e113ce4a6fcaaac51d91b893c4da:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn\\'t indicate any specific action.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44974526115085767, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:b831e113ce4a6fcaaac51d91b893c4da:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:35.622931+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab831e113ce4a6fcaaac51d91b893c4da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091517Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2831173b2511dccf35eab5dc9599c0cfcbf38624ab4c04013aa5b9b578215ddbcf659b687ba118412411799e38dae6d58f5c92e4c61d2ff0c6d9f88fc74dc8ac85fe29ae2d032c728423c7796ef19e21df0f398f7a63474536fd9416cd49f8fca41ed26262923bdeb70241d1a49e4ab62159b1e9ced3eb27126567a2f5915f25429202c906199fd01e7c6afccb4e7de1b137043d4f72e99a945dd42ecdcd534cf2adb30613143528f82dcc1ad7007a4360561b657b3173c435cae2a212850cc084ffa209843a3eb4d3a3829dda331a32b7b52ac6087d9800523e15f1ad63611714c1c6b419c1b9b4ed7ab41a47ca6f37851ad92315a775af33a02ed3a8bf464d', 'category': 'Other', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4348.0, \"x\": 1126.0}, \"hi\": {\"y\": 5123.0, \"x\": 1334.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5221: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:84aef3bcac5351ba10cf606fd75a073e:00110060\n",
- "Processing image 5221: timestamp=2016-06-04 16:53:16.099920+00:00, observationId=o1:84aef3bcac5351ba10cf606fd75a073e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"image is clear\",\\n \"Street names\": \"Plum st and N. Tennessee\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13376566292583078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'Street names': 'Plum st and N. Tennessee'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'Street names': 'Plum st and N. Tennessee'}\n",
- "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:84aef3bcac5351ba10cf606fd75a073e:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:16.099920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A84aef3bcac5351ba10cf606fd75a073e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b4c3e23aaf3f303e4b65482cf674e1fe6075cb299e4d6191ac1edc367e7e34c820902bff0da2ccd90bd6c317ccc19adec550a788338805f01fb351e0f8d481e4ac7a7d1930babcc7ddd28bdbf5e08748db691444c6e53b625cb35c2168c73d9ffc6cdcbed6730c96fa497ed8fdbfdd02023a9cf9f2b806f7c43484cbc155c0186e64982a4cb2b70f5727de25cc92b56b386488c33dd7ec13d7e83a153ede94d844eb076b5f517bef8db00411f115001ac878d645a3549ed59306f3674315f674922b9ab9a06da35e6a63220c5145e2931c532ac0660ec05ee0c23a3d74da24e27d06feaa3d3cc0dc27e389a05bdcea59eb69a2476ecd592eec9d5e928dd6488', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 641.0, \"x\": 1690.0}, \"hi\": {\"y\": 761.0, \"x\": 1867.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5222: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:43ab36d6496df4aaba6b89e923908fa3:00110060\n",
- "Processing image 5222: timestamp=2011-05-05 16:44:01.350244+00:00, observationId=o1:43ab36d6496df4aaba6b89e923908fa3:00110060\n",
- " Error processing image 5222: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43ab36d6496df4aaba6b89e923908fa3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=78f9785e75d721278841d239292b58acb61928c2deff8509c52faf733d71feb71f0d05cd9427057018ca20a97ba72c6fcfcfff4cdff38620651ddda75ea4a1d832bc3e1751615b7fa2292849f5a0ed4d6bd01c88f2c1da7764f81caa48b822305420477fcedf4f45a8d43c6df2c68683ecd34deb82b346dde58308dab4ea330546c7d017865371663ca41c23f52b688e2cd4dd349e4e6e7c76477b5fb603c0086eab8ae24906cb7bcd2235d36decca159a166a93f0b15b14ce22613d348d0ca260eccb15e6e13a0b92e071e548e656f5ecc177c7232887898056d9020a85c4debb053467d62bbad122dcd6c356885094f6335c9f21e8b8bc78a7a09c7d318cd8\n",
- "Processing image 5223: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:be752b5d3a12b44458d92c029757c319:00110060\n",
- "Processing image 5223: timestamp=2016-06-04 16:53:17.151401+00:00, observationId=o1:be752b5d3a12b44458d92c029757c319:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering that says STOP is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13573022748603195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:be752b5d3a12b44458d92c029757c319:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:17.151401+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abe752b5d3a12b44458d92c029757c319%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092429Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e36ca3c14c71f574606f36225a704732fbf9a1e31c9258d88444c82ff906a084007a4b4336ef7116796adb9746ef7eea14369e0d6c072a99a4967864e45fd7156bad47850f68ce15e937a179c71908476cfe816f07a037dc50a53e703c1fd5e183cdd2c6a848fbbac3b9a14c01bd750d1356ccfcb1a0c95b45b1c2dba2b3d82c501e9a96dda24e70fd5318fe46ad6a91feacb9587c0e6dd1a5dc5b3b9c98e5320a4e94b4d47c5e9f0ee2250d4a8078c289ac398d994b288caa2d1af313e2605f74150d3261d2e6d562503add09b22779790ff94f98a9c3d0b3117307ef6ef50c93f636bd9902305eb19112e446e9d0101c7a569f5adaa49756cc618bcebf5ac', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 696.0, \"x\": 491.0}, \"hi\": {\"y\": 763.0, \"x\": 773.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5224: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:86cec14112453cafeac97a56164c9b3d:00110060\n",
- "Processing image 5224: timestamp=2016-06-04 16:53:16.099920+00:00, observationId=o1:86cec14112453cafeac97a56164c9b3d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green sign with white text \\'200\\' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\",\\n \"image_quality_notes\": \"The image quality is fair.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.384410646226671, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2041, total_token_count=2131) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:86cec14112453cafeac97a56164c9b3d:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:16.099920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A86cec14112453cafeac97a56164c9b3d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c985798bba80f2cb773ccb0737246606f270029b8853d97cb23fa0bf8f2fb096672d0ddc33ed60b6a13236b863ff5d7a167bf1ae7671ae44a5185a7a4aca50ac4b6133da4b43916909db7eb4afed0d71862258bf2ac96791b1612bd3ac5a3fd32f9cce03902ed76d57ad5ecf365d4b4f264fc399f9db4133f16add3644c3d14500a5322b0c942ee2d016d352e6e2b9b2c079184e435fb1bf22cc399a2cde7c7a1efb6bbb59069b2d4e74fb6d1477401fb778950ca61d9c458770298ed0f5c648991e05d455fdddb7fa89891394417e8c8262c8e597a1ba18f86e99bfda57ae6ba9ff58c7b712ca90fd2b67e2c70b54618ae4532927253589c4e1c95c07af8cc', 'category': 'Street name', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2121.0, \"x\": 0.0}, \"hi\": {\"y\": 2232.0, \"x\": 122.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5225: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:f86bd262b16f0b7f59d6b48fee267e37:00110060\n",
- "Processing image 5225: timestamp=2024-02-12 18:58:09.490877+00:00, observationId=o1:f86bd262b16f0b7f59d6b48fee267e37:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign contains street names, specifically \\'Plum St\\' and \\'Tennessee Ave\\'.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the street names are legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29013853203760437, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:f86bd262b16f0b7f59d6b48fee267e37:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2024-02-12T18:58:09.490877+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af86bd262b16f0b7f59d6b48fee267e37%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=157f60c977e816d179fe06cc238770f2f586a94d8418cfe809325f08c0d78a42729ae32dc08e1727de441a74a567e25652d0380dd1b8f0b3b5385ad3ec27dd1a41c0309ad14d8fef73dc10b161e0df759b37fc19af3cd2a8d292eb45f8026bc4b6469108ea9c4cc699158f48d1b71513822907dbbc707f8733b05227cceeb1568c9b0051f0a77dcc24bed80d00fd8a1d90c40c8f907914c104b1c6a68180c4c02f97a3ed7234b650282720169f2a38ebe44c617558d1cf0bbe0b2c0b6a1010fbd0f074c8bebcacc187d4e588e954f99a77be7174470ab00917381f33b24404e26bbc3fd3ef0752a82084dabd38e8a617f04a1239f51b6cfdc46fc881e9505fbd', 'category': 'Street name', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3069.0, \"x\": 2597.0}, \"hi\": {\"y\": 3121.0, \"x\": 2711.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5226: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060\n",
- "Processing image 5226: timestamp=2024-04-17 14:07:57.757257+00:00, observationId=o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15623599832708185, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:07:57.757257+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ff4ecf5f0202c2fe745ac111b7d17e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=acbee9f4d14162820324db31a835914727317ecf8c1ea3f86c2908e6ad384cce96d1cd05681b5927ac91af29f02b2f43e660a645d75b0d905d380714b43afbbf2ff9b98c2efac588c06d9fffb9c93885b821a3ef55c3ec3bcf52ccc8f230ddd53cc7f71fbbf79f4ba989ef9bb8e616bb4b7accbf33e4e5176481b89713c67474f3fbe0dbc55f4f7ffe4762fe3d778edded80659530e687ca7e5c0743b62734745f0c5c305e86024c8b193bb3046a2c4d4744f8d7a8dc63d048e2076bd7629d548adff5affdd33b73f649bceba227f654783b8fb17402032a5157b3d67d8cae908b156d39eeea7a1d83c836786c392039c931828307ea946d04f51a1db96f63d9', 'category': 'Other', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3414.0, \"x\": 2586.0}, \"hi\": {\"y\": 3528.0, \"x\": 2653.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5227: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:354c86f384438032445b91b73e773291:00110060\n",
- "Processing image 5227: timestamp=2024-04-17 14:44:37.981132+00:00, observationId=o1:354c86f384438032445b91b73e773291:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange construction cone with white stripes. The text \\'CADES\\' is visible on the cone, likely part of the word \\'barricades\\'.\",\\n \"image_quality_notes\": \"The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3513117016486402, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:354c86f384438032445b91b73e773291:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.981132+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A354c86f384438032445b91b73e773291%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47cc0dea2c0282a4fd1e11beddcf45eb1fb9ad6b00821733ef5653dd33761eeaacafb63d75fc0be5c084262780bc278546a2cfdee39c83e46e06767318dc8c9fcc3ffd0e95dd3b0d64885643d43f850506334b3812940d56e408d7ff8cf83e206d5ec4d7344c7b4ca06b04e8983c31087d39bc690f78269d4733cee85f1ec7c23a8292dacda5b21dc27447ec4427597905582fc3c54ebf9753d3cf5218cf8f3d0221c347865d898d0384074d37ad2d568c5efa186f7cfcee7372f7ec674a71c45c716f8c785f521d97ac70210986839d9035c7d9bbe5cdda99e315ead7a64d05039c97ced5e3ba204ea1fccb80d31db2dacc79878034e594269423e0f28429a8', 'category': 'Other', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2864.0, \"x\": 3538.0}, \"hi\": {\"y\": 3195.0, \"x\": 3653.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5228: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:28b1c74632862c740562a01fbf93b378:00110060\n",
- "Processing image 5228: timestamp=2024-04-17 14:44:37.081142+00:00, observationId=o1:28b1c74632862c740562a01fbf93b378:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white striped traffic cone, likely used for traffic management or construction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10840556071354793, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:28b1c74632862c740562a01fbf93b378:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.081142+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28b1c74632862c740562a01fbf93b378%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b450a2114d13054af164a348ca7f50fd05292852a55d1f0956abe39f632ad8d11dfb9a35971a038062ec038a2376991e958c738bf11f5d37250af0435a62d33f1fd7a858e86b3d52f4a690c2c74149cc9bcd70a0f938b71f7d96bae0ff37ce4394112fb13310e826a904d8649a2c0174afac59f9be692d43499fe6c6c6e14096a22f0e7e051287939c7ca28f42649ed4b59b52456a4f37458b4343bc45685eb3875461f46ca83f6779c0eacd5c2b92a1c3f55684bd8842ef6d38fa0e22c09a51127dfd448fb168140b3c6cc344a2a847690086e3dbdd22baf01e3d1ed419f29980f002dc348fd7a01318dc9ab0b19d458ffb8b979ce1e42f100f290fcebfe07', 'category': 'Other', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3405.0, \"x\": 2579.0}, \"hi\": {\"y\": 3502.0, \"x\": 2634.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5229: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:a47499e82b11a4169345b7cd1bc1bf40:00110060\n",
- "Processing image 5229: timestamp=2024-04-17 14:44:37.681137+00:00, observationId=o1:a47499e82b11a4169345b7cd1bc1bf40:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21983559926350912, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:a47499e82b11a4169345b7cd1bc1bf40:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.681137+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa47499e82b11a4169345b7cd1bc1bf40%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d7d1132d4746e9e3c0c15f1a59c803de2fbdbf437c83b6062d4e2a959a1ca126b569c2efe889b2a7b569fa172acaf4cc60b79434089f6b1ad3fe509a4976c5afb51c583536815942241fc24fe8fedc3879347a6208d97bc1c1b5538bbd7bcc9524a2ea5b59834ffb2ad36f6e41d17bf667f799e144cabfd6747c36b81158c998142d10e364edc434811734cbeb95301e28ab6450482b5d2e025ff7c48e2d8007d24dc4832f843e60d03c604a521ba05f0a0e13ddc2e161045f77dbbb67bde12a324836decdc086b44490e0686d31c570d70d3edd8a9ec7d3c2e504e9beedac0640e85a44db2e6b2a4f7a96e04c91480089af7c0e83e74654edf0231f34dedf0', 'category': 'Other', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3572.0, \"x\": 1801.0}, \"hi\": {\"y\": 3752.0, \"x\": 1908.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5230: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:f41610611e314fe8d9d545bb5476da67:00110060\n",
- "Processing image 5230: timestamp=2024-02-27 15:51:48.285303+00:00, observationId=o1:f41610611e314fe8d9d545bb5476da67:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a traffic cone, which is orange and white. It is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2249327986987669, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:f41610611e314fe8d9d545bb5476da67:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-02-27T15:51:48.285303+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af41610611e314fe8d9d545bb5476da67%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=05fe07d749969146c0aa3f65cc5de4096b23625ebb3fb3b399d901a606732791398867d481ec77a210b273edc7772e52bb3eac29585a60e3937c86fd50bbcec10eb5ab3b34dc96439ad69b35388a0a645daa871ff41cca4854d53dc36bd35d74bfcfe5a64bc00c49dcf31d8c6d7bd627f6829bdaf2f6c331969a64a3a7ed490cbbcf366650ce2d82ee370334ab4d0c7544ac7b6efee4e5621adf10de1b0845e76db3afa7117dc3e0f2535a7620a08a5f7c3c0cdbaa5854f27a19d211edb42df6a2ef4c34808dbc13c5ca17038eb965fd3c62368a405a1526acbb364472747f830cc6e4bd36b24f906782bdc63ddc60b79890a9abfc36a24dee06d457138c4a1e', 'category': 'Other', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3734.0, \"x\": 3585.0}, \"hi\": {\"y\": 4005.0, \"x\": 3654.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5231: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060\n",
- "Processing image 5231: timestamp=2024-02-12 16:49:33.259306+00:00, observationId=o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reading \\'Starry Way\\' with an arrow pointing right is attached to a lamppost.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11808759144374302, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:33.259306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97a24dad3f38c1d5bd2b795d684ddd47%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=54add675390bcfa0b9c1dcb5e36b4847c79792db179e5f015e3ca77774aa841eebae952470fc5d0460426f7dbe9c6ca355b5ce20041434dbe255816859d7d48cf75b2ccfb9ff0fbe1bd6b1a032cced975ee891b4e0ff9a61121f343f937bad2378cc754e02637c998e1eb94d1ba58cbe099db4d4266d29f9381c41bf61876b6eefdbcacf7c6b565f62e45f1869ed5275e177570df2263c623e690dcbd3f895c1ae64b28e3b905ecbea12868968a3e98e360b0829416a0eb868072c4c9248e3e9356c46835c7b3fdcaac30b51c9aa8be24bc053ebdb1c11f0dd9a10e7880cfc0703595911121dab92206ca71149b868f92aa11028d307f07e11d4e762a10975ae', 'category': 'Street name', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3051.0, \"x\": 1660.0}, \"hi\": {\"y\": 3195.0, \"x\": 2094.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5232: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:c69ac091d1cb16073d7fb2c7205ce107:00110060\n",
- "Processing image 5232: timestamp=2022-09-15 16:25:46.200323+00:00, observationId=o1:c69ac091d1cb16073d7fb2c7205ce107:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'Starry Way\\' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22646765275435013, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:c69ac091d1cb16073d7fb2c7205ce107:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2022-09-15T16:25:46.200323+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac69ac091d1cb16073d7fb2c7205ce107%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16d063dd4a3349615451a2ded8a4c88b7773c07d6ff6abffe1644659d81b169c00bdabada57e2b6ba8bed1eabebb2c5567eee3e2d910f7c2e2487e8752552ab0752111b95ef43a51e4fb5884964e48f1c12fb8d3f1b3d4238fc510a469eb341f561087c9c4306b9a93bdcde17a9459313febde3436e70badb6dc7e538ddb0d70891996052ee27c718648c4372a4885f6934afcd1316a9bd2f015d627037f8ff28315245823a300fd87f8acd0fb5af486f69cf68751b45b5657d415c21dc8fd100d6abebee37cf1c1b70b6787432ca7d5419a1d35be73af71bfb4291e6c9d0450270ba8aeb3026dd9fbea8021d0ce2b5aa3cbd8c91b50d06a321bbf760d0c51f8', 'category': 'Street name', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3080.0, \"x\": 1762.0}, \"hi\": {\"y\": 3229.0, \"x\": 2108.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5233: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:b53da15022a592ac75faf8d32efe4861:00110060\n",
- "Processing image 5233: timestamp=2024-02-12 16:49:34.747290+00:00, observationId=o1:b53da15022a592ac75faf8d32efe4861:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'Starry Way\\' with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09508812788761023, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:b53da15022a592ac75faf8d32efe4861:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:34.747290+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab53da15022a592ac75faf8d32efe4861%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091700Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abdc2a999829868cbe0925a4a48c5fd20528f6dc7a86f176fb086e679e97a7d3caa492eec2fc296c6a1e92a84144ca6be4bf7a50698147981f6750acd47af031a2a04c10672e12e6dffcccf67af3d27ca5d204538b312705b3f1a1d7e14495e86e14753e11c21beca068addf68f266abda74328666e611bc3bdeff6638198dc322c2e88f2db75baf2a84bd32fc713bfee9e4afbd3a926c517023c24c50a5d1b0f3f62420db2d118297ded36f07515a9b5e4f33a1ed1d7fdb6416aff5caf047b3f0916c6fc3dbdf0072ab29395e9a1fe8b5018868ec46a1892a9208b00c1777c36443b70af5ceb7a1bb7f3597323c0fcf3b5e250ac2e9ccaadd5e859fed990cd2', 'category': 'Street name', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3114.0, \"x\": 2024.0}, \"hi\": {\"y\": 3226.0, \"x\": 2321.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5234: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:1609b14975bed3c3a85eda129bc7095e:00110060\n",
- "Processing image 5234: timestamp=2022-09-15 16:25:46.784697+00:00, observationId=o1:1609b14975bed3c3a85eda129bc7095e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is attached to a lamppost, it reads \\'Starry Way\\' with a left pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20037606027391222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:1609b14975bed3c3a85eda129bc7095e:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2022-09-15T16:25:46.784697+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1609b14975bed3c3a85eda129bc7095e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6f68db89b258e777f221ccb9a6e21b6689b87b40e4bfeae7290278b224491e522a6e5c87dfb35ab36f02c6ebf0819dbdd2d592746ff8c2bf22a7325090d57841d5a1f0700f4107e3af8653f390637af68e0df3a18dff15c1bbfc5b0eda4fea63dca3c17c9c7aa28e9e4ffc12b1e0dd85ba3dfc8f8a59cbf1cc73776683d12fa801b2bac6f2ae97683ba5de29283521132de1fff4e08d60d0b8ce39e5e24f93dbcb3143cbd9fa72ffa1c9d1a5c562e7c602be48fded2d263581d3026aa425fdc83f081db3be655a906ed801e38ed64d2b19e770ddde7ba31390bc160489e4917e28d98dabad7bda4fb9479531a58feadf37c465fb96590218ee03a57367658071', 'category': 'Street name', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3152.0, \"x\": 2521.0}, \"hi\": {\"y\": 3230.0, \"x\": 2738.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5235: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060\n",
- "Processing image 5235: timestamp=2024-02-12 16:49:32.447340+00:00, observationId=o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is attached to a lamppost. The sign reads \\\\\"Starry Way\\\\\" and has an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.178554663787017, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3073, total_token_count=3147) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:32.447340+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1b0cdeeb453822680fb50a81fca2a4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=639c5a6cb3227b0cb3f4110642b6aa45ceb672b8c945fddf0fbaf8d0d3aa3669dc9d11941fdb18fdf997142375e28c581a1a33b068fb53d3ebb560871b28d1a1817ff47d2e1d4c0be0986f4247e7656057a95c3dd693adfe7f15e54abc1220b521095db3e4f6f93363fadca5ff0f6ff2f44c41cf7556cffddf8814dcc98ab3944612e34972893df272ec59d9e4af2c23d0a04e42ef2857292d41f1f433b502a4057be6629f6c8c300d1e1c7f52a99f3df93a02031fa9591827a04e9c3805f3a63301dbf9a498d3dab4d7d1a083d0052728715e995e91f401527098a24ee6d8dd788a34dd5cf3f3d814883453699d05f00009a3058a0c9d1b1b3864b85cdbd4a4', 'category': 'Street name', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3121.0, \"x\": 969.0}, \"hi\": {\"y\": 3191.0, \"x\": 1198.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5236: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:965baf288f577369694ffd11fc96296e:00110060\n",
- "Processing image 5236: timestamp=2024-06-16 15:29:35.902884+00:00, observationId=o1:965baf288f577369694ffd11fc96296e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3452220408121745, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:965baf288f577369694ffd11fc96296e:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-16T15:29:35.902884+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A965baf288f577369694ffd11fc96296e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=86def96ee88755d8c513e9f3ea19b8c74ff2da24f4c5c06813516b46d7e52d2d662a6c0d53a06e456694ec27b70cfcde46edbac6f88316fbb3cbf4b912b4b1ae806e0f82968be1950e8fc070b6b024934afc27300c566cb306945677fd091d730edcfce21c36c7a033a2e0f336949dc258ed352184c1c15e6cbc5d372fa8826a36f3a8f6dff7ec016501f244ff3140bf6942d41bb0441a76c0a37280c0334a03ad1fa20aa6e4134adef396eea2596938479a814237cc63915b18c28dec6a1b43c5c97480942ae7fa35655cdd470a4bc9c001482699626f5f553c949e896e8e0b1b5a9cd0572a55f14211cad98220aea33d117ec4cf557ebc3e069e5df5fafc29', 'category': 'Street name', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3073.0, \"x\": 2400.0}, \"hi\": {\"y\": 3204.0, \"x\": 2517.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5237: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:470906c512461d088db8cbc56d226dbf:00110060\n",
- "Processing image 5237: timestamp=2024-06-16 15:29:36.206757+00:00, observationId=o1:470906c512461d088db8cbc56d226dbf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6576412000154194, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:470906c512461d088db8cbc56d226dbf:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-16T15:29:36.206757+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A470906c512461d088db8cbc56d226dbf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b7f42985fc339121ec8f4db54510e8c7ff9a90dfee26d87f673d8bcab75e6e6d24afdf333d8dcb49ff7058775c4c758e64d0ac606b47743243d3c7e2501c4138fc4dcfb9138761cbdc65f36813ff411f251d08929ab9cee9debbec6ba245e1287807546008c87c27010427703b4cf706f27950d0ad816e837b87a1e687ae414b6e79d2c73d1e2b6159128eb2e17e3a47d3f301761b4f127b41931dcceaa84a67ced0d47294156b375a306f0d6d85f0cf47fe02a3d7e7e9ebe31bd5a2f8c383008d9a62c8618fcc3feebdc981cf37351347c77faee067a83352d67f84c6cac82a5d7caa9f79e9ad07e7b95460713fad0791b6fe7effb6dcfc130f53d1eff20cd', 'category': 'Street name', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2084.0, \"x\": 263.0}, \"hi\": {\"y\": 2255.0, \"x\": 385.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5238: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060\n",
- "Processing image 5238: timestamp=2022-07-07 21:24:05.998346+00:00, observationId=o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36802513122558594, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2022-07-07T21:24:05.998346+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e90d67f70e2999ad13ba859f6faf1e3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10838e729274e75187e3c031b11b0b9eb4c05bb709f1638d9dec80e72d956cd14dce8e6c2ad6d83a9c66ce0014eaa5f814e2bfcba10dd4ba61bdc61f3c744f04481ca52d97b03a6f0834ffb6bcbc1f03d8921494e898a22c0ca139992440284c3bf5f8943213c022fdfcbd8eda9316c0ce1162998d84857e81cd545bef731a017b37ae206c80d0c45e87b16bfca85fce3d859437456387a35029af3a7ed0d33a4b94a6e5b3a43dbbe1699df2cbd274f40f4158251aabcf36c1dede3d0d77caeba192f4fd2552835b129eb4d211d1ecbb131b17ef50df420bd1acc36aaaa61085c695588cf0f445fbd1376d57b0e80d4c724cc563606a1fc400c136d0a0a00eee', 'category': 'Other', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3054.0, \"x\": 2864.0}, \"hi\": {\"y\": 3191.0, \"x\": 2982.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5239: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:217689036a78fdb4b3881aac6c713049:00110060\n",
- "Processing image 5239: timestamp=2022-06-17 17:06:56.335345+00:00, observationId=o1:217689036a78fdb4b3881aac6c713049:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.452511937994706, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:217689036a78fdb4b3881aac6c713049:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2022-06-17T17:06:56.335345+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A217689036a78fdb4b3881aac6c713049%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9bfbd73a87f0afbe0d0ee36861dab0e8dcf4dd1c9acf8f56d506d29af068eba34c964bfed2aea3852450b5362a7d5e9b6148f7e15dda37787c1eac1ea37bc5f06b68c59febb9c22daacffa60e94d1836d4c72043455e1a574a76b7b6caa6d2fdeff7aeb04db4aed027b886533332b1d83fa232bacb26c0eb325349ed0919cc37a9a85afcd05c59abde8c58987354740dcb88076eb53fc3c7b7ba34c30bc199418622d084c8b41a1c758fd1cb8165f94348fc6b5af214f622923a2a31ab6a3ac7c7d535ada375b836c117cef8ce60ef2eac506a6aefb42f0ad968086c8382026a4f37593702b60cb56db3eafbe35ff8618ec94422ca15ac94991acedf143bf407', 'category': 'Other', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3038.0, \"x\": 1187.0}, \"hi\": {\"y\": 3191.0, \"x\": 1344.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5240: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:927718538cd914ed2d8d3e6f629c8248:00110060\n",
- "Processing image 5240: timestamp=2024-06-13 17:54:11.971580+00:00, observationId=o1:927718538cd914ed2d8d3e6f629c8248:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a white beehive shape with \\'68\\' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24717319011688232, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=2557, total_token_count=2653) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:927718538cd914ed2d8d3e6f629c8248:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-13T17:54:11.971580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A927718538cd914ed2d8d3e6f629c8248%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bdf184f83da6d3cdc445710f9f7b0593e2f28cf1ca84b49f9074a4d643a95e644cbc51eaffb50b67e4399f5bdb6819324f8846ab1c8e7eccbf576c87d7729c6300249af801b348228b74e1dc0f5c5400a4550bc8430afabc5ea2c8989c13f1a4aa0b52014b8aa9fe9bdf4d073d8586c9a83aafee73a55e3a9fc7f53a3a8f1328fc1507a7eade1e320399a92fc0393c5778662c774e6d54bba510b419b75226fd7a5264519390682b2faa7d4894ddb0d399ad9232401a4eee4b05739b1969a47600675a2dca8272867ceaf48e4c835139dba6e8a96dd0242b69bf43b2fa5ae18158781126ec74484c2301a15a4c939e1313a9a9037889ddee57e7dd9fa99a5fc', 'category': 'Other', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3058.0, \"x\": 2744.0}, \"hi\": {\"y\": 3197.0, \"x\": 2874.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5241: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:ddd4262aefd7ffc86c0a28694392da29:00110060\n",
- "Processing image 5241: timestamp=2024-06-12 18:49:51.887332+00:00, observationId=o1:ddd4262aefd7ffc86c0a28694392da29:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"There are three signs on the pole. The top sign says \\\\\"STAFF PARKING ONLY\\\\\", the middle sign says \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\" and the bottom sign says \\\\\"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\\\\\".\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.308776950048021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=121, prompt_token_count=2557, total_token_count=2678) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:ddd4262aefd7ffc86c0a28694392da29:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2024-06-12T18:49:51.887332+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addd4262aefd7ffc86c0a28694392da29%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5f08bf97e3781412dc5ab96e40366a33904b62130242dc3cc1476a8629713ba1cd0ccdf2f3c4b8a21a3fd82eafe60c87cd6015211e33e36ddfc52c3b31e367fcee0e05ac8b6cf122630a21d3ba792a451ce4fd6672f230f1a319ba75b097982cc9ad88e09214fc88f8ee41e6cba9c4a005797ef670e34467eaa3fe1b89b778646a0442a0ef301b8c5e3d722a28c154808d7c95d7df3c83f1c79455c5c08f24d812de2807ffb0143f9fa5c9ed38c4b0dc45f14673abbc0fd93d866ccda1cc8833e8173132a588955f74e0e539f74f07ad4664dbe2976a948d67dafaa393e9278af3a0b4bb2c1805cc8e14b9975e6e55ccb7bb49b596cba6760532365332e803a1', 'category': 'Other', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 2826.0}, \"hi\": {\"y\": 3146.0, \"x\": 2873.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5242: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060\n",
- "Processing image 5242: timestamp=2021-10-18 20:56:29.391969+00:00, observationId=o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15355960946334035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.391969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b04593d1bea543aabca89e18fddf2da0d8ad28ca98d3775c92d784c6ce6296fd7cc4194e93be2b2269385d3e11c88f153aa6452021bf98cbb2e6fb4e79c0628c351a8b9cf8cd3fafa5dc81252ddadd1d79dbc124f914b7c03462da80dfad084be0d1cf2a6062cbedbbb44c3c69af8cffb64567e72f1b7e3f594b0931420389af5e09c0954aab52da9a929f2f41043eccb883d0264abfe41a805ef02362d0c4ccbaf97d8fe8bd3d9d3db99e355152f5a53bd2b46a92f06de9a2d4e20c6aa4ce7cb622c15806d8ec6d4023cba3628db19ba7f4d7bc0e133009f37978d0d1a8dab699cf45d153f8145484e460e69f6f5b3136b359327ef51adc56f1326a5608495', 'category': 'Other', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1996.0, \"x\": 2311.0}, \"hi\": {\"y\": 2132.0, \"x\": 2395.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5243: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:f47e169bee3aec6157135b7e23d04713:00110060\n",
- "Processing image 5243: timestamp=2024-06-12 18:49:52.495346+00:00, observationId=o1:f47e169bee3aec6157135b7e23d04713:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3368681220598118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=3073, total_token_count=3166) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:f47e169bee3aec6157135b7e23d04713:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2024-06-12T18:49:52.495346+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af47e169bee3aec6157135b7e23d04713%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f5226fec2eb8b83574f242ce74806b8f2dfc1200a805b743e9b029540c50eb93725c1ae35e1af7b6bd90992ae45ac95c22341675eaf7d320eb5323c8013e2a246eefcaa8a00ad6b02bf65c70a4c56183b75acfb09e07abbda00273b745b4f23b367785da1d813ea515b07b1515edb85d213c581a21266bff6f15b31643a8256a158488c3b9cc41086797a229cdd87f25aaca3ad97842647dd41a8ea934005748c2fdc7aa02bc8282e87450f30be7fb3bdb7580fd01079b52f7f16570e50698035037d739129ca0423caeb95de452abb2b1059f9ba9f4ef57c159bded85dec4d22b56bf536b775c7d8d90d435e26c53de9e2d49335525c08637db6429dfbe3c8', 'category': 'Other', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2004.0, \"x\": 2357.0}, \"hi\": {\"y\": 2141.0, \"x\": 2446.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5244: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:a663b14aef48cad6f80a2974f8191830:00110060\n",
- "Processing image 5244: timestamp=2021-10-18 20:56:29.055962+00:00, observationId=o1:a663b14aef48cad6f80a2974f8191830:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is a multi-sign post with three signs. The top sign says \\\\\"STAFF PARKING ONLY\\\\\". The middle sign says \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\". The bottom sign states \\\\\"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\\\\\". \",\\n \"image_quality_notes\": \"The image is slightly blurry, but the signs are mostly legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23206569992493245, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:a663b14aef48cad6f80a2974f8191830:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.055962+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa663b14aef48cad6f80a2974f8191830%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e49ed647531b1047404c4b809138e5ee583594c6da38754ef1c456a8457c5e7b544fdac1046b468be0cfe35d909131b89b431d8262aa9d4b5585e5df0c009e3f474da6bc50867202e42f49a0a10022777549ea98947c164ff77a38e29d62991fe4584d3c076e858b02501a457ecda37003c5e040fbc1758be14001c78e045c5b95e13f2c0b949b8a4b9f6009394c5c26803e8aecf34f20e5f84d5be8ab9eb0633ecc129d368e9f7c9b15c0aedb687cbd65952478cb73404a53d92f4c592f51f3b3f218ba5fa63b934189a3b827395d79019bf97fd035ec47ab7c626d639faed177b9abf30d6e0c1f3d980f4457500325a64ba7b572cce34795fc4f5ea045625', 'category': 'Other', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2039.0, \"x\": 865.0}, \"hi\": {\"y\": 2173.0, \"x\": 945.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5245: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:bee5058b94647d519beebd2f57d999a3:00110060\n",
- "Processing image 5245: timestamp=2021-10-18 20:56:29.727989+00:00, observationId=o1:bee5058b94647d519beebd2f57d999a3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a set of multiple signs. From top to bottom, it says: \\\\\"STAFF PARKING ONLY\\\\\", \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\", and \\\\\"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\\\\\".\",\\n \"image_quality_notes\": \"The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5214566317471591, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=121, prompt_token_count=2557, total_token_count=2678) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:bee5058b94647d519beebd2f57d999a3:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.727989+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abee5058b94647d519beebd2f57d999a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1be091560b7f9368c8051f00d727232661054d8395e26dbf6fb06fa098313a385a67feae9e2ff731ea6e0798b4e2f14e4d75a773328d8db3944e4691598e5fa6c5a06e082f82ca265b9b41b4262f2eef8dae2e8fc45975ea9ef3d27aec145f63b4aebcc8491c2f35d278fe1879164eab2f92354c1bdb935384dfd10be1206fac3533bcc933be5d09f9e8a3864eb9d42c4c8ba678dbf65d237f2a08652364accccd1a191c576f20dfb3e1f5f7de115419839ca9b3944a97d1971b3c8b0171d4d2e749be2da8aaa1090d14150d50a69be14a2138f1d5fadeea9b270d74361ccd344900c0a6ab49aa24819ce22f8523faed08704df3493162a489bbf08694814538', 'category': 'Other', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2987.0, \"x\": 569.0}, \"hi\": {\"y\": 3102.0, \"x\": 635.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5246: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:5f890079daf94baae50640e9b13083fc:00110060\n",
- "Processing image 5246: timestamp=2023-12-19 16:03:35.656311+00:00, observationId=o1:5f890079daf94baae50640e9b13083fc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says \\'AHEAD\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3951508485818211, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:5f890079daf94baae50640e9b13083fc:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2023-12-19T16:03:35.656311+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5f890079daf94baae50640e9b13083fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091416Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abaf9aea246a2494df295f9fccd6004d3fc5984ae73cac7f7871dfcffd41d942e84700de4ff4f5c0ae946e153ffefcfa82a5373a8eebfe9a982be65a7e1bba57f8bba5b9992ff856cb8e882b8ef90804821ad8204c8dfae3ef7daefb85d4ed7eac65aa2db8d4408f938646cd0ff6db21b91417a5fcfb6028ee9b252f5970e24dd05eb87c22bf3f12f09bde362f8173352ad75ae1e7a541f97c591d24a81fac79ae83ec30d8387da502a8e90f81f9b51944dfb2dc2184f6da2359eb2743064af78e4fb5b01e8c1cf77f8ddcc4bfc634d5c8f9f24eaba66eff5c6181a56327b931fb8cd7c34b703fd5a15b3202f262a06aaf48b8345b7d400619dc8b6d7c94a877', 'category': 'Other', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2013.0, \"x\": 371.0}, \"hi\": {\"y\": 2256.0, \"x\": 477.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5247: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:0b13601555a43a73b51c631e38e7bcdb:00110060\n",
- "Processing image 5247: timestamp=2024-02-22 16:21:58.252573+00:00, observationId=o1:0b13601555a43a73b51c631e38e7bcdb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \\\\\"AHEAD\\\\\". This suggests that there is a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2445258010517467, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:0b13601555a43a73b51c631e38e7bcdb:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.252573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b13601555a43a73b51c631e38e7bcdb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=565c1b38203929f32f02ec735a5d7fed2704f5ffffb81066b8ff3611c0d9b02f757e86e492a4aacab144454ed55f935856e63c036559df8965a2f3ab7b35aec28b4a6291f15a105f52e67564e4344e82529893edd1a70e8b3c82528c8edd0562de254e7db4a1985c6f4b25a66832aa88449fab8e4b2e806d536426f017d46614dbae0c891f0b21c9dbab8ec5a8039d0e4658e19afc6004f5e8c921afa15005ecd941997cb4f4238780efdce006d2db667f0ebcc32d24ffe1c0e4f44819e13fd48e633b671a83b2a2a4491b44235add2946aad3c7d9f4bcf7ad8bd30f72603fb6980ad68ac776bca3f7c7b3c40fe01490839e7127c296a91d290eb1b13ec1f2e2', 'category': 'Other', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2022.0, \"x\": 412.0}, \"hi\": {\"y\": 2261.0, \"x\": 512.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5248: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:a23288737bc7679a444820779f92dc8b:00110060\n",
- "Processing image 5248: timestamp=2023-12-19 16:03:35.656311+00:00, observationId=o1:a23288737bc7679a444820779f92dc8b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a traffic light (red, yellow, and green) above a sign that says \\'AHEAD\\'. It indicates that there is a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13333508938173705, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:a23288737bc7679a444820779f92dc8b:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2023-12-19T16:03:35.656311+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa23288737bc7679a444820779f92dc8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3418d6487fbc2abcfaeb9a2acc0560d3f0fdeb7e88d5e72f8c49735963e512a60fba51e38265c784f46152521c2b440b5a1b39a2be1a8eea2e881c85a853b0abc82d0434a9501a622f46b51dfbfb71c4b7cb73350d1ab0e68aee9bc800bf3316ce3fecfea22a3a53de02ebaab5b49427f266358dde623b0790d834a89622f82e36952fa248ecdf4f0427cc3aa90bed38cce6657c9b852570c4cd1d4e2266e4e663f1275d1ea22fb40441462c011c4d579aa294a8c688a85538e63882b5e43ad1971416f261d8a0541186dfd4d7cd8e671d807cac86d7c3ec470b5314c21d1173a83d4c2ac49833475f85c4de6adff9989c59de7f6f3cc786e05f25e6dc59e85f', 'category': 'Other', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2896.0, \"x\": 3357.0}, \"hi\": {\"y\": 3127.0, \"x\": 3465.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5249: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:d72846c5e83f5655807bd84bff2dffaf:00110060\n",
- "Processing image 5249: timestamp=2024-02-22 16:21:58.584854+00:00, observationId=o1:d72846c5e83f5655807bd84bff2dffaf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says \\'AHEAD\\'. It appears to be warning of a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2539204316980698, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:d72846c5e83f5655807bd84bff2dffaf:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.584854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad72846c5e83f5655807bd84bff2dffaf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5bcdacefc99277ee4c33bfa849da6aaf3ee37977001696a100c2a68e62de8926807ba66fac969ac1dca7ea48d888043349cf78e378855296ba9a04beda8bb12369ea9c1228f49472beb29f32ea8a8ee5c35f2d2866db12a436d958f0a79d42a22c15bf7c4d7ccf34b9497442ab3285da0e65d2d3fe1591c5b02115191739746abe7052528229ac303044dc468f80de765d38ecbfd9c16afdff43f232c0a29f10db95d1a1cf01ac82703b55f9d7c7ab947a72cc402f629335a7b5cc9de70157ee734b52808e10df9a78f07a9d1fe7cfdb9f97fcbab4ad10c227ecdadafd17f3e98aa7eadad43acb8aafdaee68ec518f822fe9344f65e02f4c974db3a49537be80', 'category': 'Other', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2983.0, \"x\": 2655.0}, \"hi\": {\"y\": 3165.0, \"x\": 2781.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5250: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:7e6373d219334133a0e58ab09bedee39:00110060\n",
- "Processing image 5250: timestamp=2024-02-22 16:21:58.252573+00:00, observationId=o1:7e6373d219334133a0e58ab09bedee39:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word \\'AHEAD\\' printed in black. The sign warns drivers that there will be a traffic signal ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31616458892822263, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3073, total_token_count=3173) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:7e6373d219334133a0e58ab09bedee39:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.252573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e6373d219334133a0e58ab09bedee39%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55356e8df3c25b567a4f261731f307dee64fbc4bc6b3d9b53346c37d994a4296aa17fc29b08390cf9d17026cc50d64f9dc4e82386d05c2a28d60f9a7b7716644b9fbb34d6119922ee7deb6f390c9452086a4e3ee586e0d6a69ab1d1aa2156d540358c1f6ed1a8b6667b58fef134af191decd7bbde0554fdc436f7830e218163fa6b1465cd4d25f835ef4bef8202962f6c1d8855152c74eb4686be3c0262c2249c39dfa29933aea5bf2176bf06a20c9b7ff3cd67bd0c0add0eae9eb5a8db540e4081a711e8af4c54cc6cf8fbbdaf31074b064718ff0bc54fc804152f1b0c2264ef86a855e911f84b8714337f1685e40006949a11b6f3c471b8c068696a260bb8b', 'category': 'Other', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2895.0, \"x\": 3416.0}, \"hi\": {\"y\": 3132.0, \"x\": 3522.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5251: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:a08da8bd33602452244f12e0d02c19ee:00110060\n",
- "Processing image 5251: timestamp=2022-05-20 17:12:07.078931+00:00, observationId=o1:a08da8bd33602452244f12e0d02c19ee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.\",\\n \"image_quality_notes\": \"Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5714760265131106, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:a08da8bd33602452244f12e0d02c19ee:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:12:07.078931+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa08da8bd33602452244f12e0d02c19ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=298bb808abac42aee66a1c817c14184082ee616fd18d8b5c69b3be852cc65ffb286944cdd4dd8503dcb934bf41476d11a6ec19f73933a6e75089ef6b00dc678d9710feb28c00022ed45e4da9300cc985ac4dfb15b67ac62dfd8b0ebcc2d5dab70bba5d60efeef76072f651af091a1a880c768a08ee58a45ba18a97cb07109d17ee90c40305e5ccfb6cbaa55660b82ee02f3aa93c122fcb0da3b9783f89ec3fe612e100710a1091ad0a9cb1056d47ad2f84fb69e9242778041209d91bb21d169d5cf43e11fe343da4cbfacd781e7036542bafd0f9dc04c4fed3176d66dde1240ffdd5666abe60d7bd54bf8faa81c7027bf3eb26b36551f008b58506948b68b537', 'category': 'Other', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3505.0, \"x\": 1851.0}, \"hi\": {\"y\": 3562.0, \"x\": 1877.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5252: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:23213ad872a1fd663d37ec270aa0d7c2:00110060\n",
- "Processing image 5252: timestamp=2022-05-20 17:18:00.505020+00:00, observationId=o1:23213ad872a1fd663d37ec270aa0d7c2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white traffic cone. It\\'s likely used for temporary traffic control or construction.\",\\n \"image_quality_notes\": \"The cone is partially obscured, but is identifiable. The image quality is poor.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4067239284515381, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:23213ad872a1fd663d37ec270aa0d7c2:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:18:00.505020+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23213ad872a1fd663d37ec270aa0d7c2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091515Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8e8331b7c76b53af4b43f576eaa92333625a315e06ab5335f5e126f39f2ba6cbe5f211d08140c25d99bb10b7d5a1075fede23be0156426d32f1fb08964ff68540785ceaa6d68425a1e3b49d2d8a3d7d0ca989a5b3b4a65757d1ac44d83d23fdeb00350f078ffb53ddc77be1f5c3a4eb63ba09473cf35087a28dcac8dc9df38892a3d4cdea4982e151d2d80cb02a76da48d2531d4e514e43d3416b77ab792c4ebc66d146e5e5c368869dda1eda68d741918c463bcdb2fe192a58f1e7c23878d17dd92e7137259eef03e85176b7738c012bf5764d87bdea331a489bdf3928757df0b5a9736f56e8b522622ee70e98582f9e175f7ef838caf5177da71893f507e7a', 'category': 'Other', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3382.0, \"x\": 1107.0}, \"hi\": {\"y\": 3431.0, \"x\": 1133.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5253: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060\n",
- "Processing image 5253: timestamp=2022-05-13 17:06:06.310669+00:00, observationId=o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains an orange and white traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09658198697226388, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-13T17:06:06.310669+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57db53a16c9a8b430ec1c7a9ca233b90%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0d637e4459180065f1afa1c4f1d86524b686bb1870deda98bdfe1d1cb94c174d2dfe12da82412fa663f6cb984acbda844389b6c8ba7b88aa6db8bb1ac0e038a5e3c6b55d68961fb1cb19aa66b2882b75feff3e738867ee714a639889c0911ddabe9b88e8a7e9f105486bf8b5fe5509dddba4de48a3c8caf3486518e8e440612fd221e083aa25f4c28375cf45fcdbcf0a7bb33f8eccb33375c366645cdedd770ba861dd68d887d8b95da8ddeb8eba81db54291c6f16020fd865424cd3855303f7301e6583c0fb4b9ac79fad6ae830576da713734a5dde4907bd8eee6f603aea2a7b720f0c1e03bb1ef8269177619f213122cc906a327e1043ce14d8e5c774b582', 'category': 'Other', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3586.0, \"x\": 2548.0}, \"hi\": {\"y\": 3667.0, \"x\": 2590.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5254: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:40dc529b38200893d1e6fdf1e0694c3c:00110060\n",
- "Processing image 5254: timestamp=2022-05-20 17:18:01.573019+00:00, observationId=o1:40dc529b38200893d1e6fdf1e0694c3c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, typically used for temporary traffic management or hazard marking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08074200342571924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:40dc529b38200893d1e6fdf1e0694c3c:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:18:01.573019+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A40dc529b38200893d1e6fdf1e0694c3c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c0c5cdd3638d227cc26b923a5148eaf63872da6bfb1c5a2c7a64312a325cd90792654d7f678941b571f3ddb4f6b5e69915ac4f545d10a4aad54b2ff910311d496c3546c0823d01322490f6c76a2652751ef44ed538dac1d66cf6c0bbd51c4e7f43104c4701ae32266242d31e0d5fc2f1f075534d204da1f900030fad584423ae5ee0973dd51129fa67de4bbd299533886b24703c8ac90301303af6c3b11da80e6eea8ae0f3363ce572f87b6e47a619f5a0c578541757e5ada8c1d856a050a84053582b7e2c051588a94031d6d6c922536ffc3e34d4577511e7172db97e212e1942648819ce009202fe09b117c8cc184107145d27329f302032d3d1184707010', 'category': 'Other', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3558.0, \"x\": 1883.0}, \"hi\": {\"y\": 3639.0, \"x\": 1927.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5255: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:51e0340a7d23e1e5dc27de3d250e631a:00110060\n",
- "Processing image 5255: timestamp=2022-05-20 17:12:10.270856+00:00, observationId=o1:51e0340a7d23e1e5dc27de3d250e631a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"The image shows an orange and white traffic cone.\",\\n \"image_quality_notes\": \"Image quality is poor.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1309324398375394, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)'}\n",
- " Error classifying image 5255: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)\n",
- "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:51e0340a7d23e1e5dc27de3d250e631a:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:12:10.270856+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A51e0340a7d23e1e5dc27de3d250e631a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15d8262a3894e2a539be340dc0e74a517af7d8d3355f9ea5867a3d77f23f57c4df4f48bf91df0e0d9b74c3d1ee53bc8170d19e10c1ff6afbff1d7377e49c7d149e44c0f4dc9e86d29be6a772fc2c7b740097ac67a05d38f431d28ad91a1de7089b166853f3fa10c90bcc6c1a3b60845ccaaa04b218a28c49d45ca38e2a6f812d2c2b936b66abf68af99b7f96903cfd820bd65478c722ad737f6cd4916f31afce5b0941f87c9de9ff0bb18717d8e8e2089b5e2cb72362079671390ebd7a0f2fbb4f3a59d7bbe9857ee526fc7e703033a9f0bce4eab37ad1484952269a5758402ef44e39ca846633d49b46de7d296130c5c18f0250b0eae858267c2cbb2b7153ed', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3478.0, \"x\": 1758.0}, \"hi\": {\"y\": 3537.0, \"x\": 1788.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5256: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:2e7824de64fc24b491877dca0426ad04:00110060\n",
- "Processing image 5256: timestamp=2024-02-14 14:54:35.913596+00:00, observationId=o1:2e7824de64fc24b491877dca0426ad04:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1997201225974343, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:2e7824de64fc24b491877dca0426ad04:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:35.913596+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e7824de64fc24b491877dca0426ad04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092815Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f9f78b609b40f759842f4e30a88de52a0fc0a4077a2def53ee4951738d7a026b6c4a23d659bbf4189780ee131bc1dca2c7ee53efd01f2673bbf7cd09814318204488a6a7bfb812f15d4b71d4d829c4a523deee8dd7e9f1407d94369bd081a4d74af11f20058b7d0e4df8cb7199c4f8cdf56d23e20326ac2159f56b5659d191237d679da1ac6850f2c7eaf7296382d425581ab80eb1677202630e0099c26fb3c6e10921045c5ce98bf6416f56aac1ec7323c3b970bebb1fc0895e2eb3475528ea0c68ba54e8b0f4fc5f7acf34ee670cf00aa5e6074848074aba6d1b5c81527a0ec521080810857ff5fce7af739b3c95b9364924e041673b712ea7374fde52700', 'category': 'Other', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3468.0, \"x\": 3340.0}, \"hi\": {\"y\": 3612.0, \"x\": 3387.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5257: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:3d04dd544f50a7898b0aa63a8801c815:00110060\n",
- "Processing image 5257: timestamp=2024-02-14 14:54:36.513683+00:00, observationId=o1:3d04dd544f50a7898b0aa63a8801c815:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40038397577073837, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:3d04dd544f50a7898b0aa63a8801c815:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:36.513683+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3d04dd544f50a7898b0aa63a8801c815%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=54a1447e230e37e62e440fa2439fef3cda23b9a98fb46f242a7f5cd50df5395a109d2d866b6f3f0921b254e3867e126e4115f26b76c02f24f3a84eab62fed07d8c7702ad0a176816327152ffa2cdf30f6201a5c9cbe8a6fb4a50968331978ee549c111d00ed6ca0b7916033e98f369d490ad39be05cd97d94b5b4ce9c79053097dab4f22a6d3c2fe6606521410224a20d0ee8a178eb230e8bb6b05dd803aa20666c9478040430aefa1361bdf4e65f9fc359adf6f7adbace13281938df513831872174d447859428cf76186adc36d28cff7485bd9fc884bd083d324f0a030fba9d86ded71b49695eb91a63aebc61d43bd4f41580e1a630a493a56e57a74fc4323', 'category': 'Other', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3418.0, \"x\": 2263.0}, \"hi\": {\"y\": 3544.0, \"x\": 2298.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5258: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060\n",
- "Processing image 5258: timestamp=2024-02-14 14:54:36.213615+00:00, observationId=o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange traffic cones with white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10890115771377296, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:36.213615+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae150fdfd5ea72499ff631b9fcaf74a60%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a02e25a867e09a4cad2ae8d61f8bc46bed4df62e1593526487f11a6a69955d9a26722fcceb4d703477183d47362e683bad6e96b87f3e6eb98e17531d9272727f627389be74b4f7d65c611a433965b392093a08320b7f0b6baa4d8a8661ea14638324717fac9543a4ac26a7169d57750400390b65106d788aa34538b0e8bd21d572030aea12158df0f33c6d2b7640bb551a7720313d2b085d988e10792ef967bfa9afe6235d440c55eaba1bb27f2561e40f1319b8e884ec1e0aa2c426309ef63b28effa69dd4ae5f41518b012eb92f5108fd0f4ae2de0a0cf04faaad48e00290c904514d7ad8e00b2473232d202d9ddddd00fdd00260a46f5a2ed48b27d380aa5', 'category': 'Other', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3474.0, \"x\": 2784.0}, \"hi\": {\"y\": 3606.0, \"x\": 2824.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5259: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:3b2531e8d194455129cc3d840370e23b:00110060\n",
- "Processing image 5259: timestamp=2019-01-25 14:49:00.346213+00:00, observationId=o1:3b2531e8d194455129cc3d840370e23b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1726045483037045, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:3b2531e8d194455129cc3d840370e23b:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2019-01-25T14:49:00.346213+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b2531e8d194455129cc3d840370e23b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=983f4e488d845df94b15f350bb370aaa661df6f9d6097c5ce29ae14c61c416d221326beaaebe64f967017b3d093e58efce03fec33bbd8a1da3aedfc2b42d93b3e1df3d4a195ff0e92d998c6ac442519a064cf35e9e23157b2ebf816a66ddfd566076760838d3eefc1da037def2f77aa58bb67853ce213d2459236effe1ffe4ac56a46d7f3e0471d500ac958c8257dea35c283bb33c9342a5acdd7c8d8a5b37bdeaf9cb5e96f79890659389d53f009301abc58a10e844c62f1eea2804db97daa861f4972bcb7f65f1c2294e7278a6955468a204d82ab67c69eb7cb5401ba771b8e8a7ac79cc6ab58731f6a8f114ba87847361f9365f70f708bfe63281af86d80f', 'category': 'Other', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3418.0, \"x\": 2129.0}, \"hi\": {\"y\": 3520.0, \"x\": 2165.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5260: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:ae4cc1f386ea6d45b19f77868e704457:00110060\n",
- "Processing image 5260: timestamp=2024-02-14 14:54:35.913596+00:00, observationId=o1:ae4cc1f386ea6d45b19f77868e704457:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is in the middle of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12347063223520914, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:ae4cc1f386ea6d45b19f77868e704457:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:35.913596+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae4cc1f386ea6d45b19f77868e704457%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=520b3ddbda656db4a34e10f4167ff894b2e4b75de142ae6bade60a6d69532de85ad32c79e4c65aeb16ea83258c3b6fedad597b4d6b764a28228e27aa6ec2c83f8b01d7ed6a0ff402919bae11e24375a4b0365f3f2e9e70fcb0e5468b6170e43ed97e4fd4d12423eddfd9eca0e4b05c4b37219cacb2949ec44a6b1c01ef5b9868e5fe6ab7663e738fa9c1499f61b655c1bde3a6c844dcfbcead563d3b06d389576ef6200edce33624032b0158fece62dd29fd2ccec0b9c0d523cc2a1e4cf14b209742b00fb35869ba6eea2ecda7415c111d89c787c9892885bd6bcd7fa068927ffc91b7914de1fdcb117bd92d3738da58f97da5e7ef97f3ad294c61979aa7d179', 'category': 'Other', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2595.0, \"x\": 342.0}, \"hi\": {\"y\": 2744.0, \"x\": 391.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5261: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:6c26572b8721f68eb4e328e7ef096503:00110060\n",
- "Processing image 5261: timestamp=2019-01-24 18:24:06.493539+00:00, observationId=o1:6c26572b8721f68eb4e328e7ef096503:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07765698432922363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f', 'observationId': 'o1:6c26572b8721f68eb4e328e7ef096503:00110060', 'geographic_point': 'POINT(-82.0402108243122 27.9941081815067)', 'mapsURL': 'https://maps.google.com/?q=27.994108,-82.040211', 'captureTimestamp': '2019-01-24T18:24:06.493539+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6c26572b8721f68eb4e328e7ef096503%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ea2daf56f9ecf596197b0214de333966deeb6b4c6e17e4bf939630e899eb3c864204c5bd4c8fd9878d9063f1ecb80fc5fe0446a40b66e4d8a3956aca1753d81d827eb288739d573036fa5304a473863a0143cdbb2edac996e7ddb2399145e38208eb18e1ddf7b60e870c3a3eb14bb293a316d4be56f08efb1d71737a2003d9d605a94b264225bdc6d148f8f5b70388ad063b6db00a80c2907e02a5821df76010ba4f2c16fed3f9f8eab6716f862ed8daaf0d7571acbc38462eee97b64077f475337e0180247db2758ba9c010d17d3f602c6a8360694583575135eaff043d35844162bc7af06e7c663932142a40a85c88472338c47a83ee13339e51a84bbc4e8', 'category': 'Other', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3287.0, \"x\": 1766.0}, \"hi\": {\"y\": 3389.0, \"x\": 1879.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5262: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:3f10fc45341f4003cf7967058be749d8:00110060\n",
- "Processing image 5262: timestamp=2019-01-24 18:24:08.217512+00:00, observationId=o1:3f10fc45341f4003cf7967058be749d8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10624274942609999, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f', 'observationId': 'o1:3f10fc45341f4003cf7967058be749d8:00110060', 'geographic_point': 'POINT(-82.0402108243122 27.9941081815067)', 'mapsURL': 'https://maps.google.com/?q=27.994108,-82.040211', 'captureTimestamp': '2019-01-24T18:24:08.217512+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3f10fc45341f4003cf7967058be749d8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06507584fe412f58e1a2413325d5efa84e8674efcdb232bbef2745145b4ca6d14feb7aa77c58bc8ad6c224499145059e0dd81fda272c58ba4e168ac8b73c8277eb672f03592c791edcfe03c10adeeb63ea5642641d7ce4bc05c814d69b79873118a203a295044d7356c649610d67f81946c56d1af327717c47017bd8dae716f6cb6fb2d90975f5ea94f7fb4151561056a85b6540c31d301d8ce6a599598bb5fcaaf083a6a6d9bb6bb5d473e8e1780d022228d8c206a67d9d90701e51f349c387fe7ba72827f22334558f90c1c3f645fb1a16c3fc164f68e53b74d85bfa4806df4cd447eb59fd595cf36e79fb0dabad8a1aad8d86993026616b48ace8e196ffa3', 'category': 'Other', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3344.0, \"x\": 1157.0}, \"hi\": {\"y\": 3448.0, \"x\": 1286.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5263: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:8e66aae0ecdcc9b57070085faf4ba232:00110060\n",
- "Processing image 5263: timestamp=2011-04-22 21:22:43.296810+00:00, observationId=o1:8e66aae0ecdcc9b57070085faf4ba232:00110060\n",
- " Error processing image 5263: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e66aae0ecdcc9b57070085faf4ba232%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82c1291342d9ac3627c21af49d90e57ca3f2be12b36babc9f512f4331f59138621d3dc291e51d713bf727b9c40785f4b6686992c86b2c7159733b89d973f31116be7cb8b92bcc66d3f7cd86ae5ecae881a3c5bfb3a134e662107a8fe71f2258063a38d27f9ee56d3f7d141fce6abeae50799a47a470338e475d2db8045655f50d8ec47d1688f3c7126891317d24a96b9977480be3a003950bb75c66610a45c6f1e586fa9257598e4d5d951c13ae117e1923168e8f286c617239547ae085e57f56eb82670a5b0628f89566ae1d82e0db3714b36b04046850681416c3ba4c509c8827a14d9ab8e372dce6dd89763d1ffa3e65044c57929ab8a00e4d69efd49a991\n",
- "Processing image 5264: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:3b34101af5a29415a187912e40446328:00110060\n",
- "Processing image 5264: timestamp=2011-04-22 21:22:59.101431+00:00, observationId=o1:3b34101af5a29415a187912e40446328:00110060\n",
- " Error processing image 5264: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b34101af5a29415a187912e40446328%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47329839c32df4454ffac2572fe6e886b88fe652dd1eb178a7200ff44aec84a469a18f650ae76b5932a868651b60befcd4e72098622000e0e43b02b837f38025fc16271cc64c9105f2a86bf6853d123e9d14145db787e57bb1e2d043e854d7213ddb6fb5782cca6d9f47913bef0264e6dcfb207393a5218320f976dd1030c0c53e5209905c2e37c3d65a56fcfa4cb9f510c1bba52e3e93aac60d82951e68d34dceb494375c520b117a24a2ed21018c8b7e9c4d34eabdd94adb9994dc2cf93449bbd3b49c06d8ed4bec814c07241bb8d06553b60739b426495954fec4026f79b5b1de1c27c33c10ac9f194fb75cab4d6547b1f1db59600f6dcd8009e89ac37975\n",
- "Processing image 5265: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:5c358ec4397abe20d198079c23f1398b:00110060\n",
- "Processing image 5265: timestamp=2011-04-22 21:22:54.192517+00:00, observationId=o1:5c358ec4397abe20d198079c23f1398b:00110060\n",
- " Error processing image 5265: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c358ec4397abe20d198079c23f1398b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6b292e1010391ff29aac5c989a62b36108f4c24c4e5845cbc019a10a8886ff84e317f18bd3ca71a94c99f14e9082a82e35b189623527bf15fb3c3ead15700b5c50525a0c9b2c6888aa783be890d28d573c72a33e3f1a2d078c26386e92ce13b81dee489e327f998247e5e8dc0cd09b1452c37d06be413a9bb5d71dd48012320f08e4897f31bc8f8f154a34a9f0509c40dfef6671b4f0ea25b9bb9f4a95eff9d38fb578af2c304089c4d23ca79f91db32ce66c02658d55da978db74846b194fa5f91bb4a18133d33250fd70ae13b2901674ebfea7736281eac25bfe0bcd81a194662ed7084368189d55f37ed016f375fe5c5d650e232ce5b9da068c02b2cc9eaf\n",
- "Processing image 5266: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060\n",
- "Processing image 5266: timestamp=2024-02-16 21:05:40.546937+00:00, observationId=o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense and includes a phone number, suggesting it\\'s a parking regulation sign.\",\\n \"image_quality_notes\": \"The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44748988193748274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=113, prompt_token_count=2041, total_token_count=2154) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-16T21:05:40.546937+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8cc3a1b278e1dfffe95257aa0eb87248%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=350f40d715b5bb391336545a299d1e8409e8d7bbe9f0c25a1a66ad1ac49248b3776ef99dba664f2f199a131f339f47bb5356fbdcb1103526e09f06fe8315b93ca8060d4f7d8e177e5a319f8ba89fbce841ad588b76b71cce9a1ae6abe0e610ebb29d905e6fd3beb9e96b48a476e56e59056b019f8fb264eb7bf81cb8ba95d52e24aa63802398016bdefe8d3f63e736442af50d2074a22fc8ca46eb0727f7538d9b4240d8c7db3107f3f42ac82d93b69b7732887afc8d4e77e343443fb9007a5bace7333d6ded931af4e1280e6c65faaa9f2b4b196bbddd9f5c5b849a6d620b2e4fdb43551cb3ad1df97452a6a5daaa2f18d8e5d1677f23f12a73c3127dad9e96', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3435.0, \"x\": 2960.0}, \"hi\": {\"y\": 3623.0, \"x\": 3046.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5267: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:422244e4d2a255f9ec1917e210232109:00110060\n",
- "Processing image 5267: timestamp=2024-02-20 16:16:39.376775+00:00, observationId=o1:422244e4d2a255f9ec1917e210232109:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign that reads \\\\\"TOW AWAY ZONE\\\\\" is visible. It indicates parking is restricted and vehicles may be towed.\",\\n \"image_quality_notes\": \"image is somewhat blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2657577196756999, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry'}\n",
- "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:422244e4d2a255f9ec1917e210232109:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:39.376775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A422244e4d2a255f9ec1917e210232109%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091343Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3160b3c55b9883bec5212f3a5b17ea6a5614760c968a8b67251d32a6caf959d7d43ea1b8a61a1da2a75373020ce964080fd64d2a5c6484318e81f2f6484a61b9969019a285b53d7fb031681a3cfa2e76be7fe41d87592b86b693ae4e8e548b2aa3dfbff83d47afa2e9b51f39bd5176c259b3ba8116e60da520bda42f5e0de88d29ff45ddca071733b2f854ef57e9467e10e919651356de0e36022666d3bd77d3ef13eab12d6d0fc23291f5a9d7eaf5a8b70306c397050034168897a1e45a740aada4b2756c0ce86ce5c81856cf7b16b7c3597ae888e84e50cd25fc76f092853cc8aed17b3cf369737d5903899c9408c372a6b0e061c2b3ee664cb1877767f54a', 'category': 'No Parking', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2369.0, \"x\": 3321.0}, \"hi\": {\"y\": 2455.0, \"x\": 3384.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5268: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:f987ddb5b3e77993536aef1a7b939bba:00110060\n",
- "Processing image 5268: timestamp=2024-02-20 16:16:38.069115+00:00, observationId=o1:f987ddb5b3e77993536aef1a7b939bba:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a \\'Tow Away Zone\\' sign, which falls under the \\'No Parking\\' category. The sign is rectangular and appears to have text describing the parking restrictions.\",\\n \"image_quality_notes\": \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text \\'TOW AWAY ZONE\\' are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3030189446040562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=493, total_token_count=605) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\"}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\"}\n",
- "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:f987ddb5b3e77993536aef1a7b939bba:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:38.069115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af987ddb5b3e77993536aef1a7b939bba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=930b0896ea45b14b9d0f169e5302ee1d7a893ca85b1bc5596dacf70dc8203cde2edd830d27b955d47c6c20b8a6655768f46df1d22ffc20fde56f49887e831afec560367cc969f0ce54dc3bdad0c77b4eeb99dca9110362209e08349ea15261a4d8598a29d06af812f3f67612f3e5ab92e9d5287e2d5776985a5cf67a6d4b9b673c266dd5e25fb4a02d1c4f1b1e7fa15ec30beec32bb73812bc916a2114f09b9cd1b5299589b740096702480aeadf4ca72595f781c49c818e71ee10a25b93c983c803a42f24f10687e2c99b8c1e27fdd19e4f77aee16f36d670f2ebc438fdc790146973e3329ac49793438b4f8b3876c056dc482c5acca9ab8095b448fe3f0d49', 'category': 'No Parking', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3267.0, \"x\": 3578.0}, \"hi\": {\"y\": 3350.0, \"x\": 3622.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5269: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:eb9bd9340602c33c7af255e246155b70:00110060\n",
- "Processing image 5269: timestamp=2024-02-20 16:16:38.069115+00:00, observationId=o1:eb9bd9340602c33c7af255e246155b70:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'TOW AWAY ZONE\\'. It restricts parking in the area.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21550013567950274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:eb9bd9340602c33c7af255e246155b70:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:38.069115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9bd9340602c33c7af255e246155b70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091627Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7982b2b448e9a9c1a8fc5ffc50c5f4525693ba649537dd75507530edaabd7a937db4b844d3246477935b00a1159bfdad9b482fff9c52c5eab0e6934f46bf7eab282be56c253f773c863f0fcc58f14f385bc794345ee8b19358d5f1e5d32bb7b7ed7e2de570b8760520dd751d7532425e87edfc2122aaafd145f6f4800c4ac38b461d9c91b3683e8ee284e2639abb387d6e9ce256d986ccddf012e5e77be50a9b25d6996bbc879c746b85797a9ef891e602f373e1d507bbef969474ee7b0ec1b2adc3db2cbbada70063db9e5c5716396e3bbeb841e69739df5083b732bf187f22e3ba4eba2fd1d439dc33c7aa81ce698e10cbeee9b1f79ccb6d802d25dfe05dae', 'category': 'No Parking', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2384.0, \"x\": 545.0}, \"hi\": {\"y\": 2466.0, \"x\": 596.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5270: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:786b98e995fd517622a253b2be393c03:00110060\n",
- "Processing image 5270: timestamp=2024-02-20 16:16:39.376775+00:00, observationId=o1:786b98e995fd517622a253b2be393c03:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a parking regulation sign. It says \\'TOW AWAY ZONE\\'. It restricts parking and indicates vehicles may be towed.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is somewhat readable.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3568883274876794, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=493, total_token_count=579) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
- " Error classifying image 5270: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
- "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:786b98e995fd517622a253b2be393c03:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:39.376775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A786b98e995fd517622a253b2be393c03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93f30405e6c0eb48d03dbae21a69d3d4ef83f5e788b2a75588325a2bd55d30970efcd6963dc4268648c2e7386a9319e86c8c3863021d71260ec0ca890f70a68099ba58ea5e889abb618f993327f7ec669c25d080651fd278caa3422cdc39b39e592331ef272c755ef4b2af69e7e2f20542730a089738c5b378982826619b2f821f9d541b2b6ec92549d8edf9f4657193a8cd6ce61e62705401b07ee0237c9460df09167be744df223cb8e3f711b06f09c9a8d5beacb029e10478f61b2b88d2a0950539c45aa373dac54422fc04b81c024ecd7dcf1c0bcc67b9f9284c09ec94cab4573852d25e785c19c32ecefa2755349f7d1e5d2ae462433caa97575e8d88c1', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3250.0, \"x\": 285.0}, \"hi\": {\"y\": 3331.0, \"x\": 341.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5271: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060\n",
- "Processing image 5271: timestamp=2021-01-29 19:36:45.532145+00:00, observationId=o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.\",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.295132589812326, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=493, total_token_count=594) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.532145+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae640d1d0dd358bc89ca0ecbe215eb2fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a67364e12c88d406c237c3e8fb9187b22561e5c34215eb7beb56388b36e6cd52bca3629eefa13bb25e02b5a2698a16aca65478cf212ab7e5651e2cc7866ea2dc55d4aacfc76f05df8a314fb7474aa37d6f020c86a61dc457263133f8ce97c7361d74e4602c2df9d468be5107b74f4cd8565f203da4b0baf3e414762aed1fe1635eae8a66e4e7d6fb1ac0aac35b74d63a18d4df8185ce8ac76f457fb9e7ea9b245d165a6280b3c0e46e0cfd44f9c07a36bda1497f5d13b0c8f049e3a49e1bd1d5b6a9c636ca949aaf19a37d5456763416f3b9134b3d58169278bb3f95b85a5cf6b840d6877e0a660d4e17f47b116baf6b2c406543fcf0c43d03900759b8b7a15c', 'category': 'Turn', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3011.0, \"x\": 3609.0}, \"hi\": {\"y\": 3051.0, \"x\": 3646.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5272: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:911cfab425884aa05698139e2f0a4b62:00110060\n",
- "Processing image 5272: timestamp=2021-01-29 19:36:45.884050+00:00, observationId=o1:911cfab425884aa05698139e2f0a4b62:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. \",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to discern details.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3685570650322493, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=493, total_token_count=579) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:911cfab425884aa05698139e2f0a4b62:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.884050+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A911cfab425884aa05698139e2f0a4b62%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1a85887668d7fc0fc1d2fea89f925bcd88b7f2499e52bee0732806899a8654df2080dedb6f8bddc2eebf8e68582c74b67305fd3cb22e789aab5a84c2b762c8f0f2cea7e72440b2cff6b3025e18c0fec06e2e9c1470f901ea93036a95dd42a90abeb71f4660caa4a40e9fda8e19611468927555df73f0ddf0bcc335b4a1c47d95869d3a3147d5e12059b46906c34e20fb498f949b2b8ca28f9b69e81df7ae3a60a525b52e06afb40f9d8095fd35d1f205f589ce5c4569ef84a94f92679c15f4d8f9f330f346c3ac966779c4d4469b8a05250c57fa596f8909082e79f0d95345c773b5b89865a0fdaf05b012d3b33db696b07dcdcd6ee9d11700620452531674a6', 'category': 'Turn', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 3603.0}, \"hi\": {\"y\": 3077.0, \"x\": 3640.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5273: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:e755ca7f3d7e3d9da933551bd7f78274:00110060\n",
- "Processing image 5273: timestamp=2021-01-29 19:36:45.884050+00:00, observationId=o1:e755ca7f3d7e3d9da933551bd7f78274:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.\",\\n \"image_quality_notes\": \"The image is blurry, but the shape and color of the sign can be determined.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45296623133405856, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:e755ca7f3d7e3d9da933551bd7f78274:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.884050+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae755ca7f3d7e3d9da933551bd7f78274%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d28f60cdbba79cc44c6f7d7121b958ae1771693d0e299df11be6140e70be81a21dd75e39a39f1934d7b2a996189cd85ca1cbf7589762c37b4dcd5f25c9be28eb9aab92050a8f546b020e71528028c95f5c51f057bf98b03ad86c17abe3b9a4fd6228683b64cc4c96fa64131fb04e8b4c57b5236713ea6ba80f34f91997f7d9b8b91c6090f20d130e6e43c248f94902597be290ceac49053c9348060666eddbf2cfe8821695cd3856e33a2ed10e405a3b44cec6ccf03d3b0d3ce78d02fa88d15393f064a29c3d53eb85e4eb5a0f58501f9b2d5bdafe22851aaa25a3e85657159925e410f83bcfc89e9ebcb8b45590ca658285491e361e72eed09d571a66476c7', 'category': 'Turn', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3054.0, \"x\": 514.0}, \"hi\": {\"y\": 3092.0, \"x\": 555.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5274: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:3389570e99ee3911ffc4a4c00eb2955f:00110060\n",
- "Processing image 5274: timestamp=2021-01-29 19:36:46.579658+00:00, observationId=o1:3389570e99ee3911ffc4a4c00eb2955f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.\",\\n \"image_quality_notes\": \"Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.46020927010001716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=493, total_token_count=584) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:3389570e99ee3911ffc4a4c00eb2955f:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:46.579658+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3389570e99ee3911ffc4a4c00eb2955f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98f873a81b622a752ae21030134a79324aa5084de739d218fbec8ee0c0c3f29461abf81823be9d9032b59f089f4ffc18a617bd424793217580fe3eb754d93e6ee1c0d9377ca12213ac01570e801460a8e59d15e544afb2833de2492beddb6825619c3ab8d6ab6207e116c50c41cbe04a2157180159c3ebe1d42ebe6c24130caab2107bf20c690a1a46daac5e64afbc790dac87d478e092368e4f257e96a0b29d24ec8998bd34df87fb7d9839e3127a35042a3e62c52a712d4dbc45a0a3591148c52c4ea94cd03558efd7c600a87584d84fff25074687875b44c63389dc6b220b7d46572a0bc7727ff84578593940a588f370e70e22d7158a149a3866caa391cd', 'category': 'Turn', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3068.0, \"x\": 3587.0}, \"hi\": {\"y\": 3107.0, \"x\": 3622.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5275: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:c426865784bfefba0985c239d084be6e:00110060\n",
- "Processing image 5275: timestamp=2023-08-31 15:34:15.792037+00:00, observationId=o1:c426865784bfefba0985c239d084be6e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.\",\\n \"image_quality_notes\": \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign\\'s specific message.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.41833297729492186, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=493, total_token_count=593) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\"}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\"}\n",
- "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:c426865784bfefba0985c239d084be6e:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2023-08-31T15:34:15.792037+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac426865784bfefba0985c239d084be6e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d87a9a49e6425195b58c50ba95398c85c043889ff0fad10e9a8715617b541b0136c91c87a1095c2de5fc517ca8aa50efe0c09edd6c16c5bf5c2e0c153023b8a29991bef2dc09fae3410794b2234eb2d94aaf351004c468017a493a0b5b43cf4131d121f8b96fb7fb7ea1f9172a7055f18956262d4b5d34a4a4ad46995eedac4e020916dfb5208150a6fcab250fb962c1a6876554f01f7282bb8b15d48047a827f6c95815b80118bcbb7e78898dbe48df40b61ca4ec9ab8a6f5a87a9228abbcf7f85d573329695c96a1c9f0466be86924a3eff16153bbb7075182ce8d193c60473d06460ff22a2ecd61ae6f09175c7c7c8c15cd465d1092d9d6acf10220ad8ed', 'category': 'Other', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\", 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3098.0, \"x\": 3524.0}, \"hi\": {\"y\": 3145.0, \"x\": 3565.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5276: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:40f9939f0220f94731195fbe406b47d4:00110060\n",
- "Processing image 5276: timestamp=2011-04-26 21:16:39.981958+00:00, observationId=o1:40f9939f0220f94731195fbe406b47d4:00110060\n",
- " Error processing image 5276: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A40f9939f0220f94731195fbe406b47d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4f6fbd6ce0cc0bf75068748577b027a3b8e0b016f9543d8a26ca53bcaae6b01e1c6223e450db341a9a4e18b7e6cdf16a075e6d285ee992f32e40640211857590591478b25cbc7f166b5342a84326a8d82e242b8b268ec0b87b085d7b9c8c2501348bdad8ce05f10f306227bd785e13b99b010235ef2b04b8d90ad5b685874b7688d832870bf442e514384381cd0b7bdd333627b73662424ce2fc347849ba615868a3d1d877d1290636da109f82c3d810b5f4bb52c480aa56cb0f979920241703d0ab98cadb3dce015c6140a8f5130d58e260c79f1af6171d0c0a1974070e13cba04e72b4d88a6d1bc7d3902bcee063cb6683744f6adcf9ab21dc1258c56b4dfe\n",
- "Processing image 5277: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060\n",
- "Processing image 5277: timestamp=2024-01-10 17:45:35.695464+00:00, observationId=o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign that reads \\\\\"El Camino Real\\\\\". There are two street names on the post: \\\\\"El Camino Real S\\\\\" and \\\\\"4100 El Camino Real W\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30254813300238714, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2041, total_token_count=2131) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:35.695464+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ccfe904760befe973dbdf98cbf8f7c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c048c77028f07c0f6c7ffbb59a0d4ba161548c9751d6d386289a1f26ce46edbe93737839d4832bc56e7fc6bf5e7d62154ba71037fda535e4649bd05670cba57f6ce2dea54dfb26cb68697bd4445f72fe0ce446326822e20d16431fdfe0ab14ca6cda0c91f2650acd83bb7adc17c2936cc9cc1f154ae9ef7644673555c9c398137bb75e49e3f5e90b837058e8bcf2e275504cd2759d186711d5a9984980a47a1aa3cc8c17cfb181b41e5c51bc2b2cef8555bbcda4eb975acb6080f97a5273b01f934f6373c6eefecebd41a45596f6a5fc441e3d3a301953bf50c9f409a5e39b94949b4236cd32db2676d389056d77494f3e31ad46203bd1da6b1a71aa66b79cf', 'category': 'Street name', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2161.0, \"x\": 2906.0}, \"hi\": {\"y\": 2333.0, \"x\": 3607.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5278: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:eb526103f0ce9cf38c03cc57763909a3:00110060\n",
- "Processing image 5278: timestamp=2011-04-26 21:14:37.553442+00:00, observationId=o1:eb526103f0ce9cf38c03cc57763909a3:00110060\n",
- " Error processing image 5278: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb526103f0ce9cf38c03cc57763909a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092317Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=44b8a841b2a119422856b9edbe64ccdfecf5fe47730b983bbffbadf477477f24b325464813aba31658efe25b6d9124cc33f3e4e641057815967255979de94dbf5901586c2b4668a83d56efa5c875ee0713e839ef468b4520b878bf5c5458865e251be8383284fdac2ef94f19519d8bb6ce8e8e0a4113752a6335163b135a1a8dfe552c85c574a4b65bcd5856031ecb0a4f98442b0148b2c49dae293e10a8fa54cb60b3fa4e0e8d35ddb5a2b7f8c1ed741038b1e303f507ba686415e8ba55c16eee459bd65a60614557eb259e3de57ab2a4de27a54b3303d064ad2b534769487c42f782fbe68f933d355e369cc1846df40122543fed7a76024dfbe763cc355109\n",
- "Processing image 5279: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:f525446bfbbfda078fc73f53315dd29e:00110060\n",
- "Processing image 5279: timestamp=2024-01-10 17:45:36.519421+00:00, observationId=o1:f525446bfbbfda078fc73f53315dd29e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two street name signs. The upper sign reads \\'EL Camino Real S\\' and has the number \\'600\\' next to it, The second signs reads \\'EL Camino Real W\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3356810483065518, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:f525446bfbbfda078fc73f53315dd29e:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:36.519421+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af525446bfbbfda078fc73f53315dd29e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0d4a2062a72b1fe9b4c607ed5283e8fccc52ca83770c5bbad7aebd4b60ac9e56ecf80fe476f2a861521b7017766c9ac2148c15477348cb8630f10a7988016b772f9f7a2aeaedb954c532f5491a3f1a6ba192ebd58e75e37798d8e6b9bc64f2d13bb646325e6f3434b68291564cb29cf5c4b0a7efc07d7d9bcdf965547abde12147c6f5696e908f05680b9e19106ac557a7c1fe55a3ba2bc4d966fb3ea44379c67b56a3d5fcb7e4ec0910e03f5de09519104dee63bea8a53483a54a449ca22b39a5fe5be586f19d5eee092e257c30477ee0438f826fa8470da4baba3cbfd53511a137bbd2d1345b83828506caec5d01e7a5e11c98acb82123b4e646c24508df3b', 'category': 'Street name', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1973.0, \"x\": 622.0}, \"hi\": {\"y\": 2170.0, \"x\": 1520.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5280: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:4e6b87993d1989c977749cb0d258627d:00110060\n",
- "Processing image 5280: timestamp=2024-01-10 17:45:37.335432+00:00, observationId=o1:4e6b87993d1989c977749cb0d258627d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street name is \\'El Camino Real\\'. One sign indicates the street is heading \\'South\\' and the other \\'West\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3779532281975997, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2557, total_token_count=2633) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:4e6b87993d1989c977749cb0d258627d:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:37.335432+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4e6b87993d1989c977749cb0d258627d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091205Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7fa5b6de7af489fbdb86f513e0f906a6ecc0cd4f00f8d7bfece2d49c069883fc5bcfb335631dbfc76c43bc3c22a9dfc4610b6278724623adeace9f4fbfb81028d88d721eb79de9dfeeedcf2922c37b5ef7ce52f16850c1d1f7d6743aee373052aff964194f69e7e682d5cb5a8a31d579a4b3121cb96dd54d99ffcd33abced8c8c61fbc742908167208bd21afc151d186c5be75f6037c2535e12363dfd241812afb46b199924b5ce2c100f57a6627ef446335eea815d2355ffd61e6765b59eaa4cb533d059ad7ae9f31312adf5a27b33d480bc017c005f099a8008c08ee8fd599199c7b5a06429f45b37ebf4754532be64df84dca5443af876f215f4932cbfcc8', 'category': 'Street name', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3187.0, \"x\": 2531.0}, \"hi\": {\"y\": 3290.0, \"x\": 2870.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5281: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:a4392f64ced9d720500764a9c4b215ba:00110060\n",
- "Processing image 5281: timestamp=2024-02-20 15:40:55.243343+00:00, observationId=o1:a4392f64ced9d720500764a9c4b215ba:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a No Parking sign with a circled \\'P\\' and a line through it, along with the text \\'TOW AWAY ZONE\\'.\",\\n \"image_quality_notes\": \"The image quality is fair; the sign is somewhat blurry, but the general details are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28624042387931575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=1009, total_token_count=1102) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:a4392f64ced9d720500764a9c4b215ba:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.243343+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4392f64ced9d720500764a9c4b215ba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=07e5e8ced56066d7148bbea49134ef7ec0eb4060dedf681cebcb51f5af365fe75003caaa4a7ec2dbd0ded76bcf9fc94a6dac64a59a4ca4f818ad1fd05d3fe52f39f88c06fc976416ac98c50d3d0a1ab7e3e1984f6d371adf5b358b19a952acc80af2c2ab717334cecda28e08e389de125b5ab72687cfc5cc9dcad767db8752e52edbc711ad39b75001fc2d4cd589da2ee35f69aff593b29c5e13b6ac19eaf29fec791bfb0524291268cc72d341ea5030740834fdca87ac8501e04d46c6f2c0ab3db31370f3497ddebd8f0b92dfe2e6ff4ea2436e85af3f414e344db862b570d2a84e6fbfa86d152b7351190aac53c85a8ca2a179b1709f142649ce98bc0052f2', 'category': 'No Parking', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3292.0, \"x\": 3323.0}, \"hi\": {\"y\": 3385.0, \"x\": 3367.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5282: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:bf03ecfb51496f8b75054c7030ed847a:00110060\n",
- "Processing image 5282: timestamp=2024-02-20 15:40:55.883209+00:00, observationId=o1:bf03ecfb51496f8b75054c7030ed847a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text \\'TOW AWAY ZONE\\' is visible below the symbol.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22656471079046075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1009, total_token_count=1097) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:bf03ecfb51496f8b75054c7030ed847a:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.883209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf03ecfb51496f8b75054c7030ed847a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5efb30031c27796ebc757430d9dce10c41f2c5faaa1c59773420509cbdb5929aaae9262c1ea5f6cc4ebc9af98c6d8050154c2db6df7868e180fa13db80191af6e510ae11bb2c3c709e773a0bf485745b329fb7773b67c759562159e60ce9c94dabdc9b942bdf4ff1cafc3530d8fe05e246be0d1ac036cffdd493e3a4e016af8900d84d1e71f578fedc3e4fad866937bd00bc4d1a4b5c62f09dc115ce4a7b626ccec6ed225bfe0b2eee0a08775a273140cbb8ecd4ac97f2ffebaeee2a84346e33143f2e95eddb495c510b543c6900007e3d68a185c02b6cc62d961ad8843f0db83f17e84f30ba56908bdcc8870baef824ef4c0bc301b2f44372ac6708f3b790e0', 'category': 'No Parking', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2349.0, \"x\": 1852.0}, \"hi\": {\"y\": 2452.0, \"x\": 1897.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5283: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060\n",
- "Processing image 5283: timestamp=2024-02-20 15:40:55.243343+00:00, observationId=o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a \\'P\\' with a circle and a line through it, indicating no parking. The text \\'TOW AWAY ZONE\\' is also visible below the symbol.\",\\n \"image_quality_notes\": \"The image quality is fair. The sign is somewhat blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2250239554415928, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=1009, total_token_count=1098) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.243343+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7a085e69d1d5d63bca3196b6bb311bcb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=101c41e7b6e64f1b0fef28e2c2158dadcd28834d9304ef79b3e169e06815160c6da81d074a50767f337b150aea3ed39a51ad06bebada5ce2ab328a68a5d4a7720de04a8b506641098e14faa48e379de9bfc5fe7abcd93bdf74daba50515319709f6526db91dd493ab045fc3af6e92b49a7ddead78dfe5ff49521cc753eb124516b6507e218214a11aaee67c833d45224afe970aac6e647c18536e64000caecc6f32462283f1299e48335495827dfc8693e2d1870c1e9217c5a5105a3dfbb631e7fe42a28e1a5aee463f76b7f8c30ee2282209d6134c4e22a97a5a398605ace0c088456b5e6a30e584db18ae744fe4ddd1129ba7106447e156842930a9dd16917', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2405.0, \"x\": 296.0}, \"hi\": {\"y\": 2502.0, \"x\": 346.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5284: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:43eb15ab72871a2f5c6e5c72c0286146:00110060\n",
- "Processing image 5284: timestamp=2024-02-20 15:40:55.563645+00:00, observationId=o1:43eb15ab72871a2f5c6e5c72c0286146:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a circled P with a diagonal line through it, indicating \\'No Parking\\'. The sign also states \\'Tow Away Zone\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24718530554520457, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1009, total_token_count=1085) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:43eb15ab72871a2f5c6e5c72c0286146:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.563645+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43eb15ab72871a2f5c6e5c72c0286146%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a75b61c0a24c6b1ffadac86cd558af312461b946abbc25a4705095c373b19bbe3e5fb4b92b22ed9eff98a14ca92fd6c56839efad1d32836eda19f502e5f145dd2dfe2e1e24903ecf3c2b71678d6aa0b310fbe7aee0342ce275d29051c364820e4635e3af93b93d324c4db15dab15dfff561d2c1851fab9d036ac61d890ea5412580a129fed2fc877b13585a3c0f13bdfeda1bedc65cd5a41b27b3bca42724348e54b9c6e236a2c191254cf203b1b65a094ac251dac2f08e1aecf75b58e37750906b2a501cf86a7aac5144127e95696a8ccb5f0d5512acd44b8a64f18deeb33daeb77a0e77e7f6b247d01e7669fd7966a8a9af325f778f554d4be458799e7e2e4', 'category': 'No Parking', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2368.0, \"x\": 1016.0}, \"hi\": {\"y\": 2467.0, \"x\": 1069.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5285: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:87347e13469b33f3b5a8bc7f80b73c78:00110060\n",
- "Processing image 5285: timestamp=2024-02-20 15:40:54.927215+00:00, observationId=o1:87347e13469b33f3b5a8bc7f80b73c78:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.\",\\n \"image_quality_notes\": \"The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4157100800544985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=493, total_token_count=586) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Poor', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Poor', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:87347e13469b33f3b5a8bc7f80b73c78:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:54.927215+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87347e13469b33f3b5a8bc7f80b73c78%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1248270cfef7b2c630b99d173daaa730ea2c198811ddca0510bd25811dd1e9c1b62ccb0514c9a5216f9414f95062baafb683743374d29910be76035c1aae7404e44a251d0d48d33c609ee5f981a18e794e75edcbd16707dceffaeb759e344fe634d7afe85d24a290eee2b9dbde2c5c7a0018e0eea243f1c4424b2ed86ecad0317bfc4e099ff8e7356960f169401384f58e5bb5dcef1805aee1e48da96dc019e7938d6f941b81717497fcc2aeff90db755823991e0ed5ca25c2ace3e9710d5ee1f45038e55c245cb4bf4075493800979d9be3a32b7b2b517a0f0fea459640be429f5b594320c87c338e450edf74735eb7571667aca17c9d5e9a5d4f2f88f89629', 'category': 'No Parking', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3321.0, \"x\": 2769.0}, \"hi\": {\"y\": 3405.0, \"x\": 2811.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5286: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:fdee832723a646d0b39965d668cc975b:00110060\n",
- "Processing image 5286: timestamp=2022-08-19 23:01:45.598415+00:00, observationId=o1:fdee832723a646d0b39965d668cc975b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with a red border, a red circle with a slash through it, and a black \\'P\\' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21060625712076822, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2557, total_token_count=2647) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:fdee832723a646d0b39965d668cc975b:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:45.598415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afdee832723a646d0b39965d668cc975b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a79d0d60fcb97e5d5acb96c2e03191740e2888702ad8071a9f19e3cce208fc5f6a573edcb0a8b5cb88a223fd525e6c8d59b509598d5b8a4f2591797fd0e954b92debb75e7f26e77cdb6902b5a67b4ab693c283decc3bf5f7af0a9299673c02073e771338ef7694bbb2b17f8340cd1559335aa1fcb803c0be548727c4dde525ce2b3c5194e787fbb9435786c052735cf0bebcbaa3796f16712e217341a0e9ea85bb840905f10f1b2d33ba7b7035e0d173ccca26507c2d8b90ca203d1889bf723036acf8549fa4e9c78965ae372ea5dce44dc62e486ebeeecdae63af6aa409946357c07550e50435a69ce6977e4b2f9bea4031e3501ccc693a4d3488cad6297b9f', 'category': 'No Parking', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3091.0, \"x\": 272.0}, \"hi\": {\"y\": 3233.0, \"x\": 360.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5287: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:407d0c6f45244b19d0cf1070421c0e8c:00110060\n",
- "Processing image 5287: timestamp=2022-08-19 23:01:46.054454+00:00, observationId=o1:407d0c6f45244b19d0cf1070421c0e8c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' inside a red circle with a red diagonal line through it, indicating \\'No Parking\\'. An arrow points left, indicating the direction to which the restriction applies.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1898433012120864, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:407d0c6f45244b19d0cf1070421c0e8c:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:46.054454+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A407d0c6f45244b19d0cf1070421c0e8c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=796e34ea9affda71124e54866474e6b7489bcaecf297a3be96efd774b6e167256cee418438f6e5b0cb007362d3272cb1ccba3377df21696079d3ec394fecdb5708264744df2d91f373e302aaa9f8dc917fbc66f4b7e2b0ec65579a9cb62a38a2d3a2fb3e1730291e35c5ef45743dc803d9b4b8f7b7776ef53d18e29a9b5435756de3910a14f32176c97e1420a9fb06b16969c0b0cf2a207abe44b781f66bb0c5f1e45b2cf1293a89243aa7fc5d26647f95c77c68194980c449bdb0c1b5443ca248192594fc78502418a5ae5cba76018641c8d186c44cc0d31f13bdd110beee5d5fca5e261d34ed9ebc6d81ef4842a9544c046f56dbe31d209dcf49c50cf5d48c', 'category': 'No Parking', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2138.0, \"x\": 1793.0}, \"hi\": {\"y\": 2299.0, \"x\": 1882.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5288: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:08a6691f7197622ecc951e196840904f:00110060\n",
- "Processing image 5288: timestamp=2022-09-28 21:32:32.372386+00:00, observationId=o1:08a6691f7197622ecc951e196840904f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red circle and diagonal line over a black \\'P\\', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16495686908100926, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=2557, total_token_count=2643) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:08a6691f7197622ecc951e196840904f:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-09-28T21:32:32.372386+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08a6691f7197622ecc951e196840904f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093028Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=265ea56bdccf44e450d7eb34e82e1f3ffbdf65db4c8c85b4857e0eb724f3ac9c80f4ba426d10caa948e1bfcf80e45592c7f5c070230278a95a40fe070c8f525d2c3cf469b35efc9c13f46eaf35686c0e7232fec80ec147de11dd02f7a0489a5c4891c533fe99c133780bb3fdcf808c95a2de0593f33092cc08c582201d468c733f318543d62f203edf2694397377c50eda26b1c56bd753f8ca3c453fccd3216294f2a696760748ae6173c334417924202a45e3fcb17ba6cdcbbf0df080f41108093361a737681c5df89abfba3055cd871b4f711e2d16d3fff89df1b11b9bf83428467fe5a71917eb2ec1a12ef5d526a01e7391373269ae6da1efc3216bf6b990', 'category': 'No Parking', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2154.0, \"x\": 2239.0}, \"hi\": {\"y\": 2309.0, \"x\": 2328.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5289: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060\n",
- "Processing image 5289: timestamp=2022-09-28 21:32:32.072372+00:00, observationId=o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white sign depicting a \\'P\\' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21229031085968017, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=3589, total_token_count=3669) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-09-28T21:32:32.072372+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6d70cb5ad68d49e2bb43cd63b844fff7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f515d5c1e24bc97b4fd87eb7ed831a3894a498c5d08fbdcab8c005a832f3b28ea3475e2393c8137449cd7b2bc2c1d41e53a5044f1fa420e53eb883325233b76a4c593555e0472de10bdb10630c77b98f95f2b5109b7382f00e868a0e87fe803b9907b00ec676d724c1ee77cb3fcaf3083a2381223cbeac2f4f265ce08f30f801a2df1d5d3e36f21f9afef95483eb92a329439bf8224c8944d956db817a655814e7194d988eebf35b1a542fe55009c17ad5d4a38c6b36e105266d752ac41d8db9882e90d81b526541917422c427a81ca803aa07d32195e818697a9d5f26169f348754b8adecdb7c9e885a545098caad8972f48a9872763e85d5876cfe19914eb', 'category': 'No Parking', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3134.0, \"x\": 652.0}, \"hi\": {\"y\": 3259.0, \"x\": 730.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5290: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:f4e1663db9292270e392a75bad9353c2:00110060\n",
- "Processing image 5290: timestamp=2022-08-19 23:01:45.598415+00:00, observationId=o1:f4e1663db9292270e392a75bad9353c2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' inside a circle with a diagonal line through it, indicating \\'No Parking\\'. An arrow points to the left, indicating the direction to which the no parking rule applies.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19539519562118354, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:f4e1663db9292270e392a75bad9353c2:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:45.598415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af4e1663db9292270e392a75bad9353c2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1abbbb796799074651519b5fafdd1785613d46acf2be84ca276eb64e9cf1c3090ac57addadd0d5138b3d6daccd7cbfe15cda60b66581f5fa2ea0af632683236b3ca8844b080bd68e30e91386286581c06eefcb65dcbbb339e9d0e07ee39644c16bc75f5dc1afc01399435271a8c6fa5d75487547eff8f29504f5f2f5d850102d617d7585075687a0df5a044e4eb89ebd3253f5fb8d591032a105f16f656acad095b0c181b12deff859e465ef0222e971fe77cc6822028e45af3149a5c85faf11f59aa8c7c40737538736d630819fae8a4d4b288a226b385ebde5db728ae72af055c3f4905e3a790b8009dbc109312d4bab181c0f5bcfc1b5ff42f7ad4f3e0597', 'category': 'No Parking', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2199.0, \"x\": 3282.0}, \"hi\": {\"y\": 2344.0, \"x\": 3371.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5291: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060\n",
- "Processing image 5291: timestamp=2022-06-14 21:35:04.147747+00:00, observationId=o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicating \\'900 E\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1388813081334849, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:04.147747+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae7ff96b7e4121ce631a9d987f9e245fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b474b66c89133146080c855544cf6c9c04ad7980ac3abbcdea215a1c066d7ab4612cc15192ff0731b37da92efa108efc2f9e81f6abc2a8e91757975bdf068ac4704a7fea74d2dc07d48ef775a2bb48abd833645cab2a8c779588aad127ed7cde96e006c50fa7c45c85fd444bfde051352abf047dae468ea1c2b4ab23ea13ade428b32c800a11f06da1d9c8051777e06a689a0c9eebad610f6546375a1f41dbe2a203ce5ff5838436b8d3710ac5ca7da2b651e5c598537bdcc7e171b567b6e0a83db9742e1d0502d4c10fc05ecf46978545fc0133e688f30b7535e86a319b6c71691c07dd424f7a7719c6d4179966cdf4a0439f2183f65348ea98e023414a2019', 'category': 'Street name', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2812.0, \"x\": 327.0}, \"hi\": {\"y\": 2894.0, \"x\": 473.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5292: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060\n",
- "Processing image 5292: timestamp=2022-06-14 21:35:05.423688+00:00, observationId=o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green rectangular street name sign that says \\'900 E\\' in white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14556987469012922, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:05.423688+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6aa8ae304af615920bfadf3d7ce20b9d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=42d68abb9c7ef09be232e57f36e8a2a768c6ba077a8a10b3262fca88c5ff3844ed1acaa10f369b97e8e124b0d7cc5883150b2aa1ff85bb5490436259939287de8d26d1f8fe9d2f61a51edeebc70456da18a91b567eac8d334769caf4819188452a4b7de43bf8525ac74cad8e24627ee728144e6c6601c9acc8277fa1d907fb054af1e1da0414d372aa8421c3f69f4eb40b9b82763a8081ba1703baaaea4b5d6c16ea556e850328c150703af013ef1dc414a0147f7630724fb6411fbe8cf61b8cf3e60f1b32d13c7c8da3d08988bfedd07937cad5474f0c4acc6dc93f9f6826eee815fb8ad46e478ea754ba3bf18aa2444004115c80db0cffe783d0958f119781', 'category': 'Street name', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1835.0, \"x\": 1756.0}, \"hi\": {\"y\": 1925.0, \"x\": 1937.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5293: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:5f72bedd3703335aa4e19f337ea51787:00110060\n",
- "Processing image 5293: timestamp=2021-12-07 18:47:39.686234+00:00, observationId=o1:5f72bedd3703335aa4e19f337ea51787:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a street name sign that reads \\'900 E\\'. There is also a pedestrian crossing sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1515200478690011, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:5f72bedd3703335aa4e19f337ea51787:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2021-12-07T18:47:39.686234+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5f72bedd3703335aa4e19f337ea51787%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9373593c620218c2be412827d3975948b051ea1628f064834f480faf2015704ea5e9df0717a418a08b2a8032eb37a339c6e26b9602894e800e312dff7b01bd43e1e14d79142ada990235f567f0e849385ffc5ba0295ca1e0dd483f1e75a0bdd94fa2270374a2cf15283fce6a95581650be1242bc6bc46882d7cbef6625c999fd2d693c1b96f68aabcd77dee4e4c37a3409faba9abc3bace45ab49e67ffe26efe59ad657b94b2a601b12b1ec1828056f93881db80c03b80c2b0550931bbacc731ff80fb8ba9e54d6e407844c93f1f85a81e231ce8c08579f26ac31ae1c5e3382fd624c0d627494d849751ee6368accf44a3ad9df1347d4ddbcae3941371ea2aa4', 'category': 'Street name', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1873.0, \"x\": 1432.0}, \"hi\": {\"y\": 1958.0, \"x\": 1574.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5294: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060\n",
- "Processing image 5294: timestamp=2022-06-14 21:35:04.811743+00:00, observationId=o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'900 E\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10371051629384359, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=3589, total_token_count=3649) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:04.811743+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab802f8cf2ddd7e7d8406a7c20a38fd91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=44f49367d7fefcc5643de935158441ca26f274b793ccfeba88a9e61a49a25f64dfd91818a998d5d4be2f986b5820ddd0bdb4e39dbe29ac77db0be5cac2e7d75360499306b736cc71b2c1ebd26b1fdc479bacc7a9ee781be4935cd786eaf5e672f74a973b3e126c9bb2f6bef71329123ebfa2c4ede6b4557ac4030c8df671324405fe60fc124ce4bfa1b4c3fecdb9f4a054c5948d44fbb29e642bfd31fdd8b734d3fe8f4209915923378eec916bbd7861a4acd1a8fbea44a2b3ce17584a9f2dad1fc8a5c76f59aac08236b548b3c9f01d3d175786a51ea8a2df122b44590f01de03f11a87ba32322d67db9fc040418b5e6934ea0a5026256c4e60349d180eadd5', 'category': 'Street name', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1861.0, \"x\": 2630.0}, \"hi\": {\"y\": 1938.0, \"x\": 2804.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5295: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:fc8931f056a97764a05b384f7906e4fa:00110060\n",
- "Processing image 5295: timestamp=2022-06-14 21:35:05.999601+00:00, observationId=o1:fc8931f056a97764a05b384f7906e4fa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"900 E\\\\\" indicating a street name.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20056185175160893, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:fc8931f056a97764a05b384f7906e4fa:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:05.999601+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afc8931f056a97764a05b384f7906e4fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=85be1e3dd35956a258599a4ba314139ada983941e7a4f6eec63dc1281c451f231012dd9e9d81b4035f6ac438fba7ae2817f64ec8568d2c3d09ae47539f1ec086d3e9ab20537b0c97b27bde3313c1b3c9456ef7bd51d6f177007d768271f36d9b677ee94607f76d8874713d24e44a310282044069dbbe64a4bdfb628d8d12c86223d3ea61ddd56c640213d5d32d054b846ba8a3887287b8ec9e18f189436967cb499732e4d16e178dd2a8977402171db680f9dacd391cee4b50fcf488314bb5fe3b470e3dac029dbd767a88299271296d3f7299d993a604b25b914dea9028b5ba0ae1ffa50c63c7471a883c0f40c149423d99cc9e4ebd5f37005fba86419445b3', 'category': 'Street name', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1872.0, \"x\": 906.0}, \"hi\": {\"y\": 1968.0, \"x\": 1061.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5296: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:e419706f1f59cbd69dd5d6b31fa02479:00110060\n",
- "Processing image 5296: timestamp=2019-09-27 18:07:18.119830+00:00, observationId=o1:e419706f1f59cbd69dd5d6b31fa02479:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35105607623145696, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=1009, total_token_count=1093) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:e419706f1f59cbd69dd5d6b31fa02479:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-09-27T18:07:18.119830+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae419706f1f59cbd69dd5d6b31fa02479%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ac2fd606228f7e4aa829f7b8d7ddb61e02611843ea474d42e6a7299ba1216d9d6e109fca8b496174fcf2faa97b76a74a02454fd54abb05be23536ac51e40887a02bf23418d510a21c6b66600288c79dde05deca54dfe4e938a778642427974f23e6d1e3a738ef8f2467c09a78d9737f590067b5337e755e46009872a69b60fdefff2e47740f9fdca6b8ee3f1c1d6da4decf34758f4297bbd4e773cb1af4bc822fb20a84e04f9308e12e352d0af2e2e993f526df4afe20e7433d248dc2ca054aeca2eb5323c490af1d555b00f1e0892e8c8fecf13322da416fd33e8c90063f9c0b34b42bd02027dd12c9d260b7654f65ae80e3ed62ab9f0e42d9cc8470e9d17f', 'category': 'Turn', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3282.0, \"x\": 2116.0}, \"hi\": {\"y\": 3370.0, \"x\": 2154.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5297: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:1509ab846a6f17bc4d988194497b5d99:00110060\n",
- "Processing image 5297: timestamp=2019-09-27 17:56:12.593867+00:00, observationId=o1:1509ab846a6f17bc4d988194497b5d99:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15994155066353935, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=1267, total_token_count=1337) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:1509ab846a6f17bc4d988194497b5d99:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-09-27T17:56:12.593867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1509ab846a6f17bc4d988194497b5d99%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=005bcc49627318f56392d0c3e9f1d4fac34872313d0f83666e7cd21a2e5de8f1a96ea67f50a776b24b5ca4adc03a8abe004379b050dcad687f007700352a280e27d3bf8a1028628957e209c968dec731b34b7efc76f12a66a1dcacf5399fc46bf89b315b5e4b0130ca4b3cd614ccc497df5b7c7c9793926d81a56fe598eb3c2474c443e06d6ed91c0624273751a2e7885bf8653e9fa172ccd4fc4f3deabcc3ab184c1df2000aa0c1c7a35638d8d27e89ae4ef735ab073e8ccffe223442f0774544c2e26dd76b18ec1255a8f3fd8594d731a4b0d24eb2d41b3893cb9a277b036ec979f982ee3b798168a1062986a7b953ad784f0549da8eb0c2ecc2a29494b61a', 'category': 'Turn', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3340.0, \"x\": 2373.0}, \"hi\": {\"y\": 3457.0, \"x\": 2409.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5298: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:2bf95ea48bf58fce69500946fcf6adc7:00110060\n",
- "Processing image 5298: timestamp=2024-01-22 19:20:57.277268+00:00, observationId=o1:2bf95ea48bf58fce69500946fcf6adc7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a turn. The sign is yellow with a black arrow pointing left.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21635465218987263, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:2bf95ea48bf58fce69500946fcf6adc7:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2024-01-22T19:20:57.277268+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2bf95ea48bf58fce69500946fcf6adc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=897bf7cd9b979a47fd722c01aac47ef5787fd1c8a3d2cd1e8109122376b9b5218aab3c87f51209117b119195ae212cd3254b119c2f4c1a0379d66d0535a1bc8577f4b2231c46a055efb1ffe68a1ad8a889c62292794b1ec2216e58490014f6828d390859ad9ea52bf5b96b1f56fe73d9592b4ca00fd136eacfde6abefed4158f22d171368d4f23d5e669f7459efce6940402f83a7e250e50ffb826b70f6076dd2a47cbdb922ba760b55458beccbf224f8d3cdc80d34fab0ed54902e4260d088687706e8a80ef3d09031ff419d30ef8e411e8310f47b1f91bceaab86d134c6d81591c28396d38892debcb6ed9e39311ad4c9830529233962e69be3183f978597a', 'category': 'Turn', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3250.0, \"x\": 603.0}, \"hi\": {\"y\": 3293.0, \"x\": 637.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5299: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060\n",
- "Processing image 5299: timestamp=2019-11-06 13:41:37.852566+00:00, observationId=o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.\",\\n \"image_quality_notes\": \"Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44139215010630933, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-11-06T13:41:37.852566+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aea24ea21a444e554aa73a3dd2a5500bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a51c15c96f98c29b96c059c9fc2258630be6a2a154cc9bd5facc5a61fd606f4eb6d3cf904c6a219edfaaa132d587b78abdfd968851c275e5627515cc529198e39597fad85aceb7784b9197e83174539952dd46a9e05ddf1efadd870183153887e161a548160901bcb1e19df790c5ad9566f7c1104bc540de54250ad9716f2d7c0855b826a355de3d5ce5b43eed844c8058312d83eb3fa78e86d545a897043260b4f6594a4668721595dc9a3c7745a83e787e9ab263bae1b43147e79f3f651fc276f614d62c79e5844495b00b949e1bfd0eea551e3779c7663c57fd96f9f10c888d3d598bc24bc3020f72b0ae091f72bca740c5c8366e33e0db804aeb16e9374', 'category': 'Turn', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3266.0, \"x\": 2113.0}, \"hi\": {\"y\": 3364.0, \"x\": 2143.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5300: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:008f5666af4fe4c65fa553f0a410c25a:00110060\n",
- "Processing image 5300: timestamp=2023-08-31 16:34:10.776772+00:00, observationId=o1:008f5666af4fe4c65fa553f0a410c25a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign with a black arrow indicating a turn in the road. The sign appears to indicate a sharp left turn.\",\\n \"image_quality_notes\": \"The image quality is poor, but the sign is still identifiable. The arrow is pointing left.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3809599034926471, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)'}\n",
- " Error classifying image 5300: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:008f5666af4fe4c65fa553f0a410c25a:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2023-08-31T16:34:10.776772+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A008f5666af4fe4c65fa553f0a410c25a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4228e2f00a6ab90ef92a489a36843379bf6c250376cc6a379d26895a2a3b2668f18b5a53e97a0899ec4bea490897745ebfde0a911c9b1e38bb4256490654f171f3d65723f5aaa8085225c85e129852cb97875505335e0b9cabe6819a60b72d9e9526a4c3aa3e587d762a3a908937757aee71f84a2048cc8cb1e78014e60d5e86d28d91e9a00a1bf00e6dd658af817c1c1abe376606d0578593722dedde61f066e2d11dd0e2e1a4707e45d37b9c88832809966fede03ef41145b92a346a53721e6d9de2ae67372e45061c36dabe240807b53c0dc2693d2c3ebd7668d9f08149cf94b330fe6cee741eb7b609b793b6d54fcb73269caf76f5ce151624bb6410e2ec', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 807.0}, \"hi\": {\"y\": 3239.0, \"x\": 846.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5301: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060\n",
- "Processing image 5301: timestamp=2024-01-22 19:20:59.012768+00:00, observationId=o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow turn sign with a left turn arrow is visible.\",\\n \"image_quality_notes\": \"Image is somewhat blurry, but the sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2733204292528557, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2024-01-22T19:20:59.012768+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5b659f29e0c2afa0b6c95cb47dacc627%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ad31dfb50275f6cb41b640a62b3694e08eea224649e5b306500985e488306a09c2485914fa71b4aec976d9c0f15ad43716d148548289ea872cb0813ad53b7b129bd7513324577fe4f186fd9e94631feab1c0e5c991d33a89b3f8dc99ae73ea27896262c600d494106ee9b379caa99f90868a480d49828f0d272fd403a33a29d432bd3a7674537894770cd8c0b544c10fd262bf4b1c5c6081f46122da203dd47392f6959dab1a659b109deb6910b8ef2bc11527e84e5df2b419f55186d59f360fcb5990961299291fb1fc2be148cdc86fb36456f95336a4ffa090c99d92c6148bd7ce0bab9786822295c2731b973f2f6cbc7323c69c95a3bdfd094734f1cb7cd', 'category': 'Turn', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3282.0, \"x\": 766.0}, \"hi\": {\"y\": 3343.0, \"x\": 821.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5302: trackId=t1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f, observationId=o1:0ff1d00ef453631cc12f33c08289bab9:00110060\n",
- "Processing image 5302: timestamp=2021-11-30 20:30:50.733136+00:00, observationId=o1:0ff1d00ef453631cc12f33c08289bab9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Multiple signs are visible, including \\'200 S\\', \\'Dooley Ct\\', and a \\'Dead End\\' sign with an arrow.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2180980173746745, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f', 'observationId': 'o1:0ff1d00ef453631cc12f33c08289bab9:00110060', 'geographic_point': 'POINT(-111.867108602528 40.7651415488665)', 'mapsURL': 'https://maps.google.com/?q=40.765142,-111.867109', 'captureTimestamp': '2021-11-30T20:30:50.733136+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0ff1d00ef453631cc12f33c08289bab9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4e48451c893aa228d158a0f0cf439813592927b6f099ded544d67fa145e42f1b385e8562cffdda172fc3bad6d6aa16bc2c7d4435864c07f728b489903d67bbf4d49d2d15a0e9d1d66fc2556de9cd66d1824da2b27adababa7ba056c05af95c32e6cf2bccd0e26e49345e243a8959faf9496c8dd150c882378fc98a64b74ce6b3ac7e5431f4d5884e993f6d7c7dfdad8abe52f78422297c2adc44a7864e0484794bc24b5d2e558c82914cb004a21c0233458c52d7a6fe231a8fffd8a6bf025b975357b6fa0067357897a276ee823c5fd51d34d553ec170da4590c5c7abf5ca92bc50ae3f016022078521afca991ac19d800d132f02e5581d285a390f285e2ad81', 'category': 'Street name', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 2051.0}, \"hi\": {\"y\": 3071.0, \"x\": 2103.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5303: trackId=t1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f, observationId=o1:68bdbe016398c0888e30dbb698d9c4f6:00110060\n",
- "Processing image 5303: timestamp=2021-11-30 21:25:04.086207+00:00, observationId=o1:68bdbe016398c0888e30dbb698d9c4f6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains street name signs with the names \\'200 S\\' and \\'Dooley Ct\\'. There is also a \\'Dead End\\' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\",\\n \"image_quality_notes\": \"The image quality is slightly blurry, but the text on the signs is still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38598065671667586, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=113, prompt_token_count=2041, total_token_count=2154) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f', 'observationId': 'o1:68bdbe016398c0888e30dbb698d9c4f6:00110060', 'geographic_point': 'POINT(-111.867108602528 40.7651415488665)', 'mapsURL': 'https://maps.google.com/?q=40.765142,-111.867109', 'captureTimestamp': '2021-11-30T21:25:04.086207+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68bdbe016398c0888e30dbb698d9c4f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=95a8bada388a8ed34cf8980ec55fea9800e2195bcd9b8f011abe8762fd1361d438d85a5eacbe5d72fc30301c4f09e9923fca819fc7bd1b81559567c572853a7f0c37dddbea118869f0518aeb4df3897d5d957b6e686236e47a118ed99351fc9eef7f5cb2e6252dc61caceaa93bfe62fc1429f8becbbae64716db6db39ae20cb516d504ffb445cf4266f9144d16d3480af8593390ba93fff3d3790e9264dad173e3bca3ac6e73c4edf6e4e1c19f0ce6c30b227440ea83d7850059cf712b476f1e0b32bdf6ad71c21829274ebc2b1963ab0b576e13b2d932d98c24088eda9b3d5439b4ddca3728787b635fa36ded81afb6160fb5b6827ab609d511e7e62caf5f0f', 'category': 'Street name', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3023.0, \"x\": 2266.0}, \"hi\": {\"y\": 3059.0, \"x\": 2337.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5304: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:2255f598f2f5a609bf503dd2bae88db1:00110060\n",
- "Processing image 5304: timestamp=2022-09-29 17:08:09.768265+00:00, observationId=o1:2255f598f2f5a609bf503dd2bae88db1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names \\'1400 S\\' and \\'1300 W\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15247137650199558, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:2255f598f2f5a609bf503dd2bae88db1:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:09.768265+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2255f598f2f5a609bf503dd2bae88db1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7bc270d4c01bddf1572cb816f7fe519155930e61b8cd58ddba950dc24ff69a02453f239915f2912c4e9418e6e55c20bf210bc2fbd0b90be33d5e9fb764a266a6e9ba728805338d9069ea4bf5141ef508f95129351fc51c1394f147ae03e774babfb68bb996c39f848746b04fd7c929aa8ca9365ef5c0a120efe2d6bedbb058a77ea77e3e935f2333d01aeacdbae54cbbaa2bc1c98cca68a8fbc270f9cd3bfc225d3e8d184dfe247628e90ec1410d86f0bb8602f9cf14a39f35e7a23819a94295c386686511b6f7be56e6a825ae8b638d59d92c287ab9d2ad879a8480ab1e19af58f97aabb79024bdda50c56be10667121eeea9c746076e87411c0e4fb4746e35', 'category': 'Street name', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2113.0, \"x\": 2672.0}, \"hi\": {\"y\": 2196.0, \"x\": 2901.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5305: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:ecbf31fe3498dc778872be589d309cb0:00110060\n",
- "Processing image 5305: timestamp=2022-09-29 17:08:34.835359+00:00, observationId=o1:ecbf31fe3498dc778872be589d309cb0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate \\'1400 S\\' and \\'1300 W\\'. The neighborhood watch sign has the word \\'WARNING\\' at the top and includes the text \\'NEIGHBORHOOD WATCH PROGRAM IN FORCE\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2302413298704914, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=3073, total_token_count=3180) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:ecbf31fe3498dc778872be589d309cb0:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:34.835359+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aecbf31fe3498dc778872be589d309cb0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7dc0891dac85cc1a52280b398782b5b3a22d5c41f0475cbcda6eea537e9ae665a9397305d6b2252a97d64982266d3cce6f2451786963e4ebbe4cf64bd2a5f6f39703b29ed38e9792f035fa2c0cd5a9a72b776edb59d5f73e343e9d60d47b443eb77168c3425ab8cdc4ec2ee092dbd39a0ee4d8273aebede4a7731b080d467e8c2146443346b2afbba7afb2e5823a3589a2fd26e775e6cfa0bac42ca55ad24ca8c589e4a6ef76c01ebc80e683f7f0ee797a2ea0a6b4fbce4f1c9af7ff7674413279c1532dc4a17b142a88e3b3d4a0e34048088a9e299de10ed423e4d90b2265916ef41585abff992b0f190d414dfb8c273a6cdec13cb791c73b0ae7058a39fe8', 'category': 'Other', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2076.0, \"x\": 1245.0}, \"hi\": {\"y\": 2191.0, \"x\": 1414.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5306: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:82ab291e21cae4ebc60ca9d8a0889600:00110060\n",
- "Processing image 5306: timestamp=2022-09-29 17:08:33.623301+00:00, observationId=o1:82ab291e21cae4ebc60ca9d8a0889600:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating 1400 S and 1300 W.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12662605617357336, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:82ab291e21cae4ebc60ca9d8a0889600:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:33.623301+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A82ab291e21cae4ebc60ca9d8a0889600%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9148dc396ca48ec0c033d717389709e4cbe5d7c05b8b3f6d088f15632cd50144daf9fa6dadf2576f2f26c2d13e8e5938935d39e7bd9de265dda28285e7b175a6e1adb7d6adf0e685b878a951f5541998bb8d03cb0dff35a5c7f84c49cb1bd8bb5db2d9aef81d4a59227ce6acfd4af18ff53130e92c595cce65abbe6dc5d0f3f0545d39a1b57295fee5417c607878c3288177f1790e7d37ab1359a6c74c2485f4bb5e5417b52b01753772507686123f209962a931c5c0710a3719ef21fa9373521f2e8e5fc7356efee0fcf7de4b71633e2e2d999df71c983edcfb4ecf84542963241102332e5d6999c2f40d569bca29d96c7111d9bc41bc589eb160982c443a34', 'category': 'Street name', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2009.0, \"x\": 2428.0}, \"hi\": {\"y\": 2109.0, \"x\": 2754.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5307: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060\n",
- "Processing image 5307: timestamp=2022-09-29 17:08:31.995413+00:00, observationId=o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays \\'1400 S\\' and \\'1300 W\\', indicating the street names. There is also text \\'SALT LAKE CITY\\' on each of the signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2280787524055032, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:31.995413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fca1a28f1eea82de154e8d69a3fed4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75ed69dba5f0a824127fbe76311bfe2bf7c6efc9a5b3ef9bf2af4d6d8c8915b6c87d6fa761053c2c45bf4bc426b96f55cbf8b57e3a8ab8ba20ec9d2d1087c56764328e46d1e022f7e5270598bf379c686c3041ed52d4e10f2884153af4506c1d13b3d86f1c61a4aebbcf12a969f5b109691f388315bfdaa8614e0e10564fad889b89de479dc336ffb324fdb689c41fdcee9d7b105583e8f6680eef1e002b81998a1455360ef83a96f5cf767fbda7b661f07e80445687d74756535c4ca224a35b7d8f91a601d0c92ef687e660ff96dafea8768d6ce1ea4ced4ddf89491c2bfa39a9dcbf9915bdc688162351433ed1b5e23c3778ca36f07360d36b5d3cda29e366', 'category': 'Street name', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3208.0, \"x\": 810.0}, \"hi\": {\"y\": 3266.0, \"x\": 977.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5308: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:d2aab661e497c27fbaddb76903371a77:00110060\n",
- "Processing image 5308: timestamp=2022-09-29 17:08:08.647914+00:00, observationId=o1:d2aab661e497c27fbaddb76903371a77:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are stacked on top of each other. The top sign says \\\\\"1400 S SALT LAKE CITY\\\\\" and the bottom sign says \\\\\"1300 W SALT LAKE CITY\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11449600605482466, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:d2aab661e497c27fbaddb76903371a77:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:08.647914+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad2aab661e497c27fbaddb76903371a77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4f4f6c71ffbba78439a1c9f2fe23b1e4d2dcbe510616066eb57ee26060bee238e6049963e4f1ac0f99e3b72cd8589e7952e16ce08ff4fe7bcdc97b99d07f9604fde6f002abe4221627ea56263be0cfcd186ff3ce63b0ba36038cb1abfa00a551bfbd69a5eb811bc43bc2608f52a99345c053ecb839ceeca5234ecca318ef0995e3b02fcffe07e6301e6154e8022c0a859b34e5acd7b8272684febf237a253f909e3406293f9a22395ed42d70a517a5aaaa61d021363c96a572d5efc73a1b67e497d9bdccd26d3ee5834af9996a0a5bd2ea014514b1fc32b785848b97a5d4323fbfbded4fd6862eeddd39cfc2e042a12479c198ec1bbd466d65ce77fc32bfca4', 'category': 'Street name', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3094.0, \"x\": 2735.0}, \"hi\": {\"y\": 3157.0, \"x\": 2886.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5309: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:e10459727b013d0fca9c20cd450e7017:00110060\n",
- "Processing image 5309: timestamp=2022-06-14 21:38:05.596714+00:00, observationId=o1:e10459727b013d0fca9c20cd450e7017:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'No Parking\\' with a symbol and arrow pointing left, and a \\'2 Hour Parking\\' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32063996350323715, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:e10459727b013d0fca9c20cd450e7017:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2022-06-14T21:38:05.596714+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae10459727b013d0fca9c20cd450e7017%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=76e1aaed2037fc2f0529d5418cee6b0e8f4b1dd31a0c17015cbbdbcac9a06262b1cfee813840fc0a020dfd11b4b3407e97fdfdd601bf4d46d101de9790a4c22fe34e81b462da09c91aeb5c5cbe845ca59710297f9777f9a3f785da34f1c9687ef69109211d7da9881df787158959e86e2e4b7534c1791678489db73cbca02220a92d7c2c02feb79ecbc4c7b079a0a4ab16925ada3509dfbb751b41f19033d0b84a0ea5c5d39f70f8beff839ec636bc7895ec64f49294af8991e26d6296f7e34dc9f3ca1e5bdcfc7a0702dabfef6e5113c6f145e6a7f17cbac277cd807dfa64b8224c90cb4509f8655c088bd37eb919164f4a24a66e8a50cfb054324433a667a2', 'category': 'No Parking', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3227.0, \"x\": 2873.0}, \"hi\": {\"y\": 3358.0, \"x\": 2956.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5310: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:d3cccf40cf3601dbbd59f91cee458f81:00110060\n",
- "Processing image 5310: timestamp=2024-07-23 21:35:04.750128+00:00, observationId=o1:d3cccf40cf3601dbbd59f91cee458f81:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' with a circle and a line through it, indicating \\'No Parking\\'. Underneath, there is another sign that says \\'2 HR PARKING\\' from \\'8:00 AM to 6:00 PM\\'. The signs also have arrows indicating the area this sign covers.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43202989910720685, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=109, prompt_token_count=3073, total_token_count=3182) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:d3cccf40cf3601dbbd59f91cee458f81:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2024-07-23T21:35:04.750128+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad3cccf40cf3601dbbd59f91cee458f81%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4ecebdf4bea60260fa3778b26233468324c8091f630a326eb082f64ca2c5ef0ac4bb3dded64d42d4645c1aea6616493ae19d6d09c9a22d5206f25ab54c5d121efa01a0bcc9482c8c30bf06486384867b4af585546307f3f5d63e881eed66acccbfe5e7796178cb657b0e24ed838a2d6474755aa98f8ed21ae9519aa03138d4c96010be35aba0996b416461badf11a6b5193546bbf0203f20a620123ebb781c15d640e2c812541e588cd08cc20900e3008836cd3cc6582402f153d69f43dba213ee0692f9ea5053a7d5e5f70230185063c97ad5e0e8af299250aebe5b968b4556d4456dc5ab63182d70fb9aff9caa04e9a7c1bc095dfb513e4b1f91653e765566', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 612.0}, \"hi\": {\"y\": 2447.0, \"x\": 717.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5311: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:48886a88ebe9622be41dfc0cee781607:00110060\n",
- "Processing image 5311: timestamp=2021-11-30 20:47:34.763414+00:00, observationId=o1:48886a88ebe9622be41dfc0cee781607:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'no parking\\' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3042126304224918, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:48886a88ebe9622be41dfc0cee781607:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2021-11-30T20:47:34.763414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48886a88ebe9622be41dfc0cee781607%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6134d39f170d9888ad8e76e7995f5cb4616036fd2c9abc8b7c7d05deb951394059bed8559bbbbab9eb6aa2e7077b8b354fba401a1965f9921fb449b69fd7f28f479ea590007364983b782c9390c628fffeefa49d9cfef4b00a7c9607c329515e70b5ad948e7a9d0c6238ebed00e9a4d895ff640837ec3a18702cfd55c9ee3e543c2f7843afde1033a1c4f0b0dae14ad8b51276f3c4fc9067e4378914d3b4d5ab38fcdd2b02e304eb29fa97eb7df26c82b7e7d22d029a8dcb9e767365f7dd6a70095c25487b14e0efbdef5607c2667b63bc28c46fbab08fe6120427fd8240b81dfaa0408a9db310accccd67f0a78c315844ed712bf15e7006df19af84fb5b131c', 'category': 'No Parking', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2277.0, \"x\": 1046.0}, \"hi\": {\"y\": 2435.0, \"x\": 1134.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5312: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060\n",
- "Processing image 5312: timestamp=2022-06-14 21:38:06.072792+00:00, observationId=o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19901696762236037, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3073, total_token_count=3174) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2022-06-14T21:38:06.072792+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae1f5ac6ae4a952b35b2c4e5e886287e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092516Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1e7f188793febf903301898591c119341adc13320cad219d269cb782caf35a2f519738e849d0ad4884eb4a4b820f44bcddb5443cdf0255feec38ee4a99c5e3a5d88378dd203c312a4904b4b0c46aa6a71dd43094d6d3bed31384f7647ffb76314c9261649a31297363e86474ba601a4aaa1f6aa634c5b29b379a0b7d6b31fcfa8e7221521517e87ccf4f9ac5b53ca7f154a886039a04cffb50f9ae9777cc4da7047247f19f7d51cf7b25f9d2dfbc189b143420221c07af88f4c32d6979653a8802f9760762803ddee41a39f0ac7db4bff0c3c019b970cfb9ed774de1f947bc54fddca44f920b7c7cc6b55e23fd2241ab3223b688fb5aa960439e46f70cd20d67', 'category': 'No Parking', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2262.0, \"x\": 1341.0}, \"hi\": {\"y\": 2429.0, \"x\": 1428.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5313: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:cd6c60106edc71747af6613312acc693:00110060\n",
- "Processing image 5313: timestamp=2024-07-23 21:35:04.025984+00:00, observationId=o1:cd6c60106edc71747af6613312acc693:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a \\'P\\' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40817359924316404, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=2041, total_token_count=2141) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:cd6c60106edc71747af6613312acc693:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2024-07-23T21:35:04.025984+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd6c60106edc71747af6613312acc693%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5022ea36c0f3abe9b15388c75970e2aa4376b1e7762a0475882424cbc4987fe3c69dee7b9814690b5be9f48804e223f9b39f0baa24d20c1044ec18e9d65818dfea6cb60fc2616f1fc0c039f219c432d69c451722e5acb09f0c1ea7407dd06abcdbd8c1273f06b632b9d8fc066a5d149b337a894aecdecff44bbb95ff140d9c26b1051cca06069e13bb3ec7eea90ce44abb807c339966d42814826241c9158dcddb53c51b88818726f83456fc20550a2b07c79c9aa5f77d51aa9cd929eb96cb8f2a9ec7ae7bb30e1af757a21f92f5de4ce6146ec8c59a64c366543e36274cec559c12614b60fd5efa0c859d502b35a7d57e180422a75076807aac4fe8b7049ae0', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3214.0, \"x\": 2650.0}, \"hi\": {\"y\": 3330.0, \"x\": 2729.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5314: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:efbbed04d11d9498e2e35614c7711668:00110060\n",
- "Processing image 5314: timestamp=2021-04-09 18:36:54.950129+00:00, observationId=o1:efbbed04d11d9498e2e35614c7711668:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22069511857143667, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:efbbed04d11d9498e2e35614c7711668:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2021-04-09T18:36:54.950129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aefbbed04d11d9498e2e35614c7711668%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0b11a8a95c28235a9bcfdcf74a1344d9f23a7e7993c8e2cd4208a757122eac775602f88d1c6759a0f7a01b714db9ec00c04f3776314198050d656c93376379d7f548482ee6329045195a61665ccbd32e70afaa9c4c2a259f4e0e0d9348f5d4f40fc9a4afdbefb7ca09ac46fad6459fd88f2666bfd5655e35d341c3e55bef9d3dd6315fc66b1c43bc103283e5dd2491bb3daccb34908bc863c01d77bd1b070997e108f40a132c14cf50fa675f5ade304f98867468ca14311c2471912bebf55d5b1960ba1d5ec624b74e7f8fc0f1562ba5b0c7442a6d4b71acd700c3007a663a8fa0fe5389edef86fd94bff8055da877a4a46df25424c80f309c99043d45c441f', 'category': 'Other', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3045.0, \"x\": 1289.0}, \"hi\": {\"y\": 3220.0, \"x\": 1439.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5315: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060\n",
- "Processing image 5315: timestamp=2021-04-09 18:36:55.266187+00:00, observationId=o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4422647748674665, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2021-04-09T18:36:55.266187+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab8bd72ba9f42f2fbf23ce2ea121417dd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fe4ddda1c1cfed7fabff7b4ddcf4faa9283ff102c0d2d6cec4bedfe3d9f96e40885a5faa44fbb81f087e3f3b010b8fa6c6ce66052fecc7bdb6271a4f8ad5273fc32f2619b1ab09823293d7a96797bbb7a1043f58f2edaa32a77bdeeb919c3ad48457c91d2bcedc2d520994677fbc4a3ee27c4d3e7de29566d90cd10d375ea62601ae7960fd8e01d2ca8a4258a519e656c7c80d1697b149137c1959cd000e81dfa0ad4b93977cc6d72689c16d9f7241e729e739ed3e52ffef9c13e3f73d81f917be4d92ffb340e72e34857324273c75921b4ff20241f72da53d617b978b8345951a6a0366241f155ccdb9e5152600ded66aae4f08022acdb5e589acc9d7765e2', 'category': 'Turn', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2913.0, \"x\": 1990.0}, \"hi\": {\"y\": 3200.0, \"x\": 2192.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5316: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:cc5938179e36e614bc172656fedc0bef:00110060\n",
- "Processing image 5316: timestamp=2024-01-22 14:58:54.924227+00:00, observationId=o1:cc5938179e36e614bc172656fedc0bef:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a route sign assembly. The top sign indicates \\'South\\', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29380892529899694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3589, total_token_count=3670) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:cc5938179e36e614bc172656fedc0bef:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2024-01-22T14:58:54.924227+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc5938179e36e614bc172656fedc0bef%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=20c10973e13bfc98b71a49b63398a93f73cc209eab17be3be97393dcebf7b3fd6e200b2cfa325c89a493ca835240fef76f9da6bd3cb82c7fe50aabea906edd32c1db3f43e880d081b75321a9c34f3e24073ae5f14fb2d0bfdcbff513750c47d49c5ff28d076de269b2b78bde84b0160fe5c9f75b6bf730206d35c5ee0239f1b1c64b93c025bd3e46995931fe01ba0874a04e144468b8ac1173b61c4f74e362bedf40e08d5707c0c9f66a9a90205725857ae04c00a9233fdba4931cf39752eba085cd63d7765ca9a68873d4bb6afbef46b81cc1a2ac83a1e67d82e0df3cec7f0c35147cb4526faafa50b82c7389cbae2745da715c481ed5f51df2b96043f22c15', 'category': 'Other', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2833.0, \"x\": 2552.0}, \"hi\": {\"y\": 3158.0, \"x\": 2808.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5317: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060\n",
- "Processing image 5317: timestamp=2024-01-22 14:58:54.588237+00:00, observationId=o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates \\'SOUTH\\' direction with the Florida state route 37, and a right turn indication.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.365568326867145, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2024-01-22T14:58:54.588237+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af56c5526cc95aca18d81e3ca2e0b5881%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=593a1b2dd3896bfa3ecfb86c7b3d277881289b9c3042b8ba5041dfcf614cdc598abd352adfdfb55e64bdaced0425bf293f001bf484007ce169568f92d131fbc59d967accd5b4b15b26d21e9dbfdc49d978d0218eda5898acc4b8812d5cabe239c8f309b9fa17c3acfa52cba14f889d489ab5e89cad806ef48ba3166a15c714f12c3cc0620c68f00e6616ef7f9a8665d89a2f2694ec9eba83c00548155cfe03362aacc50295f3b917fa0824b5e87db3068151ec028a305ae0f4661f11d66c3ba22e75b7db1d9d36d36bc3a506a86144cc57b1bac0b4ca3a50d34a8b696d3e4aa9ea061437c4947d7c92ad815d0eadca8be4f3292e0a1d694f45f51b0b63f4d2ca', 'category': 'Other', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 1544.0}, \"hi\": {\"y\": 3213.0, \"x\": 1722.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5318: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:60aaadd3ef1001b8089ccb83b954f802:00110060\n",
- "Processing image 5318: timestamp=2022-09-13 13:26:38.815710+00:00, observationId=o1:60aaadd3ef1001b8089ccb83b954f802:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1885937766024941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:60aaadd3ef1001b8089ccb83b954f802:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2022-09-13T13:26:38.815710+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A60aaadd3ef1001b8089ccb83b954f802%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a4174efdea16f033762f926b046f8646a6b9bcf98fb6f9d5b5760e7e595f915bc226780a041ac90b37dd23de75b047384819be864cd55e680b9ec994b405d40a7b7a33a7e18cbd27a27aef2f3f2c3d88bbff59d0772828e569a7298d14e57cb27bc4f8fbda1f68dad02c68eb28bfc1cc20b4813afe0e8c014d4f4960447644f29513670f4f2f5c26c4e966cb6181e22a48ddb2767f9db5181c1a48487102e4e934b6661431ea1d96977557bec10bb659db0a58be4bd202f7f5dcac23beb837fd05d3ca0266c008234d424434bda9fd5ff77191e2423157c03b43cff075df979b9db13c663b00b541974a8c3d00cbedb753c0278791a4e1ec431a72ccbc9a28b', 'category': 'Other', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2899.0, \"x\": 2811.0}, \"hi\": {\"y\": 3125.0, \"x\": 2971.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5319: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060\n",
- "Processing image 5319: timestamp=2021-12-06 18:27:09.469164+00:00, observationId=o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07447498699404159, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=493, total_token_count=546) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:09.469164+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab7a0a97a6567b447bd3c8a649d362b0f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=683346a7d2d67e03afe5f1cd8ad7640d08b558783e4b846cd5ce15e179582f1612ee58ec041bc551d73b60787a94603316579c7baff34e68aeae8ed5b1101bd29a163adf499dc40559ac30689969379d74f7d725956e0c20041443a149644444ad7c0961d1d5492bb09a16590f441087d9a835047c827bf2ad1185fcd83d8c14f2391917b5bff9a7d143ef74b7ec86d1dd5b7e918e08aa96b9fb6b51aac20ada2d1632de43cf48f6fef64a5c8ff91e1bc86410c7ca3c8ca81a972e3f67850a63c18f1c6010a4b800a8a1b76fd5f7d8d45e9a66d3c84d2956f9c22dadc649cfe77eb323da255047b971d905b12aeba59554f417bb78168ca838cb0e50b8752890', 'category': 'Other', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2560.0, \"x\": 2780.0}, \"hi\": {\"y\": 2693.0, \"x\": 2827.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5320: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060\n",
- "Processing image 5320: timestamp=2021-12-06 18:27:10.265196+00:00, observationId=o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange and white traffic cones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.0970886264528547, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:10.265196+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2fcedeb42b5dad457bc9c395a85cb1bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=57d9469e218b7f27377a4ae6a967807f561d66cfb169f73ddaf827690bcce6b5ce665bc9c5d5e8c9580d0b51c2a3e1fc717954e3ccb3b555afde48a475ac36b56cdcd22ffa730e9a85080f21718eaf447713ec7064abbcfed44c65c88086e58d6d29e53bcdeafb432321f684a96548c8f221fb11ee8766211efed74e6624691d7713b7d21867fb06944607014e076b3028ac98678d76933f182a37ce230a053ba15817e9c21b0f01e4536ba6e651ff159cbbf3039777922b0ad3107d5229ce86b2b322e440d7acc72ffc40c1c78b074d287762f66bce3f42cab95a3d16dec8d1f764247265a35bc993c31fd250bc4f966a47c05eba82d0b49eb3feaca2e48480', 'category': 'Other', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2533.0, \"x\": 1980.0}, \"hi\": {\"y\": 2665.0, \"x\": 2025.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5321: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:626f99ca718fc82dc77cae1699f77c7c:00110060\n",
- "Processing image 5321: timestamp=2021-12-06 18:27:08.501267+00:00, observationId=o1:626f99ca718fc82dc77cae1699f77c7c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains orange traffic cones. These are used to mark hazards or direct traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15888185349721756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:626f99ca718fc82dc77cae1699f77c7c:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:08.501267+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A626f99ca718fc82dc77cae1699f77c7c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=749797f9401309308a3779933a9172b184842cdd3a4f260b85a282b1a533abe745d2494d61777663bfb5db03bfef82f41a1e7d257ac7cf22e5c786721012df3f81585764ff55d41d99638a3762fffbd1149700bdf493136f4a3159ca7d731455216fdfcf82f34045f3b046a38ae83e219b148e7ca089e31f3b98544a76a69113c1a43f45a3b910e2745ea6228a76c3b0864625c31b34563b4e37fa0f659dc5a0f0d089a867a3553710d7ee524215b05fe0836c87284896ec0739aeb2e60bb6c52bef2f994a4ef8ff76d39097845164356b60925be720b6475ae47e5911856288b70ae17ebebfe0245d160dd62a7763201f06e97bc213c5208f891baf13cd295e', 'category': 'Other', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3467.0, \"x\": 406.0}, \"hi\": {\"y\": 3580.0, \"x\": 442.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5322: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:97fa6ec6c17562652e5a8a8b72803838:00110060\n",
- "Processing image 5322: timestamp=2021-12-06 18:25:55.879225+00:00, observationId=o1:97fa6ec6c17562652e5a8a8b72803838:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign\\'s exact purpose or meaning due to the image quality and obstruction.\",\\n \"image_quality_notes\": \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign\\'s message.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5093186054754695, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=109, prompt_token_count=493, total_token_count=602) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\"}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\"}\n",
- "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:97fa6ec6c17562652e5a8a8b72803838:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:25:55.879225+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97fa6ec6c17562652e5a8a8b72803838%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc2a67e7872af7610656933902386b4feda01d1d0796686450d7e2f6d88b735570ec33de1aa9762801e8457b607c43e46ea5e090228ccf79dc9ea6b2740fe90b05af8615b207a0505b49dbd6947ba00b1296069cd621c9d0111cd1bd8f845610542af6a13f0ec94dc50b722416f4c7094a41afa1e1cb5d175602a9be49b9bc55553d7c39a2484b8b2cf6d989fc97f9912f2a730a64bf1c3a431f08d87aa46e13037a316e00a7b3a38b9dfa8e0a583bdeca49cfb98b3a88b0f0d7f3be688fc5b32d035e0e581bdc6e432c5341fbf89eeb42afd2e9478049925e3f685e822166eda1ae5694c9adeffb1dde709d4650b61397a8368772d4dab11c922cf0cb478ab8', 'category': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\", 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 3423.0, \"x\": 1256.0}, \"hi\": {\"y\": 3512.0, \"x\": 1285.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5323: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:b796455f570f52cbbb0f34857bb017ff:00110060\n",
- "Processing image 5323: timestamp=2021-12-06 18:27:08.501267+00:00, observationId=o1:b796455f570f52cbbb0f34857bb017ff:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5369669596354166, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:b796455f570f52cbbb0f34857bb017ff:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:08.501267+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab796455f570f52cbbb0f34857bb017ff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93ac4001c941ff852c6752235d97c50e4511bce517e5717b31b8c3d284f60db36efa5031278cd4c27c7b4b3826dcdc6ad7ea93e1a09cb7460e3628d8a7275ee1c62707031662f93e0f06e47f038f88eae4c41ac8d1e5114ea93f0dcf1aff9186b7e29004ae7201bfe05a0e03efad3c3a4291ce122c5f7e6c503a5ac97a3b59bfcdbd33f280614fbdec35112528c73a3856ecdf8a67985382003de46254e94f4039065915d3acc2cea9d2331c41f8fded10cae96fac6ade5aa9624fa181d3ce6cb0dcecb25a821d0376d9f7275088148baad0ff2d0f836b203cd578fc69ceff276c72f2d64ac5845c3c853cc4dd8da5cd81d09f8532ec9269dd22f44a9f5ef7be', 'category': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 2581.0, \"x\": 3469.0}, \"hi\": {\"y\": 2699.0, \"x\": 3504.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5324: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:fea505eb137843e8810d18699bca46fd:00110060\n",
- "Processing image 5324: timestamp=2022-06-30 15:45:58.298395+00:00, observationId=o1:fea505eb137843e8810d18699bca46fd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12547380783978632, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3589, total_token_count=3657) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:fea505eb137843e8810d18699bca46fd:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2022-06-30T15:45:58.298395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afea505eb137843e8810d18699bca46fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c2410baa40d004616dd2e581ab2cc145527d808fcf1c88f570772be14d6df927237fc6f1123454eea92337b3d1912bef278400fdc2338b76449fe414dd701c0fe616784a4c856856b7056b077e7c1e5579f554d817984755a528a98b851d809043404f9b94a31765247dc29080a6b38e0ef915f934b26028fede8049653661909d0c9398c184bead6eeb57aabb94ae1c62705031fd012d916b2eb198b3c2b3ef392ea18d3650e1034c22d547f0228518c7c6794b4dce35bb3e6524ad75e31324b346dbd262aa6fbfdc80dcc5d7f90f39512bcf99a12bb848565b460f4bbc1f58e21a377c9d8cd01eea7b09aef25f2166dda932f9c215d4885adc6d59364e44e', 'category': 'No Parking', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2142.0, \"x\": 2820.0}, \"hi\": {\"y\": 2327.0, \"x\": 2896.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5325: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060\n",
- "Processing image 5325: timestamp=2022-06-30 15:45:57.998380+00:00, observationId=o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3945590929053296, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3589, total_token_count=3676) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2022-06-30T15:45:57.998380+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A69e28f5098bfbe49d9bfafc0c07074a4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47e43fa14435a25d0213ee5f51779446cafc66392109d0962e2f1a1f3a2cdca9fd43d28bc498e3ce597088f5e071a8bd688d5769ad128dee086272dfe1710e39785ddf1f130bba0aefb84c1469a4223ed4512f823223b7e5d6e924743ed8bb9bae8690e842a80fa6a9721ad2c3dc2ecc1b8b1a0fd11d3c4d190cb1482d9e2d1b405a7daa56934eb53ce16d2dc5748fa66125f52fec2bb5ebffc03263da59163ab80cec175b98b46ca49124bbcf674a670704abf0688d4594857b5cc5b7b8ee697a7ff3f6d07fc865ac82476172803dfd007ee6a2ca0b92072c3a2328d3d7010b5be0ee3ea575adb4ff28bd7a75b435008bc4bc9fb52ce91dae3c53513afd2ed5', 'category': 'No Parking', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2145.0, \"x\": 953.0}, \"hi\": {\"y\": 2326.0, \"x\": 1063.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5326: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:7ff052a67611a1da5f014ee06558e293:00110060\n",
- "Processing image 5326: timestamp=2024-05-09 18:13:19.258095+00:00, observationId=o1:7ff052a67611a1da5f014ee06558e293:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26104048608054575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:7ff052a67611a1da5f014ee06558e293:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:19.258095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7ff052a67611a1da5f014ee06558e293%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5d229669160a359ff624f550c5a597b959b071158a06f2a2d96f340463dab84786eebc00c39272f2b67f9ab3443360e81b544e6a6eecc18d66d118e185f05ea09784e71f145f4550e329c7f059f720e7039764ee1781877fa544445051e130d949f8a995e7827e159716fc34b84b1bbe30ad0448ac0bcdc5052b8b2420649b40e89cbc766c722f22cd773bfaba89617ce904e3a8591de14960a50135d5571784beeeb450712cf4e22bd908d0a06222be328a5fc5a41e0aaabffb65a85e76eb2dc67ad2bd523c5be056bb4d757f041df898f6d786c549448fea35fb508f1704ab9b7fcb51f3b7fda62e697b7e6ca1894a38055ef3d073761f738fea5a623daea8', 'category': 'No Parking', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2139.0, \"x\": 1127.0}, \"hi\": {\"y\": 2317.0, \"x\": 1242.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5327: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:8b94532b62125280e733e7e089d4d183:00110060\n",
- "Processing image 5327: timestamp=2024-05-09 18:13:18.285920+00:00, observationId=o1:8b94532b62125280e733e7e089d4d183:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.\",\\n \"image_quality_notes\": \"The image is clear enough to make out the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4418361106615388, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.'}\n",
- "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:8b94532b62125280e733e7e089d4d183:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:18.285920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8b94532b62125280e733e7e089d4d183%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d23448f5b78f7a9ff9421d917457d4ac8551c38b9a5b2af5e867927c18627ae43b8e454288023a7bdf25a4c9a1e42863ab7c923180e23b2c7054125f49df0ac7d8c97b1c944f0cbc710a768f81cdee8112a2cc9d7f809a62ad1d9bb180cd88c38bd212880d106c51ca1f2a13a149c7823b3d0c7f81d22b4137335be256b0be57caa7c5321612a6a9112b2aa2d69936f673497175b9344627790e6a455f419678ce3e8f17042e18401536357db4030d4cc729ef4fc19a016c144411e176e6b270d4652d24f334c192271cb76916dc7be4e7bf400e22fc4ba9320720ba3f8dfd0420f60d03bcade10b4833ba760dcfa6a137800c33999c6c698b5bee3bd36e322', 'category': 'Other', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3124.0, \"x\": 2803.0}, \"hi\": {\"y\": 3266.0, \"x\": 2897.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5328: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:507d21dbb27c10b973fca96ce35fe282:00110060\n",
- "Processing image 5328: timestamp=2024-05-09 18:13:20.301532+00:00, observationId=o1:507d21dbb27c10b973fca96ce35fe282:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates parking restrictions. It states \\\\\"2 HR Parking 8 AM to 6 PM\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21255936829940134, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:507d21dbb27c10b973fca96ce35fe282:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:20.301532+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A507d21dbb27c10b973fca96ce35fe282%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092220Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9836d0a0e7be988aa97a9a2e17a253a084ae3387d18630acc17d712b15cfd87f1ea489e36adc7c79157ebed0934ea627a6ad173087d5b1cc7eeeec5841e4cdaebc11e1706417de1d3731dac6215fbc33c18900a2b3ed9a39c4981d40f5013ec5d4d18b0fb116a4ed10ecda4708d6f0d1ce3115842ef840871d8da71f3282ac988b3a01cfa641505a49f90b87c3baea79a02a1f64db1cfd1ccb678cfab5a44ad0ced7a452c823e67e026daaa664928e49362e6b12f12e7e1fb084a2d35933413dc48e846ee272c65f592e27801d2c33319bdc80eb162b29afafb496d4de07c7355bf28530e61655f3f352f7a5765e62303964821418e8b0e4926cd9778c817a87', 'category': 'No Parking', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2151.0, \"x\": 2988.0}, \"hi\": {\"y\": 2327.0, \"x\": 3058.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5329: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060\n",
- "Processing image 5329: timestamp=2022-09-28 21:31:54.665124+00:00, observationId=o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing signal with push button. The pole holding the signal is showing paint chipping and wear.\",\\n \"image_quality_notes\": \"Image is clear enough to see the pedestrian crossing signal and push button. A vehicle is poorly blacked out in the foreground partially obscuring the bottom of the pole.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5609556198120117, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3589, total_token_count=3689) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)'}\n",
- " Error classifying image 5329: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)\n",
- "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-28T21:31:54.665124+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec8e4df88d7129203b907fd8e5ffcf1d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=69af31461554d0ecf76de9186d7408736d50524042bf9a3f488ad32ebb91c079e5cca33024f39cb4e12d0dfee9908fed825491a5601503f99a66709ca3403c37cffeb5ed141ce33f870b4c79fe642898064162826adadd3243fd88b42d552e87f994de937edce884f42651e117090ffcfea1a9befeaa3ea66721f6825aaf1aedce2424f62d13c3e24e4002653f7e66c70018709595ff5883caa7b445b736e35e180d6d96d1a32b98d20c599318f3533a9dd145d91883d6cb13c8def30bfdad35c9790d99f255da985beff8b118afd72d97d30dde2e87a85d1883f9d6eb1ac70e6f26833897a800bc9b8bdcbb6151028acd6f3059a3a21055d7058897ad42355f', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3308.0, \"x\": 3045.0}, \"hi\": {\"y\": 3362.0, \"x\": 3077.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5330: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:80e79ca99833d7d9d1a7924bb54947e4:00110060\n",
- "Processing image 5330: timestamp=2024-06-12 18:46:13.968341+00:00, observationId=o1:80e79ca99833d7d9d1a7924bb54947e4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words \\'Push Button for\\'.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2746548384762882, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:80e79ca99833d7d9d1a7924bb54947e4:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2024-06-12T18:46:13.968341+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A80e79ca99833d7d9d1a7924bb54947e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c8ecd80a6416575dd269656b1c5c52fdcf7ad0b9b2e7624c4d74ae5e016be112ee7bea7b4aa0125a7892e146c2e92b935d18e9770081036543384e517c0fc17185ba4e5d7234281373a317458dabafe0fcb51e77bb466df667171bca2e14a9d7827b3ebec9f75c8f6069d62973be11e38fc03c8b78f6892ff1b623324f9409c0aab2633e2ad3b434a5fe28fcfd9e3662dcdfbf3abf2ec4f70cce3877133f9c5d27e2352de8e266f3c6f89ab4b60654074c150bc3874c02d208c5f3b5fa3ad54d10dca1229872b34876b4f0f8e4397850ba207c81d5e25ee71e3c8067d44d31ecda6415ce638391accab25e71ca896ec9d08b3f44c97a595b13049f152158d7a', 'category': 'Pedestrian Crossing', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3420.0, \"x\": 2803.0}, \"hi\": {\"y\": 3477.0, \"x\": 2848.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5331: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:832a94533069b565e93e0cc2c137673e:00110060\n",
- "Processing image 5331: timestamp=2022-09-15 20:28:21.102229+00:00, observationId=o1:832a94533069b565e93e0cc2c137673e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6804244995117188, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:832a94533069b565e93e0cc2c137673e:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-15T20:28:21.102229+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A832a94533069b565e93e0cc2c137673e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03de0610be6606d333b4f1fe79d17df6b13950b1efc862575a800adb5990bd6ad0d47c9d731705dd6521ee6c7782143ce5c77d853ae0bae15dbd14abbbf8e2ddd61622c40d473747e1df7f16417c64f45a156909220604e6c44a5b590f59eaab4872e0e83c9836a8a45ab7f7a06f930c0a682103a6aa089af5fa23dc0a678fa3734a23d9b7bc0755fdb7f3e7c173301b3e7ecdf287445e0db298e95437c20eaa41fd6a83a11ab19bab60df78a28e122f457ff2889c220f954f830fca25e89f5e415853feb81a09a777b82f3d8f71193d164d78e0fef004b059efb4656c4143523291197a926c111930541091cd1dc8b8186b896c51386e2c0f61600a897dd950', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2472.0, \"x\": 1164.0}, \"hi\": {\"y\": 2538.0, \"x\": 1202.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5332: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:eafa86bfa4e0d9123b61f014ce819bba:00110060\n",
- "Processing image 5332: timestamp=2022-09-28 21:31:54.189114+00:00, observationId=o1:eafa86bfa4e0d9123b61f014ce819bba:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.\",\\n \"image_quality_notes\": \"The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.288662806801174, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3589, total_token_count=3681) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:eafa86bfa4e0d9123b61f014ce819bba:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-28T21:31:54.189114+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeafa86bfa4e0d9123b61f014ce819bba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b581f16334dd85a8627d0fdb0fc86be062dfd887e8243a56c6ba0789c88a48fd13268896eb4bd71a7ee928bd0d9dba7f51e43b77de3be60098164424297cdf887d616316246fd511be706cdb7000e0eb5aa052512cd69678e05ff3c4e3feb989792131fcf81c5534bd788c2dff2eb958ae2e6b7af47ed6c48cda9741ed27bd05352d8664cbd609ccf63618fb2ff3f244dbc23ea3dafff72abee1cc73b396871c1a52c3bc6107b5e443f4d84c3cc0cdc9ee04e48c2482be30a98522d55a32246be5a79f19daa39c306e05744f51c617cda8202d78ca81051697f6b21c8b468432ee4ec286fe630b8b8d720d3c54878e5a0aae6108719cab0ccc2acb39fd9db24d', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2398.0, \"x\": 799.0}, \"hi\": {\"y\": 2458.0, \"x\": 840.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5333: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:906838db1df3295f78c7f15ac5b1ee80:00110060\n",
- "Processing image 5333: timestamp=2022-09-15 20:28:20.318247+00:00, observationId=o1:906838db1df3295f78c7f15ac5b1ee80:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a pedestrian crossing signal with a \\'don\\'t walk\\' red hand symbol. There is also a sign indicating the presence of a push button for pedestrian crossing.\",\\n \"image_quality_notes\": \"The image is cropped and focused vertically. The pole has wear and tear, but the signs are visible enough to determine their type.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45340659731910343, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=3589, total_token_count=3694) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)'}\n",
- " Error classifying image 5333: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)\n",
- "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:906838db1df3295f78c7f15ac5b1ee80:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-15T20:28:20.318247+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A906838db1df3295f78c7f15ac5b1ee80%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa2ab15e9c04cb156f7b35d31a8042a5a1693291004b2a817f8bfe5ceb6c6dde342a30fdf1cf73839d9b6ec81e8e0f04b44f5eefacc69e4234426ea4fd7b7da268be6eeab269d575aaf8f01e50311c3cd2fa7f361eff922abb49ac1b00dfa10be5eb93ed24c4f58ca1bdc14cd092c4142b0100f10a6fdd48f5f7f67b63357300ecde9fa2245cebcec83628e020a1f2ab56df31b1fa51e096bee78d153a6a807ba8107138fa3bd37999cffcf7bc8599ee646c2c4fabed98ef1f0299430a088981cfe62b376cca972626588a518a37ddaca05d58c3473e1a79b17ce98c6c434e371173ab03b55b58a5e119485b7321110a030d0386253e20f88eea43253c95398e', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2430.0, \"x\": 1540.0}, \"hi\": {\"y\": 2497.0, \"x\": 1589.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5334: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:5a4b843e2cac6baa084dd3c5306e0521:00110060\n",
- "Processing image 5334: timestamp=2022-06-23 16:39:55.229268+00:00, observationId=o1:5a4b843e2cac6baa084dd3c5306e0521:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text, indicating a speed limit of 25.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11711576581001282, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:5a4b843e2cac6baa084dd3c5306e0521:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.229268+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a4b843e2cac6baa084dd3c5306e0521%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b3ce0e0a61cd2b03527350bd814e8eb74b74cc024d6c0653dfe4ffac98d340935d00580d49ef643eb5d729045ae2f670ca610972ac3d2bf25b483545c4fb20c84338f06c5f7e4863c6dfcec83797a967817735e8da835549cac8a542983cc741b77ffb6a18a40ec038292a412d8b5f877016c480625a35531b81b6c26b49324c771e8b06395cfc00212959b71d034f3a9d8962159b2b0da6202203a6c4038f876af2a3a140c08fb4efa3d955c783eb36306ff9600c3c46e2b4667a3c0bb6b888c3a873e2529f78741f28324502c201008874a596bda9afea83ef7b366a701559d7da4e5164a44fa2c273c72bab131d1eb8e3a9fc1be0a49a11b8a25be9531c0', 'category': 'Speed Limit', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3082.0, \"x\": 2067.0}, \"hi\": {\"y\": 3267.0, \"x\": 2203.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5335: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060\n",
- "Processing image 5335: timestamp=2022-06-23 16:39:55.845264+00:00, observationId=o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign with \\'SPEED LIMIT\\' at the top and \\'25\\' in a large font below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12807474002032213, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.845264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A417069acca8c7d5c8fdfcd265cb4cd55%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a4f0fab5be9177913e4ee3d42f4e54a2850633c36788365cb5dc13e56f85f780facbbe36503a0ac0729c4bfb3f1ea4070bbba74b32879571fc94281e0565521a9044ab7ab86cd836e7c9978a4d9bfc5147a34e669fb368924ed5c9b0fbb816b39e76a133abd4db940c1136b7d1d0cff43b7ae58ba9bfb761f8a7006e6146e4759b824ed42f5a93f099ce1092752c46c7c94bb4d21db45d3689a2a23b36c5a3cc9809bd08e743d3fe248df47f45e2b2b210a45489346971fa37e7ca67c09314db82f5469ba6be9d8a61b6fa28f8296813cce2e3f65ac5d476728f18c45f82fb672a2bea74bd3e710f80e35549cb4c41d65d4794045627bcd78b13cecd042775c', 'category': 'Speed Limit', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2073.0, \"x\": 21.0}, \"hi\": {\"y\": 2356.0, \"x\": 173.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5336: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:f963810dd7053d2acba72429e6e79970:00110060\n",
- "Processing image 5336: timestamp=2022-06-23 16:39:55.845264+00:00, observationId=o1:f963810dd7053d2acba72429e6e79970:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a white rectangular sign with the words \\'SPEED LIMIT\\' on top and the number \\'25\\' below, indicating the speed limit is 25 mph.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14561170484961533, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3073, total_token_count=3155) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:f963810dd7053d2acba72429e6e79970:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.845264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af963810dd7053d2acba72429e6e79970%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=354adf603f9d9d62691bbdaff4247dfbdbadf2d08339e1892039c7a1a902438edb88fc50e1208471914f82c1e2d86a2fc48c293a34fe99716002a3a26319f1cb187767d10aaecb2ce9b28d40cc2f9368ecee7655f1bc5be9ecf1aa32102ee81b931400e2a7d5ed96f318372f4698d17da7880af640c02efec53bc728a457e4d8f2b5c2ac0f0d1c9493f26f9bdbad51bdf8186e49fca183c4afcff9bc46d9ecdf7b155786e0d81b613ad3f1a6e9e4cfcb6f9faaa785651554764e528c0052fdae0bf253372c3b85daf3fed0abf75efc5882fd986f3d73cd3af2ca18dee60b823a7007c03d72a183e861d98fd8207ef33d26f373c19b17f559478d2fbc37899869', 'category': 'Speed Limit', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2968.0, \"x\": 3050.0}, \"hi\": {\"y\": 3237.0, \"x\": 3206.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5337: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:c9440b08a6ce67da4566647140f0b19d:00110060\n",
- "Processing image 5337: timestamp=2024-02-01 21:41:12.952004+00:00, observationId=o1:c9440b08a6ce67da4566647140f0b19d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign with the name \\'Hallam\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12342483766617314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:c9440b08a6ce67da4566647140f0b19d:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-01T21:41:12.952004+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac9440b08a6ce67da4566647140f0b19d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=686e3d27914bd09552aa69bac18d7e43a7ffca53c52829978c29a0f157dcedef0e2d24201676d7987a7d406986d801e24ab3d0ec0397a32477d482c8bea3c84e36f9b2b13df4443be5f5eebd3ec2881dc46b8bfbf7e4aaf349530e9ea6f8609befea4f0282c9dfaef4d28ebabc5b7c73fc808ba3001659fb6b85a37aef8b9131c194d2d3c0b0be05818dc492bbd50604878029a21aafe74635f1bf7bdc6b6944ee42151a0ca0299c06f6a9604e3f095c905b3f4b345bad288e59fa7ceeacce938fff4b3001306610d182dcaf02bee71829f54aec27f0082fb46d604fe187c010483c087f9bde2c25da01efda4213a9727c5ab99bf731a30919c5432c02845ff7', 'category': 'Street name', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1502.0, \"x\": 1205.0}, \"hi\": {\"y\": 1712.0, \"x\": 1600.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5338: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:6a015935e7f8be85d12a402f5f079b49:00110060\n",
- "Processing image 5338: timestamp=2024-02-02 20:31:38.744431+00:00, observationId=o1:6a015935e7f8be85d12a402f5f079b49:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green sign with a white border says \\'Hallam\\'. It\\'s a street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17422355822662808, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3073, total_token_count=3140) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:6a015935e7f8be85d12a402f5f079b49:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T20:31:38.744431+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a015935e7f8be85d12a402f5f079b49%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=914f1fbf810ac4c66e9d89d99e838dc0c59a417655005a8bbadebbb3201d0076cc08e70eb0958c7137b1a6e45447bfa92e2292a89314070cc1cae07b61c50785e4c75b48ec757ef4e7f0126fca9a46e301dea9c6a024af591d229e2db96bef54646345088f1849e94771a01047b74950acd2b1ecfe2fcc76bda222d323bf76b9a0ad725060e96c50020fe336e72465c488df39562edf42319f0e0e3883498a6bfa1727b4077931c7e02460d5690d7db44e0fa729d6c1f739b9e99ae7828fe3603a153b4c06c6ce1e99d4cfa55bed2c3e47ea75286204e1faad6e8b68f631b5e4ff7c2cffd7b13daa7eb27c4d3daf2030603743659d26f8a5b21af0014ad342a3', 'category': 'Street name', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1758.0, \"x\": 1140.0}, \"hi\": {\"y\": 1934.0, \"x\": 1484.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5339: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:edb9fee316b3f1ff7c550626fd58a359:00110060\n",
- "Processing image 5339: timestamp=2022-06-16 16:58:52.407727+00:00, observationId=o1:edb9fee316b3f1ff7c550626fd58a359:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that says \\'Hallam\\' in white letters. The sign is mounted on a metal arm.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19980801327127806, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2041, total_token_count=2112) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:edb9fee316b3f1ff7c550626fd58a359:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2022-06-16T16:58:52.407727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedb9fee316b3f1ff7c550626fd58a359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7ab51a45193bbfd9ca90eef9a208bebe4d2afd69149c4634352dfa252c5b7eefeb660e7db4bca21d958939fa8e2696c1f9f3bc19df8c81acd82f91124d6d907259938b34ba5d0344b4d6d2708fd727e9ac1841b89daa9d183c3b27d570b68c80cabd076f208b734c65e0d06bcab92d305a7f3f7b0e22635b7a088994bc6cafbe665bf288ec50ddfcb9519772fd28393dc4b0a60b16fc97c64f1006689aa00ecedf5609324458a288076188409b4f3cac96b46954b3ffd10233732d337c3ec5792926f15ebaa8a2f1c23606641f025b5ce9c3bbcc473e4784f440fbc569dfcf415471b1452944c80e9544b065dc74b0dcbebbc3076660df3beb2c30fd3c14c57', 'category': 'Street name', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1390.0, \"x\": 1434.0}, \"hi\": {\"y\": 1669.0, \"x\": 1779.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5340: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:544e27ddbf2ba8988331df148eb50220:00110060\n",
- "Processing image 5340: timestamp=2024-02-02 19:02:54.402264+00:00, observationId=o1:544e27ddbf2ba8988331df148eb50220:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign with white text \\\\\"Hallam\\\\\" is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14180621793193202, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:544e27ddbf2ba8988331df148eb50220:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T19:02:54.402264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A544e27ddbf2ba8988331df148eb50220%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c8698a65bc906fe9ba9542eb975de3d5570c0f0e269b9f1be8f28b9c613d98c6412aed3f9d6a0a0d2201797ab7604fb6fe278c135f4ddd01e8c53f17fec05e45f2844df8cf6273149ccf3e433af03a75fd0b4fad8bf33b048a722f74f58187df0faea45bc9061d07bfe218488acca4eb9a124cc419a6526c70bfe2c5c4c726dcbe564b049551320a3d00291fe4382d324ace541689640a41136f89e72084dacdb97e6123657299efe6855e85ff9a094c5ccfaa4f65565793d08c1544a29334704ea53716e6ffd058089ad2e2d8010a351a047801aad3084f15d6cd01573d7b13e4c29c5e2f7564a00bec97f8748d043d2fc306b41b855594a876afa1720eed6', 'category': 'Street name', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1194.0, \"x\": 1570.0}, \"hi\": {\"y\": 1342.0, \"x\": 2096.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5341: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:a94e400cffc48ee40df8e5f7f50266e4:00110060\n",
- "Processing image 5341: timestamp=2024-02-02 19:02:53.602312+00:00, observationId=o1:a94e400cffc48ee40df8e5f7f50266e4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green rectangular street name sign with the street name \\'Hallam\\' in white letters is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1450332954748353, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:a94e400cffc48ee40df8e5f7f50266e4:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T19:02:53.602312+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa94e400cffc48ee40df8e5f7f50266e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=583bc93f0ade2539484a22f2e3869b3ef4eb6366fcb09d80fed087433059b942258a523b8ff802d486c0952467688d97a8922285e48599dd4961b7977371cc6a24f76d0883a97e42343aa2265bb7b82fbd01934747a17a79c1488e6207253e6405baad441d7404983f14c238e93f5b215420aa7d6336dc6def87cf60aa199785879dc46958cf667429245b6d94a37e5f62b2af14795926192426a1791110fa13802df897a1a3716c65e6e3cd12a37d17ef3974c055f43061a8381bb4ea3c879df284cd2c013f448ea5fbbaac32e0adc1cd32356f8c03465373d84b469f6f379fb5a14cd295dbfafec3fb9e1476d2608feb5493b4d563835b96deff419e3e878f', 'category': 'Street name', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1986.0, \"x\": 1673.0}, \"hi\": {\"y\": 2139.0, \"x\": 1986.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5342: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:88f2e235b3e71874c3d18e1978ca818b:00110060\n",
- "Processing image 5342: timestamp=2022-05-19 20:54:37.934988+00:00, observationId=o1:88f2e235b3e71874c3d18e1978ca818b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a \\'No Parking\\' sign with a red circle and a diagonal line through the letter \\'P\\', indicating that parking is prohibited. Below that sign is a sign that states \\'2 HR Parking 8:00 AM to 6:00 PM\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2587195377723843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=3589, total_token_count=3691) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:88f2e235b3e71874c3d18e1978ca818b:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-19T20:54:37.934988+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88f2e235b3e71874c3d18e1978ca818b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=798487212a4d41ed6ac1d55d377e2ad93fba82d918248c63c092d0681e4c28759c9ad7fc4324eee56491254689581c82796a5b3920ee3be3beae5aef7cb416cfb2386ba5df5b9669f950e3eb4658b0b713e00fd303258a19e60b9bba5b185bde5cf8506e77c73fc3b66a483bb72c842d08e1ab9fff14b2d4bfbb253970232aaf0b76a62fd80be9d8a9a8ed7aea3e39c799c917cb61d41f3141a7c2caba2f6d6ce6e6a8e5955ba12610040d2531544651e51efecb56a69ef6eecacfa82a03c79aa2bfb6c4c6d1d460803a25af64480c02f44342c2b7cb2fc1ba19671e021493e6ebf130aa42c21341cf677792b7b24f2aae9fb6858accfb2393470fcb161efdf8', 'category': 'No Parking', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1830.0, \"x\": 1251.0}, \"hi\": {\"y\": 2108.0, \"x\": 1442.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5343: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:ae551da6f82a179214e756082fbfdd6e:00110060\n",
- "Processing image 5343: timestamp=2022-05-24 20:55:46.020440+00:00, observationId=o1:ae551da6f82a179214e756082fbfdd6e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking\\' sign with a red circle and a diagonal line through a \\'P\\'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2985882077898298, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=3589, total_token_count=3701) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:ae551da6f82a179214e756082fbfdd6e:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.020440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae551da6f82a179214e756082fbfdd6e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9c6b33057ddba606e259351f8e21836cc15e8314ee2eb59ab0b872df77f6c740737a273ca4676488041541c7bdcb078740511132df9a4e8e0a4e63541f7e985da072a04d162b48881c9afd430977c720c0167f0479df7298127779e9bf5e27c02614d9b588eb9d2d7b42a33e5231da386ad61283abd609d05e3eafa8dcb338b1e5dfa0e202d6dba20b48758b1e9746daca63731aeb71c1951c71b8d8f55ff1d82ff382df4ca3815c3a9244f52abb7be01c5a6d56fd747715ff1b11c200c74ec6fd8c2622c6ab4dfe61ab07792e4ddbd60a53b9d20b81d0520453539c3cddcd53a12ab55d6e3a64b349ef2c64e4cd00b3e7a22f5bcd9cbe5715a01de3ddf36247', 'category': 'No Parking', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1904.0, \"x\": 347.0}, \"hi\": {\"y\": 2181.0, \"x\": 526.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5344: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060\n",
- "Processing image 5344: timestamp=2022-05-24 20:55:46.020440+00:00, observationId=o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating \\'No Parking\\'. There is an arrow pointing left. The sign below this one shows \\'2 HR PARKING 8:00 AM TO 6:00 PM\\' with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3034714363716744, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=3589, total_token_count=3700) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.020440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa8e70c476875b4f015dd5a73d4fa6b04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=479a44ee1b8823251ba23e6cfefa7bcc575b1a241a9ab20ad02726c8e4b2155546c0036b09a9d030f7799c873472b4d51b15741bb0800a833f0c61755c91e726d5a40526081349be3900d60e551ec82042a6468cde45e299d599249f9e5ec2177ac6ef8ee61199d16add33687840fe30376d4e0fe29905b77e94eaee7f8dd526b90b5473df4983d02ea65257becd27d2ea916081fef2d928def02bb3e181e3962f2192a325c748d127a705ec4d0be83ec7b4c06df0751ccc7d5abf48f335fa73519e207b3db8168f6cd97f9905242cb732c56853cd55140717500c2b24435478dea5bbd133df34a492bc48da64f57131e16fb82a9b86ac376224dc01ab115aa8', 'category': 'No Parking', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2798.0, \"x\": 3324.0}, \"hi\": {\"y\": 3071.0, \"x\": 3501.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5345: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060\n",
- "Processing image 5345: timestamp=2022-06-14 16:54:11.307610+00:00, observationId=o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM\",\\n \"image_quality_notes\": \"The image quality is fair.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.42366532825288317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=3589, total_token_count=3694) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.'}\n",
- "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-06-14T16:54:11.307610+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d7a329ab7a36639d36cb6e7b7a5ff52%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3dab002e981d411ba78aa6cf733aac58701d97be47f0d3013383bf501de2f92d5c8ac561166589fa5694af01340289e1a0ce84b8b69aaac8c628e82e46141b60b4fed697a4a96875510b27fdde1f90ba750875544b1d06b2aebe741c5a2d452d11f08a7b0ea75464aaa1828ba7f098da47e25b04ca595521f987ccec44d68b2dcb3305eea3d470ad090bc0df5914db46298fd3762a730649be9952b980f4fe926e8983cb2c22e46072d86c92ef9393f2ad120a241754cf82f347cdad5bcfd953d8afd4874eb2b7d1dc0f9dcdf2e7f7c64d273fc453be9755cf5a35429f454306665ca39a6e79e78c443517cad9e687449147b04fc1b335e4730945ac088c88a2', 'category': 'No Parking', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2059.0, \"x\": 1937.0}, \"hi\": {\"y\": 2231.0, \"x\": 2052.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5346: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:196d145aeabdb4f604fcf294e35cbd04:00110060\n",
- "Processing image 5346: timestamp=2022-05-24 20:55:46.600406+00:00, observationId=o1:196d145aeabdb4f604fcf294e35cbd04:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking\\' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33006194542194234, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3589, total_token_count=3676) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:196d145aeabdb4f604fcf294e35cbd04:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.600406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A196d145aeabdb4f604fcf294e35cbd04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0578ceed647c5b95cf39854cd6d4465d8c24c4e31013849f9d1e183e79b40d467cf5d080b5d6ebe50dd133755faeaca8160209f2f35c57175ad7454b18df291e76f8e147a20bd35030ebeeded1f0987568c203ece13e37003efad676cf20d627c6b5f5656644b75b2e7a349193a2b751d8cc30780270d6159d7f8453abee974efcbb20dfee69d34d4b65e8010819df0771ed2a290352321a5144e3752bbdbe2b3aff0311a9d30aec055771eda4a9017bb30405109e4c727af01eab890eb681defc41e9f20e87fd41b3b16eb80030a8380458c15333df8f0a96bb3ab5a991c272c15957afe6c64bfebd3cf8e3d95ea03a772a5f2ec7a401be10219106a08ed584', 'category': 'No Parking', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1892.0, \"x\": 3175.0}, \"hi\": {\"y\": 2154.0, \"x\": 3318.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5347: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:031f7b260dc4efc93460a622a507345b:00110060\n",
- "Processing image 5347: timestamp=2022-06-14 15:41:07.324630+00:00, observationId=o1:031f7b260dc4efc93460a622a507345b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road signs in this image appear to be a \\'ONE WAY\\' sign and a \\'Pedestrian Crossing\\' sign. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.27470870756767163, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:031f7b260dc4efc93460a622a507345b:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:07.324630+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A031f7b260dc4efc93460a622a507345b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b43a36bdd21fbccd608ee5e262481188e16b25c35789086d191cb0f6e4dbccf9f7484bc6933296f72b2eb28ce973bb1a1ba24409d78e1fb1555091a5976753034ac1df1d21ba70ba26713929a51d7aa7ced51762906ef407428a88b6c003191dcd883953cec989b7d095e6334f87c5945cb83cfc024c06ce1ce50dd70cd49eae37280366c33acfb0d2bf639cefee7df2d126a221adb34554920f7bcaaf73f46868df0d2146e0701c7e402c46f4e204e283c5d419b9fdf709f2d3ab96e85fde5148759ac29dc7d0dd9a322e3d51d5400558d0e84c0b497e9ee80b2925d5a891867cc3ddaee5d781f091901873259aa579eadb8853f0379b9bbccef7e44ed9254c', 'category': 'Other', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2210.0, \"x\": 1297.0}, \"hi\": {\"y\": 2329.0, \"x\": 1544.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5348: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:f0641b309c2810a745acbea2bb9849be:00110060\n",
- "Processing image 5348: timestamp=2022-07-11 21:48:54.292865+00:00, observationId=o1:f0641b309c2810a745acbea2bb9849be:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a ONE WAY sign visible in the image.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19276879963121915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2557, total_token_count=2614) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:f0641b309c2810a745acbea2bb9849be:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-07-11T21:48:54.292865+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af0641b309c2810a745acbea2bb9849be%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aaccb995692a6b0b3d6eae74bc78ebbf1244032b4e581b98dbdfff3b2ee5c3becb4fb8e0a1f58823ed01274884ff95e09f290017414956170b00f160bce8f62a639452d551311503fe1cd52f18efd39bd9171e7e8c82e83ea8144bcaf52679bb1c42cffabe70acade772c0601197cb8345d2495112e2150d6ceb9ac63fec63d3927164523d4fef01d73fbeaecde7a2deab16c23cd267505d5937ee5add5d3be02afc7a5f7c2cd88cc582ba628d0116222bc19c77af2aae719c27ab48735040d60d565a78630c713649aa1009f838e838ef0b019b77a6b08af987e374a17a884ff08148dd5f0390b670ac0f67340fe0f6c9bcbf836557597d8bcc6387158bda26', 'category': 'Other', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2136.0, \"x\": 1183.0}, \"hi\": {\"y\": 2230.0, \"x\": 1378.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5349: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:ba71762b65e74921f5bde07f2259eee3:00110060\n",
- "Processing image 5349: timestamp=2022-06-14 15:41:07.688585+00:00, observationId=o1:ba71762b65e74921f5bde07f2259eee3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4838205102371843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2557, total_token_count=2630) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:ba71762b65e74921f5bde07f2259eee3:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:07.688585+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aba71762b65e74921f5bde07f2259eee3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0019d5982255a33737bc09e97804ae7c06fdb1a54eaedb525a902b8f112e2d774b12b9059a4ec3fdfa8e9f6042398cd3a4a3e4e3be1e3722484538b7fd96f79ff567d094837b9a826a46c7b61ac584157b87642a2653b23a2633223c5193268374cc83f7db53a8d4c1f13eafeb67030f2ec49a0934d748000574d1648c7be9bbd9dbefd5420c442f4e2e9bd9206a280b208839f43223b0bb04a8e8fb042eaf9ec66f4b325c11e2d587cd28e655744e166810d819c02341d9420d4bcd60f0d4f3925e83ba4895574b00be13414d943c92f1daa2686b12231cb85fdeac798452367f0d8107aad10e40d7a9d2ceb5a1c157d103d3e5c6483890249e2af8bd0fc0e', 'category': 'Other', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2173.0, \"x\": 2471.0}, \"hi\": {\"y\": 2285.0, \"x\": 2684.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5350: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:59664dbe4a934486ad3582ea5326bf26:00110060\n",
- "Processing image 5350: timestamp=2022-06-14 15:41:06.956554+00:00, observationId=o1:59664dbe4a934486ad3582ea5326bf26:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"One Way\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A One Way sign is visible\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16492241400259514, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=3589, total_token_count=3643) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:59664dbe4a934486ad3582ea5326bf26:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:06.956554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A59664dbe4a934486ad3582ea5326bf26%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b37e47bb7def2a36583eeab0c58684d01a28e5a2fdc22f8702f4b45266805fe18136c4455eae8023bd139373535181069b238f52a16810efc770f25df0ade773f5d38b7d97617e16a442f501081a16877893c406794ba103c1df48c9281e4745f40fc4233ae3974a7f287858dd1a2d551a0031d87d3fda4ad3c5f2136f516945c9f4fbcc79b43ae0b7c80cfcd3e0efeb0f233af6d970f8ddbf2262af079f966c697847c8def9458e04982226f6200f5f4b4968c48b55d58d9804d8a0ac49edd06cf7d678f0d9af4f751c90024a7aa42563e33a6ada6f3309550d7804e84733cbcc974c30902bdb78b0235ebfa9bce0bd7af45e91dc753b97083e2409d8c95f85', 'category': 'One Way', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3139.0, \"x\": 3293.0}, \"hi\": {\"y\": 3250.0, \"x\": 3488.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5351: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060\n",
- "Processing image 5351: timestamp=2022-06-14 15:41:06.956554+00:00, observationId=o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a \\'ONE WAY\\' sign indicating the direction of traffic flow and a pedestrian crossing button.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2155742787603122, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:06.956554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68f9ed0e40f5b9c6eac2c1dfe0b6da15%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=33296adb7dcf47eba3f90f0aa42bee2214cb978491d3d66592b727983398f085aaecfc3436610ef51f50f0dd6d8023f9fee78d7087d2aff2efaf6ab971e15289e1540bb32fd55095795e2b28785664272fe5e387bba054ad9afadc02270f9a102c456f3886df2e7c6a473db6a72815050c0ff708be4dd80cf10f253df4cae5f6e056747ee810a03c45d9c531957ae258c44cb6222894ac3bb714eac05432ec1fcbac5809a48dc6f5188fb78e68d04661dc55d045e4354d8abdb8432e0389acf90d3601f13e25baafc7530e932376a0463b76feaafb4601df37b340d610039d6097baf2618da46101eeab7d8efe6988dc00c64e6a3041d7c0013e8f2d978b80d2', 'category': 'Other', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2256.0, \"x\": 275.0}, \"hi\": {\"y\": 2369.0, \"x\": 480.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5352: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060\n",
- "Processing image 5352: timestamp=2022-09-29 18:13:29.434536+00:00, observationId=o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is yellow and rectangular, with black lettering that says \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1642235264633641, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2022-09-29T18:13:29.434536+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6ddaa89b1e88d22a6492b0f64d98c35%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=48409dddbbb4a9d1c16713caca25133f75f1c0e31045386076ac39f071f438c36eb3cf52fed9f37b8ea64457144592f6b090ca2d94ef2ea4fc3a96369efbae3e04ebd4c2c0fac74418aa4faf94fe2ff0438f6762bc68898e65a519723e4da2941365b6582dd0c275065bc2c6bca5e0dfd72ce7a1b5df051240d0d95259936f84637cd0a316d73e7c15d8860109b25c5e39c510350d2785c4f0b4c39a875979e91025ade9931f6ad05d249551c825808a4b0b8cfefab760eeb84beb5f88717d19816e0feb93951165166cc6ec6ac3976bed33a81105d851ec5a877a04e68f7f5f145d5e70e31a1c48be2799b5e0927bd1788f6f8ff0c47ec4496e1e6e67068dc3', 'category': 'Other', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3243.0, \"x\": 996.0}, \"hi\": {\"y\": 3299.0, \"x\": 1049.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5353: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:e1d9e4575b67119577685d2e28971e15:00110060\n",
- "Processing image 5353: timestamp=2018-07-10 18:09:34.370317+00:00, observationId=o1:e1d9e4575b67119577685d2e28971e15:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow rectangle, and it says: Caution Forklift area\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18110318337717363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:e1d9e4575b67119577685d2e28971e15:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:09:34.370317+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae1d9e4575b67119577685d2e28971e15%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2bb6a340e2d63ce4cf8d3c79bd3052f7b5cddaa7b3d6f4301b99622695bcbd696687fecda1b877dd40481cd61e39754b66af7c40728889e205f1b84b81add2491e306321af4b9e2367763afa1df538ed7c9a427eea9e33d0f4325b3f95df22073b66013310649ac3cc0f4b6a693f85c35d54d4144023105be0adc7de7234e5114be65b0adefe57f5d01b420b108e8ba963d623ca7f1e2ba5b5f46e9e2c73e3e22d5a71a15701f9839bb497c7a37ab5f5e90d0c8d6c7b63a84a5543a46d18ffa4eae7993e6b796a8876c51de2145d3228080f5b5846cafea897cdaa0e5f57476cba05b3f6e68c23db66897e6e72ad14c4f35d8f0b2ce70aa759a573d5615d945', 'category': 'Other', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 877.0, \"x\": 445.0}, \"hi\": {\"y\": 931.0, \"x\": 503.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5354: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:19eba6478e9a2e72b820100f9c0004cc:00110060\n",
- "Processing image 5354: timestamp=2018-07-10 18:09:33.488369+00:00, observationId=o1:19eba6478e9a2e72b820100f9c0004cc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"The image quality is low, but the words on the sign are readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20553789419286392, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:19eba6478e9a2e72b820100f9c0004cc:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:09:33.488369+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A19eba6478e9a2e72b820100f9c0004cc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a00a56a73c53544b43e42bb9fcbd8b3f1c3222ee5558496284892f9b8dc8e2901e7d9426c7e7b8bfa0c0936a8093960f0a340a44a129b4684a5fc5d83ee210712efd1170318b7b2be72fc639912cf9ace059596290f0a1ab9313128de2bba74d8ec955cc790c3ae90125094210e1ad0549ce246514efbfc9a040f0d837f5468f262178d4b4e0ec26d6c4bbb1870f9f18510e1d223e29d4b6e4aa21b6d9a5e44739aa7581e2af3c967be6f6a64910a30c0b1d042d9b5e8e0fff53bc9c70039fb0efae5da375ad932ec7e1b8085bd7f2656f40b41c506b06ced5de1824b69ab446448e7e7b6e17606eb8df8eb3b970061370dd5cad1d1b4bfe49556831040cb74', 'category': 'Other', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 834.0, \"x\": 1072.0}, \"hi\": {\"y\": 876.0, \"x\": 1112.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5355: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:52b39067d9379a5e0f8aab6a4cffb108:00110060\n",
- "Processing image 5355: timestamp=2018-07-10 18:08:56.453815+00:00, observationId=o1:52b39067d9379a5e0f8aab6a4cffb108:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Yellow sign that says \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2795034277028051, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:52b39067d9379a5e0f8aab6a4cffb108:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:08:56.453815+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A52b39067d9379a5e0f8aab6a4cffb108%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=142c84f7c104c622c8792f55496b4d5a5b9a5abeb15226b72bddd21cf3a32d2a4654b619580978881514dd7ab73054a5e54b3921e803a20dcca5ade9d6d60880837d5d01aea231cfc443bc426367c39667049d21697f6883f07f27dc733e9ad9cfa67a62fd48e90d44115319008f2f269ae32056515f2559f5221951bded4f7475572cc1f2c31c340887784f0b1f4f988a96aebe8aeca53aa04b745a843505d9e823a3160f7b4514c37813cca7e9bf7be26d241345df438a284083f255a6e5720e61f5b929efb0b6bba6e78fa51d37a7538417306ebf7808eb7d5ac6d4fb13035f38d8dd133e04dadff75334d6ae3cad7ec9475dde14bb315ed4674b011fead2', 'category': 'Other', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 863.0, \"x\": 736.0}, \"hi\": {\"y\": 909.0, \"x\": 781.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5356: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:807214284a7266f20e9a1e0cde945f9a:00110060\n",
- "Processing image 5356: timestamp=2022-10-11 13:56:18.307338+00:00, observationId=o1:807214284a7266f20e9a1e0cde945f9a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates \\'Redwood Rd\\' for exit 15C. The sign also shows directions to North and South exits. It\\'s also an exit only lane.\",\\n \"image_quality_notes\": \"The image is clear enough to read the text on the sign, although there\\'s some pixelation.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5892288589477539, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=1525, total_token_count=1625) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\"}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\"}\n",
- "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:807214284a7266f20e9a1e0cde945f9a:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2022-10-11T13:56:18.307338+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A807214284a7266f20e9a1e0cde945f9a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ce80d5a35056d25a2d90130a495f268dd554b57d0c4f60c7f1e4989d20ba47494784fea3b74a4c12e72b04516821d8af78b9e25f78243f983da2b74dd81a56e3c100ee6ae69962e1fc0ff84eeb43d8ceec57b1fbbc4b9239fd07bbee164d8ba1329ee108dcc76924a2103b88853aae949e4c309d7b8f5f58f6db843469c9dc34313c946a39c1381566d081a9bc45482cc38ff4766c2b055876b8529289764c9cbd18fd8c2dd5d46019f23706884e99c11414b60694c1d1aeb49d7e8389f5a1bb5348e99e8d9029718e834b5b8c73b67eb7ad31ec4b1fa8a366c2938a2a04755796f63dd548183d27590f2fc289de292a96d4a6cb3175a67b5bfe434092c4f30', 'category': 'Street name', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\", 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2978.0, \"x\": 238.0}, \"hi\": {\"y\": 3004.0, \"x\": 307.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5357: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060\n",
- "Processing image 5357: timestamp=2021-12-01 20:10:05.650021+00:00, observationId=o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A blue street sign with white text reading \\'300 S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18675087344261906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:05.650021+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa3b2a2f7ac47514464a9f6f1582e31da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091517Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=14d101719d2c0b721a15bac4a60404b8338a832ff2724a51e6f6dbc586a77a23ea002e1f9789df3fc0cdb27f50bb8dbbd2bb3b2fd224e68d4915dc9154ff79411d32fb91463caadf25da0546000922a1a345d6ffadc3fd6b4513a1ffffe5402df7e606db7e2fe8d6dac359b2c110c84c6e993ade2c41ea271bca69c044746caeb492b4854c15835c5c40491e62b45e204201b038750b3e7ebb4c964b41326fe78a739157fe9aac4dbec09978bddef9925aae1e91ef55000dd5eaf3d6a0fd31d2e7db256bdbe4e568c259f3c0f78b89969eec595475fc2649c83af374bb1849930a1b90a56c12bf89046e6777150b62a0dad5f26f61c2b48b7ffc00e10868fd2a', 'category': 'Street name', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2113.0, \"x\": 347.0}, \"hi\": {\"y\": 2255.0, \"x\": 597.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5358: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a4ad47bd403450a274ad8174bd472302:00110060\n",
- "Processing image 5358: timestamp=2022-10-07 20:29:30.596593+00:00, observationId=o1:a4ad47bd403450a274ad8174bd472302:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign that reads \\'300 S\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12855152929982833, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a4ad47bd403450a274ad8174bd472302:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2022-10-07T20:29:30.596593+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4ad47bd403450a274ad8174bd472302%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=206ebfbfc03ff3a36c83b335e1b86e146798fb972c981b8dc274165c6d8a8d459878ebb4aa1d6ea24105f7fddd75d76498c2431375b497024aafa13d8689529367465dab14b40cd8488db74b003c9fdc04e45711e35e5ddbc519b650b1b03c58d9f064e01f3269bd51cce2768a191178d57ecb1f788b3f8b573520bd226ef2ae8bc39dbc1fde7cda80df3d57ba361c401297b0d693bf3778116e41607c02d34d1e3d7d706aa585c79062c78ca9b5f4529807a92d80a46fc9132be3570410cb3dc001deada81e7f0627997b6b5298047a4bea7965228de215dcbada9d6b97a7047cf6292ff3e8b7dd408e3cdf3f4e6ffde2483b48d58f73f123d8dfd5f82b4596', 'category': 'Street name', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1709.0, \"x\": 2275.0}, \"hi\": {\"y\": 1922.0, \"x\": 2537.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5359: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a540dde54b5234110a51d5122a0780d1:00110060\n",
- "Processing image 5359: timestamp=2021-12-01 20:10:06.093919+00:00, observationId=o1:a540dde54b5234110a51d5122a0780d1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.\",\\n \"image_quality_notes\": \"The sign is extremely blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3742363022034427, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.'}\n",
- "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a540dde54b5234110a51d5122a0780d1:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:06.093919+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa540dde54b5234110a51d5122a0780d1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a12ab89e074d3dccfdb5447f9ec3b1da11588b78dffeee61becd2d6adf677ac0146158845b183ea55846c25beba0e9db82521710f24a263efde1dff67f8cb2b4490283ad4354b8732833ea4d311f88c9e11b9185c4f72611557721850d33a0e98db4d2f6cf5f90d26c48c760e8a7f85222f4be8a8e526f331744321203f4cbd6fa2feee5b83bb8d9cecfbe66892533fefb3d26b45ce95c7d1c0e4ee677a92fbead9df06a9f9ac686b4e322e1d8794cfdc1c2469cdae835c5767bdd62af967182e2099a1879504c70791445ddbcd0456ff779a4602ddac7954cbbb80a3560d09fc40c25cbe23e2221f81bc2d729e075c45d9c7eefb53d8b6698f1fabed330f621', 'category': 'Street name', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 1440.0, \"x\": 3142.0}, \"hi\": {\"y\": 1630.0, \"x\": 3544.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5360: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:586c469171528cfd3b44f774d5a95510:00110060\n",
- "Processing image 5360: timestamp=2021-12-01 20:10:05.650021+00:00, observationId=o1:586c469171528cfd3b44f774d5a95510:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign that says 300 S is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17902565002441406, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:586c469171528cfd3b44f774d5a95510:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:05.650021+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A586c469171528cfd3b44f774d5a95510%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=265fcd6b07573876fe64496a3cb2370e619a04f89add8400435c82f70c31aebbe8f6d8d261ec07c123250970fb38fcc3b71edf59c5e8f89f3dc911a6bdb447f309ec3fc4ea8649714c8b719e09f3a9b60799722dcbda8fb3e18d01f21a0ef04aea0f06fb531341777a8cbc719d7519c8e3272e25570004495d99d9636bd772485047e436b2b6dd813bde871e2edccda9ab51ded46acdaace709e2723d3e9aa0b2a3737e716d5bdefeeddbafbfd361ec41613c6b178ba07ca63571e3323a0573d9762f94fa94daefc5be1efa3da469f84604eff70b3d5ca74e9553f174a709b5f63e243cd372f0d611a191c04ff21e452698f79aeb811a7c5157d4832c1aae7d9', 'category': 'Street name', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2093.0, \"x\": 3286.0}, \"hi\": {\"y\": 2223.0, \"x\": 3536.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5361: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060\n",
- "Processing image 5361: timestamp=2021-11-30 20:37:25.918887+00:00, observationId=o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is green with white lettering and reads \\'300 S\\'. It is attached to a traffic signal pole.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1725797518877916, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-11-30T20:37:25.918887+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af4d2c0e1197a759bab4f4cd9fb84ce5b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=24187013d193c8a170834d112fd358335eacdb20ea5d618d19b8cb3dccabc8dd97fb4c7c89f5b0961f2ceed93561e0a6029e4fe2a358109d13c7dfeaadd972178f2136ff1c3d7ae1e2bda62868e0b33c440356bc22e8bcec993a7068846b517e308a37765f79d76302dd8641defb7ea84761666bd025c3ebc23e204b1766f7dcc73053359ae60c65cc01c9bb779376babd93c9621f73592661dff80055e8777c031f3968b005ba17edc75e6774a5e3995c70a592db1661aee78115ba76aae0d2e90adbb1171d26fde43b8799810e756ed39bb703a7eb530f9f7af563688e27cc9dab811b7a6a615e50b9e8940a54295c5ca89396f65a77739ad45c7720e7ad42', 'category': 'Street name', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2016.0, \"x\": 1915.0}, \"hi\": {\"y\": 2176.0, \"x\": 2141.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5362: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060\n",
- "Processing image 5362: timestamp=2019-01-16 16:51:32.782530+00:00, observationId=o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters is visible, with an \\\\\"ALL-WAY\\\\\" sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11935279846191406, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:32.782530+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ae60f0f737cb16a4af8a2566b1c393e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0ff381f3476e3c5c5a445665f84fb1526e66c5122ac4364e7c678c50d0b1841fd2b49d76dcd29ac4543b84c1baba90d575db0aabbf79573250ce24d4154c15ff16c6641d256e2f94278980a0ecbbd87ddac210a7d53068a8e5e3edc00484673872734b19d9bc24fff0a52879985755f8b644eb0f7618f0dcac6008a626e664ad791f603babf3df86755aa1b8348e05edae48c07ade3a28ab13c5da99d89e31eb62d3cc804a85d8998ba7a21f599463ec2eb99f19fda98c35ff175b822856739656e744f17370804239c836c6c0ac3d0043c1af6d5dcb1a78bbdfa4c4d7c9d9e66615b205ce5ec8639fff73db2e6b850484b32084e56f619f42ddfd9b1c508443', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2940.0, \"x\": 1142.0}, \"hi\": {\"y\": 3188.0, \"x\": 1377.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5363: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060\n",
- "Processing image 5363: timestamp=2019-01-16 16:51:33.170582+00:00, observationId=o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a standard red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24498757755055148, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:33.170582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaad63b6e44d4d4bf86fea1fa5f804354%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a6be928524b7aa149ac4054c681c237f63a94d2662267ee30129a8ec9086047628b5dd957445b7512d9d05ea0691712749e6c8c6017449e12f425052a9b5ec3c7f8bd70b161b2b1c2e45686f5729aa2302c9f13bbc8c2994a2498581d368d645c556213019f39129ad5c83f2ff4c6974dc7e335771ecbf4299de5d9e56db81f14d5f096fd9288169b588dab7bbd54362acc2495bfa9a9a7f480fd5b2a6da1e9d87681864acb5cabcbdd46e6acbc83aea2cc7e6551b79055f79d166b07214e1ffac464c1ab84060b52e9805b6cf39633aa52e8f4cca4c3f0f1699dc7bbc617f22a3dbe2f1def8f50f9eeb4692a5cc4dbcf3512f576fddb353e530ee8a5fe1ca5', 'category': 'Stop', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2795.0, \"x\": 1812.0}, \"hi\": {\"y\": 3220.0, \"x\": 2161.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5364: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:d768670befda156a513bdb62cc365261:00110060\n",
- "Processing image 5364: timestamp=2021-02-05 17:13:46.637666+00:00, observationId=o1:d768670befda156a513bdb62cc365261:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows a red octagonal stop sign with the word \\'STOP\\' in white letters. Below the stop sign, there is another sign that says \\'ALL WAY\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09603022366035276, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:d768670befda156a513bdb62cc365261:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2021-02-05T17:13:46.637666+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad768670befda156a513bdb62cc365261%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=972a8d5dbc340b6f29ac5ac836498bad4c3482bf1195396b2a3b230cdf3950b0582fc182fb732785d235bb442b6b6f717699cacc75f03a8f7f67219c701d267dce82bfc860ea32320431aec8e40e0b81865480bf6ce25d92c72fe4b012efb6260a2382b6b5297a8c3542c2d51324faa074a3d8b74748b200c6edeecc590b2f34c86e6e51fb9a567c5922e37d9821d534539e0a62252f3968d2c885190ed13f8c05bad8e2be822226b23fe45b76cbe250a72ce3632466dbe89df5c3e3e1288437daf4cf6813a896061d36ac1db4a08aa98c07a7c135ed1c39fbe3b42f76218100279a20a93902086992a9339a28ce89fa92620094ec142255ad711f62dfff0aa1', 'category': 'Stop', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3040.0, \"x\": 3091.0}, \"hi\": {\"y\": 3334.0, \"x\": 3266.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5365: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:cab33d272ab97f5a1713e7d793713944:00110060\n",
- "Processing image 5365: timestamp=2021-02-05 17:13:46.637666+00:00, observationId=o1:cab33d272ab97f5a1713e7d793713944:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible. There is an \\\\\"ALL WAY\\\\\" sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15820761694424396, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:cab33d272ab97f5a1713e7d793713944:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2021-02-05T17:13:46.637666+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acab33d272ab97f5a1713e7d793713944%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=41e9f3034d23290c047467502061f7d537e8329b888caa4f0e2f0ed7c8c5cb17cda39bc2466b1fae2a4471938ca586ff3ff139c7f85fe84abebf4fd545dd12cb665195b1c723975efd30636e90619df2d228715e9a5b495798d554187587c08dcc3db068d9ac0e4f9426c9442afe2f927c6c1a8855008588d2755d22d0833ddf530960ebda19368b691642a352ccbfcdd37fece015ee2e3b540d0519ec0db8aa5378fef09ec2012f9d80e9ace9d6676c3fa001ebcb315b33658b27b1d197b6b5b11e2735ffed7b8d396041f61a004e538719eac86f9de2e857c0a7e72ac705fcd7906c3dce1b7ef4b5838b7596a23cec144f5eefc992d7dde09039e0e2555481', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2129.0, \"x\": 99.0}, \"hi\": {\"y\": 2434.0, \"x\": 270.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5366: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060\n",
- "Processing image 5366: timestamp=2019-01-16 16:51:33.586755+00:00, observationId=o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \\\\\"ALL-WAY\\\\\" in white lettering. Therefore it\\'s a All-Way stop sign\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2928845909204376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3589, total_token_count=3678) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:33.586755+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a8651c3e5a5fae3c6512d20e2beb4a6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c682c6c6889025edadcd36e6df8390d8dda219386443248360df86ac013083f62dccb4214ad07f544c88d4b583fad6f54f513cfcc0955b2c72dfb98e5560e80b76052f90f1d8f6fd2bed2c55f7d7cbc0c1283d6cb52aac922b98f6a250cd0905984c4624b2fed4f3ad70869bc63ca59b65a0cc48c06a521e9e1861a096c1a29cec85c289c92f88920fc3e2b439610903143d4095e1be7528d976f1b8e8a32338148dbbac7b47eaa52ec2ecdffa381924227a376b80157365572a23d4676153e670a9b128f4a74ee42ba02c889a77fd0dcdafd6a493106f60451b79d71c499d458f78c49e918c62e8ba1addb426f8665a00b1faeae1366f6e5bea0a198fd8731', 'category': 'Stop', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1584.0, \"x\": 881.0}, \"hi\": {\"y\": 2164.0, \"x\": 1115.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5367: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:ec36ead4d30d3c04f875c91a76304682:00110060\n",
- "Processing image 5367: timestamp=2019-01-14 20:11:15.822632+00:00, observationId=o1:ec36ead4d30d3c04f875c91a76304682:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06335116665938804, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:ec36ead4d30d3c04f875c91a76304682:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-01-14T20:11:15.822632+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec36ead4d30d3c04f875c91a76304682%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091029Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=553d33031e252009a0679a37d20a921e63c07aff6d04775c2614a819138ecbfca24868892a10395437d3179a24e962f598938d4498fed54ffb9b447dc5433a75064a3abdcb9a659ed5ea197a2d352a64658bbad4877f01a7505d3a4432bb64c22368ac38a072f7ecb46398427eeb62c3dde07abe815482533676778e421eaeffcba818f0d104079f1235b1c08fc2024fc853e0d596651cd4445db3dca69a88ea5b1513bd76c732d96171470f74cc3d24e23c5dea4161f2d4bc6b85cb2f4751ff9aa85458ea542cbf7412d4aca7eeaf508a06b4876a68df8a273fde11eb9a677a480950be0738c1b15007df7a337174a80617c6343cb5151a190a343a92a18a42', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2323.0, \"x\": 1992.0}, \"hi\": {\"y\": 2429.0, \"x\": 2127.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5368: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:0d36f5efb71bf52346662b9331501443:00110060\n",
- "Processing image 5368: timestamp=2019-08-13 17:30:43.066151+00:00, observationId=o1:0d36f5efb71bf52346662b9331501443:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'.\",\\n \"image_quality_notes\": \"Image quality is fair. The sign is slightly blurry, but the text is still legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20812651846143934, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:0d36f5efb71bf52346662b9331501443:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-08-13T17:30:43.066151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d36f5efb71bf52346662b9331501443%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13f75265a26f041087ce544dede953e3ca80f98977ce3bd972869f9d81b228e9350390571f9411ec68ad462fc4b807409e91ce5ccbd2b3b22b69ddb2bba7f636b2cbd69fa54e128724f6bff060145ae195982b6aaeecb985a79317cc032c61606e7225fc1982f51cd31495e8a87a001c9e349ae12f4b936594c259fbb15c86c4fd1bd9d46726409161986fa9d2a333cbc61325c2fdb4beb8acadb09153842dcaa6de7700d3f1ebc5d251ac9cd4ac5a4759f2d7d95f840b623a0cdc2cc6bd87db18cf0a9005a0b531e38429b12e4cd77830cf99924a6a1780b975555234c937002e25d2425a5fdd0c85b9eaf2b8a777ccd1dea6bb81dfe864d2bbb64d927c2aa6', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2335.0, \"x\": 2325.0}, \"hi\": {\"y\": 2440.0, \"x\": 2455.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5369: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:b8becdad73fcd14818aa8db5cba9724f:00110060\n",
- "Processing image 5369: timestamp=2019-08-13 17:30:42.766133+00:00, observationId=o1:b8becdad73fcd14818aa8db5cba9724f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"NO TRUCKS OR TRAILERS\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.061131004559791695, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:b8becdad73fcd14818aa8db5cba9724f:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-08-13T17:30:42.766133+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab8becdad73fcd14818aa8db5cba9724f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=398e5f33cd9cc6010557647f90a9c05e4eea9591fb9176534fa36f7aebb7f27e862a5d4f33cda4bba4c032ed7078fcea824935de9b21434820680529dc4d8be7132e2113020df0c5de5255849c4325a42d298c4bc2b5cc79b028784237a350e031ad6dae16248e9fc9b6bbe9548747187f8458d57b3ec6bb0e16aa1aa40f5c8b503dea4f654a0c966e5f841652dc94728af90304701f0bc027558572b0528830dbce3db2bbf644aae197ee15a3ff2ad1dbb4da08a43188317616716dad16cfd31030c90e43acf9d1081ebb4f44c58f7e3e4163a71f9bfd3a75a2c17d5d313fd92cf46e1ff205b2f54d2dd9b255371f000f7845c1cf7dda9ea223fad53ab616e6', 'category': 'Other', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2329.0, \"x\": 1234.0}, \"hi\": {\"y\": 2432.0, \"x\": 1361.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5370: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:b2e9aaf06de0e96af0138352587500d5:00110060\n",
- "Processing image 5370: timestamp=2019-07-26 15:15:40.262357+00:00, observationId=o1:b2e9aaf06de0e96af0138352587500d5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'No Trucks or Trailers\\' are allowed.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08343212357882795, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:b2e9aaf06de0e96af0138352587500d5:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-07-26T15:15:40.262357+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab2e9aaf06de0e96af0138352587500d5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b41ddef7393ececedcd0c9895383d4fe273946ffc55c01060ffb883b3de11c8e57b2fdfd09a6c80db85c738321737dbf91945b14fddbaa55a421ef36a1c7dff07c94a396ed359071b9f6da2732bb821f78f469123fd800c2966d71562a38e8d9d7422565f0af2cf940ec6aaa08d16adc861079eea685b366dc3cd42410e6e3de49a8c02d4c5c3ae6c319292feb360d387b9e4d98105c4825b0be391d0fa2de2345b22638a529a592b712420e97cc682dfa933c03339d423d55f91c5a2164c8d4f037f8f23ff5629fcac1e17eaa0f5b071400fe2b4a215ca91467b356b603a2767383e1c72e23c6212c92c6e6ced704b0dad081bb6e35d6bc2c221d84b3f86acb', 'category': 'Other', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2329.0, \"x\": 1479.0}, \"hi\": {\"y\": 2434.0, \"x\": 1608.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5371: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:a4a4be1dc525edbd410d56abd6334cc5:00110060\n",
- "Processing image 5371: timestamp=2024-02-06 15:46:59.936271+00:00, observationId=o1:a4a4be1dc525edbd410d56abd6334cc5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'. It\\'s a regulatory sign restricting certain vehicle types.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12709935973672307, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:a4a4be1dc525edbd410d56abd6334cc5:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2024-02-06T15:46:59.936271+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4a4be1dc525edbd410d56abd6334cc5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c0a3059655ee006a6906af8c9c1b40f15a1308862c788a57111a47dc0b8c7916cd2e7124f3fda73957b6c43053898a23a8391a8dc4fd2aaa12d2f1befae550b7ed312d8dd0b8d5c7aa40c66680fa233989f88c4e37208cbd430bfc04c86f4acd08fbda9c992ff850fc0c9ae4cf04e9ac84e55ceefd004d7cf9affc6486463ee413193ea082bcdb92d70fbe2b2616236cf0aedc7392bc91da837e8c1272581d4591d3b35f7f0b82a56fb842dfce05cc9241f007f8732a8398e2530c7c96dd357d816299a900d66bf900c88b677a04f309876374291aafc9b3f2c1ccc416ea049d3033eafc61c0c3a11e0ee821b1ce0b045c48e3552a7d3d089f8b6ca3f7aae42', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2325.0, \"x\": 1866.0}, \"hi\": {\"y\": 2433.0, \"x\": 2000.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5372: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:012ad906352e2c1e58230c62f0a957da:00110060\n",
- "Processing image 5372: timestamp=2011-05-10 19:00:19.287057+00:00, observationId=o1:012ad906352e2c1e58230c62f0a957da:00110060\n",
- " Error processing image 5372: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A012ad906352e2c1e58230c62f0a957da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e18ede15437b4240b11ea85e6727841a4f03f4dc9495e9667ecc78524b58465517670191d94df22905e179704ec570611c8b53fd152327b626a5c854cbde6e72f1f4c69e03fd43a546e46519aa84985ba5a53ef3785e8b13585a25185d806875b049410baa55ddcff66a1d45cc05bc88657e4e4c37f692f7252ae79d7018aa26e081967ff9c2b9c4a16cfc86d3dea8f3cabe3cfb425b7f3477cd38e798049816abb1505fbce162501fff4150ed4b9c8b465984fee6d4de363d9d499f32245056509efb0cfb0649b1e8b469a4b92a141707d3b86a57a4250185e33f91961ab03c55bbd79fc0b217c70b78b4133dd4155c94b259b9f2a8d597e45e7a105e8877b\n",
- "Processing image 5373: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060\n",
- "Processing image 5373: timestamp=2024-01-25 15:34:45.766201+00:00, observationId=o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.028340466951919815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f', 'observationId': 'o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060', 'geographic_point': 'POINT(-81.9096554011258 28.0343724682606)', 'mapsURL': 'https://maps.google.com/?q=28.034372,-81.909655', 'captureTimestamp': '2024-01-25T15:34:45.766201+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4ccb7ed3efef1927f0e856cae1efd0b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=626940cf483bfe151d6f748841971d0595bc4fb7185567189a67ecbcb8fdca8ae69af044c804f7f97a44d9c09f4d27e30b0600db3b8c502a545dc7e391d45ddc9037e3ac6aab2c4de4ae6552b06b607533caf8b6f90e85b770bd221360622309880405800465698775442a1a49b3d628ba322f96f79e2a22581902deaad66f03b8ca905060e32643417ba10ff4c7151578e2a2f0bf7cda2a55bf4bfccbef3983de73e1be67d5f9c807c03b88d09e8d4f08962db57aebf2f0c6d008fc5f14b0f0206685c888a5160ea3e349dbd53d30be18356b306126200c7352b3e59ea50639ef9d6de7a9f6480f09d33708c0441d2f82a209bcf05cf26be6b60eb991658ccf', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3066.0, \"x\": 1621.0}, \"hi\": {\"y\": 3339.0, \"x\": 1894.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5374: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:ebaf7546c8ab9d55493a8dc82d3755e6:00110060\n",
- "Processing image 5374: timestamp=2011-05-10 19:00:21.612488+00:00, observationId=o1:ebaf7546c8ab9d55493a8dc82d3755e6:00110060\n",
- " Error processing image 5374: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebaf7546c8ab9d55493a8dc82d3755e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=18d52784d8fbf56ac3f8bd4722275784f796b7fbe4bf4506e2fad6c55e5b4c4c1c0f14d61e056afbeee3db3be8f6473ae8618b00ef8df29b46fd0e7b0ef801b48f0ada7291070d541eaf78eff37d332a05bb93e64f4c45df1e757a5f3e92bacc9c4e156c128acdbcc0caab00a78c8edb7a09e0ac0a4c36fadd824e952e28f869b67133c4d584e44e4829708deeb2f194ca51c5b694725606e6971e46bc3c5b88c36cf36d3d64ceabb97db31aadf89856dc10d5ce10883e326aff439c28d62c97c4707a4b95821b663cb40a751cb6adceefb37fdf88a6c6cc7dd64eb660afeff7db4769ef86b604087749348da5ddaa7a6f504b1813ee6e7e392acb6ebfc465a0\n",
- "Processing image 5375: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:f43b6cedf643126a6339cdaacd40b296:00110060\n",
- "Processing image 5375: timestamp=2022-05-26 18:49:37.433184+00:00, observationId=o1:f43b6cedf643126a6339cdaacd40b296:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\'STOP\\' in white letters is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09993963688611984, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=1525, total_token_count=1589) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f', 'observationId': 'o1:f43b6cedf643126a6339cdaacd40b296:00110060', 'geographic_point': 'POINT(-81.9096554011258 28.0343724682606)', 'mapsURL': 'https://maps.google.com/?q=28.034372,-81.909655', 'captureTimestamp': '2022-05-26T18:49:37.433184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af43b6cedf643126a6339cdaacd40b296%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b73367f459346283e00d3791133c3fc5b7b8aeb455a33ad1c691fc51247c71267ab003229fde15865f1075307d0b990444664745e3678abc8ca73eb32270f82979792fdf9dcb6a3e8e2d630cff5f2f922db26b7ce22bb301ce3c9948d164b304373622b20da56b6e134b8aba796d354bdcb2274a69a63cd40aa9bb4324fafc39450a97dcfc1d184958f0d219272f8481a40ea1c2c64e33c204678d875ef4c09c29949d7c35c16bb565c6beda0fea92e797fd2396180d630d2ce85dd607c4682f429e9a4bcd2fe823bd04b5d6bff12303e38ee0f63eadea787da166cc93315f7339bec7fcfef3ffd16a795fa972800accb313274d7736eadf96b11b43e96fc306', 'category': 'Stop', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 561.0}, \"hi\": {\"y\": 3188.0, \"x\": 616.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5376: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:a166e32b507ab89b25a88c33c3e37335:00110060\n",
- "Processing image 5376: timestamp=2023-12-26 14:24:38.523902+00:00, observationId=o1:a166e32b507ab89b25a88c33c3e37335:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1947809440502222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:a166e32b507ab89b25a88c33c3e37335:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.523902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa166e32b507ab89b25a88c33c3e37335%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=467da44f71918fa93767c65073dbf25aaf8231831ed2f52f73593bf4d9d7b0f1eaaa6b95008183206b656243d1dcb2aea079b5903d9dcf2b13db1a539e260dcc941f9cd819b4271a25b99d98d5466a5dd8460d89b3998e82bc26d564aa6c6c882f1e1fb88c3d55ca3f54b4a0b3598e4e8cd7b27e3154277b346b39f8a28c6884203fd6eba88633c03c047a4092971673bd077c103b9bd93e7b44ce2c907fac6ee8804f2406a32f3e0b95ab10a99f029d23c7452325de10aec4288797d56957b749d04ce90b6daa93d1248bc3fad2f9cfb20e3a4ae5145c6794a9b108e73a151d8d79398b13746f4bff37ef4f3526055088457fc5e0c702bb78bb0e9c36f7e392', 'category': 'Yield', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3145.0, \"x\": 337.0}, \"hi\": {\"y\": 3171.0, \"x\": 369.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5377: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:1d430c43d24701146d1923cbfe90c818:00110060\n",
- "Processing image 5377: timestamp=2023-12-26 14:24:38.223894+00:00, observationId=o1:1d430c43d24701146d1923cbfe90c818:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white triangular yield sign is visible. It is slightly blurry.\",\\n \"image_quality_notes\": \"The image quality is fair; the sign is a bit blurry. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2494634708888094, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. '}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. '}\n",
- "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:1d430c43d24701146d1923cbfe90c818:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.223894+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d430c43d24701146d1923cbfe90c818%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=512a01a88160976826c20e18dac491708a96ec2e08c2cbc69b879915f87d5905b53ad42a1c8d658d3dfcf8b0345ae15cd89d438e82fa891d849011a62c6e38e8d7075086d1332e20f41a6298fe4d4121c2f3e73f066873e16fe23c4851f7ee1561be65bf9aaa77376ce638227f793d792c36726196363ed6a0a13545e1cee54c2c9dfdc3c751e2bfb7f06c5fda295213f300e803a825f446e000f0e61f1d27c9dc3e2ab0d1b5444a49f825d5e2560da018805a3accbcd35fd2ab284ad8b24cec4a0ef0f5ed22650b1da43bc583035d68d1e143a97da47a773a01f5b42936a03c89f4a1f871bd01e601b7f750f06714950a1490df320d6c1c24c7b75e026f3a03', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3135.0, \"x\": 3462.0}, \"hi\": {\"y\": 3168.0, \"x\": 3491.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5378: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060\n",
- "Processing image 5378: timestamp=2023-12-26 14:24:38.223894+00:00, observationId=o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A triangular yield sign with a red border is present.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14325760958487527, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.223894+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4ee1d72f9ea3989abde21f4bb1be883c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6f37009713050b9a47c21a24b160b92e01b296d9cb058c8713ce4cca609f65b09b6625c3cbe8e927dce21ab506d02f4262002429cb80295b9dba92de55e67e2b26c4e729e98c2d1b9bf6bfd167808df38fc88bba10a5e46a5c43f91169d50f52d40aef0daaf69d3c1849b5b9136aad0559bca60882b0da3bf18fd0fdfdf47b729f8a81eb73a3f4121151556169693641615c75535e6f6c2e3c5480c277af70813bb174a1d953cd2599222a8967665cfde6938d14e1ee337ac559c859caa389cd5ac8237040d7fdcb2805a491d04083d72cb869484af0c7a9691e0fa827f0c164d0c04b41ac6f7ef3c047215496d96ed88dfba54afdbdd982d494da47a945cfa4', 'category': 'Yield', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3158.0, \"x\": 373.0}, \"hi\": {\"y\": 3191.0, \"x\": 402.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5379: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:dbf4d0960251bf53653609fa12a85125:00110060\n",
- "Processing image 5379: timestamp=2023-12-26 14:24:37.923870+00:00, observationId=o1:dbf4d0960251bf53653609fa12a85125:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.\",\\n \"image_quality_notes\": \"The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43885050064478165, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=493, total_token_count=610) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.'}\n",
- "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:dbf4d0960251bf53653609fa12a85125:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:37.923870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adbf4d0960251bf53653609fa12a85125%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e3a17a787df429c4831ad46cf9284cb512f29f0fdea8ae55c0b41d2ea1f815243c9e099d2d02a5be449e019c334b5a8943aed014336358563fe3de8759cbc95d4c9ace9a3581cbcefc7c5b6fe673f4f5b21497de8a4b8837a787aefb5f04cd43b3fbf39efe187fa5c0149f5ba941500f7d5a6ede7adecad2b91ca8d80114dc6df5fb8ff2747e534e478cd36c9dec04e22066b9a285bf771a8ec38e929f62d25fd57e744bab03b345251b8fc6ca59cd3283ba351c3e92c74f7206e9360dfc96ae7c45bd9842c9d7beb15d46fd1212eb0dbec6353c1546c3a31061d78a2d1565de8bc93414927646a83d02a3aaf871557b9619e19d64394ca7a3181fd671636f2', 'category': 'Other', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3177.0, \"x\": 663.0}, \"hi\": {\"y\": 3208.0, \"x\": 697.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5380: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:10166932b967ab6eef2f4cbc371c2ca0:00110060\n",
- "Processing image 5380: timestamp=2023-12-26 14:24:37.923870+00:00, observationId=o1:10166932b967ab6eef2f4cbc371c2ca0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white triangular yield sign is visible. It appears to be in fair condition.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the yield sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17953946139361407, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:10166932b967ab6eef2f4cbc371c2ca0:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:37.923870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A10166932b967ab6eef2f4cbc371c2ca0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b78712ee56c4adbd31cda70ca376d284bfc30fc2931c79f96f0757fa3b0b6a2c92c3ad1a9b66ec0510e5acb0aecd10587cb3cd45f6e4b0cfe5913574b39c7962baf4ed72a5e74ce46b0264f37e87d67ad57f3c4c4bbbbe8c618c3f8e358dbd072439e33085c9ae889c59627fb4be4d2d0067344f05c0de096b2e1cfdf71a3969e8b2ba515edcdf13de6c7ce07e5f59cafc5489a210de6969b18275ae638e68ac69cbbc7df890a58c6227563b21655e164f853bb892a8d6efecc129c5534e4399c926dce5eeee710f0e71dd190017dc280a3ccd684613521da681e7222ec9c4f97eda4eb697efc55aa3dfe11830a02d5cb7f4700c4ecef92e36433c65629602e', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3132.0, \"x\": 3484.0}, \"hi\": {\"y\": 3166.0, \"x\": 3519.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5381: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060\n",
- "Processing image 5381: timestamp=2022-06-24 20:26:58.396259+00:00, observationId=o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It\\'s orange with white reflective stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1816991728705329, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.396259+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c8bd0e6f6ff075f49300e7b9bca0ac9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b411a603dbf55f9f559358cb50059dbcd5a2a0c286fa73e1eb0fb2fae29c46a42e55613cf3d69f5f461b5bbf6a4f8db5741eb63377162d84e249a0f69f0c9f0f9c7221ff358181e5a2639eef87d7a8d9f62f5ea5cd812ed33a12c36aca927658879e1a7005d0737e8d84d6c49641cc37d419eeba68349d303967c491a810d08b42d8eb94e709b941c5af197a1b9f5f8cd878e4ee143c57e32ee64bb7e3fb8a2e636f7d4fd160403427d0a07c00312e6d4db28d24a1b4c33c0bad8dd5a5ddeb9f7d7256fcb27d04571a53e38497703a41530926f042bf6a9dec56bb41b2b77ef290c05040645b1471ef1d99ff29d458835cc456d3d184e367b808dc8c6510034', 'category': 'Other', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2584.0, \"x\": 1482.0}, \"hi\": {\"y\": 2803.0, \"x\": 1597.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5382: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:edf8612e536a807e50f717ae9a7b3aa7:00110060\n",
- "Processing image 5382: timestamp=2022-06-24 20:27:00.884269+00:00, observationId=o1:edf8612e536a807e50f717ae9a7b3aa7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'KEEP LEFT\\' with an arrow pointing to the left. The sign is associated with road construction barrels.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21206561497279575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=493, total_token_count=563) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:edf8612e536a807e50f717ae9a7b3aa7:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:27:00.884269+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedf8612e536a807e50f717ae9a7b3aa7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e81737e8d9bdc4e8da66ae967c733594769cf712da40f3cbc66d33e8ace7c9708a08f0626f3d9ace68c8c660127ad212d067f7eb7980b1511c5398747351bcbdae41dd179080f20c829266f2afe148a7cc855a26e09a95999a20ac34bcb3986aa176e709bca54ac13ec10b99a2f0ad27b856c38ee73a78e7e3d25a5c74a2bcc2763994dcbe7f49d62b4472c9e2012adf52130eff0c98a75e4b540d6a501710b042e297cb138fda1441c837f10ac5390f76837eef786723337f92aec31b6317892c1754b6230ead3f2d0913e422a9e52325b7660e7c80c985c4fb96a058f7c4b9509d7a854ab55c75631b14c926f78b859efa9a1975b93bf1fda50f0cd715e71', 'category': 'Other', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3329.0, \"x\": 1266.0}, \"hi\": {\"y\": 3398.0, \"x\": 1308.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5383: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:8712f0c6362bed799e4c1fd7569e206a:00110060\n",
- "Processing image 5383: timestamp=2022-06-24 20:26:58.756211+00:00, observationId=o1:8712f0c6362bed799e4c1fd7569e206a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows the text \\'KEEP RIGHT\\' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15525826654936137, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:8712f0c6362bed799e4c1fd7569e206a:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.756211+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8712f0c6362bed799e4c1fd7569e206a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bfa26ace3bc4d650175044e621a9bfb697fb33d61bdfec8c1bb3ab936f4187e34a405394728c642e9cb1e520c47dec989bd97147b6e3ef156260866ffdc759851ac36c6b8292e04b9b11ae6356069362a464aeeff3eac82749a851fce1cde2f5a578d37532388eea936a0d1957016c788e0583dc23775c64a50c47a9822177244d1f2d8be788da2cdee5d3a281076536e02e8cc9912b4f58dd3f00ba6e5a63fe2759928133812fe202c5585250642360443c2e00ee68ec685e6dc039f53052e190e95a57078bb820e7f7597b2caf799f9cff4fb527ac26217005a51d631685ad8919abedffd9dd7e53435983a6f7342bd60356c9d80ccc38bc9c81ed9ba4526', 'category': 'Turn', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3498.0, \"x\": 3011.0}, \"hi\": {\"y\": 3671.0, \"x\": 3106.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5384: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060\n",
- "Processing image 5384: timestamp=2022-06-29 17:11:13.219151+00:00, observationId=o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates \\'KEEP LEFT\\' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\",\\n \"image_quality_notes\": \"The image quality is poor, but the sign is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28938253066119024, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-29T17:11:13.219151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa29f031dde36b2f2a627b9d5ec6721ae%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b78a03dc2068cbe075de2590dc5788749b2fbdc47ee0096eb293ce210a0a1b3db3733246271a78995f6f963854e4cf393525748484112f746d43333c23868766a6e285acaaa0acef869039e7c6610c72f055f28914816e8c461656a2b42ad42406a0fbbfcb77a5a5afed6a2bca48c9035a99c8ed21b1293b9726015f15f3ea6ac90ee5add831d86c96c2d5df4093024903bbd512b011e7f56c142d12890f39f7ab0d99daeda238b764b2f003b97f71764e06eec9d5e5126e9f7f3c46a219e2185500f27eaee125e1192295cae40d290e8081cfa343d4fabb8dc12173a1aa1ce71968c61ad61126d5e09c81762f5e68d7f2b90da959df7a8077cf8759952a140', 'category': 'Turn', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2328.0, \"x\": 1243.0}, \"hi\": {\"y\": 2400.0, \"x\": 1288.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5385: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060\n",
- "Processing image 5385: timestamp=2022-06-24 20:26:58.756211+00:00, observationId=o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'KEEP RIGHT\\' with an arrow pointing to the upper right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09923730358000725, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.756211+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac80ba80cc66e3d12a277816fb3d96cd4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75a7d79b0d9140bcec7fa98fa532bcd8849a6168c2682abf97a50ded1c6ec0c8f4e9335a649c68cf9385900e6d146f6efe2c6774447b289cf1197b460f3901d94555962b0b481a2f5cb4211f90963c5d21f73165d3346335af0f440c43983dbe95f301c72a327610edd8d3ff71c39627586cf83bd7f3dc4842bcb32b87252d573972121a438eb2481dd3d0ce8c2c72def04756e0acd11863eae11cf91afbe4ae0055f33d7a60a51f4960c453b6c689e776d7596bb380505c9472cc814ea074e3a4f08f51dfa3b95a2a5d817afb1aa35222312ad8eba1f9eb59703ea2b16aa73ef8d17acc243c9b90f20ced3f84740f318d7f81d7f89a10e06633773fbd0f9065', 'category': 'Turn', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2642.0, \"x\": 20.0}, \"hi\": {\"y\": 2818.0, \"x\": 110.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5386: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:65012f18b375d444f982e9063fc72696:00110060\n",
- "Processing image 5386: timestamp=2019-01-28 14:46:05.258082+00:00, observationId=o1:65012f18b375d444f982e9063fc72696:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with the text \\'DOG ON GUARD\\' and \\'7 DAYS A WEEK UNLESS WHICH DAYS\\'. This sign warns about a dog on guard. \",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3882954679889443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:65012f18b375d444f982e9063fc72696:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2019-01-28T14:46:05.258082+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A65012f18b375d444f982e9063fc72696%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=672a5783961e3ba434d2bc36cb00818cc6a7ea53af8be12fc6e926f7f695dc370aeb92028d113ef17768bb84cc3ebcc1adfc2ba2581df367f3949187af108666b1aec9cdf66b0d011c7e8d57c4d5a18f35d6ebddf8c837cc61cb78429df5dd560d8f319c7997553d58a5c2b06ec3ee6b9e010e2b653477f2f4723769e646167e44e69f125ea0d47975751b2e8e5b4ec1c2f6ebfcfc94d83ffa2609ad5a60c03c3249e67c29f9839678a875921ba1cdbadb82853489d3175ac0707d3b9075689677f4f3746a5280fb9349bb48a529ff1800ac745b9ee7047286dcbecf09055be0390bce359106bcfd97cd0f62e24f3df2989feccc9125ea3f546bde6db110b159', 'category': 'Other', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2720.0, \"x\": 153.0}, \"hi\": {\"y\": 2895.0, \"x\": 292.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5387: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:de36bee118f2b11cdf0cf5116b7d2453:00110060\n",
- "Processing image 5387: timestamp=2011-04-29 19:49:19.219666+00:00, observationId=o1:de36bee118f2b11cdf0cf5116b7d2453:00110060\n",
- " Error processing image 5387: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ade36bee118f2b11cdf0cf5116b7d2453%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8579b5f540190b02384adaaec912cc0c1fd576b518829843972638ec9ab1eb691d40444143ca83889b7c97eeab9ffef415361c8343f1e346296fcc50a73affad914a81811bebfb718652c14958013f300e6d390bd4d8e3d50c0bc09a873cdd532581c1b277bec61b3ecedd0a501a62b5c14a883db31f5299e1f005720c244256f9d0e598a5d50e9d4ea7cfc5cac9f076039d4adce64c57d09317d23b5ad45ebfa95169653b030fc2a3a90ada089003481bbef84606a18feb58ba69cc3eae44a0cb338f6076de69800d97ac372b9290852d951fbab91776b09d64729fd9287863031ae81d71a628eb4b03f6711535822e8d8d197918226c5606594100c67de039\n",
- "Processing image 5388: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:4f67b36f408d7acfb33f8999ba4424a6:00110060\n",
- "Processing image 5388: timestamp=2011-04-29 19:49:19.927889+00:00, observationId=o1:4f67b36f408d7acfb33f8999ba4424a6:00110060\n",
- " Error processing image 5388: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4f67b36f408d7acfb33f8999ba4424a6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1b08e2537b45a64bbd4c5765fe50d1cba46fde579d1fc75241ba72f5cbf064907d8c9b3e7eb4a51b65c9e3c1236bfcd4475475f81c1589d5caa07483e62da0ec9f1ed22d4b9c78db1c2c2417055983f8d978facfba610f3e2e916bdbcbf80535a3c34294a870cc6cf227d03156a8711b18a5629616ecd2f038de6a227cb07e78bf3950848e1783c1c7f0694b017b960a09c3ee6fdd5f260b4fc3c5392a784790d453535d549c5161e65374b239098191babc51a9e9a74b2a182749628462ed7105c739ad04be28e33c1a035b17dedf865d044667212dc63337774b4fe86117b509cadea30bf35317682237bb4690f1fe5a029ebacc2e3494296fe77612baaae\n",
- "Processing image 5389: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060\n",
- "Processing image 5389: timestamp=2024-02-12 21:37:01.976850+00:00, observationId=o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with the words \\'DOG ON GUARD\\' on it. There\\'s more text below it that is difficult to read.\",\\n \"image_quality_notes\": \"Image is somewhat blurry, making it hard to read all the text on the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2998682300696212, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.'}\n",
- "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2024-02-12T21:37:01.976850+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2cdf637fa7c109d07e0812ae2ea45c6b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4657bc59e802d4f0033a028c15caaea42f27452760c4389ba2b4cbbb93388adc3d48bd0b82689c562949acdcbb8348d739aad9758d63229280e69e14afe52ba02b14dd2981d1fe4a005191f1944abb79e765490ad5e780790fda5520b8b5fcddc86761d0da482b046066e5a6694870c9e6e79c031d9a0c395de8d3f7e8da33ed01069720c7bf563fbcb5f9d0610f2cac8f42d2404668a2817a09b8b3faaabb64834b6ce12961a7fbf9d3190bb5eb2ed1b07f2c49b298ba368f8a522d862fd175fe8e13fe781b7f96a2052f8d552109cbe5e0558acb4e10436baa7beb525d2fc4e32feed0a5032df56fd6d4b9ea10530ce100c29d6ad5a7ad54f1a2075ec12cb7', 'category': 'Other', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3551.0, \"x\": 1171.0}, \"hi\": {\"y\": 3704.0, \"x\": 1288.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5390: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:7e3e165d3c70bba6deefd307f893cd85:00110060\n",
- "Processing image 5390: timestamp=2016-06-15 20:54:57.795572+00:00, observationId=o1:7e3e165d3c70bba6deefd307f893cd85:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is yellow and diamond-shaped, with the words \\'DOG ON GUARD\\' written on it. Below that, it says \\'5 DAYS A WEEK GUESS WHICH DAYS\\'. This is a warning sign about a dog on the property.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign details are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2331846493941087, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=493, total_token_count=597) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:7e3e165d3c70bba6deefd307f893cd85:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2016-06-15T20:54:57.795572+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e3e165d3c70bba6deefd307f893cd85%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6de23f6a8c2fcf3d68e09758a8f9d59fbcbebffb0013d36cecab9b0c60712f0f2f4afddb14c16583ef7c43249ade6eb1867adc28fc2fd1bb51052cc1644f186b77e49c60d9c320b1d2caa1e2a1d877d08a77f1f8e7c17dbb1315f0bd873567140c60a3f96c261b4d0901f41034be0c84716341d3cdb339eea73f9142246d4aa9bb75c2256c7b95fbc9723a9b00a5f0a87d139d67f2a0138e708530fabbec790c52bf72f0ad4b94dc9cc5129e6f5681fd402337329e139240f9a7fb87df17fe2ffb51c97c740ae7b9310ca46f4cf164ced9dcf7505a66723a74f83f65a2ba26d7d7d297fd8ba0955ffa240f097ce4bfb1d9762ecfdec711776a10a6d0fd50d2d4', 'category': 'Other', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 738.0, \"x\": 1432.0}, \"hi\": {\"y\": 917.0, \"x\": 1588.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5391: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:ee1db258177276e51477eed1ed018772:00110060\n",
- "Processing image 5391: timestamp=2011-05-04 19:35:48.791195+00:00, observationId=o1:ee1db258177276e51477eed1ed018772:00110060\n",
- " Error processing image 5391: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee1db258177276e51477eed1ed018772%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=acdea24066fe5905b836d6e2c4b124005de37114201dd7cbda34a3f00f30171b0742d990bb03f73935f20766bf40e8df569158f9dfc28ff7d960d5c147e141bf999d0bbabdcef741a87f80d09d7fb97cec7adcc701b06c0f72ffb1113abe5d77638f4523b47d61597f33fceeba609a19ad0509da12c58118e11abb853418664e7775612dcbdcd4dda4c523f9d117d8bdf77d713a4ecd2062909319476a377e879e4bf852a014e917ffa60e8d50d8f0406e0183d98569a56c69ac73bea738010ab5da244b1b14c6d445dc9eaf1a7b1a7810f47fb01f4ef7e0c6abda0a21c732cbd5252153f69ee23b12df3dbd28ebaab6e5a6a01f8d29e97c05613c9f1d2ecb2d\n",
- "Processing image 5392: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:ffad0b1fcf02d7ffbdae7613e49a695f:00110060\n",
- "Processing image 5392: timestamp=2011-05-04 19:35:48.113147+00:00, observationId=o1:ffad0b1fcf02d7ffbdae7613e49a695f:00110060\n",
- " Error processing image 5392: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Affad0b1fcf02d7ffbdae7613e49a695f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=69c1aa0b74eaf259d24b807b3b33c958c6b77f5f593abe22b17d722c24922d013389bad46348cd496fab468f1f585a976e5de4b6115cc9c2767c3a86b939879c96ce1869ab12c9ebe4937ff50a37dda928e9920b75125d0e875fdaf9607bb36c6b634256ce51ff0f0ce5d65f3a4e2b67e90913ff74a8d1662a3a3a160fbbaadface3a8e87739463be142eb442b02effd36da76f3699fdb3454c792ed1a20b54e1fb10b7a752a585f3e5562fb56dd12e31841bee6e129103d612543620a44fcf645a4796eb58f3b9164b886a5cdef01f2d05a67448ab43414e914fceee37f2f1aad170a9a72892507694a73eca210caad2199c0978979cc0e3fb592bca9b03aff\n",
- "Processing image 5393: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:3efbffef357a3f730caec37bde6b2666:00110060\n",
- "Processing image 5393: timestamp=2011-05-04 19:36:52.182055+00:00, observationId=o1:3efbffef357a3f730caec37bde6b2666:00110060\n",
- " Error processing image 5393: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3efbffef357a3f730caec37bde6b2666%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b68187b09560e174a8d109b5b7179ce51478e1c7bf96a0d15b0d512771193bc59604d58c11c4b5961ea002aec6952bf939b28fc0c41adf038f662c0175905772d20d3e03baddf158a8be3f5c662691ef71cc7e49f00eb31da0bafef02e16527f8fa7adc18bdab183df33aa9c79244b962747a290ca83c9bd8cb49417e996b19ed82918330f5c2483e92c34ea3524ce98067cf8ba7aa5bc161789b151c37fe43ed77369aeb20d82551f0f2c6f7b343efc0a22cdcd9d33ff61848fe50b2cd1c88965886be2154313590e8a133a9f796ce3c1dc5c2bf3a9af2a418a39d8b757b73983f740ff055513fb19bced6cfc932ec30ae8b66ee129f6ea793c0786ef7e27cc\n",
- "Processing image 5394: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:7f77caf9c94ea977a9061a66591b534b:00110060\n",
- "Processing image 5394: timestamp=2011-05-04 19:36:51.251670+00:00, observationId=o1:7f77caf9c94ea977a9061a66591b534b:00110060\n",
- " Error processing image 5394: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7f77caf9c94ea977a9061a66591b534b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73f38a68979956b7a8a515a23cb46903a8555703e8a60d0b2182b70ee67e30aa0871e92d4773783dc0086155c4ffcbfeb9c88317b9078a48ce0b8074f4f6ae48aae3f77814d1f053f20dd7fe37f583f9f351c8449a557047c7866025602f2eca8a9fd94fed2395019adf6e00e9e0e8cbe45896726739df68ef3b72e1461b386f12f8c2a63da83fa06e7a217a8a6310f614eabbc7e71c997065d9162a68521a29d32493d6d47335668e193783281f96799ad8b8bc439c782aabe90587051dc195e03fdb8228bd418223672102ebebb3b73688282e05b10994792c9fcf58bf3c9f8ba68f8fe0a0744f267b8d191cf7c4fb52b95ca56af36def7beaea99d3575f92\n",
- "Processing image 5395: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:dd068945296c713cb29c424061ef60bc:00110060\n",
- "Processing image 5395: timestamp=2011-05-04 19:36:52.182055+00:00, observationId=o1:dd068945296c713cb29c424061ef60bc:00110060\n",
- " Error processing image 5395: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Add068945296c713cb29c424061ef60bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7d6cfebcb9843a893a7b39ae477fd7be3850c4555d496dcf9ec8028fff867bd8236ae40eebbe159015d438708353cc7012098c52c0562702dbc3dc6c863b2845368fc549c4d51a4d2a61cd0b2967a04229d8dfd84d2855400f331a172468cae8124ece0a8b94bc7cf563ea65c9f853711df22a07d082ef8416c428a27b652a6be3c22b7caef4b35320d59cbe2137afce1b515333633991f0f72cc8a99e15bd56552a8baf4f5ccc97bbe1832848534e8839ed544e7d416f5668caf64e9eb37936d01ae2bd83e9be1e9c89e911f6b460dd0a15c2c457f1b1c22fb54cf0b718eb22c03e889147ac947410e3c4a7fdfa722a923c529de1746cb38aff4bac3b581716\n",
- "Processing image 5396: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:68706cba9cdb0ff962783674ec037d42:00110060\n",
- "Processing image 5396: timestamp=2024-02-20 21:13:26.496263+00:00, observationId=o1:68706cba9cdb0ff962783674ec037d42:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The street sign reads \\'W Memorial Blvd\\' with a directional arrow pointing right. The number \\'200\\' is also on the sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22486347901193718, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:68706cba9cdb0ff962783674ec037d42:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:26.496263+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68706cba9cdb0ff962783674ec037d42%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b40479267afc8ec2c7c3dc3e3482684cba55a90d053ea7376eee6bbb108c23b570b4cf2cd2dd99335de8507eb6cc0392953aa265e61182c08c5c0cdbf22c9d744cb2ce2f1afde941032c7dc4c6269bf6e10c601bdba0e340e29683b336f60f8372ed56bd079709fa2b2f73697e9b1c3f7d1b1e73b18220945cd1073c89607fa91bdd9e98dd32d12b0d43ab27d400d2d611176d3f91f1d1b08fa03e3f708963ce8e077d7e29adb00db3824f82837c5d58b7d28a561b0db9bbf78e213df0e6a8332397fcb6426e84a257f6b7045483ec6f642e982380e0f268f39d41fb99b8892fc16017006ef20bc1ba8c63b3c2d81dc8419882103b26f6fa159d9cb63c28bb90', 'category': 'Street name', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2248.0, \"x\": 1345.0}, \"hi\": {\"y\": 2342.0, \"x\": 1722.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5397: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:518f000324af718b84923fa563d9b30a:00110060\n",
- "Processing image 5397: timestamp=2024-02-20 21:13:25.972607+00:00, observationId=o1:518f000324af718b84923fa563d9b30a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs: \\'N Missouri Av\\' and \\'Memorial Blvd\\'. Each has an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17515701717800564, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2557, total_token_count=2629) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:518f000324af718b84923fa563d9b30a:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:25.972607+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518f000324af718b84923fa563d9b30a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3eb37a26d969249205ebcf1ab280b7c0b32973f771e4476b6b58ed0af23fb44e3e22d9c72c8bf76c88c42895ab782b65b47acb6bdbe83b88fef61726716a5cbfa9a74b56dbf05ed393057d0319ed6c5dc48ec8340edc0ff338fa008878da7da5fd865a4908cf293d0e9d5d12d610fa0f8edc2834fee4037e54961ef0b145c46bf7fd9ed28f5a1f3e97dea7f73a4071f1ea6e01e292339639b4ade6d3a19e2ce2919e125455ee2e5648001cdce66a948d73b308fa627fb00f83a30adb4d421c268fe5fa4e5f25857e9594560829a0518148a5fd54e5a18127d3b69e67b9e1d9c5d2d90fc34a7c6eaad30661d152fb210a2d5ce4a7ea72873dc18ccb4f7b007ceb', 'category': 'Street name', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2321.0, \"x\": 0.0}, \"hi\": {\"y\": 2412.0, \"x\": 249.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5398: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:5a091596d4386863fde88a6b404ed3cb:00110060\n",
- "Processing image 5398: timestamp=2024-02-20 21:13:26.996289+00:00, observationId=o1:5a091596d4386863fde88a6b404ed3cb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple street name signs. The most prominent sign reads \\'W Memorial Blvd\\' and has a directional arrow pointing to the right along with the number \\'200\\'. Another sign reads \\'N Missouri AV\\' with directional arrows. There is also another sign above the street name signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4069038966916642, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:5a091596d4386863fde88a6b404ed3cb:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:26.996289+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a091596d4386863fde88a6b404ed3cb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b9ee7b1c816309c21c0a8e9e5b26b64f7627141dc0acbfa055fd242c9076a8ed25a4252e665a4e89dc153cbaceb5fe175a3d5aa2c20eb6e00e0914553d46eb47687d02599f25b80a642f485836efa188e3712791dd10581cafc509d72d5fb76b2089312fb1c6821c1acdf2f46df81a2f2e03baae3d4dd8dedffad82d1e3f5b6bf153cbe1649bd6d8ebd4d80db2387f2d60166e88097d4565cc376d3e7acbcd53ca04e5bf98fb00a6d050dc74bbf359d40fe21f78381ab30a71341a3a9e5abd25f12c8ce8e346f53ce0b71002ae3265035888d1972d16121ece20924f2c991e97ddae78107ec2c62f4b90115b02f2d5087feb4db5151abc480b2ddb4e6e6ca11', 'category': 'Street name', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2268.0, \"x\": 2943.0}, \"hi\": {\"y\": 2341.0, \"x\": 3255.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5399: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:56cef3e1006f2487ad4dd0c8594c6555:00110060\n",
- "Processing image 5399: timestamp=2024-02-15 21:18:35.797129+00:00, observationId=o1:56cef3e1006f2487ad4dd0c8594c6555:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating \\'W Memorial Blvd\\'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3191196860336676, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2557, total_token_count=2639) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:56cef3e1006f2487ad4dd0c8594c6555:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-15T21:18:35.797129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A56cef3e1006f2487ad4dd0c8594c6555%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=807183737b22ee1c73388e3522a5b250571d08602ec8402e2394376d46e2a505f83f3dbf7e71868eb8d0baabfa183db39bf2abf6e3affe2815ccab4a569d6d5da560aa0f13852504add60b4eb46208823ac8406efd9ada0291c5251c1088b3ff65314efd1ec63b55684db9189e4a0ffa8a85773a4e395ae6152f6f357531703817b347a2343e17482a406c9388b7fccfda853ae968f44259bba0c07b5ac8fe5639f6d201c328bce149da0db761f9ad9b8c2e0f168f8304c5f433119edf8d12771c1af9d0edcd4a9623c28da042ac59c15a0e329ce95b10dad10bbecfc7ba93e0322aa869ef10e6714b683236e444a9df0c28855d593ab52d179435e44c291382', 'category': 'Street name', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2250.0, \"x\": 2029.0}, \"hi\": {\"y\": 2336.0, \"x\": 2429.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5400: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:a86f946504b23ccce8cf9003dc5bbf91:00110060\n",
- "Processing image 5400: timestamp=2024-02-15 21:18:34.969168+00:00, observationId=o1:a86f946504b23ccce8cf9003dc5bbf91:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows street names \\'N Missouri\\' and \\'W Memorial Blvd\\'.\",\\n \"image_quality_notes\": \"There is a significant obstruction partially obscuring the sign, but the street names are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3828965700589694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2041, total_token_count=2119) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:a86f946504b23ccce8cf9003dc5bbf91:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-15T21:18:34.969168+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa86f946504b23ccce8cf9003dc5bbf91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a81a0a7d6f6d598be8c108a57f369eaaf1451a0884a9646d13ea35725fc045d734b1ac27a218ec323231b56a7775e8fdeecfdc69d72861ae225b8225c9c826cff1c17f1622f6a75c656f8cf06f09655e74893a38c1a3d658f8c2b965244412586e30f298116c1e5aab8a761734e5f51c9a6e2d1d44157ddedecd00c018f792cc237174173fbf371d324db5ab4b4a4cb03290036c76986f0dba797feb1929e9716d06eb937946ed658e4ae0d2c40a6b7ae1eaf0825490f1245023ca9df115ccd94c2c5f0e42c875d1bb38221b5fd886dbc3ddcb701907ec11880c7546549302651765a6caa36465ba1eb4f276f6b42f3b32859b3ec422e6f53137f3e41adefed', 'category': 'Street name', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2261.0, \"x\": 631.0}, \"hi\": {\"y\": 2358.0, \"x\": 992.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5401: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:d9d81f625b02b1ec149fd115d2f0301f:00110060\n",
- "Processing image 5401: timestamp=2024-02-02 21:11:24.652071+00:00, observationId=o1:d9d81f625b02b1ec149fd115d2f0301f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.\",\\n \"image_quality_notes\": \"Image quality is good, the sign is clearly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.426362551175631, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:d9d81f625b02b1ec149fd115d2f0301f:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-02T21:11:24.652071+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad9d81f625b02b1ec149fd115d2f0301f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a529d105b1ab407b6532881d87d784465559a025aa88ed1bfa94e64ea1031f36b660d4f41747745ceb80e0bb57fdfb8240e992d0b3bc69fcdbf29cb33c7cb56062beeeda1102a4feb1f76d80c6d07732491a1c281d36f233a3fece6365d2a38b32643e80e2a2412f00fadf62ce14bd86cda92b2f8684134d16cc94892601581d144c1f3c643398a46246703719a070cfb2752220169462c224fbd7374a92b065df273570b625e90650186e72d83682c4db72ef6f465c4d0b54fb76e22db54f39ee0c149c2f21cfd41cd9ba2371f3eafc1a7075ccf45d304da6fe4e0fb841bc514eb406c579143e10b42d9543007e041fa3158b61ea47fbe2eb054bbac41654d', 'category': 'Other', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1815.0, \"x\": 715.0}, \"hi\": {\"y\": 2397.0, \"x\": 900.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5402: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060\n",
- "Processing image 5402: timestamp=2022-09-21 16:23:38.703051+00:00, observationId=o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24677621865574317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2022-09-21T16:23:38.703051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A09bae1ed4ff10574e9952fb4bdb31fa9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c5e3c886bcbbe9e1afa4f615b7a7f5c871f3249375bb630c10d28ad166cbec6e1a9d46bdef72900a7e6d0de26a8f02d520c7ce4ea71276136a961a02c772322e0118abdb11dac38917516bca069b3515ebad888bc7f6b8f2cf688ecd7c53b477f6a8816ce29a0fb4ccc9980d89bdc99f0003f9695718eb3f15d23766b680fb1e0c022b6836c631ae02bdbb391bef9cfd86ed6332ed84d135d897a439e8f60619281a3b3c0adf39994fdfda7fa8e254df1ea28fd8eadd5466f62173f0228d8f54e0eba33a0f96172a5b1a904c5e8b2abb2e8262c5c45e3f6cdefdb92aeee4c1c93da36ce25aea5e27c3db2f27828fc8b0bfe804ed7b162cce3c31ff5c0d17bad', 'category': 'Other', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2827.0, \"x\": 2676.0}, \"hi\": {\"y\": 3270.0, \"x\": 2941.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5403: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:9483ba267d384134b277d59a0670cee6:00110060\n",
- "Processing image 5403: timestamp=2024-02-02 21:11:24.172040+00:00, observationId=o1:9483ba267d384134b277d59a0670cee6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1793665689964817, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=3073, total_token_count=3146) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:9483ba267d384134b277d59a0670cee6:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-02T21:11:24.172040+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9483ba267d384134b277d59a0670cee6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=685b70ada892367b3cc8e2cfb20b8a6261142ee4ad8da5479941715eb5e8efc27d77ac426466762d17001f054b6d436c7a81c935c7b40542424b9539408a53200e266dd5bbd028640b8248dff2be7af4d45d740e1569860282a031c1240fe2c66c6fc7ad50323e0f00d7bd53d8189b9d14480dfcf179561137a72bcfc447382362e1ca79e9ee87a5ddcf5c02446a8000420fb407f161bf997c083a3d670a018ebd08dd6dc9a9173b9dac4d529fae91f73971d5757f9d006e0afe6784216456b3fe277f6fd706eb4af9f91ab73562df70184b67887a60f682f2cf830c3c352ada0e776d509566bb3650d8e8ac9382bc771bb060e7f7187cbdf576c6e3070dab9c', 'category': 'Other', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2969.0, \"x\": 2032.0}, \"hi\": {\"y\": 3329.0, \"x\": 2314.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5404: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060\n",
- "Processing image 5404: timestamp=2024-02-06 17:45:41.585160+00:00, observationId=o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14305689599778917, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-06T17:45:41.585160+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0eddf0db5d04d0cd2f9a19a9a5392dd1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4fbad96d49f256d9ec3ef38fe0563794d89ffd2d8587547ee171127374faa41626c9dfa698c837eb9a91ac317c5352b3371830289c604de40dba43b9dd5c162852a4c0c57f6ed8695219d1ad81a10e28bb8f9cc803dcf8b021a1a0fee311c5325d3a51f797e9d7a88efbc0d25ee914609eaec15bf9fe4122bb4eb1442e40efd0edcbc414678edb7102368985a4ecdef1bb109bb7096716396d665779f163399e73b5bd1f196d20f119ede7776f501ff017b1573a35be9601a146b09410aa604e37d27ba7dcba3e670725363738f6cbb1a1abfa636dec304e5eebbee3ae14bc2d539ff879eab082a318f9a8d0a3c6b3aca591735e7eb004139f8ed3c3ad57ac0f', 'category': 'Other', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2960.0, \"x\": 2159.0}, \"hi\": {\"y\": 3328.0, \"x\": 2435.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5405: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:20672b69d0607d6ecdeb07691a1537fa:00110060\n",
- "Processing image 5405: timestamp=2024-02-07 16:52:04.490836+00:00, observationId=o1:20672b69d0607d6ecdeb07691a1537fa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2743416083486457, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:20672b69d0607d6ecdeb07691a1537fa:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-07T16:52:04.490836+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20672b69d0607d6ecdeb07691a1537fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091651Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=968a70c8c5b252c6e4f88235b93d8426bb38910868788e3edb2022d2842bca1da14268bdc247f06ca23f0bc4159c0ebeeadc690e97b2e4398f2a6575f8c2c181888153c5d92004c6a2e45475d07f5e4dd19b1dbb39f51fc005322093e5c9af2821cfa711945b61959439187bbb9b68f14c91ccd27eabd29fd3acef734634ef7b8a490c79d7ad61d3c8e2f1bec6cfddb898d746093fe1b62a9a607120ff3db6353569cf8356e2e44d9e2b2442b2ad22b96004bb2c6865498abd7c30de8d1d7d12f07999517eca07017b964264eccd915185ca330186a28ae6c900d047fa6f59a13d51cbfbffdbecb12a966082534ac5fa5686dad09cc659d98e33f49ddef5a027', 'category': 'Other', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 2662.0}, \"hi\": {\"y\": 3329.0, \"x\": 2928.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5406: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:004c11dbdc069abf70543f10d20caae4:00110060\n",
- "Processing image 5406: timestamp=2022-10-07 20:48:56.818270+00:00, observationId=o1:004c11dbdc069abf70543f10d20caae4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23445744300956156, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:004c11dbdc069abf70543f10d20caae4:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:56.818270+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A004c11dbdc069abf70543f10d20caae4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c23baa00258f343c08aa77c3c2ec9d9b91bc8c18e095af63362bc4650885f0314026bd72b0fd6cc2a6fe18c1ce480f487ff51f583592ae4aa46a62b39edb19b4f816efe3d1e285de849e233d288e8999e4d0ee1f564dd6b0b4bf8fccf98c63281978e4c73b1fe6d6dcb103207a257a11fdc32b353ccce3412f02d22b46ab8b5bd66b0e09eac80889f94ed67eb3592242700847499f45ed719aba634fd152c43c03026adc3a2ebff8ca8fadf073fd144fadd1da078ea2c1d007b33eac1e0fc00a5a6dee5d353f2673de8ffa18ddcf7fe65e26baa1a7d85043b5315cf50e904e7c085e0b8c2926ce351fbc8fd6b3a5c94172b6984a1d3e8d5053f84bb053b5341', 'category': 'Pedestrian Crossing', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3012.0, \"x\": 2404.0}, \"hi\": {\"y\": 3217.0, \"x\": 2595.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5407: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:3ec8764de20bb11762434861fe06a463:00110060\n",
- "Processing image 5407: timestamp=2022-10-07 20:48:58.602272+00:00, observationId=o1:3ec8764de20bb11762434861fe06a463:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4114599330450899, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=3073, total_token_count=3166) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:3ec8764de20bb11762434861fe06a463:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:58.602272+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ec8764de20bb11762434861fe06a463%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a6be22d3f4624428c3935dcc5775b8b889f6072f19ed30a90f74e7e9babe5ff753bc8654753cf6196968a45dbba224ccfe09b82cdc867d42ee8b07173e0e257bc9ce28a9bd7efb34993fff6f1016a158b1bffa07150e1a26f30b3a4302c998736c92081c13550db57b1eb0d30a258eaa1b878d1d4d7846aa87349e5ef048361d81e3cb09eaf9fb70cf87d3d8fd3e6592df5b92a8c53285fbc1cc8fab3e875a3f8fd06e0aea996a7f7fdfdaf33c6f05edf6ba58779b2d61ca7d7d53962c513c05ed81e4c917f4a37975b38400f0c4d90091d471820570f113e317a77274698d3e45e2d1c7ff49bfc473e306b3cde63b858f853fac6e24a22b89b30ae44982711', 'category': 'Pedestrian Crossing', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1985.0, \"x\": 1013.0}, \"hi\": {\"y\": 2277.0, \"x\": 1195.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5408: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:9f477b324e128eb595bf4228b2be9f1a:00110060\n",
- "Processing image 5408: timestamp=2022-10-07 20:48:57.610208+00:00, observationId=o1:9f477b324e128eb595bf4228b2be9f1a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18180437648997588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:9f477b324e128eb595bf4228b2be9f1a:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:57.610208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f477b324e128eb595bf4228b2be9f1a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10f88d87c7f60b71f9f6c1908ef1e06dabb1731f51027c2aebf16ed67b3ebca7ed307a1de62df0d917f57a6e8328fac7d0aa2eebd4daa68346b9fe21e213940e1c7405ed188fedacf42e99ceff03b2185d462f975f68afb7ecc260672ca9a50f8f30e39b86326b1f038d309e08902aadcc95002353b2d6c6100be0928bc0ed8b589bae15dd4d8a58827906f862bd69b97ee84012df6d5e6a5584c3b8898faaab77e96443775f81ce8295bda39829506f15984d07c9eb730c5725855919446df6ac30e8bb66c0f84ca182d815a1ce6ba8ca4d17de9e773d18afe42a32a7280363ee2d44a10ac0586f489b864c5de3ab58a080abbb4d916b960f8eb5d07d67593b', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2057.0, \"x\": 60.0}, \"hi\": {\"y\": 2324.0, \"x\": 268.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5409: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:0b83430a0d98e057114e9b83256a2eb1:00110060\n",
- "Processing image 5409: timestamp=2022-10-07 20:48:57.610208+00:00, observationId=o1:0b83430a0d98e057114e9b83256a2eb1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24002270314885282, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:0b83430a0d98e057114e9b83256a2eb1:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:57.610208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b83430a0d98e057114e9b83256a2eb1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b56d84efca5e4c309a029e184fa3c95b778b8d944b7b494e72b0650c2ba7eff526cfe54ea1951c01972052b7823bec129929340b8601dc4ac056f9231612f25f0e2ff2442e77c4ae7290894e1205035cbc51a4cbb93a6adf277572c5bcab38eb992652707c0d955027636300f10fe089968022a7a42efa5b97af278459f1318d2a5231ea36757fe4c0f1c4a958013d2527cfefeb7c9262e18676ddf799cd9d36c96a1ef1acb5784e3a06bdcddb561594b89c7f797cf7b33b66ee8f0fe97d00db39d229160cc24705e45a016455043b886cc479dde5b3f420ca92a87584aef059b664621c8c773637af6780c4ab7aa8ae382fe532bcb3a04e752586fb98ca604', 'category': 'Pedestrian Crossing', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2946.0, \"x\": 3135.0}, \"hi\": {\"y\": 3204.0, \"x\": 3340.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5410: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:22920f58e7e885160917da2dde39f932:00110060\n",
- "Processing image 5410: timestamp=2022-10-07 20:49:01.118684+00:00, observationId=o1:22920f58e7e885160917da2dde39f932:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15941347592118857, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:22920f58e7e885160917da2dde39f932:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:49:01.118684+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22920f58e7e885160917da2dde39f932%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=32dcc3a8543d9a74dcc26d163b1602ccacaa874dfaf6776129545a72e5d24f8b8c59ce90ff715d7dc1cc9cb82202791c04064a7c7063e6f85aa5687e7c626dad6a0669ecb141ff974618ec2d62850d7cf3ed2e50099202e6753a343496aeee6eb64f41b60ddc8febfc6335be875494974d632de9019a3692126b28b637f29f15e095b87417e3e026ef312e6c75b971c9b4e2034288b312710b176f5ca2a6f23a4e0ed5c7511b7a74fcf66ec11c242155892e42f9025025f52026ca1e9fbd4b282afadaf597ffa0a249f203b87085f0f8f66c81ebc1dce0f17f27699513cc8079fdfd5df00ef72c5d2cd967f4808b9874ed4533710025d0ffcfb32b76552af6af', 'category': 'Pedestrian Crossing', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1970.0, \"x\": 2049.0}, \"hi\": {\"y\": 2270.0, \"x\": 2149.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5411: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060\n",
- "Processing image 5411: timestamp=2023-12-27 18:56:16.971557+00:00, observationId=o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"One Way\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.616730462937128, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-27T18:56:16.971557+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad8ae3e3bafdcdafa10edaa976bca4baf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6572e9a828a3b4c6e2836d259e945a35970db49e434541cd6462a520f09480eebbff1acd445378b80593843a47b951f1921c2f6e4290ba5a4afbfa3c6b15e7ff5578eea2ec39065be7d0ceaab74bce11bdc25e147f098e08e218b63dcaa23c7437817d4851c31e0357a3822abb0e68cfbb98ca7273e660b6d82da0b6435d05bdef8371b5e042064bfcd3e9568400d6ca0647f81372e5be8c51f3bb72963af0d9c1b5ea7addbeac2c12e3e8271c8ab7156a0447fa1d4894579985f44cf443d7f57fcfd46269e4338d32b96b5f9216da28972ae40c6942d41d1bcadf25e24ee8f26b6070d9eea602ec79e777c26f2ac67ef079d159ec01446b5f865a5779e556b5', 'category': 'One Way', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1615.0, \"x\": 812.0}, \"hi\": {\"y\": 1769.0, \"x\": 1107.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5412: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:309bd50928f2b226947c0588763e4b65:00110060\n",
- "Processing image 5412: timestamp=2024-02-29 14:46:17.975139+00:00, observationId=o1:309bd50928f2b226947c0588763e4b65:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a one-way sign with a left-pointing arrow and the words \\'ONE-WAY\\', mounted above what appears to be the back of a stop sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2278000631450135, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3073, total_token_count=3154) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:309bd50928f2b226947c0588763e4b65:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2024-02-29T14:46:17.975139+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A309bd50928f2b226947c0588763e4b65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92863443814304c327d930e8070c73f347d96f316f070141a0408ce400c7e90b76eef61eff59a5a54cbb306925e30b9ab79025b97523f83d33b8df6e2aeec0fb81c93f1e3098b7e4dfe3afda955a67acbcd67c1c2c225a755d34a20f0281bf1a05656d46a2ffaa6c8c3c2c4649d0e7d4681f2632106aa9ad86268fe6f891fcdd92b2583c5c609f23397b43701d2309a80f26e66827123a59cf144f91b6c68015b1fa9d3da8094d834cf92986107536e0cf90ad483a42f8e4f37cdd0859e76c17b0b09d9c2d79e1b4e48351f42b51075f4e096cfff6a32d907932dfa1b0a90a1556a4c099bf0b08ecd6d1f3e1ee8b52e53001a626912ae48ca760256d66727825', 'category': 'Other', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2545.0, \"x\": 175.0}, \"hi\": {\"y\": 2695.0, \"x\": 455.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5413: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:da0c150adca5fb1da01e266c338183c5:00110060\n",
- "Processing image 5413: timestamp=2023-12-27 18:56:17.271544+00:00, observationId=o1:da0c150adca5fb1da01e266c338183c5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"From the back, the octagonal shape confirms it\\'s a stop sign. Additionally, a \\'One-Way\\' sign is mounted above the stop sign.\",\\n \"image_quality_notes\": \"The image quality is good enough to identify the shapes of the signs and the text on the top sign.\",\\n \"secondary_sign\": \"One Way\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45096602529849644, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=3073, total_token_count=3179) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'secondary_sign': 'One Way'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'secondary_sign': 'One Way'}\n",
- "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:da0c150adca5fb1da01e266c338183c5:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-27T18:56:17.271544+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ada0c150adca5fb1da01e266c338183c5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a59e10dc71ccbc556a587fcccd6e5dac451b4a23707b1220328595f6a41e21678c757fbe7e4c536c0ad4be069b97adc7b222999e202a6620e494b2bed931f3d2ca7544b93651600ed7341ac19ead0bd6387f64a172ebdba90cd4a73f601ce598ec5f63bd3975559eda787ba73e2644ebd572924de4811a14576237a05fe4fad578bcb876ea2e1c1e0c65ea367688229adf500aeaaca3d0ad352c5c8b627eb20e5880b291f36346c41b62b2c745a779d6aa1c53e89b397c1657daf93e5c453265be9cca7f86917b1bfef88aa607d9c7358f903ef5d2ae320a5d8604ff547e22b69447d21b9fa900ab3d6e2b3acecd0e8792b76686735adfc022b5e7d95f0d0cf', 'category': 'Stop', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2541.0, \"x\": 134.0}, \"hi\": {\"y\": 2689.0, \"x\": 415.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5414: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:66f7dac30bbccbf83b74984d0a1f8417:00110060\n",
- "Processing image 5414: timestamp=2024-01-10 19:23:34.999755+00:00, observationId=o1:66f7dac30bbccbf83b74984d0a1f8417:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street sign with an arrow pointing left and the text \\'ONE WAY\\' is visible. Below the street name is the back of what seems to be a \\'STOP\\' sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38498474029173335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=3073, total_token_count=3156) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:66f7dac30bbccbf83b74984d0a1f8417:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2024-01-10T19:23:34.999755+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A66f7dac30bbccbf83b74984d0a1f8417%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5fafe02e5d381335cfcd14a26cd08548c43f0b4c877e2d7c3a14abf498f45482719469d66f2cba984f6861bf3cba7d3c1d9d314dd8607de13f782d564ed48814ad6a419eccfac859aa274c9061c81ab0bc8b051bef08e5514b4d3423b38fdbd78302a34749a184bb9244ba6cc9011c3fd4aa69912bc85543204703091d643a8265499b5210335d9edcbdeb4e602b7ba445309d234aa835ea555c0056fad8bc7e5f6c5b5b50992081de10babeb19d54390bcc75fd86d33fb217f8a702b392aed56f666f2040bc3ab603aff6f0f7c1a1fe65c7e65afc762a6f1c3ded45336e6b1e74080ad69d3442700bffd7f62293a23369efdd4c9136601e2f1a4c3ce08bd8e9', 'category': 'Street name', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1561.0, \"x\": 1449.0}, \"hi\": {\"y\": 1708.0, \"x\": 1796.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5415: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:eb9111514b0093d11220d34a4f4e6f69:00110060\n",
- "Processing image 5415: timestamp=2023-12-21 21:01:41.257848+00:00, observationId=o1:eb9111514b0093d11220d34a4f4e6f69:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'ONE-WAY\\' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The \\'ONE-WAY\\' sign indicates the direction of traffic flow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.310911219170753, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:eb9111514b0093d11220d34a4f4e6f69:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-21T21:01:41.257848+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9111514b0093d11220d34a4f4e6f69%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=222740977207fcb01c8a6e278fb770b5f226f0b66db8b44374c1de13d27ad114c560ed88e21423e86ee8d3e875467a3e7490e50f44d3b211a7c831213f6e7c6a1647ab5704a0a76730e8ed9c728dbf5d055f967a7150126534620a776f93aa6e643c804b2fefc97abe70503c6c148d900a4eed93ca86a1fcec0ce4f3ad3069053de911833c86fd63cc976562ad561cde01af68415ddb4d32e984a37505603e1080c9a4d23886f6a0842f696ca0c84959620be3cf9597da12379842c1679495deae5afc4f434a3e5c0ef97cf3dc5b2929b936ae3854cf1a50cc9c6b6b4d1e1e2a296a433694d2d09bf0261d74382cab8a2041e48a5b6cbdc22e40919e13929ee0', 'category': 'Other', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1623.0, \"x\": 2508.0}, \"hi\": {\"y\": 1755.0, \"x\": 2827.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5416: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:150743f466623330da76a748c2def945:00110060\n",
- "Processing image 5416: timestamp=2019-01-28 19:35:35.111535+00:00, observationId=o1:150743f466623330da76a748c2def945:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that reads \\'EXIT\\'. There is a black arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1858656406402588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:150743f466623330da76a748c2def945:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2019-01-28T19:35:35.111535+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A150743f466623330da76a748c2def945%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=41f5a74d716349850535855eddb417762a3f14518ecf44f0588c4a10e7466b5bdc8004673817e5e5847962c4454b9763fdeddb2f8f89267893c95f672e425feb29914314cba474229a1bac1a19d0878f3d9df1d89ca8a23e4b2b84fb6b37ecc5da74a3eb054e7d0764a373ab698495b4c6f772b8a190a719d355c322e98f3b8329e1ca8ab454506f73b65083322f576037bd51edbea943b6ed81cf5fe3dcc6551a68ca32ac8562d1d82c98026a75b8f96cd694197dccef3f112726ccc886cc9d4eeca8e6b308a066e9ed8f38311e1c15762ac1161450400d03065d2a456b5a10f46b9b6f58902d91df1dc4d38ac6cb4408b500e44878c2fc8e17274357d8a028', 'category': 'Other', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2200.0, \"x\": 2729.0}, \"hi\": {\"y\": 2303.0, \"x\": 2865.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5417: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:3a28581adb09a74eefc239335b06f1cc:00110060\n",
- "Processing image 5417: timestamp=2024-01-11 16:57:50.198184+00:00, observationId=o1:3a28581adb09a74eefc239335b06f1cc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that says \\'EXIT\\' and has an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16619528256929839, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:3a28581adb09a74eefc239335b06f1cc:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:57:50.198184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a28581adb09a74eefc239335b06f1cc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bbdf3fa321aa010bffafd8902869ecb1b6ac953bf925e8f289e09543030ab06ae9ca28c8517a1fed62c0b4259749399dc4f47a3eb0dfa43df6a3f0c203a5a1758c9e5765fba634d7388de4156e423bfe9bc1aacc981f751d19573ff043162d3be47788f67eb26be8857b717abc5812d3eb11d198040800243efc73cc8b656992397e7857cdf379be3231d76b19378b566aac9419cb3f6b4a5e226b7e2c04f63eb129cba074e26ed66c671fbe79b5fe3b0e5073e2daa3e00597f0bc157c96902e1e43851265d1f809be43a971bea32d9300e982372b5c713118e3a8a9aafc8f91c0642c97e9f71d740cf27a5bee8630a071388e753274fc2363774f78a7decb2e', 'category': 'Other', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3106.0, \"x\": 2681.0}, \"hi\": {\"y\": 3238.0, \"x\": 2900.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5418: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060\n",
- "Processing image 5418: timestamp=2024-01-11 16:58:04.322092+00:00, observationId=o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates an \\'EXIT\\' with an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19840725397659562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:58:04.322092+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe2c6c599f47571c4baa0d205db4f4b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0df9336c94d0eb18c84391cc79c7535000a9e63c92d6527051ce7d4f82a6cda839fd5438cbe6cba77dd736d5bbb9599be2fbc4c86c19bc2e8960c9d9cf7fc5b3cf0aaa82f27e2c37e64fc98ed269b7adac2be0d82ca5f08937054bf8229a36261f128d840844c9f919149b176cd44a896e80f81d523f36706942e045d6c83146ef86740fe5374503097f2f3917eeaab1395da7ecbe6258726eaddd866c477000a35d52965bafa955bec72a4226f1fab88fee1d85b1f4426eb0790ecc8931c46ab21a296dd93eb30aaafb4a54e941708d45bba4c6a35975de42f1debbcbeafa44531e98a689a07ff2d1f6a6ae385daf34405ee912eb41ed48568a53a66e444864', 'category': 'Other', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3111.0, \"x\": 2915.0}, \"hi\": {\"y\": 3204.0, \"x\": 3033.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5419: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060\n",
- "Processing image 5419: timestamp=2019-01-28 19:35:33.887548+00:00, observationId=o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that says EXIT, with an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1893918022276863, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2019-01-28T19:35:33.887548+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9021987f23a5a6d0b8a3bcfb2fc40197%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b5420023081033a6eae0a52cc19664d9442eb996f0f39c0c11d691f0246e72ebdc8ca28f5b58215daa52a0662de4dc13ad99b0e9f8912dbeb4e5c8fac094a6f5eeecbc03a60840b35224918496852424c634c4ada0288ba93fbc5fd2134233a83de85381bbb2123b16f47ffd170d6268b0f2e349fd6ed6088ff029d28f9683517c0f107cbe4e4ac84fc528944a40dcfa1f3d5d2a7d1c3a200bc9e11b156e16dd6e4aefb6e1ddd825efd50849695cfe6a890cb1c9a2e73aa6cc7bb1cc4fe016e4da6d2e0440e41068e1b60c18a19a1d289c3e56d6b7078e848bee44f89cfc517fee67495003264b3d4ca82123cf9f59ddf0b4fdb1dd08eeb572d7ffa5db37306', 'category': 'Other', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2173.0, \"x\": 532.0}, \"hi\": {\"y\": 2259.0, \"x\": 690.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5420: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:11e7d54b39941579e64a1834cfdfcdcf:00110060\n",
- "Processing image 5420: timestamp=2024-01-11 16:57:58.598110+00:00, observationId=o1:11e7d54b39941579e64a1834cfdfcdcf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign says \\\\\"EXIT\\\\\" with an arrow pointing to the left, indicating the direction of the exit.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18557024002075195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:11e7d54b39941579e64a1834cfdfcdcf:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:57:58.598110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A11e7d54b39941579e64a1834cfdfcdcf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=590eb2addf88462fb0f6658497a75f7d6d07964dbb71100291e3468673a935af1d053b863f28ae05c097e5c9568bd0214ead41346d5d7b53b127f056bfe811c94db0e454a6ee6c5671f34cb82c0c4e455d44db60fc07a1ca31668638e1d33a85e304fc1c5c2dc05417933a70a7b0933a235e9bb87de061a12e2a25a150fd3381f9804a91a77ba21c4983b7d501e2d13f789890268d96db93a90c7a8915b6b898587f3b7261b40ee13a5368e5d1ec859b3a757701dcc4967ae8ea1fd6d150589ac31119f3d16f09a0d7e36b29085c519f55f4d5c8a147802b4b8f73082dcbe037da48f3254b56f3eefe3e6425077ec71999f723e1acc06c665744890b995235ce', 'category': 'Other', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3137.0, \"x\": 2468.0}, \"hi\": {\"y\": 3232.0, \"x\": 2609.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5421: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:87dbad9f8d6e8416f25aea01898a5e38:00110060\n",
- "Processing image 5421: timestamp=2022-08-30 17:04:40.301973+00:00, observationId=o1:87dbad9f8d6e8416f25aea01898a5e38:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a \\'No Vehicles On Trail\\' sign. It has an X shape with \\'NO VEHICLES\\' on each arm, and a separate sign underneath that says \\'ON TRAIL\\'.\",\\n \"image_quality_notes\": \"Image quality is a little blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3475870980156793, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.'}\n",
- "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:87dbad9f8d6e8416f25aea01898a5e38:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:04:40.301973+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87dbad9f8d6e8416f25aea01898a5e38%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3529fd14c05c7fc766a8a90a3c892e7a5afaabc2e60c3d3ef321d5edc84c8ec47ea9643e4456822e68b2769972c7bf2174fe7acb95f00b959db1ed2eb181da5de6fb361264f71e526c782fe19dace16fc8004855922cd1068da9ae9297ebe120600c7e6a160e68eab4a77f8a7b24c7f508257d8eaadb37f95a8f21413f901126988fab1a89262ba3ea0a2c081f10b3e14a9d7f4bcb6f19dfbb2d97d60c793c54332ae9b18664b8794596daa35897933f9a3d4aa3d1a2b712fb706e00fa7d998a6b99edea0cb67b208b604add4ab6dc302f114ddd8e8f8b06f6a367a4b7ff3275aba879de18b8f5f48473fc0e6fe331239c60227f45367af72d45108a7a42a631', 'category': 'Other', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2236.0, \"x\": 729.0}, \"hi\": {\"y\": 2297.0, \"x\": 802.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5422: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:0f477622f9b439ba23e67fdd6805defc:00110060\n",
- "Processing image 5422: timestamp=2022-08-30 17:32:37.692260+00:00, observationId=o1:0f477622f9b439ba23e67fdd6805defc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a railroad crossing sign, indicated by the \\'X\\' shape. Below it is a sign that indicates \\'IN TRAIL\\' \",\\n \"image_quality_notes\": \"The image is somewhat blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40460016757627076, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=1525, total_token_count=1604) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.'}\n",
- "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:0f477622f9b439ba23e67fdd6805defc:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:32:37.692260+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0f477622f9b439ba23e67fdd6805defc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=035fdd48ca5ae425e6a4412fb9c3aa916fe7909b79c44c2969418939f2e83357e4f01be0a7f9ec13053dcfcdc2d40b3e4afeaa476f7be4047fb5de2fafe8427f4f5bd29e78ca1e6e50df86df6dfb28581c0a28306a235e17e253e3cc485795c989f197a45c1e1dd18db30403c77ae709345e2b536a157b838a735d6e928c1a43a075455e48b16f7ba83a67e4620ca781ee3c27dd6b78d06be2e00a6aef1ad364435c6ced9c070a8af5aa3749f18640fe2e10debe9e50ab90f603260e4d008910a93375ed8192f58776857825395afd477a5b0e083ec94e4b2d5f0a69b1366aa77f48d79e1100df54845bbd1386246c7eeec8dd2dad74a8722fb864a22dc7f517', 'category': 'Other', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2300.0, \"x\": 1080.0}, \"hi\": {\"y\": 2359.0, \"x\": 1142.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5423: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:86cba27e96d201dc0e142920b707eed4:00110060\n",
- "Processing image 5423: timestamp=2022-08-30 17:32:29.008832+00:00, observationId=o1:86cba27e96d201dc0e142920b707eed4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words \\'RAILROAD CROSSING\\' and below it has another sign with \\'180 FEET\\'.\",\\n \"image_quality_notes\": \"The image quality is a bit grainy, but the essential elements of the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3847057492125268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=2041, total_token_count=2143) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:86cba27e96d201dc0e142920b707eed4:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:32:29.008832+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A86cba27e96d201dc0e142920b707eed4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0474f4effbeb44c35ff69667c77bb55d66e39a8ce2616e53a4b24fd26dcda91b55a2a1c9f4e31c26fce9012e23b5d6f4bfc9eee23a63a4a91a807eb688d0d890c7fbd9ad250048cd0a12bff289d027f74546b68af90a60549ea57af843bdd69d1c569d81d52724f5b782070b7a94aaedf30bf7b34a497fb10a8bb2b318b03f62912bd1727fce42e7e910349de554ac7f76946fefed16eaa3d7c822b76e0f2b9064f4de8941a9f055485993ad39c625d6724397504a22c3415e4c458e32e1108d5cc1150b6c2b2acd0c9eabfb7083ba14c5fa4d7c0fcdfa458f2874cbbef507147bcb8bb6d8135c637377c9266068effa8266897cbb8078657d6aecdf8f554438', 'category': 'Other', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3231.0, \"x\": 1854.0}, \"hi\": {\"y\": 3322.0, \"x\": 1936.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5424: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:657f3d3e66b0517403d4f896c1f7add4:00110060\n",
- "Processing image 5424: timestamp=2024-04-17 20:39:21.497025+00:00, observationId=o1:657f3d3e66b0517403d4f896c1f7add4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a railroad crossing sign with the words \\\\\"CAUTION\\\\\" on the crossing arms and \\\\\"80 FEET\\\\\" below it. This sign indicates the distance to a railroad crossing.\",\\n \"image_quality_notes\": \"The image quality is a bit blurry, but the sign is recognizable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35743758989417035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3073, total_token_count=3165) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:657f3d3e66b0517403d4f896c1f7add4:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2024-04-17T20:39:21.497025+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A657f3d3e66b0517403d4f896c1f7add4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f2fc89daad63e3171a10421106a527fdd89d38642aefab2033b59ecc555b59dadbd4f044f01bf2b451b89c730a7ef036ea26d34fcf329e838d876842c16e0a073fc3c3fa28e4437d27fba41dfc70ad2e6e6fd6a5636fc4be25f34c0020c2f20b18008f31902b2d8cfcd7622439ea5b849c32095bb89259d0de0ad66b32e8421532d5a760da47c4b57aceeaa3985d63e38fad1a9c63b11346dc8a57dbe841aeb4b51c63467a8105d4dd1ff00600432314e3a67a776637b364fac9941aa9e63451113a2e3ebd6a0f0dc19b2cbac11c171ea2b3a283e52ee7c6b0343c6b377fb3737889642e270f0125fe1dc58919bdbf0f41f8218a91b939967f0cdbe9fc26849', 'category': 'Other', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3284.0, \"x\": 2497.0}, \"hi\": {\"y\": 3393.0, \"x\": 2594.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5425: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:ff7cc22e16186a668029f84086226351:00110060\n",
- "Processing image 5425: timestamp=2022-08-30 17:04:39.493974+00:00, observationId=o1:ff7cc22e16186a668029f84086226351:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to say \\'NO VEHICLES ON TRAIL\\' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\",\\n \"image_quality_notes\": \"The image quality is not high, but the words on the sign are decipherable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3438459460654955, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:ff7cc22e16186a668029f84086226351:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:04:39.493974+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aff7cc22e16186a668029f84086226351%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d83b9f521a3fb35f67aee905b4a1ccd74f53e393f590f73abe6bfa9781078a2c965d2d50c11233f96a952814a840c9e52a8bc0adcb561dd5728453c0d07efd9629b35ffbdf13fe2c3f636347de1b0227c5b0019be9fa3f4d3663bcbb6232b204ff1c84ff2bef91de340749b8c48652b78c461cb26acae7eafd638df5674f9354c501492679dd145b364cfdec9edb2e60a32891394d0ddadf9d4f7a02d5699412262e9e7186b9d3207bb7216dcd9bb09054a4751bacd58ac3edf20c22ed7a988d5e788d77e08d1875acd668c65a00aeab4dd8e65223a1673c5e10a223d57cc1d03cf2831dfefc28afbbcee5004dbf4eb76b5e6ba588761dcfc584c44e53ecd47', 'category': 'Other', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3156.0, \"x\": 3454.0}, \"hi\": {\"y\": 3219.0, \"x\": 3518.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5426: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:7a0f4d0a187bd3c8e9ab2fefcea80408:00110060\n",
- "Processing image 5426: timestamp=2011-05-12 18:36:29.025045+00:00, observationId=o1:7a0f4d0a187bd3c8e9ab2fefcea80408:00110060\n",
- " Error processing image 5426: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7a0f4d0a187bd3c8e9ab2fefcea80408%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=45dc5e04e6a1a66ee07b97292133f9196699a1687653c045294085a51d05d583215ea223140ae6c8d48c9dc15ff74513a2d995f5c30e0cb734db267a864a19d321ae3740053bbf50e04031acc8d6c7dc386ae29293b93f314c130b4d8aa809417d1963b4f3ae0d13c18a694d5a8a0b3484d778689d061c84ef481f0558e158e756f8bf90edaa467c6fdc10700786e5536e66a5f57e1c9e8e9704dd6eefa18509ccfbf6f19282a53b79a1e757101e5885b790640ef2ea9a289b1f291a44659d212cd9d5ca30bd30de6f4492c25f9d22e56ba1558bd926a4122c7f4c0e2351c26467f1a6aa48b00a911f6eb70ddb2ac1842dd61881dcc4faee5519c8502d5ff561\n",
- "Processing image 5427: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:e61c5054c23010d410bf645adde8f81b:00110060\n",
- "Processing image 5427: timestamp=2011-05-12 18:35:09.282518+00:00, observationId=o1:e61c5054c23010d410bf645adde8f81b:00110060\n",
- " Error processing image 5427: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae61c5054c23010d410bf645adde8f81b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=358a399bb042260c26d4253fd68ddd25779a5240fd7a0fe2adcce14298f25978d257ab2d593c334a4e504a75ca2b3db3d7025a9bf5a7c4684eb90b16b7cb529321295652c139c2fa030841d30a3cbe5cd5be196008eba4a63d6eadac5c3569ed80da3a0c8947a7fc374f0845b8a1e1878523253b63d4c5a483c85137c338636e3d0d51b2065ebe91f216582ec2ba93f392db9e41b5fbbaba3eb62bff4e5d683180213f99b7115d08cbb732be5f0b8d901072a86e2f2bda9131a910125be5efe8d5cad973cd42c9608f9468b33cad08e82609819924e3e6efa6b1f13ca1e51f25382fee568055f8374dfaac2a940f60413e471f95e391f5e941d039470daded51\n",
- "Processing image 5428: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:55c7905730aab14222ed7b52eafc5047:00110060\n",
- "Processing image 5428: timestamp=2011-05-12 18:35:10.769898+00:00, observationId=o1:55c7905730aab14222ed7b52eafc5047:00110060\n",
- " Error processing image 5428: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A55c7905730aab14222ed7b52eafc5047%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a082461399106d1809ba3b439c4ed5bb7f65c9f938b165c56a6cabccece4b89c59b7b05f0086b68da645083a562e64c5cc1f9a4def31e10f2053b89bacc55023e37e5055d4df2423d6efb70a724fb3d1706972226aa2be952b1e7eba3a51fa20e0a0e46672ef22f6d6aae1395bb9cdaf0422d6402a609f7cf9e90483a4d96c12eeb4c7f03525172e6a153304fc22ab31d77fd3068f5dab8d0d9f03090f7a260d6e9a8e1bfcf894b5a43eba071eff383731eec4d3c761cc11965e3d17137de79d0e183f1a30cb00888f24a4d5f0565753569f5b6372944f3c3e98eec03febfda1ba97a138533f081b11346c848680a8c6d0efce394578c9a6e5b9ac300cde633\n",
- "Processing image 5429: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060\n",
- "Processing image 5429: timestamp=2024-02-02 18:37:13.391654+00:00, observationId=o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates street names as Orangewood Cir and Orangewood Dr\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1390256100013608, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f', 'observationId': 'o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060', 'geographic_point': 'POINT(-81.9337513354101 27.9848358519561)', 'mapsURL': 'https://maps.google.com/?q=27.984836,-81.933751', 'captureTimestamp': '2024-02-02T18:37:13.391654+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7ddf9e10e0319ca52cbb219a40318b3a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bb5178e61c252d5d381fe5e7dc5596fba7dba9c48754d0f787649ebe47206659bf06c46120b97d3262969d1965ec3fda2942913f614ac01a45154f7cc530adefb1e64bb5890fbe33af45502d431629d6e97671f1fa3cafe7551875191c84f4cc5185c89a0b53c8dc8c7ffc24c74412e8971005835e646ebae08378e23a803fe8d55e8d3504000669ece26b6a65396010bb70902b79964d419dd63bf33148019042ac80a9158227041009fca5e11b88da5db3851721a6c1f2008f9b1367d3ae1137e8a189b6455306f4a95c2f0c46c744392f46dea282ab9481ba733c31da3c8c25bfb32e35be4047f0ab60dfb8a56782b5e60517717c291b10d66e88832808e', 'category': 'Street name', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3050.0, \"x\": 1764.0}, \"hi\": {\"y\": 3100.0, \"x\": 1937.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5430: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:b3214cff42c65befab9f39fae28491d8:00110060\n",
- "Processing image 5430: timestamp=2011-05-12 18:35:36.906553+00:00, observationId=o1:b3214cff42c65befab9f39fae28491d8:00110060\n",
- " Error processing image 5430: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab3214cff42c65befab9f39fae28491d8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b36d98ee20ffea0b69939a2957cc8aa8a6011b6722863cbe951034f786546eff8f271c3b568da112314fcbabaaeb0034d8dff284fa20f7456d4261ac35273e938891423d457f51c10095ee0f8c330d670a1714e8ebfa2e2dd739932694382fc263985291efcc90a5b147ed74fb603af67490e8823008e2194d41ab915af7532c6e523ffeedbbbb4c6b9ea2edad69871bf5ce644eb8fc9e0a10ed7f18dc5929d40f8513e6cfdc4305b7945ba466e26ac17eed6a9e90855a8d71589ba09b06f9e970e7697eb40fa2d0ae81240c5d9be6c32099f7421f8e2b75435f859b796fe59ee34fdded70739e5307a4f92b8221f11f8ccc37baca7f39a48e76e5e65d524863\n",
- "Processing image 5431: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060\n",
- "Processing image 5431: timestamp=2024-01-24 15:14:26.610221+00:00, observationId=o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The most prominent sign is a diamond-shaped orange sign that reads \\\\\"ROAD WORK AHEAD\\\\\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.\",\\n \"image_quality_notes\": \"The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4965702434917828, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=493, total_token_count=604) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.'}\n",
- "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2024-01-24T15:14:26.610221+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abb15d9e2e61c9c14d6c5e5d69d8f10e9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=358eca943513d00b00f059d6059703253b1f608c3b66a40b1e452e402669ce5758fba379f56a173813b4b7edb611728e294f6605383050ffb90378631f96dd681c6cddccf3fa10ed3199d4df522c58d7da0de98243e62f86e08ce010e043c6d42cf9b2a6827353ccc9e075ae4d8e9b660d1d61895ac1c10d2613c2e205e85e547cfe727399ecc2ded68dd1a373af64f970318a72902db43c21d9cb4c909c9f6b7c323fa14796fda66382988d5d1260ea5edf9550cf212571605f9da2733b0a1a5406cb78b4f08ac4d8c41ed1333277abd77f4bfef36a8c45ae4749cb5e99bb6dc4c45b325e01132e4c62707c9273f82c1689e4607fda9f300028f9694f13a7f1', 'category': 'Other', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 3497.0}, \"hi\": {\"y\": 3264.0, \"x\": 3524.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5432: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060\n",
- "Processing image 5432: timestamp=2023-12-15 16:38:54.186885+00:00, observationId=o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is round and yellow with a black \\'X\\' and the letters \\'RR\\'. This indicates a Railroad Crossing ahead.\",\\n \"image_quality_notes\": \"The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31234254729881716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.'}\n",
- "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.186885+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac7eb9e73d50b1c990dfd3b78a8609bb7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091453Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=243b77ae21d8e561ea3468a816374002ca963aa87f8bcdef6681d07aa57d82665ff37a885e91bf5422cfc7d04edda70ac5b7551f43c3ef1fbedc1fde046683dac6839ddd0aa462d027a7106561c1257148bd94ffac68d77eda5c1083cf1c9cb4da804324be37440602c92718bcbe63ba14ec982eb800b6feaccbc4b2e248fd107db5ba2d1c9f1d269ea258cbca08b1415646124d1c7550f137533c44a98050921c10d1c1c916b03a8e3a62df6a2e85aaf7d1c37757e9fab4e9ceab13e969c66e49bf63175a0f3473a2a432f2c0241d71acc82ca6e83d7b1b834bc4561e87667e2ced1e6e98e3efd30040d58bd11134156eb4f9ce0d847a1a6dfcbb1c6754fc35', 'category': 'Other', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3219.0, \"x\": 613.0}, \"hi\": {\"y\": 3275.0, \"x\": 650.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5433: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:336d695305800b0b6c350885a37d29e4:00110060\n",
- "Processing image 5433: timestamp=2023-12-15 16:38:54.938893+00:00, observationId=o1:336d695305800b0b6c350885a37d29e4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.\",\\n \"image_quality_notes\": \"The image quality is acceptable. The road sign is discernible, but the details are not very clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6692086185317442, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=493, total_token_count=576) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:336d695305800b0b6c350885a37d29e4:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.938893+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A336d695305800b0b6c350885a37d29e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b47397c69cd39be450281e5e2eb35043b1c9a36042561d178b89f85f766f799b4fb19d2aa5c5acd29ad0788a44482ba92f60e64368c5d8c60e58d8b0b773dc5fef899c0cc4fd4519013e08a5388d1fe5e53a7262e6445771672208f2a9a6d493f58eed1f53e28821500fcb0e91c8538e23d0fca2a01ade1c38f97ad914d919972c6895cfde9a5b44576a6ea2890b09b4bf32cdaedacdec4ecce44477735f111aa329b7dab1a14a0c76825e22594f9b7bc7aaf514fc54f45b368573961263b620d79d53d18278f919202e10faa8aadff64530ce5a0406cde4dc096ac483a31aa4c5b4c8c757773e7169092acd2ea42736aee67262c1ded2cedf15b0c19f50824', 'category': 'Other', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3200.0, \"x\": 312.0}, \"hi\": {\"y\": 3243.0, \"x\": 339.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5434: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:f5f988cba5bc6703537a90704524bee9:00110060\n",
- "Processing image 5434: timestamp=2024-01-24 15:16:19.418864+00:00, observationId=o1:f5f988cba5bc6703537a90704524bee9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a diamond shape with the words \\\\\"ROAD WORK AHEAD\\\\\".\",\\n \"image_quality_notes\": \"image quality is low but sign is recognizable\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3009901758450181, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable'}\n",
- "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:f5f988cba5bc6703537a90704524bee9:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2024-01-24T15:16:19.418864+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af5f988cba5bc6703537a90704524bee9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092220Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98ebcf7e07574a1f68957370e6e8bb966a78602ef36832aac90a848fb7d4c2ea8f21a6c8a8982f99117fe40bca832ae9d03c5fa567dcfa40b426e8241be95ad6400c0c0afd1930d13ddb3731b407d68a949bcf0009a9c9e5cb246278db86733511a865bd331179d382c927fcc55aaf6895e593d8185144359b6d6aeb20fa45e8cb141c09b54778ac8cb1b4dd5098ce8800da3556e14a77f37687b249f835d5f8394b2dd302d076a8ddb539f522550f161e648342de885cb48a78c98678431a819e416bc8143e32285d09e5e4f60b65dfdc0cd820a11c35b094e979498671e5cf673df1cf3451e4b61fa99e005503edf8173996e5aa6d7a40998864176e803558', 'category': 'Other', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3195.0, \"x\": 363.0}, \"hi\": {\"y\": 3235.0, \"x\": 397.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5435: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060\n",
- "Processing image 5435: timestamp=2023-12-15 16:38:54.562904+00:00, observationId=o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black \\'X\\' and \\'RR\\' inside it.\",\\n \"image_quality_notes\": \"The image is of fair quality, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24460669926234654, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.562904+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ed8eac0a0cf95e600abe3367b3c5041%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6246535f345e810af4a1707988c687def790ab5953f6a06191ba453134f7bbb6ab5e0c0adb70018a467513b9fad9247a56a4e232d8f379875e29003adfb913a0acfb983def4faa79fded4ffe4ee42fd9269a329af8eff3cfe7a888bfd66c31530b92d078db2a09db3e0295032bae12fa13a41f4a167990950e43754854a54c6881b7cb02acad5698e3de143a1d6cccf3a72fcbf9ad75b7cb93519645b959f9496054cdbe597f7b2f2540ae7a5d39e8b4558bb9c92459ffae6c1e896a489b94376df674c77c5832b92dd53c1c1c3bf65c4df5bd0fb292f492630e8d7e627db96be2b9f227f818e7279cf5f5150e153022bd3ed49ce886dc94e68b196628f13ea5', 'category': 'Other', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 466.0}, \"hi\": {\"y\": 3263.0, \"x\": 496.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5436: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:65007016be2925082bf3ef6987e328b8:00110060\n",
- "Processing image 5436: timestamp=2024-02-02 20:14:37.642705+00:00, observationId=o1:65007016be2925082bf3ef6987e328b8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white construction barrel.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12362411388984093, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=52, prompt_token_count=493, total_token_count=545) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:65007016be2925082bf3ef6987e328b8:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-02T20:14:37.642705+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A65007016be2925082bf3ef6987e328b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b4ab8ca0f40f259711688030e126a47b9593cc84c423f67040100f5fc226a757de7b6e0b556bedfd370ddb8b41a177a9b54020bfeb96d30cc9e35867c2c5317b77ee25c0df7fa173c387d4143d68cc31efabd46d1d3803bf46a92bd22f708f5d785a950dacd05787ef70f5e68f70cda6eaec6c7a222c6378cb2f543029ede9bb9bcd9f393e00d5bac3f38c201ca48825bb079e772b3eac960efe13748fbf38eb2b289c178f68a9124387ad945db8edea889d1d40679e52ddfeff1c0715794716cef7265d6bc74083117f19549501670af2cd48583c9d7f9482714c97cc064b5fdb9a501984aae4e36083d37fec07cf776a1ee9d7234949e8e2f5abd58057c66', 'category': 'Other', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3472.0, \"x\": 2930.0}, \"hi\": {\"y\": 3648.0, \"x\": 3029.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5437: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:6f57f37d2fb271de9248e2d09bad01fd:00110060\n",
- "Processing image 5437: timestamp=2024-02-12 14:09:41.349780+00:00, observationId=o1:6f57f37d2fb271de9248e2d09bad01fd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows traffic cones, which are used to direct traffic or mark off construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1308518648147583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:6f57f37d2fb271de9248e2d09bad01fd:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-12T14:09:41.349780+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f57f37d2fb271de9248e2d09bad01fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a48a38dbb97b8498279ff2b96ffdd3fc5b908a7c4149f03f30762af6ed9b49c36b37eb6dd1b593ee7506a4fb2c8f262f5c41b4da0ccad67dbfeb16d59088b53c1508dc379613208269666eb62c1498b94b4a46a86b2f16a5ccd4829df34edf3562bec0ca868ab0b0ee6a6082323ccfa836d2827976b31478716179b056bb295e56a7a06380cdb6ffa9ca662ea6b744a872ec08da1e14cd02a3b307b87b6750acf99beacc89bc182f07364ccf593e99e4eb1d16f6ce573d3d4f600286ef9a9167f2652028a7187187956a7b14fe0939e4040d936fa2ffc7260dc5356edd208bf9ab64355fa03346784d24a2166fb601a44d204fb742544cd2c13953ca90804745', 'category': 'Other', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3353.0, \"x\": 37.0}, \"hi\": {\"y\": 3461.0, \"x\": 100.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5438: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:8b4c2dae357255735fe7113192342bd2:00110060\n",
- "Processing image 5438: timestamp=2024-02-02 20:14:37.342720+00:00, observationId=o1:8b4c2dae357255735fe7113192342bd2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19253662470224742, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:8b4c2dae357255735fe7113192342bd2:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-02T20:14:37.342720+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8b4c2dae357255735fe7113192342bd2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab81ceaca93cc1110a69b991cdb776112586ab7f99631b7b916b0b927db3e8dabdaf311113a967a6e1e9c29670295d5fc15b19ef42e9cdcb78e783fca6cb2aaed4d258d95f36d9499f5ec11e2cf2fe879640300478dba525421c43750a9177d1ec9efa41bf927145bd9dab61b69d4de06d190bdc00bbb2252b5bbb7c5721afb2d9b352373a60f919e628ed2530096f13804502a0a4b1e29b0ea6e25c8b936d91ce36b0bdd2c643163df33e3a8d22e4eea3e29fda68da940dd7fd5a9f9be1e3130f0bdefbc0a69daf69e1c68c66b5314ed7684928488ec539fd4065c92f1108d55f3823d700a60d6095170ea8863cab24a5f1e5805124139afb02e30a7ea381cf', 'category': 'Other', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3619.0, \"x\": 2702.0}, \"hi\": {\"y\": 3875.0, \"x\": 2850.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5439: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060\n",
- "Processing image 5439: timestamp=2024-02-08 14:31:50.753553+00:00, observationId=o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange construction barrel with white reflective stripes is present in the image.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25967318216959634, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-08T14:31:50.753553+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ba543f1828ace7b95c1518ac8bbfb85%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b519dbd0fb4fec469045448aa28f6de5364c4d6d50c648b0af6fd6f21faaf9e368c347094357fcc424320373c38c74d97f727cc5bce438e5049892e43a2503e2c75eda1bbe796f12d640db4ec473899a7101ae8e8de82fcae424e85806b20316bd0ab7878977c51a482b310afefcad70b4829b049636ae82a3fb8fd718861c1659e753eaf2e9de3c37c027a7af818585083c56dee2327503e37c5d00b1600fffb87a1f929eb6404e91ad99d34527bbd0391d76b5fd75c20d5a639f0d4583e10cfe95fbce2e9584902fa3ad910c7534840fdc61d08f5b68a4266c95aac533e0df13be51af10339d06f9e20faac28c5e9a2a5aeb99dd6d969e7c8ba93e570cabed', 'category': 'Other', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3378.0, \"x\": 3017.0}, \"hi\": {\"y\": 3484.0, \"x\": 3076.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5440: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060\n",
- "Processing image 5440: timestamp=2024-02-07 14:01:20.254935+00:00, observationId=o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image depicts orange and white traffic barrels commonly used in construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1505050818125407, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-07T14:01:20.254935+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8a4d669a53dafe09ff45f5fee5e8c60a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=351c365abfb0d21a29ce8c3f1d66e9868ba8bab5cf6e9e464b0597af5ddc473101a177b7a63ced4dc4493cd405cc243b3f98f9edaa41a6ba4f191e78ee15a2f1728234e24c21b481d26082bef904bfcea9c08f8986ed10f12eb860d34f6078e5afa1af915f04db873cc74db88cd9f46e75c17612c16ddc3217e669efdb1ccbd886e3d54d4aea3c8cdbf910a0e019a27cdf77a0a21b0f050b813dfdb384266b82a942604ed15ac4d70d990f9e0fb594bca6c270868dc39a091b284fb64a3f278007ebcc99da00297916e910e79dfbe491cdf37b48b37b725282c73b9c252a8025fcfb34fa4accf44b8428e84d5783d67389035a81b05f7f23470eaf012052084d', 'category': 'Other', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3338.0, \"x\": 34.0}, \"hi\": {\"y\": 3440.0, \"x\": 96.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5441: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:ebdc66895e7105aca79a2bbe23777d0b:00110060\n",
- "Processing image 5441: timestamp=2019-06-04 17:36:30.839113+00:00, observationId=o1:ebdc66895e7105aca79a2bbe23777d0b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign with the number 1140 and the letter E is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13334230943159622, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:ebdc66895e7105aca79a2bbe23777d0b:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:30.839113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebdc66895e7105aca79a2bbe23777d0b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091041Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a6e03414009286bc3ad9833ceab0916f5665840afd7c4a808f06d1553001eb54a75ed24741540e1c90edca49fcd587bd9bb192337b55c78664d3b45044bd8f376106bf5a36611117bd7767877b9430a4be59e45c955c4768c44b21364c9435c448631d2f62ed9e5ac03273d75a35e2f68eb73bf92e32cf32ba73d4722f83e22d385cecbdd858a3c4738aac74b497172f59650fbfdd84b6cef9b34f03e73c6c5606630b408d3292ce71e4eca8f5c53122474eb525d8e6c98eac652854d27a4d0cfb1da83f12e728e8b013c1e6b60d4c51659d12b1306c050b2229f496998fa13c66c1956492bbf5754fbeb1f7917430155af689824555d9c13443e08b7cb5769d', 'category': 'Street name', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2309.0, \"x\": 1.0}, \"hi\": {\"y\": 2538.0, \"x\": 128.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5442: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:90953891cce6c0d637651f745b9db95a:00110060\n",
- "Processing image 5442: timestamp=2022-06-30 20:38:47.007458+00:00, observationId=o1:90953891cce6c0d637651f745b9db95a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An octagonal sign is seen in the image, indicating that it is a \\'Stop\\' sign. There are also street signs indicating \\'600 S\\' and \\'Elizabeth St 440 E\\'\",\\n \"image_quality_notes\": \"The image is somewhat blurry, making the letters hard to read and assess.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7560880256421638, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2041, total_token_count=2140) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)'}\n",
- " Error classifying image 5442: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)\n",
- "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:90953891cce6c0d637651f745b9db95a:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2022-06-30T20:38:47.007458+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A90953891cce6c0d637651f745b9db95a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7848ba847ca2d23cc514fb8cc541702d9598454fab093f32f090a8a5078f67a56392b171565da2573110eafaaf88cdf0838018717369d5d4647907e08703f5cc701378aa70fca369ef0c54a13ba7600e664811582c28915b8709c5eaa96bb6874bf8ccd913ff652a2ebdf44f5024418a0339794da48b63ec219a609acbe9f4462653819d0d5ce0e612e87ec600381aa7513bc7ed5cec7500e17d841ca7464bcebb917274368f95ab9ee77cf8f60931b55c6b27d675658fe63ca74aebea2af7cd2ee75ad9c93e7dba98255cb64495caad69dbd94372807426b727129ae580c7c3dff5aa3b24859025edf7b076170a2c731a6973a240d3a3f3202b3fe6da4232c2', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2161.0, \"x\": 965.0}, \"hi\": {\"y\": 2208.0, \"x\": 1085.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5443: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:2219605d5a176bd90226719239972fe4:00110060\n",
- "Processing image 5443: timestamp=2019-06-04 17:36:29.559069+00:00, observationId=o1:2219605d5a176bd90226719239972fe4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible, indicating \\'1140 E\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12174851447343826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:2219605d5a176bd90226719239972fe4:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:29.559069+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2219605d5a176bd90226719239972fe4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87103cb733276f7b48b38fc4ec3733e1289dde5a9f5a6cda67f2205a6cc800589c509779bc54cccccfbea82ea916a5797779a2f8ab5f284b9d51c0f31fdded769b34bfff55982fdddcdfa18ac61505da9b513cd6932f5007beec73b694ce3c1c475e9b04edf30d84abb75e53cfb0e929171fb3ddf4fdda015d882a64e51f25612ff123751a66cb1373a2f8176f4c3ae125631dc497dc1749f887b14ce4dcc3cf75b9ac318739ea2c7e074f9d5fb4f652e12880af41dcd78b153ba9e9d1d120cb5d929fda5689866ff65e654d293f3a8d9c5127ef13c209b87df665e744088c438cdbd748c2bf31e04b0b86369cffcc78a84fd4d00e87b23b05ddb354eabf05c2', 'category': 'Street name', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1609.0, \"x\": 1.0}, \"hi\": {\"y\": 1781.0, \"x\": 148.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5444: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:05e1b2e94a3de7694433400102408f25:00110060\n",
- "Processing image 5444: timestamp=2019-06-04 17:36:33.282976+00:00, observationId=o1:05e1b2e94a3de7694433400102408f25:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.\",\\n \"image_quality_notes\": \"Image quality is acceptable, but the sign\\'s color is difficult to determine precisely. There are also street name signs at the top of the pole.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5219541063495711, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=2557, total_token_count=2659) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Poor', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\"}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Poor', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\"}\n",
- "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:05e1b2e94a3de7694433400102408f25:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:33.282976+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A05e1b2e94a3de7694433400102408f25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091454Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a73b381ce0cb883344f8bf511d6e532546c5f0abc5f3841fecbae390eeb3324dd328939f809223ad77eba6a00a127999072bf33a88833fbfefdc0b4263fd139f55a9635590d8fcfa7eabc3a9bc3646cfc66bf1d8665797d512c635c06f44d3c8841d88118152134225588151ceb1b152fa69abb5c0c0ab78d7a6954294934ddffcd78aa912a8d33211af779edda416f1f32059455a28dbb4eba8cb16676f74e2f4af54c8f43288a4cae8f6f8e0f973a675bf750eaac0d0eb627813b399787c13f4764d76488fbd5a56a7f0bbf53f089a25cb84c498631592e60d5cfc161039892374a058946b04099a18f4c4016e20f6bf7141cd519682aa96974b3a227cd8bd', 'category': 'Stop', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\", 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 1492.0}, \"hi\": {\"y\": 2972.0, \"x\": 1685.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5445: trackId=t1:03131e5c1dca01949ee534494fb9c8f0:ffff005f, observationId=o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060\n",
- "Processing image 5445: timestamp=2021-12-10 19:46:28.522057+00:00, observationId=o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicating \\\\\"NO ON STREET PARKING ANY TIME\\\\\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28955170348450376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=3589, total_token_count=3680) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03131e5c1dca01949ee534494fb9c8f0:ffff005f', 'observationId': 'o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060', 'geographic_point': 'POINT(-111.874010852563 40.7411901253303)', 'mapsURL': 'https://maps.google.com/?q=40.741190,-111.874011', 'captureTimestamp': '2021-12-10T19:46:28.522057+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2672ae6bc614fcedb5d2143a6ce1e421%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=07b34a0ab5a58fc805e3e7e86fc3e3c2377183ed194ca61190d124c9bc585ce9884b2d3ed76c374fbda6d43664d518684eb8dba972db41b3247bf154d1d794f42f90041a685e7ceae6f717db1e5c00d65f7cb4c3c3804273835590af7e62cad9466304b9904c16bc1a3dc7adb2086f5728d005cfdbb2c388015e33cadca4394af33ce549981034cb4d52927d64b0680f510939bca5bd40cb8bc2de0744e753ea6e832a464fbe077b3646534f0cdb568d3cd2f2c2ce5409a8eeabbd04c51db729eaaed9aaacc87588374374409c7028430cb309112181c1f16744e9392d383ae0862f71278d667a0f7ab2254ada6b0e5f5170e44dd7141983c0e5446f2cdf17a7', 'category': 'No Parking', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2588.0, \"x\": 51.0}, \"hi\": {\"y\": 2789.0, \"x\": 171.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5446: trackId=t1:03131e5c1dca01949ee534494fb9c8f0:ffff005f, observationId=o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060\n",
- "Processing image 5446: timestamp=2021-12-10 19:46:29.410092+00:00, observationId=o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green sign indicating \\\\\"NO ON STREET PARKING ANY TIME\\\\\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3440292201091334, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3589, total_token_count=3686) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03131e5c1dca01949ee534494fb9c8f0:ffff005f', 'observationId': 'o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060', 'geographic_point': 'POINT(-111.874010852563 40.7411901253303)', 'mapsURL': 'https://maps.google.com/?q=40.741190,-111.874011', 'captureTimestamp': '2021-12-10T19:46:29.410092+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae29b3a9f8e7dbe9de7f16ea8de44c93%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1c49b13873a16feabd2a634c256119d388deeb8877258e7a91f0d6beb37abd7dad29c4388fec810017ed9f7c33ccc5b552b9ab0084fdc1197e3c43a7c0e7cb7b387d55613562898f0b8d87d3b253734aec06d708a3203c1393f3542b80e8ec6c44899510f33e852d07033a7971c7d935f2a1229dd6ae37326284ad7a13aa6c11f0f254fa4a8d8309804eacdd0fc6261f4fe543e49753344e97a2c3e97601738e552ff20a03d16366a5f16cec26cb72b76f7d99ff4b59aef6d05553e4663931019bf4cacdb495e48798a19f68a09f79b4468d9c27443942ebbf9a57095fb98c272dfbf0b6f73312aef197671d74701f7ed443d8ee54561283aa410a00762164a', 'category': 'No Parking', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2567.0, \"x\": 2226.0}, \"hi\": {\"y\": 2795.0, \"x\": 2369.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5447: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060\n",
- "Processing image 5447: timestamp=2022-06-22 16:49:51.761278+00:00, observationId=o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with a red circle and slash over a black \\'P\\' indicating \\'No Parking\\'. An arrow pointing in both directions is seen below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34237517319716415, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.761278+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad2c2c45839cd5afd43c4e27256bfb4b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06ee08eda66a18a13363f942aea5e498c222048b39bcba1633a91b4af2719efbd7f92eb74076ca7a37e6b94ada1671f23c7a56cd3e3df6665066f17adec78f58fb3ded1ca78c8214f967f405b6755d39103858c9759a0d937b1438d09a9f276a2f49934dc7fa3d2d07b933a04da28c1c643e8c3a8f89eb4aa6c3e377430d36b54feb0bdb5a36dab4360743343f64c41d6e52e414b3db5d2e9715b7b80f5c12f81c991edf747a9192eea7dfe5a65532832f683cfdd4b542d151f1a92a5716465323b644c3a1c419ef8a3234692b4812a98e8c88cc2140514ddd8ec7069e9e8cfba85be4c52da84d6e96d3230593da159baa688f93ffe6f48bb38f2749a8559f33', 'category': 'No Parking', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3027.0, \"x\": 20.0}, \"hi\": {\"y\": 3253.0, \"x\": 97.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5448: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:3ac1d26fc88946b1fd840b620025fa98:00110060\n",
- "Processing image 5448: timestamp=2022-06-22 16:49:51.761278+00:00, observationId=o1:3ac1d26fc88946b1fd840b620025fa98:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red circle and a slash over the letter \\'P\\' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49321702469226925, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:3ac1d26fc88946b1fd840b620025fa98:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.761278+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ac1d26fc88946b1fd840b620025fa98%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093113Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5e8ae75f63ad8e3102e43e41cbf59a05e587cfbc6f075f367e525b881f9e3fd21d6d7371359ea3a331a146b866d69b886dd4e5192db179b028fe0d9ea7d4c463489aeb1c6a01e37e4538a0c7e8552ac2812aa7b874ba4fdabe5daa390fbc498e24048e23e7f2020968c98b951d90a4f379550dc5ebb866dc5dde8c4d8657da03d2662ff42b3a5ff6d72c48abaad115d9f4db6ba344e928c207dfeb00b8ff938763938744e3c460c103d4a38879a5aaf62397aaa61c9c047328e67a967cdda91b81cf4d71d644bd90ad89453709e247d30287b8c1140cae4ba3bb36aa6e9f7c41c802269d889d76ecde407af6c7dd528597aa671e2d0efbe4ee6a650744cb758', 'category': 'No Parking', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2131.0, \"x\": 2918.0}, \"hi\": {\"y\": 2357.0, \"x\": 3003.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5449: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060\n",
- "Processing image 5449: timestamp=2022-06-22 16:49:51.441331+00:00, observationId=o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a circle with a diagonal line through it, superimposed over the letter \\'P\\', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3929918422255405, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.441331+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4876b6fad2a79f0d26adf31b55cdbc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d4c7e19a672319d3715ff1db1e483d6842e6c392c0cef537316ad6f5c5ddd5d777a104760ba43e4c18ceba54ed88f991c2148f1f77c642a4432d53cc95f649d52ca1500fa2bc2a77b1f1249431fc9f61308141e9c30d1139490401d71029239f07248c59a5b49e7738425f2ec3c50470716105c8481acdddb5f9ff547da7a62b23c8b1853838aab4149eff2ec3d490244d2478656e93946540e08c947bfa668b6850f30b78ed5cede35d6725e587dc0208d582fa8263e211a2ab433e04c59756ac75c80daa65911f0c0f800601449dd198974a3a2d546318151c5ca0e094ac0a7b9d9b53c6754cd24c5abfe466dd0b4aeca6450258bc60bdc957496f5dd8041', 'category': 'No Parking', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3038.0, \"x\": 3523.0}, \"hi\": {\"y\": 3266.0, \"x\": 3647.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5450: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:6a653216abb8ebb9b960de2b8f7625ec:00110060\n",
- "Processing image 5450: timestamp=2022-06-22 16:49:51.441331+00:00, observationId=o1:6a653216abb8ebb9b960de2b8f7625ec:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter \\'P\\' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2962929023491157, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=3073, total_token_count=3164) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:6a653216abb8ebb9b960de2b8f7625ec:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.441331+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a653216abb8ebb9b960de2b8f7625ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ad360a00ada8b17ebf429d7eaebb9a0e7564fea41b07db3874da3c18001b0561522f9c327a0d137cd12888facbc044fe4f5c6b1483ff5e7fe5c65555f10fafaac6bfacba0d02591fcb3f68c9b8ecbe17f5727d64637935cb330e7269e2cfa13c5fef17158735c149a46135b300edcea824106c0c8e954fe1406b56cb95d78f7fda7a6c901c813ac22ba797a4b49be47c4c15a5728a69c76e45065d08455272d07b29a7fe1cd189eb72ea4f58b1d833c6b38cf6fb8f2e58b9c974f8fde74fb670809500d856142f9271f730ae9610bea0fafd485fbc14b99092cbe42e08687187a5a757f2fa1d878d8ebdf61d952600969ea726d7250566b329312ed67c00fc6c', 'category': 'No Parking', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2138.0, \"x\": 626.0}, \"hi\": {\"y\": 2366.0, \"x\": 761.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5451: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:1a7feefe5424e526112ba5a956b9cfad:00110060\n",
- "Processing image 5451: timestamp=2024-06-13 16:29:20.888517+00:00, observationId=o1:1a7feefe5424e526112ba5a956b9cfad:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2980148460291609, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:1a7feefe5424e526112ba5a956b9cfad:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:20.888517+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a7feefe5424e526112ba5a956b9cfad%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7bbdef3f8f6b178c977f4e3e5f1b4711fa6213db969ce18de3ee6263a6e2beda8753263511f468fb313e126ff413a45c70176df3cd3d5e516a81a99930781bfeb32d4fdfb30f44e11dded0e905fb153665a5d3218aff593989a2ad82d776a9f4aef764c1cb556a36d1816c6d3cff5d094cfa5687f8b75b9f83b1929a5b63dd4810203e117b123ce3107a98908312de3fb98ca37544f79d45c98262889bf5637ae35d9cdb5b76fb4d5f261f9b81f93d994dea1ff366f409759e86e3160ce208f3486d5ed3a50f33614ff23fd97fbc714d6dea675e5f46a6c1955b3b693363076e5343867b8829007b00e3bef8dcfed390e90ab58efbcb4e24170e005011f7588', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2886.0, \"x\": 1932.0}, \"hi\": {\"y\": 3150.0, \"x\": 2152.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5452: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:1b96c7add324b688697614daa93615f7:00110060\n",
- "Processing image 5452: timestamp=2024-06-13 16:29:21.192438+00:00, observationId=o1:1b96c7add324b688697614daa93615f7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29122736287671463, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:1b96c7add324b688697614daa93615f7:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:21.192438+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1b96c7add324b688697614daa93615f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1bec62a4ff859bb8c5858ddc2d247a4367048c2faa48ff039a369226448a46153bdb432ac564752eb492c9c30331272a0a137f44cf9d8d936fbb6a2405ab70bf347c35f327848b2c829714277724090a8d6fb67989cfdade26470e7c8eeb518fb9e0e687ec6015dea0e3c5b8da291b2393b437aa00f0e809e5dec29e05bfbb8539215519b96248c07c4afbe58d2e8e146d94f0b76abfbc2080fb21bc45940ab8e9d3f6b169c412cc77dc539a7ff2c453ded743ac038a63e9c173f1c229149c0650e14b1b7fab9a92bf67bfd5490e8e90412f00c5fd581016e82054ae5c657399638a73628476c32a91c67ab5ebdc012d01984a72a8e003c07e293021abad259b', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2733.0, \"x\": 2668.0}, \"hi\": {\"y\": 3088.0, \"x\": 2904.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5453: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060\n",
- "Processing image 5453: timestamp=2024-06-13 16:29:21.492525+00:00, observationId=o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36838472806490385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:21.492525+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad45c2bdbab7280ff6d3b2e18b05fe953%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=62cbbda699c5f07c9cdd1da250a6b67a5ab5a4efbc848a34438c99ba5fb1f699ffda15549909aecc7758b56a2e8efeaac716f875b26440f7f0c43fbcc192b30fd108ffb6fe9e34b7a5e0b4e266887cca4961464a042cf8c23bd6edde004f62def148a7ab2ab6c07bf441431c4d39a14eb52c38365103f4886e558881e102efdbf5f73c52a949230fed55da6a8a8437aee1b6bdf6e7d0536e76b12b1c135b2bedd44ae0be87b0a0ecaa64e9984513a1a44fd2267e23d34ae5e7fcd4c924e6d11ce88fbd6d7906b7dc4352ce13789a45050307caf1358c0406a5eaef932d71c1357da9e0130fa739bfa80ca003e4cc0f4f672ca23af8c4283ca3f245c7aa7f2f52', 'category': 'Pedestrian Crossing', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1661.0, \"x\": 1083.0}, \"hi\": {\"y\": 2113.0, \"x\": 1205.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5454: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:4991d54eb921b933823802419d0c93bc:00110060\n",
- "Processing image 5454: timestamp=2024-01-31 20:41:35.018528+00:00, observationId=o1:4991d54eb921b933823802419d0c93bc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a clear view of a red octagonal stop sign with the word \\'STOP\\' in white letters. Below it is another sign which reads \\'CROSS TRAFFIC DOES NOT STOP\\' in black text on a yellow background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18846277090219352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:4991d54eb921b933823802419d0c93bc:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-31T20:41:35.018528+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4991d54eb921b933823802419d0c93bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092317Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f5695702eb26eb9eb288f28399c5aabaa729111336d284249320363da348fdf6da1e826446d23fe456b41462e8cae579c960dadc3426e9094af652130ae0dd0529ec072f62bd844d584f86b2a9fac5a3760c51ce29e8c09e052abc952b885c67c4b498a788a60138f040901efc325478d480758a29ef442df70d0569f39ae8ff44934e50a0696054f7db85c4a642fe75b792b72e71924b844c9aa5dcdafc0283e1ee727295227c04c6e0688b88f92f71dfdc2f8f3ff6d6d026a4d754aaaa4af6fcff0837b20608fd6152c3341cb5b28aee3d15dc70bdd1f534959e5931ab452bb7840a7f359927d181989d5414e5997226c634a488fbf6f886ecfe1a20b0cee', 'category': 'Stop', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3410.0, \"x\": 1036.0}, \"hi\": {\"y\": 3509.0, \"x\": 1217.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5455: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:7d17803b115fdef3d71814013dcbbff0:00110060\n",
- "Processing image 5455: timestamp=2024-01-30 20:04:40.102151+00:00, observationId=o1:7d17803b115fdef3d71814013dcbbff0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads \\'CROSS TRAFFIC DOES NOT STOP\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20191690656873915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2041, total_token_count=2113) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:7d17803b115fdef3d71814013dcbbff0:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:40.102151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d17803b115fdef3d71814013dcbbff0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31a2afd7375bd9c9d8c49358bff05f90b65d115fc2cf7b0ea2a8e455706f0021ab4f0dd0c25b12f9326d0ea70f4eb349b079fb89a9d380e71406d14b8bb03b876db6c8b412391720cc202597fe1890bf16dbecaa6d8c30823674e6c49a9cf6926b94c2bbd69fe1c8359f03074fa32b3b931963611fc24be627bcc5ff1564fd1cbbbc86855b92cf25715e20342552de9c124be25758019c76e07f674ffcb69bc086a6b5c6241ed6f115c978770e00e88364cf47e36144c89ab1b3787bda62102812a9f3d082b32969a669734f6387e8c467658f51da99848eb7018c38c2f15a61e4b22b416113d3ba9338e6a16e86c752abdefe51fc10ae41c9a76c0065c4ed55', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3352.0, \"x\": 1171.0}, \"hi\": {\"y\": 3408.0, \"x\": 1275.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5456: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:8c6d917946f4b066d8286d0de26c0895:00110060\n",
- "Processing image 5456: timestamp=2024-01-31 20:41:34.287022+00:00, observationId=o1:8c6d917946f4b066d8286d0de26c0895:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with the word \\'STOP\\' in white letters. Underneath it is another yellow sign that says \\'CROSS TRAFFIC DOES NOT STOP\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.292046770637418, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2041, total_token_count=2122) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:8c6d917946f4b066d8286d0de26c0895:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-31T20:41:34.287022+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c6d917946f4b066d8286d0de26c0895%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bcb2432adcded85f87384f2689fcfb20420492732ec103b89eec5e12cd63114885cd0436d04bd2605d89df878217e919e9862caef8a18690e6fc7923097009556ddb71bc3127baca43da5b547602d36736983045407ccee04b04314cdb676e9960010595e3c5e83134f492be285d1ce16af7b0b3139dca24f1a33b177e9524360a9840010348ea903bc04984f2d2d2c29198fb9853c6f4cce3e2dabc3f99e36e6bea69696738b62dbb8d55da3c3782a7c00846c2c112fa737cbb2000d4c3572cf8e209985845b283723a5afcd87264dba1f3659b8c2936cc2cf30de36d0cb6d1638c40a5b9cb0152cbf4856dd6699f6a7efeed78dd33a72576c9623168a0576', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3379.0, \"x\": 796.0}, \"hi\": {\"y\": 3442.0, \"x\": 917.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5457: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:c3bc1038687ca713f37893396fb47fe1:00110060\n",
- "Processing image 5457: timestamp=2024-01-30 20:04:39.430227+00:00, observationId=o1:c3bc1038687ca713f37893396fb47fe1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. Below it is a yellow rectangular sign that reads \\\\\"CROSS TRAFFIC DOES NOT STOP\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15833808126903715, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2041, total_token_count=2125) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:c3bc1038687ca713f37893396fb47fe1:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:39.430227+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3bc1038687ca713f37893396fb47fe1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d86413ec031d74499a1c342b04cfe1930f1be491a405b167557a3303a7b365af6782018ca984085e9821b1e67e41390b71f000db6d375c5bb1ddadd5b0b4740e2b7fd30914acb6632a304a31e5f73860d2c7b569048ef50d5e21fa44db489ab963cb2ad50e92711fd494862963c7510d4bc7b92eddc846246366118100f2b985a28fb1da69b923908ebb9ad7e04d82fc18d4536c108998b3691bdcac2e9920c8634f327767ce07abd8819e6124f3a00ee5881f3790c86bc388f01b6e11aba2b23c849d207dbdb719459201682afcc83ed29c7250263dc233c8947ccd4cd2fb4a1131be8b63684444998d655e4525ef7cf1c5c1dbc5c134d75f58afb40411528', 'category': 'Stop', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3414.0, \"x\": 1488.0}, \"hi\": {\"y\": 3487.0, \"x\": 1623.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5458: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060\n",
- "Processing image 5458: timestamp=2024-01-30 20:04:38.738189+00:00, observationId=o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. Below the stop sign is a yellow sign that reads \\\\\"CROSS TRAFFIC DOES NOT STOP\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1226445304022895, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2557, total_token_count=2638) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:38.738189+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a94f5f82fa769e6ee1f4d7da5a99fd6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ae021f06f0d6c0c22213c906e54f7a3ecee12eb3c9464bfbf1527f64660220dcc7b2b8595284b435a0954ea7fe8c361474ff5522219ab8fdff89db43258f15a267a2e9ee3939125ea59ae549622cebd269b81fd704255f66ae30abd92983530074263e82b299ffa338d90219bc9869ed1f0491c0ee562e50c565bcb4662eb5c39090f98e40ce080110e96fd372738f07e71bd3b3317eacfb35163166573d5feb8b1bd57e81ec78ffbbdfa586670f64ebae257182c9cd9d2c97befa745054e6a36f5681bf434d6fd6b18983b263fdba7fe7b8418405692bac75afb483106bc734e9180c9f9c80821e309cce07baed7e6db6ab499c588a13b151da47339d02589', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3434.0, \"x\": 2143.0}, \"hi\": {\"y\": 3533.0, \"x\": 2323.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5459: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:35ec6f2eb716d0cd015571850cd34969:00110060\n",
- "Processing image 5459: timestamp=2024-02-20 20:48:13.826131+00:00, observationId=o1:35ec6f2eb716d0cd015571850cd34969:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12553760970848193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:35ec6f2eb716d0cd015571850cd34969:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:13.826131+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A35ec6f2eb716d0cd015571850cd34969%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=924137801e5ff7c88fe51df417316fded9650626bd4c9df372a0122bde2cbc4e1e7a4e79be710378de7e22cb65fbff0781b2a6eaa098c6230b69060a39c65d189a7d9a296b89ea5aa8dda50ad3792d46088cf5cd9b02ce8809d0689f76583e75c2f0f9ea80903123402f9bb5ec8859e99f9d45d851a3cf7fc2524c7696e0868fdd9d167dec7d9bec235be244d494d598e32aacd91fd50b471a8333d446ffd603a69addbe035919a533ddb804c0b04dbe4c8c0434d2ab83478c60ddd2a142eeece7e8b48d65c774d8e674924a98a7aa100c547a32644a1b5caac51dea3c578863889422811d5debd0e99ae3ddfe2468b2e412eff3c6e2fffea4cc68420208a29a', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 1049.0}, \"hi\": {\"y\": 3267.0, \"x\": 1136.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5460: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:5c81399d118b47d0ce489714e9765c27:00110060\n",
- "Processing image 5460: timestamp=2024-02-20 20:48:14.738198+00:00, observationId=o1:5c81399d118b47d0ce489714e9765c27:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing left, indicating a turn in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10559913847181532, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:5c81399d118b47d0ce489714e9765c27:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:14.738198+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c81399d118b47d0ce489714e9765c27%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=769afa5e41f367cc5f58b6af2c29aa66c206ea3f265bfefa4e21d24f603c5274db1c63e0af7e228c5d17f616a34e5b7558d20ef7811291d78f91dbb0b5b463450c6c8e4c752c4e835d2082baa545bcf71f055f2e7d4921b4c3047b634fd32a7619a916d320550a2d7737e5a05fd519a3c19dec9715e9d14c63b4ea4c3539cede1db06333e86f4bbe961426911de9c08bc4860a4e8f0ce0206c028a611a112a6e5307b95e04cd64ce00c9d62855b9b91a3cd6f711701696443ee48fb74f90ef29845815fb88315e3554b0810b1e550b5a6b2cd8c003b5f508bbe675a24baef783142d68db601fa9b19f812f69cfd5c3fa15873660493b76279d4a0021c44c524e', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1952.0, \"x\": 1837.0}, \"hi\": {\"y\": 2324.0, \"x\": 1925.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5461: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:c75c47160d2a66937d2e33b7d3efa825:00110060\n",
- "Processing image 5461: timestamp=2024-02-20 20:48:13.521702+00:00, observationId=o1:c75c47160d2a66937d2e33b7d3efa825:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10264655127041582, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:c75c47160d2a66937d2e33b7d3efa825:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:13.521702+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac75c47160d2a66937d2e33b7d3efa825%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f43e0e7c4a0805ea5cb89d1bbd867e8f7f483eeb4d154212bd6ac1be872eecce7fd3a67ac44a1da1e6f9b28f5bccb871a3fce138e4b6ed62545cc6ed772de5a8566634984864116a9c72c4a9cfeac5ee7647bd21d055de28382d025356b144259ee23b7a545de99426acb575af480c0eb1d52bfc55850c22b9234411af630410793786ecf5452d3bd5add93ef4ac073dde366fb1b6dc6e275c0936fbad414c719de7d5ae62086c357f078a370176b42d09c1ad4d9fb7026f4e8974a6ebec59aefd62e2d9bb3a81fad067d51104c45f16c2ad0f77bea82e9fdabd626a4343571ceaee14b8da10232ac831286a1d966724f3cbca6905dfb480afa98fc1423c35e', 'category': 'Turn', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3166.0, \"x\": 796.0}, \"hi\": {\"y\": 3256.0, \"x\": 867.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5462: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:fad2c9a629960dadb2a12eee614dfc9d:00110060\n",
- "Processing image 5462: timestamp=2023-12-21 15:53:16.607397+00:00, observationId=o1:fad2c9a629960dadb2a12eee614dfc9d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24994848668575287, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2041, total_token_count=2105) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:fad2c9a629960dadb2a12eee614dfc9d:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2023-12-21T15:53:16.607397+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afad2c9a629960dadb2a12eee614dfc9d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7271b27b414502ea5b2381fb3e782883b478dc52f61edfd4e2f35edec7059d6f75c648f6d3446aa98bed3dca6aff91d18781f4a82f1da7d9c19861e6c9c1407cfd27cfc50e97bdb93a4e7ff29dc5aa4303fc2e141827be047a22aa602d5d303be2b9f92503bab1aa34ce637d4feb19ef8e8fa4d667d4ab80e284b77215c39436f8c21390941b39a796c32c5070d481ce0e92c0186212acd03746ad0e329c034e11c352412dcfc4b5faf0214f54ca82415db98103825409b4bfde8b28df09582e2dfe7a08601ff60358435088678b8bb049199aa4389df489a97d11cf28a1e5b91005390c419c9b84fcabe7b5b487c4f4cc653a41b17bec5b4d86815cbe89f360', 'category': 'Turn', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2225.0, \"x\": 216.0}, \"hi\": {\"y\": 2328.0, \"x\": 274.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5463: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:a18d01bbd1e844014ccd12dd9ad17165:00110060\n",
- "Processing image 5463: timestamp=2024-02-20 20:48:14.129896+00:00, observationId=o1:a18d01bbd1e844014ccd12dd9ad17165:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13416793942451477, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:a18d01bbd1e844014ccd12dd9ad17165:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:14.129896+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa18d01bbd1e844014ccd12dd9ad17165%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a70b95604b8dfd08e0443c773467e2f87e3d681ec186fe66df61ff3a5e54b7592a74c7501b565c98e72209db5ad961e5257d2a3c62a1a71ddbe2ee85f621c1f487aee664ee040ee6f0350d931898af6bcea56224c8aad69e77d88d3d9fc5db3896018108e20a951d49fe0a72f234e81a7d806ac2c1cf36048707ba04eddd5e34af3363591058948965804d6b8fa3a80b85cf832743887ed154ffe0cf5158656039343b0efd805baff0c385e324a6e5c7298a867deefe376077148b7983315854194a9af63567992933e9492fba74e6726bc4e767e13fa8b40f09d5b6778456bb9d90659ba65c47346850272f3edeca273e963e157f82100f85f4d5eef7e42da', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3118.0, \"x\": 1484.0}, \"hi\": {\"y\": 3279.0, \"x\": 1599.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5464: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060\n",
- "Processing image 5464: timestamp=2019-01-29 14:14:28.520574+00:00, observationId=o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A construction cone is visible.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1369324464064378, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=52, prompt_token_count=493, total_token_count=545) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:28.520574+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26c0814ba9e5ec2ac8ad38681da7e309%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=484cb552fde8e5c4f64d00674fb7a8c7c1526876de24e2a65472279ea6dc278365ba52a9e7ca90315d8d499699271bfeec42f16ad085b87b71fabeb516fed00920f3544769abd660e32034d1574cdb388893e2512e3e873e35c152edbe175c091a797c5ca5bab274e878e5e6add6675d55e16f8ded614d47a3e72591d1b28f8dcf108e4587c92105fb6e653957ea5a58a336c6ccbd756cf333d2bce2a67adeb41a86e39bfac053c53e0e69296a34287067e1bb0a4168a4c135165b5dd604283b21106d3ab2e4a6bd071a62d7b3f5f7e8c382a73008fed03e0dc6e69f663791a5cafaf8c578bb11f9c8fb44c4e43753e9a7190c615bde706a5b2eb8903f784272', 'category': 'Other', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2457.0, \"x\": 2012.0}, \"hi\": {\"y\": 2548.0, \"x\": 2042.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5465: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:6add22a20a28444d34971d350d8f0241:00110060\n",
- "Processing image 5465: timestamp=2019-01-16 15:48:21.321996+00:00, observationId=o1:6add22a20a28444d34971d350d8f0241:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20538519410526052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=1525, total_token_count=1593) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:6add22a20a28444d34971d350d8f0241:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-16T15:48:21.321996+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6add22a20a28444d34971d350d8f0241%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8972f92c3a6f6174c43ae301d9187e6aa65078032441a13603aefd2295465391c1387c8b287927cc4d3a65b20aceef291612ce191d51d00d8b513969b1a0fe68fa349b1e6179ee5347dc84dc30ebacab8935a78e98e265d00f39972379dc16b9ebd070f3b4e8c0ecf373726a5a61bc74b97dbd8d6b88c2d61c8f0f113a8c2fbee1ea17b42c6d410af631b5b4c3683cd3e6f6ee4d9e3c47fe7eebbb328c9218ec85b3d1a77b5dd854c412f69ddfd93380010405e0fafe4f7aeb6c40f07171d73dc276682f71ee4964c5738cc1c97ee75e3eff448c8553cb89bee1207455ad8d569c1b23238b4c42fddf08dec2093a597f505bd68d222e14b860b7bb33f564ac84', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2535.0, \"x\": 1828.0}, \"hi\": {\"y\": 2754.0, \"x\": 1901.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5466: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060\n",
- "Processing image 5466: timestamp=2019-01-16 15:48:20.722033+00:00, observationId=o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.040648269653320315, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=1525, total_token_count=1580) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-16T15:48:20.722033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad818b78ad2692d1cf3d87e3de72d6d4f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=96fa17adf7102636c4ca8c49088c21bf00d70c2a1716380898467021bef19d64bb4aed1eb5621df08a7e6d694747a187587ca8e6df16b54bd01ffac6ffd910646098b5650f1b9b619033b3f638d902bcf750aa21ce4bd2a7e31e5615cad49d40fb38d33fe5d9f86de495536387a200221aa9f29e798e829ec08271ce7724d4c41546b3b1a08933832e8fce9b35adb2bc4953ee4fa0d06177abadb1033f2f268ace1a4cd90ffa49d3fc1a9d92b8127bb67542f627de84a7b59c4eea9c4b4176e7a799170c0a57b2cdf856e85510dfde9a1f2258f8bad34265fb320db116c2d81f772b5dc2e60b4735e5ac29ec4edcf6e987a8ffe5ec39a2859631747437408f04', 'category': 'Other', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2516.0, \"x\": 701.0}, \"hi\": {\"y\": 2725.0, \"x\": 766.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5467: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060\n",
- "Processing image 5467: timestamp=2019-01-29 14:14:27.692612+00:00, observationId=o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24579327727017336, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=493, total_token_count=566) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:27.692612+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77e3b368e59f8ec69531c9dd7b0d5057%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87d21a3bff7294a16a61d89fb0aebb8daa0f6d29ee7879efcc1e3b1412fea6ac5b7e3b149cfdda99a40cb3f3792b81fb404c5c7ea90f5ba26b14500fa7b2ce59295c09c4033cc48c12e31b7735fd0779d2eaf132d5b6ff7a9ef256a5a2364d1f052367372469276475dbd293d1de775ed748cc88cdd5da62f5aeaeb18a97210347e14f02213bd8e861418b10dd6c9e97bb6887e5107ed88ffae220a89341767bdc54c27886f56b0e5e6ad63ddcd26f6ae8e3123732eaed407deb95ac5d4bb969a3679b3080e99ad1657a49e1e10b5b5fba4f50272e0a01c515c079892929fcc3002f74f5b60b2d9a0f7f987846b5b7619a397f07c90115723f7d4cb4754e97a4', 'category': 'Other', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3362.0, \"x\": 3249.0}, \"hi\": {\"y\": 3447.0, \"x\": 3281.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5468: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:1b9efd924a47270acce471975e6d02ff:00110060\n",
- "Processing image 5468: timestamp=2019-01-29 14:23:21.433027+00:00, observationId=o1:1b9efd924a47270acce471975e6d02ff:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21707302973820614, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:1b9efd924a47270acce471975e6d02ff:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:23:21.433027+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1b9efd924a47270acce471975e6d02ff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0492fb362047bc2c74a365530d203c67b122273dac6bfdb83320f82c59c51fee2488ad3cf40f35aa18cdaf5519fbf1c841816d61509d5ec538e1b0df54d5a751360333b8563560fba2f9f8a13409d51ff500b996fbb029b663064881a2974704a04159a868e0d89c7c13259d8dca54a1bfa941f82eb25e4bcc0de288c8e1b1c428f6f79e9947e8da4123f170acfe42e93f5d29a67a96900d50af351c0469091f4f6f6dd1d0ec2cbfce8c42a2dcc87aef5cc376244fe57178b7e1c577319a611b073c620c871ff6296613224189e898be43f423c6dfbdbda0e349a56dc205cfb18040aa22a36ebec383417da8f119e998d5eb5e92260ab1e0caea30eaaf62ac26', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3556.0, \"x\": 2775.0}, \"hi\": {\"y\": 3664.0, \"x\": 2819.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5469: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:43d7a363ccca633f55ea96d7365b3319:00110060\n",
- "Processing image 5469: timestamp=2019-01-29 14:14:27.692612+00:00, observationId=o1:43d7a363ccca633f55ea96d7365b3319:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.\",\\n \"image_quality_notes\": \"Image quality is good.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21656819464455188, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.'}\n",
- "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:43d7a363ccca633f55ea96d7365b3319:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:27.692612+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43d7a363ccca633f55ea96d7365b3319%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ea573403b988392a6a287d3dd56cb7bea670fb617b2b31e22a8920a43b47aa557cc7900f692cce1418d8865f68ff8371ce084c96edba3dc0361e971e336c6415ceff51dc82721d8f1bb6e2a1eec8c98fd6f9289fbd762e1a7c1962dded478a5ad6c506efcf920ce96127aef8ae438f5a724c272a7ad33d44a8edf350ecbff323cb495546de71093075b40e2d7260d40bda582c3523c2853d7c07af9bc728773750b7492d75e0382db04683e25b53a2e32c344cec1a8ffb45bcb7427fd74781d9cf2ca40b0816746b6d8c9a6fa3eb2907d593bb78cfa96c95ffbdbf26de16087aa25fee9dd08927d34a9a4db4291ae6185452abd7ff72517e03933e9e4b9ccb2', 'category': 'Other', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2479.0, \"x\": 196.0}, \"hi\": {\"y\": 2568.0, \"x\": 226.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5470: trackId=t1:03156def3e14da09e890db764df4e934:ffff005f, observationId=o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060\n",
- "Processing image 5470: timestamp=2019-06-04 17:44:44.429466+00:00, observationId=o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'600 S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10968517866290983, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=1525, total_token_count=1586) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03156def3e14da09e890db764df4e934:ffff005f', 'observationId': 'o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060', 'geographic_point': 'POINT(-111.86388890747 40.7562271642333)', 'mapsURL': 'https://maps.google.com/?q=40.756227,-111.863889', 'captureTimestamp': '2019-06-04T17:44:44.429466+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15f9bea5d9aad9e115ea484204b2b7a7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6d70f793b0e4382191b7beb29b54a30ee5dc3b16716a2454f19ff55f95e5b7f25e3d7afdab7854019938022d3f3357de24421363c56f4b730154a4f232a2e758da6d759ce9e1af93e217e96443781b4e1ff859ee4107dd5eec600bb8c0f9912276f342993f40647fcc155275d523bc82331582b725005093a99ccbd1f9a1fdb98961543c0f3f2937798f9a0f18bdbc18d01edb66185a76072d03551e1d082e52fedd736286714591f86022e06a7839c158a3cead155f61079b4fb39129834f89d0027b860f45d8087f12b5e343574358e2163ee87dc60e250045b639d177671e83b61d546bf65412daf157fa8a14ea23bfc65eb2ceab92b4454345f099f40823', 'category': 'Street name', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 1268.0}, \"hi\": {\"y\": 3238.0, \"x\": 1348.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5471: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:9fb96ce10c69862263203e1434044261:00110060\n",
- "Processing image 5471: timestamp=2011-04-28 16:32:56.701181+00:00, observationId=o1:9fb96ce10c69862263203e1434044261:00110060\n",
- " Error processing image 5471: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fb96ce10c69862263203e1434044261%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=65b554430684648815f88d2cf710fad7f919fbb87061b5e9a3dbbe26276dea3708ba563260142c879c61c9717f657c0d5d8b021bbe252345cabe419a3e88cea2f21317d148950490ec569242b91f13afc7e002e1a7f72f90b088f151fba043e01f9be7a5c560d1db7786cdcf0dd870e8e11ea7aaec5b53fd49b6d0fa7137fbefa8f5a7847c03f072f6534cf49c8fb4f9507f1a86716678715fbdf13431323efdf5cdc13f33fe9e5025d64d45f0bd19a686e721be2ac1c3dd7faf93d93e748a9cb8d8308e38b359c543f29737188459d35a4d63f50894146d206ee680e9aaa15edb976484a807c9db33e96b3bfd6fd2509e4bb1119e614f6eb0eb4a33315901d0\n",
- "Processing image 5472: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:0ad69e8c984ad989056733f4b7bf629f:00110060\n",
- "Processing image 5472: timestamp=2011-04-28 16:32:55.191856+00:00, observationId=o1:0ad69e8c984ad989056733f4b7bf629f:00110060\n",
- " Error processing image 5472: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0ad69e8c984ad989056733f4b7bf629f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092643Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=350baf48b0860d86575de914850e9d78e67acbbbf37f66a65a36108e8b9b926d6dd352643c1b6924be80eac39cb6f562a43c2ba39bc5c02677cb596b8f3d6f31cc67484e656b4410ccf9a84f329aa4fee5a98227e7a12dff7069aa42cc256abe524226f3ff7b9edc81c8e890243deb41ed0cf4203ef3df71d55be3f64369311f5b381a60e1e212ee38a72b53c6a2b28d643d2d377ff2c2aa8b356d5ace4ce36c114350a08a3c225b97563dcce6eac5f21d3c54fb0d571dab7543b8360510d8a2628c9091a136115d2cba405863805fee9e05812c49cbc45571d6a40334d3e1a370947f209e494baab9e840d22eb72f3326d0ef10167b6a42f3e7b82f680cd9f9\n",
- "Processing image 5473: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:adc9295499f2d6f46154d7ed5fe31452:00110060\n",
- "Processing image 5473: timestamp=2011-04-27 19:38:18.964102+00:00, observationId=o1:adc9295499f2d6f46154d7ed5fe31452:00110060\n",
- " Error processing image 5473: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadc9295499f2d6f46154d7ed5fe31452%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61662b2de8ccc5947a9c8ab1c26e17b77121f6b8dca8ded591048a096fe34778e96fb5656cce0495d8051aaa718c04c314f9e54b5176617d6b8b5e97601b0bce256fd710d3bf379161a38c3191d2c8c12873dff105f7954aa453ed6998cf93760d4421cbcf1e1a2ed766473edd673dfeebc36d8d6ed560996b8d7e11fb2367c33b6ca1a01b4df26d0c4f2d3a6d37121661996cec924b82923fab17ee3ea42ea8864cea3727fca6faf3c23574591226a9619df369131da86c4839ec7348e07376f22f37a363b1bd76144cc80fdbded046939d463ca485a5839f518e42e472734efd8f3969e6a13428c1fc8cf7f8a2627e71828d51357118c23aec72113fbb5dd0\n",
- "Processing image 5474: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:eb9d2dfde713c395731aabd9d0edeba8:00110060\n",
- "Processing image 5474: timestamp=2011-04-27 19:38:07.869979+00:00, observationId=o1:eb9d2dfde713c395731aabd9d0edeba8:00110060\n",
- " Error processing image 5474: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9d2dfde713c395731aabd9d0edeba8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8a82b22d5181cd08bddddd8e3a5d47a8b1bfdac283914c8f34a3cb95e6a229e538c30df01fe99aeb7ebb2cc04eeb15bd799bdb1e7beda9373842536480bdd1e3528ed3292f12156f291b76f60a3a5b1e8e74b6c72aeaac1b95070075f405649aae43a04d6301909c2f25f7a693e3e0295c163ffda61e9cb92bd26fc80659085b20e6277f2b6714b71da39ae8c501a7e03fb5af59a56f92df754aa2c2eaea3693639146e0aa93eca60297994c0481064448e8a81b4502d524114f56f9e336e4ef233bf587e5e64f3860e257ef532c7bedbc3899d0a6d1c9568d3ed042053727627c72ad454a00131c23e2fcc3901db3fefb5ec4a050b6b4e0a454fecf2d36451\n",
- "Processing image 5475: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:679eabbecd55a1aa0611b8bfb6e15462:00110060\n",
- "Processing image 5475: timestamp=2011-04-28 16:32:55.842623+00:00, observationId=o1:679eabbecd55a1aa0611b8bfb6e15462:00110060\n",
- " Error processing image 5475: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A679eabbecd55a1aa0611b8bfb6e15462%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=006582d6bdc526774a53b5357761ab32d5d17f3b57f433c7babecc094c32156d848d2d4e23f9bdd2539fbe464861e8fa45562e12960334be1bf4de7bf02aea28cb009413a60fb2b81db785670717ee28823fe1e970d959e0637fca81a1725ca7a2a5830a87d8f0a32f96b033e785418b27fd8f172eda4998a1becb89ce907a55ec6970c4a3cd8b73bbba66d89e8e93e3e8c8a7998d75cb731e3b13370ae71404888254afc1566427c9434e6c4abe8d64e11f1c8d1e9f897dbc654c833fb6eb7439dd86533da52a0ba0971614047d752cfdaa6c8e5a2e316f3bb866800c9c581160f99a4fd072bbf854bcedfe784fbb1ee547741233fe5c4bb0fe7b24cfd7bb03\n",
- "Processing image 5476: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:5720208fe751d61c92c652a53f8d44fa:00110060\n",
- "Processing image 5476: timestamp=2024-01-22 16:35:35.595061+00:00, observationId=o1:5720208fe751d61c92c652a53f8d44fa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a \\\\\"NO STOPPING STANDING PARKING ANYTIME\\\\\" sign, with a tow away symbol at the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19978004612334788, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2557, total_token_count=2630) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:5720208fe751d61c92c652a53f8d44fa:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:35.595061+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5720208fe751d61c92c652a53f8d44fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=718bcbd79f8f1ccd5f3c3a733dfcdac5fbcd34d478e93f8ff24488c09476444bed3bbe520613b0a05ddc747bef06f74328dc67e49e311bc60b9e6a5c3391e7a46c23338ddcd4d374aa51dd464e34b61c206535aab206cccfa19b16cdee0fcecbb2a795739cf036b5f78358c018296d21ab0dfd603d748ccba45b6ffcc775eb065f95d969d41f9f0f575f7f52a0a5ee30c2629f8614671b54614662cef979fccb6a698d36ffee642f56395ca16a2dfb0acfd01dc8c29f0a671421f899e38cb778ec1b1c36517a05a9c4cf6e5c8c65959b0518b73747ccb1b6b4fc5ce6d42c5e202e701c8187184bd335fb0ae27b482e837c2c4ff08170f736309752ca3a9ae142', 'category': 'No Parking', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3148.0, \"x\": 2007.0}, \"hi\": {\"y\": 3282.0, \"x\": 2133.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5477: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:f472927cfe1fce8e866ba58720058507:00110060\n",
- "Processing image 5477: timestamp=2024-01-22 16:35:36.639115+00:00, observationId=o1:f472927cfe1fce8e866ba58720058507:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO STOPPING STANDING PARKING ANYTIME\\\\\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3180772712431758, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=3073, total_token_count=3156) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:f472927cfe1fce8e866ba58720058507:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:36.639115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af472927cfe1fce8e866ba58720058507%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3ad5468c803fe7658318f40b32f54335c72a02bf45dd1906117f97edbd2c667ebbdd706c6f839ee05eff5538b9f6af840cf885f294a2ac75a5afd604e54c5f009c15cfef784940cb3fd385ae1a3c02964867c3bf3af9911931905f2c0edaa8f33e0ca75e153244734fa3644094011516782f94b7286903e1190d78bbb91cb34c53da47c18326a80efb3bc4bb46f46bfc83e0df5c261aab836515499c7a2dcc10405dec7fe39382a276e67242c2d614452929bb35696cc93c6550ff5219796a163e21a726b4b18af1360b6ae886cecf220fd5b7730098ce0d8f2e58b788f4ca819aa31369382483c1e80f52f44e22a3ad0d9f6cf0d4535b0df536c189e41ae9d8', 'category': 'No Parking', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3062.0, \"x\": 1261.0}, \"hi\": {\"y\": 3265.0, \"x\": 1413.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5478: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060\n",
- "Processing image 5478: timestamp=2019-09-27 17:38:29.420156+00:00, observationId=o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a \\'No Stopping, Standing, Parking Anytime\\' sign below it.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30072805358142385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2019-09-27T17:38:29.420156+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad6eafc5e7fb1b000f116ac3d2515404f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7b47f507d9250a9ed1e862f3ab1e2984f488127a5cfca0300ff00a1471f0c2235359f2b036a5ddc0e10c9614077679aea3415705c2278e9f3ed337ac94d1778e0edf959ed428fea973d63217cf6d897892d36559a6f72ad39b4628760459e809ab60e44a63660473302c543bbdceebc068ff050ba195763977337ea60bb605afc747e0c7bb50a8b92212aa65bdf80387b0c8be5668682c668b8f9cc383a494ee63525afbfeb06c35570da00e9dff3ef423491fca3babf25cd71a05068d89212337aa3be33237e1e4dd7b31387b1851cd4b3ade23c685e4a07f7ee7a5a1c00d4ce08f9f74b7446e5ffa6df852c4ec1289607249cf5920f8be40e234dd1662209', 'category': 'Other', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3122.0, \"x\": 2142.0}, \"hi\": {\"y\": 3241.0, \"x\": 2246.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5479: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060\n",
- "Processing image 5479: timestamp=2024-01-22 16:35:37.627028+00:00, observationId=o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is blue and white and reads \\'RENTAL CARS\\' with an arrow pointing upwards. The bottom sign is a \\'No Stopping, Standing, Parking Anytime\\' sign with a picture of a car being towed. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16549806496531694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3589, total_token_count=3686) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:37.627028+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5bca4d92cc3a449ca2cd8a25863472b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3aed7d264980c11ced0c3d079e353fe11a88599c1670e75bf4e7c5c8076955001a3a03ab46bfa55f6c1dece6f553b5d5458289c8aef6ed2f789a535c089c428466125a3f41ce357f2bee5a2b8f6cb2dc442493c1f38a54f3b7bf00d1f7865b029da983bcb4edc1ec739fca2f8a19a09318151a8c89250450fe0d9ec4658f12ffe3b24e5e620371e4fd1a84fbc5cccd28588e815876806bcb52847daa331464d268bc8d4364f9c4caa588131720b6155911ed41d8af8f34aec5b1c9cb07b394f7cc1d57aad244721ac8a715a289295ba9bd0c777fc1180743c0fd6cb2a43af53e4f9335ba21c043bd85cb0bbe2b6cd69734a64a7e6e7ae367e253fce48227680b', 'category': 'Other', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2027.0, \"x\": 2683.0}, \"hi\": {\"y\": 2327.0, \"x\": 2776.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5480: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:2178bf6187950c70963111a902c578c6:00110060\n",
- "Processing image 5480: timestamp=2019-09-27 17:38:30.368235+00:00, observationId=o1:2178bf6187950c70963111a902c578c6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'Rental Cars\\' with an arrow pointing straight ahead. Below it, a sign states \\'No Stopping, Standing, Parking Anytime\\' with an image of a car being towed.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18895724841526576, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:2178bf6187950c70963111a902c578c6:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2019-09-27T17:38:30.368235+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2178bf6187950c70963111a902c578c6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=22f05d336e4d9fd7bfabeab37941c0bf2561f06bb249f130542ac6b54cf8b3009e369a46401117271381b4db8760c54979d61d7cc10fc7f80a299fe3a31b4a10fbfb3053e7deeb45f05b70a638dacf92d278690e785ee03d8f65d6d4f60bddd9150328ec3e52cb008836587bd25360c53c819020497a5f1ae2bbcca65aca1f039b5f409c9f694ceae4106f3bef123f10c43650c535e6b2267f670ad3cb93da1982cf401f10aad4788d9974d002cf8fde2ed879491c6f14a25aadd912e151af4958ab740f636e5cf6fd01d30447446db2984926cfebe799b8569246b5ee0a78f58b8e9202ad8ef9ac16e0147ce1b3a2ff5d7db85cdef83e6e8bad4100c14de4e9', 'category': 'Other', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3076.0, \"x\": 1647.0}, \"hi\": {\"y\": 3233.0, \"x\": 1778.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5481: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:9f486115537db84b7cba395bdfa11915:00110060\n",
- "Processing image 5481: timestamp=2024-01-25 20:33:35.252138+00:00, observationId=o1:9f486115537db84b7cba395bdfa11915:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign contains two street names, \\'Parker Pointe Dr\\' and \\'Edgewater Beach\\', they are green with white text.\",\\n \"image_quality_notes\": \"The image quality is ok.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3727870374112516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.'}\n",
- "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:9f486115537db84b7cba395bdfa11915:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:35.252138+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f486115537db84b7cba395bdfa11915%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1eacd633db473e0d678dfc1b35e8a9c32002ac9f10647c082c28a7b3a1fbfc079e6584edf24bd1cb5ba5313637fc5440ba2b600429cf8cfc6dd973b9218561b59c2d7b5044a12fe99d38cffc0947723f4b19a0f7c35541d647e55a9f50506f8ad9c0aace83f0976153b85205a254158594b87fc336abf76355f61c383d580f7061a4eef520775263315e9d2707236b93db4fba6c014d285174eaac30eef14b529701656a99274937506a88c19453798afa3f86132cb9169524d51d6e8244f14c99a9e9dfa64aa33c23de9138551e7a1ce4c1acc6496320b8229f79bccc08b2347dcae11450f05fcd95d5d51232dd298f63fe08376f0167984f926078774a21da', 'category': 'Street name', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2370.0, \"x\": 549.0}, \"hi\": {\"y\": 2775.0, \"x\": 1270.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5482: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:907b8197f01462936b13df5cec479386:00110060\n",
- "Processing image 5482: timestamp=2024-01-25 20:33:36.104069+00:00, observationId=o1:907b8197f01462936b13df5cec479386:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with \\'Parker Pointe Lane\\' and \\'Edgewater Beach Dr\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06900579789105583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2041, total_token_count=2109) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:907b8197f01462936b13df5cec479386:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:36.104069+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A907b8197f01462936b13df5cec479386%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=160bd4bbd851b63ad522f2238f4651a20e562839896d2dffc1130250efd5aa59ba576c1c49e4fefa452970ca83f438b4f8b4ecdbf22af46fa9aae1a66ea1e777fe06c4c9c6caa8d87594d5b54386b9138f676ad42c81407cdbf3b26b7bcc52f102551769edd3f50a761f663d7f3656c1579af61a7376b9ff3e462f87e25e3f972c793b5b1fd05a1d3a33db94eb33374de13f9b4f1dd2f75f774706ea96e6c6082de70f31e54afbf4799a226950143fc1d442ca23cb7d194b89c3914955657091df6b8e7317c5b712a0cedd4386ce4c755a13210f46e20edf4145418ea15e7eb608c4efa16118046a339c4cd787d7419f532749efb03ec080532df1de84c1e01a', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2824.0, \"x\": 1947.0}, \"hi\": {\"y\": 2958.0, \"x\": 2493.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5483: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060\n",
- "Processing image 5483: timestamp=2024-01-25 20:37:48.712006+00:00, observationId=o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the names of two streets: \\'Parker Pointe Lane\\' and \\'Edgewater Beach Dr\\'. The signs have arrows to indicate direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23899946714702405, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2041, total_token_count=2117) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:37:48.712006+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c24925601a267cd3e1b0bd6bf1c927d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=af8b3aede5fe8f0ef177b9cb659fc0839cabf94c1c72cd203a08b50a3dceac1319822985919641b1fa7a0d7ff49173cfad2b26bcdb490140f507ed82b7c027ba1b5b251e5f249f0ffba470bd7de12fe54b98797f3b88a54b4fd6559a0df3e07aca1a8e2c54b1095e947fb1bd90e106e0365aae05b6a0d353d7cd4d324d4d2468140dbedee1546d0cfd7dd4848ac6b976d125fdfab2a868348b2ab18947d2b4d380f0fa4ee60f0aa1f95aab6f2f9532ca1f8868a9690d4f1d5c04843ca6700fa33071c00bc3f537f4e7281d0e6fb876aea4205ceedb49e05f64a125b9d474a8e04120b7ba1ea7ba209b99d02b1b762c40c58b4a7566d62dd3921fd0b6e5fcd7fc', 'category': 'Street name', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3119.0, \"x\": 518.0}, \"hi\": {\"y\": 3173.0, \"x\": 765.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5484: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:36baec66d8d86e1368a269b77ccbcc8e:00110060\n",
- "Processing image 5484: timestamp=2016-06-01 19:10:46.323563+00:00, observationId=o1:36baec66d8d86e1368a269b77ccbcc8e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street name \\'EDGEWATER BEACH DR\\' along with a direction arrow and the number 1300. A second sign below shows another street name of \\'Parker Point Rd\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3931295221502131, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:36baec66d8d86e1368a269b77ccbcc8e:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2016-06-01T19:10:46.323563+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36baec66d8d86e1368a269b77ccbcc8e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81379c56eb60f96ff02027eac8936f0b46c967befa22a15ae87eb942947f3e32185c52530716fe63678e7af7084e3803d35e54b7ffb22b064e289832a1e914e721ec76b1c8df2bb7354833e4f98cc93c89d4d241ba4efb72367f87953dc5a4ae04237a3acce3d3153cc793927427de33c2e163be91717602828870def67b1831524fd0bc3869a0796e022133a6d7642504f9c5a6d2e7fccc70471fab4594bf75f6ea567edc803b72837639c1d0bdcdf5c6e09980e0fddd3b955ad09bd3c1c69a4384f0529afce8633f29fa59077102836de55d562ae416582569badf2d5ab5f02d374abdd4873e80c46f9a553cbf8a415e284af87be9b6b6c8a102efa971bfad', 'category': 'Street name', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 594.0, \"x\": 1070.0}, \"hi\": {\"y\": 680.0, \"x\": 1313.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5485: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:cd4adad192503e93517b09ccc350c770:00110060\n",
- "Processing image 5485: timestamp=2024-01-25 20:33:37.771958+00:00, observationId=o1:cd4adad192503e93517b09ccc350c770:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Edgewater Beach Dr\\'. There is a street number \\'1300\\' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6485415006938734, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=2041, total_token_count=2155) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:cd4adad192503e93517b09ccc350c770:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:37.771958+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd4adad192503e93517b09ccc350c770%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5195297ae226fd848dacd709e00b38950c4128a390cbefaed725ac610673ca4a89d853c9bad6bdd9402b06ee8a6ec36d8b8b964c2fb336ab16a773700bf4b35e33261a182cbb4838ad5e101bbd6fd4b9d836350329a38f783e4fe7ce38fe4d1eff151710e1b1aed640f101da96c179f2ccfe38eff3459d69ceca21169d3e138636a7f22ba2b3a722cfb9d767eeecb15b7385a413f89e6d6760b7264de6c58bd36713c7e22094c4409de485f4cd659e1028176d3414aae1fdf3792a13ae5b256932fc30bbb6392ffecb71d3a02906aa72c7a792694a1346280c89b023d213de3eb65b4c003249313cd90eb52d7c0471a2ca63f2b4721e4cce6d3d33d0621d2bdf', 'category': 'Street name', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3020.0, \"x\": 2358.0}, \"hi\": {\"y\": 3067.0, \"x\": 2623.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5486: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:31e8b2603a897c49768a98f39e53f715:00110060\n",
- "Processing image 5486: timestamp=2019-11-06 15:55:43.004157+00:00, observationId=o1:31e8b2603a897c49768a98f39e53f715:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. \",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.37103381437413835, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:31e8b2603a897c49768a98f39e53f715:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2019-11-06T15:55:43.004157+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A31e8b2603a897c49768a98f39e53f715%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8568a333b49d10b6ef072e7b87c069b0f0625ed1503aa33e2b22aef562043d4e83b3d366f51d27cb2f183173844b50d4ad96fe15bad3b8fe0576f4f78f7174513ba06127c92992070503828e00a533b74c1c11b4c94b628f471a33dac958f24bf1da18ee2f1b99cae4d0196f8ca698e9f9df05307204be48439ca67bd281e8de0d007a60e3fd14a9e8b225c7b69fc8317e3706332b1315ca2ced3c306104d75f4eb1fe238ad72b3be656c547f23694e0ae611cb2969e747f4ab490a65d8e049875d6afa3ffdfd9b1be664f82fc4d048a76341d117dc387d2e811050ddb9feb15b51463083156b90072b4f52724e42fd891cd1925d19a04210f259d9713069f88', 'category': 'Other', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2950.0, \"x\": 973.0}, \"hi\": {\"y\": 2995.0, \"x\": 1046.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5487: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060\n",
- "Processing image 5487: timestamp=2024-01-30 16:46:10.061162+00:00, observationId=o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates directions \\'TO\\' Polk Parkway and Toll 570, along with an arrow showing direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2371234621320452, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2557, total_token_count=2627) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:10.061162+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4bf430c22e30edeb3c7b2e2f7aae4070%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d89e74936fd7be8a870ec340b4fff2049aaf2328dffa120576f54de76922bef0490a19f213c09fe0a4f6055e76b4972caf5b5504005c49b3e44942568adc3bdf1aa8991324f075e7eaa4ffcef55168ca3b673e21202f136c658595966f82e301b8788399f7449780ba2b90ca1b2ff1ba84faff8e3509404aa5c4241ad749ff00afe187a8a0ccd90cda3d8cd5b29906a3071c708030dfd36cf1ae39887aa2ead2e1785f96488fc1be56008774c7c3e7b5c2df9e6e46066bfafb5d3a0e56a6d173597a2728a2c30aa7cb6944cdd8d9cb322e273f6a95e90dcdb409f93fbaca1d6ec5a296bc4dfd1bcf300d42f3e0e7e7747e6a3a4ee1be43a6b3429c74f4cc267', 'category': 'Street name', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2916.0, \"x\": 1937.0}, \"hi\": {\"y\": 2975.0, \"x\": 2023.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5488: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:8ba34e5500b79863ab643d7ad8917f72:00110060\n",
- "Processing image 5488: timestamp=2019-01-16 16:26:19.853172+00:00, observationId=o1:8ba34e5500b79863ab643d7ad8917f72:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15561399459838868, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:8ba34e5500b79863ab643d7ad8917f72:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2019-01-16T16:26:19.853172+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ba34e5500b79863ab643d7ad8917f72%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=291d28ffb445f5a7b03542636b69bd0fa71d1e4228a82d83bb44bd9277fecbb1535f57b1172465285c04a2f0f63433da3e53692d3cdb2c5c7f41e9a9869e5b5fc9b7575b68d497afebbe44b5b5eb56c27497094a2706695bea16497289957d2a3b53d5cf69f92c5d2423dedded6bfb397f7628eaff39bbc9ee4581bb280f283fee0bf596580a0e13184d3f1652591acaac3f45cecf20aec3a6f77c627db46daf4192212c72f2327a782cd1dec7d777f8c7768bc6ddb322416f4c153a0044b0a50c51d1b2bc5787a776e29844a4062e60e1b148334d1480b18b1e15523d5d136ef07aa0b127baa454c2773340831035c78f52d4965442f0ac44f655785c761a29', 'category': 'Street name', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2882.0, \"x\": 1022.0}, \"hi\": {\"y\": 2930.0, \"x\": 1102.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5489: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:ee40da5d4156e1cb644da52af749857e:00110060\n",
- "Processing image 5489: timestamp=2024-01-30 16:46:09.701150+00:00, observationId=o1:ee40da5d4156e1cb644da52af749857e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates directions \\'TO\\' Polk Parkway, a \\'TOLL\\' route, identified as 570, with an arrow pointing straight.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2730316063026329, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2557, total_token_count=2634) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:ee40da5d4156e1cb644da52af749857e:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:09.701150+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee40da5d4156e1cb644da52af749857e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091338Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d52bd941af463a44895c47b55576d9708839521cf6fa041755353071c07e73c79003017e39014ffd20a7eacbbebb6ebc4724de14e97b609b8300520f9711a2611b625bbf9866a71f816d41a14c5f10c3d0b2143121a06794df7e95d026d2a75dd0ce7d52826d94cacc237feb0324f2164bafc54ced7c18e362c3e2eed784cd47491584fe84d022627bac7dcc54bd20cdc9c98ca6b5c78b0379b6987e54cfecc04813c0756a79e1d27973c557d124775d27106f05b4d91038f8514a5aaa86662ddebd59823b2a0e89ec4b5051160b5cfcfb5f4229e349f3b1a6d7266f356a773daee9d70aebf97b23df1919d5cfac359659bc1e0e0b9f9a7e92b4ab4d808edd7', 'category': 'Street name', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2994.0, \"x\": 1562.0}, \"hi\": {\"y\": 3040.0, \"x\": 1634.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5490: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:9f98d5374a2cc6393d7628746ae362da:00110060\n",
- "Processing image 5490: timestamp=2024-01-30 16:46:09.341200+00:00, observationId=o1:9f98d5374a2cc6393d7628746ae362da:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.\",\\n \"image_quality_notes\": \"Image quality is good.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31494151524135044, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.'}\n",
- "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:9f98d5374a2cc6393d7628746ae362da:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:09.341200+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f98d5374a2cc6393d7628746ae362da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=587f650d02de6843703c316a0e9ff834f060a9a52d989d8998e6161d4a73f9e21624f7b554b87cf705a580ba6fc54354280cc50d854f2021e830d8e8c47e3825b87cff1179a8180744966c6a0be4c9d9e24b632f2ed796ceed852a521a46ab518079625c43bda5675decc34a0dcb1e50f14dd6e1359cd607b85d184fb287927e8a0525ddc771a5b9485e4ff069e8bef08a3cc3ab6bb5b0d444b5e360e5fa36dbd2af09423837bc5cecd1afdaaed94b536da72f47a2f204764ead72e05f0ad0261e959801e52b060f32104e73694ff145d4e8f7a177f93aeb3c832533431d4327c5d45462e1dbb6083860e84495d00dee37ae3e5016e4926cb77adfd268438770', 'category': 'Street name', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3015.0, \"x\": 1314.0}, \"hi\": {\"y\": 3055.0, \"x\": 1382.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5491: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:67128c1f53c65807a7e0806027bff0e2:00110060\n",
- "Processing image 5491: timestamp=2022-06-17 17:18:43.408690+00:00, observationId=o1:67128c1f53c65807a7e0806027bff0e2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are visible. The lower one says \\'Mandalay Rd\\' with \\'1900 W\\' underneath, and the upper one says \\'Arches Dr 50 N\\' or similar.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32588819835496985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=2041, total_token_count=2133) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:67128c1f53c65807a7e0806027bff0e2:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-06-17T17:18:43.408690+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A67128c1f53c65807a7e0806027bff0e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092218Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82140a2b5a05e750499f69dd64055069c84af3dc20838850126fff87af9421a7f9fa3ddf155d42fd84ae36c6ff0ce5a85e0d428849001dd5dc6a9d56083ca117402b59a2d989886633d6dc25beb5537068629fba4800cf669e569532bfacbd807784768c89e965b459e05e4bf9e4adab38fa7090b783f6cea2fcca204d226cd1add0df06eff23df6e92987a414eef8536f55c6931f69afd2ef1ea8c4f7b0aab5d64443d7089ee3a6eec811b98de03a285039584fb7c8d7e1a2f9079c82f9fbc76f016713bdf51daf000d1cfad369ec943cff8a0dc37657664434a83825be6aaf17f11f528df7579ef09ff83610ead9c8a572b4bdf708c4bd65cfd1d29bb6ae70', 'category': 'Street name', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3196.0, \"x\": 880.0}, \"hi\": {\"y\": 3239.0, \"x\": 1022.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5492: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060\n",
- "Processing image 5492: timestamp=2022-05-31 16:35:12.442531+00:00, observationId=o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign displays the street names Morton Dr and Mandalay Rd. \",\\n \"image_quality_notes\": \"The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49144812191233916, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2041, total_token_count=2126) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.'}\n",
- "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:12.442531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b9c6bf699b41b595062bb34bd9b27d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6de113eea1d08aed25fc40633402de2b1594023cfa9e1749d12fc758285304e30b9e4fb02f10c49ac881da35c0f69a3a8fa439819f1698812810f312f4348be46668196309bd50a5f662a8a19d453610a486febd31d85f932f87495bf3603b298157add5d08bbb46a48c3065c48f4658dbf56cff910522376a155f563f9e58e965cfa9c4ec14301440edcdacc9d1612028ee2bed70fab91f0b5008e79fc4e2514ccf698fa43f812b1f8d16f9590b00ae096b3fbbe2c21cf8fc6fb57343fd9c8351ad8f98029847669a0e1b0925464e5b4fcf93e4132a22009a6d065a22d6a7d20ce28e0ab9cd54f0638bb45124e3e35304e6fcc4ac0bcd30b172d03432e8ddb7', 'category': 'Street name', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2194.0, \"x\": 3296.0}, \"hi\": {\"y\": 2245.0, \"x\": 3454.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5493: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:e092f3364cb8f9757cf667bec4e4c40d:00110060\n",
- "Processing image 5493: timestamp=2022-05-31 16:35:11.590638+00:00, observationId=o1:e092f3364cb8f9757cf667bec4e4c40d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two street name signs. The top sign reads \\'Morton Ln\\' and the bottom reads \\'Randafay Rd\\'.\",\\n \"image_quality_notes\": \"Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5181917231133644, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=2041, total_token_count=2135) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.'}\n",
- "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:e092f3364cb8f9757cf667bec4e4c40d:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:11.590638+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae092f3364cb8f9757cf667bec4e4c40d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a0b2d7b9256310706b71c8aec06430604c98171e461dcd88306b6094ead2b17a46089979c09eb946d665104e7d358969c064a84ec35c37d38d3b676ea97aeaeebbba7a890d18dfe5cc203a995ae3f6da8ecdc23a0e04a39c44092d0cc229b7a5b37c98777996bb68350ddd4d4d2b946a2a44a1901c6b03ba144a4c02e2dce05158173bf76f9d295f66b609319c790b383c5b58757adbbb1c4bc78de00caab0257c96161c71717144638d4df76b65b90589b837b6f305cdb04521155f7d2946dd9bb0d19e28dbc795d488101776634a235288703bf7ff4e70b414d0358e0fb2d98f9408d37a9dc3ec7ec558b0d269e4b66ff8253ba685391e0165300554aad5b', 'category': 'Street name', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3164.0, \"x\": 1009.0}, \"hi\": {\"y\": 3202.0, \"x\": 1129.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5494: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:317ff257a849e3136f446739b6915505:00110060\n",
- "Processing image 5494: timestamp=2022-05-31 16:35:12.442531+00:00, observationId=o1:317ff257a849e3136f446739b6915505:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with the names Morton Dr and Mandalay Rd.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.061883594840765, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2041, total_token_count=2105) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:317ff257a849e3136f446739b6915505:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:12.442531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A317ff257a849e3136f446739b6915505%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5e1cad77ef783f5f59a420219f61b02dfecfd75d709498dab0087fe2bcd060573d80d67f03bce3b4d32c24b08aba45df87dd4cfa5aa80bf91c5438c00aadb57532271074deb6034fc60eb04a62f09893a1d31b6c50a457d87509592bb35c51cd7a20cfbb4f79e1bdb022a8a22c77952e9dae414bdf9b9913c84ced03d58f4a057acf57879f2d5125bc96be4d3b4ba511cbc5bca4fcc9cc6a3320bcb280d6cc6d633aae2003c538c59da0f9e046ee30380fd757f58f0a0de04b84896e1dd21d76ae3508ca6501df8632918ca134c9f275953b53bf5161b3587dae5150b930e63fc5baf1e5ccce9b0d1baec60332c75f355052a830fee3836b6d9fad1977ba6f4a', 'category': 'Street name', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3071.0, \"x\": 216.0}, \"hi\": {\"y\": 3126.0, \"x\": 383.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5495: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060\n",
- "Processing image 5495: timestamp=2024-02-16 19:42:36.099082+00:00, observationId=o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a yellow diamond that reads \\'DEAD END\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20337727110264664, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:42:36.099082+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A851d61daf04ee56fb6b67a8bc2d8d582%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9aaaae4c8548afd994255123a8ea0152b3940ae6e835e7d6c69a7f16b14abf2407d552dd6fe587bb1b15dfba673a7b3aabf0306697a0d6de1598f862fb4dcb1ef61825b04831cb69fafb58d4acad5c4fdfc0b9b12fd8a0407ed886b5cd85b6777d94fd65c60f271ba9a94633c3f6b48347f3b50ecfecf93f9ba0f0647d3ee6f5bc79ce9eec388b915238815c237136420effce0192f89753204d04bb0f075ff9a033ee3d1541584f0f64e9b6af03941ef1ada7eb12ba6a157b5729f37d16eee98ee933f1d8fe231eb49d7cd8de369f3467ebd7b5a3171a695f5cc53ae801e1f169959cb609ab8d84f3e17f1ccc6c05a572ea7ed9f23583f279a674bfe6ec5395', 'category': 'Other', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 1257.0}, \"hi\": {\"y\": 3299.0, \"x\": 1630.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5496: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060\n",
- "Processing image 5496: timestamp=2024-02-16 19:43:05.445741+00:00, observationId=o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign that reads \\\\\"DEAD END\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11722292105356852, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=3073, total_token_count=3133) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:43:05.445741+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A45d17ad32f79cb263aab8cb0d369d4ca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b66df92d1ff5cd64e136359666dfa5024319c0d3a9002301e6f5c14d52a1e832e80712c8782c105ba56802aa50f5ed5bf88157a7624e90abe2ce5f8bfee29063ead71bc3d4efba78009717f6575af54bbefa2480bccbe1218b22a14d56e481a4dc6c443031018585a928e04fa19a2408967907fca510c1965840a11880ce5ffdf84fd2c31d8d0c73a65cb04e2bdfab52e57ee0de7da6cb19abbce3cb9a7ceec50b96d7c9b5be2b566a0808b470389e0741a00de169c1e0217043c9e3bbd8e56bb743dc50ba431b568bda2950ce648685882af687164d882e9c2fcc082abef9b173e6ed524a1ea159e7dc03cd0fdce8ce80ec6d4b6076cd24c00a9a71c2575a8', 'category': 'Other', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2942.0, \"x\": 2887.0}, \"hi\": {\"y\": 3336.0, \"x\": 3191.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5497: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:83d34b6c94a56bfd008340a045e720f6:00110060\n",
- "Processing image 5497: timestamp=2011-05-05 16:56:15.813349+00:00, observationId=o1:83d34b6c94a56bfd008340a045e720f6:00110060\n",
- " Error processing image 5497: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A83d34b6c94a56bfd008340a045e720f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b8d09ad2dbe41918ea7fffc25d4e61e08c55f40da541c9abee720f861f10441722380bebc389a769e83be10d10c18b5745583e4c69d8dbeb7c38bc3ca2b79fea772b146d05727450b821b452da304186b502899f497b322d2001cec72e86ab4dd7d19c9ed139d4045618ce8e296968d0164c023c8bc593e515ea04670866eebb1fc6bc368390fae07950e6105958eef86c3cbc32ed4cf44fb20e616212c38b0a45c493eb601837a5bd87eb52fab7f002c60e168f8701ca4ffb247bc35482a5e9511f8f9ea3e78e02c190f16c772fe94e3e2d8f2c82555e5470114f7037cbb3a20bb923337186469c875d212eec1957b08208191c7d11034ca3d9ca5b234e76b\n",
- "Processing image 5498: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:5247003533c2c8dfebde9a4d133f4093:00110060\n",
- "Processing image 5498: timestamp=2011-05-05 16:56:37.950214+00:00, observationId=o1:5247003533c2c8dfebde9a4d133f4093:00110060\n",
- " Error processing image 5498: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5247003533c2c8dfebde9a4d133f4093%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091014Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5a7b00907f8abca8d73d1dd465c072611593a93b5e51470169271e8d2a6c18ded8e941989252c63e62dc348e4a14ed8e92113f16099b4ca359e09c1f92aeb4ab56b223e53d708120e8395d4bedf2cd2c753dc1a25a30a84eebba6d71a513db0fff5df61504f33878101e4294a544103387c51bce102a93a09c8a62ef468e270ad9247dbbca5ed391e968623f9de4e20a5ffacf04721ca22dd247d40b7e717079e9cc1065793633fc101079415c5456b6c1c81b24b9869c9c2fe8efc2c39949dc6bee536e08db7a3cefac8e7640b492a4e84d229d34a3082d710d3656c5dc4bfd413f54c221fe86c1c1f148cb1962ff4f926d375adc50d38f7e711bde28e35a24\n",
- "Processing image 5499: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:28c047b76604ab4b8e8f5acfb08f891e:00110060\n",
- "Processing image 5499: timestamp=2024-02-16 19:42:37.014657+00:00, observationId=o1:28c047b76604ab4b8e8f5acfb08f891e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond shaped sign with black text that says \\'DEAD END\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09206191047293241, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:28c047b76604ab4b8e8f5acfb08f891e:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:42:37.014657+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28c047b76604ab4b8e8f5acfb08f891e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73dd5f5a2eb9d3d6671123762d09eff82c06c368de2819879d3a49f7bdcca4646b8cbe565a07ac933a3410d05fde6b02f6bbdc131e1c60ade3345a024682a848a891bb26f51ca7b539b97ed0b5b212481063e470d50e1e8adac4f5cc8744645527af4144056c129a77c7ab49dbb81eef6a5a3463a29071a1be49d94f3067e4007837d4bb250985e7959c0cdbfe822771045531ff1e47a32daea38ac097df4e04087f211c80d0b38c82a3969f02e8f6fa59caee1a17b28b35d557e683667ad06fdd76a07414ce297a78e4d8ef4d766c91ea251e2b53dae3941db7b6630465c62b67cf7bd544db001a03d78059c11a417a7d46d3cf8159a5b67873fa73178e93ec', 'category': 'Other', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2520.0, \"x\": 2818.0}, \"hi\": {\"y\": 3346.0, \"x\": 3333.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5500: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:7b95ba93a6789d75647671b06ecdc539:00110060\n",
- "Processing image 5500: timestamp=2022-06-23 19:57:09.082178+00:00, observationId=o1:7b95ba93a6789d75647671b06ecdc539:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22332483927408855, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:7b95ba93a6789d75647671b06ecdc539:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-23T19:57:09.082178+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7b95ba93a6789d75647671b06ecdc539%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61e66a7901d88a256faeface1d21689ae3d5234136ef39233848881c79f05c7bb5e340cf7f484783d0fcac9793ea76c6f0e5d747eb8a00b9a294e26622d30befdc6ab83864c708c0b6c316959410a6ee7834ba7a72141560b83545fa190a0ef0758b32207bb67469e2e6a3093198b25860927aaa91b02314520785e172981f4d5c0e60f0e31974f46d0994e6f352d09d83dd176145891a9421db8b89fbe84ffc9394f2be9fcf0bc1c1acdd36eefb2d5587a15010317a0bfc548c819079d30796709a2073cde6ec1d275b23dacc155f05c1d12dcd834d487ee1c84e1fb4a686c5038440d5d323552bd5c2a1aacd5f58c9155cf5139681f57c8ee95d89fdc9c35d', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3255.0, \"x\": 1802.0}, \"hi\": {\"y\": 3281.0, \"x\": 1845.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5501: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:f7960212c5caa156bd97fb08a9393421:00110060\n",
- "Processing image 5501: timestamp=2022-06-23 16:26:42.021902+00:00, observationId=o1:f7960212c5caa156bd97fb08a9393421:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black silhouette of a person walking. There\\'s also an additional sign below it which could indicate it is a temporary crossing.\",\\n \"image_quality_notes\": \"The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5400326522355227, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=493, total_token_count=590) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. '}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. '}\n",
- "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:f7960212c5caa156bd97fb08a9393421:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-23T16:26:42.021902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7960212c5caa156bd97fb08a9393421%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=861a207192f61d31d3e7853a4365b5c657000d6418fd31433385e555fdbd15e4e507c6f0b65c7e77c1e411bc467eac5dc7478a0b6996189802ac8445b8adbdd242f69d6ec4021392fd315b11bc1fbe48402a215da000c34d91631cb43ef8c6cf24a021e6b7546df30ca7bdc637d4e198f75d5edb0f506f3efa95f522c34b1d20757b1754a684860af47caeb5e7f7df12f8106754ee66f5c00a2ca77c8e6ff8b5f364154c5894fa1edae01fddbc28aba5a5f337979b1c01c111c9eb63a7e7a62b201a2c41d26b2945d2bf0c8f5f84ae1cb53e0865dab29659932f388e68fbf7a21db2254cb1b13cf8b68620abaca81d3091a85602d94b0ed756a443f7e95148e4', 'category': 'Pedestrian Crossing', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3251.0, \"x\": 1836.0}, \"hi\": {\"y\": 3277.0, \"x\": 1881.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5502: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:f7c62e8e8ae483f8467008312efab9f5:00110060\n",
- "Processing image 5502: timestamp=2022-06-29 17:58:40.996844+00:00, observationId=o1:f7c62e8e8ae483f8467008312efab9f5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the sign details can still be seen.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5295241860782399, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.'}\n",
- "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:f7c62e8e8ae483f8467008312efab9f5:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-29T17:58:40.996844+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7c62e8e8ae483f8467008312efab9f5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a34ee215e957a1acc27c4207876f05ce2d40a872d43f3124cdcfa3001f4f8e9cac1708831cd816fac42f8ecef66256db84bea06c87022ac8029dccf682a4b02835d1fba045503b49749886e098c2143a19ead85c08d6f01dca176bdb43f014a58f895f876e7fb295e3dbdccd8b1e3037d14f3f9ccfe070887c9f11a9f88f71a4004bfd6cf28ad275b9c67fb3a46635c0dca8c1a3688476c6b68ea6c2a65b4313fbe1e641db3240fc85ad628efeb61d55b3253e10bc6b5e74e946e3afa9a19dc2709a8866da2d4958b9420f127fc8495b1f1401b7dc28f2f41347557b681cdc5a533f7367e67f0643ba776972cdfe327c5357f1813667f26c25c505617bc432b9', 'category': 'Pedestrian Crossing', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2317.0, \"x\": 932.0}, \"hi\": {\"y\": 2390.0, \"x\": 970.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5503: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:60217442e77e0d7d62ea75deb005dc09:00110060\n",
- "Processing image 5503: timestamp=2022-05-18 21:49:10.815573+00:00, observationId=o1:60217442e77e0d7d62ea75deb005dc09:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"The image is reasonably clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17951003925220385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2041, total_token_count=2115) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:60217442e77e0d7d62ea75deb005dc09:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-05-18T21:49:10.815573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A60217442e77e0d7d62ea75deb005dc09%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=166aad8487d573bcd66c4581331e37f6ced04973f79c434b02c2817c2835245c2008068619d6f42c10bc4e8346c48063b46de3d306013476f65081adf4578ab00345daac77d867bd02bf4a21a07d101ae45e7be5b3db4b3069f3a14cf83b8e1caa97622a1c02210e1eb0eb8e1240b1b2dd26430f6223ed06e57a0fcd43e993fc566024cc919f328d6d6aa41999eaacb2dd35d6bc9451586cd2f0dfca10264955f46e4fa882ed6371c348fb8c6223aee45c244e82d31500ac5b1dc095c56edc1e8653b23c144b2518b3a6d2d94ef8048c85410a9e3a2caa676753c836bd612967a221d1685989259bf018c52e0519d3262500c7191e6d97568dfeb535b2e96307', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3243.0, \"x\": 2756.0}, \"hi\": {\"y\": 3300.0, \"x\": 2822.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5504: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:681dfa8e39de747284e795451ae12b65:00110060\n",
- "Processing image 5504: timestamp=2022-11-10 23:26:11.908867+00:00, observationId=o1:681dfa8e39de747284e795451ae12b65:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with a white stripe. It is sitting in a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1639501480829148, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2041, total_token_count=2104) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:681dfa8e39de747284e795451ae12b65:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:11.908867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A681dfa8e39de747284e795451ae12b65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=89b4fe6d35f1bdbf7166b832c9286cb882409ef0f18cccbb2b15899d3170f78d81c9bf901c01371bd2d4e750bddd13edb949c9a3e4bfb400e3cd105a38932db173974bc4b4333a0ccddae1353e8cb1f9ca55be726f12711b3799ed414759e8538bd8c906ecbd2283e64d469f9d5d96c26d4deaa4700eaa63af83d4cd739e98719420d6d4509db83eb7aedaded698388822295cbfafa2a31c271776409ba91f2a0ffcfbae77da65cf5a7bae150bdb7cd5c67f6bf98896245ff82187a46dc16b12975ecd51b0ed3bc4130f5917b6bceae9c08b1f7db2ceae5ef05613db026cacfea5b60ce9618d628e700cfb735134b2233fbb53674bbefc46cdbec9bf0d81ed43', 'category': 'Other', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2711.0, \"x\": 1811.0}, \"hi\": {\"y\": 3031.0, \"x\": 1871.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5505: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060\n",
- "Processing image 5505: timestamp=2022-11-10 23:26:10.016835+00:00, observationId=o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21247810930819125, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2041, total_token_count=2115) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:10.016835+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3c81f736a8abdbf1a1af5b9efc61250b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82caaac57edcb2c24f389ea317b34f3b01285c4118705868a32b4dc0f4669aae64c8f8c7107a583eab4903107208393d70da7401024fe0774d4fd715797f0370958d2a38e3b8e250aad6e19fe6acd59ce83b64298671814f13ef1a5989dfc96fc9555c70eddc30fe27fc9bd690599b79b8117efc986eb04c7b818069de70a96491601648418408cdcdb3938024db38536767d3a8b3f7093bad37d4dd463c534b3f010ec979c39bfd89e6eb78f3621d32fb95798937770b8b3ca233d209eb911f893e0d0bb98d6e2da026a61b8b6139df69ded2a1214c5e39aa3cfd870ed5a3b6abd36ff1073cd8c8eb82d3aec91cd922119153854c86677f497c5292cdb733cd', 'category': 'Other', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2685.0, \"x\": 1102.0}, \"hi\": {\"y\": 3031.0, \"x\": 1159.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5506: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:cb90021de777abbb209c1f79b1c68062:00110060\n",
- "Processing image 5506: timestamp=2022-11-10 23:26:07.932988+00:00, observationId=o1:cb90021de777abbb209c1f79b1c68062:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22055630317101113, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:cb90021de777abbb209c1f79b1c68062:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:07.932988+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acb90021de777abbb209c1f79b1c68062%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4fe3a3bc2ba8f041cd63f527152de3cac31da599782a27b3049b00baa66f2bf70b0ef6d7e35d13cd44ac17663fd0c76854b78b6a579fa65b20b1757b4c820d03de2b0beafa3ed598230a9773670a4cd38eb9b07dadf956c018cbb1d0b6aa8d34f05e999a874047cd06d9467e6ce0d06c119009f0295dc7d8ad8b6117e166978994a095abf754aec57f55f7107a909ad4b4fc4836e17cf2f64321bd9e46bb499e332c9950c3a4deec97673f1d315f39daa3413ae985cb3c41e57bacd37bdca25ba300f54e4de3fb2a00ec7b1e1465db735a4fcda5f72fe090ad45ae16e99ae2429ec4b8467bd38f25ea1c45fb4c1f4feb45ab34e56609e5c524a6f2877b18ec46', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2697.0, \"x\": 950.0}, \"hi\": {\"y\": 3030.0, \"x\": 1032.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5507: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:eca0148da08f93456a7c47b0e0b5f650:00110060\n",
- "Processing image 5507: timestamp=2022-11-09 23:43:13.539295+00:00, observationId=o1:eca0148da08f93456a7c47b0e0b5f650:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1680365668402778, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=2041, total_token_count=2095) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:eca0148da08f93456a7c47b0e0b5f650:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-09T23:43:13.539295+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeca0148da08f93456a7c47b0e0b5f650%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=19144b72a9e983bf1831badc6d5910059cda87909ce1ab7d790eaf03a637af88118bc654573699e69abfeae6068ae162612c87fdca22dc215c3945cf8a57baea17ce1d83a37f9513adea5e3eaae0a9ac353204c0b5ea8714e7962fb50fdd79adb9c20a4318b847425230fa00120b61ccb32884d0db069730a74ff9b485fe8137b45f62b2f164501b8e814a26298792ca89ada1f940f863607569bb9683937df1141f183b6dd805de32589ec259c85212b222b5f8e42363e9a11463bad207a386969e44fe7a0776392bbdb6baa2b6597364745741738981f418da14cd69ea6546f5647340117f934cdb42020c0d912da072ec912d58f1934ad40db39d22061082', 'category': 'Other', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2690.0, \"x\": 759.0}, \"hi\": {\"y\": 3023.0, \"x\": 821.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5508: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:eba501aa27c46f44b58498e968481a1b:00110060\n",
- "Processing image 5508: timestamp=2022-11-14 23:10:32.675302+00:00, observationId=o1:eba501aa27c46f44b58498e968481a1b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone, placed on a black base, is in the middle of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25433692932128904, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:eba501aa27c46f44b58498e968481a1b:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-14T23:10:32.675302+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeba501aa27c46f44b58498e968481a1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=80ec7b3e400d470e41eebd01e899129252b3ccd647a743661d7292745536219c78ce8be8e8f231f42f70aaa5e5c7b9d1ca16a37c85c3f7927e8c871a245c680ffc2c523f9ce7ffdeb86568126f4c1f276e80b433fd2db96c7e41ce6bffdbcf813f9f8bd74e9267c0fd0d85de329987ad95bdbcce64c140b61f9a805bcf394aa9a035ea032a7c826eda4d52581a7ec3da637402dba1733d83f657dfa746079166515428c6fad63e267bcbb5172d9ecc081106baf66d1437a1b85691230b9b698b678f7ffbdc9d9cb429bd8f364533e53f288529b2dc482d2940af08e43337bd1d084111c33000468c498c2ba5e2ee3a4a3791f4c4a378766336a9741e065996da', 'category': 'Other', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2744.0, \"x\": 1866.0}, \"hi\": {\"y\": 3133.0, \"x\": 1922.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5509: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:bcb358d30afe98165e9a8ed740d959cf:00110060\n",
- "Processing image 5509: timestamp=2019-06-04 21:35:53.768778+00:00, observationId=o1:bcb358d30afe98165e9a8ed740d959cf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \\\\\"500 West Street Commons are closed to the public from dusk until dawn\\\\\". Another sign contains restrictions against certain activities\",\\n \"image_quality_notes\": \"Image quality is ok, though zoomed out, detail can be extracted\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5662267421319233, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=123, prompt_token_count=2557, total_token_count=2680) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted'}\n",
- "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:bcb358d30afe98165e9a8ed740d959cf:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T21:35:53.768778+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abcb358d30afe98165e9a8ed740d959cf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67dabe3e471e7e1c1d6b0c02b431aefd2396e503e8aad416ea3b71b4eb6280b21d908c2c89b89d15486fedb1d6c565736d11a7e6f67efea56234b00d3124f4213dafb8903089e46a8d3535dec439d347aa5e580a8132a3ab4f01f970fd8ce41fa1203500d3d85be48b9eb0e3e93413f55c138141227e795b0dd4c0060b30123b318ae3abc560dc2ef7750220d19de15fb79c485a9c1d63202a77712d814adb08e928749c895ae67bf170e73051f4dfea089aebe3ee68479307394e49b0ca11d98c61aa59280d2e857faa57401c95b448420e0f51571dcbf23625636e84a1c8dea0c8fee4ad477d990477bb8231e4c019535f482dfe99ca92b903cb6bed8aaf82', 'category': 'No Parking', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2214.0, \"x\": 1938.0}, \"hi\": {\"y\": 2359.0, \"x\": 1987.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5510: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:568ce4fe06b04271161ca07c2727ecdf:00110060\n",
- "Processing image 5510: timestamp=2019-06-04 21:35:53.052854+00:00, observationId=o1:568ce4fe06b04271161ca07c2727ecdf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The top sign shows a \\\\\"no parking\\\\\" symbol (a P inside a red circle with a slash). The middle sign states \\\\\"500 West Street Commons are closed to the public from dusk until dawn\\\\\". The bottom sign states \\\\\"No camping, lodging, cooking...\\\\\" and is also written in spanish. \",\\n \"image_quality_notes\": \"The image is somewhat grainy, but the signs are legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38351370493570963, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=120, prompt_token_count=2557, total_token_count=2677) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:568ce4fe06b04271161ca07c2727ecdf:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T21:35:53.052854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A568ce4fe06b04271161ca07c2727ecdf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=912e2fc845ad9b65d011adc2720bdb980d333452f94d3a02a58e4c9fae687e25d89e53b9d4e2fcedb0d7f2258b8e6f1cc42760acffca53052b4a994d6fb49377ec2b72b6f2aa3fc082448d072d650875209080b76f0a86bc33fd36afdeb998d470ded382f352bbd2ea93f6bfcfd604a59df99357ae7a2661bbaa2842422fd620612d1c295a1086af9cb2da6b2cac0b87371b13540e04f0ae966612289420b0e42744a887d83a2058fc5d3d7d261ae2731cbb8df0563c79318c4da948ddd0eaafe4409f6a41ff9b66c6c5b29e0267cd92f9d0849e235193ec887479a19ffc23fd3a332b4bfd458e7a216b52f14512546fa07e7f36ecf88bbe42c921f1906e1abc', 'category': 'No Parking', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2266.0, \"x\": 3369.0}, \"hi\": {\"y\": 2401.0, \"x\": 3438.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5511: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:b5dde438963a11a7b92a3392042700fe:00110060\n",
- "Processing image 5511: timestamp=2019-06-04 19:57:46.659132+00:00, observationId=o1:b5dde438963a11a7b92a3392042700fe:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5000316720259818, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2041, total_token_count=2117) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:b5dde438963a11a7b92a3392042700fe:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T19:57:46.659132+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab5dde438963a11a7b92a3392042700fe%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=695132b6e42cfbd3b2117d2d37f8635aa2611162a07c49ee840a7295ee870c7e955ff29617be5334bf66d9fb41dd05c4d09749b5a0eb19bba04821a4a0bc01876155eb7e24c3ab3c09ff345e678de363179ed2baeb4a800bbc169f38cc6236cd40cd2730af0abf5635174a7d821b65b61eb4a93fddfbb60f971d7e80441978dceed4c0e6d2dcb1c90206687d733355f93c50c79985df229997fff89195dec80fc932fb1225e88615536a59b244941e9d29e0c1a531c35435ab7e4b5a2e74bf6ce2b55715da6e38ba9673991b34f799078157724511cf00a06169e312f5d8d75043f0c9c3d94bba6573d9dd86ca9b301fed4c57f5ba6b681bbc5124ddee0c910c', 'category': 'No Parking', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3173.0, \"x\": 2934.0}, \"hi\": {\"y\": 3269.0, \"x\": 2995.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5512: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:e229037fccc2c7e2b14fc7bea64235f8:00110060\n",
- "Processing image 5512: timestamp=2022-06-01 17:18:29.504938+00:00, observationId=o1:e229037fccc2c7e2b14fc7bea64235f8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a no parking sign with a \\'P\\' crossed out. There are also supplementary signs providing additional information about the area\\'s rules and restrictions, including closing times and prohibited activities.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.39970601991165516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=2557, total_token_count=2643) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:e229037fccc2c7e2b14fc7bea64235f8:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2022-06-01T17:18:29.504938+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae229037fccc2c7e2b14fc7bea64235f8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c0b27c1f05fcf4220476dedd5267ecf09a3bebe30e1f3898622159c8cb572f312f35886ce53d8779513578287929fbd226b112f12cf3b62c59acf4c4053d702eeb43a6569674ef0de2217c3c5c6d9a455784405079c70dec6f94436378246012e071a63d80df401212d21ae253c8f794c609c449e1440c0ea71e3ea20c218fd4539d5d5e9237d30a18bce21852a1f4a68d1c81faf5a6892f6ab4fefa7e5694f4a0144f7ac0841500bcde620bd80b268fe2b23acdf59bc2318832fa88856c5c9c6bf6b6b22d169c8785977a47c6111f5b1c9c64bea5d1bd67339a8ada178caaad9e91a63a85cf7a270e7805077c7b620a74254ce6f0b7e65f522b9ba3175597e', 'category': 'No Parking', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 789.0}, \"hi\": {\"y\": 3298.0, \"x\": 852.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5513: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:ebbc97f5d8498814d64a590e7fc6251f:00110060\n",
- "Processing image 5513: timestamp=2022-06-01 17:18:30.800903+00:00, observationId=o1:ebbc97f5d8498814d64a590e7fc6251f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign with a \\'P\\' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\",\\n \"image_quality_notes\": \"The signs have a high resolution.\",\\n \"other_signs\": [\\n {\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a stop sign to the right\",\\n \"image_quality_notes\": \"The signs have a high resolution.\"\\n }\\n ]\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3744292198857175, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=158, prompt_token_count=2557, total_token_count=2715) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'other_signs': [{'category': 'Stop', 'sign_quality': 'Good', 'description': 'There is a stop sign to the right', 'image_quality_notes': 'The signs have a high resolution.'}]}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'other_signs': [{'category': 'Stop', 'sign_quality': 'Good', 'description': 'There is a stop sign to the right', 'image_quality_notes': 'The signs have a high resolution.'}]}\n",
- "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:ebbc97f5d8498814d64a590e7fc6251f:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2022-06-01T17:18:30.800903+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebbc97f5d8498814d64a590e7fc6251f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=016d903a729176244641b8f35d9736b43bb1b3ed111e32ea9f1267c2e4f01a6d8af1a7e0cab82aab96fd62a2d1328aa2ed5f31107990d719604f3d570406dd3661d8b89e293ee4fa8887cb31ea65c483034da7517db3593a73a6abb6e68f84847da4e7f1a13d048d9d06dc1fbf00e75f52fca45e284e17f95dd6b0d65e22319685f8c545d99694d7b284586bf4c52fed43a75f6977c941019a515de0be9f21769bbbe0a069bdc02632cca019760059dc2ded17909be78ef6998f5eeb89249f1ff3c9b31bb49aadb38af476efcba171164517d6fef51135a38ee0941663da74e44784cd0ab569f8846893b4f2df896f773578eb029bcbcbb8d474b2759c6da6df', 'category': 'No Parking', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2242.0, \"x\": 1419.0}, \"hi\": {\"y\": 2370.0, \"x\": 1454.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5514: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:3e264802e3d94a2401b665462bbd3f70:00110060\n",
- "Processing image 5514: timestamp=2021-05-06 21:04:38.113876+00:00, observationId=o1:3e264802e3d94a2401b665462bbd3f70:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24896561015735974, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:3e264802e3d94a2401b665462bbd3f70:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:38.113876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e264802e3d94a2401b665462bbd3f70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=36faa031a37cf574ef6cdc3609df48b5acd6b06d1bd0d2e153136636674755ed74569a5bd1af231c3a22f92de58823bd1f2873bc1e82101ce17876649d15a79f3df22d9388d91530b9a2bbcfc2fb7a22c34de1c34c931628fffbc6b7a126fbb8ae51edca564b82c67fb1db738b167b10d11c5955499635c1cb7ea7ac363a046fa035f64383db255b22c46dbe340f54abc736c6cde33b1a7310c55d7392448f688ac29772580ca3875d4250070e6d40ddd201513d1b14ff069d781063627a71c12aa43225439a1f0668ac74865c6de7a6fcf7075496a77786444b948912a3332298963fc0a45fede41a074e463bfe022ee0f106a0f6fdb069695ff0cae1e8c715', 'category': 'Other', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2511.0, \"x\": 354.0}, \"hi\": {\"y\": 2646.0, \"x\": 386.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5515: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060\n",
- "Processing image 5515: timestamp=2021-05-06 21:04:40.973854+00:00, observationId=o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a construction traffic cone with white and orange stripes. It is a warning device.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3111141498272236, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:40.973854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A520d8c2f64306fc7da31aef6d0baa9e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a1cd5562643422daeb5a43d05d2821cd5690699931a7e6e26d589556b44cf9469fe563b999ce461bd1f210dfed0dafd91531df82cf2c9d12132eb4b79c580727592c372c4f015b5ab4159cabb146afa278bf31f7e43bee627760ae31715e62dc15f1f6193658715f65f23076a99be1b50ae3a36e1b19a2930cf781d803b0f39db9e3e069893bba52a71b57004599bb9e3b901f79aeca878d1a5f2783523c4e80ffe9a5c7139b068dd2f3d0f9a8fa7c62fae93b35ab20bccfc41f26cccd061ca55c55d0613482a3565d6c5c4a28aea1caab59aa2b4ae66d436aa045054d8fdb36714da48d7dac9048797ab1b0a01f0c2a19f9b5b1f29422c2ed4b2fed7e0a9dc', 'category': 'Other', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3386.0, \"x\": 1295.0}, \"hi\": {\"y\": 3531.0, \"x\": 1339.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5516: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:c684b4170c13b85c4639ce033c5af47c:00110060\n",
- "Processing image 5516: timestamp=2021-05-06 21:04:38.113876+00:00, observationId=o1:c684b4170c13b85c4639ce033c5af47c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the objects are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2641092852542275, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:c684b4170c13b85c4639ce033c5af47c:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:38.113876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac684b4170c13b85c4639ce033c5af47c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9bbbaeb154ba201392d9a002754cf973efa2470c7af9daed76699b9e0ceeb8c88360f8d15d8389c514afc250b41ddf75bb19eee9f6d7ca6a5e24f9271b4a119b500a995dbf470240dfb73cc39252280a7f735f910923e50d615991c9c1b1da6501dd0404032d1f8f78a2a5742c383dc05e3d8997f0803efd37cc92a79a768f160121f0a90f17635926e67157117dfc2e918c0a8fd74a10c17f1c86cea76ec4155c53cb4cc08bbb3b2b022076454f891a6f343679e2851520a7d5954688c943d52cd91369370193fda721873b78cc58b37dd612c3dda7a03cc840ce4081dbd4040fee194e12c97fe6cf5e5f02be969daae6f2f20d221f8904e6b4c6ac33eb8d8a', 'category': 'Other', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3389.0, \"x\": 3423.0}, \"hi\": {\"y\": 3525.0, \"x\": 3453.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5517: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060\n",
- "Processing image 5517: timestamp=2021-05-06 21:04:40.333891+00:00, observationId=o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange and white striped traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11047308399992169, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=493, total_token_count=546) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:40.333891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae88f695b6b1fa5f7f2d29f2946f48541%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092718Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=144c8f539d4370d8d9d19e330ae7ea40c11264fbaef8dba73d5e22fd18d7cbe3fa5e2a45981c1e06c92aa244e09b86b00756187cdfbdbd78b053181205d8ab6bd367a3d16164633160ae64354a0eef4d34827f2804522e2d315a8fb6e8893ea5ffdcd08bfff8578aea8d4a4431b77285a0eb98ccc14f1112563d360d9f419b9988ab1e7b8324997741b5b0225a9ae909f8dc429a96a8788d0d6f4998fff39ba822fe993e9ebecae7faa1453143fc57f1dc986e33dd7089f5fc8e70540e84e03a277a5eaba00b3b9f31650795623171a7d8f5e04e55890548c5452ef72f0fe9306893253f1ac437975c55a56e947046cf38adb18084a025c3cee41604cac0b119', 'category': 'Other', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3441.0, \"x\": 1573.0}, \"hi\": {\"y\": 3621.0, \"x\": 1624.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5518: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:73686145b56cdfefec124e30d9949111:00110060\n",
- "Processing image 5518: timestamp=2021-05-06 21:04:41.581933+00:00, observationId=o1:73686145b56cdfefec124e30d9949111:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29229505134351325, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:73686145b56cdfefec124e30d9949111:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:41.581933+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73686145b56cdfefec124e30d9949111%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b09bf6c6f6a03be6e562efb2d94d41be74a63ee708ff0c8e80ed9e44139a881a076f840e54ac9ee8a26cf1a68fb6daabdd2ffdd190dd2698c2e42ba9b1dadb6ebf175cb1ac135d508febe9a959a7e60a99419de8629646c37a2271060c9528608191b25ff206d0726972866ea200b39efb17cd94713602cc2341e6e162ab83e862617b198ddf29fd66cfe6fb4ac281c1aa7ba3e6e689c6fd819a0d6a2ddd6c441dc5ebe73f1704a275f46821dd6c21dda3f86c5ddb72bc0a3828419e5b6b34bce9bc1695bcf3a45fc76dcdd559d125b274ccbd0c2a505358fed9a32186f818596fea2b25c44fdf3ab887084a5a53d76f6d40b348c00ec58fb803c216f1f2f8a4', 'category': 'Other', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3358.0, \"x\": 1114.0}, \"hi\": {\"y\": 3474.0, \"x\": 1150.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5519: trackId=t1:031ee910c2dca3306fa094808e502721:ffff005f, observationId=o1:97c5d8304e0f3e76b9d25730732c59be:00110060\n",
- "Processing image 5519: timestamp=2022-06-16 17:33:53.327130+00:00, observationId=o1:97c5d8304e0f3e76b9d25730732c59be:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two green street name signs. The upper sign reads \\\\\"11th AVE 550 N\\\\\" and the lower one reads \\\\\"1 ST 680 E\\\\\", indicating a street intersection in Salt Lake City.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22736782723284782, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=2557, total_token_count=2651) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031ee910c2dca3306fa094808e502721:ffff005f', 'observationId': 'o1:97c5d8304e0f3e76b9d25730732c59be:00110060', 'geographic_point': 'POINT(-111.871481096179 40.7820102953996)', 'mapsURL': 'https://maps.google.com/?q=40.782010,-111.871481', 'captureTimestamp': '2022-06-16T17:33:53.327130+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97c5d8304e0f3e76b9d25730732c59be%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81c068cea077be054aeb1a9f1bb6fba99f1ab8672f43a562952a638b14a1be47b09e71a920e4a655abbe827b1a2f7902d1ecafe1e94d697941f0bcc4edfb61d9ff02753a18f1ed96e42f9bf5ce29a8198920c24917923954a1e4e122a0bfc2af38cd39ec348798068f6aa9c426a9194411a510388ecdec76d26f450652098c804d2d16ef5704f06ef873f51891026578d79af9194660e6fd17177237a81ecae2cd57ba818ba4b304b679b958fcb58073244210a3717116c26c3ee6d86f5732bf6ba51fc3d87e29e3fa2ed7f8b995471d50d35d6d6b03329707fbcf2e353a03c35b8a33e7e6f3bb2f158f046998366297e067771c04a312d25c53321ea2a6730f', 'category': 'Street name', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1916.0, \"x\": 3060.0}, \"hi\": {\"y\": 2038.0, \"x\": 3386.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5520: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:0d041396d96bd429debf5041e69044eb:00110060\n",
- "Processing image 5520: timestamp=2024-01-24 17:32:50.328924+00:00, observationId=o1:0d041396d96bd429debf5041e69044eb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign says \\'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited\\'. It appears to be a prohibition sign for certain types of vehicles or users.\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the text on the sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2737287621749075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:0d041396d96bd429debf5041e69044eb:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.328924+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d041396d96bd429debf5041e69044eb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=46191b7690e0dfd9f668859d5bc2708813c5a669b7705d541b7121fc9bf6e0daa6afbe5f8d7c16773401ded78bd87e4ff41852e76d6aae1d79f450b547cfa28342b57afe97c2b2bbee8c6f064ea17a5d72aede950523b76a7629e9f8103f01af48267c35092d51faa0d812856ba3f5e1cf4369a26b7fe2d80d28d5a70748ee52d178306a1235634fa1b28f458b5bffd8bc7de7cda2d68fc34afe5f576570ecd7bd8f744b6016eb77b2c3f8a84fc0b097bc2b910fa059bb5f20b8970f40d3c2504150f087f64c94ec6d1eaba27fe6df565b90d825b30a96f99ac5efecfa164f997981ef64596cd098a6f4de32654b96d1b14e672f9ac8775162213d99357a194b', 'category': 'Other', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3085.0, \"x\": 3375.0}, \"hi\": {\"y\": 3277.0, \"x\": 3453.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5521: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:e2e95553cd58c1a222b8633784d40988:00110060\n",
- "Processing image 5521: timestamp=2024-01-24 17:32:50.328924+00:00, observationId=o1:e2e95553cd58c1a222b8633784d40988:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign stating \\'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED\\'\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15477224806664694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:e2e95553cd58c1a222b8633784d40988:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.328924+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2e95553cd58c1a222b8633784d40988%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091141Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8a339fc597783a2d03f25554d49b7a71326de144addec286a9cf2edbe18a2a03ae0f9be39738580de494bee45e0feec01b6721e89cb1a10fc0e86a3fb0be21522a195c1f5ef07ffa4635497f57367be98584c399e9ac81278d4e5ecd8e2ee00a90af6fe2bb4647c2f1de09d145e6ce703640f4ec2bd140e65d8007d67e39d71c1fd9cefcfd7c8da0da1a8441f87b26665d73ab7f4fd85873fbee94ebb4dc9b0b30211e6e1aed697fa53601ecc332065cf5cc978d9445e1192c3320b67ddd4abeae38f23d59f861d12961643ac813c2f9c4a24d0920588eab55b5be6de9e1d9a9b3696e980b90c8470f561300ec7ffdabacc67d610333f9ac4051f89a1c487186', 'category': 'Other', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2211.0, \"x\": 324.0}, \"hi\": {\"y\": 2404.0, \"x\": 403.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5522: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:efa0b83c12a2d0774e36262cd54395fd:00110060\n",
- "Processing image 5522: timestamp=2024-01-24 17:32:50.948881+00:00, observationId=o1:efa0b83c12a2d0774e36262cd54395fd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign states \\'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED\\'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19213235257851957, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2557, total_token_count=2656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:efa0b83c12a2d0774e36262cd54395fd:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.948881+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aefa0b83c12a2d0774e36262cd54395fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67f288f2570cecf1409f84d5ff46572d7dae9ac98649ce4013a7f0020f52bee5fc1bdcc5e5d419f9224109f9fed6ba72148a88264a34878ebff4c17be681c396e651b892d165f0261bbad8cf907522eae13d64c0bde4fe63abdd346a534fd320cd5bdfe3f9a6af0bf42e6322787ab36a23fd75e3f008e1ad9723ca6e904a38b4cbd35725833d52c0273f957092704c40ea9ae55b92f76c7604cd1ad41333f88373e2feafa2f4f6ec72208707b45416230f79ffc9bfd5511763626a0c44e8c237cdc7189b59fa9035287c521129bca6aefda11e873bb1c26dffd06cc3eb86f708f38a4bfd629d3b1a942057c20e103c8e1d04e9ec8b7dd8d8302fa8195c408410', 'category': 'Other', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3138.0, \"x\": 2517.0}, \"hi\": {\"y\": 3294.0, \"x\": 2615.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5523: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:3a4555b802f6aeefcbd1550f172688b6:00110060\n",
- "Processing image 5523: timestamp=2021-02-04 15:42:45.268601+00:00, observationId=o1:3a4555b802f6aeefcbd1550f172688b6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04097314614516038, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:3a4555b802f6aeefcbd1550f172688b6:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2021-02-04T15:42:45.268601+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a4555b802f6aeefcbd1550f172688b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8c192f28e113f95a36643bdd66f95b754e70c0922ad19cb67fa2970f3f9b7ce326bc5a45d6a4b2c19e4127c89097ea081909b4b687cded0be164332ebcd1e6915a264ec8dc4b120da6c0cdae6aac60c3a4c2fb89e0af51aec212e2c48d08e8262b1ff863d00a6c72072bcad52d2f7ba08798d25ec0745f7a1fcda27a1c2a367acf33d261b5856714e26314ffd76bd2c56db351c0322e3fe50297ed9e86a2536555ba0f2c12465b840e7a6c6135766611593d2e64627064c6556af3a3b8a0acf7890021e0d8aba4c59cfa6529b356ee616c86ddcb1fea7180a4bcb364b912cc5d3e8251201fb129d10c05b064dd604f50430b3ad3a26e0ffff5e173778fadbfa1', 'category': 'Other', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3032.0, \"x\": 2504.0}, \"hi\": {\"y\": 3301.0, \"x\": 2694.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5524: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060\n",
- "Processing image 5524: timestamp=2021-02-04 15:42:44.296659+00:00, observationId=o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The sign is blurry and it\\'s hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\",\\n \"image_quality_notes\": \"The image is blurry, making it difficult to determine the exact type of sign. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5734641033670177, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3589, total_token_count=3681) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. '}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. '}\n",
- "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2021-02-04T15:42:44.296659+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A74e0e9ef6cdc215696fe12b6f42206bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f74bdbb2a4e6588f8426889b82c90df963b9d633e34bfd3601b2e570d6de2073f5bb5f7ca2df17fd32aaf9bf1f0f6991e4f90e49eae2a778ad1b2c2e4b17bf1dc5a57609aa22c5ced967a51d65306c45451e9be2ebc5b33cc627df560ef71cf491eddbde8a521b03c116fae19d3b555c175e3412117bda4ae03d19fd236234b1662efd5258634ba5238667a546344894931691aaf3fb6cf845540a2a9e3c067fee63d1255667ef25f7af98d9c08c371487cbb87cf941a4be1e651fe642f416a9ac09d7594dce2ae6081f901a2d71f75658a75fdfc2434b31ce2244cb67a365ce447a4f36d386255cb77a6c5df2183293a09fbfc770429d4a228bc83df4ff4b1', 'category': 'Other', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. ', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 1996.0, \"x\": 1521.0}, \"hi\": {\"y\": 2369.0, \"x\": 1569.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5525: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:ad8981d4af5026722a3cf34548028f86:00110060\n",
- "Processing image 5525: timestamp=2019-06-05 16:28:32.850415+00:00, observationId=o1:ad8981d4af5026722a3cf34548028f86:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2438055185171274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:ad8981d4af5026722a3cf34548028f86:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:32.850415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aad8981d4af5026722a3cf34548028f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=40f7b4220f70a0aaec335853c499fe08b501cdedee2ae7e0de66d0b3eb3b59a59ab043d4e8de29940538e37f38876ec90517ac3e1f72b53c2c0a6a72b166f0aae9826eed5f0bfe9e908f3c8deeeac4b7a75e5acbb6b7204480d6dad90ab53a4c56b0cff7a33c288c3eb6565c1a9054a78bd9297c084632913cdbeff20cec96e4a6fa24dde3c9820f3f731c2a25c88876440316c70c26984baed5a0cf2bfbb74bcb7084f1241ee0882f10538e333def457d3ac0a0263c39dba43ea249387cdf7790747543760c6f8c2ce595ed6243a816c3e89b349ac7c4ab4ec36116fc9e6f52f9faa9fe16284a0ab9c10ad1e4bc6dc62cb60ea81c8ad9addef052dbac98d78c', 'category': 'Other', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3344.0, \"x\": 2266.0}, \"hi\": {\"y\": 3519.0, \"x\": 2489.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5526: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:f6f1dd0b520079a981490edcebe04113:00110060\n",
- "Processing image 5526: timestamp=2019-06-05 16:28:32.226357+00:00, observationId=o1:f6f1dd0b520079a981490edcebe04113:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange diamond sign with two black arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15347722481037007, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:f6f1dd0b520079a981490edcebe04113:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:32.226357+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af6f1dd0b520079a981490edcebe04113%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92f786fe783366b517ee863720f1a50ccd643335353aa54116a4dcdf4ebce5822b438b4379ad7093f7fe7e978aabe3ccee27e0f5782c01014f8a0675d14d99217b8b2b183c00dcfa0a4add56edad1a579ab711223edce910010bfaf6107cf2d53b918abd02d0063882e1b621312c5a10c6b32ca00ca53eab4b80733b49ec59c44019b61cb6e949ba93111ebd2d2cce6303740fd6d904c931981ae322f7d6d840536056459895b978ad6daef784beafc2bdf8ed1b18b57ef027655dbd09612f0068ca45602ab3a1ea06c51c50aaccf8d3df546d3b4f54aace691f5071e2e64892373cb359c48174b1cceb10f852d425d077a820aacb4ff5580e575e02be716503', 'category': 'Turn', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3299.0, \"x\": 2605.0}, \"hi\": {\"y\": 3467.0, \"x\": 2763.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5527: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:5963e8c940edf71e98103f2689c2e741:00110060\n",
- "Processing image 5527: timestamp=2019-06-05 16:25:50.924378+00:00, observationId=o1:5963e8c940edf71e98103f2689c2e741:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31980435848236083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:5963e8c940edf71e98103f2689c2e741:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:25:50.924378+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5963e8c940edf71e98103f2689c2e741%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a51ec90cc176779c7eb9ae853418e22b6403739ad98b05eb6a29eec812ada46f348d864700cc2d6ec365b7c17f02f9cd8dad6facfe163b5dffc79e4e20a9b0409715bb89789dcfcb9130138e497d4c909be47e48692a8fb0316609830ff4d6d4ae1a9b66b6ca97459b10e32c3e3ed8d2a4abdaa462cdb8b76cbfdd9a3f75f70b0497e8c222492ac03337d2f6bf14413785f041beed248457644ffedcef96aaf722b4fd9e881cbbc6a6edc6dae269557923c1f978872a354b328e4d6f7334bff7791236f5afdde8cd468fcca5a92efb5fadebaa62123904e3b8a59258d8a14ff6370a6144a1586f1144652e39c751496ce04bb21c86af9d8d8cb76d4363d6baf6', 'category': 'Other', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3342.0, \"x\": 2250.0}, \"hi\": {\"y\": 3588.0, \"x\": 2495.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5528: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:77306bb569517a6c87ab51e75ee509d4:00110060\n",
- "Processing image 5528: timestamp=2019-06-05 16:28:33.486327+00:00, observationId=o1:77306bb569517a6c87ab51e75ee509d4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17203687521127553, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:77306bb569517a6c87ab51e75ee509d4:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:33.486327+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77306bb569517a6c87ab51e75ee509d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b603a2be9e36539e6104dc5b2df7e8831c317d8a2303ab6b1cb02c3a136e51fba496641a28a5dfcb698fb9912e0795c3ea241dcbbf117d33742ce1f5b0f551450c401e6a415399c717bdfb9a35348106c50f1cf029316a24ef9de2718897ae33d81382825a1ed610546eedb26badd20f476c707ce88b44548cbd9b1caaa2cbee6b4881476089d14fe3011120f942f2283c7d4d454f585bf4370f42ec34bf4771506940b1909b6f0eba355a029321c52359753ed0dcd4444d5b0b6e06929af5ec6d2001229a130d0804836c77a74b88b4bb71d6593382d8172e5c6774f18cf823603e2690b78f9d83b38713fed807d0c418100e553317b4eef3a88b93929197b0', 'category': 'Other', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3442.0, \"x\": 1403.0}, \"hi\": {\"y\": 3831.0, \"x\": 1739.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5529: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:7b615ef57579718526589c6c232129bd:00110060\n",
- "Processing image 5529: timestamp=2019-06-05 16:25:51.476361+00:00, observationId=o1:7b615ef57579718526589c6c232129bd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35669874843162824, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=1525, total_token_count=1604) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:7b615ef57579718526589c6c232129bd:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:25:51.476361+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7b615ef57579718526589c6c232129bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=208e60d0cee4314d01c9a0c1c5e9501c02b48f910d0ee6194241a233327286fc8cebe529f8be7531c84bb4b1fc3c4f0cbf916c1841f1a6486995cf21b49f9733220c5e35103e421c30b2ccb88f054eb041e30cacc90cc247d4af0a963cf2685466caf9a38983b02e01e478512fa46f31fa2f0116f11ff0dc13abdd35d6d5f69717f48f100149a2e5d76082e804e8343844975fe555dbbbee1ed04c59534e48b2a3168f66268c41a2ef7a8a1b9b4c9524424893bb259fb160482a998ab45b094e440c2c49d6b4b65e8c66a50d404d181ab3b17e52db402c90aa09de5bac008a94ce5d09a85c8a43bf5a254fa0f873e1c31b5dcd072ac9518bf47c90304b28763b', 'category': 'Other', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 1316.0}, \"hi\": {\"y\": 3862.0, \"x\": 1679.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5530: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060\n",
- "Processing image 5530: timestamp=2022-09-13 15:57:42.085431+00:00, observationId=o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign clearly indicates the street names \\'Lowry Ave\\' with a direction arrow and \\'Crystal Lake\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16431045532226562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2022-09-13T15:57:42.085431+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7566f6c30baa40c9530dd7b9bd275e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c5fa4a3c4bfa5c88d7efede67a33b0ad6b6478f244d09156a4b9bcd9a1aed6056d6180d4d3d254f67b6db012bef4cdb8e72355aefcc31ef3317c82d5991d65cb293cab65d3eec03ace84f0ee654a42ff059c26faee4f501f7f8fd3948bb41f842aa44f0d80eadcfa8301e072dddb2c74ed2d680c6aebe94886ad512bbd2faf21ee162c88087842797711c9f8b66e4425ad5d01d2885270e3e1bb7001d4666b80a8fa82c68d060e6000e61e141595260c29be77bef21e63345d4e3171f73f90577bb291d5b4dbf816f55960432958448cfb4fe40c0c778399bb8748a2b5a9f64529dbdfdadfc39af02fae805339176b87e9cde0070d179c7dc6d36c696f3c6c5', 'category': 'Street name', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3072.0, \"x\": 1379.0}, \"hi\": {\"y\": 3108.0, \"x\": 1500.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5531: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060\n",
- "Processing image 5531: timestamp=2024-02-02 15:48:02.241206+00:00, observationId=o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows street names \\'Lowry Av\\' and \\'S Crystal Lake Dr\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17014290392398834, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-02-02T15:48:02.241206+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4dedf23eaf69e3fbc0e6ad6d7358c534%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0068d6361359e10bca42f2d7b773ef134ea91a4ba0b99967a233d9fa7a3a47ae0556b897591611ba8af1c2650949f7d87b5fc9736b90136104e0e8def4f56cb97e3d67172614a52077d116ba22bb6d48b6299c9afb46a383dddf31b832ee1c961228ec3694166b66446a96d4b6782cfd7ca552e8ddcb368cf4b3696b7cf24ecd677c7c92fc9055e69293cbae2c36bdf60e8e66dbb8145a733f9a269b9bdc59a96f5dac21f1506d9938d000cb9f529280323fdc79daa79d4d472422f07508083d054947312a45d78d11b5202fb60e9b660baeaae6c59ddbf97bf26c3d6748d71e1dff5b4b51338b66f244674e6c8b61b1df1a2a1befec50c12622bf197ab55f76', 'category': 'Street name', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2969.0, \"x\": 899.0}, \"hi\": {\"y\": 3052.0, \"x\": 1053.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5532: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:87a906101211edd3e107b27adc862eba:00110060\n",
- "Processing image 5532: timestamp=2024-01-31 19:21:03.918435+00:00, observationId=o1:87a906101211edd3e107b27adc862eba:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two green street name signs. The top sign reads \\\\\"Lowry Av\\\\\" with a right-pointing arrow. The bottom sign reads \\\\\"S Crystal Lake Dr\\\\\" with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"The image is a little blurry, but the signs are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28336850561276833, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2041, total_token_count=2140) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:87a906101211edd3e107b27adc862eba:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-01-31T19:21:03.918435+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87a906101211edd3e107b27adc862eba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ad162557fae1126ef97881ce614fd27958e448c532b269d1b7e8a76a78ab8ea888b5ed6e01d936e637bbee139c54c7b568f60959be4245c4160067ec826c6b63d4221aff1cbb78794a0e6c351f7a4255939db92a6cb7140dbeb9232607dd71ef52500ffe0d4b7830d7aad5af26ea16039daa31aabcc92986a7329faa61f1ff82725418be2f69a805eb804b97c53974154f065a0eb4f925b7e03071796bfbb216a3f23c0a3c5dd587a91f99cae58961f3f4d93dab04a347ff1083d25caf31dc9bd9e2e2261a0128624d1aa47ad1b1528d355e410d05775ba7c5c7bd9ed796689d59c7654fe7d552e19e34b83ba46c77faddbc60506459a09b15b125ea7ef4ef2e', 'category': 'Street name', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3104.0, \"x\": 2318.0}, \"hi\": {\"y\": 3148.0, \"x\": 2436.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5533: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:f1b47d3e3542845bc9c08a29421b39ec:00110060\n",
- "Processing image 5533: timestamp=2024-02-02 15:47:56.277206+00:00, observationId=o1:f1b47d3e3542845bc9c08a29421b39ec:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white letters is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09917433787200411, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:f1b47d3e3542845bc9c08a29421b39ec:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-02-02T15:47:56.277206+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1b47d3e3542845bc9c08a29421b39ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2f652a0e97ec00a28b56d2ba63846b05dd783b57c4a8eea8198c76b90eac970556e356d93a899925e171ed5a7c143b487d87831e155b3c71a51db294d4472c5a77b49cfb44a33a653782e000055408d99d1ff5ce25986641c6c6c382787c9b2e31486a6ee47f74a51e4c6a9ed2899719d422f06c54440e3bf172ad571f733498e6061d98aac34d6531303760c79980cb1829bfb262bd7129f1bd08dbaab26c2145a08bad5190d5fc08fd7d12beacbb43b6ce0b6a8289f8add73681a0b7c1869054d9d3ed25e58e15dadb214879adeb7be55d70fcc723ecc628d731a3db9adf47a7eccff23e128a18bc91327a3c177ec2da8a316619a20b5f10e4966db6f08f89', 'category': 'Stop', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1514.0, \"x\": 397.0}, \"hi\": {\"y\": 1761.0, \"x\": 1153.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5534: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:152b8b983a1742b9b6cad06e15a761b8:00110060\n",
- "Processing image 5534: timestamp=2011-05-04 15:29:56.827666+00:00, observationId=o1:152b8b983a1742b9b6cad06e15a761b8:00110060\n",
- " Error processing image 5534: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A152b8b983a1742b9b6cad06e15a761b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=24553c21f1a5111bf5974805bede540df4948cabb88656fe952fde3f45a348a8eccefc85f35ca995427670191de3cef817b702dac8824d51898f4887b5935ccd564d0b7589f85d88fc4f9efd1c19685340427dcaa8fe4de94b0b7793a0bdb3d6699c0a5fad916eb37e108e3009bcb711ca28f324ec0becf51ca016edd0dd80efb24a104e90cd1c1ec6fe8627137a1156ec59e43c00ba856db56f122f454b90f3a6e2294f174d5ca8c60a840c5d1b38d37e39088878aafb67080e5c3225603cff3d1d9c058613b20ae6eec9e98189bba549cc927273c1c68b1b2c02b441228627cc7ee92dd583456cbc41d1f387336e963543b9a41034566d5b42e6181c237cb9\n",
- "Processing image 5535: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060\n",
- "Processing image 5535: timestamp=2024-02-08 20:48:37.350980+00:00, observationId=o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4327173011247502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:37.350980+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b60adfcacb17dd4e1a8e6ca2ce9ec64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=361f43ac5850c24396f822c05a475ca54d3be9e08c019b34bf0a15413c0175bc95ecb1e1faa64fb13959dd25ad4570a7afdd276daf3b43d847978e0d3c2667276ddc9ee6c9699345b581beea85a63969d384ab99d67924d2237106fb25d5e5dfab51f0a454e4416b2c1f566dc2b13962041a613ad0b8b8eeb4a4e798d001bdf195de0fc01c4dd9a55414f5615d46f5eb3794a11d109bd27bac297a8a2886097b40ca2b90fc44ca07081d1b7a6e9a57eecea313c7ea6932d754b422597f9b5f5bd59f308d92dc3c466d192a33c889d6cdb2fdbab275365efd9c89f8fc36a719bc66b2038384c47b9e6ff7e67cc6e139d077d97ea94544696de34837fed2fb87d0', 'category': 'Speed Limit', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3305.0, \"x\": 2093.0}, \"hi\": {\"y\": 3447.0, \"x\": 2208.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5536: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:2d2c103c68784b05af6cb0d0d51729b5:00110060\n",
- "Processing image 5536: timestamp=2024-02-08 20:48:39.679473+00:00, observationId=o1:2d2c103c68784b05af6cb0d0d51729b5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.\",\\n \"image_quality_notes\": \"The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36166793308900985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:2d2c103c68784b05af6cb0d0d51729b5:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:39.679473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d2c103c68784b05af6cb0d0d51729b5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc6c896cce2d4d4de4c7c0cee012cabf60eeebdcd1afc1d161923e562d0f50d241100bc37bdfa6bdda2fd64ff5b2de6493814d70f4fb882a1eec98f4f2dc2e030826c8b63379db6e89a8fdba5d27bf9c729593eef47df715c3f4063cbe6731ef306d460de68f764ab10c855f2508de069b320b0699f98737e99423a86ef185c053f1384d1cd911640bc2009f0062342393baa698fe4890d1011503fe544ebe22056706863bf99e5b0494616094f760ad93ddac8ac790f8474e5cec298936c55491561658af1e0716ef410fedcfe59a4d74c7b5bf8f11c6ab407ecf855b4358f1ca52ad7f0d3af6873a9e59f2c0848520f541f4c2a27dfff7382a4de9085b285e', 'category': 'Other', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3255.0, \"x\": 907.0}, \"hi\": {\"y\": 3316.0, \"x\": 966.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5537: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:4cf38220015e74e72188d8932f424d55:00110060\n",
- "Processing image 5537: timestamp=2024-02-08 20:48:36.139414+00:00, observationId=o1:4cf38220015e74e72188d8932f424d55:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The signs show a \\'Speed Hump\\' warning above a speed limit of \\'10 M.P.H.\\' and a \\'No Parking\\' sign below. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19991182979149155, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:4cf38220015e74e72188d8932f424d55:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:36.139414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4cf38220015e74e72188d8932f424d55%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3381c64b9c3823dc34aa793b6d7efedced8ecc2006ad98a902c5d4d2051da20888083ce15bec7731a92718bb2867c61efec6cd6d60e72cebf9bd236c6b20d288c560bfd3ce3470bb91b2aad6b33642a3b127f01d15565a7b6a1904ae78f5765844b3e534cc057b431e9b2061575174aa5020e5f12adec57d433543f7e067f341194e1f10c3781539b743673dc5997340231690c28ff28a8a9fbb98c6dbda8877119b366613ae48dec395089840db03962c78d209937914360f033d58c6c2bba48af8f463bf132d2af494fc59df0608d175845947c7e0a6a7033f26f0ec32f7e61a0500a798aa2e09ee9790fa71d3614309f9c64bea37d44443185e70b806f3b7', 'category': 'Other', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2438.0, \"x\": 795.0}, \"hi\": {\"y\": 2682.0, \"x\": 880.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5538: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060\n",
- "Processing image 5538: timestamp=2024-02-08 20:48:38.251389+00:00, observationId=o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a speed hump ahead. The diamond-shaped sign says \\'SPEED HUMP.\\' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3140508211576022, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:38.251389+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af09dbef8e41d58f2847fdf0620f3c8a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b95f728b23deccfe3c004ba25c2ce461be9e2aa014b5786d721807d8bc208b85e3907d37d9e67d91cf2e42d26e3e7c90d52920b771390c40369f357851041dd7df4e5e06474b5bfc1636e768fdec9374f087e96e8f599452dc8aaf9c2ab856c6ac635b29f3d078b96b3b77552fb6a4895fd88979d23563fb875e091095cd341244de558fec2c444f7d427d03ed189c84c839ab72c2119878eaf3c59eeb81f286a625cce295bc4f2a9486fc1cb2bb5581e74a0a0d52e6dad5ccb32271d010dc98a80049f63592b05330ff2d4061a62f92770642da21dbfa8da332b2c8396ab5f72ce52936308998600a1d6d32e9096ac5993971776703a31e49dd40ea3532562', 'category': 'Other', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3286.0, \"x\": 1426.0}, \"hi\": {\"y\": 3383.0, \"x\": 1517.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5539: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060\n",
- "Processing image 5539: timestamp=2024-02-08 20:48:39.011400+00:00, observationId=o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with the words \\\\\"SPEED HUMP\\\\\" and a rectangular sign below it indicating \\\\\"10 MPH\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17311082567487443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2041, total_token_count=2118) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:39.011400+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3c92a315d13ac11eec0bfeae794e5a1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9c63d15ed6bf7f2eb67855b2832825fec8453bb5e1055b6e0d05ff93aacb8c817b8036d5169ecd67016ac87b9538aa0c47cf0bbbc21529696f89100b0416d9e30eede4c7ad46364717cd0999beab2994264d42d4aa82f39988134b28b87d56fc242c75f7fca50ad58e3c2b583b53fe0a098655bdf253db372be2d2e015399c85796fd285919422aac5295865d4dfc6fe8e8504cdbfa6b9d26f186a0b3627493c0cb9485caaf5e84ea56647d929f6fa9434c5b94fa1039d5ea1e1b3675e337d5a85d7bbbe1a2c83814d617b7af7ef27018ffba6d4dfc545e573e358057f1458fa83d1a75cfacc1e513436cba345a554ed3282b802287a8134b7926dad935437f2', 'category': 'Other', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3272.0, \"x\": 1089.0}, \"hi\": {\"y\": 3346.0, \"x\": 1162.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5540: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:b15eedb4aa07358e5fb07b3f72660716:00110060\n",
- "Processing image 5540: timestamp=2021-11-30 22:47:21.130464+00:00, observationId=o1:b15eedb4aa07358e5fb07b3f72660716:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" written in white is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.05594087764620781, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:b15eedb4aa07358e5fb07b3f72660716:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-11-30T22:47:21.130464+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab15eedb4aa07358e5fb07b3f72660716%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091415Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a01b4517e7bef27442ce7533d815b19f6c5f84404683ac30bee7ec7370ef5df1dc1cd2e82b97b8fdd5b229d97dda976bbe05588e6a67aedd166b63f66454d5535700b3775d1cd474012616b135761c75082e9b3d8d9881c2d1734f7c9c811676e08860e2a7bc8337a9e54c3bc0270b901dba972991a3de0cc4fbbba0a2d9a5c9b55cf1387eb6f1e445a92dd3454a21d75b154d0abb8aa382abfb6cde109feb90e2035eee2e155ce1e162d111f8e3694bc6c509bb034a903c0700c19e798747ed50d2460f302bdd4172947f9c97b1bb883fdfc159534624ac6829249865f667e7b82657f6e4668e387483b1160adac2d0d2b019d17866358f37dc3f7dd36193df', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3133.0, \"x\": 756.0}, \"hi\": {\"y\": 3189.0, \"x\": 810.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5541: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060\n",
- "Processing image 5541: timestamp=2021-12-01 20:01:16.299339+00:00, observationId=o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters is visible. The sign has an \\\\\"ALL WAY\\\\\" sign underneath it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1878079991591604, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-12-01T20:01:16.299339+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1ecd4cfab6c483e4743c5eeca2266b5c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=59045f298eeb80ee46d1c1012d0ae55fcc44629bfbb0b2f83cbeb36899787feef1a07b26ed691887bfb6036596aaa59ab1045de334f0f4f4eaf299c7a96893a472d73bb501a8bf781499911c4fbcf7d9e56c06b19a8d35d809092c2527a62a7a156096feed5f5a26c2f234a9a83691100a85bba97b28ae4db4061eceec96b8c2c67159bec8c67ac3f39515f565190c3ab30fc64a40da2b67b1627b12cdc627dded0cd92aa778b03209e7baff64c84c58f58d55e09f1a947123018f7c8e14f098b1381d85d243eb1c2743d0e7b8436c4e460798a280109d3430c5dd703da60e13a438731bdbcd6e228c072728a9ca1f4da65fd057ab097ea0f95917a751985470', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3071.0, \"x\": 3294.0}, \"hi\": {\"y\": 3268.0, \"x\": 3411.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5542: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:a509c6e4f7234af8feadad6c2511c2ce:00110060\n",
- "Processing image 5542: timestamp=2022-10-07 20:31:26.402678+00:00, observationId=o1:a509c6e4f7234af8feadad6c2511c2ce:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal sign with the letters \\'STOP\\' is partially visible through foliage. \",\\n \"image_quality_notes\": \"Image quality is fair; sign is partially obscured by foliage.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2447569105360243, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.'}\n",
- "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:a509c6e4f7234af8feadad6c2511c2ce:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2022-10-07T20:31:26.402678+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa509c6e4f7234af8feadad6c2511c2ce%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3ecbf32bbc2bd5fa6ba91a7d02799537be3dd3941655e51bf4133d0114865809b1b80d043c6705dcdac1246c7adaf36288576d261e2f800fc71b897643678ab8785fb3ecd8c7b1f2af0ee54d4f2f0cb06155269a5213e25cda4874291a96b2987bea183a17bccec0579bc8050204b1f7b022b17b60621f9825bb594ef6411bef67619cef7b32c0b9b728679e86b8e46c254ba75e4c5c1dc9fdefba187a85de92494f7b8eb6458652ebb63e28c26a7c0b327822e1d3aabb99b2a2ebef10a261c264d71713003b721f3adc8066ce6285373719877959e896a85690165ce19c0848ccf804853f6b707e8181809e86a30d5a3a10a1c852e7d468164741ade3b85613', 'category': 'Stop', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3129.0, \"x\": 617.0}, \"hi\": {\"y\": 3175.0, \"x\": 650.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5543: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:34d559c440c4678c224550793d2ea541:00110060\n",
- "Processing image 5543: timestamp=2022-07-01 19:51:04.346130+00:00, observationId=o1:34d559c440c4678c224550793d2ea541:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"The image has moderate clarity, but the sign is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2689192295074463, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:34d559c440c4678c224550793d2ea541:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2022-07-01T19:51:04.346130+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34d559c440c4678c224550793d2ea541%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ea9a7bea644f017f35bef8adbfaa95676f4bce812906f3c54219cf04dff9c36c3a6753db5fe7e4d7d11a39a243d5487aa26211f51011c30c2807fb85ae810927a671e497d073d02dfda762f9b31cf8797606271c1ed0cb612e9a503b0931621997a8254e03d87968dff2101efcc14aaf77750b8eb92776d05df639dd0ceca420afb739107e2ac91638f330c216de6d214d6ad434365af6a7c105b795a956fea4d234247f385fd2cf5e89f23fd9f46b8db30edb98df858b3031f89a03ba0887b737d7a1024c0799c95ec502440504d2d63fd464d159389fd6cf47c3d4542fd5f700009da21428b08463e5cbc7736e13700a7a876aebeb0ed720efed22641b3a6', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2254.0, \"x\": 869.0}, \"hi\": {\"y\": 2293.0, \"x\": 910.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5544: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:33fc91b1542463e5832721ca43534384:00110060\n",
- "Processing image 5544: timestamp=2021-12-01 20:01:25.659302+00:00, observationId=o1:33fc91b1542463e5832721ca43534384:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03475111084324973, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:33fc91b1542463e5832721ca43534384:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-12-01T20:01:25.659302+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A33fc91b1542463e5832721ca43534384%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae77d16efc9e2c168fb45ae9febde806cdcd01d9364a8e0402c127af8aa6b8724388f15cbbaf4da73c93d97a63411dde5118ed1c79440e3ef6716a5a74a6e5b681ba977bccda34cb17c19dadd87af67dde38eb87a8c09f01cfec55b1a4b8144b11187f36afbe315940d20242fc5b15cbd116a82edc29390fc0fddfe6d7d1fe2d5f30fb73ee5649c00c016c20fbfeadb06b1290ad96d916a4bb019b94f5cd638c127147724fd8a7c0daa135e1b9fdb443331dd20aea87cacb2286e3b0b8e046eeca21173df0e0beef0675d37f7642aacfef4e2855cecf2b97cd5e32914a03c9a362d2186a906fbd766960a475cac5b48b63a10b420da395eb1e5be94632f6dba3', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2217.0, \"x\": 1120.0}, \"hi\": {\"y\": 2256.0, \"x\": 1158.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5545: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:518403302b091e3951a19a8442e41eec:00110060\n",
- "Processing image 5545: timestamp=2023-12-19 17:08:14.657353+00:00, observationId=o1:518403302b091e3951a19a8442e41eec:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'Wabash Ave S\\'. There is also another street sign above it that reads \\'Old Tampa\\' \",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22897410074869792, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=3073, total_token_count=3148) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:518403302b091e3951a19a8442e41eec:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2023-12-19T17:08:14.657353+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518403302b091e3951a19a8442e41eec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=222143ac2816d527c71905c7df35851843c096aee8040b9bb256b2445a831a89eb05ee93b1a99bd12b7211e9a49c4299e22e624af21df8e23bb445867f618ac76b9080854d7ae34baacac135763741b413fed27a4d93e54de5ba3c9a8474f7d99605cae860f30a0cf50848a61a79bbf7acf48fe30f7786f7a0e25cd0118f5dd8a9fd121152f5af284809ed29aa314155cfefb915ec5121232772c34b5b9bb44b9daf3de91f7d0b5f0bef0f1b93ee12862154a293bbc608c6678ad929f9eda730fa7ab376cdcd67fded23917efdbb0394dfd70a592d0289259f513def08e3216099ef9e4b4b59ec60f047bed91f947003e290b7cab0fa0cdd931cbdcfa995e915', 'category': 'Street name', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2078.0, \"x\": 1018.0}, \"hi\": {\"y\": 2187.0, \"x\": 1110.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5546: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060\n",
- "Processing image 5546: timestamp=2024-01-24 15:00:32.249410+00:00, observationId=o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays \\'Wabash Ave S\\' and \\'Tangier St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23539544641971588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-24T15:00:32.249410+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A05ac30aba0cdd2a7b26330fc59a7a2e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e556b53a57a8e7cad1adc8b6f6c8cabc1ecc91a7da10bd4cb7e9a94b779e4c78d08075d1aa607aba5ed8ce01b41a5a06f776b12170abef217dd794ce51ee2ecd46822fef66fc765d0ee5668838d3fdec5a27b2e28aca0f8d76e804ad914f183a531fe29bfd71ff28c4c98562755cee8b58cbdc1249d127f9a1ef9a0810bdaf8f005f5613eab7ae6d5d7888a6aa0c8d09f470394fd6527fb9ef6ac32dc9cc9cba1caec76775c3e4b9ba48ac4bd8c6ab95ee81527005533c0cccf441eb1e23b23ebe001b0256bd09a49f97a9c2b6e49f665b3958932f9e99e86bb61a4f2f9ebd337a12959b6b0737530e059f6066ff61b6421416887f6b3aaf4e213112b8a7de4', 'category': 'Street name', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3231.0, \"x\": 2672.0}, \"hi\": {\"y\": 3257.0, \"x\": 2755.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5547: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:59b5a70632efea208a96e212af2d3c9b:00110060\n",
- "Processing image 5547: timestamp=2024-01-17 19:29:05.323505+00:00, observationId=o1:59b5a70632efea208a96e212af2d3c9b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Old Tampa Hwy\\' and \\'Wabash Ave S\\'. The sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1881484587987264, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3589, total_token_count=3661) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:59b5a70632efea208a96e212af2d3c9b:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-17T19:29:05.323505+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A59b5a70632efea208a96e212af2d3c9b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ee2d41e84e02e10465cc35b9072fc69d6f1126c8984e6bd5fa1640207952eb94d83fe17b08fab5b4959ad81899ed44039389791f83aa5228efb94918f1c73c6969f38ea7aa0508c6802ff44d796053dff08df1730779051fa82f7bfe56c1c9e04a44fbd49adcb6083ea61f8521d67a0f76be323925dff20aec473ca9fcbef30bdf0ec05c02e7c31d7d773aff4f23edb96f6d49d25e82ef808443b578a5b0bc99a98d6c972b860cce76df9ba419779dadb91747302ca33d86a6991c602a81079be74931ecbe655d7dedf71bdd5a75d52ea8292cc0d9ae7ada151621b435b8fe308cd4a20d3fc47bc9c9cf4ad70ee223439bde345568a7421e44931bc247741c3', 'category': 'Street name', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3168.0, \"x\": 2825.0}, \"hi\": {\"y\": 3230.0, \"x\": 3032.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5548: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060\n",
- "Processing image 5548: timestamp=2024-01-17 19:53:28.540511+00:00, observationId=o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the street names \\'Old Tampa Hwy\\' and \\'Wabash Ave S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.046933547774357584, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-17T19:53:28.540511+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c27f9b70bad1d7f9a1586d3ca31f1fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b06d109edcdb48202c4bccb02ba882daddc42b0e982b82698fe4b9e61d71798fd70c7176cc7e41fe9160c059c5e468c6e8f5b57fed65e95a0625d01abcb5936b1d3a4619fecd82875d0467480d80215d6b3ade2cb7514e3a6dd3f7e713c015c3b4df6ad8cf74562141a0eba1300cc27c7d80668e2e86032f666f73e0d3dbfd76cdd7a371d15fc3e2a4fdc4eda595905f4bf17ae5c7063f0318efa49b40699a975cff8a238e6cca4af58717ee6991794242f7fa6387d7512dd4606b7b80f759e1147bbd8b4fa2191187dfa18e24a0a7d067421c7e40038eaaeedeadf6330dde3dde07d61a4a3bf6ef6299ed611b9570c21fb960e0f11d22947d2f96e8b10dcbff', 'category': 'Street name', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 2611.0}, \"hi\": {\"y\": 3219.0, \"x\": 2762.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5549: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:7901fbfec899a58c7fa17ba012a83154:00110060\n",
- "Processing image 5549: timestamp=2022-09-12 16:23:15.039051+00:00, observationId=o1:7901fbfec899a58c7fa17ba012a83154:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible reading \\'Wabash Ave S\\' with \\'Tampa Hwy\\' above it. There is also a Speed Limit sign (35) to the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2527235816506779, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:7901fbfec899a58c7fa17ba012a83154:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2022-09-12T16:23:15.039051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7901fbfec899a58c7fa17ba012a83154%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70f9050304d2742680748839c7af7219bfee971a0ace3984bee052d54a37d2d49ee578b38e5b6c0156c169b922d1066cfe8cf09213bc91f7bcd026bd4dfe0d008e3ef6cb71b8ee7e5a1206f55b6f37fc31d2277ff6c16d1c4a2bd15cef04e626fe05679a3a0624fa53ca10ce0da502ec562df9a76a5b375a1ad39a577ff725dd0fe4cfe114a0eb172f4fb340030ea0d656613b4d380788c1f5a3e06370fc081771c0cba2117a2029804781198ab99a418cf0356c213b1c888e80cf3ea463f2b01a6f3a52957ca4177b72a3553f1fd6b58a92f6b466c9cdb9260668ac5e677a4f75300e14946e61e001e80173c99b14404ad2205f85e15a4db578532c979dccdb', 'category': 'Street name', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2141.0, \"x\": 2050.0}, \"hi\": {\"y\": 2240.0, \"x\": 2464.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5550: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:04796929cb8d5d5f7cb981612d63039a:00110060\n",
- "Processing image 5550: timestamp=2024-02-01 22:16:52.752294+00:00, observationId=o1:04796929cb8d5d5f7cb981612d63039a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \\\\\"LANE BARRICADES\\\\\". It is sitting on a road surface. This is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30466758811866845, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=1525, total_token_count=1616) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:04796929cb8d5d5f7cb981612d63039a:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-01T22:16:52.752294+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A04796929cb8d5d5f7cb981612d63039a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94a0bddc54f2745f3f78cafdc204bf3fe1e05ebb38ceaf195749691bfbbd4edabf02f5696f30c37339f2fb3cfcb74e466af5e89c5b7c333df5f929697c5ec858e9d73d0ba6c9f77e3ac7d2690bd3ed5e3cfcb9599bd000dd1dd1b12332491309565fcb57e04e03f7ceb1749f8da1fabc356eb047315362444521b65ecbc632a52cba7c038d3de5987ef571f414a1577f0a9b35f126e9ce4dad0a77c30261309bc1533e1a5e97878a5c44b7b95b6b6bf28b60536e60049bc75cba65601bda684f64575952c55357f7528bd8811b50c354ad02b1446ac3c3cf8dcc4f6ff3307f2b41a9e23bd62960466a63278ffa83de98e9b2ec998ba5493d893496e9f39c3fe7', 'category': 'Other', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3521.0, \"x\": 1967.0}, \"hi\": {\"y\": 3791.0, \"x\": 2109.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5551: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:58eb00c1cea1d84b1ad35bf348203f61:00110060\n",
- "Processing image 5551: timestamp=2024-02-02 20:16:18.619818+00:00, observationId=o1:58eb00c1cea1d84b1ad35bf348203f61:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18822423149557674, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:58eb00c1cea1d84b1ad35bf348203f61:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-02T20:16:18.619818+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A58eb00c1cea1d84b1ad35bf348203f61%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=48c4471c19b883e1c84490aeb90843e3a21b5562d82251ab8cab4fef9e74aea30e5ab20ae78051956ac104d30c27bbb52e3c81bcaf06b53c24eb1463672f70ed952edde59c5c18895eeb50991e1a5cd3f30ad7ac3b00ee2a0b73fc040aed12062e5d8ff442d5ccb78f267ea6b37e1870f0e6aa5a0ff8964c07f0b3b0aa22730c2382e01eaa3679753ff64b097fc6801af82990ad970e9d1472286bf4cc3cacf2b0c604da3ee1ba5b4ccd85963f3fb344b0b679508cb3c60c7144bcba27cacfb5181002567f88b6a57728558bd26a07d57cff441a17ac50ebd2eddef26714228f2e857d550cdc5e2f53680f4488586cb595c2ef3b795e0f4259f9a3b843d1f76f', 'category': 'Other', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3375.0, \"x\": 3084.0}, \"hi\": {\"y\": 3498.0, \"x\": 3155.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5552: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:fde6ce72ba630e853b07e0715cb9e141:00110060\n",
- "Processing image 5552: timestamp=2024-02-07 14:03:53.802725+00:00, observationId=o1:fde6ce72ba630e853b07e0715cb9e141:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15700253573330966, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:fde6ce72ba630e853b07e0715cb9e141:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-07T14:03:53.802725+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afde6ce72ba630e853b07e0715cb9e141%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d2a57771440f72636f29df8a34c48c1dd52c4c04c6b526bf3f38bdfc5709947b4d519c9a9e3093d4cba555a004a45780c557d3594f17198eae07abe39f8e9dc5eb32b21d22fe1c839382baaaa522e36d030494b79af313d13c23c89aad8ea647bc6d582666b1207da748496b2492121d07e1b6d7f54461dc5b024a8daf38a9b702332ac719a97c466e4d1d951d06e4c3085871ca8cd419812b824d34c45763d614c1310921936bb5ca970f36a16a474acc1d303fd941380842bb11d13d8b1fe0f9ea9bffa68f57e035883b7609b94005dfd674696fa9beb1c5717fade00edfbc99fe885d2d1362db52a4116f0e9092e62173231aeb07f8b74f7158e7fc5951b', 'category': 'Other', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3408.0, \"x\": 3032.0}, \"hi\": {\"y\": 3541.0, \"x\": 3107.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5553: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:9c0f976479862cd667191eeaf68ef185:00110060\n",
- "Processing image 5553: timestamp=2024-02-01 22:16:51.292208+00:00, observationId=o1:9c0f976479862cd667191eeaf68ef185:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with the word \\'EXITING\\' printed on it. This is likely a directional sign or part of temporary road work.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3710267430260068, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:9c0f976479862cd667191eeaf68ef185:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-01T22:16:51.292208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9c0f976479862cd667191eeaf68ef185%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52fced5cd714fbb926d2f2bdc71a532e2030e8d42c9b749d924168e14ac268e1bc6190b6cf68597017ba348fba6272cad3021629863f5d8892d5999bd6c0bcc82b8d0dea273ec0568dfbcff696f9371181b4912badc21d733254d7cb811782d8e7eac50991ae244923d8d6e55f9b18c1bc7f8274bd116e5361435de3181c6a29f0cc64625d4c46900daf586a60df392b240892066598a90eaed78aa5045fd425c4eda52d674d1ab5cf08b77148b9a4af4dc394dbe8d4a911086249887981e4d84e549db7dbd07ecea696ecb40d7ee4dddd3c58471dd44891eaa91a92c4beef6df06b3f84a9f0c55c96f6f859486388c4398bf6b25538e64cba594477dd7eaa6e', 'category': 'Other', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3307.0, \"x\": 2856.0}, \"hi\": {\"y\": 3416.0, \"x\": 2915.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5554: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:a5991523440482ee08c4174de1dce01d:00110060\n",
- "Processing image 5554: timestamp=2024-02-14 14:14:08.830256+00:00, observationId=o1:a5991523440482ee08c4174de1dce01d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13830741246541342, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:a5991523440482ee08c4174de1dce01d:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-14T14:14:08.830256+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa5991523440482ee08c4174de1dce01d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=17084de399f1ed0e830166146925107ad3a9e7f59a53a8daae207c44efda418f72eb56bb460870ed8cf1afa374b72105aa1ce7db38c1282f8e552d897ac0857297bc1d6e83d5bca1afe8e35dfd6934e2affc243178b5d0bd30e713d6fe67fd1a8bcfba3f49297b398e164f78088981b606d68b847386f7c56f0d909aac83dad6b55a1f766b4f8bb7314760324bd6293f92dfc848b2928b06127666a835b0ef3b59317e3628d4da95c53c1e8c2de4ee55860d0e83be4a27f4214bd959e70aabbb59111229efcc554bf55846b9203d805bbf7c38d5b12a6a4c7727a9f5d4d24d0a6b7fa6dea49b5e85b6e432fc50dc5640f855d779029c66e825d7da385d9fdcda', 'category': 'Other', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3365.0, \"x\": 3122.0}, \"hi\": {\"y\": 3476.0, \"x\": 3177.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5555: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:c76b5c683a7d17533c7953c128e46e25:00110060\n",
- "Processing image 5555: timestamp=2011-04-26 18:15:52.319815+00:00, observationId=o1:c76b5c683a7d17533c7953c128e46e25:00110060\n",
- " Error processing image 5555: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac76b5c683a7d17533c7953c128e46e25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06fc4e484b13039a10e7a6ffa43c8e16d16bd3ee017d0a382fa57c80d6117698976723cdf098f7657d6b62b8a675430b7fa655d70a78dbf5afbb0083b1de777437d2516390747c58dcaa5c7aa4133b576440bfdb9233421b970f25f72905e3874d8111784793cff98c07df803608b2ca5ae57814cffc2c2e7009d442d48d4acf22f0feae74222d2b5d39119d98ead8e867759139d8068d7b6d4285234c1368d3dc8432c5fe6885f249877082a7ff1581a0a1eb1e6c334f8c6354a7168eab95ecd93055535d74659db64e6c71d56c3626a0cf7a41d29224718be98d177750e617af345226064820ef09640c408834c39d907121f57724ace33e0b2fb2234940ae\n",
- "Processing image 5556: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:038012266d6540b91a31308495774dc8:00110060\n",
- "Processing image 5556: timestamp=2011-04-26 18:15:51.252261+00:00, observationId=o1:038012266d6540b91a31308495774dc8:00110060\n",
- " Error processing image 5556: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A038012266d6540b91a31308495774dc8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab51c861076636cddcb8e68427e2ee470312e11584eadd5d52e1b8c73ecad65f3d5b529a19f10a01ed83d2926d11d7baddb23eeae74da65b56875b82a43ffd3af50e63071dbfd56044c06b60714215e18b91350ce8bdc9917b18490979f34eb6aa15f2339e140684a57c47a89f5a4adf9a56de7ccc1db35c43420157aac4b8e26d1f4cae2c4600c0456ce41945686399616d2c8cf34598cf40b35208294b311dce0f88c18d12dfd7567f54ec109dad0bd2e3b00d22dc0cd66baf30e49a35e3b02675db2695ccee1c9a0154a967a4041e1777dd5276767f3fadbdf25eb399638130f00b89867c2bcb9a857f92570b0b5cd4c1d1e8333b10313a79e7cd698f5202\n",
- "Processing image 5557: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:e139b290f3f4b6bafffb18456370d3f3:00110060\n",
- "Processing image 5557: timestamp=2011-04-26 18:14:35.877094+00:00, observationId=o1:e139b290f3f4b6bafffb18456370d3f3:00110060\n",
- " Error processing image 5557: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae139b290f3f4b6bafffb18456370d3f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4eabcd5176377b9e3255945dfa743ec8526932eff63b5c30537302e2b9d074da2fefb89476f1a45f761eb0634e7540c77fe2016a46fb69901d24048321bf29b5c7ed0534c19f08113812da25125c60a2c9290e77308c554f8cfcb3bc26966b0ca42d5a18f3d42972bd1e7e8c51dcb431cf971fb42f37dc791d2c7a5bad289859cd66fd526701070eab00ca983dc474fd0198067ca3dee6bf34d4fa84ab2184601d7ebdc5740ba4dc8d819f5515a2560f47fa17be61f224e4c492fb707d39aee6e8142956f32beebf885e653451bc0f27ff691ec00ce88e46b3ba0c7a2cb16ff9757729606e13a00b9ab2f2f3cd724ea981c8307aeecd3d89bdb4403111c873b\n",
- "Processing image 5558: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:23559351bc77cc1405de8fc1d3309b57:00110060\n",
- "Processing image 5558: timestamp=2011-04-26 18:14:36.717897+00:00, observationId=o1:23559351bc77cc1405de8fc1d3309b57:00110060\n",
- " Error processing image 5558: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23559351bc77cc1405de8fc1d3309b57%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8f893c6cd46eea4846e9983509eae0610ac66adaf2a79cfe023409e08215bb46de669322eba11d969b481d7f4d9b0447b8ec916950762ad13c4294dbc6f143a3f2afe9bcc0b0346a3bc71f04023497d91834946169cb0786c2436531e222e661cc3d5491c263f0a748e7ca7a2beab796fb074366d195d31cec0cfe5e4a59f773fd9c1e22444ba0130c995dc73428b23bc5b04b6b0451e4780a590120aca00a1982d06e55dea2c575999d093e1e421c94c598599306c21f9808e9c58e2eb56819ad0dc692eefe2c302e305c50754447c881fecd5a9ac9df1ce06059bffc0266b1bbcb53ace216b510e40e3c27810c000390efc1280321998db705d3dbabc2ff30\n",
- "Processing image 5559: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060\n",
- "Processing image 5559: timestamp=2024-02-06 21:27:20.514204+00:00, observationId=o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a Bike Lane sign. It depicts a bicycle and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13643545179224725, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1009, total_token_count=1076) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:27:20.514204+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c70c10de87cfa5ca002c1a97d61cf0c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b4155e2db35066b9aeb4a03d07ce8e373fd7919b8e1a0bb62402b1735707bcf79b216402f1eef11a5366d4358333ead4882f51c9d9b89dc54b95df1e9119194c1a2c15e85e872bc7d452c0f879d98290b665f068a314e4cefc58b2a8732bfc06522351c5b6fd9f131e828d5cf9025d0ba7c4681c7b2364af4f7e3a49a76813c34065f12fa2968c001d7e1be517b9c9db35537775f53b73a7ea0673885082de713e4c2c912dfdc0ed68426ae1d7e9fdb703008536548e38bf06622d9ed2ce7f4e1f03874aca0a3cdaf0f4f4d84ae0ac449dc1f09746f5e181dc835568c7de11f9e07c3f64228127c6e1e2031704a370b2bc399b939359d3e9666332d120765b2', 'category': 'Other', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3233.0, \"x\": 2379.0}, \"hi\": {\"y\": 3272.0, \"x\": 2432.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5560: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:88563f59e0b5f244b0986cf5b3191bbb:00110060\n",
- "Processing image 5560: timestamp=2024-02-27 17:32:32.709414+00:00, observationId=o1:88563f59e0b5f244b0986cf5b3191bbb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign is black and white and contains a picture of a bicycle, below which the words \\'BIKE LANE\\' are written. This signifies a designated lane for bicycles.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign\\'s content is discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4600002454674762, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=1525, total_token_count=1617) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\"}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\"}\n",
- "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:88563f59e0b5f244b0986cf5b3191bbb:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-27T17:32:32.709414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88563f59e0b5f244b0986cf5b3191bbb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2f4a9c7dc06eb34cf6d0d896132aac04725fdb67acc37d34f9f6e1db41f7f3ebfd45cf16a1fccd1a72fcfbda6129f59b29d89a70023c1e8f06ff0325ad33f138fcdc6fb4e072de411e41d13085d038f8411fbf38973750b8892213237afa40cdcf175996039699c93c8e1f58fdd012bda2d81268c0da6770f0750255e4cc1f5e9d6fceeb9e0995752103516c73acf89ca5d35f8355cfd2379f5f86f6e769db2d2e686427032488784f3e8c75a0df9743bfa339e2f09b06cfe170d9ed4d2478115fc69d89adb6c5c8836d65ecf45b6e3e7944db0091fd045e1716cc0133e51f921efaf31d01d3fe09fb51f8f8e2cb4ac522211ce1295d9c4dd4d55e6b1e96a23', 'category': 'Other', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2142.0, \"x\": 380.0}, \"hi\": {\"y\": 2182.0, \"x\": 433.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5561: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:87fca1cc8da93963a59f96ab46b60981:00110060\n",
- "Processing image 5561: timestamp=2024-02-06 21:27:20.214140+00:00, observationId=o1:87fca1cc8da93963a59f96ab46b60981:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a bicycle symbol and the words \\'BIKE LANE\\' indicates a designated lane for bicycles.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10960003155380932, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:87fca1cc8da93963a59f96ab46b60981:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:27:20.214140+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87fca1cc8da93963a59f96ab46b60981%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73be83bf8f2dfc02cf92c424cfc20a58e841160296dca5593fca918ae3a0549ba5e1842ae975f33b6ff5a36aefff845c5ba23e9ae552abd653e4a95954035e5899125c370bc00611d907f7e42b5be950dc967becacee08391d4d4bd0eed482cd36e68a2e8de5f6bba8c1aebf177866513290b8b36b987cc6016747ba3ae31fc696690a5230e198f5af76765387d4a5434ebbd47b496f1cbfad1743310eef5c15a17a732317d3e49674019ef4c0612cff8656b6a57da4de8e149d002a46f215ce0185065564949f589d826e44eed0c25cf99d98b9ea422232a9d5934a8c112f6024646b4f033ca6a025adfae9341b05ad17e92c707a0384fc074a3e9dcdeb4a71', 'category': 'Other', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3216.0, \"x\": 2703.0}, \"hi\": {\"y\": 3254.0, \"x\": 2752.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5562: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060\n",
- "Processing image 5562: timestamp=2024-02-06 21:35:55.728939+00:00, observationId=o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13778446031653363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:35:55.728939+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e2e670cddd3b1cf3cbfe45bcfc6e664%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4e4d876b5b8e7a912d9d1edd1a36dfc2287d4ba756b6750ffb1a80c43034263bdacfaa2b4f6eb3d26900a1ec6a953e539ef794920520a6164a0edc73cd9653634ffe7651624ad23dae40bf3cdcc0ca8347d9c0e9f0ee5e4e531ce340bc4c7ddf0df867f23a7a004d5fe590713d9add0ec6dfa45787a8aef8e4157db7c74d3d8767e20168836867672db4ebd525c47e320876dbc3405f4b4dd82b2d9b6dd794c3837f1f9b51eeae46bd53566bc154c83c67b487863753c4bb9da7ae09e31fb0773baf594b05e8f4396fa21f16535e832051b7f1a67ee99c97d1c30093ac28d7d7236793e767fbf150808929fecb2a3c1041bb39116970ab3864687e49f22a146', 'category': 'Other', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 1093.0}, \"hi\": {\"y\": 2332.0, \"x\": 1133.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5563: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:6d817c8970d0289d0c1a43984f9e966e:00110060\n",
- "Processing image 5563: timestamp=2024-02-27 17:32:32.709414+00:00, observationId=o1:6d817c8970d0289d0c1a43984f9e966e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a bicycle symbol above the words \\\\\"BIKE LANE\\\\\". This indicates a designated lane for bicycles.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1358029047648112, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:6d817c8970d0289d0c1a43984f9e966e:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-27T17:32:32.709414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6d817c8970d0289d0c1a43984f9e966e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70e5598b8cb6a7273dd543cfce1431a0de4f957ef41912885060a0303d662733b316f7afd3c19f95991b61eddc4afac239371c4ae8f7c6b1667bfe87c2c5ef1a7370f150cf38145b232417f07f10051dce898b823e476ccd5262d4037aa779780dc2956d1577cda10bb91fab3bcb256e066061c84525cafae7c6b6a9e5157553c93f06e3f37004eae923961c2e7b5bf5ce2ee31a115f33ad329945f73abc142614a150a9c6036ec242c4a5c7e8b3cbad758c950c013d91fce0dc67b59e3f5bb798a75c01616b176e4ce9395bfd0d986f4358091cd2c1b57599b834111b80c7e679ec7246089fac9f5de9df9081a092a08f1ac0997b67e44f079d03d83c072a77', 'category': 'Other', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3021.0, \"x\": 3457.0}, \"hi\": {\"y\": 3060.0, \"x\": 3509.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5564: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:c174412994341e5e4984105753a9cf8d:00110060\n",
- "Processing image 5564: timestamp=2022-06-10 21:12:28.505579+00:00, observationId=o1:c174412994341e5e4984105753a9cf8d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.100011840699211, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=1525, total_token_count=1588) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:c174412994341e5e4984105753a9cf8d:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-10T21:12:28.505579+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac174412994341e5e4984105753a9cf8d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2247955e0fc0e8305cd78e1117a02620d38ddfc13864dd93420fea55713daa0e3c450199989c987c7371cc1380b1d07373aed9da34c1ad248c2d85beb7f02bef31a0b906ddb0687e8590c90b71198656d818e804b46589f18553ec7f1b14474359b8af04e0153fce6a4fa390bdee143ce6440c1d9155223c7107933bac15c19d47b598fc0930a13f93cfd426eec2cadff4bca5accdd6510755598ba4524b8f6172e914021590b85e1a70c2872236b3b50386fba70ae24cd09d7f9484466ffe23b8522dbcfec6d8aa7cd3dc822c8b38b20a5b88d18aa78cc92b021424c601d24d2309133eb561b42d2956be25ae4936a1c4e82d4941e88e52cb36939f8387b099', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3164.0, \"x\": 611.0}, \"hi\": {\"y\": 3238.0, \"x\": 683.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5565: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:e6c15383b49f2034a416cdc450633d64:00110060\n",
- "Processing image 5565: timestamp=2022-10-07 19:54:34.325775+00:00, observationId=o1:e6c15383b49f2034a416cdc450633d64:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5224881975838308, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:e6c15383b49f2034a416cdc450633d64:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-10-07T19:54:34.325775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6c15383b49f2034a416cdc450633d64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=252da164f585981d1a21e3a57ceb8fb090ab749bae3083db79a9669d33386d29c4c7f5502e5cef72397cf6ab1bf14dc5ce0c0683d90fb90f30767d817c338daa916c7a519cc6f768846232f8ea489c39ae68d3e7730a48e2b0b5074ab97620c150714adb134a4416d4aac0aaf29f925c99052f045048f112677f7867d087d6a91ba32ccd123422a88801fb7e6f99399e4b0189144d44976deb78b8dd3fe446616d165dc2dd7ad7fcb5f426d0541a75e3ad5f9c503219b3c81ac001151bd5be80530876b1dd1518ef7e647e92e1d14c5d133094cb89c3d3a7a500d178453354eb5d4c155cae5fd472feadae39a2782506e48b50d74d08762a16efe23565312a5d', 'category': 'Pedestrian Crossing', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2030.0, \"x\": 1352.0}, \"hi\": {\"y\": 2290.0, \"x\": 1452.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5566: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:518abbf918e9944583b83ce304d7c44d:00110060\n",
- "Processing image 5566: timestamp=2022-06-10 21:12:32.121548+00:00, observationId=o1:518abbf918e9944583b83ce304d7c44d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29088460895377144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:518abbf918e9944583b83ce304d7c44d:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-10T21:12:32.121548+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518abbf918e9944583b83ce304d7c44d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=40eb4e950dc8491614abd8a9d7651a45361b80242dfd03acd23908254ef3868ef08eecb407b90c0ee051f904456098a2a570a0292308b093e0e14e91847bec1422d3a94032c6d9340aff9aedc2990f5170218286d06d0292fc73caee2fd544e7818d3d44f357e4bf69d00c6f29e67434304646fda02fa4157d3370c41a2b7ee99ef1a41d33a5cba05447517e4f61fee93d0f66acbc9c0aba9cb1a156274bf342b78da864743556c233206a9c4b86255b04588f0e1571227fc52ea5a61bcdc2e684b7da45c1eb792124c4c04f1c4c01db81e9f9536f82dfe6335a02c6a567f6458aadd09e3bd1c2eb12a905c0c5e8dd9e4b8abb9ee60595e6520889a7bd0b2f1d', 'category': 'Other', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1897.0, \"x\": 1685.0}, \"hi\": {\"y\": 2325.0, \"x\": 1809.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5567: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:5d78ac13b294198875eb1cf7ea38c648:00110060\n",
- "Processing image 5567: timestamp=2022-06-16 18:59:30.683547+00:00, observationId=o1:5d78ac13b294198875eb1cf7ea38c648:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38940383727291983, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1525, total_token_count=1608) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:5d78ac13b294198875eb1cf7ea38c648:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-16T18:59:30.683547+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5d78ac13b294198875eb1cf7ea38c648%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=86166a1a763be5121f0a0538af1312cdb79c52fb63de9453465cdc5d09906fc885d829feede6e77cbcd0266b13a6b8235593d6c84ed90c0f1c2b467aac8fcea528ef45bc2a6413427ccaf4575fec94c49e8639ec19ebbfa696ddc271af4d82ad4f3b97916eee0ecc391ec11118ac6cab10feb699d08a6c2800d44e5d060f9792ba2676aa90c7773dfbc3e4d0cbbc6c2523243ced472a3cce289d57bdac7f8f2f2b7c657629f07a5e1522628d033fb235da045a1fed6030e2225423224e75d96f690915325a2a7dd15cf1b2324a947a9cb50173ea44a8ee1fc8a9cd6cf5b16c24998e14e6c4c5f4ae52b860f3ae8d53218a55835a8f1a6b5209f1a73d8c6447da', 'category': 'Other', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3142.0, \"x\": 1135.0}, \"hi\": {\"y\": 3237.0, \"x\": 1227.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5568: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:664536699272a5917ca2f65144b70f86:00110060\n",
- "Processing image 5568: timestamp=2022-06-16 17:37:21.128125+00:00, observationId=o1:664536699272a5917ca2f65144b70f86:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a \\'No Parking\\' sign with arrows indicating the restriction applies in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10487739338594325, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:664536699272a5917ca2f65144b70f86:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-16T17:37:21.128125+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A664536699272a5917ca2f65144b70f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5dab7401d848cbd0fa7a1e354bc73b2a90972004ea4e7bf8d01ca11b97030a3d8a704f6c43afcea785060ec8d6146160335b4b6e693bdbd80fa718a8271d1df8c276589fe3611a0774fff77237b81665140a936ffc9da89df997ad9d05771154f956d826ae30005299f34e1bd63e0e2fbd500f50c96c8022a1fe766bca8b8ab3d23c4852571f0219a99a4f6a7835f44d152d0c028a57d454f905fc7928f2ee320e0f734b85cc01e7e455f3b310b53eeb0ee745a365ff398ed9177368302c5910f026631a10ad8aec201c47995e8b1b4e6088f892b6c64d15aa12be1a35a56d41f9250f1a30c6cb3afd414be39790b16138ea854158028d4e69cdc96fd606e7dd', 'category': 'Other', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1919.0, \"x\": 1260.0}, \"hi\": {\"y\": 2335.0, \"x\": 1432.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5569: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:bf2f0e22556522104567051ae5659a8e:00110060\n",
- "Processing image 5569: timestamp=2021-02-04 17:34:43.751986+00:00, observationId=o1:bf2f0e22556522104567051ae5659a8e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20224972845802844, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:bf2f0e22556522104567051ae5659a8e:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:43.751986+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf2f0e22556522104567051ae5659a8e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0aa971ed25b123711dfbe0d63538b5c7e5199ea3e27011b2e53d57b232d34695da52719c592b4e8b8e5d7b558932956924f76c38b41b4d11c839c7490cd301d8322838b552f7c1a404bd1bd0f537b827f48445cfd7efc5dcd55a40410e4d94a28bf7e10346abcbcfb4961c144f5b3fd3ad4f0827b82a9f7cdc9774514f7ca0145232f6d6b7a282f796d4b1d3501255baf332510a7865b1f3a7acb66ef270191ce7e2852469f444c67e32b96f1f28b7141ecb31e979b5bc1b46720a505cd5c9edbdfb6c71874693b34b79551b2464391a1b8800cf4dd3e5ed2c48c6723118f67c94cd62471d4a916e61e41295e4dd63f0a67c602ced33f43b55e7b2eaa3fd4d49', 'category': 'Other', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2514.0, \"x\": 1485.0}, \"hi\": {\"y\": 2545.0, \"x\": 1581.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5570: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:1f14bc5cfa8622519cd891607bc3b929:00110060\n",
- "Processing image 5570: timestamp=2021-02-04 17:34:09.172828+00:00, observationId=o1:1f14bc5cfa8622519cd891607bc3b929:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a road barricade, featuring alternating orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24598892529805502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:1f14bc5cfa8622519cd891607bc3b929:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:09.172828+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1f14bc5cfa8622519cd891607bc3b929%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4e463d6945fb3c2f948b600b57303d515c09183ec64fea7886f3eaa024d84f2cdec8bf38eb0057104cceaba3d4b1aaf22e950de3ce20035054030512cd4bc86edf1ec68a574d149bba858143a97a431dd12c3c3ec73fe7d742cbfcb2b7f5dfd113395ccb3f14e94134df0a27c73f2b15a07979b554fbe6bb4644273917e57bf12b9edd2d9addd81647ab34970202de03198c68ef19d868ad393164ff6ac858d35e772a1f426d973aa98910e4a3b87e4b4d6b9502cf9dea0a8a20bb69b2f0f76832f77556c282b51a1c6043d58ae5a40ac7dfd27b077d014c949d74e7468d31bd6037147fe56d48ee1d3fdb301b46d8f15b1d0c8c58dc50975650de2365419eff', 'category': 'Other', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2559.0, \"x\": 869.0}, \"hi\": {\"y\": 2597.0, \"x\": 977.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5571: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:2f5a202cc46237d89727ee2a26343c1d:00110060\n",
- "Processing image 5571: timestamp=2019-01-28 13:25:40.557411+00:00, observationId=o1:2f5a202cc46237d89727ee2a26343c1d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32610331354914485, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:2f5a202cc46237d89727ee2a26343c1d:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2019-01-28T13:25:40.557411+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2f5a202cc46237d89727ee2a26343c1d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab75b17be2b1c3806bdd52c91f1d7ad6002074981ec451699f1fd0d4ca76f1945f74c7f82545d726f2530b042e7157a6fb878bc84c0af948337a1b0b037a4c30ff96ea6b339d90273da3452c8a115eadd9e8aa07dad2679e655603ecf77ac395414959200d6e3dfad77e806bebba0c466b51be5d13b2f2078e2ad03b00648445c537024b113d707d283ca7863bd380d5672599f82c56372a138271325192cb140c79a2de03d70b48ebfa7870383b79c468c52bf153df61359c02934862d0c412ab99780e7bf19539e500c26de9854c1539392223b65676d40b4fff2db6c8469cdc63f89f2f5eaa633585e420bcd8948072a2d37afd9c82e9042fa8e7754fd1d3', 'category': 'Other', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3056.0, \"x\": 3043.0}, \"hi\": {\"y\": 3098.0, \"x\": 3202.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5572: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:f912f40a699d0d94b972601b53fe27d7:00110060\n",
- "Processing image 5572: timestamp=2019-01-28 13:25:15.214120+00:00, observationId=o1:f912f40a699d0d94b972601b53fe27d7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10918957354074502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1267, total_token_count=1350) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:f912f40a699d0d94b972601b53fe27d7:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2019-01-28T13:25:15.214120+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af912f40a699d0d94b972601b53fe27d7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6848572749590c1c91f2bc40437fa0257834e9bd8acc2d8a7ca0981e3777dd61f988bbef808e30afee634d5d1450431bee0ecaf7c9a8e56f51a47a5e9294c633e05a8b53928e311555a0d995d1dcb782c0c20fc295500dacbfe53b7b320e49ddfee59b340027d0e4c2e5fd860f345ca12d9e65e85d52991354955ea3beeaa3cce03e73e27b262cc1d0ae4a668c81c6b6e2444e813562dc629908f3a9a8161bb0b37a5f72a9081deb953dbc1774c2069c5f756459479dc074a364b48dcf05b566bd5575cb19167658c379a3f330193bc3be8253ce9dc1e46b49049d97f903c49ea0b8be4a2d9703ca647e1d81c7f2d4d623c3c62c7c17abe5f452ffd4ca6b3447', 'category': 'Other', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2868.0, \"x\": 881.0}, \"hi\": {\"y\": 2917.0, \"x\": 1400.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5573: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:a3b00fb6c011475f113703ec368dc39f:00110060\n",
- "Processing image 5573: timestamp=2021-02-04 17:34:10.428898+00:00, observationId=o1:a3b00fb6c011475f113703ec368dc39f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be a construction barricade with alternating orange and white stripes. It\\'s likely used to divert traffic around a work zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2463801873696817, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:a3b00fb6c011475f113703ec368dc39f:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:10.428898+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa3b00fb6c011475f113703ec368dc39f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091415Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa87b20bfe185c4412f155cf6c1697cbf82158d2fb37406268217b2a02193b17f48a5bd8e313dc7aba80d3beb9fc3c7e7ac1c5c397555683f8d3d7bb08fd4a3d10c43efa616cf406c3c0e2ed9c4bd00bfdeb03e2b553bc453d509e03eaf00a414bc26fcfe1d137ab6c75734c22b1f3c1f0542cd573aecda6e50306aad6ec99bc7e6a14927222b9beb8b14140d3b3dd56859ccaccb38cff4f631e3dd3a627d1e9c5fe9ca95e4fe3d7a0f334f571b55bbb3bcea380364aa52014acffb1cb8b5e9851071de594d6ea60e2851957424e47c62cddbdc4719d7623ae7cea93ca9a29f88f4fe297ad631078678b9d5de35b524d872cb56cfa7ada2bdf8621ac2ac87616', 'category': 'Other', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2509.0, \"x\": 2521.0}, \"hi\": {\"y\": 2546.0, \"x\": 2621.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5574: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:c438473421282b5ef919ef0282865089:00110060\n",
- "Processing image 5574: timestamp=2022-09-13 15:41:47.767277+00:00, observationId=o1:c438473421282b5ef919ef0282865089:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red stop sign with white lettering, clearly visible.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2744874954223633, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2557, total_token_count=2614) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:c438473421282b5ef919ef0282865089:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:47.767277+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac438473421282b5ef919ef0282865089%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092516Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7132438a66f33b4c7195fb515c633395b7d8cf3d0e17d142fd9a89f9830f5d1417ffdbca3cb72437699fca79ce562a6ea666bcf04f621c064b9969cf22f47c5df6ac4620e3307503f70829a04b8fb36a28a4d30d40ade74cba2f144a51f6dc02b8c6ad6c7a5ec4649d2d49a5156f854eb2f92beb857e67a87931080d7a719ba162cac47c804cb757dd4d17e14ae45cafbdcda31efb0d67df69b88fd979f9ed7db2b5203fd9ca01451f1537660acae42b622edad2e18505fab7f8404ca06901683400e6a00ab01adef6da5290572f570f9724e18c39250f36a4b5bd8e1fe08b4a00da7d68f2082d33d7cd4c35753fd78ad58f20dc9832c25e30984ef6bc101761', 'category': 'Stop', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2130.0}, \"hi\": {\"y\": 3349.0, \"x\": 2382.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5575: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060\n",
- "Processing image 5575: timestamp=2024-01-31 19:12:24.074979+00:00, observationId=o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a red stop sign with the word \\'STOP\\' written in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.134448608985314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2024-01-31T19:12:24.074979+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20e7ed68ff27bf06cda1f4caadbd8746%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a35733f9b63967743de88b6f43c66666fd47c10386c8139e3eb87f53d39e9609ec3b7d91556b385322e924945fb4819897a239cfcd1b477fb6e165e391b4879167b960b98c4af6dc6a7f78efee817f6e2acf7ca32aa2e82fc92bfc260868543eeb2c712154e771da8b9a30992b79d8b3a9a70d7d9a82ac642f0845e16f8112399e49fd113381a70f23bd942b96913dee2e68213bab3a8b3b9837018228934a693c660c7358eb555e410edb93cd45012ba28696e9ab8531ee62c40a89b1a9d2c7f94cce06ef5654f55ba3d367fd83e9b0f1647ed696a5be142a8a791e90c2a96e7554f3ee594283115671da62f7572da383b31558b2f7b87b2845d2538b0b02f4', 'category': 'Stop', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2111.0, \"x\": 1140.0}, \"hi\": {\"y\": 2519.0, \"x\": 1334.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5576: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060\n",
- "Processing image 5576: timestamp=2022-09-13 15:41:48.659233+00:00, observationId=o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with a white border and the word \\'STOP\\' in white lettering is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13192765609077786, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:48.659233+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adde1ceeb4707abb63c7ec6c16e11103c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092316Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a151cf6f6e2581f2022328a6122a75101f09e2701a6fafbe3a1659c3a29c655f5f4e0180b94a897b0b45684057378cbbcbd76c4cb9d146513cb9519cec92348654687fa66fa3961ff2920151fc13fad4d31cf1a0a660284fadc994b22a852575da7f5e29c7a4526bc690b4bef7d2e2a6e9e203808349e2588939579c21da4228d3466a861e4f757e6d90bcc34c25da774b5ed371ce91113ec19622a1f7285ac0cd8a929b235e1b1d18c3b28859bdb916970c3903036663ccb3e4b1d4ba26110a9f240b8a5b6e746612241ad6b1266301af1a7ec33a173ae3a361455bb7499151446a442c2f2a714456e6cd1fd8de585d74a04c6fb6e9ea1881e7715e73b8ec75', 'category': 'Stop', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2085.0, \"x\": 114.0}, \"hi\": {\"y\": 2565.0, \"x\": 362.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5577: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:120edca293acbfb3dbb9bea06e8f60e3:00110060\n",
- "Processing image 5577: timestamp=2024-01-31 19:12:22.927066+00:00, observationId=o1:120edca293acbfb3dbb9bea06e8f60e3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with the word \\'STOP\\' in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06723222732543946, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:120edca293acbfb3dbb9bea06e8f60e3:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2024-01-31T19:12:22.927066+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A120edca293acbfb3dbb9bea06e8f60e3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98cf779286c5ee7ab29d837d13ddd948bf6705cec76bf326c7f270db10b066f220974ecdd4030ba735e243c730f25578511c35e8c0a08a70b2c0e20b704b8ea8765246d908653a8e1e7595408774e81b2fa47d5ff3c978e1d982bc4f4de0946071b36d1e97d47043cd94f58fab50beb36a0b6c6d7b2d1b720bf73bdcebd977dc21d2728f7c593fbe98b2c95731066804c6faf4751dd6c77f8c4a83a132dab404d37e182ae66385cc6d7b1c341b9b80e68dfa9dd655b5af60519415e2c71f8e7a7412141e1cb75f5c04cd4e146c4609709daf1325be8bd0ca1368c22c9f15f8eb1779e0fcb28cfe3dadc57fc8683ebc65e3d19e3854515283c4986bb5b44e29b3', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3094.0, \"x\": 2503.0}, \"hi\": {\"y\": 3389.0, \"x\": 2752.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5578: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:22b9cd818f9f6b28cee3d144b810e383:00110060\n",
- "Processing image 5578: timestamp=2022-09-13 15:41:48.659233+00:00, observationId=o1:22b9cd818f9f6b28cee3d144b810e383:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15045557449113078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:22b9cd818f9f6b28cee3d144b810e383:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:48.659233+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22b9cd818f9f6b28cee3d144b810e383%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=203e5e07d4410eccc58376e457b9165c76f593c5564ce97140fd43d30b72c5ad6ad5ec137f23cf92ec26e698c52bd30edb5c4ff5ba5463e6d5338022425b6a82cd025014ef7238201b5f676dad2cab34a069a609adba7ddcb9a0bd3be6fc75e6632ced5e262b575d48bbe147f8051c6141164154e22948c1de7089295a350ab0168b685e425ac581c06acd8686fe26c51a26cb9f802ede08d32bce31779503d0dcbbaa0ee1cd61d9ec15a8439e7ac1f3ab1e51d09d7ea4fd7da5fb956e29600c11fcd4da4216e0fcedab93351a6653392fc6eaef556de9be262d7b63168568070dadcaafce3bf5b140bbf81ca65930178d143d03a10196be178181e8674117c0', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2968.0, \"x\": 3193.0}, \"hi\": {\"y\": 3438.0, \"x\": 3443.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5579: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060\n",
- "Processing image 5579: timestamp=2024-01-30 19:30:59.319123+00:00, observationId=o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a road sign that includes \\'Howard Roberts Rd\\', \\'Fish Hatchery Rd\\', and a yellow \\'Dead End\\' sign with an arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2169649941580636, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2041, total_token_count=2118) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:59.319123+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7cd39f8ab3913d3da7f0e5fa3c536b7f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=71651ec553cabc2068a3aa5a788719ff7a497478b3c9803f07d2ead58e0217822bae70d4bf46bca61d1e25510e125d04916c955d7248191b3f9426b588688d547c11469e83b3c9f62feaa35207c59feba2091776d79fb7cafc3310d2787f10c52c149776350510f002d36f89207b0c0730d9d59dbf92d555a2e91df1b2c7e2a52c64c12d1f313fb4d7b56cfd066cfb456bae1e4425b49153a43bb396d40b71071e9360e784bb04e98586f9b97c4f27ac3956f0e5cc740994a4c909b1dec1159589d46a3e5a44a60b2eb0c5f9562393d272d9d0470d16763c691582ec52620bc581d4fbbddcdb17c0223f8b1b14bca08d130331d2ca28d861bb1b9934836331ac', 'category': 'Other', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 3122.0}, \"hi\": {\"y\": 3345.0, \"x\": 3404.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5580: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060\n",
- "Processing image 5580: timestamp=2024-01-30 19:29:05.338677+00:00, observationId=o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a combination of signs. The top two signs are street names: \\'Howard Roberts Rd\\' and \\'Fish Hatchery Rd\\'. The bottom sign is a \\'Dead End\\' sign with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16269395639608195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2041, total_token_count=2132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:29:05.338677+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3bb86d1694df2edd21aad3c0b7d77a9e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091727Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=801c3db73060fc1871915e33315a323e858b21eb770753c75ecf067847aab3c2a48adec4f79ae9832968a1660256c2ff38db3a1062dac2d35cea912ba4f9d75ae00ecd6189778d5ab241ab0af8020554753051749882284cf606d2df154fbf10f0e039e41d0e1198a8afb1e76fd72f90ce2b529c4a254b620b1eea58722ec12c55c7d40c9647a3fd1bd8b026b8e344f72e20996645e3af17ee0174685f5b4e60e71d30e478a8b1f558bdfb5b813e64cb1dbfa329a2662200a8b3808b44c754125cee9aa76298a1c32b3f8e01f42ee69c47e8043c581db645128b377010be982a5fa2d0c972f37fe6368513e4b127901d63c6a2bc4f22175333243782b387e33b', 'category': 'Other', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3178.0, \"x\": 2671.0}, \"hi\": {\"y\": 3265.0, \"x\": 2935.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5581: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:600371cb6b1724d34707d04ae80cf126:00110060\n",
- "Processing image 5581: timestamp=2024-01-30 19:30:39.192178+00:00, observationId=o1:600371cb6b1724d34707d04ae80cf126:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible. The sign has the word \\'STOP\\' written in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17544765748839447, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:600371cb6b1724d34707d04ae80cf126:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:39.192178+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A600371cb6b1724d34707d04ae80cf126%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ca723cc93f7cffef7af21666980f051a4d9d3afbd6a8de3531fd23071670ffbe71d72bdef490694e3783e03e0011b0f670d3341afe67ef5e6bf12b8d93106a82da49c769371d95f01c28ca857db1baf94fc072a85897945a48844d44d7674f0487dcb334293d0facc0076a7ce63ddf215f2d6cb081dc80820d3a90019c70eefaa0d59f5d4b3e30991dc0384e5b7388994736d252f62656e6a816963798b2884aa0d6ca4a0ef542783644b573519362bb1bce8ea38a713c0023adb95faf223984cecc681a331ab221e625b083e9f5216e9ffc63fd9693b2399c26ffda3ff864d06bd50f6e29d5f084da81948223526039d79609e01df440b11c5555e4fa324d1', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3261.0, \"x\": 1959.0}, \"hi\": {\"y\": 3335.0, \"x\": 2214.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5582: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:bdaaa57890798fb8426c61a35aa1e49e:00110060\n",
- "Processing image 5582: timestamp=2024-01-30 19:30:43.319554+00:00, observationId=o1:bdaaa57890798fb8426c61a35aa1e49e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are three signs on the pole. The top two are green and white Street Name signs with the names \\\\\"Howard Roberts Rd\\\\\" and \\\\\"Fish Hatchery Rd\\\\\". Below that is a yellow sign with black lettering that says \\\\\"DEAD END\\\\\" with an arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29233184370022375, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=103, prompt_token_count=2041, total_token_count=2144) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:bdaaa57890798fb8426c61a35aa1e49e:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:43.319554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abdaaa57890798fb8426c61a35aa1e49e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092218Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fec00725933ab41a82a6bd8fd978be8cd5661c0c7063ac0ea45f19856c6c86caafc3c08df6b021eddb5bb0be1da23bdce2a899324199c76f88fdf21a28246cbe34ee0abea0f8af8a9c09eeaee99159b1dd327f3132fbebddb7281317d4938c9e1454154e006f9c548424979186aa2ec3bfef39c4bf82d8499be2f65e75b81cfaa63dfe1c09cd3edbe0802e14c7d318b2c2505e4d83b09bc7c328b3acb4577b7eae347e6adc269509c5203ba42a2c7e35e33ba5e68269fe8de3663a5efa9a74d02c964021dda35478c8ad0f898f9a475d3dcd723aec88adb1f7cf963a93150ecd6e366865eb288745853a3d0aa1afd46d5ec94b3dcec1befca203b77f576427c', 'category': 'Other', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3294.0, \"x\": 2632.0}, \"hi\": {\"y\": 3393.0, \"x\": 2942.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5583: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:bef030ff7a19fae76a0ceb677594218c:00110060\n",
- "Processing image 5583: timestamp=2024-01-30 19:31:31.317945+00:00, observationId=o1:bef030ff7a19fae76a0ceb677594218c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street sign with multiple signs on one pole. One sign says \\\\\"Howard Roberts Rd\\\\\", another sign says \\\\\"Fish Hatchery Rd\\\\\", and a third sign says \\\\\"DEAD END\\\\\" with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2317783649151142, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2041, total_token_count=2132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:bef030ff7a19fae76a0ceb677594218c:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:31:31.317945+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abef030ff7a19fae76a0ceb677594218c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=99907d2fc8ae2d6134664d7dc4523d442ee6a6236e894d86ce2e10f577ae635d9c7576e34c0baf8a7543e1dd39e2629fdccaedba0069ced536b51ef0925268805500d8d81698976f96bccaaa9f74492ab7653924b9f9281fedfbafd76c302e94aae3c8390fee26070af4f798ca1c67ec4970798529d2ac15b4189051ff15b4fc05542b5518c7a6430e684eb348cfd3cd57c0131bd8af56263f1bb31b31d43e52ec10a4054e1bdedc0c6c83ce10244136a53d845dc8bf3ae6aedb4a87a8def5358febcaa2c20bb8101d299b8f539f976176fa4ec822899955c8a01b854cade946be6da0673fe717ac24cb2fad5fcf9cd005ef8099a0d88dfe4dfe1707c347f235', 'category': 'Other', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 3122.0}, \"hi\": {\"y\": 3345.0, \"x\": 3404.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5584: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060\n",
- "Processing image 5584: timestamp=2022-11-30 22:57:53.070110+00:00, observationId=o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a designated bike path or trail and street name Parley\\'s Trail. The other sign indicates the address \\'300 West\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.48031083131447816, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:53.070110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adc8e1b70a06ae7e62e20e7ff4503ac00%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=99fe6d14a3c916f747a207521dae46eba1eae706b2582eee2e78647044022494cb4752c03928e911fa567f25b9bce375f6441ea50dfa6e17811ed60bb39166ac0adbaf32645ebbaee0871f7f6d34bcf0968de57bd95a909a454a5883cb5d4cd97f6b35e317d4fd542a1ab1743e44e2745c461ad2b3e5f843983cf6277ae60eb86c64355ecec80278dd64b4dfe1eb9df0985477a6a3ae7fb7f5ecefd5c64d9f142f694670df4f6a778d3a4dde0e4010b3ba8c2fbcc55aee6f8667b1dc165c6d6db627d74bd0db5a34c3a1107077ed6d2199bc3947051c1de0f959354a3101659955ea9b3e25fc51da283da5447845745474e2fd9520024e734180711adee5e29e', 'category': 'Other', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3186.0, \"x\": 271.0}, \"hi\": {\"y\": 3254.0, \"x\": 342.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5585: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:519bf31b0e2a0843737e9dc5a997c01a:00110060\n",
- "Processing image 5585: timestamp=2022-11-30 22:57:50.338113+00:00, observationId=o1:519bf31b0e2a0843737e9dc5a997c01a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign shows \\'300 West\\' and a sign below indicating \\'Farley\\'s Trail\\' and \\'W. Wendover\\'.\",\\n \"image_quality_notes\": \"Image is partially obscured. The sign details are somewhat clear but resolution is moderate.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5527307298448351, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.'}\n",
- "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:519bf31b0e2a0843737e9dc5a997c01a:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:50.338113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A519bf31b0e2a0843737e9dc5a997c01a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa3a13deb25d8ff6f3e57b3ec0a7aa87254627834d7cde7e3dccd912d3da0e951cd39b763d93bf728e1a3a27d66dae5c06119430c9f7d9d5db1af1de50ef9fc28a4b8e157c3e6f7a491bd3cfc7c193ffe9ac244d5ac54a3f139d16efd5740888eee4fd4f44cb7cd4f6a490d384db2e70590529b7623546131cde17be3d99d94b8dca02dcddc8d98469875797e7111933d0d9584bfea4c2a8a4836942965a1015ebfbc5ec4326008bc52843848ee1dc4e863fc058fc47fc07f8de35e4d325f66b65e814356f2f154ca139051a960c9d4cda3bc910b8a1dd030321db13026427d86869c72b8280c1c2192d4f4ae556f8d4afc7e87b4dc6fcbfeb505afaaba67393', 'category': 'Street name', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2253.0, \"x\": 342.0}, \"hi\": {\"y\": 2346.0, \"x\": 416.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5586: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060\n",
- "Processing image 5586: timestamp=2022-11-29 18:25:47.609339+00:00, observationId=o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a \\'do not walk\\' signal.\",\\n \"image_quality_notes\": \"The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4281504839316182, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2041, total_token_count=2128) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-29T18:25:47.609339+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A84cf474b8a067b65b2200f9fad6c0ac8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52403681d705836f05868eb932c60dbb884de243893674f3b170ba6679c29cec2047700450d17a61c4555fcb3b72ca18193c7975ee904e833ea3c355b2b772895b62833ecaa8a38c449dc3c03e2c1ed8d0baf343d3b8a9c885d268bbb1109d81a7ce640de17af2c4124516c5fd367ceab9ec2b2f3e87dc5650c5cd7eab62927463d8f9f51820bb9550aa4f378c4041264fd279751d34fde765e87b55da6cc0858aa485542490101db4c1979251ebddce8a5f0c4bbd543ce9448e67081bf9ae16a92c30077575e56a95353848a817306009f80f1f8a67d2910fe01c847d8e2c2824a8bcb5effe3ab3300e3f540b7e36f3f5c6bbe60f43fe1dbfd3c2f161ddc963', 'category': 'Pedestrian Crossing', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2373.0, \"x\": 801.0}, \"hi\": {\"y\": 2447.0, \"x\": 859.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5587: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060\n",
- "Processing image 5587: timestamp=2022-11-30 22:57:49.450111+00:00, observationId=o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text \\'300 West\\' and \\'Turley\\'s Trail\\'. This appears to be some kind of bike trail directional or street name sign.\",\\n \"image_quality_notes\": \"The image quality is poor; however, the sign is still recognizable. The content of the sign is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6190322742127535, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=1525, total_token_count=1639) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:49.450111+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addf0e0afc5fd9ec846b167ff7ff0873d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091013Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3fe23f3b9fa5031862a45357baf1d2978aa536cb167ca807299ac0e4da1a79450d8e192ed19996c9b36f97b9b1f7d7cfabb3dfb295716daca92cac69749a0f8486e41573ae26efbdeacff3c7b614bba3b437b7343c31c8a74145669bacb3c81acd1a867e94d306399be609b0a81995d3057da9dc26d0ef687a619b518df27fec402433e8132ef586d6663d591ade625617a49518ad4f206d56756685c00ebdbbd5182ade504905321896d5ebbf009b7917f114fa696d40c3cbbb15875dd54a9d9bbb28cdfcce7e2894db5cc68da6a8a86cd12e0c018ac4f704622efe19e2e6d3ad567ace565dd6092778f3d4eeea5ef4b7669944f74867776aed07ce8846cd58', 'category': 'Other', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3181.0, \"x\": 2877.0}, \"hi\": {\"y\": 3255.0, \"x\": 2933.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5588: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060\n",
- "Processing image 5588: timestamp=2022-12-09 17:34:47.362776+00:00, observationId=o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40977894632439865, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-12-09T17:34:47.362776+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afbfa7d8704cc177b5a5a41b2a894f0e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a861850b97c1a296195da4e2d84d165a375fbb8a9d6545d344341cca69d3e2add1faaa7e95d94a06798324d8a62574dc7385e6e8ff334a47267139a48fb6b317f6730f41efdb7b2b3e1ddb0a5848df1ac0a92c98b729a64312f741a23917f459579bb66f760501a00ef4e75d028aa10a3ac069aabe3f353b194e060ae23dcde64163f8f71fafa6bfa892e544dd6d06f9c9052c9085d560162d9523c316d9db07332fa302ca3c3f19b7db63e16caee8e23c71650277b89186fe96cb4df2998fb06e75bba809b2f8cec63b451d254576e8f7ee2dc09b18e21b3fde42e8a4a92c9376a9d19a154b2bcd8b9d7f93163bba76f02c548cd62d196ad12b40ef1dda525', 'category': 'Pedestrian Crossing', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2325.0, \"x\": 2411.0}, \"hi\": {\"y\": 2401.0, \"x\": 2479.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5589: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:ab3bf0f554f88dd2b8ceedf0c8cd4291:00110060\n",
- "Processing image 5589: timestamp=2011-05-06 21:53:17.282788+00:00, observationId=o1:ab3bf0f554f88dd2b8ceedf0c8cd4291:00110060\n",
- " Error processing image 5589: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aab3bf0f554f88dd2b8ceedf0c8cd4291%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092616Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=913355bdb2b2fb124b14d06464fdb08a54fc4d81453ed73d42285edb28a171d376eb116e2cddfbcc3bf42a59bcec7a5409bfc06a6d833ab014dfc2869501df580800bd72c78a949125338cc3764379aa61bb89d5415efdfae5c8c33fe2fe6dd73397d976dae4286d40ae069d786ab78e39b103dc698242adb6f6da3a617a1aa6893dc84bde63d43bd3c3ce1053a07f558e78bcf0a2b9089d224bfaeeccb0b7cfc30ba6888631b0bfad1b0d9b7c1ec2e943b4ade22be9cf05aa9f93e2a24aced9d64047668ec3ed383b038e4b037f0eaecb648a2bf3cccede7e4e29502379097968544a4cbb8180ebda109c27e15effbbbec7667613890aaf14364c3a5f5dbe67\n",
- "Processing image 5590: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:0e68d6eca2d74b5b138b675133c425bb:00110060\n",
- "Processing image 5590: timestamp=2011-05-06 21:53:18.954660+00:00, observationId=o1:0e68d6eca2d74b5b138b675133c425bb:00110060\n",
- " Error processing image 5590: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0e68d6eca2d74b5b138b675133c425bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92f5d3b1d5e29f92823d60930e81e0025dcca7d10dbe1f91a0e1ee7bfd819576f5e7ef0e7e8131012600bc7c4c7f9360ca216e5b4b3cc2615c805cccbaceb38267c5b1388c8ad96e5f56351aa39e5901360f4ed3043d68fa21170b8debd49da86294d8cdd48bd5bf8c6b43444fe204bf7b833c17fe31de476d077915698b6d79120e32d2ac60dbc7512d5b5d669a20ce9f81fe7d9d631f1c3c15088f4fa16caf56a2a96efc5392f173b8dae08d473313c9408c1b6e2f63aca26b86c3d729739f4a3fd5be397510aaff4fcbfdb818eba670056fbcd2258acf397f23b1395bfb708043cd50b9473e1fa71941754ded95791faf0ea44e48bfda5a21783e5f3ec009\n",
- "Processing image 5591: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:9fc850b0a729aee985a3248864271dc3:00110060\n",
- "Processing image 5591: timestamp=2011-05-06 21:53:17.709391+00:00, observationId=o1:9fc850b0a729aee985a3248864271dc3:00110060\n",
- " Error processing image 5591: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fc850b0a729aee985a3248864271dc3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31dfaac8bd64cd2adbb8c82917e3dd9b8b0830260b26319a471023e75b3badf94fb687427d306e472a69caaf5cec1a3ec8553d1067df5cb4717c2d38b1ccbdd5221976e0574ea963b6734c22c04a0ddd285acc6866e4e8e304f496d2d22cdef8a0d454a3caef34af6d4374846dc60687f277933c9435676829dfad7d56104507977fcad5b6e1c852e2aba9d83f26be22f075951a914a7aa496c6952b7f8290193e5e7bdbcf5684858e2dfb1652a24144b783f5834b46e3c412c54e2e0dde8577397ff55ec03f9f2b3776d413a7e2c8d0dcbacd9ecf35d72402161d8ede271993ce4d5ea3f3033c6df8eb5368c1712c8e01ceb2366b81396470f0e11a2447da12\n",
- "Processing image 5592: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:1f838f53a1fd32c0318b328940d8cdd4:00110060\n",
- "Processing image 5592: timestamp=2011-05-06 21:53:18.545253+00:00, observationId=o1:1f838f53a1fd32c0318b328940d8cdd4:00110060\n",
- " Error processing image 5592: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1f838f53a1fd32c0318b328940d8cdd4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1a9b80a3e970ba13890c19a7949d4e97aa0aef964ab75e5241dcb264bb0c353add45325cef8b97b8bf3c75d567ff8b7de0e2fe1d859ceb727261318ab3f8a26759fc67f7e2dde9605bb874fc39d8b0d1439027e0ad09a2d5664d422a0577c1a1345eb2379a96744b4615aa2607637fb8e7856e03c52eda3f2494c3d63e57348ab84d929465f538ebe0e628a8f889e874386082e892df4d8259f4731c3ebada9d9494dd17d259afb12534bf4b5a0467f9afc969038295988bd5b94830a09332de1d7ddbb6b2e93cdeb05e444e038e1a71d6cc7d1b561b9776935b382e047b0109714fb6b96c72ba6969607c4cbd169af1a02ea04b7233e9e4d240ec92774d79f3\n",
- "Processing image 5593: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:f03a31a47971a987b3a5199fc6457394:00110060\n",
- "Processing image 5593: timestamp=2011-05-06 21:53:18.136021+00:00, observationId=o1:f03a31a47971a987b3a5199fc6457394:00110060\n",
- " Error processing image 5593: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af03a31a47971a987b3a5199fc6457394%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=459e38d17f9c83437ef52ade5fdb5c496d8c466402929caea66119ae01272b40f15d92807ba2787df1fd7d50a6b3bfc2cfa7cea972d719c276564837075e007b7fc9b4d38118b2bd0b5168586ae40f1daaa213daa4c4cbe710524294c1081f304515c8652a84326fba2048ac1347aa696db49be5019682dab7b78861f6d737851d8fc53f5d378df82794366758f042febda80d850ff7ac2460b80b3064b64c9e8548b7c51f80e33b0ed0bf5b5f033fdec5f24891ecf8937034bc71faa1d525a57482918d30cc46f00a3706ca83f9c0042a1cec0b96757f57b244d7ffcc949b5d9abc592dcaabf93d6b1588232a19e2cf6717050e0cf494b0c77fb326ecf4a425\n",
- "Processing image 5594: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:7af7f6cb11617f5d3572b54c2816154a:00110060\n",
- "Processing image 5594: timestamp=2024-04-18 17:35:14.855802+00:00, observationId=o1:7af7f6cb11617f5d3572b54c2816154a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible on the side of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03282162009692583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=1525, total_token_count=1586) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:7af7f6cb11617f5d3572b54c2816154a:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.855802+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7af7f6cb11617f5d3572b54c2816154a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=50d519dbc2982f039f699f1f32cc6ad8f6e12c8d8eea822eb8441adeda06f853ada040c4f74899cc04715919b13a35e35436ab6e79e7d21e36f206c91e8f2b9a40b14b324b5c1fc417da9f7c5f2e7b0f4b245d9fe3a0c654eb4fb7ddcd23bc3eacf5938a34ce88533235fe834cbe2ba622e73e8866c918af2babf5689bedbef5165b8a9365f398c154e365f575d8dd7be72e9bafa5e087feca0874c5b3b3d7befc96c2d840150970327ba944334ad1b9aeae56c9fdd6e84d911a2a3c28d5d5e52d21c4727f3151c7942d744a01380350eec66fc01b79c08aae8f87e2e4aaa5d320fb2c6ea134ab938980e3fa9a3699ae0c330bc67f1427c832ef92d3d5501338', 'category': 'Other', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3577.0, \"x\": 2002.0}, \"hi\": {\"y\": 3767.0, \"x\": 2069.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5595: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:26e715e50258c73b0b3221fc77e37ec4:00110060\n",
- "Processing image 5595: timestamp=2024-04-18 17:35:14.111720+00:00, observationId=o1:26e715e50258c73b0b3221fc77e37ec4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with a white band is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14799082906622635, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2041, total_token_count=2098) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:26e715e50258c73b0b3221fc77e37ec4:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.111720+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26e715e50258c73b0b3221fc77e37ec4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=047c2a591776a94fc62de5fd8a0f2329a48163e99e1b2f42c587a13adaed34e3f1f6574714cdc8758c2756d7af0ae714b79762447bcad291c9d89bd15c603d92563fd2ec0a5f5727af4e957f5fb8d69e717b81159e8259d596a71568e254aef6e70245a8fd1ddcf323b5d3ac1f58cf526db98355e7611b143dc189b64f1b01e7d62f7614a8e81598167bb8a9e2c6d5c1d4128c7ab2f200be9b038d5f288467236fafa91037c93668fec13c7f99a91ae723a5e7158c61bd6c3e2fdb66e1d547472835ddc0c921a2b5e753f72d1bced82ce2a2f7a7e888e3a148a9279251573ea2ebcd86f032f805fb03d8ebe94fd4d847c8975f80fcdf5f5d6d2822d9036fff34', 'category': 'Other', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3065.0, \"x\": 2551.0}, \"hi\": {\"y\": 3445.0, \"x\": 2671.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5596: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:adbc06dc7a380b37bb10f7050911a8a8:00110060\n",
- "Processing image 5596: timestamp=2024-04-18 18:21:23.010406+00:00, observationId=o1:adbc06dc7a380b37bb10f7050911a8a8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is not a standard road sign. It\\'s red and white, and appears to be in fair condition with some dirt or wear.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.296492243922034, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=1525, total_token_count=1611) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:adbc06dc7a380b37bb10f7050911a8a8:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T18:21:23.010406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadbc06dc7a380b37bb10f7050911a8a8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03cb7712f6363d6a47b9f96573100a5bafeb4366e79e1264d7540a513e8a87859ee7bf047d03a3b1e6a0e48bad05ca38d9a951a1e130ccdc0b7cf91f3644a37fe0d9d46d0c8f8b9ec4661a83559be6bef1f2ff19e03e3158fba21d6648a2665dbe1d763a4a853d1b1f06838338bcb10888f9b7ecafd96791c7a8154e73880c810dc609bdea3c6e286543609df159a4aede807ecf5929e6be9b79f32057ba2350b0d4d9f9dcfc54faeb46af643bf36e374ef7ad98bf8a40e96c8809f94ad1a288e765ff302da47db7016bd37077a59809301267974b9ee6dc9366488f24e0853a94f583a99554ae8e2a4e0a1a62800c3a128725ad2eb7ed5887d0664a53c38aa4', 'category': 'Other', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2729.0, \"x\": 2155.0}, \"hi\": {\"y\": 2932.0, \"x\": 2218.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5597: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:b27ba615afb48192d151972195234c4e:00110060\n",
- "Processing image 5597: timestamp=2024-04-18 17:35:14.483794+00:00, observationId=o1:b27ba615afb48192d151972195234c4e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white traffic cone. This is not a traffic sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17139675657627945, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=1525, total_token_count=1584) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:b27ba615afb48192d151972195234c4e:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.483794+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab27ba615afb48192d151972195234c4e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1e09319b22bcf4088a7317bc5974131114811740c68f2513fce209dafcfa6c34ad62a40c5dcf4b72c577cc00c40d4e7c6e779c96567d17c687e6811a85d536d401e1c02b71b294a5f1c9c7d46ad91e92135f8dabd350f1cef70b202a5430671a36979d7d4cf9fb2f76e5c5f51f905d47968da76e64eb2e9333a74155d6703628dd743170df19c0def7364b103a18e8f050574cd6594b6d90842bb643a4254ef645d84669d855bc69057e6cc31dc926412dbda0e51abeb3ead5a585da42d67784281dc552be15327c6fe04bd382e14b66b31aa68dc32e81b99eb97bbba609f0135f17538945c958a35564e85d51f1a8d4414f5b3d15ce5f346df647d854f60f23', 'category': 'Other', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3742.0, \"x\": 1252.0}, \"hi\": {\"y\": 4021.0, \"x\": 1345.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5598: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060\n",
- "Processing image 5598: timestamp=2024-04-18 18:21:22.686395+00:00, observationId=o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic control or road construction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19159318506717682, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=1525, total_token_count=1589) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T18:21:22.686395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22f3c8a1e44ebcffa9e9a90a720abc45%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e93d3afd45973f4f0f9536cfe0e27d1881f68ede9f06dd7952562c9bbb744faa73b64574e5aacd98de641fa01a0bd72b89321b2cd87a9f5b5d1d0e9ed1301420b99b5800e94560e5888c2331343f8b21be6484c34051ac5e72ebf622bfb4127855b8e2baa9eee79ef601ff2f95e1857149d2a9dd6307f5e33d99b46c0966b1fa733285ad2d5b6f1c413a9a3a053e9780eba459b878a336739be265562d853c15ff3a9a7c70537b20894775a0f881839eaa0848e95b8fc09588eeeb75176ede4f8ef9bd0a660d98159f2e55872cb69ba451eecd1e5d0c5158ddafbaf124184aa4c5d83b98c66681bbaefd4c7f8a8d04cb1bb5033d2af6ba6dd251048084e7184', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3623.0, \"x\": 183.0}, \"hi\": {\"y\": 3810.0, \"x\": 248.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5599: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060\n",
- "Processing image 5599: timestamp=2019-02-14 18:53:50.267547+00:00, observationId=o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be a \\'Visitor Parking\\' sign.\",\\n \"image_quality_notes\": \"The image is partially obscured, but enough of the sign is visible to identify it.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20303213092642772, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=1267, total_token_count=1338) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.'}\n",
- "image_report to be inserted: {'trackId': 't1:0327b24885a6db71f0e84c26dcde149e:ffff005f', 'observationId': 'o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060', 'geographic_point': 'POINT(-81.9751876228692 28.0179646265678)', 'mapsURL': 'https://maps.google.com/?q=28.017965,-81.975188', 'captureTimestamp': '2019-02-14T18:53:50.267547+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4e7aae3c9e2ce373197aef6dd8360dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8e2314403a002ccdcddea18166ebff5ef6b777181f9ce6a6e12e63755918a08dd0e22e87c6f7928fbbe769428c9b978db3e2bc1c0f5bd4055a52cb29397fa4b4dc384afaddf565bfdbe4389ec32db811bf854a88b3e4c7a7281228c027f3dfc2511de8a3062c271d116ec08d2ea3dafb4f7042360ebaeb6d92684349a8330133494ed45779ab5b3a10e2fa48b0708a8afb8a78a1a316ddf5ef9a4b6d3f387c2ce75b823584f8205123da735ff1f0c383eda87afde9eb1ee9e0e4684c74a89f40ce47e6c92c0108dbbbe365ba62217706b5186d4d6b0fdca4c6eb1ea39d00766d30aad5b71bbf26dc5e370c198733cbba206a3dc7bed2e142e22a9cc14961cb65', 'category': 'Other', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 0.0}, \"hi\": {\"y\": 3226.0, \"x\": 48.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5600: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:480537dae17f240a6ea91026cd715d95:00110060\n",
- "Processing image 5600: timestamp=2011-04-28 20:53:58.936054+00:00, observationId=o1:480537dae17f240a6ea91026cd715d95:00110060\n",
- " Error processing image 5600: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A480537dae17f240a6ea91026cd715d95%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5be4f7c209dbb182faa7f70dcfe140b7726165bb69219a0e2b9552fd5d2d62619a97e046ffc8e0bb2d92325b10e33147b8530200e32d0b9f61b7d048a286ec3f00450711160a1277a02991c473abc885670661d1d20bbc3be7ee7885b9933b474220f4101dcebd759622c831df9cc9304dffab1ab5b1808634273c77437f8fd9dc156764f7c052f8d8360e071452fd8c4f2037426251acff2a41dace87ab1baa0fb2fa62d3b7a76770ab170d42baf88f19caa150bc2e7340ddc68e3a9beb77c85a853c10d3d0df9569e394d3ad2ecba71a32a32edcb905957f4218c761b6d2f142e10c1add925d81ffb4cb5855d2b15fefbfe91a871746b8aee246cd4d81f69b\n",
- "Processing image 5601: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:613b4d3fb7b3b24820754c4fe04397bc:00110060\n",
- "Processing image 5601: timestamp=2011-04-28 20:53:59.767109+00:00, observationId=o1:613b4d3fb7b3b24820754c4fe04397bc:00110060\n",
- " Error processing image 5601: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A613b4d3fb7b3b24820754c4fe04397bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=78b3591b161b69c878e61978ae87bb55c6f03b9184058b46f53c77a0137ceab37763a76fed01933aeb5b741a265bb75511bef936eeab88d428abbf6c1015531750895aada9373e01c530074d2539ed922954500a92d51296ef375e28b21576a2b674a0b7adae90c6d20c945db87fd116359c324c9d5e6693cb6b420ef59f300eeec26c22feae9e6173eda9d7a6aeb31f5afe46d874391a0a4601e6b140ca6ec0d07cca64609589e7bea2e7621b9af0ac9677601e43c47bf2b35e9cf4807a434d6b55d78ad4cb3e9180eeb3b4dbca4d293c87f09d4962c88e907628e3846736a111b9d95e9146d6abf9f352107c5afb57a6963309178140f24421407569c2cea1\n",
- "Processing image 5602: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:7055825f2978e310ef6fbb0959d0a2c0:00110060\n",
- "Processing image 5602: timestamp=2011-04-28 20:53:58.148699+00:00, observationId=o1:7055825f2978e310ef6fbb0959d0a2c0:00110060\n",
- " Error processing image 5602: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7055825f2978e310ef6fbb0959d0a2c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8af9e3f257663a79d5fac11fe9db9607cdca1926f6ef63fdfc93fb06a1637fbea3c6b393a1d081cf1a1c7dd8f3b90f13cd0f1128335297efbb86f9302e3d23abf32481a65890d331445053506833bb8f12925764e28434165d17462af68ee1056e3e3eabf2e72b2906fa53b64ac1b794e0893366662a15ec96538d6cc2da52a239d0ce00b97d2180e4c7e7990bc0a017372eb0b60549280f5179c66adfe9a66b7eda0be94fea3a0ae34511551a1f0c251c7dfc0b7b8cae043bff79611115bdb62398f7505921182aabbbaa3357ee28841ca43f246e9e23fdf9b85828ccbe579c7150ebb8b30f38ef7b9144df15e10f98819c66996ec437e3cecc2a55927ec8cb\n",
- "Processing image 5603: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:96b1cc0d01f6a84aa1287516ce971445:00110060\n",
- "Processing image 5603: timestamp=2011-04-28 20:53:58.148699+00:00, observationId=o1:96b1cc0d01f6a84aa1287516ce971445:00110060\n",
- " Error processing image 5603: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A96b1cc0d01f6a84aa1287516ce971445%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a687a251c4e2b8f1bdcd1846e80504ac9fe26046fc85239deb551f53fe88e9e74a47a1337902e6b768f81999e42860a4a04fff127edb7fe6065ad2aa8a7502a1406b9051dd0cb07d3cf0aa55f2500d2d30e22bb3d38c6d4183a8250190109efb0c97da5e51441733517937abb3698a685c1703c0cfd584acd0a645b429aafd81f64f8223850fc60b859789ab4f271d854cb487b341932d5ef498943abb6b76b6d71eedf3f66d4133b1a71f40b9f87801799355fa3ae6743bed3a172cbdf00440f9880e48441b4b94f9c9590450d1a58d837c04d9904618d261d9bf8236ba0289730b9b5c6386c0d4b0613e5add383f237ec51190a3f03191b3f073a8c9ed6e0\n",
- "Processing image 5604: trackId=t1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f, observationId=o1:36ccc08998734fc6148fd284bb02aca5:00110060\n",
- "Processing image 5604: timestamp=2022-06-22 16:31:01.415867+00:00, observationId=o1:36ccc08998734fc6148fd284bb02aca5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A street name sign indicates \\'Jewell Ave\\' and \\'900 W\\'.\",\\n \"image_quality_notes\": \"Some obstruction hides a portion of the post and obscures the background.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44718098958333335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=1525, total_token_count=1600) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.'}\n",
- "image_report to be inserted: {'trackId': 't1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f', 'observationId': 'o1:36ccc08998734fc6148fd284bb02aca5:00110060', 'geographic_point': 'POINT(-111.917060146508 40.7287722908176)', 'mapsURL': 'https://maps.google.com/?q=40.728772,-111.917060', 'captureTimestamp': '2022-06-22T16:31:01.415867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36ccc08998734fc6148fd284bb02aca5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0242bfce48c75fdfe132998595e5db0c4e279b70d7d078a8429bd31910f58392b5cfab7394a99f57ed65aff0950c24bc6bec73e4e38211dbb767abb3d66769569aecd189dad7ebe97a858980a1843378d42f674b7dbe763a086fe2a901236d7376594cd56e8f3b0b33e696ed2c34ed1e2b7bc9004ee9cf97a15b44c72355ed19cbc3137c21df29723182dee46114fb8b6ee13ec47a86bf06b7e35a09c9a3512297ba639c9d942375497934a622791b2954434bb372cb11d9b40b96bf04d04757bf2542c51d4e34b6d329374511db20be6e38ffed196c5f0375b04bc44188bdb53015bfdec259de10951ebde0dc501eef32c3436bc8a784dc7486af9877de2798', 'category': 'Street name', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3140.0, \"x\": 1060.0}, \"hi\": {\"y\": 3175.0, \"x\": 1175.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5605: trackId=t1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f, observationId=o1:0b342da631ac3618b388776a195bb719:00110060\n",
- "Processing image 5605: timestamp=2022-06-22 16:31:05.139805+00:00, observationId=o1:0b342da631ac3618b388776a195bb719:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.02374148802323775, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=2557, total_token_count=2612) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f', 'observationId': 'o1:0b342da631ac3618b388776a195bb719:00110060', 'geographic_point': 'POINT(-111.917060146508 40.7287722908176)', 'mapsURL': 'https://maps.google.com/?q=40.728772,-111.917060', 'captureTimestamp': '2022-06-22T16:31:05.139805+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b342da631ac3618b388776a195bb719%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092929Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f3d0bbe40b1d211e45810ac57e4dc95732eec7bf4f1c3013290c249f219a6e1a1af32f01cc5042cd0e824bb5cccefa071db712e72245d2b36bfcc57f557a4330a065dfbb3b545ff716dd3237175553c5b3a78c48418333bf86960996df0f5ea701f6762532a9424a8e3fc17b8e36b5a5e0b53bbac6a37886479b517846629b32f953e947ea29712ce9de3ed2c203bb23bc885c30ea4882256a80516ba883a8cc5de5c904615ebf1d62f50118712acf1eadf1cff985e8578eaabe41ba463f309923469d5be90868ea825fa0cefa0a6b9e5e17407d12af31e4061914d4bd91f69c0e95f16d00e87c11f44cbb47a60ecde179621b8b57cf854bd6f9103ab5cc7a2', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2136.0, \"x\": 1687.0}, \"hi\": {\"y\": 2204.0, \"x\": 1950.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5606: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:777b24ceae30e31599f9c35099f435dc:00110060\n",
- "Processing image 5606: timestamp=2024-06-12 16:42:58.551490+00:00, observationId=o1:777b24ceae30e31599f9c35099f435dc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17046989094127307, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=493, total_token_count=548) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:777b24ceae30e31599f9c35099f435dc:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:58.551490+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A777b24ceae30e31599f9c35099f435dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=38d7d534716c40cd56775ea6f43e46fea8a61293dc0ffda3c90f4447a41ce8f9f5bbb0ded4cce38b415701c34569575b92d8b0835301cf25ae4b703571fe699621699c831eff48395597fae2695f329cccc9ef604d1aa683875e2054dc11512d7bafa8bdde3fad28bb52369f66cdd5bd8e0657d35313b587f5a4df1f378ea6f0ccecb7a21f9274256495c19de130dc68c25da627b47fc37a5bd6232fd0fe4180b9792c929d6fed8cfa11e87dc7c8795ce3e76a0944c098581a972e093f923be336891bf0dfbcf7cd6b300523150492a83e05f96a4cc739dbdacd981f6eb7f6f40314b46c0012af5683714d012b87305ec9d6c3c0c428019c01c3f2b47c8e24a4', 'category': 'Other', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3388.0, \"x\": 1083.0}, \"hi\": {\"y\": 3518.0, \"x\": 1116.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5607: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060\n",
- "Processing image 5607: timestamp=2024-06-12 16:42:57.351494+00:00, observationId=o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a traffic cone with alternating orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15583587905107918, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:57.351494+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0582929e8ecef3b0c3debc24b1f45ed1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a0ba03ad6b7af10cd4b61265b78d4fe037f61c2ac9c176652e9728a47c74b6099d3e0df5755604ade135febe8f37361c18162044134584fc9d6e81f9c99b3df3f42750d6b1bd0d1c6c2f6ebd8038226e49723b4b9ebe7abf5d1ef9af6fe33aa8b50df02f71c3d571bb1f9233c3b54d5fa18b3e5b932e1cbe143588e882df2632a0a740e3a79465aeea55905eb6de7abde6c3083de1f45736e6659632452b5bf4bab461705d669bf0d58226b2e7cc280c921adf07aeacbeab723fe663ca029af991fda4712b596d3d5caf97665edaeae0254bf47fdc35aa5da84d0f7409dacdfa07327eba6632a1cae8b5eade055a51ee52d191e0c7a4f8f44c740788736d1c7', 'category': 'Other', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3316.0, \"x\": 2124.0}, \"hi\": {\"y\": 3391.0, \"x\": 2149.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5608: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060\n",
- "Processing image 5608: timestamp=2024-06-12 16:42:58.851413+00:00, observationId=o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white striped traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06479380005284359, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:58.851413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68a3a9eea77910e1154acf5c27d0c0f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c5926890357a23dbdf9007241da46c697ec9465eaa1cea440eebd2cf87d62a5604f074a9e573811c582b82716f65f9bf75ff711f8aeaef3816a901aeb428cf5df82c9299f3aeec9fd990fa89bb21e23220f1368c2b33ca2ab2f9408a757d99b456fb8ac7d3a34525b7e911927cb769697cf74053179731d36f0b6c374cc6c6b5813197b11cf96597c899f4a2a4618c1b0c67b7ac34f4f706d362378362c9ae7b202f35f97606f2e8d4b034a4cc95b545cbcccd8c3fc3a8c1bacd6f301be90b2eeea5d9d9e8e3b93698df212a3b1d89d146eb1214673ed5e0e029aebcbe64c10f49d006a1a97a8d18857de2b8ea31e6770243a7825b22a655c774a23fdc7a93a', 'category': 'Other', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2553.0, \"x\": 3610.0}, \"hi\": {\"y\": 2706.0, \"x\": 3645.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5609: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:fe8fd5f14dbda5ff947516c15bcdc41f:00110060\n",
- "Processing image 5609: timestamp=2011-04-26 18:04:28.804994+00:00, observationId=o1:fe8fd5f14dbda5ff947516c15bcdc41f:00110060\n",
- " Error processing image 5609: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe8fd5f14dbda5ff947516c15bcdc41f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090834Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a584e5a1eadc5ea6bc1fefa8f3524efe8ac093d88bc55bb9272ebf7379d111aeccdc1dba8e671a91c0cd101fae9bb7ce35e580dffe3eb02fc4ea1ad24023b38f2af355c2cd9878a1d35eb99c60bc43b77a3fde138b6642293c3e63a219edb8186135c485ef3a5f8332cec12e96d281ab206a4705d3ddfdb76895a4164980308b46d77441033e62257799eabb7af276a82d90c0704c999b648aaf3a83c54e08b05e524fb32e160c4f6553f4ec9d566ca3bdad202124593aa7e5c6227d237b758dac4fe32819635edb0664aa119d5d2f69e2fc8ef18b73b3703171bec355208fa08692420a9ffe07b181fc3c06e844dec76e67f7a36f93aac6ab9f5a85c619fa3\n",
- "Processing image 5610: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:101b6dd350b993dbb8e4a90be822b799:00110060\n",
- "Processing image 5610: timestamp=2024-01-09 19:58:16.515213+00:00, observationId=o1:101b6dd350b993dbb8e4a90be822b799:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates street names. The top sign says \\'Pipkin Rd W\\' and the bottom sign says \\'Kensington Heights Dr\\'. The pole appears to be slightly bent.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24354371679834572, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:101b6dd350b993dbb8e4a90be822b799:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:58:16.515213+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A101b6dd350b993dbb8e4a90be822b799%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=27356f7e4d0c061c8352770ba0d26628ea07758f38e0da33de9acfae317f1d0b3cab87d7e0682a1dba8f47b9d1f8fbe75eaae0f6fea32f8a15464ad4b6cc35a87fb1e9b2e1148f32faa2e125cc5c430102394559b3bbcb5be8d01bc225a18249558a2c3269f4b057359885129e19407a977c3fd41c5187428b6762de1bb402b882a18235da076d7ed0da33a88b5bf9b2c1a2a7fe0b9c6a981074707623df23c5e792a6cd62bc960323e6c8313e66645fd962ba209346785ef6e01ea351cb53a04823e6db0bd623f3eac786f5afdbcd2b74f805ab63f24022c6336c50a202ecd3ae1c1e5d0ae558d36206cb56a11795f0b8b50be46958dded6820131f02261d8d', 'category': 'Street name', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2277.0, \"x\": 1703.0}, \"hi\": {\"y\": 2510.0, \"x\": 1995.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5611: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:329771adc7dbf030369ac8b931aa9961:00110060\n",
- "Processing image 5611: timestamp=2011-04-26 18:03:02.560067+00:00, observationId=o1:329771adc7dbf030369ac8b931aa9961:00110060\n",
- " Error processing image 5611: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A329771adc7dbf030369ac8b931aa9961%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090832Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bfa84f6fa9268a95ac45c53f67808feabb5cd66e289339c7946c366b68454ef8cc53f4d86b0ec607f4e215ccafcefb60dfddbeb3ebe8c175b693f644c51c36309978fac4a855496162c7ee80aa59e9a8d8f81c6cd1592ec3ea9d6b17a6c72545f78ad90851336ee63c848a58566ed076d143f663f6b798b5b6ecb871e9554acce1103e53eed5b1b6e0f085916744593ee5367553f8b95c286d97d092bd407295037de551ac917fdf32a802ecdad995a0d3d4ab7817c870837924b3f1fab1c6ceb4a9d06e625cda854ff7605b94e901658a8daf9e9002983dcfb282397032c58a5783ba6a74b296526cae34a2b469106202f8bd1d9b880d8e04e2169eec76aa5\n",
- "Processing image 5612: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:16739eb43a5a8272cbc788013a877ff8:00110060\n",
- "Processing image 5612: timestamp=2024-01-09 19:56:59.932899+00:00, observationId=o1:16739eb43a5a8272cbc788013a877ff8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street name sign with \\'Pipkin Rd W\\' and \\'Kensington Heights Dr\\' written on it. The sign is green with white letters.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the sign details are discernable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2588581720987956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:16739eb43a5a8272cbc788013a877ff8:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:56:59.932899+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16739eb43a5a8272cbc788013a877ff8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b0c432875356f98e4f02d4aa13f762ee045e4391b277b75b9ddcd5f3b32ef927b03fdc81ed0d459ae78198cf7f7769aa2b02e7e15f98c171945959eae649b554e28506f07aca3a37fc7018a7bf4f3224b7ab37efb397913b3cadcf1dc2d932e15a57b1cca7abbf58a5c61af43872fcdd0b4f018281cae52d8eb79d1246e10f241c5d908dd30e2fa8e7366fb1a3c9bdb9b7d31d1dedf235af343b90d02cb513d92c16e33ad674ad62e2b5f5e5d9cf7691b89ea3c6ba3949177a580629ae3a759f2903a3796c5016625617c6df7e3402229c8138a2b988eef5a567760ad20efe9c540ae28896444aa5afd9d5b7f687157010c77d4fe306627600ff84257c86590', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2376.0, \"x\": 1780.0}, \"hi\": {\"y\": 2684.0, \"x\": 2134.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5613: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:cb4b58ce644543c4f9e7e205c9399860:00110060\n",
- "Processing image 5613: timestamp=2024-01-09 19:57:02.280890+00:00, observationId=o1:cb4b58ce644543c4f9e7e205c9399860:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs. The lower sign reads \\\\\"Kensington Heights Dr\\\\\". There is a smaller sign above it that says \\\\\"Pipkin Ct\\\\\".\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32819957267947314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=1525, total_token_count=1607) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:cb4b58ce644543c4f9e7e205c9399860:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:57:02.280890+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acb4b58ce644543c4f9e7e205c9399860%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0fb940d6f63bfb6765d5e92e603fcade616d91df8f408dadfd55b5f114f64841687504c4c44b5eb9b4e873917a8bdecec2c2e06969583c605442bbb4af1dcb5251fbaa684c7247cc4980dbab8e45c73874c193e98e891cad3035b452380cc59075bd2f06fa7ef69f8c298537d7ecbda50a045515b4d46703345a2f36db9501be23da8fbd3a7de7dd0f60f9c999a6e5a410f0e5bdc3d131d194199e77f16349d990ab9c60b99770f4064b4c6492914f2e489caaf4a04adea3841fd65844a5e4d289fac51bef2815659636df3d730b194be2139a8093c3e56a9d2a476c525bf7b9c3e96201bb7ed4467150a3f65001c2020ced00b11853b6a2a2ae2b89c81bdff', 'category': 'Street name', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3299.0, \"x\": 1796.0}, \"hi\": {\"y\": 3421.0, \"x\": 2187.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5614: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:f8dfa1479e28620da803f831fc4ba77c:00110060\n",
- "Processing image 5614: timestamp=2021-05-24 17:16:11.699236+00:00, observationId=o1:f8dfa1479e28620da803f831fc4ba77c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5186366766271456, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=1525, total_token_count=1596) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:f8dfa1479e28620da803f831fc4ba77c:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:11.699236+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af8dfa1479e28620da803f831fc4ba77c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9239a782aecaaea2f6fec9345ad6c8743404517b51d8406ba486565a3f8cd52a150dbd45bb86be7f4d968e49492bc225ec708e054ad4d266ca42a23a5e8758a33921ec846352fb818c4e0ec83e33b82c698358f552fc20e6084b1ff1430f2c391abafe7e44d6b450a79525aa934bcd4555406e1f1c5799b2842e0928e3b3f2ec7b9b0759cee5c0e54e794516b2b70c5205adfaa0da50a774ea83283afa8f56813a73b11d376cf0e9e1bd08df467d11e59f77512f3846ad6b7fcae30fc1035beb8f80958f73142d4baa4fd8ed0951c9113f58249666f6e483fa7971b6f68a927caf3dcd709ff1d4c8453f9bab8274d0b1734503c1cf9597ce4ed03e5c84d081ed', 'category': 'Other', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3648.0, \"x\": 1727.0}, \"hi\": {\"y\": 3912.0, \"x\": 1804.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5615: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:e857e1d7d33ecfdc404c073db6459b35:00110060\n",
- "Processing image 5615: timestamp=2021-05-24 17:16:12.151282+00:00, observationId=o1:e857e1d7d33ecfdc404c073db6459b35:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2669039045061384, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:e857e1d7d33ecfdc404c073db6459b35:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:12.151282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae857e1d7d33ecfdc404c073db6459b35%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4229d39e85cf5b27c80c387ecdb6362c1fdb9b4bbb2cd385ed5946ad529de21866ad2425ca0f1c8e9f8759ad1a4e58cfda95a7f1e94c0c635183d57bc9352e21ab570021f6e0dd69ce12e381b11b024372ff4655ddf533a0988a92e247a71ee232ffc6e1b2382ba7117b054ef4b8b5d37f86169b8fb27f0e0476b0f35115d4ed8fedae9755ef8b481a0038b60d3536eae23a34adbfc9f1877d0802f485e37f69b8b9da130fd0663ef3f90f31b78d6b04e3d8b225ca392fd152859bec49061ac1dcf0ad74b8f57d5f2fdce85a6d0d1c692855fcdcfab90702628bc0d3953d211183f81eb6a1f345497e1cd98e515df2cca27c8e4779d25dbfb79ece6bfee94ca', 'category': 'Other', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3823.0, \"x\": 572.0}, \"hi\": {\"y\": 4257.0, \"x\": 695.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5616: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:15a8313773faa46a3800381994c03b77:00110060\n",
- "Processing image 5616: timestamp=2021-05-24 17:16:11.243288+00:00, observationId=o1:15a8313773faa46a3800381994c03b77:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29689242234870566, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1009, total_token_count=1076) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:15a8313773faa46a3800381994c03b77:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:11.243288+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15a8313773faa46a3800381994c03b77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4df91aa56cc228ce6035a1e094953ed11d08b337bb1f0ca20f2ad67ea256b2831f35ce90b00427a99cd1c6cf2074130e6ecad281e3aad937b7c227d7e9cfc46e339da41ed9b14ac779be39cfb14374eb41d2ea11163d05d4472e97ec93bf652e2292b9be647e48d0437451f285961524d68df339e9b1ed836b866542a040a3da320ac103834949f13204cf37e2185a1902fd7cb38788a4c4f5b6ce6ae00be9302bc881d33b044b61d86d474153700e7c084c7701204901a833fa2c253d8a83dde21d6911e7a2db86cc9b7db7cc6ae7bb3201093abf2c3589b558acbedbf3e55977d805fba98eb9829554839ca6736384a878e7b9e9299bb024c79e014885b15d', 'category': 'Other', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3505.0, \"x\": 2262.0}, \"hi\": {\"y\": 3701.0, \"x\": 2316.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5617: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:2e618f1865da5da51903263c28872b16:00110060\n",
- "Processing image 5617: timestamp=2021-05-24 17:16:10.783238+00:00, observationId=o1:2e618f1865da5da51903263c28872b16:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33095462286650246, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:2e618f1865da5da51903263c28872b16:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:10.783238+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e618f1865da5da51903263c28872b16%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091724Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a41f40f4d9e0bb44a5b38fed9cfaecb8085114c059311a4437f27e917f805555ba2ae3445df207dde6ff0decf68c3a9a9a00edba073405200fdf21b6248b5b3e8f209e9c852bc1161c99e960e751b65a45370f0a5e3fc8299d63b5922f5591cf466fc77e75fefd5e8c79fac26ac3e9c31c82fd97fdfdb27093c6952a898f70217b92da6a590fa3256e1f0ee5bb2e192a7db958dff178df3ba71936d4126dc29a4ea27194b732c460f9a27e570887f98376fba3ba78cd9e4027e407f02d3e20301348339c980a7d000c3bc78e2d7454a7594e27585b5c980a400f2119873550f4f6592098388ea219090e5a762c255b471555515a94b5c75674ab7b62a00f5e9', 'category': 'Other', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3444.0, \"x\": 2546.0}, \"hi\": {\"y\": 3606.0, \"x\": 2592.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5618: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:012269ba671f6155ab73211560b5ab1b:00110060\n",
- "Processing image 5618: timestamp=2021-05-24 17:16:12.151282+00:00, observationId=o1:012269ba671f6155ab73211560b5ab1b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A construction barricade with orange and white diagonal stripes. Indicates a construction zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22349446718810034, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:012269ba671f6155ab73211560b5ab1b:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:12.151282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A012269ba671f6155ab73211560b5ab1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7778b47e8478a24af21b6a8e64b47d7bafca69806a9384a49cff09be7a7b2b1933083954fe0297d083d67cfd37cb79001c57b64f180da88053c0a18631d1396f880b68ea050474bf3f22d7c237175818a2c70b7b3672cbd9d44378cfc84da8a7337d4c49174da9ffaa820d73a3b018b2e2e8edf4e810f82d4574a861828ebe7ae0dcbd44055f5f6994bca82ec42851e691348276e07059b58da87a35947921629116b14b6490fbf68095adee570fc3a7d13559fe4d131b2ecc14f410530336bf9d1d023c8d8706cf13efd96e0c6c98708f7d5c7669fe5d3f1d19d02df215d08110ca7bbfdb5a200d3eca4d43dc6894e820dacc4792d7cbc7e3f6425969f6fcd4', 'category': 'Other', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2955.0, \"x\": 3411.0}, \"hi\": {\"y\": 3437.0, \"x\": 3590.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5619: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:b71fb0df0487d276a6779f983ab33ca0:00110060\n",
- "Processing image 5619: timestamp=2023-12-19 21:22:51.177702+00:00, observationId=o1:b71fb0df0487d276a6779f983ab33ca0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'U.S. 98\\' is visible overhead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1613591078555945, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=2041, total_token_count=2107) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:b71fb0df0487d276a6779f983ab33ca0:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2023-12-19T21:22:51.177702+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab71fb0df0487d276a6779f983ab33ca0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=769502bdfd6ff5375a16c8bd58d17030f9bddda624335836b8d6cf2c7ba5d494297bb5e9a0975b533bc44c8619559cd40649ab6bc819b901a4e43e7169006cc71cca4e13942b8c22bdd4ce76f416c8f9765c012f02b218b3ba5a2aab4bdafb10506fd892e8d86d94fdf576a22aaeabbb4d013f1e693496207ad5afc6d88aa54ab8fa8f2bb3aaa715301f04eef0c4bcede739ddb166b5037b08dbd031b84ab025cccc5e9364f1137325c61b3d82763a601253d88de66d0e399bbbef6d9b2717d0c21c654d51dd2620fe878e94def05b862c7039abf4bc198c731feb4409d5d2259b3a5939db93e721759cc3b6d744c1882699569a02662292bbb1acde76445a37', 'category': 'Street name', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1866.0, \"x\": 799.0}, \"hi\": {\"y\": 1932.0, \"x\": 995.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5620: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:075d2262b48dbbc0994a566a38c6185b:00110060\n",
- "Processing image 5620: timestamp=2024-01-24 17:58:00.192095+00:00, observationId=o1:075d2262b48dbbc0994a566a38c6185b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates U.S. 98. It is placed above the traffic lights.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2952854322350543, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:075d2262b48dbbc0994a566a38c6185b:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-01-24T17:58:00.192095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A075d2262b48dbbc0994a566a38c6185b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2be3e4ce75fcd2b9d7ad9249fb5ad5528ffccf2e521b1c8d904e2de1f8835c2697c73011a14fe7a981a178cbc0885e7a6ad5a3ce2022843eb4db59d4d6177e491579bf14a1e52e721645079a88d0517c14b5152488685c8dc8cac7eed021bedd1dfe27c0e51126935f733dea08a3bc0aa86601f038b817db709a47ef190ef11d0affbaae48b46203637e8c7da4f85b7891eb97cbd73d3885b90041b6a98cc12b1c447bdb28cf42ecc82a9a75298086004117efcae98f7c6f135026d7f8e57eaca75c9d93c1ea2c89710803256163314088d24d92e943e5c77dd5320052c6d399588c34d875b5fa8b43c84bf2c999a4ec89983a39bc8bcc0dd17c03673d11cc33', 'category': 'Street name', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2727.0, \"x\": 3055.0}, \"hi\": {\"y\": 2827.0, \"x\": 3260.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5621: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:fa3075027ed4fc64ed750ffc2b97c064:00110060\n",
- "Processing image 5621: timestamp=2024-02-22 14:24:20.109521+00:00, observationId=o1:fa3075027ed4fc64ed750ffc2b97c064:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'U.S. 98\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11205178499221802, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2815, total_token_count=2879) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:fa3075027ed4fc64ed750ffc2b97c064:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-02-22T14:24:20.109521+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afa3075027ed4fc64ed750ffc2b97c064%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a9d40708d53aaec53f1dd9d278462014afabad769d20d934d49083a6ff9d5aa65994eefdddaa88bd337466fd9db1445dd7b5b763cd048511a5d092f583e85eee78d138ffd1066bf01f41974bc7478d7b37e8f4b8745ebeb71484a9ea760ff2a0444f30126d5cec1f1306f18871dbd8b7a7335a9e2f98faa8e8bf5aff2f550849b25542d5c5ca9c88214b821e6cbd329052e94c292d49aacc899dbd00c1902b5b5404d3c92a9ae9253d3c3326ab65ca94863b4a42517c0d4f13b8b2117c3a5a349db1db11f9236294c108a151ca542bf8935aed1c64420dd2e6b67c4e79ce7f293adb4b286de6f15c631c42ce4d36aa3e23084a9c4fcea8343d5f13a9ddee454', 'category': 'Street name', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2484.0, \"x\": 1124.0}, \"hi\": {\"y\": 2621.0, \"x\": 1348.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5622: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:61cb122246bf00c2630892c578fac097:00110060\n",
- "Processing image 5622: timestamp=2024-01-17 18:21:00.238965+00:00, observationId=o1:61cb122246bf00c2630892c578fac097:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a street name sign that reads \\\\\"U.S. 98\\\\\". There is also a sign that indicates no U-turns.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2554795896852171, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:61cb122246bf00c2630892c578fac097:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-01-17T18:21:00.238965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A61cb122246bf00c2630892c578fac097%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c6388ebde1864f3b27048e65d74a1d5da294e577a49edb3fedf4128cc08ddb979e4a0b3024c85e24e67a45719d29023044f4c7d1b073936e1daae01f77f5359d0cabec159e348873c9c1db7173dbf70bc9d4e176c399024c50d1e3933b4b346c906ac2541f7bfb620e8096912b442155c6b42f095b82102edbf60ebfd9046d30fdd7fcb5ddeccae0756420db8a89a2fba730c9a706a0eaf077d1419868db4c8516c1d6bb2169919c5403f16a66da9ba7e865481f6b9949e65ddc6eb0ff7f35e477f803dee95fc9e0ddcf585a92d472d2c877310056961aa63c5d09f93f2898dfcc543ccb87446355c80d7c0a492127e25ac5a1e667871e536f29cd4a42c79df', 'category': 'Street name', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2684.0, \"x\": 3262.0}, \"hi\": {\"y\": 2792.0, \"x\": 3485.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5623: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:f123095a05d549fbb15f86e074295f32:00110060\n",
- "Processing image 5623: timestamp=2024-02-22 14:24:18.909504+00:00, observationId=o1:f123095a05d549fbb15f86e074295f32:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'U.S. 98\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.069695311326247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:f123095a05d549fbb15f86e074295f32:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-02-22T14:24:18.909504+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af123095a05d549fbb15f86e074295f32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1fad178757cc6ecdf54a36edb966a9254ffb4f900b18eb814ec65862b3bf6818b926018c99659d18f242c76fc3ef63972de4232524991665160add91b61351be351257c11f637428778eec052957ccb4b41e452e9ba970d5962c41a137cebce85107e0ea1e039d8b720f4ec5e858ecc0489b03b434c40045832bf0e2c6b5acd4eba177a7136a859ad8c726fdc6eccda0581093364244da9df509ad972cfcd368b985f856e710b461b7c88e2dba174bab4a094a8c7668b8e8d486f5a5e81c791fad147a9d152a1035ddf05d0743a4371aa0871a29341a190f5f93eb9d647a0ef87c8d58914f4f418ac9950fd9a37ea5392e73f5fef1b20f4bba5cacd2a8c57a6a', 'category': 'Street name', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2293.0, \"x\": 2771.0}, \"hi\": {\"y\": 2480.0, \"x\": 3067.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5624: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:75226daade2e85e479b8bf4b34dc7b0e:00110060\n",
- "Processing image 5624: timestamp=2024-01-31 19:43:37.839380+00:00, observationId=o1:75226daade2e85e479b8bf4b34dc7b0e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a disabled parking sign.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.251945823431015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:75226daade2e85e479b8bf4b34dc7b0e:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-31T19:43:37.839380+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A75226daade2e85e479b8bf4b34dc7b0e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b76df8e9675f2529240dfd9040e391b7da9df916a72ead85b1cd8b5e3decb43ca443a7c0440220cb5d9de976c9c85b2425b2ecfd258e81b5715535f80fe747e981bed97536620f3f8503b650ffa71e9bb51a68eba1e1fba396481d602c7c6f2d2b36dba0ac298d88a7b6af9a3491163529324c6ce10af4bd271e032c1f4cc4c110cdaabcfa9db389609c59b39495b92bbbf6a7a1e4e638b9161609a16e52a9ebdc19e03991f937613c458999a2c3f41d158d41cd969560422d5f68ebf3291532ffc5b362294fe327782a8b208ce01a5533cd2b733b1aaa6b0f640d071cc91e4a3aa5c11fb8ef4f6e36ce1d7ea5fdcef8165480584eb96ea19925020be6e9b766', 'category': 'Other', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2232.0, \"x\": 1477.0}, \"hi\": {\"y\": 2272.0, \"x\": 1521.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5625: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:600f1e5f8a78a755e5e6ef455b090461:00110060\n",
- "Processing image 5625: timestamp=2024-02-08 20:02:13.152662+00:00, observationId=o1:600f1e5f8a78a755e5e6ef455b090461:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34052479572785205, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:600f1e5f8a78a755e5e6ef455b090461:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-02-08T20:02:13.152662+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A600f1e5f8a78a755e5e6ef455b090461%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5066264d8e85e07d8bfeada9bb31f0e902c331a956f713723f1cb9ea206e73edfa5e9684dae260bcf4c8e907fec699634bcd6426fad10a78e9d0248d288004ba771f7ace6137b5f5d04f52cc1d0e41812c051ee916e73e7f867273985e9aae053dce7c68514feb7f062a839246ffdcd54b5dff1f4bbfea2459de38d872f91bf87ea3cc9d9fc385e01cffdff1b5704d420a4a382e34e798816242ab39f2bfd989f72809c4ab0021731b0470e5d7e13cf64c9f1d6bdee010433311082d85ae0c25112e18e4e0a4e3ef48ad04c592c8b0e225a0db7e21690b51f08ff0e959ac049f654925e0baf9a794bfd24d0600ab9cdcfd494c76a924736695b3330097fe5fae', 'category': 'Other', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2231.0, \"x\": 1389.0}, \"hi\": {\"y\": 2270.0, \"x\": 1430.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5626: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060\n",
- "Processing image 5626: timestamp=2024-01-24 19:29:01.259997+00:00, observationId=o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.\",\\n \"image_quality_notes\": \"Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36440342870251885, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.'}\n",
- "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:01.259997+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aac1dc1f73a0b2de1c7e701800db6407a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ce8378c3489e7b3cbfa6aa03186d376f56ebd0761175d7aba512777356d2cf051c74715f45ecb277e205a63e487f52bdff1b9e7dd94f7b9ac3ea0652ef8b8f16e73b2d11a9d24dab9e2b4a1c6ae423f7a3f928252512237712eb93617a6a44373d504ad709ca2fdaa193fee35d9c7d75ed44c9f1896acc0070ddb1350188ca33f2c6c36353e6665160ce37ac6d9cc7ea7e773eb4e728de1e978e7d5caba11d8ddb8535834cfd7ec94ae22286d55757bbc26dfd04a37b818f75b96b9dfb2e3ee1ab996626f96c1bffc8d68ddeb3a98a3cbd321a2e5759795e30a217b303f9c110e2d656741e86bf4c9fc3f8e98a58c07509e1fe37426b5c29d7643c509fa46be', 'category': 'Street name', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2247.0, \"x\": 3354.0}, \"hi\": {\"y\": 2290.0, \"x\": 3393.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5627: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:a33075d4374e92406b4f65bf791df09f:00110060\n",
- "Processing image 5627: timestamp=2024-01-24 19:29:00.264023+00:00, observationId=o1:a33075d4374e92406b4f65bf791df09f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the sign\\'s details are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.294104082831021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\"}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\"}\n",
- "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:a33075d4374e92406b4f65bf791df09f:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:00.264023+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa33075d4374e92406b4f65bf791df09f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091310Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=825be62d38c1d7979ba4a34bdc181c1064fa9bc967cdd118786ae11808f7172b22eb89688d99fc037b779c69825f0570d1256cf09392961430725dd56e79261a0345c43b112387183e2bcb71e7186789b4fad46f16deef1f6d40ffd418084fed848a05ef6e5ee40af1d020f28cd5ec80fa65cfa6531fc3309c86360e2675c513834c6998a50105d79e957c3058469fe17eda76d0ea4edeff53325e7b6a82ae5ab69838623096cff9c9d146dd2f17ab234d6b0dee0a4b34eab8c2e0286180becc508278901a536d7f68992ef46ddfb0101600b8ee9a2c987607366fe649dffb315436dfaba45f68633dc78881f5d8d15d79aa10516166dc7f4f7ea00b4043bb90', 'category': 'Other', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2218.0, \"x\": 973.0}, \"hi\": {\"y\": 2261.0, \"x\": 1021.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5628: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:772ad9ce5dd1edca9a19c497374d6601:00110060\n",
- "Processing image 5628: timestamp=2024-01-24 19:29:00.924114+00:00, observationId=o1:772ad9ce5dd1edca9a19c497374d6601:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying \\'Parking By Disabled Permit Only\\'.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the basic details of the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3467108109418084, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:772ad9ce5dd1edca9a19c497374d6601:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:00.924114+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A772ad9ce5dd1edca9a19c497374d6601%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8514867c4f2cffc06c0b2009d77b8c8ff9b332a4d4873b89e78b3c04ed793a721061f6a711a1a14f140379b7be8747b8654ef4aa8c44a1eae05aa303c64f97c02704740ca024812ed98826c3d45c4ea89d6f98c91a009a16104484b22200bdbfddac676e65a713b186f672d5f74ec9913e87b04f39763166907d5dbdc9273155d3e6482ac9bdb4ce8ffb65984c3192b5cf3d19fb908c00ffbbc85545df0b8500a14f242b903747f5766c0111006978d6a5dcc75ccd177c9bd2fd200fc059e99e1a50c69c637edda97368405eb57a8ab68f071fd5fa292e3f36e434beb643026cbb9c8a47d1d2731e164c8f0e2d4b86d9357ff3a0e82f3cd2ddd78225efae72f3', 'category': 'Other', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2216.0, \"x\": 2623.0}, \"hi\": {\"y\": 2258.0, \"x\": 2670.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5629: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:a506eb4d81eac147010db90012b43e4c:00110060\n",
- "Processing image 5629: timestamp=2024-01-17 15:21:24.856306+00:00, observationId=o1:a506eb4d81eac147010db90012b43e4c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.\",\\n \"image_quality_notes\": \"Image is clear and the traffic cone is mostly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3301129913330078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:a506eb4d81eac147010db90012b43e4c:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:24.856306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa506eb4d81eac147010db90012b43e4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0303863e299d07c35d828ba30e61ad6fcdc8f7f35b6b8e1df7f0b1e3990c10bf2d7b5a2b6144831c72105aaf17e84fc298bb343577c8df90d19210827ec9cc0bc08de57c1336cf429c8a88274f430cfa1dea50ba9cf4578b0c0cc0e62e42bd5d8301bebaabbf922082165bb852e3137681b9eccd4e74f4725344a18cc306b655f65a16c1656d006848f617ce70187b5115432cb6cf7d22d16fe2e34f6e960e205c67e5adda4bef10ca3388498706d5a5d9ac6a8fa1b90fa7b066f0a482dc1c6937c0549fa43ee8958fd3054b3d4a03a4f8254b0f65c5990703b3f52f90a7e2eec7d4b535338855f092702f42d91297b6a7f625b3abd2e55a728d7834c5106a79', 'category': 'Other', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3276.0, \"x\": 72.0}, \"hi\": {\"y\": 3793.0, \"x\": 258.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5630: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:08b52f6fab60c7c0cea36f2b03439582:00110060\n",
- "Processing image 5630: timestamp=2024-01-17 15:21:26.348209+00:00, observationId=o1:08b52f6fab60c7c0cea36f2b03439582:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1367532549233272, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=2041, total_token_count=2099) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:08b52f6fab60c7c0cea36f2b03439582:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:26.348209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08b52f6fab60c7c0cea36f2b03439582%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091914Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9e92b383d16a3722322fa23e0eb218ce6cc22b7b9d969f3de9297dd9934dcbbc9bf6927559484a15d9afffe3ceb56a8087fd087b9ddfd679a2c69d80670564a5c51394acb27928d297f0d90f34a691c46412b846bd9b54995bf4fbca93031cadf4454d3cede7a8e9dd447903ffee14b73ed6d098f184e22d7458c11fa9ea165771c32a9ae9c4dbd3d58084bf9f4e79810f43ec3ecb2d3b49e7c0d62b11ea898450d3dc56c9eb90e03b9d8e506e8652c4d248806d8092981a82c0cb864f698187505a2046194d891887a7440bb13cc0ec99d1ed8c3da0aa7baebce29c068d9ea2c61d85fcaa72a9d3509e6e54d96cda98b91876f874ec4c2896e464322cafe618', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 3445.0}, \"hi\": {\"y\": 3722.0, \"x\": 3647.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5631: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:2d911a1a05733d58b0afa5c6f69eb580:00110060\n",
- "Processing image 5631: timestamp=2024-01-17 15:21:26.348209+00:00, observationId=o1:2d911a1a05733d58b0afa5c6f69eb580:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with white stripes is on the side of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17391095395948067, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:2d911a1a05733d58b0afa5c6f69eb580:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:26.348209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d911a1a05733d58b0afa5c6f69eb580%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=980e19ee4f9e14fdec37aa0e7297faf8b071b41f1d2ee9cb6d20fd4d71492d76c0da66c094b8755d909206faa35a660e1caf40f698c0cbd5c03191c12bb29580e5c3a8697e435476a78edef68521aa1e9f8f4dee0218bbb2dd934706a325db3370ae595688d64eaec21afce074863618f8b2064e7469cc9887ab5e2454b9eb1d5b460935d1a26763464ebbadacd8dd2ff330603a80a3f4d0acfd8b5f701556cb9ccddd782bc294cad0b60c5e197f8f997dfc09c2c49ea81af7aeb2b54788e5757b2615210af79bb96f467553cea1bb41e64a49c498566297e7cc9f24fbd2aface27c7d7acd744c8641fec012fb48c51e060a2d18783d3375ede16e99b9650713', 'category': 'Other', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4056.0, \"x\": 612.0}, \"hi\": {\"y\": 4537.0, \"x\": 779.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5632: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:78caf1c61d5d45a78cb5b62f818c08db:00110060\n",
- "Processing image 5632: timestamp=2024-01-17 15:21:23.572876+00:00, observationId=o1:78caf1c61d5d45a78cb5b62f818c08db:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21098742340550278, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:78caf1c61d5d45a78cb5b62f818c08db:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:23.572876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A78caf1c61d5d45a78cb5b62f818c08db%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52fb9eca943b7f047930f06c3ccf81bae6bd31b9e822a37f097243d0442954455d5424bcb72c466def75e22cae9e3129c6eff23c3f9f2f46d40613b7682b1aaf72264327d390c0880a92081c35cfe2b3b4b5f4fe1a4e5c97f27ed21051557278674febe961859df1471477a41e3def7d6c0d1c1e3309a9921e66fb18c42a86fc68f37253ebfea9b693106cbdea6bb0b988321066e0070f88f40caed4ac55ea1a50fcbcfffd37ccb7cc1f6c347b897f614d5eb5e73b79400ca886e5fe355e46f12330cae75cacc77b347d53aeb6fd1d89738f4b758abd7dfe4d9a6b8cf3fee1f06b3b348b20e0db111e0ee950bd6429a6f0c01032b53ec1659e83722711cf2e0e', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3707.0, \"x\": 2008.0}, \"hi\": {\"y\": 3999.0, \"x\": 2101.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5633: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:887005a7e57ef348391ee266f167391c:00110060\n",
- "Processing image 5633: timestamp=2024-01-17 15:21:24.856306+00:00, observationId=o1:887005a7e57ef348391ee266f167391c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28259635298219443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:887005a7e57ef348391ee266f167391c:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:24.856306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A887005a7e57ef348391ee266f167391c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=77fbd28457ca7928f1a4e6ebab082fca68c88c12293b9578807a3a7eb443e7b143597dbc7bb2c32413b86f6e656a382a2d803049839c55207505cfd402d5157ca6b5a9cb11caa0790eee1b53e54e80bb2dae24c76458bf502dd84309afed8bec91c569606be0bd1f34de8a0752be4ef70c263d4f131113beaef6cfeaf17a76661806080bd59f37b7c524e97789aabced0ff857bde366af853bae680a77a653f16a63287397506a1ed917b9b643a9a5c5b5cad1e5b996540a84cf19e304330839d397ce111a1cf6baca0e2517d0a4debf915a36d58b9d42333878f3c2f9113ebc3a6e7b0ef691772fdfd539eff18faf16955e1708dfaba9c42e12df6ff26d1822', 'category': 'Other', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4120.0, \"x\": 2936.0}, \"hi\": {\"y\": 4599.0, \"x\": 3102.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5634: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:345f79411c43ac1970c0231dc26d6239:00110060\n",
- "Processing image 5634: timestamp=2024-02-29 20:02:10.090888+00:00, observationId=o1:345f79411c43ac1970c0231dc26d6239:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30523982800935445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
- "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:345f79411c43ac1970c0231dc26d6239:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-29T20:02:10.090888+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A345f79411c43ac1970c0231dc26d6239%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=431e598b8773d24737801c6fbed942d441cd8227c2743d870fe485e287d20134bf6e988191e3778860849fc21e89b2e42e1352cc38260727eab5d941e5264dfcc9ef7e97b3cf69cb8aae074250db13579de74a0c46a31249d9494001a3837440bb8224e5d7e5e8322a459c0bf6da2ab3d1581a0254257743eaf2025ae85e4b6ef4c454fbc76439d30c60497e09071b762689a4f3443b767374428334f51ce0786559e8de69fb529f5b6a0e0ced5d74d5669e1f83e947dd1686bc93e80b07be1c6654a71b305d6a038a707f466b8c3539c062d21cd77eba39faeb30da484a59d4cc1a783e3609bda406a9befa5feddd84551b8b1882a59c9b9a4171badb2d9970', 'category': 'Other', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3581.0, \"x\": 3269.0}, \"hi\": {\"y\": 3756.0, \"x\": 3321.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5635: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:94b81b9b6e2336e3f30785966c5671d7:00110060\n",
- "Processing image 5635: timestamp=2023-12-27 21:06:45.128960+00:00, observationId=o1:94b81b9b6e2336e3f30785966c5671d7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31228494024896003, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=493, total_token_count=570) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:94b81b9b6e2336e3f30785966c5671d7:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2023-12-27T21:06:45.128960+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A94b81b9b6e2336e3f30785966c5671d7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13f172c6aec39c54b3b9a27bd99fcd354eec945a98bc4a4eac827df9c9308f8f3a17da2ba7fac3304e024874828398bb5ddb4e51bf327ddf6c25ec75ef20a93bd7cb7dbcd346373667aea0132ed009d915f913faefd8035c268b39c5cd18dd047b6f11774152f0f58891ce3a8352c497243c0c3a60392d573961ee1fbed25cab5d9bbf60c272068c5baf6102dfadf1952f8a5a5d7b3a41c3f9f56bd7844e2da1b3721c605a539cdfd0c7489ba07434d60f28cd4667df51be6784eefbc70f9cd5615600ea3518f76cb007cef76f852f2b2fc3cc9d815a4cabbd2ea0741052299f02db6a030e9a58b233e2cde6eddee6a80ead7e553890df092398e95bd23e9467', 'category': 'Other', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3415.0, \"x\": 1954.0}, \"hi\": {\"y\": 3498.0, \"x\": 1983.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5636: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:e51f60022ef28b667a52840d87713f47:00110060\n",
- "Processing image 5636: timestamp=2024-02-14 18:06:22.855475+00:00, observationId=o1:e51f60022ef28b667a52840d87713f47:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a safety cone, typically used to indicate hazards or guide traffic.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25769616711524224, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:e51f60022ef28b667a52840d87713f47:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-14T18:06:22.855475+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae51f60022ef28b667a52840d87713f47%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=663cc16d523387d38774ddd30d2c009551f362bfcb325a047a7b80eabe06ce5178b1429f2d4515da26e5643309a69bc281b5334e8c8a90716a84d2b022a1ba573b82ad22c4261c77c66d1e7884457aeefc1155977814c46fcd2985cba2855070753a8cc555eb02f30382872afc73125e97b42e7a01ab975600aba1289b9db49656e89756f78eefb906b0969fcfdb6027da0a6e5552ac0890c7fffff76258a0eaabea397569afc81387a8bfc0066fa6e97b9967ba7ddb90240773a3434717cfa07de59316590bb223bb57d52187abc362cbeabe5d7b3f4582522400df579e9e4e7d7caa1a92eb2e73886e4d3b4abb96d7358933d28163bd06fcf6bf7914359e7b', 'category': 'Other', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3469.0, \"x\": 2358.0}, \"hi\": {\"y\": 3561.0, \"x\": 2388.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5637: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060\n",
- "Processing image 5637: timestamp=2024-02-14 18:06:22.555116+00:00, observationId=o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, likely used for temporary traffic control or hazard marking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17328392513214597, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-14T18:06:22.555116+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c3a85001e7ec56e3a04173a4f63e79b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=29803af2bd173edafa8e56c4de0393def706fbb28c11e234dc7411e15c9fe71941d121329b46d1a3817173016d12bdae7a83d7c0c2c9bb4e0aa51bcf0b8e037fdbd78ce6d76a01e7f9bacd374c6e1a29ab26d8f8ac7812b820e42ece8498f41fd7bd97f41d3275a756a38217fa38d1aed4a1e243beb99ef951655031be643ffb7ff630a456e5566395b9c218d6a9a8796a2aa74fe677dde55946992efd60f20ab7a4d0c3b8ef6ad70060aebc3ed99c4bfcfc828ed0366c767373c0904c2733ac1038d83b9164ecf85961aaf2f448adc495d7a8e4b51e0efc20acdfcf7edd51af5fea9e5707ff0b19ed9e47863841f6714680ba0dfb8c9ee81dfdc22d74404624', 'category': 'Other', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3512.0, \"x\": 3114.0}, \"hi\": {\"y\": 3635.0, \"x\": 3154.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5638: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:0d12709b528de8ab7d2e699c938fff03:00110060\n",
- "Processing image 5638: timestamp=2024-03-01 15:20:57.132109+00:00, observationId=o1:0d12709b528de8ab7d2e699c938fff03:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. \",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the objects can be made out.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40666121528262184, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.'}\n",
- "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:0d12709b528de8ab7d2e699c938fff03:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-03-01T15:20:57.132109+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d12709b528de8ab7d2e699c938fff03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a97cc445145bfbdf791b2b082467ed77dc1d485a6c6b0b72bd1339fe44aec02086b5ff718243ce2d124f9e580287d02fc4ac393e41154a38dabea1a5ddf4c529b2bc70784858cc72ae929e6d87b98343124cdf77954a30548fa917e1fc6c3af57f40bfb8115e1e98a276e28813bb57cd3fd6f26384a71db859faf67673ae545f8799f039d323197e4d7cdd81409b9d2db758efc22c165aedd387b7b0711be50d5003a0ca1805341f7562c3c86db00dcf8017676991c102997c7a2e4c031b9cc88b67e05593838e5de709eb696d254b9b292980eaca442c4eb16352bdba27dd8f65bf64fc734624429609bbd766c15e50ec0de80626c1d1fb6dee84e0d915c6f', 'category': 'Other', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2526.0, \"x\": 3514.0}, \"hi\": {\"y\": 2618.0, \"x\": 3544.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5639: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:250ed9bc24ff6e62dd50da555a65cb63:00110060\n",
- "Processing image 5639: timestamp=2021-03-08 18:15:36.193782+00:00, observationId=o1:250ed9bc24ff6e62dd50da555a65cb63:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15502393749398244, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:250ed9bc24ff6e62dd50da555a65cb63:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2021-03-08T18:15:36.193782+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A250ed9bc24ff6e62dd50da555a65cb63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=738082b5db8a961dd482f59dfac25e0719f0077d6bd3a224bbee9b69a7eec7d8054c6ae1ca42f528649ec65fdc32bd5f802be62112df3d84ba48799394b108af8e744605381802a07b382a4e2c45dff9b7d0ce9863da73756a5c10c99b52598208e7e7582dbf7221c4b5754fc36cb7aae57ca568a846c428a2554aa35408f551e4975d03d11229b1685c5ca0a7b54328fc365c06102cde5b83a1a23bdcb421cc3ae2a94b92ef7680a89d4504f32f4ff9be69e13a95d5d481acc9d11f98e34f3cbbca09ac42b5235f50b22eedc474293e9538f39c7395e001dbf75367f5600764bff640f5137ea64eaffad615b4c94d10c6b63b9ccd69f3d17c27f26a2ef7a3da', 'category': 'Street name', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3020.0, \"x\": 2984.0}, \"hi\": {\"y\": 3051.0, \"x\": 3071.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5640: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:cee15ff02cc1fa2259d1014710f2b646:00110060\n",
- "Processing image 5640: timestamp=2020-03-16 20:19:23.863621+00:00, observationId=o1:cee15ff02cc1fa2259d1014710f2b646:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.\",\\n \"image_quality_notes\": \"The image is blurry, making it difficult to read the exact details of the sign. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.610545115037398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=493, total_token_count=581) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. '}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. '}\n",
- "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:cee15ff02cc1fa2259d1014710f2b646:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-16T20:19:23.863621+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acee15ff02cc1fa2259d1014710f2b646%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9132db8bb7fec91e205c3cdf4d12c1fcaeca750df5e9ed1c529a621de32f9e40e118f49399f72f6e689fb12590d8fb5acc627906e0fcbf3e0199dd9c5c80a2ab502e4372f7a1d341dcc7093e9a3077cca8b291a537b01c2b4251775db41c8b7defc8f73661d5dda1f77089457db7adad1c279008378b1da36ef2c89cbc59371fdc08535f7da7c107f396337ef7bff90765105770ec74c58dafd8dd57d7de7475100722a2a575f2d3fbd551b39b0384983c303e3d82b1b3d2a5d1026d14ac4aa1e7f22b25c421e7f0f9347603d139f5c1e35b11e269a72b2b27c73988b6a3dcc206a90a6d415ee891ce5bb161396ff008ef8097dc7b9649ec59b6a33f082b9137', 'category': 'Street name', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 2627.0}, \"hi\": {\"y\": 3066.0, \"x\": 2703.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5641: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:5919eca242b80e32ba8149882f3dff88:00110060\n",
- "Processing image 5641: timestamp=2020-03-11 20:24:04.892365+00:00, observationId=o1:5919eca242b80e32ba8149882f3dff88:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign provides directions to Polk State College and Bartow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.27715178667488743, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=1525, total_token_count=1584) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:5919eca242b80e32ba8149882f3dff88:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-11T20:24:04.892365+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5919eca242b80e32ba8149882f3dff88%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=255a1df6ac044e702f3a7b3427798beea7bd648407c3908957108d066a5b3e22e36747a922a16db650ea9656503314ba170665e973a7e8cc26bf20b135e1f62b19e26389701e1f4e8513228de2a42ef51f9a957bdc8b5704df00181a366568ba563d5f9114cd19656402bee76d3ff3c9320597f865b04c4fe1e056637ca70ec5b7ef7d6b5b3d50c170c3a46dcacee093d0f0fd5b4f6a3957a80853bd8ec8644144cdbbb8bf717c3b2f75a28bd8f3155ba1832605784aa524c677179c48b697c912b62a269b4ba65f58843060cd61d090ace108c3503d4f99e05e7a8bf2c5080236d58428aceda8da4fce74f87153dd84d9c786c6d436a9da4f65c0a989c56918', 'category': 'Street name', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3047.0, \"x\": 1891.0}, \"hi\": {\"y\": 3075.0, \"x\": 1973.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5642: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:1a678897cb53563225a584f652a456bf:00110060\n",
- "Processing image 5642: timestamp=2021-03-08 18:15:37.545584+00:00, observationId=o1:1a678897cb53563225a584f652a456bf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicates \\'Polk State College\\' and \\'Bartow\\'. The sign shows direction and distance to these locations.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33814427624010057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=493, total_token_count=566) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:1a678897cb53563225a584f652a456bf:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2021-03-08T18:15:37.545584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a678897cb53563225a584f652a456bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a1ac2cf1bdade976489bfbf29da1231bd6bddcf3f8297b7702878699f84ca1795bf9ad32269e4dff0ddb4d5bec748b0889305c2b53344e8f05dbb6707c003e633eb195a2658da0d762831ddb1b320e50f73333316a61e274a9b3f5cd68b4233049775f2dc4741d6728a0017bdc86b028153d1441836e46fdd3e4a4aa63dc3637b1cf0f8c3ad3fd96d26eb25d5e7d8b14fd8022ced31a2f15c4cfd300e09cf9794e64dfc5d741cc188a4f44bf5a176b57c469d512bef6267e458dfd5879dc3d9781ccdafb954425f32c51ae9c7bd7e2f8703981d1c554cbbc64149370f865add96917783d15b3771dd0d563cce8f78a1d163b8c6a6c80961f9e5a05c79ab93b9', 'category': 'Street name', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3041.0, \"x\": 2035.0}, \"hi\": {\"y\": 3070.0, \"x\": 2114.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5643: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:7fd8c990f059a05880d050ca02865647:00110060\n",
- "Processing image 5643: timestamp=2020-03-16 20:19:23.563627+00:00, observationId=o1:7fd8c990f059a05880d050ca02865647:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This sign seems to point to locations: \\'Southeastern University\\' and \\'Lakeland\\'. It also contains distance infomation.\",\\n \"image_quality_notes\": \"The image is a little blurry, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.556495475769043, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:7fd8c990f059a05880d050ca02865647:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-16T20:19:23.563627+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7fd8c990f059a05880d050ca02865647%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9829ccf3d474aadf3e2dd5df1b06733f8c479a23822115b513462a4baa6454b4d1a905683cff1d2f9abbc6a82605d0811671fcde353bd05575f16ec833f562a7238e1f023b1f54969871cb59c8f57226803f8c76178ff179aa7b4efff6de8992ae1985722499ebd35fb0494283e8e0fa9695b981d602f860cced1fe1b514b8c70674ae3491b64e413835ec04e984d61473d7ef44fd9f1d0de90282ed5625b8811cb42e42527bd3ba17c22c8df293dc278aa0afbaa3f75734461a0b3e385945f04b3cbde9ba6281f07ec9432abd38d0072682debd0d8ce9837361cbba4aa0b83715e6e7321a11425eec38880c0aafdc8265064b862a75954152046e3fc93accae', 'category': 'Other', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3019.0, \"x\": 2830.0}, \"hi\": {\"y\": 3059.0, \"x\": 2913.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5644: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:b4ca0fe42d990bcc86af803986294b88:00110060\n",
- "Processing image 5644: timestamp=2022-06-29 16:54:06.386809+00:00, observationId=o1:b4ca0fe42d990bcc86af803986294b88:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a white rectangle with black text indicating \\'WEIGHT LIMIT 25 TONS\\'. Below that is a \\'No Parking\\' sign with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18375881066483057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:b4ca0fe42d990bcc86af803986294b88:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2022-06-29T16:54:06.386809+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4ca0fe42d990bcc86af803986294b88%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7650602ab62b599d74d32f65757ef9b1977805d5cd07d690df85a206da3a85658d5986d17958cde59b219984fc372d15a1e543d8defd13ed7000794ed0361ece1c464250a4a39a280d88bf8cc4c57ce25cdd16fbebac075c6e6a0ebdfeabee3393a43607eced18a59ba079e7b7155a7963ce86a9a878cd3aac45e09a5a211ee68348cd71ffc3ee2be2688e169a109e69d70dfbf89c117493e4fc14caff5ab350bb83f1ff73a0cefbf180499fb476b794a1ef84d421b23089fd6c52cec77c90e41ed49fae48482f35ace144c17060677f7a0d3549537838a8d1ac3ab9250cdef8ee2eeecfc0c239294cea5bcab9784d4ddefbca6d922a2cecbabf31233ab47f06', 'category': 'Other', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3089.0, \"x\": 1259.0}, \"hi\": {\"y\": 3214.0, \"x\": 1354.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5645: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:b1de9b930087e481d8e7d6b5968b37b5:00110060\n",
- "Processing image 5645: timestamp=2024-05-07 19:19:17.372570+00:00, observationId=o1:b1de9b930087e481d8e7d6b5968b37b5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign at the top indicates a \\'Weight Limit 25 Tons\\'. The sign at the bottom appears to indicate a \\'No Parking\\' restriction.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the text on the signs is mostly legible.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2548780331666442, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)'}\n",
- " Error classifying image 5645: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)\n",
- "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:b1de9b930087e481d8e7d6b5968b37b5:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2024-05-07T19:19:17.372570+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab1de9b930087e481d8e7d6b5968b37b5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3cd9412f59c37e3913b3373567bd07bccacc4527b5e09631f76682156a88e5a85a987ab8faee37f829f5dcc9f76ccd71dd1474c1e76b29dc0c7dbbf7f0bb084257bbc114737d3563edcad368c2bb35386f1baf5f0b14567b7d2b64b6688ab1c4817e01b27921f4f30412d4744a693aad49d166627842db7ac3687139c3152dd7afc1bdf51ed8f58a8ed3b8877a755f57c93dfb4e7c2599cbbe5b97b17ea31a037595d885c87a41ed0f3ef8c1a8a1228780f3fa8193d8daa0e6a4cf62ef2cf0f344ec926065c3557f73f69776b824d178bffb07a1af356d4c950c8935e0284177b96e592bfe773940fd20b93f4d0437f809f9fe34e2aa987e9315d3b5eec81f3c', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3177.0, \"x\": 1600.0}, \"hi\": {\"y\": 3249.0, \"x\": 1652.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5646: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060\n",
- "Processing image 5646: timestamp=2021-11-05 17:32:53.482319+00:00, observationId=o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a weight limit of 25 tons. There is also a parking sign below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14988769184459338, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2021-11-05T17:32:53.482319+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aabb4bbfc08b422c5e8a9083eb841d7fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0642177f3799f755b2ec616e5d524756df101d64b8b882496feb636c54ddf7cf43c0f03dc756c0342bd71ec14334e65ae6e54fd78a9f7327dd61e32ea6d60d0a43c9a1a9806848490a9e52a9626f5d057ce65dbe802f4e23504ff34ef6862c55375cd6069802fe967e836e5ec1ae5a80b87194cecd4f000d7c1178bc787bf6658b5959ff5ebff3675807fd49dde903513968fc7522f09124c96e1726fbf115bc841f223d9dcf555b2a7a0edfe70e6e3e6f6817d7cb4fa56bd4ea5cd8252e7f601e6f9a5393068c5c9f6aa5fa7e6e35c1ac50b6c69de755cc7c547acb87001ae73107a9e7286c0d39cef6181a8787b896e24964f37185334d538df6d552c251f2', 'category': 'Other', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 1457.0}, \"hi\": {\"y\": 3221.0, \"x\": 1508.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5647: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:71cbdebaf73833d63c59010934129c6d:00110060\n",
- "Processing image 5647: timestamp=2022-06-13 21:01:07.880862+00:00, observationId=o1:71cbdebaf73833d63c59010934129c6d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to indicate a weight limit of 25 tons. It\\'s a white rectangular sign with black lettering.\",\\n \"image_quality_notes\": \"The image quality is not great, but the words on the sign are legible enough to make out the weight limit.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3197218788994683, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=493, total_token_count=583) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
- " Error classifying image 5647: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
- "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:71cbdebaf73833d63c59010934129c6d:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2022-06-13T21:01:07.880862+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A71cbdebaf73833d63c59010934129c6d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b5b18f9d51240f1d1a8696945595511d8cb29b55b7d16104168ec78eb35a10f8850f6a021a693e3a1033676301ed75dc990c7859e03083ee7f7e149e9c5205af3a7baac42f24de28ac77611d821ad1f394b77d780afef7585658ee43cfd4b0bb9600c653fb5ca9f5b19df00abbb9445e317f41fc079df7ce573fc7886cb5b28851d611c7267704da3f05bc77b25e1363f4df19135cecb470a06ad34ec7e6d292b8d795f840310c53afeb21a6c8169599ec36f5d76f2ff9093de62b758b9ff711449c16918a59a4474c059fb5e2afae396da637086fb9b6867c9ba12b3377180ef5bd56baddb054196f377df632bde8945e587395eacf88dfd4ef18c8ca571f5', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3165.0, \"x\": 691.0}, \"hi\": {\"y\": 3212.0, \"x\": 727.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5648: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060\n",
- "Processing image 5648: timestamp=2022-06-23 20:57:31.019352+00:00, observationId=o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15030600807883523, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3073, total_token_count=3139) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2022-06-23T20:57:31.019352+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73b7536f0cfd4574c1c8eb0235cdf7c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b8811712917016c6bb34eab1752ebcc203ede028c0e66cbec547bed677d07b6f4b46bcd9bef19c7fa7efe9a83fee5fc89403881a9b7b074dee074a41da4c46a97025d46fb631980c11ea65915693d6b4d85f5faa34e56681155ea77e392f98c8700017044741c58fb8d8679a8615be7e9f2b020d701f5dadd720fea41feb13c980ebc196d6f901e327cf2e7ab018a5cef6d939f412caca86fad6ae4f0e9ec55f10917c28c65bad23b0dcdc5ddfbbd24c037b7dab2edc79d6f7c842e3a1409802cfa3ee55962c9733630d4aded4d496ea309c85dd43647d867693c08ec5ad444eb95dcaa646d05c701134680c53cca2911a2ff31d320334099748569ab50f6b8b', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3000.0, \"x\": 2401.0}, \"hi\": {\"y\": 3238.0, \"x\": 2581.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5649: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:f06c6f13666ecf835752670b9aae163a:00110060\n",
- "Processing image 5649: timestamp=2018-07-18 15:35:53.596249+00:00, observationId=o1:f06c6f13666ecf835752670b9aae163a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An octagonal stop sign is visible with the word \\'STOP\\' written on it in white letters. The sign is orange/red. The support for the sign is leaning. There is a street name sign above the stop sign.\",\\n \"image_quality_notes\": \"The image is clear, the stop sign is easy to see.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5009193420410156, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=2557, total_token_count=2658) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)'}\n",
- " Error classifying image 5649: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)\n",
- "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:f06c6f13666ecf835752670b9aae163a:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2018-07-18T15:35:53.596249+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af06c6f13666ecf835752670b9aae163a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e0f555798609c32adb0bb1b5bf9b5a7d6a15b8ccc693db23a695db35e112b45a812288d523a8bdf4cd35eaad4fd1d492ea806d690bab3b9ee465650fd2617ebace321996d3da9e9e3109cf9ff6cda7241116c0e2b311b807a9ea8c9c872a204b8e5bb2b51a17b087969898a5909513d3a923d6a278f2d7256bbaf37aa2f4e725a242ebd471ecd43956684808020b587f6724583ac0210bbfed45d6f58bfc39e5f8067cfc47f9c881c656c4d75c4642b8b8c3c409542e1821d6ae453e7ab1fb10682073799a95d4fbe60b28de727afb34e6a7ad70a89c251ceeddcb042c11e173e0cf9ded57610be43bd2a4a426801dda46aef45136e8d1c8679b4420f630c0d', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 101.0, \"x\": 129.0}, \"hi\": {\"y\": 545.0, \"x\": 231.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5650: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:76119efe373840f89cee41f21f3de041:00110060\n",
- "Processing image 5650: timestamp=2015-09-11 18:50:34.267330+00:00, observationId=o1:76119efe373840f89cee41f21f3de041:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal sign with the word STOP in white lettering is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13210260672647445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3073, total_token_count=3134) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:76119efe373840f89cee41f21f3de041:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2015-09-11T18:50:34.267330+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A76119efe373840f89cee41f21f3de041%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=957504ef68c8a78306f7701db2ab952aaeac562eda8df974df653b33183847687eca9b19d12f6b8b7a78ab07392163f4d5b4e8d0a5d536045b3d4a9c620396690f135178cf5a0e4db8bbe913972d4cbb60663cde01ccbe0e116cbe9f53de5efaada63ff4b2f9fd5600df1e912c2a6d0568146cc9a56a0915e7e70ecefc0359b00c15c7a2e162c06ea755e39a4186c4fd4c110c5865bd6933b3e250acfea7dee892ef08b6ca534149debaf7a631d5f35c17d99be46b91b94bb296c76c30a182fa2b6b7a22f22c7b5f09a40ffc8865e10e079287dafb60ba0b6fb4f3b64d9e350c16c377f85395be6a45879415587b2fe3e53b8bcda3d41d20c191dbd8bc4a799b', 'category': 'Stop', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 716.0, \"x\": 891.0}, \"hi\": {\"y\": 973.0, \"x\": 1052.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5651: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:8c25f087a1400184b1e4caa2ad997f86:00110060\n",
- "Processing image 5651: timestamp=2018-07-18 15:35:52.788120+00:00, observationId=o1:8c25f087a1400184b1e4caa2ad997f86:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1478737361395537, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:8c25f087a1400184b1e4caa2ad997f86:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2018-07-18T15:35:52.788120+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c25f087a1400184b1e4caa2ad997f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=783b59bf1d0e4088bbee806af7a254a5674b9e08e62a4f066683fcc7b731cd35733f0fcca1b06c5f252f430ecbcd3692be1bb12a3a1ed729d1e30e97d8ee081a97adefb804fb6abe2ed09bcb9c72e084a3f58acb27061c4cc25d8cdc6d4a332195166ad76f4f8168e5dbd836cd5e989ab879c167a7c0edd41bdc968e7ca5fff58b5d9f15dbf6bd44570b4e28cff03521b87fd2e11ec6411fb243f9dc344bf34c4e7fb9e1bf9f6fac9fb3dbee772b82f7a20c01eeff5db9b699e1cd1b59ff6e1b436bd477ccd48c3f1e020bc2df646bdf08248ca2decbda54b0a70433cb5fe0d27c86153a4676fde5a4eb22277fab3baafb9b86ff3b4a025533525044061dd8d1', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 716.0, \"x\": 587.0}, \"hi\": {\"y\": 1010.0, \"x\": 802.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5652: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:ad6c0c930a77e46184c62d4eec928eab:00110060\n",
- "Processing image 5652: timestamp=2022-05-16 20:32:30.975064+00:00, observationId=o1:ad6c0c930a77e46184c62d4eec928eab:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09361289719403801, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:ad6c0c930a77e46184c62d4eec928eab:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2022-05-16T20:32:30.975064+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aad6c0c930a77e46184c62d4eec928eab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2382535b66a54467fa3f5d65c3b2a3918bff519e42059019321d9800a2b77131ce80378163959b07bd0bd89149e8411541edd8af4797673638febcdbad59db0bd626b4ac3b13f6a095a8455fac8b820bd51395f1dcafce6b84628939407eadac047525178b396d379bd5d86f3e46bd5328790ba1068595e9c237ebf335a3440ccda1743917cf8a88b997d37265d612a22559eb4a358f715516dbf9f999afa083fa43569a4c8bd7778d6edc9e2a8500e8ce505f9cbb6c1eb1410d7b1a3f01bb397e63c9e157537d6f48dd8ea04f26802611683b370f285ef9b1fc975a686af966ea449f50a3529c3dc11ab4be9558f254abbc243b2ef667d300b3965e6284cab4', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3028.0, \"x\": 1655.0}, \"hi\": {\"y\": 3316.0, \"x\": 1886.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5653: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:3044db8c963641a40dcb849481884b37:00110060\n",
- "Processing image 5653: timestamp=2024-02-22 17:10:20.335184+00:00, observationId=o1:3044db8c963641a40dcb849481884b37:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner\\'s expense. The sign is rectangular with a red border and white background. A phone number is included. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3701161588175913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:3044db8c963641a40dcb849481884b37:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:20.335184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3044db8c963641a40dcb849481884b37%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091629Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5eeaafa312fab9a6bc16fbeb67b2d40cace8bd228e8faaef6a575a337c33238eb991f2b3778b84a4151c6f8eddd4f9e88f4275e7388e71af8a100b02773d127ab5537544c620d5539f7d3d2e5c3014010875c9200eb94c2e28542b4c30dc3ec80b9f3b1d5a8861f1c4da5eadd6c6c100259ae98f3ebc479d2db06430f173de9c19f294257b5aed76194d0b91d3122362f1116efe4aa66a4621f83a29d54aeb674f9232d9c63cb8013d4c50cbe2a04dc7b95a4ef99bd50bc50f26848fa2c587232d36c77f1498bb5e1b74f4920deac613efd3a6931f6aef978455f89020960845fd751988f9b58b9a4a2f7eac551aa4d52d2e5ebaee8e7e848697209439e3bcbe', 'category': 'No Parking', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2570.0, \"x\": 2731.0}, \"hi\": {\"y\": 2740.0, \"x\": 2854.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5654: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:ef800dded971d6531a7f416e19499c05:00110060\n",
- "Processing image 5654: timestamp=2024-01-19 16:47:42.857408+00:00, observationId=o1:ef800dded971d6531a7f416e19499c05:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17416851790909915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=1525, total_token_count=1622) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:ef800dded971d6531a7f416e19499c05:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-01-19T16:47:42.857408+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aef800dded971d6531a7f416e19499c05%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9ccbb343a2fccbcbf53594128b4facb412f7d5130632e696efd28416cf4d0855a79eb165abaa0f4e162026aee7f97d7a14b83daa0769a0316484a24c2aad93aeee0fa3ec7bc928016099b5dd89f5299a71cf6794cf76ce4fc4557810e77e7c7c5e22cae7671ca55418cbf021959f9fae5ba6dfde68bf8710651078bdf589a915e1e9e4d477a93b93d62f93eca4f230186155388dab1dadf817ce9455b35b12e5f11053de1c96dea49ece8160c086bc6d01a0db3ef1c5ef1cff667b12a2b9869bf3d1de7338a13bde227ca4175e42eee87c9c4cf65dbee8e0820d14ef423d1265ac5f6a2d9f81cc5cfa2c8412d28451d1e00d77d1a5d2f61c6b3ac12897eeb36f', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2560.0, \"x\": 2775.0}, \"hi\": {\"y\": 2731.0, \"x\": 2900.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5655: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060\n",
- "Processing image 5655: timestamp=2024-02-22 17:10:21.518817+00:00, observationId=o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15647600997578015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:21.518817+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2fab4165b332382c5c6a9c4f8ed7ac5f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=56a7acc02701487cdba77b90b73b476d061f1accbdebe425fe930bce057082bcbb626689901d9a64c5f9314d766ad73dad3325a6f082f65c108eaa060ee7bb6ed6ea995afce734c5a872190a3ab2303a78399b056404b52a31342ab23879cb38dd5e45925a678c98914620990f46f18f05d6ea5c8ed9c3e9264c487a9639f7dab131a5abba9a91996f7bca9a32b215cd6951224330951856b084e7f0372aaf72cb242fa0c6599361fd9233354d7506ebc1df66b06d52c3e58bab9dea361d6f900873a3707572b5c107186f2974ff3f85208afd04c15384f59a0b2dc5b0f5af566ad327427bdc6c87e867292a2432f00765d8be440c263aab41bcf7ba31f2a9d7', 'category': 'No Parking', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2572.0, \"x\": 1407.0}, \"hi\": {\"y\": 2744.0, \"x\": 1520.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5656: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060\n",
- "Processing image 5656: timestamp=2024-01-19 16:42:31.174951+00:00, observationId=o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week. It includes a phone number.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is still legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16000008356003534, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=2041, total_token_count=2146) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-01-19T16:42:31.174951+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0bbff260b29d91a83b28462b6cdf9ccc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31ead68aebbc715b61998ec13203f468b53e2c043e09b7c21eac520b774b78b69892e9d48816b14d312685bd29955036fc944223daa570aeb3fdc4634b2efeda37f221ff653203937589fd9e60ff81614a254a8100884a0781b3ddaaab3a794f28a5357ffac41e83c536f6880ed35dc57253c5015c26f297b156f5107b498c75981d361dde97544554faa33f048a19b8c46c0cc62f578ce4b3a28e764b1a12b2ca100e3a2eb7eaa3304da48a3dd4b30349e10235e7e6b2443978ef9ab9b211da6d041b59c397f1c54868c5851368b079c65260cd42e3ae7c29a2de89703869ff3b586ab806f418e513e54f6da927cab9f57166793cd654bbe973c77c1d254c81', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3378.0, \"x\": 211.0}, \"hi\": {\"y\": 3563.0, \"x\": 341.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5657: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:d3c19358c4e13b5910f3af3c4a965a57:00110060\n",
- "Processing image 5657: timestamp=2024-02-22 17:10:19.171228+00:00, observationId=o1:d3c19358c4e13b5910f3af3c4a965a57:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'TOW AWAY ZONE\\' and indicates that unauthorized vehicles will be towed at the owner\\'s expense. It provides a phone number.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the text on the sign is mostly readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21878589283336292, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1525, total_token_count=1613) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:d3c19358c4e13b5910f3af3c4a965a57:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:19.171228+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad3c19358c4e13b5910f3af3c4a965a57%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e7c46684ffa71cc652bff993c01de18cf0eda779561f5b882f42a194588972785286bef89aceede7a77e656dd68743ff471ec610c8dff7ddbf44f070617cdbaa7afd4c6ba382d80277c2d73e04e53e826448bde375e62827aff581b1972c667ddca9b8b492c2f4659d0cdd094e5cc0ee2f4890005edd39bd54a6f1adcbd161c1f92a05e157cd39c73c6a75aec47ed81fa75dc21e192a7b062ca56d3bdca1e9f72c905c584ec35a39ae0d39a64c92d0ade08b98e2ec9ae5f045f70fa00fbd574f329d953c745f5117351b6284bda36e7f700b862ccdf178c1319a469173ee7882848ea9ebf508fe75be5d5b8068588b885e0b1e99bb3ae20616fcb19286f5629', 'category': 'No Parking', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3469.0, \"x\": 681.0}, \"hi\": {\"y\": 3611.0, \"x\": 785.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5658: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:24f4558d2b189c966c8cb05a6abb1434:00110060\n",
- "Processing image 5658: timestamp=2019-06-04 23:46:05.934381+00:00, observationId=o1:24f4558d2b189c966c8cb05a6abb1434:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign depicts a bicycle symbol and the words \\'BIKE LANE\\'. It indicates a designated lane for bicycle traffic.\",\\n \"image_quality_notes\": \"Image is a little blurry but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18938256564893222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:24f4558d2b189c966c8cb05a6abb1434:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:46:05.934381+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A24f4558d2b189c966c8cb05a6abb1434%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0ef06be7e0246da1ea109ed3b5e71fd0736efc2b9f1ac5945dbcc3793de912ce30577cf75fa88838cab2a290542fcdd3443e1543ef23f606cc810182b399d61a0fe736867e5c469c10e30f1ceb3cbef6a3d0ff4f680f12b159d489e3c7a3c30485f834664614695160f6f82139d300eed896b0f929cc37dad85a4ca1d8630710084dd1eb46ffb120806c1c56e8f2eb07e88bb0a0a4f4cf92d44521aa716e3383d6dabd31c1510213382e3d4d954c0348c10973caf701cbe39e0523c64ac7dab53ab388ab85c8edcf93bee9bf63e1cccd413572a0a226ac7e69499fb0e83e3d932dd3c094f899092ec88bbc9f4000b892c01c67cd6912ba5adef9d27867790144', 'category': 'Other', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 3615.0}, \"hi\": {\"y\": 3185.0, \"x\": 3647.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5659: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:c690527d09bc54eba6f7199967046d98:00110060\n",
- "Processing image 5659: timestamp=2021-05-05 15:30:16.999462+00:00, observationId=o1:c690527d09bc54eba6f7199967046d98:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a bicycle symbol and the words \\'BIKE LANE\\' indicating a designated lane for bicycles.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2833109182469985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:c690527d09bc54eba6f7199967046d98:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2021-05-05T15:30:16.999462+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac690527d09bc54eba6f7199967046d98%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1062d8cdc6837e96046e1c3e49c1797f67a5ebca204d205dcc9fd25a49fd53b7382bad5fc1e5197cd1f66001577b0fd8d4bdd31716be35b8337eeb3d581e4760f1399dac3b3f308817bcf876524efdf75da2c7bf37e93c0bc7ce2250436800246bfadab4a417d41c75a37ae5fd4b5cae33b87841d024724a28b9cfbc28a93bd90475a679ed172a4eca8293656555a1dbcab5ca51d2df8477306fb27a0b8dce757532a21f8a05eff2c32ca941f639347800b3bf1a0cf510fdc35e72d55ca68c0ab992402464ec36b4c98ce6ab6dd43f4aaf39a7399a434ebbc0aa1d71d9f078a126e41b5b25147331bc22d096150615031b3de02500699e65345c0501eb826ae9', 'category': 'Other', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3174.0, \"x\": 3597.0}, \"hi\": {\"y\": 3203.0, \"x\": 3631.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5660: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:ab6bd063a225360363c27f3e672a31bd:00110060\n",
- "Processing image 5660: timestamp=2019-06-04 23:46:06.662361+00:00, observationId=o1:ab6bd063a225360363c27f3e672a31bd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a bike lane, featuring a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08538634126836603, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:ab6bd063a225360363c27f3e672a31bd:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:46:06.662361+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aab6bd063a225360363c27f3e672a31bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa24ec02a33d0e0ffd52d9f9467180f53f743199df2f1d97ee3608cc11dc7e8acc35533057dcca199927adf03afcb200567ad65bf89f8ba828fe1c7a588df2415745c11abc4c90d887d4e418989a2f222f1a4d5a083b669277cef27b49cad8393698bfc4158086de95ae958c68ae2c6292bd757dece289b163b1eb0ff06a5340f22a5388d179b6f7dbce08ee763ca0b7a342ff4191cfb3a58c2d7fbfc0a3dce565e3492e3b3cd7bf58c33238e53637bec7a6e2dda5fc176e74434c90bea62a3909b65b62d352d5504568ecade9c7dbbce92383345fc8ee74334beaf0a8b0db6ab629c035204cbd4e2c6e9701edb8e53a75811f5ab5894d03e16a9870aaccb78f', 'category': 'Other', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 544.0}, \"hi\": {\"y\": 3190.0, \"x\": 582.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5661: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060\n",
- "Processing image 5661: timestamp=2019-06-04 23:49:20.903279+00:00, observationId=o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a bike lane with a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07985190611619215, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:49:20.903279+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad45b77d736a44673fdad53aa1a7bf3b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=577ea4f1bb7fb2d5021237e9579bb20e30241b54c31f46ccd3bc85573e0eb29879858f700651163416823371f5e8f2d3fca6a98a21464e23c9332da6b91caa3431cbcc38f98319f4a205348b5b97ece0943f4dd9f89a7cf33a4b6e76a891f0c7b225306beb11dd2721e96d4f98938415cbe68797ce1812c2350f4ecb39a75e24930eec8e3be18a9383c208cd4187272d4c0ae2f87b81b2b810531e1d9c62708e0bdc6fefac12152d7b6b8d013652f59616625fb438a67800c1392fd58c2b51eebd072c01a2511d3d76b4c307a960c9af5fce08990001af4d925501f28280ef984a4fed7af65827a240a04827a432a69a4079c9156ac05f8d326534e64835db9c', 'category': 'Other', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3214.0, \"x\": 758.0}, \"hi\": {\"y\": 3242.0, \"x\": 793.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5662: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:c8c4b4944f2c61d76939eae580fb5a12:00110060\n",
- "Processing image 5662: timestamp=2022-06-29 20:37:53.515033+00:00, observationId=o1:c8c4b4944f2c61d76939eae580fb5a12:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a rectangular \\'No Right Turn\\' sign, featuring a right arrow with a red circle and diagonal line through it.\",\\n \"image_quality_notes\": \"Image is clear, but the sign itself is weathered\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31668489190596566, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered'}\n",
- "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:c8c4b4944f2c61d76939eae580fb5a12:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:53.515033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac8c4b4944f2c61d76939eae580fb5a12%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b8789a8bcec41febb877f4415e85a048fd57964e82d27b7616c584d51342352ffe150fdaba8796a6cce466ac3893710bbe9fde09a501909577ac3498e18b37b95203534cd7aaedffb100c650bb5ccc2ae5eeb36cc26db26adae646a275ded25939635730e729f83860f93f22efd682ef3c2272b2d3e47d1568e94d5fa13510cc28f7f0a35ecbbee38405dcec85da32e5e97dd18abb7df2c0ee65dfd0beb1ccca01f4dd33bb6d431e2bff2c4be604bfb5531eca754fd41a41565f8995e0b9fae636d4b10abe1ec0e6bbc8697ac9b84bf7143cb66cc9d58f79382cbc1db14f8c1a53e772b89cc41f2ba41414355e7b9d4f2ee5b48c4009f64cb8a45305de32fd28', 'category': 'Turn', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3265.0, \"x\": 848.0}, \"hi\": {\"y\": 3408.0, \"x\": 948.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5663: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060\n",
- "Processing image 5663: timestamp=2022-06-29 20:37:52.782998+00:00, observationId=o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign depicting \\'No Right Turn\\' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\",\\n \"image_quality_notes\": \"Image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36191547484624953, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=1525, total_token_count=1609) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:52.782998+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb3b9dfe2b85d47571ad1d9cb07f39b4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092240Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=753192a67f328f880ff0b22ee43f5ed92500548859f46237f08b28ac0fb9ef2082e297edcf877bc76d7f05ddc382d80cc2451159ca538b7b5aafd06e22d4ae2a021534e2afa9eb79f67d5c747a393b9e025a4d226ed06aa28890fabf5403546c5a4c3b70e9bb2a3500881508e3c72fe41b84805ac634254974ad3f94fdef66e78cdf50810c9a72b8282888e10170d02501bde9ef89b7715a28a42a351d021bb1bb051990db198b85169f4db70d6eeb5204086835f8767b489c29fa6b24b3b967c9c607c3bf3a6378950553da5d42b86707897bdd844d04e1c79747cf6fd08a4a2730d62351055a2643ab8dbebd9d5ded985a1e4de6bdb7c149ba3acdc5823473', 'category': 'Turn', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2382.0, \"x\": 3083.0}, \"hi\": {\"y\": 2558.0, \"x\": 3162.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5664: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:93dba57c85a9124e8a195a4f91e54ded:00110060\n",
- "Processing image 5664: timestamp=2022-06-29 20:39:42.301403+00:00, observationId=o1:93dba57c85a9124e8a195a4f91e54ded:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Do not enter\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and \\'ENTER\\' text are visible.\",\\n \"image_quality_notes\": \"Image is blurry and low resolution.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.42108154296875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Do not enter', 'sign_quality': 'Fair', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.'}\n",
- "The classification type is ##### {'category': 'Do not enter', 'sign_quality': 'Fair', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.'}\n",
- "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:93dba57c85a9124e8a195a4f91e54ded:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:39:42.301403+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A93dba57c85a9124e8a195a4f91e54ded%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06ad8313d0c80c0134af340e016e5d8c886531a0e147eba3bd73b58d2015313bb72c0c722f4e6e75210f66c75f656c8736a3685288a6b5757338feb23c15ff4213135c562a48ddb51bb61574e0e02348a412309c000008ba7319bd2f3bf6ec277f181192b4d1c906968a6294a40b2b780bdf2be7139d4f6db1c3fd02a3d88bc5e325ba5bf79edeb8375c4f6e8e0c3fd58f992eeab056edc58a18b3ddac25555477b78bca531cfa4143f2de7e6124cb8a4da1274b8af6deb861dfaaa523e47e142446f7533e66febe1424628074f1b8f87f89e40590989826d0e603a8a88fc74a706c05f100d27e191b8e2da99446ec1917b78742c4709783c6c46ad48a4ba987', 'category': 'Do not enter', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3242.0, \"x\": 899.0}, \"hi\": {\"y\": 3298.0, \"x\": 944.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5665: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:814636a63fd3a8f0525f2b645c8d3f41:00110060\n",
- "Processing image 5665: timestamp=2022-06-29 20:37:55.923043+00:00, observationId=o1:814636a63fd3a8f0525f2b645c8d3f41:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign with a red circle and a diagonal line is partially visible. This indicates that it\\'s most likely a No Parking sign.\",\\n \"image_quality_notes\": \"The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33041065995411206, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=493, total_token_count=586) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:814636a63fd3a8f0525f2b645c8d3f41:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:55.923043+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A814636a63fd3a8f0525f2b645c8d3f41%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=268db02af886b51f68b8a211bf9be3a81598b485ddc093798c1a6a1b27c409376246042f3a36987c7349739a56bf05ee86d26f88722479ea91c837a044d1bb32ea52019ff429ff1f2b41fb58985a0916dfba75319c9213cc1fa97a6d3e1ce7e331769f95d41dc0be21bf3a3ccbcbeb7da301060bf0a399d2473ef18fb9920d44bd420c7bf8cc03203ffeac3952a59b1c60efdae37e568e1cb7c3c41636421c8c96edd8c0f4433285cb19fcad59c6126c2726ec0e81ac422b5d224fcd3033e7a4f89c74f15501befb05a82424d8c6180eb91122708495b16db8e9f081e82994d3992415038e54157175b03c55bd78b4c1c7bc6f3eda057966abaf4a7e6064d828', 'category': 'No Parking', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 2086.0}, \"hi\": {\"y\": 3310.0, \"x\": 2155.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5666: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:dcc012681f96493c9bcfc7a841e78aab:00110060\n",
- "Processing image 5666: timestamp=2022-06-29 20:37:54.271059+00:00, observationId=o1:dcc012681f96493c9bcfc7a841e78aab:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.\",\\n \"image_quality_notes\": \"The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4713875452677409, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2041, total_token_count=2125) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.'}\n",
- "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:dcc012681f96493c9bcfc7a841e78aab:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:54.271059+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adcc012681f96493c9bcfc7a841e78aab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ddaa50d0b3611ace4b70d5118cb793f219630ad34bcf41c24ba41e048ff8d099706976b1d460200bea300790dd730de28cbbec12fac947ee6b4e6472d3e792d6462337f7391aa657fae3bb00fc409ffbac53e96952e90fc0f99f43139b19c0153fbe8acc6e70b4427a1704c7a8f84825d94ba5fd89e1bac955ae77d87120199dc875dd4e6a36d69395f88de0a0663b5f8d5f3e4ceb631e88188553dfdbac70ad60479d5c03dfe5874039cf7fe6d42f3284029fbd24b07699fec6534259390da4868f8baae77d5d16f2309bea68096f728de48d72930ef402450cf5361c9f6dfeb918cbd119ab8def5ef65915fcc4c3b7a52038290fc0a3a33a020d4f74e88da', 'category': 'No Parking', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3228.0, \"x\": 1416.0}, \"hi\": {\"y\": 3341.0, \"x\": 1509.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5667: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:5cea590702f06a41f52353623505ba43:00110060\n",
- "Processing image 5667: timestamp=2022-11-09 18:57:54.656998+00:00, observationId=o1:5cea590702f06a41f52353623505ba43:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23358746846516928, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:5cea590702f06a41f52353623505ba43:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.656998+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5cea590702f06a41f52353623505ba43%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03907e782549c24e9743c4bdcb1eb4b5892482bef0a9ddb5843854538711cfb1119635d6991b01d39e2d27701469d162738c6e3470b0e57238ddba8dab664ab70590b3665161e89770307c475b7f26e892db30b825c29662371bf20bc94ff49a809bc09def066f57c436b3a23f5e27384520cf92c519574b109171b560a2d27c536e71523207926c0ac1a26e7f92be6d2cb69a99310247b4cc1ab80c950ea1d83e2ba86d4a415df4eedc808bebfea5059aa1bcdc6614d97a5998667c98c8fd4dc0d098815d636e624eb9d28ca396121e549aeb83daecbbb5b6ba94d73d8cbc93a312d4662ffad0f7c1d4a165703765b44250a2ad58f536b8b2b79b00ee996f52', 'category': 'Other', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3377.0, \"x\": 3090.0}, \"hi\": {\"y\": 3531.0, \"x\": 3131.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5668: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:5c450a7693b4f339f2926cc20719036d:00110060\n",
- "Processing image 5668: timestamp=2022-11-09 18:57:53.481025+00:00, observationId=o1:5c450a7693b4f339f2926cc20719036d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35045694693540913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:5c450a7693b4f339f2926cc20719036d:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:53.481025+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c450a7693b4f339f2926cc20719036d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=964cbb43fcb0880f71640ebc40f28a8e01ffb658bac2ebd60756ad79f469a4a8738aa4bf6fcf8f7b44800cefb568ff28c22ef64e6b6356b3c50607aa03216de190b4b6d351aabd69764e2d6b57f7230e94e8e6045382bdbe58582dc7035e8acbada169c773512279811744d6e6ca053cf35af7cd2a0a358d7c34197e2efeee7caa9e2a45b2d7a91e75f895a0a5a269fd698c20e32a373e6e817d9691d313436b3840937787e0092ae67037efca0fb2f1444c0d372f0ade5baefde36ceca01f43858a3b2b62a0575be26736a3c9cd711385bc9368b79ebe28e3827013d8dc8351e0a8ab8d8bd5f5711ab9c2fdc2b38750e97a8d021c2b84e476ff09e0da651bbf', 'category': 'Other', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3307.0, \"x\": 101.0}, \"hi\": {\"y\": 3415.0, \"x\": 128.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5669: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:048fb5d8f459841808ad2ee6beb1b709:00110060\n",
- "Processing image 5669: timestamp=2022-11-09 18:57:54.064987+00:00, observationId=o1:048fb5d8f459841808ad2ee6beb1b709:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35443656508987015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:048fb5d8f459841808ad2ee6beb1b709:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.064987+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A048fb5d8f459841808ad2ee6beb1b709%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091417Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c349ce5e037f3cdc4bb14933fc2ffc029b4d36541f1a271fa1e543dd7a7bd3b68780aa18162d153046e37fc28deef5fc2202e384dcbb95820a131144df25a26e3d110bfbac43d89cda1c3f35be1bb0c15d5f88a32424c73d9d64b5455a0de8f085f6fea84e21e64a541c5a7a9dfd5a38df55f6190080ae1b9068cc1810943ab846af6224bc309c1143dcddd8eb7e0d4d0266f2404083972613abef9e3edcd6f46172706b2b059e03e4350d19585dbb5c9bc7449ccbeb9d27b8d3d58cd66ddb3f41d2784d455c92d50abee40dc597871936bcf77d709749bb203e6d449561d09cae968bdc7b24e9335daa1b5e3cf509fc4c1021fdb941e556bfa5ff4a7bf0ecf', 'category': 'Other', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3332.0, \"x\": 3157.0}, \"hi\": {\"y\": 3464.0, \"x\": 3189.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5670: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:d7c3f7f1a442cd00a763468664134410:00110060\n",
- "Processing image 5670: timestamp=2022-11-09 18:57:55.276956+00:00, observationId=o1:d7c3f7f1a442cd00a763468664134410:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic control device. It\\'s a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34475845888436557, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1009, total_token_count=1092) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:d7c3f7f1a442cd00a763468664134410:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:55.276956+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad7c3f7f1a442cd00a763468664134410%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5fb389bbbe6f11c4727e08bfb3a2af6c5fd425e42bdcd55ee9fbf3ba9a1ece49f6547da09b81db9cf0ee30d2bd940766bbf4882ebb11dc14b5a12cb7b94805feb2a77f4f58bc2524e7966fdbd39af1460ec50cf4990bdc121379854be876e55cb237d09235447ded0bf485c860ddf3c692021be6493da83c320442f387e0d827e29261a8c8fb2ee1d80f3d80efb6f86a5f8cb5d885c8e4db2f2716aaa12f30d7b0064f852bf0a003aa6238029862e434829874659b3409bae4ad48a577360fb613950f1696f5ce8a8dce8d74761fad3ac2442300bef9c4f25bf1a87d19e8a98b47400349fc14f57b8200ecce8c3c171a41f1ccde3891f423b02647be201178b5', 'category': 'Other', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3471.0, \"x\": 2987.0}, \"hi\": {\"y\": 3663.0, \"x\": 3036.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5671: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:b37a873cfdc18d79004b420b1faaace6:00110060\n",
- "Processing image 5671: timestamp=2022-11-09 18:57:54.064987+00:00, observationId=o1:b37a873cfdc18d79004b420b1faaace6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic cone with orange and white diagonal stripes. It is used to divert traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22668164873880053, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:b37a873cfdc18d79004b420b1faaace6:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.064987+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab37a873cfdc18d79004b420b1faaace6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a625f75118a83add9d4999e450af3a6248def2ef4ac17e35d1a8e37dcc241e84da0b0ebed2660baea4bbada9c0366e0dd5fe107e915569c4e7a4ab7d7cde2d9beb86daff92df4b11e6eeff3305599d069ec058433b2a8c19557dfc323bc25cb28556add68e3bd871a63e76c4b769fb1473fca5756877299641a55b733e1c004ff89c1f88bcba60664a8b96bc791a5246fea8ef2ece757458e354d65ebe0bb1857ad8b51cb7e3362a98818c5fc086365b9178b63d79f733e0ab7fd15b4219396cd0b49ff3e62f0f73150f44bd0bed7c2dd8d897a8f92590ca5c317a80966dfd532c4daa0a8c5701cce9c6e35dc95b69a67891f5a514845dd15798fc5c2efc59cc', 'category': 'Other', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3327.0, \"x\": 48.0}, \"hi\": {\"y\": 3453.0, \"x\": 81.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5672: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:0679209b8a80baae83850d72afd4e4ac:00110060\n",
- "Processing image 5672: timestamp=2022-06-14 16:58:34.203428+00:00, observationId=o1:0679209b8a80baae83850d72afd4e4ac:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a \\'Resident Parking Area\\' and \\'Area 3\\', indicating that permits are exempt from the time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22371096403702445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=115, prompt_token_count=3589, total_token_count=3704) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:0679209b8a80baae83850d72afd4e4ac:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:58:34.203428+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0679209b8a80baae83850d72afd4e4ac%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11150ba24e85ddab247717a105f7c06581a0e1186bd70fcabc19979d60f225b881a4f4690c204a6b241470494cbfc7bb48f0a98cbef5ff320c920b7646bd2e85f4653ccb7c788a09bfd73d282997c376c64428f4b191232e994c51123daf411cfeb44d0aab99cdcc2e1d38a2ed0fef050d2d73a918f3046ee63f0af400baff5cd1b09adad6f3ebcb4f082c929121dd0b7305d74042ad48ef60b0523fe5c642018aac75502d04937ede87c45e1b2c3b4b3163d6c6f9eae0e2b6db29b476272f72d39065fb4f514c70a258021bb9722159763d58a7eff53d7e1c011ecab045c2bf6cc01f018fd7a0d2d0d7035c24aefda125ccca138cdd2e33bfc6d90f90f3ab1f', 'category': 'No Parking', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3117.0, \"x\": 3116.0}, \"hi\": {\"y\": 3261.0, \"x\": 3241.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5673: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060\n",
- "Processing image 5673: timestamp=2022-06-14 16:52:52.892906+00:00, observationId=o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states \\'Resident Parking Area\\', Area 3, permits exempt time restriction.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26409608125686646, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3073, total_token_count=3169) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:52:52.892906+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2cbaf2b869a6ff9decf5cd9b2d40021d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8ee299ad9043ce05b1a86fd0d1ce4f435b9db129f9c84640844002daa2906ec51c615ef6b57dd45f9d9ab23786fb1f81a598869043e94ced8a90dd1a0e3b5128e9509928aad75c1b728cf69274827e137eb51a37f0de47ace7efd2db18083121c2bb5f32f8a4520fd374f20d3eb059229d939806f861c2635cb1574086ed505600926b399bda510a2c153794885358a5f7278e42d3f7adacdb8f083d6864b4e71e318bf4f2afd312b1ed371c04f2db2c7dbd2622586fa94248127d30967966dba9bfa0c34fc313d405bde585651529c50f5831b3370a49626399ae24d979f8f95c3669ad6137422675c6eacd30a6ce5b838712df541dece24c3d595dd762933a', 'category': 'No Parking', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2281.0, \"x\": 424.0}, \"hi\": {\"y\": 2386.0, \"x\": 512.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5674: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:f660747c3ae6751e9319565e362bbf0e:00110060\n",
- "Processing image 5674: timestamp=2022-06-14 16:54:55.598829+00:00, observationId=o1:f660747c3ae6751e9319565e362bbf0e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a \\'Resident Parking Area\\', \\'Area 3\\', with permits exempt from time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2628076171875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3073, total_token_count=3173) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:f660747c3ae6751e9319565e362bbf0e:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:54:55.598829+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af660747c3ae6751e9319565e362bbf0e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a511184f9881953ad009b18eb918bb0fbf9ec708046a4eb308d8078075c9aba77186a519858233f78fe7baa6a1e87bb61f30135f1f15a883faf75c5a1e10de0f275c0800ce5c0f4049458ffd8b5f5e5b20f19f3efc0a0993afc47623ca9ff1401a5331845b9624a95d4bbf16cc436cb22b11617f3bcfe44114d82953d1deca06c1a8a9c8898b729cfe18fb7314ca0fcd35667acc97603d835def0abbfee09f1d1feb874ec55e0d1bfd7ac04e0dd793718c4ddf6e35aaa75583cd950108a6b95f72c1525d7cbecdb851feadbdd0c7f7ebf795efcce556279e11df709fbb8c3b8a41ae2f5327b7749c1b547f5a01d3d3b3d7ebf3535439f5e2dc86cb106a1bed8f', 'category': 'No Parking', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2303.0, \"x\": 0.0}, \"hi\": {\"y\": 2406.0, \"x\": 87.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5675: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:f1ba72a88f8e4434a2cba50b8393babb:00110060\n",
- "Processing image 5675: timestamp=2022-06-10 21:47:08.021763+00:00, observationId=o1:f1ba72a88f8e4434a2cba50b8393babb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5780382980535059, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3073, total_token_count=3154) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:f1ba72a88f8e4434a2cba50b8393babb:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-10T21:47:08.021763+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1ba72a88f8e4434a2cba50b8393babb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ba5099960ae8d30656c1ad237f2ddd238504ec95178185af0cd322919bb51a4bd19d835a2ac2358dbdf94d6d3f36899d1c6787b88afbc990599c77cd9fad3fb7f8407c86a6a6624785df1ca0d1ac6322192f8035ce78ba479f04819cc4882a19b9d7aed8f257cf12792c2570d6cdca81a978b114427d98493f95aeac6912bcf352a2534f52a3047d6d052ab9fbb7226eb88381f2223cd4073f97e347f501ef3be6987fd232c97a305d06512f0b579a6d8fe6290a390bb2547f7bdd0e4cc454e11a5c761d464ff26e3af4fa6afb3e83e91e204012b6dbec428a5431d930ca4e969315b2cc47b4072ad7862ab9fe59d5a090544edec94dbd5e2ecd7324a423bf13', 'category': 'No Parking', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3196.0, \"x\": 2075.0}, \"hi\": {\"y\": 3295.0, \"x\": 2172.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5676: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060\n",
- "Processing image 5676: timestamp=2022-06-14 16:58:34.203428+00:00, observationId=o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2376795682040128, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=3589, total_token_count=3688) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:58:34.203428+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7c97cd1eb6d9456a563f65b468ffa0b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08c617971472ee9f5fbb87b782d0302f5efcf1975c09699087861152c6d1dc04660fb6ded81e33404405012336f855c822d00750c37e03bc4fa727e528087d2f81ca85dd3a6ef1ec07b52542695ebab525882760674a9addacfcaf47bc81d3d225d6fb38f1750adc16b7225273d378cb54f3dc8650eb72bcb41ed744a71969ae557e0d79d6ed4eb07abec996d3d0e8b76c8b5fcbf6cefa6fed8ffde772d1b4557d1000efe66e202ec49b7ab1d05b2767c81c4466dc8e20a8c5fcc29c95e05e0996f63ca9adda5211be09a1a48683f47ecfc4e018189d491a3ab2ab19b44a6f56388edbbe5304fad8d895ced7be4c576ce8f44ce241a9e5c7271a9fefb187f475', 'category': 'No Parking', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2229.0, \"x\": 84.0}, \"hi\": {\"y\": 2384.0, \"x\": 213.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5677: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:9099845372a5baf177451a7614d77ecc:00110060\n",
- "Processing image 5677: timestamp=2011-05-04 19:53:22.561172+00:00, observationId=o1:9099845372a5baf177451a7614d77ecc:00110060\n",
- " Error processing image 5677: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9099845372a5baf177451a7614d77ecc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=68640274c4111bffd4e6c8a88ba22e437a3a81f1b24faaca1caf2990faba5f7d10b5f120d034874cb8baaee18920d24b477db4689d544818b98a0bd106f720d4af3a5a65e73cf2dcb0dd0dc4feda39b6f108d85257b1204887e571669dda8fbaff3dfd2408a7a6dae82b03b4622fcdd94879e68c0d8bc6b8c79010ee091a7023c8c118e02ecfcf116a6594a62bfd83b2f709c146dd99a85ad9555f647235a90ed6ac1307e176fbcb86ee05f6f52ebb3dd2ff50dbb520bc972a4346f533852bd83264e6090b03f0054d990dfc49c3d5a69a40105deacd2ebafad942f0c17391e902ec2634b8b3f349c0cacdacdebd6195eb66c9287afb2c33ec77ba552c63a3a2\n",
- "Processing image 5678: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:35eabc7310a2fe8134274f736c27375e:00110060\n",
- "Processing image 5678: timestamp=2016-11-16 17:31:19.632889+00:00, observationId=o1:35eabc7310a2fe8134274f736c27375e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white triangular yield sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09689750841685704, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=2557, total_token_count=2613) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:35eabc7310a2fe8134274f736c27375e:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:19.632889+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A35eabc7310a2fe8134274f736c27375e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f6c5cbc011c4d7ec0d847275d2c3a56750b916350ec6a95e33faf57629bec3da4cc3b500d90abe6ba706245d8c31b7a8356f8185b1fe0233f260510f769aae5eb71cc821341dcda68fec45e335f0734ddd2fa7f2d22314bd4f9bc7149340482a5721090a22baeb2be57408f93fe7938b99a5fe28afbf0517f3533b1de71f6d079ca9882e54f50691828157131f8741544f3ca02d5ee2403802807e2bab990180fd8fc50a525767398fc1ef1d69eb4a39a84128907b10cd614276cb93bfe52980fbb26ea414476a47f1c8f2c62d736844b6186782f7a54a66c3687c26a4cf44a1ae8bcbcb783775f01aceb6608551f7e2a521047e74914b738a497b800fdc362', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 497.0, \"x\": 1023.0}, \"hi\": {\"y\": 666.0, \"x\": 1498.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5679: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:d57b4683caba93540ed370e137a56af2:00110060\n",
- "Processing image 5679: timestamp=2016-11-16 17:31:18.019582+00:00, observationId=o1:d57b4683caba93540ed370e137a56af2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white yield sign is visible.\",\\n \"image_quality_notes\": \"image is clear. Also, a street sign is visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33757554917108445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:d57b4683caba93540ed370e137a56af2:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:18.019582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad57b4683caba93540ed370e137a56af2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091843Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0fb3ec8fed4cd5fdbc26215e82f9997b063b8a127e9dd9a4ede74a9c6478f297723cd923967eff2546cacffa9fc51573895097396ac39029c9f046f1505b64d479dc6ab67c5f300dfaf8c8dd94a7ea09c7df0ad7c43f2e751a194ee217d1074cb43624122106001951f6f657d3104d407aa12e2ceb194e5ee2cbab2a4cc6a5ee2f83f1a77849abe35612eda3983a04fbfe8ba9d637b793b2fe69845c6d1a515483a74f12874d0a2455cb705a1b06e14632b5ee1b5dd3c95b5468edb66d1a727196075b19dad92f28c5a512ec572f5608756677f4f6a9add4c68a9d011974898a48a1ec85834c6eb85914123271a83becdb4f80f66e2353e7244e2e8a69ec609b', 'category': 'Yield', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 955.0, \"x\": 1561.0}, \"hi\": {\"y\": 1015.0, \"x\": 1769.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5680: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:08603e95cdf5fa306dcfd0f07e802ba9:00110060\n",
- "Processing image 5680: timestamp=2011-05-04 19:53:21.664545+00:00, observationId=o1:08603e95cdf5fa306dcfd0f07e802ba9:00110060\n",
- " Error processing image 5680: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08603e95cdf5fa306dcfd0f07e802ba9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5cc8d590b05b061f00a5a003cd46515d35ed26fad68bdb96b87700868a8b7f0edab88519da9688a22617ec6e3777ac621de9b1bbf2285eecb31f7771f7c04a7de6acb91b2d180ee214b432c8f28ea761e4cc012fafeda3941934309db7e3110247581fac6284dab888def58558d2cd6ed6597eaf0aa480e2372311314f26519f701378c9a3ae2424faf58d97539719a1d90bab8775afad0c1d640c29a254900e5f720d8d32f6d306459341cfdf6a32d96c704bc4061affcf334c8e7ed70812a6353b84216be33fc54e4dc1f030c6b33eb67ea336a444eb03ce31f70916057bb910a465bdf2675e41a3024a7078c0e33cb5bee05aa1c471dca0e0acc7e5ce31eb\n",
- "Processing image 5681: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:88362a04d50166fe1ca6a916aaa9cc84:00110060\n",
- "Processing image 5681: timestamp=2016-11-16 17:31:18.747946+00:00, observationId=o1:88362a04d50166fe1ca6a916aaa9cc84:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white triangular yield sign is visible, along with two street name signs above it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1456117923443134, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:88362a04d50166fe1ca6a916aaa9cc84:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:18.747946+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88362a04d50166fe1ca6a916aaa9cc84%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=134f1a41135ef8c56cf1b1f95b4d8f4332a99f8d29b42417465d0a5b393e6053259362927dcaf4459c2aab1d5b277c027b03835cea049155c14d1bc208fa4db3c2a41f36700b6923b7176d1281d05e31f3332420530be2180e63a34ef4abd28db7f235f1d3a867caf14aa1488d2749217a49151ce8879c1a4122049d1270dd8af9d771372c5eb07e769dcc145f83ecaa3ac0cf0ea4b29ef8f34fc34f94a9425916a6a627572866535ddd0ea9e0d86af3907673709d58ef5873ac0e318172e24fccb85ed32806ed6119c61771bcfdbba24a408b213e9411804195df5d1d745558c59046851b69f44e0c46a0dc13ad4cfb7ecd860a501c85b91994bb228dc9082c', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 548.0, \"x\": 90.0}, \"hi\": {\"y\": 658.0, \"x\": 395.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5682: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:6f67f501eb31f103aecfc16b8fcadf82:00110060\n",
- "Processing image 5682: timestamp=2021-02-05 19:58:57.909478+00:00, observationId=o1:6f67f501eb31f103aecfc16b8fcadf82:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a yellow diamond that reads \\\\\"PAVEMENT FLOODS.\\\\\" The bottom sign has a red circle with the letter R in it, and underneath reads \\\\\"HERE TO CORNER\\\\\" with an arrow pointing left.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2176712155342102, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3073, total_token_count=3169) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:6f67f501eb31f103aecfc16b8fcadf82:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:57.909478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f67f501eb31f103aecfc16b8fcadf82%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b8af7a5b30a98a6e1f75f198c875e46d19a8d6c3feb06c24b5c24e91501e702749cb1ae55410dc8ef70cf276f37e20f8a1751460695ab9fa8e6abdbbac744b3e8a28a499609c549e3dad91c35e5d952d7fd4017b1f9595d9439a2f26488f042c414dd9054d91b159a4e4b9fb693a763bca917016586631cb5c74c33096aad732d57df2f6d1806c29dbe93ec848f33befd105a33d826838dcf1fae2f8a942aad5e1af5da9c1ad8ce37aea427a228e4639f34a143cc2ae0dfda88bb21444293944786209a424082d486ea5176211c997977cb8e00ced47c94b748c8c7f437e34b15a4ddc9b1f3f48b58a641775a975692d16222c254cbaa22db1f6bbafdda3a9b', 'category': 'Other', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3317.0, \"x\": 2783.0}, \"hi\": {\"y\": 3478.0, \"x\": 2869.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5683: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:d582317bd61ef6c4d6aef81e881336c4:00110060\n",
- "Processing image 5683: timestamp=2024-02-28 18:38:33.936880+00:00, observationId=o1:d582317bd61ef6c4d6aef81e881336c4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two signs. The top one is yellow and diamond-shaped and reads \\'PAVEMENT FLOODS.\\' The bottom one is white and rectangular, featuring a circled \\'R\\' symbol and the text \\'HERE TO CORNER\\' with an arrow pointing to the left. The signs appear somewhat faded.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35416890081958236, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:d582317bd61ef6c4d6aef81e881336c4:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2024-02-28T18:38:33.936880+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad582317bd61ef6c4d6aef81e881336c4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d3289e5a3336028e48bbdfe12cfaf5f0d363c179ee9609f2d68919fed61957e1ab9f02ff74ecb935b9934694383e24db12c84a2a16605ac0a6168f4f936743a426e47c409fe0355ff9d8e041aa994c010858a6822eef05493bd0d111bcbcbb026ee67329040b2d6ce5a8defc05035d0b54e7d2b52d9a882d553807887d36f0d5ab590e333e9b73b3c57957865eb97f8d28ab3e0d85bb1a7f64570c5193bc8a22f369434c0987f5ee611c266c745f0ef5f3a5275ffe42148e73d5f0078a0ad7aa25a874d30db56bf58eac16b4425bff7983777ada8c3dcd2aef7d632052617b66189b908630deaa3fe7623fccb7804634b0bc7c5147f45497f644c92f7ce90db', 'category': 'Other', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3311.0, \"x\": 1779.0}, \"hi\": {\"y\": 3421.0, \"x\": 1847.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5684: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:b3fcb1ba40c8b34b01756501b092aa77:00110060\n",
- "Processing image 5684: timestamp=2021-02-05 19:58:58.309522+00:00, observationId=o1:b3fcb1ba40c8b34b01756501b092aa77:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond warning sign that reads \\\\\"PAVEMENT FLOODS\\\\\". The bottom sign shows the symbol for \\\\\"No Parking\\\\\" with an arrow pointing to the left. It says \\\\\"HERE TO CORNER\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25908062022219425, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=2557, total_token_count=2650) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:b3fcb1ba40c8b34b01756501b092aa77:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:58.309522+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab3fcb1ba40c8b34b01756501b092aa77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=649ff2a6252d3897dfc36e8f96637bd1f3f4bdf84c7d367d5c15c6a8b18c32ee6c47ef83a2db1b747f2a5e61bbc66cb83bbfdd719178a4b0ef207c4d982879601f31b9f211e1c7d83bea811ba23046009dab0f8eadd4aa54d03a3ea5f4a20a56bceb40442df066194d54a13ee603bff1248447526708091d73f28ad42b7430e5359aa28bbb34518871bb39a8fdb70c3a2ab20c4bbbbaceca41661a75255b9e9b94d179c0f4da7b03cb8137949f729f81035a6b6748f03ec2b69a33c4f1781cbf5cac45309dc3a9dc830d85165824ae79884abda03e9eee6fc34574181985db2287c3eb63544abf7b8e17c919bf0acdcda9465c31471d0c08e8ef297912deb44c', 'category': 'Other', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3316.0, \"x\": 1903.0}, \"hi\": {\"y\": 3428.0, \"x\": 1978.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5685: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060\n",
- "Processing image 5685: timestamp=2024-02-28 18:38:33.360827+00:00, observationId=o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign is a yellow diamond that reads, \\'PAVEMENT FLOODS.\\' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating \\'No Parking.\\' Text below this symbol reads \\'HERE TO CORNER\\' with an arrow pointing left.\",\\n \"image_quality_notes\": \"The image quality is adequate. All aspects of the sign are clearly discernible\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5756116035657052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=2557, total_token_count=2674) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible'}\n",
- "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2024-02-28T18:38:33.360827+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc608e8ab47e2c849e4ecd60b1d31a5e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31a7b3d6918f347a99ae3518c89f180b566f0056708336fa0d78fbe6d43ee10ad9632329205686b490522b7b406242af542ae337a68bae4e9f056fd496c49fdc754737a4fe8e9a37b918a6d841d89fea14849521b65b541d6c98298b2b864daf0bcb412684e151a544551145fd4f76c5cb0f909b4a433ab8234cf84b4704d763d0d1c63824bd8cadc33c3caa1a19d42d9ea06327281d28434ca2bc3e34a0e2b429b15824b66a766fb01f1c29825904c76b761123cc841580dcccdbc94ee63fd48c9bd1f85a2dea1a8864848bfcb89d91a19f2873853253d5a05879f24582f17ee95b4901a961e61a7a94c41bc43c6950ae342053dbb6f6f3040d9d57a7ca35ec', 'category': 'Other', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3317.0, \"x\": 2669.0}, \"hi\": {\"y\": 3485.0, \"x\": 2757.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5686: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060\n",
- "Processing image 5686: timestamp=2021-02-05 19:58:57.505483+00:00, observationId=o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A vertical rectangular sign, which seems to be \\'No Parking\\', is partially visible. The sign has red border and some possible text in the center.\",\\n \"image_quality_notes\": \"The image quality is not good, partially blurred and the sign is partially obscured by vegetation.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.707830324277773, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=1009, total_token_count=1100) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.'}\n",
- "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:57.505483+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2a499aeaf88f6df69f80e0a0c9af807c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c24e342b11f505a951b6d9ba7ffd4968f54c1b106b5df4b19b3c9bc533f9d7cc41526dba1d237165389776086c3a27ca53ecf1332d7734315eac267c903de0147b4027e118b39fd8d13ab6e5834cdfe84fa572d5314d5567e85dc909c24768ecef2882a4e62b93c6ffd81fcf28ee4711e40b037369d21b59f6058b9524c2ff05fce9108f6023e0aaac39fd204062755a2111b1b967ab54ada8d6fbd00e3db4249b1dfbb851ab76834a44e08730854f398423922c6598a04258e48f123eff06ae0ba90c18493d04a11cfa31d28565ce4782e79445309fd38003cfe4e7616202251a66dad3e1da0aab8a568f067a76de3d46e3301a376e027c4533c6e3ebd11ea', 'category': 'No Parking', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2439.0, \"x\": 1520.0}, \"hi\": {\"y\": 2643.0, \"x\": 1555.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5687: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:9e1cfb3dae299839f4584144d139a359:00110060\n",
- "Processing image 5687: timestamp=2024-01-09 20:01:30.559458+00:00, observationId=o1:9e1cfb3dae299839f4584144d139a359:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign assembly includes multiple signs. There are two street name signs indicating \\\\\"Meadowood Pointe Rd\\\\\" and \\\\\"South Dossey Rd\\\\\". There is also a yellow sign with black text and an arrow, saying \\\\\"DEAD END\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2803076292339124, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2557, total_token_count=2652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:9e1cfb3dae299839f4584144d139a359:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2024-01-09T20:01:30.559458+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9e1cfb3dae299839f4584144d139a359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=79f871b26fa4c90f4d5b7758e909a76a8adff9ac304581eedb27dec81fbc23d041b135781ef08d0981342fa131b080860e75f20147df6c244d105470359d8ddf8b5634065465eaf568dbf296b839269d2be81a3fb062a78364ab1c39fddeb2c266cf9975a32905f96c52b139a1bf314f90e1374123e71eaa2dcd8eef1a41cda69a458605ff61918f711d0ed8a9dd91830767f0f23698e25eb72cc75648c5e16ddaa3f3a4ec6495ac499ffa751dfeb7948ba2115f3cb5a2d89d5fe71072986e18634b3ace88031d9f51d4a97e891bea85dbf4603bc19c78abc1df59639a09bb0a8c23a5f689b1cf4bece7a17951a418df7e0cb9f3384062fce609d346ca501ea8', 'category': 'Other', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3459.0, \"x\": 990.0}, \"hi\": {\"y\": 3629.0, \"x\": 1388.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5688: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:a522b228a3ededef482e1304be763d97:00110060\n",
- "Processing image 5688: timestamp=2019-11-06 13:29:22.509870+00:00, observationId=o1:a522b228a3ededef482e1304be763d97:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2675047436275998, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:a522b228a3ededef482e1304be763d97:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:29:22.509870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa522b228a3ededef482e1304be763d97%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75a1bc7065e495f7b907b350eebc9d9340d48266812a1eecc58586c1369c218c34d085e8a18886519898f075707005bc7ade4b29c3a07a485e6b1dbb889f89b5ae8c5d381b0d7d11505985d0e130a451c44a412ed72cf10b571374e8e67f735218da46d01b8559754db051634af5b18cb454d3ffd1ce6e18d54a2e06da0174a0a2be2b63466f84922589666d103c7b312bafd7b4e1df1e024c4dcd632228c9278d7f7e407a05fc3ce94d5c5c61cc44d0e4c8834fdd14693d5914286c356508490b01105584fb1e3e4882a6195868b23a09d7f6be206361018cbd1de0aaaaa27bb55b30ea0e47a2fc387015acf2b59ea3c0cf6594d92dc954e54dafd2be19524c', 'category': 'Other', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2451.0, \"x\": 2628.0}, \"hi\": {\"y\": 2589.0, \"x\": 2931.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5689: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:2b49add906b2cf6b54db637b14a1f108:00110060\n",
- "Processing image 5689: timestamp=2019-11-06 13:27:24.564975+00:00, observationId=o1:2b49add906b2cf6b54db637b14a1f108:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a road sign indicating \\'Meadowood Pointe Rd\\', \\'South Dossey Rd\\', and a \\'Dead End\\' street. The \\'Dead End\\' sign has an arrow pointing to the left.\",\\n \"image_quality_notes\": \"Image is not very sharp, but signs are still visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36672761268222454, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=2557, total_token_count=2654) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:2b49add906b2cf6b54db637b14a1f108:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:27:24.564975+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b49add906b2cf6b54db637b14a1f108%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=937eeb5277f112dc8af943c2dbbc5e6554466fa1785018edfaed0774481114c418cbd90e721068800bcc23cd18d9f29ba8cd7461d34989ec0352cb1b5533c6ae9e7d6292340642090d549e83565bb22571b17ffc305a28dbb2bc73d2e9785ae91a944d1b80350ec8398b1fea55b4161a65c60a0645774683578404ac1bbb4702ae060eb06bd92f4756020e74e1e2ada40edd8b2fd442d2b455d641aa04670791f32b219f6d23a4a906cbf7979b859037853b649190e06f65f8572ee354a567fef4ef9f0801cf4f30b0819f34e1bd5519f0888da04d1ec614491fdc364711b240d2047ebdb69106bd09dcbe210f1909359e66c4bbb154e2c25c846d01687296a9', 'category': 'Street name', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2500.0, \"x\": 1230.0}, \"hi\": {\"y\": 2702.0, \"x\": 1638.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5690: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:4be24cc22e16adda236f0dbdb316c44e:00110060\n",
- "Processing image 5690: timestamp=2024-01-09 20:01:29.567466+00:00, observationId=o1:4be24cc22e16adda236f0dbdb316c44e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a collection of signs, including street name signs for \\\\\"Meadowood Pointe Rd\\\\\" and \\\\\"South Dossey Rd\\\\\", and a yellow \\\\\"Dead End\\\\\" sign with a left-pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2326531626961448, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:4be24cc22e16adda236f0dbdb316c44e:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2024-01-09T20:01:29.567466+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4be24cc22e16adda236f0dbdb316c44e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091315Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55f00e8f9d385d9489e677199c4268526a3fa20860b96a525018748ba9557fbf7d2bc9ff01fadcb64baa1db1855a329f95adc6bc5f2513d5417f54b542188b66219c40ce8a32c94b8ef259647ff6680b41e9900917dda2e7b2053b1df40b9a254cdf496e258c75e0b1ac52ee4830669a35f02c244072d6ffb543d384391884d65d0a3c8d6320a0be1907bfade75c8358e8bc3dbaae3837cf600157803d39be84ed06a7405515aceeb39995abbb0a398bc0676072e2d5fcc2ca2201a5ff848269a1bb7aec5535d3ff29d7f9421b4f7579946aa62e20f07ba3d58c4a843359903d52ef4c7fedd46dd4ba47b76a8029375e5688c9a64e990a7bd7a61a08402b97c2', 'category': 'Other', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2693.0, \"x\": 1817.0}, \"hi\": {\"y\": 2981.0, \"x\": 2455.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5691: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060\n",
- "Processing image 5691: timestamp=2019-11-06 13:27:25.940954+00:00, observationId=o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple road signs. There are street name signs indicating \\'Meadowood Pointe Rd\\' and \\'South Dossey Rd\\'. There is also a yellow \\'Dead End\\' sign with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17560322730095831, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:27:25.940954+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae8c4d884bcb3e8718a431d85cc91faaf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15b3262d389f51c32c63a1c0f57225ab979c9a35f821ff9c1d4e86caab4e602515e3204daa953cc0c6624f1a9149ae9a16707bc29316066e00f09509b1a75973f44141c8d36fd8c87452aa830867a3da0a30e0e58cc2c20f29b3ea33052c366d28c36063a4a0102375f2d4dd5eb2a7387c1649d7b928a47403f3c1d80d334fb8b63dc83d0ccdf380f2522e83fdf44c04f19353082a7fea0f253d0fc90cf3b600c4b69c1fc6a92ae5a0d5f666c2a65157fef1dcf9c2d21b59ff2600527e4b72af28b49e62597d140470b3fafd9293cffbac178e57e71c399b949fc397d5d7e811a55a657d3581acce0b06215139d146f12ac40d8e1761bbfdf4cef24baeba8d39', 'category': 'Other', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2523.0, \"x\": 2954.0}, \"hi\": {\"y\": 2717.0, \"x\": 3455.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5692: trackId=t1:03355f514cd2008f6e5239c34dd8d989:ffff005f, observationId=o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060\n",
- "Processing image 5692: timestamp=2022-05-31 15:51:49.890983+00:00, observationId=o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names Dupont Ave and Carousel St\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1316333140357066, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03355f514cd2008f6e5239c34dd8d989:ffff005f', 'observationId': 'o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060', 'geographic_point': 'POINT(-111.936049078317 40.7978199587734)', 'mapsURL': 'https://maps.google.com/?q=40.797820,-111.936049', 'captureTimestamp': '2022-05-31T15:51:49.890983+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5255f78fdc342bcd2fcab8f5de9d430f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=35f9233009907b82762a90a2bef92650612014944b56603ba11476af7786584b2b625618b14ac173243447c971acf446aca741c4f29f82f601ea643405e78083663b2a1f78d46aa1c21e7bcd78aaeef0902e53d41829e949d19f31c4fd9fe66efd6e5d43c4743c497259b7b175f78a64448518e427f3b379a540e1582dbff2a056dc98c2e9424ffc07092b9b7ec8a3e196944ab09ebadd083d0817187c06f05afd6690e38a0a9f92d4e21452c76aff207f348bc9c0f0083eacb07c0ff549c2db04189e5c3be18173c1a2871d8ec1f6fad7b192f94b8233be77decd40efc189cea6e1b359fee82e7a8e09cb37759c18b2efb1d749a6106cc82ef1d23b15459d7b', 'category': 'Street name', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 2242.0}, \"hi\": {\"y\": 3221.0, \"x\": 2403.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5693: trackId=t1:03355f514cd2008f6e5239c34dd8d989:ffff005f, observationId=o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060\n",
- "Processing image 5693: timestamp=2022-05-31 15:51:49.890983+00:00, observationId=o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names \\'Dupont Ave\\' and \\'Carousel St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1095176637172699, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03355f514cd2008f6e5239c34dd8d989:ffff005f', 'observationId': 'o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060', 'geographic_point': 'POINT(-111.936049078317 40.7978199587734)', 'mapsURL': 'https://maps.google.com/?q=40.797820,-111.936049', 'captureTimestamp': '2022-05-31T15:51:49.890983+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e0456a75bb616f3ecc5f6e35bfcf842%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b5cb71397c5c17f974b6a88382cb5a0511acf01a0e986c37e362205c78b42d4edd94c508d98baacb20ea518b1136e02e22d11b97db7cf8ed4b155766f2192db6b8405669219cce02aefee527bc26116b5591a8e8c0d0dcd473877b7ea05a9f95ce83ae45804f16e0ce74d4df1ae00c3b500a60b27a083374f0f520b11b21c6c8832197a36e11d4b842e04d49972c8ff3b8ab75486ffbbbe01343a576050b18461654022d8f4ac7fa25aedd245d0eb28288e9120a9c6faf457d931fd3670de0d04217a8cf52aa35aaecea7f2b80aa92798352ea949c0a4ae41c06a7fec38ad0b04b9f8b709177d18a0e2d531da1b98a0eb9b6d6d0a554b78c31870608f2ebd548', 'category': 'Street name', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 2255.0}, \"hi\": {\"y\": 3264.0, \"x\": 2394.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5694: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:03401d599461f0a7314c5b6fb719189c:00110060\n",
- "Processing image 5694: timestamp=2021-05-05 18:14:21.662580+00:00, observationId=o1:03401d599461f0a7314c5b6fb719189c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.043574616594134634, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=1525, total_token_count=1578) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:03401d599461f0a7314c5b6fb719189c:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:21.662580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A03401d599461f0a7314c5b6fb719189c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=01e299132105e92c775947029fb3187966a90a5eedc1b4f93447c1aa5b721157028d916a8a7497d44cd2d4d3b3f7a8923977626c3b6ee51a31bf8196972eef38f7a4c465620aef887ea933b66a738267a10b1627a60a92896efae5b543e6acd735a26e4a8279bcdbad369f266b36ff2111cb3aa89a89f05cb9dfcf7093ff11ce25281681c412550f858fdb811af89e31cbc9dbbd852e8923be9da5e12c6bf3a53fbcd85f34cea36f6cc54b0aa53f8d479c2a401c590cdd2fd7c521f6c072e78e578e0e94a6a2a0a897c2138b93ed5b53385227cb195522e4a5464f2a401ea1c9fa545a4396d6b359e12c48546822552b7a006f6da1df6cfa73f087297d8cefe1', 'category': 'Other', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3869.0, \"x\": 1336.0}, \"hi\": {\"y\": 4100.0, \"x\": 1432.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5695: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:5c2c1c9b325457c4eb960066dc8d834b:00110060\n",
- "Processing image 5695: timestamp=2021-05-05 18:14:20.958524+00:00, observationId=o1:5c2c1c9b325457c4eb960066dc8d834b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28978831951434797, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:5c2c1c9b325457c4eb960066dc8d834b:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.958524+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c2c1c9b325457c4eb960066dc8d834b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b18ddf8dce0f4006276583163b00ac8e49cb74b29fc44bcb0d050050fb4e963f5ed96596bb9fcc3cc1f30d9fc9e535b86d55b1c708dd260774745201fb13ad622eab98c6eb3d82726f68a16d010f74a8c0bffc720d1970594636be046db96dd0c8a529a2fec8222712e6388d5a35987018573acdf42027a406901fb31e2b0231fd53556d1b1f131f294c3ffb9bc9ce3df01c221a725c5af80f51cf2b28ad238b243a5329cc2e919e7578a6d775666286294e7233673b00c47f5ecc4a53c94e8718432fbe2d7c4461ec692257efafbe3e573228db742fd07d1a563618267fd25031a3dd677713838be7e522e34a14ec0b8d593726d0f0fcc8c0cef7553df404f', 'category': 'Other', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3567.0, \"x\": 2430.0}, \"hi\": {\"y\": 3682.0, \"x\": 2477.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5696: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:7209a93adb19c9cbaf5f168feaef3daf:00110060\n",
- "Processing image 5696: timestamp=2021-05-05 18:14:20.254588+00:00, observationId=o1:7209a93adb19c9cbaf5f168feaef3daf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21206034251621791, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=493, total_token_count=563) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:7209a93adb19c9cbaf5f168feaef3daf:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.254588+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7209a93adb19c9cbaf5f168feaef3daf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55590627b3ca4bad24b07a4b5880929938923137d02151c6e3a5fb1ace41acdd4f5bf4223d736a943d87c8a6fa32a72526d91b1de14ec2b443633ed47dd41c24a7845885fe3727f527c152377429d9a851bee62abe880adc6bd3c703f7a2e0cd0ebdd38a2cb8b74d94465ef11561590f892bfd07235194e36782290f290d177bce4f758c6461b3494161959755acd417da6b688a76a8e9b310160630a4b6b693ea2998061f21ff0c502eb139839da5655c2f8a9ff086979deaebb81d91296ee370df5f36861aaa2fce8abbd07731073077d132d94b78bbacda24f752d115659534d153bbd2e53b45d766164d49efc214bf66e6ddf662979f37f7e0b0f020d693', 'category': 'Other', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3427.0, \"x\": 2785.0}, \"hi\": {\"y\": 3501.0, \"x\": 2816.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5697: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:caa4f825d613f68902c9eecc43fb5a4c:00110060\n",
- "Processing image 5697: timestamp=2021-05-05 18:14:21.310595+00:00, observationId=o1:caa4f825d613f68902c9eecc43fb5a4c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic control.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11011119748725266, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:caa4f825d613f68902c9eecc43fb5a4c:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:21.310595+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acaa4f825d613f68902c9eecc43fb5a4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15af7778530b3a9a6180bdd07c7712d8c86c159c903c4e32e256e6fb493b122edc68144dc9c61dbf103012c9341b9666afa11a859464cf8341060ad4e69eee137679b7da9042ab74f38e69214cf48a79d363616008db66572177dfc3902c2edf95af3da9cc9c954c679c7684ccf0031ad9ceeb5f1ce51bad235ad83955afb122de5ec88f1227f1eefe406cf6d4eb418b1cb6bfe246ebe2ea34ceed971065c5a7bc31f0ab54206a33d8e7f640f1a25984aa4d85beaeb02305d2e8f24b0d055788a8d87b00b2e32e638fb0269a06178ff2320ecb383c2fb82b3aefe14a7e46049162844d7f044a1026d5a14ac259bdca15679fefec7be490589c8f10bfc983c29e', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3675.0, \"x\": 2067.0}, \"hi\": {\"y\": 3830.0, \"x\": 2132.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5698: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060\n",
- "Processing image 5698: timestamp=2021-05-05 18:14:20.606572+00:00, observationId=o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2598769496863996, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.606572+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c3b37f06e6348b26a30b2cc2dddee52%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1497f3bb3a6e46e1a863fe60352dbbabfc2159470b4ec196174bcc60448629eea0fde8c728ee1e0f57c2ac2befe46154a2771da0bdfaf3e57d2a990ac5315a8abb2101c47aed4b2e705633865ba6a7eab64c28a3a2fed9fab34c59d260e0a1879832a5efdb3d01281ce30430dde0c259c44b61f6a340ab8e549838a7add6fba5ba6e269db8ac2a07aacc547b922b8346b8bac56f0c1bc25b505444d6ecd42f2dfe370528af1002dee67875708b7d9450e58f498106d9a3eef8d9bf2d2ff176647b92f4b9c54b2daf9abeeb2c4172209a2faec0cb07bde53b070579e06b85200d3b02e957f4c7c644167bb602e1f7062f8fc6d9e40637c2e6e81eb09a1753b8d', 'category': 'Other', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3476.0, \"x\": 2644.0}, \"hi\": {\"y\": 3570.0, \"x\": 2683.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5699: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060\n",
- "Processing image 5699: timestamp=2022-07-01 17:12:05.662452+00:00, observationId=o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'LEFT TURN YIELD ON FLASHING\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08770329265271203, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T17:12:05.662452+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9993ba48001ab4ca55f7aeb7e5049f54%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ae4057cfd55a264300fefb1b330384f6b999e236e148d6aee244d734bc24549549473b9c132ebead1c5553ae4ebaff9eff3a86de8c303fc2cfaa4140fa8cc11527c706afb561ddb9fba87f8b4ea96cea5c13d273fcb781dec549c2a76979f14f4af00a784e2a0b9e850d933058ee986d69e9798a6a89d64071f1c08873987e60aee8604a9c7e6b7e4c466c3f27d70f9c7b5abfacda7391ebdd28be1ae35d572beda0abe53e9e1322fb2c3e7b125b837c868200f3d6f381e3207e4dabe3c645b1ec5ea3b83132ae4a3a52487ac0831bb1f32376acb1fee6192641c9819308127a4a60c58cb6c09e9d4572d30f025439a9f16a8a45da6a4540a62837691a8572b', 'category': 'Yield', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2976.0, \"x\": 711.0}, \"hi\": {\"y\": 3022.0, \"x\": 745.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5700: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:eb3a489272628d01a6a6807bc85ba529:00110060\n",
- "Processing image 5700: timestamp=2022-07-01 16:55:44.158106+00:00, observationId=o1:eb3a489272628d01a6a6807bc85ba529:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign is attached above the traffic lights. The sign contains the text \\'LEFT TURN YIELD ON FLASHING\\'.\",\\n \"image_quality_notes\": \"The image quality is fair, but the text on the sign is readable.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23376476617506992, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)'}\n",
- " Error classifying image 5700: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)\n",
- "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:eb3a489272628d01a6a6807bc85ba529:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T16:55:44.158106+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb3a489272628d01a6a6807bc85ba529%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=547428eebc76459a046fed01cecb09592b46190ba3d9da7b4c8cd43a9b16e172918c6da13d1547348986fd51b7118c62f86cb0728acaf21aee126b72fbc58d45412c97b4d87ead961f1258a1aa808a9f3e4f1b59ff3d6e34d73274488459bd0529869421169948a0e96f6b4026360c7d74bc315af4bf50d91800f7c8eac06f013b017d1dad0843d971c19665358894483addf9b8b3f942cbcda52f1dd3c75080d4cb1e54e7cdd22aa2ccb2123fe5852b69ffd4bb88d744a53c22b2c85ed8483debd56fdd5d827bff9e54f2880cc4997afab1310867f4281f71209c542eb1743a3f98640895c99d14cbc766a9b86331ef831d0bc65c8fe93f853c72b984b2027d', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2793.0, \"x\": 1520.0}, \"hi\": {\"y\": 2887.0, \"x\": 1548.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5701: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:dcd07bf7557c5005fb52e17906f2db97:00110060\n",
- "Processing image 5701: timestamp=2022-07-01 17:12:04.842455+00:00, observationId=o1:dcd07bf7557c5005fb52e17906f2db97:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'LEFT TURN YIELD ON FLASHING\\' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26699209213256836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1525, total_token_count=1613) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:dcd07bf7557c5005fb52e17906f2db97:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T17:12:04.842455+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adcd07bf7557c5005fb52e17906f2db97%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=71551003e823738c9d1dac5155f00400aa043c83a969934c66cf4857b6f5e4686997f4f8ba96b136aa9ca24c6aacded006555c7d41a0bac5416497b0b118f02d0b9c5dab58fbef699d4bd85526754dcad635734fc065063eaf61df6df26edc3c008dec190960a4fd78d4c7a86fe258f1454cfa4869c90892679b2a5de245ecda78cb5e632992ac9ad79bc199bd2e9f4f501eeff085ae5979609a0babae45a193630d496772ef8056bc60fd786ed751bd225e3b602a9022261d4f658c8d83bb1c878d0d68b41bc73d61601bd4c8d3c4c98f5f7b41d737c2192d2b992b00c09f06f4e4ed3cea377665d37b5a2843897cb67886e9e11cc2e05d7fb05dd78a4bce42', 'category': 'Yield', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2937.0, \"x\": 714.0}, \"hi\": {\"y\": 2987.0, \"x\": 753.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5702: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:81561eaeab0040b2f0d2728e715ee3d1:00110060\n",
- "Processing image 5702: timestamp=2024-02-06 22:06:32.141334+00:00, observationId=o1:81561eaeab0040b2f0d2728e715ee3d1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible. One sign says \\'S. Lincoln AVE 2800 2900\\' and the other says \\'Edgewood DR 800 700\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1819179991017217, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=2557, total_token_count=2649) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:81561eaeab0040b2f0d2728e715ee3d1:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:32.141334+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81561eaeab0040b2f0d2728e715ee3d1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94f185259901f01a929aaf8861f4616325b7b0cad023b4f566e9fa18726963ebd583dfe52d611f077703ba78b32e1936fed55e733076e1845906c491668c89570b580aa5c8bad70182950c818144447bab345e394cef387aff2a36a3b87a4db0a1d5def4c79b489d5d2449c0cd962d519b563070d24be3575380e789ca32e96d5d925a91623cf9a44258b432e1a6ba936d739e8b47d5415cf9f8ecc5adcee63dbdc3a5fcacc4829e3374a3dc2e36fb05ce5c88bf41061f938c6721e7e52e7fc6bd982d40b381870de03e2566d6633af6ed73cb328c3383c08321c6378d098fb95ef302bdd41c5a286b346cba52bc19a122efffeabbb769cb911e022feff85938', 'category': 'Street name', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2055.0, \"x\": 1898.0}, \"hi\": {\"y\": 2339.0, \"x\": 2445.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5703: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:fe841c734c1f426d302aa1dd7d0ad797:00110060\n",
- "Processing image 5703: timestamp=2024-02-06 22:06:32.705210+00:00, observationId=o1:fe841c734c1f426d302aa1dd7d0ad797:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two street name signs in the image. One says \\'Edgewood 800 DR 700\\' and the other says \\'S. Lincoln 2800 AVE 2900\\'. They are both green and clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1951912498474121, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3589, total_token_count=3689) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:fe841c734c1f426d302aa1dd7d0ad797:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:32.705210+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe841c734c1f426d302aa1dd7d0ad797%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=60a4cea8b74e8b63566a40a416396e1d995c27b163bea4af1997598117ecdfccc8fdbda015360380f001bfe514b6e827b5828ec318e6e180e1bfd26b20ba099f7933c5e893a9e7ec6bef9a743f1c5feb1fced594b550a48d35158b30610bd79526ac606b3f07da0eb7f813e259f6eafd0984b80b20ec7070559db6a52010eab97b968fb65197f8964a3ef2475914c882e9ab7b20c08209875ce78d746f43c8793de06d67df4fb98ae87ed360d63229a5c90030f16647ba7ec00ec9aec60274f48a73a7906704cc5809a9aec101840208154c3bc11d5d4fe09bd9191e48ca6ceaef3cdc6843003dfa5f687c957c732d362a838f760c41d8ab70aa11efa1cac324', 'category': 'Street name', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2397.0, \"x\": 2366.0}, \"hi\": {\"y\": 2581.0, \"x\": 2787.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5704: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060\n",
- "Processing image 5704: timestamp=2024-02-06 18:07:43.555840+00:00, observationId=o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows two green street name signs. One reads \\'S. LINCOLN AVE\\' with numbers 2800 and 2900 underneath. The other reads \\'Edgewood DR\\' with numbers 800 and 700 underneath.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1436265529972492, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=2557, total_token_count=2658) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T18:07:43.555840+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A199f1a81335f7b95f6dce1dbc4a8da66%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37d394f2f6ff35d256e1d96b6f178b81843c7ebd6ef58d15279463bef44e4f3daaf540f4f86d8dab2e411f33962b36f529b29e9bf15b8f01e905148bf8f09c80a310f343e6b4ebd6d37b2e64f925620e4739c5363f1a6df2918193e1c54fb0ddb9476e8c9267f9cc2d51ebc9f920efd7a2f7c0d0e616ec26ebaf3a47910e81daf8f43ac701d84cab734f2248d746abfd6e3a8279711b3f06299287bf8f5d79df7872cbd4e1e0a19d48d94d0f6b3473b5986ce97be4d94bf24de1a1c81aee17f4e152957a732fa53c0bef198ce98dca87863e591a194fa9c9fd994adf1c26b86fee2b0ad108eeb3f6ae99562c64f0d8c8b0b7da147ed8ee7e3c0f1bce101a897e', 'category': 'Street name', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2157.0, \"x\": 1938.0}, \"hi\": {\"y\": 2417.0, \"x\": 2463.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5705: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:882182347e05981f0ac030c528498c2b:00110060\n",
- "Processing image 5705: timestamp=2024-02-06 18:07:43.963886+00:00, observationId=o1:882182347e05981f0ac030c528498c2b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two green street name signs visible. One reads \\\\\"Edgewood\\\\\" and the other reads \\\\\"S. Lincoln Ave\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15563036944415118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:882182347e05981f0ac030c528498c2b:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T18:07:43.963886+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A882182347e05981f0ac030c528498c2b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091204Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d2fe705a9858fa54358e47f41cde92799985e5808fcfb4a706c09beab4ff0de261f1c09c7ba4c35885eece74e92b44572688e23a7c7d4439590d7fb82269d40b40b73c3683c109b1a5dda590a22d81eb7d4f31887ef1187b5a1829efa04cbf1a2b5da3729e0b983b9d38c25d051779a86c19290d5f27e456b85f764b2f94f43677f48c02f4218c1fdcd23b9b75d55d1cb3095c50a3a23cb5fe0cc0771f1c806248413e8b9bb031ee36db30c0e9b5f29d40dd54549ab244372a6e2d272d5e3c3963c318d0e27b127e6e25414349f4cb2ceab077673a2f32c384b03d0da5ba9396e50d600ac0f048d622271b68f70486398ccd1b7ecfbcaae16dea678c38dea5d', 'category': 'Street name', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2438.0, \"x\": 2359.0}, \"hi\": {\"y\": 2617.0, \"x\": 2768.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5706: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:15c22357d75e6cea75fe6d48050bb9f7:00110060\n",
- "Processing image 5706: timestamp=2024-02-06 22:06:31.521273+00:00, observationId=o1:15c22357d75e6cea75fe6d48050bb9f7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicating \\'S. Lincoln AVE 2800\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1101203542767149, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:15c22357d75e6cea75fe6d48050bb9f7:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:31.521273+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15c22357d75e6cea75fe6d48050bb9f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b6263a5da2f047ec903073fd21a800333ee9b2f9b500568279dcf6f4e698a1bfe8647d0a0fcca0fd06c17811ce99364bcb499c6950a7bf1468aea673ae8925c4d787a98f68860bd623ac71a9d6b2e7bd2eee9b7df6b10a0f4741bb633b40e9215a0bf77d4b95dab8f2c3697f662b7add03f32e76a974ba86828a303204eb172e2b2642c623a370d86876b6982dcf535b7650a4bf1a37a53b2a335469126b87405600476c42a3651b4320311f19097d3d1c36f0772d4f961b99c254de7d6800a4943f12d220e35d1f8872f1f224f6a11f9d25820364c2b49511377964266773f687daa07dd060b4a1466fc31251b864fed9f39d4a4fab570b9467747e66648a01', 'category': 'Street name', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1160.0, \"x\": 835.0}, \"hi\": {\"y\": 1772.0, \"x\": 1548.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5707: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:1efebc04605fa0c692bd374c5d0e018e:00110060\n",
- "Processing image 5707: timestamp=2024-02-20 18:40:55.152721+00:00, observationId=o1:1efebc04605fa0c692bd374c5d0e018e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a black and white \\'ONE-WAY\\' sign with an arrow pointing to the left. Below that is likely a \\'STOP\\' sign though its not possible to see the color of the octagonal shape.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5394159952799479, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:1efebc04605fa0c692bd374c5d0e018e:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-20T18:40:55.152721+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1efebc04605fa0c692bd374c5d0e018e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091111Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98261946c7c86fc950c0a5eaa9262ba2bdb96512876eff9062204fe91b56d90bed42ecbdb5b217fc58807b180849a1599cd574ab6acb67bb6532a0af60127bb44b736182a53d53c45b3b300ce9a926b20d94b35ffc1b71a9ee98067dd70e11fd6930115b709d07c12623739497f729d129d524dd8024199230c12fe118ffaf191bfbaf4bcc0c24e439b320a08b6de50e5c2fbbb05643853fb159fd4b8fb2f8a2deba3039ccc5a6562404cceca099fcf6d7f01689804de9776d25e5f8bef3e6a35566c28a505e90eba78fbbc46ffe85c84b2dafed02786a4febd4991ab84989adc5fc6ad6dba92d333c9b067bb0d8dabf072c4c8b3573c63b59b1b043865e5b6e', 'category': 'Other', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1653.0, \"x\": 2324.0}, \"hi\": {\"y\": 1754.0, \"x\": 2578.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5708: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:ffc6bbff184ecd39274c099a9e55ed32:00110060\n",
- "Processing image 5708: timestamp=2024-02-22 14:16:00.275758+00:00, observationId=o1:ffc6bbff184ecd39274c099a9e55ed32:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign consists of a \\'ONE WAY\\' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6974678039550781, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:ffc6bbff184ecd39274c099a9e55ed32:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-22T14:16:00.275758+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Affc6bbff184ecd39274c099a9e55ed32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10bd84875588bac289f212e9e8e84e4d33f1ac94bbafb4b9612ce54efdfd12844849bc2b568dc3296911a7e7d3fc4739f11323d13e8c5ffea456af235bdb6a2ead7b36575337755fe12e3336d9d20abe7f8835eb5baeb84506a2619e3f29dac43a4f7154dc07ea518d949b1697d795efaf4c9094919f08fd3d2a3317b35a1933e298be7002b72734af313b197744b67b3f1560b6fc315ea95d5b98b6b2f990fcc0e3196507f26bb569b3cf82956040436da8c883eb07a037affdfb5fdd2816a969e02eddb6c73772ef3ba30250469cac3e34e678bd9df7db5cb8a6768142a2186a9999801281456dc8388990590a4411eeed7bf6961343922de056efa658427a', 'category': 'Other', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1651.0, \"x\": 2362.0}, \"hi\": {\"y\": 1754.0, \"x\": 2616.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5709: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060\n",
- "Processing image 5709: timestamp=2024-02-22 14:15:59.971282+00:00, observationId=o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is an octagonal stop sign, and there is a one way sign above it\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2608718578632061, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-22T14:15:59.971282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4c6272bb3bea81cbc3c215cd58da79f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=859813ee3d16c6f26516c7b977f9d7f70dfb9064eb8083ed42bde49dc23a50e05c2305c337058fa9bdff0f53a43d6a773a28ba8619f0d2896993d7f8a27ceef425689529e12a59046f066d97d46ca3a3304b50dafbd04f86f880f9b4115b26e5b3f95a028ff050323d12a79798e3622248dc30938181cd9e5d69b34e0f231700124f2993539f596895d0115d84857a03dc048fcca0c963443ec0fd6238824cb74d447598ea3cf765b9e88e8baf41817823a5ab628d537daf40beb94c32ff3c934e38999b4b9d1efbd01c249fa1ae496bbbcea94f95e0e85a76efc550abc0fc5fe953ac272ce2890a362806fa286d1e46edc3aef34909d8b7d70dfada55c3f978', 'category': 'Stop', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1681.0, \"x\": 837.0}, \"hi\": {\"y\": 1790.0, \"x\": 1086.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5710: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:bc567023d8c9905c4fb103564c67dd14:00110060\n",
- "Processing image 5710: timestamp=2024-02-29 14:32:00.065427+00:00, observationId=o1:bc567023d8c9905c4fb103564c67dd14:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign post with a \\\\\"ONE WAY\\\\\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. \",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5458745089444247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:bc567023d8c9905c4fb103564c67dd14:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-29T14:32:00.065427+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abc567023d8c9905c4fb103564c67dd14%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8a482d43a1fc31f086b9776bc50cbe85c5686eb7a0f4fd87f0bdb0ddbca0b652a035295fea6b79cce98b2254192f7c97b2b842c4c114cf1b357b2613c02e11626ffc7adb2d8dbf260496b921d87aa4977bcd84f4af086b5743cdfaeecb0c4b31364fdddea3864fb5ae21a6e37ab393aa5cf1c74031aee44e3c9be2cb66c737c0f5bbe51f20c4196e0078a50c23a00b9e7c524d1a651b80282982af00b001bb05d75692a24fc593f207140325791b8a177a068fc67da7947f29461c8110590447afe9b3811f69249cbc6a4339053b6748ab803fec65835f7b050c3cdaaf45aba8d6c1bd53db705c3629fc867bab536551a4a0f5531143aad70b77ac178bfc12d2', 'category': 'Other', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1616.0, \"x\": 2046.0}, \"hi\": {\"y\": 1712.0, \"x\": 2320.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5711: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:29c4c772416f7ba218972493ed8e1af5:00110060\n",
- "Processing image 5711: timestamp=2024-02-29 14:31:59.753495+00:00, observationId=o1:29c4c772416f7ba218972493ed8e1af5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a combination of a \\\\\"ONE WAY\\\\\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \\\\\"STOP\\\\\" sign as the image only shows the back of the octagonal sign. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5312228109322342, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=3073, total_token_count=3175) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:29c4c772416f7ba218972493ed8e1af5:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-29T14:31:59.753495+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29c4c772416f7ba218972493ed8e1af5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3f79f68dcd1549742a2be308293fd1fe6e176c0b21c2745f51e190724bc4bddbda4e043f5ef66a16ae04781b60f91e22a6facf10c50e0e969dfd9288ebd57a0fb940a39408fe480934f966f24a9c25675e48327a548dac01075e33fe69f8e677b3064a7c48afa5be83ec2ebe2f299526d48389f746cd12d8fc13e0435749976d2e42709815a6f1359604477f6c49e577d67b97a01d2ade70fe3d5476eb9915ee87b72e741383c45009077299ec415ac820504c55c0ecf498d6c2f74b864880b3b11590d08f103c2037b01d6d9b97f682834b6255467d70490acd6113f6608fc3079b2d9e8c17af02af311557b99a55dc0b72491f9b60119cdb80eb92459e3dd9', 'category': 'Other', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1694.0, \"x\": 626.0}, \"hi\": {\"y\": 1806.0, \"x\": 863.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5712: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:8ecf869bed92a19331c46e3d8caceee4:00110060\n",
- "Processing image 5712: timestamp=2019-06-05 19:35:12.013376+00:00, observationId=o1:8ecf869bed92a19331c46e3d8caceee4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a \\'3 Minute Parking All Hours\\' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38012074849691735, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:8ecf869bed92a19331c46e3d8caceee4:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2019-06-05T19:35:12.013376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ecf869bed92a19331c46e3d8caceee4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2aeee2ff76332973dcfbb3518ad8933883b3046310ea89b3051d6c773a5d93863c181a6838b04dc84157f61e9dea568826128226ee1acec739f55d0f9e10ecb8321bbd7ec50646f5cd12886f21bdd424dcad3a4857ff03b963605612818548bc3aec1ec5233ea4a9fa20bd18350e87c9a485d1cea48c98e078a04f5c2a5e392756db68bdec9c158e0721571fb03a92031020c5effb83601b4ebf18ee149b8ccfe81a2ea9b2a4df6ac17951a925d1f0c70da630587949cbe24bc79566b870d1099baf14478a471a6ef946ee15835c6b872ea01dbd36dce0f82b28a8e78f3147fd36e77747b377e52da654d43b5ae9c87330a4bd5ab6af50bf004c096e7a4f9f2', 'category': 'No Parking', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3235.0, \"x\": 1724.0}, \"hi\": {\"y\": 3331.0, \"x\": 1784.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5713: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:adb4e6633454791679c266fb307df41e:00110060\n",
- "Processing image 5713: timestamp=2022-05-19 17:29:23.163969+00:00, observationId=o1:adb4e6633454791679c266fb307df41e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign that says \\'3 Minute Parking, All Hours\\' with a car icon and an arrow pointing downwards is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2898569636874729, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:adb4e6633454791679c266fb307df41e:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:23.163969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadb4e6633454791679c266fb307df41e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092129Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03e2bcdefb767b3c75066c2c1767684fc38004511fcf604a595a0bdde3470baec5c9df6065f9607154473bc9ab82f5f4b994f108efdc4322e52df6c6b37996f6b042be1bac90e2538f2e8d24dabcd9aa0935c7b36949fc544074a33c8aafde9da956ce292a8cc4939d8bc0efa3be809b53043bd1cbdfa922f896fdab6d9908312b4e10032e6f15a8baca68287f9640a1c80ca1d2e720adecffe32b63aad6d8a4047591fb381547d627ab99778f20e38f53b9c621ec1ad76f9c2621c81e49ed9352230afe0f39365da0046aeb03df42f315b238fd97c59ce745d133e0821d2d6fe84b8f7be5be649938ba632948e7ffb6bdcac39f2e18574662962c2da21aba17', 'category': 'No Parking', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3181.0, \"x\": 1155.0}, \"hi\": {\"y\": 3257.0, \"x\": 1201.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5714: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:ac7fa301e180edef748f82e34ac8a0de:00110060\n",
- "Processing image 5714: timestamp=2022-05-19 17:29:22.584041+00:00, observationId=o1:ac7fa301e180edef748f82e34ac8a0de:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign indicates parking restrictions, likely \\\\\"3 Minute Parking All Times\\\\\".\",\\n \"image_quality_notes\": \"The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3227508783340454, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2041, total_token_count=2121) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.'}\n",
- "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:ac7fa301e180edef748f82e34ac8a0de:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:22.584041+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aac7fa301e180edef748f82e34ac8a0de%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c7d2e4780aa3199cb14df30de9091636d912bdbd361c380826e8eba63676af6d212435a2c0cde0af429d711d2b07e15b18310aa33c2d602c70018c29d7de89397ee3c4238df2fd37502eea29d5ac43657bdf84c620dff8374b24eca366763206de7a061059aa7c8826b8813c859ea649856f0fa2d3adc2c3026763711475e2d59726b186622c7915bd7ef817effaa7ff2b48279251b11ab9754bb435491b18b4bf37319a6eb2bcbc9b8d5b676f163dd03395e0e5eb501f6267dd2ac405f27d12fafad8bb6e17c4fd5fd3e28294999184ef9272adff6bc0cbc4f188d575e0e83632fa34071ab486734dc85527bfac4acc4348e7f155f2ef4eb28ea761d350611', 'category': 'No Parking', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 970.0}, \"hi\": {\"y\": 3261.0, \"x\": 1005.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5715: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:6171db56e606bcc10643900ff29dff63:00110060\n",
- "Processing image 5715: timestamp=2022-05-19 17:29:23.715937+00:00, observationId=o1:6171db56e606bcc10643900ff29dff63:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Yellow sign that says \\'3 minute parking all hours\\' with a car and pedestrian symbol\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29429315420297475, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:6171db56e606bcc10643900ff29dff63:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:23.715937+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6171db56e606bcc10643900ff29dff63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8975e7f3663b2f59336a7747610e8f7a457890cf65ddbc119dde1a2f41781b1aa0b65f5d4b3c4e35413575a26689e96d4dd5d7325e2d451fa8c84094dc1f25d9f8d548d9dcd751a955d1847444585a206dfd6462869bfc37b0de4bb9579579960c36454e9f4119cb2975d097c416544f58ffb381ec217627c4d6305525167ced39c7db34cd252a0773c1c86059f6a6bc66ec2c7e55334b2a8eb668b57ff037d8e4eaf5fce2c55d44f5c5d39cef0974e7ccaa838983aa4f2cdf24c9884c8e518231863fcb823b3cc4ba661a62f51ab334db386ab5868be1c4df27f96aa8075d271832dfeff0badfd45a95dc023175e8cd6f71c17ddfbf0d99be6d245b860647f2', 'category': 'No Parking', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3207.0, \"x\": 1473.0}, \"hi\": {\"y\": 3305.0, \"x\": 1535.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5716: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:f2fb7770257eee552d6204a626f35709:00110060\n",
- "Processing image 5716: timestamp=2015-09-11 19:54:50.500967+00:00, observationId=o1:f2fb7770257eee552d6204a626f35709:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign indicating \\'3 MIN PARKING ALL HOURS\\'. The sign also has a graphic of a car and a person standing next to it with the text \\'DRIVER MUST REMAIN IN VEHICLE\\', and a directional arrow below the sign.\",\\n \"image_quality_notes\": \"The image is slightly blurry.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4308347601639597, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2557, total_token_count=2652) automatic_function_calling_history=[] parsed=None\n",
- " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)\n",
- " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)'}\n",
- "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)'}\n",
- " Error classifying image 5716: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)\n",
- "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:f2fb7770257eee552d6204a626f35709:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2015-09-11T19:54:50.500967+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af2fb7770257eee552d6204a626f35709%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52b90d119d53689c1390e4d547d84acc18f0390acf8f3d2d2b0a1942b2bb2724f65bcdcb1442eb97590146bd45e75c36994bc92a5d4e7a0041faaddefc8279a2dbb194088ad1c4e7cc23ea7bc209b576ca1a9d82342f6c9f2d6505aacd23cb30d726e158e7e2d3a3c8b345606ba9ae55de585eaa1177cddc7c44cddff8c88383eabfd819ed03a9b8a45074ea8c2d611fc5cc14c82d8261f068c0a08154e9d09c291c2eff3c7e52c0e35af5d0f9a40a4f27f97362912269f3c27ba48f167b7c28a7056f1f8a3c27273d7daa64ef4c8a2baa9f4b80e7fed3f1e7129dfea840bc2946ca9f5a4a0920b14b0ec1731480918d906702ff5a4ac44a62ce3b76d4269c33', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 305.0, \"x\": 477.0}, \"hi\": {\"y\": 441.0, \"x\": 550.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5717: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:5d2114cd284ee9845dd181ab0930d759:00110060\n",
- "Processing image 5717: timestamp=2023-12-19 19:41:39.672100+00:00, observationId=o1:5d2114cd284ee9845dd181ab0930d759:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"No Littering\\\\\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18540712406760768, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338e345851cd9732ecde00a2d763933:ffff005f', 'observationId': 'o1:5d2114cd284ee9845dd181ab0930d759:00110060', 'geographic_point': 'POINT(-81.9876729864861 28.0535673539454)', 'mapsURL': 'https://maps.google.com/?q=28.053567,-81.987673', 'captureTimestamp': '2023-12-19T19:41:39.672100+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5d2114cd284ee9845dd181ab0930d759%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b86eae8130b5ba864b640ef7b47ee0687658f415c2701dc2e14fefae9c3e112edbcc0cb8f05652d917ecb35677e999ed2abd5f6ef253ebceb4e72fe219dabea195d9775fced5487fb394dd838b0763e64fa5974312c0c5ad98a1ed64ccb54e4fc8a90dfcb0a9f87a9f2bbc8b68c626638d184cc6caefbaa4491e43aa3381845852a9a0581974eb1673108d110cff782a9ce2b2c25da1d0e4e28aba8c239d983b9c8b1215fadd5754e2a459768a5e5d7285a1c3ea8705e6c86f6f27e373b561cec8c3aad8980219c3bb53f14314c5665a7f26966d39561a1da06071ddbff4cd4a57e53e3e26a838b5d5be9326a665a7b43063655de7a290436608cfb8c3b7c19f', 'category': 'Other', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 544.0}, \"hi\": {\"y\": 3240.0, \"x\": 586.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5718: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060\n",
- "Processing image 5718: timestamp=2023-12-19 19:41:11.524902+00:00, observationId=o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.299327248021176, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0338e345851cd9732ecde00a2d763933:ffff005f', 'observationId': 'o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060', 'geographic_point': 'POINT(-81.9876729864861 28.0535673539454)', 'mapsURL': 'https://maps.google.com/?q=28.053567,-81.987673', 'captureTimestamp': '2023-12-19T19:41:11.524902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab91de6b4c4d120ca9720fbbeb5df6879%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b08c686001b2c081f5782e5d95f04d3c1987d6011c78c202c2f3d5994e99a3edb5e3d25e95746265ff790ca980f9d65460db54b0809f5919ff2352c81faf9cd7ff9cd2646d5b4eb7938e15976aa8c8357d8e20f97d618344f573857cb2a31b772932e716d9af2433fdccd3d63628e80552de4757e6e15f9f0bfa4583c48452e1ea686b5d933b9063d82a95fe50808910489401823a7ce82a7c34788e3433b4d0cb5eee34ba5586f8c681f859ed1331aae7e99ebaf737699b2bdebf43243b4dbd8d9065f0d542ba69ff123c0af02f9dade00ad46c551396261ed82899da00edb797b8145637116f7c541373c2013487894d310b2ba630cad0d3fa64b4be7f1a90', 'category': 'No Parking', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3179.0, \"x\": 603.0}, \"hi\": {\"y\": 3222.0, \"x\": 641.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5719: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:1a0f96ed5a3513e1ce977596ee231db3:00110060\n",
- "Processing image 5719: timestamp=2011-04-28 16:34:40.586923+00:00, observationId=o1:1a0f96ed5a3513e1ce977596ee231db3:00110060\n",
- " Error processing image 5719: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a0f96ed5a3513e1ce977596ee231db3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a9cfa9fab981ba43ae29da839de4ffe5551e18f58619dc195064a10c03f7bcd9bba32dc7c259ffccbd9f9494890ed768698f945948be4d81972eaf16ffb38d4d8c71554a854ab9cfce9e1c345e1155e11ef09f698c29d1c6d14e928ed006a3c9e0d9cb1a5602f4e317f14a1b16c71368c20ed6d0e71448265d1402597aaf81f784fcc60e3687c34252ce6330b8834d4d4d998f04c47246b21607d194138fcdd934e1bde8ef038980c3f6e0d4c6ed5d944f43ae478c4123ad46323a9e07f209e9ece7087adec4e0ac8a99fa63f9d0e162e88af25c92bf22377119cea1cfbc95e9322c5a2aceff112c42df0e9b9a84c07e40f03ced44fabd5917e8a69a611b225\n",
- "Processing image 5720: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:8e6a1187dbdbc551329235c26196e816:00110060\n",
- "Processing image 5720: timestamp=2011-04-28 16:34:04.620990+00:00, observationId=o1:8e6a1187dbdbc551329235c26196e816:00110060\n",
- " Error processing image 5720: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e6a1187dbdbc551329235c26196e816%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=64c7257cc944422c909bd1580c23ce5bc9294de6c0518caf8ebc208932fcf602e5c7386c925661821de1d67923515214b4dbd0e994df08069b0a6304ef7dfccb2d2b5b8bc1b85c98758852401d8b8af5ca9fa22d186a50284b2300c3a5ed534743ef8b31d9b2b6a00ed1fa25643951dac2dc7f932dfb95e5db0fbc41afc5baf610acb5db2579e150a3c89263ea375724d966c9a1f5b3749212ae7a68bc3ad5e96c69d681ee6ba699914b33bd38942b173c1277bc5a5f2bae3b0bae6f0c7706b1c12b0eca0dd2ae076c8e275c28cb221473f24c6e4736b3525f9bab5be7d3f9e0e8734a66af53cf702e1fb451d206fe0d860dc86cdcaad22d76b9dbbe98d1cde0\n",
- "Processing image 5721: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:900267fe6a7ed1ad0aa5c8eb34ef38e8:00110060\n",
- "Processing image 5721: timestamp=2011-04-28 16:34:41.077219+00:00, observationId=o1:900267fe6a7ed1ad0aa5c8eb34ef38e8:00110060\n",
- " Error processing image 5721: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A900267fe6a7ed1ad0aa5c8eb34ef38e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091014Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4243244399ca628981700c292f5eab10b9862981b7a0e76c7294753c95d73b0fded4788ba8d0d4b514aeaa020e6215cd0f1d441ccad5dfe0899b07c1368e68fbf9da3e4fdd47d5d84ad4cf6751c552fa3462950ba353502e07ed0673a95f39e10477361c00902aaab16e9927a9080c947ce891f3e1873539710c704cd9407720dfe3072711b7723ec2b9dc69f30859f1f1d14f2617aa7c62d3b61bc56de5d254c0caabbad16ca591fd980c94daba64370cb3594cb3cb7ea8511bc8dcb43461c8be25030d7a6cc3cb46dc696b83911c71d46acb712171b81a8d6188bf060784fa72b063f0db32ba6d51f62e5490ca04d3cd40dda67864c48808a7e35f0743a8f3\n",
- "Processing image 5722: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:fb15285b491fbb6fddc97aae2c4e5643:00110060\n",
- "Processing image 5722: timestamp=2022-06-15 16:00:15.529118+00:00, observationId=o1:fb15285b491fbb6fddc97aae2c4e5643:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3565064899957002, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:fb15285b491fbb6fddc97aae2c4e5643:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:15.529118+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb15285b491fbb6fddc97aae2c4e5643%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092728Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11f3305466798fce5f2b021abefef043efa88f3213a181f29fbaaae735fbb86c52bf054dfbfc50a37e8125a3a9cce775e3bb6509d57edc37de4ceae06142189de6d836963aa507af571c0dd742f171f5980d0c612e990b01fccc17159abd6597aecc2e57bce91944ede05065ff37477ae094ecca39bbf028e08e08b1762591988ec3d6f003810a4396b88641f076e91ebc98029fd3ce057404d21d3d0e37e5d1d8c068b1850b0984dd12a6bc38e807d5f44f89749f91407e7c424e267161be88943938a0384c42af60734616596d4a63ad4ec6885b9ee986c0e843ba396aed26bdbcf8302cf5e97145fef6033f88b4cdeec907040b60755143245934e7011b47', 'category': 'Other', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4754.0, \"x\": 1888.0}, \"hi\": {\"y\": 5048.0, \"x\": 2035.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5723: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:d36679e13900d0d0420d658ee5e8ac86:00110060\n",
- "Processing image 5723: timestamp=2022-06-15 16:00:17.725090+00:00, observationId=o1:d36679e13900d0d0420d658ee5e8ac86:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange traffic cones on a white line.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09323608464208143, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:d36679e13900d0d0420d658ee5e8ac86:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:17.725090+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad36679e13900d0d0420d658ee5e8ac86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=53aa27973bed560d458b3d7b9e2d43aa67927a4f5e8208ebe5b5e5fbb189823c24909bd48dd7342ced75dabbd00df265c249f4a61e3dabe1ca49d358c39656a5cb78539f882a2ce92b0dc4d2de094675123328aae125de7ecc806c3e2b1f126b5d5d58012ff8d5a6112aadb400e056df29206b35082cb5701cd5e8eaff03b2192927fdef5c7696de9d891d9d30fea6bf4e3ce4d219b7761c4112f12aec24fd0378f3f1aa66169d3969df31d65c972477061f97d9f694eeea393c8269189f12536c396a186e75d24d69754aceed6ad13955840d2d5c4c2fca272e2fd89d812f7e2e3887a5b24fdfcbc8dc1b64c0b87688b2a8456daba8d628973aac88c372085f', 'category': 'Other', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3504.0, \"x\": 3120.0}, \"hi\": {\"y\": 3571.0, \"x\": 3149.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5724: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060\n",
- "Processing image 5724: timestamp=2022-06-15 16:00:14.349113+00:00, observationId=o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is present on the side of a road, marking a line.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2764331878177703, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=1525, total_token_count=1588) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:14.349113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36b1fc3fbeb42ff223f8433c2754ea6c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a70938af8fee7bb19aea8dceede1951dccddead42e9a036617d9bbe2a81b106f67036206f2f186e5353edaf9fab0c741ea6bf21f639c63e5ba3d8ba1c46f2934303435d80407c31d157ba097721d6cd5b2d1a5fade0ba9fb1dd28f401915720bcc26886977fd9774defe456d117a9300287dc84eb1c7283c12ba4ad7f695cbf5d02dae488fc6665485d75486df4df1fad7233d02d28089fcdd7cc5f7bb133bd85d9a038f0c94f80a15e8e254089f09d0a5b4ebb71204fc0681354499861b7d47940dc23b6b3f079719b27fe2e65fb3c42b29d57bb9bea53a4dbfc9c6ef9114bb0b7cf31f597c03b557f03aacb643739214add0b91cd757b3dbdb9b4adc99328', 'category': 'Other', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4110.0, \"x\": 1122.0}, \"hi\": {\"y\": 4300.0, \"x\": 1206.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5725: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:fa794c5efcf1f3df1376d60646d5de9f:00110060\n",
- "Processing image 5725: timestamp=2022-06-15 16:00:16.897219+00:00, observationId=o1:fa794c5efcf1f3df1376d60646d5de9f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3152872721354167, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:fa794c5efcf1f3df1376d60646d5de9f:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:16.897219+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afa794c5efcf1f3df1376d60646d5de9f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=627e4e9b0b532dc8338381a4b4c8148f8e91e8fabd08cad2e313c3488c16c11640d2c2e31b03b404adba6de02a8b5acb8d82c37aae15c3187644354eed7a98fd7ad7f0ba83d460f70b2bc4c72f6380ec2197768cb8fe3b24094c80429c191e96162fab4f1210b4d854b62e948bd1fd222c16384d7a149e59775337adb34d9d73f3ad907bc4c2d93ae7c6b6ccddcc64b4b12c4fe5651759a41f7a1c7663f0dc8c01fcde4c380a209aa4b39b570cb18f3dce669eb13805bef4e7451b68adf1555ac48697d8523f83b1c7b42a6ea0b437197e42d4eeb555d35e4827423005c6364b419340c67cdeb80bdc4dc90b2a878225d60ffdcc25b5330933032c6d0cd32716', 'category': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 3576.0, \"x\": 3044.0}, \"hi\": {\"y\": 3660.0, \"x\": 3083.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5726: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:e2a65d640588c7928a3b6ede20c47063:00110060\n",
- "Processing image 5726: timestamp=2022-06-15 16:00:13.805116+00:00, observationId=o1:e2a65d640588c7928a3b6ede20c47063:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"N/A\",\\n \"description\": \"There are traffic cones. This does not fall into one of the standard road sign categories.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3139677914706143, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'N/A', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'N/A', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:e2a65d640588c7928a3b6ede20c47063:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:13.805116+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2a65d640588c7928a3b6ede20c47063%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70e6fcddabfce387c851188152f604a140b540f5fc21c262141890ebf5779d479b56bb0f3e5966b943932751ef230866f4e202b17fbaec1aac6acf70448723d9d31ccb36b44571c600306fc89091f3066f324fc068c9c34b3a7d2f07a895d8c53e1f6f5fadb7d544183ab859e4878d7b93936a1fbbc3c8bac0f01d2e52178ff280d131cf7c8c8f2a79106473f52ccef614f5760f88dc0c7fdc3ab14318a14ba8e7cef96c2f11c498b7da4db521c8f87bbf12a8a504a8d6b198284d2ab40ab3ff5ee800b152a1acec44b60fe3150874612e3c8ca1a048911727ecf161f1544060cbf8605c24e25945cd3ed65d3a7de45b46281a3cc3e2abff9cce818a7ad245e8', 'category': 'Other', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear', 'sign_quality': 'N/A', 'bbox': '{\"lo\": {\"y\": 3746.0, \"x\": 856.0}, \"hi\": {\"y\": 3862.0, \"x\": 907.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5727: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060\n",
- "Processing image 5727: timestamp=2021-07-21 16:53:25.667609+00:00, observationId=o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions. It includes a \\'1 HR PARKING\\' sign with specific time limitations and seasonal dates, a \\'No Parking\\' sign with a right-pointing arrow, and a \\'Resident Parking Area\\' sign for Area 8. Permits exempt time restriction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30096635724058246, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3073, total_token_count=3174) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2021-07-21T16:53:25.667609+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa2c6f58c6dd49a01dc7e963c1fc95719%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091515Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93f645145998ae45c101e9d5e51cde34cda2c0ee2bf3639b8b89c21898e005ad0ab2df523c1a8b2e939df7381f37d07a9ec15226e7568f9d78304afc2a0944d74ee15fdb9abf5ece6447bbfb7336e9ef3b143f8fcc3edecccde18bedcedbf94f0db8f3bcbe0f9d7b78ef8f42f348940f45b632d2c2260fd1799876e9fdb77e84719622acc1f1b33c7da158485efe3251ba39bcbd83be03d9fed9146f5a66ffa7e53ddf2cd457aece9e11bb6a67cd127a5fb4e30f50b60adc77a335ad45752482730caf5c1cedcd24ac8e281b9cbf9c9b37e151eb04c1668121fbd58f48c6dac03ecd68f3561048e7b4c4a949fce25fe454e979310f7185beb6cbe5630962e430', 'category': 'No Parking', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2059.0, \"x\": 1332.0}, \"hi\": {\"y\": 2245.0, \"x\": 1454.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5728: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:81eabdbc2b0fefcf930994ad55ed963c:00110060\n",
- "Processing image 5728: timestamp=2022-05-19 17:05:45.959961+00:00, observationId=o1:81eabdbc2b0fefcf930994ad55ed963c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4963952734115276, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:81eabdbc2b0fefcf930994ad55ed963c:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:45.959961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81eabdbc2b0fefcf930994ad55ed963c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=102c5612aaff3e386345e7bfdb079cc0133061693300fa4bdb6109f8f8ca10e451290a1ab2d116160b981744bbe9694a25ec28878be2c5bac41512107d3a6a39c651a0f9edffa27061b5b95938838e837d5556a52070a319008d6eac649b9cc0a56410cd12c4aec13dea2853b35c8071649193bbb061d45557748bf04440c77c80ae4054846ba9d0e19b3cd4c93fc1122daea882a98b8a85dba0b56d795e4b25a725aebd1f0786451c5bc5037fba75dab5db6ca73dfb587424ed277c565c84fd350c559a0435d8b8e31b45ce6d352c73f6a0eef5b807c68bdd00bcd0c90673439bfcacf6bffd042c3d5855ffad8ec01e7000ca48ea49fff9205c9850ab1b796d', 'category': 'No Parking', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2662.0}, \"hi\": {\"y\": 3240.0, \"x\": 2766.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5729: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:e65afd49e92ae14b108899b6910e9d20:00110060\n",
- "Processing image 5729: timestamp=2022-05-19 17:05:45.123555+00:00, observationId=o1:e65afd49e92ae14b108899b6910e9d20:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.264889574598992, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3073, total_token_count=3160) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:e65afd49e92ae14b108899b6910e9d20:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:45.123555+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae65afd49e92ae14b108899b6910e9d20%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a322265d0412af460ed04d56db7f9c6f9a9897c2a65b533586f07d1491944e49f59cd0282ba186544948631b97aae86f2a2fe80b9543fa79202b308bacb3a987d866d72c00d1c333ba97dd8a623718caa7ca64a1dfa21fa7d67a1a388d7f2b736d58055477508825ec63fd530ee7ff290049fcc6f55bc4dacbc76c975db38ec69b44110e2553b4d838c32b12df9275be366ad52b33308bcb9e2df09f0b8d74c77c886bab48f7910315e9a697c85655a2af6c537f15f6108c2e6b1225dd8a24b31ce02846c48360fb7c7eb0bd32e7524afab6884be4e46f8d3a40af0270070f36f41ae10639e7f52e83af922e43d2b7a42c03860e3d85ddfc94931b4bce20a46', 'category': 'No Parking', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2046.0, \"x\": 1153.0}, \"hi\": {\"y\": 2306.0, \"x\": 1328.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5730: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:7039c1a51b7b3343abf0f69f829dd90e:00110060\n",
- "Processing image 5730: timestamp=2022-05-19 17:05:44.275551+00:00, observationId=o1:7039c1a51b7b3343abf0f69f829dd90e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the signs are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5682685569480613, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=135, prompt_token_count=3589, total_token_count=3724) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.'}\n",
- "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:7039c1a51b7b3343abf0f69f829dd90e:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:44.275551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7039c1a51b7b3343abf0f69f829dd90e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4147d7009df3a17cb1c9d3d0779b69911f2dd60152900bc70cd0a8ee735440bde9e07ed017ff44d65a708f44a51dffa7d79511dbc9eeee7594b9aead7ec08f9122b2566a272951bd29d701bd36482aba67b8424e76e739b74acdd7546b1d89e297024511d05c9faa055e453c24b0541504b1242a4a92a48c78a90ccbe55f363f648b9faba328fb593b8932c9fc223d5a48e3814faf74a3670252dc2c8da4d0603c5d861298a7ca69facddc9aeabb364bf0834080576fd7d255741a9d67ec9ad1021c9c0f915136e0159ebf5758574110724b815900555ee1126c221d6b91e107e1d6283039660fbff7cbc97de277cbdf2cdb384274ac94622e93b32038af0d1c', 'category': 'No Parking', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3044.0, \"x\": 477.0}, \"hi\": {\"y\": 3268.0, \"x\": 569.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5731: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:f03e1f20d15ae61ffad25187ada73a07:00110060\n",
- "Processing image 5731: timestamp=2022-05-19 17:05:44.275551+00:00, observationId=o1:f03e1f20d15ae61ffad25187ada73a07:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.\",\\n \"image_quality_notes\": \"The image quality is not very clear. The signs are difficult to read in some areas.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6854481966990345, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=3073, total_token_count=3179) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.'}\n",
- "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:f03e1f20d15ae61ffad25187ada73a07:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:44.275551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af03e1f20d15ae61ffad25187ada73a07%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6e3d9d1f6261df3c3391be726d0fdd8d8143ab4f26bd2b1eaab276885d5d153dd6d152057b0e88b57588984655f27ffa31819cf0c971f17dab9c7bc4ab56772d7c27490d0bbf33e85c4734b8118118b4a0fa4e1beb250d1510297d3a4b99b9fef6a178a2b9871f9405879752ac5520701bcc3be8fb73e6dac5daffd1d8ae225ca9577abf038d466005c1cd65f358f17cd8d28d754c215ca153b68611b772161b7f980dbe3007e5559ae936a15a32d0f676e1f15abe6fb5142887339ee589a839b3f478475e16ef56131db1889d24da5025b639cf2ea0253a649997d9f6a49b2577883955e337130776e4ab754d8fa9bc9e61f69a86c9d1ec503c63ef5d4cfdc7', 'category': 'No Parking', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2154.0, \"x\": 3531.0}, \"hi\": {\"y\": 2389.0, \"x\": 3626.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5732: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:1e284afda1c4a2491cfc424c95e13a25:00110060\n",
- "Processing image 5732: timestamp=2022-09-07 17:00:38.972689+00:00, observationId=o1:1e284afda1c4a2491cfc424c95e13a25:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible, it reads \\'West 2nd St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09813872850858248, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:1e284afda1c4a2491cfc424c95e13a25:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2022-09-07T17:00:38.972689+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1e284afda1c4a2491cfc424c95e13a25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091316Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=76455bd3d1fd89a959fbf86d9d26a4e61153ab6e91ca2c21763d61246a7840c4573da7722e13e6cd7ab0209c354fd230829ee6ba60130953840f0e86663587bae2d863e4f03ecdb81f9c8afff0e622152845bfaaa7dbacce67591498cf5c18892ac491f7a0f8805822f399acd7caa767c7f33129f932c498c30f051d8cdb7a60219e6ffa6ac5bccf9b105bcabde2beebac6e24352831c0b5a8fb2bce5c12ff9a34cb6e5076ffa578370b87325f37d26ed7a08b2b326a1847e1edc04586197e091564fb075d9fe178130583f5771a00df242c96f9a61ae6636a507405aac1eba547163fbd9b3ed0cfdb508ed63db6084be9e64350f23e1deafc3618ae4c34f74e', 'category': 'Street name', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3133.0, \"x\": 1191.0}, \"hi\": {\"y\": 3191.0, \"x\": 1338.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5733: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060\n",
- "Processing image 5733: timestamp=2024-02-21 14:47:09.368605+00:00, observationId=o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating \\'West 2nd St\\' and \\'North Davis Ave\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.046450379965961845, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:47:09.368605+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4534bdff5a49e47ad180d52dca2a2b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a09a055925cd44befb6329fd2a293de33718128e10f583be94b2b7ddc3fd164b8b3e0035297a27825aba27412bb60fb32e65addaae749b8c473c00e9a65ce44ea4b8ed4573242c5a9e731e17e5278ad9845aae1ff2e372b70c0a1d4819481f40317e7e88c70a37095dc0d1b37a375bf2a4333fcda0f4a0cc3e63a32ecf586390cea99000deb58abc8cfe11d339e5ba6725d8dc5aaad7f700f66c3061daf8ad704c849b91b2f08d5694c28f3987647a65baaad2261df77c3cc1a7b97ce774dd7dbe2a28778926fe76be7bca80a2ff2dad4bc92601c53fbdf48d45be7679bf34b7ebf2497e3e63b5079144a12e9281de3cabb1e5e240ca203e7ef706f1efc12029', 'category': 'Street name', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 1370.0}, \"hi\": {\"y\": 3194.0, \"x\": 1480.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5734: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060\n",
- "Processing image 5734: timestamp=2022-09-07 17:00:38.320693+00:00, observationId=o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'West 2nd St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11667310996133773, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2022-09-07T17:00:38.320693+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1ecb7c06b4614ff94e3fc6b1255d4359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92935230718caaa5c20360be8aa2f86ec784f5c72c086f0375947b8b2915bf37eb5f1c0ba782fae8f2877adfe5c8dfe99da5ed2ce9128656af4b0cfe1b06e057ebfa4310d16c3e2a33fd9beb98dcb7ad33c6e70591b459c4b4c8cefc97d88e682eee2544be74e166c718c799c51f8cdd44f198bfcc44e999fc7239e1a6274495b1db89bcb2f3d1bfa5c37afcf33b8a1c6d6364b8c652ac227c04397193f345db47ad11ccd19ac09a94ce15e98f69ee94729eca8f13a551ca61e76c4e17cd86e5888958565e4ad8dde4656288dea0cbe841bb530c93c0e911bf6930eee3e43d95c4740581a92412ff08f0f78ea9f84edad7f2dbaf89dc9e55d2c748911a23d91a', 'category': 'Street name', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3136.0, \"x\": 1010.0}, \"hi\": {\"y\": 3185.0, \"x\": 1128.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5735: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060\n",
- "Processing image 5735: timestamp=2024-02-21 14:47:07.952964+00:00, observationId=o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"West 2nd St\\\\\" in white letters on a green background.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1916493929349459, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:47:07.952964+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ec38ffd76ff195804fec9fdc569d2fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8050ff032e7f2ededaad8a242dfc2c5a5f842350b07bfe03489d445275fb88dd351ef366ba6fb6c4d7ceee54f89a105052fe5c03bdef602d997de0518f4f045d6c9a58c9188e5791cfdf0a66f15227e1812549cacbc4381b9a5fed2a27ea4cb3c25803550116b0f37da993e7653601be064100f820df0b2f2b59465461232873e701692a0fb110f3fe8bcdd0d628a889c0dc702828ea599b9146bf0ab23d1aa1e023fb4662bcebd1e659fc25b3238ee07c6d9f92dafc2163d47cb362318339517ad145c3be4654691f52c6c1df7b421089e8c9809b0877fb4bdbb423bed751b718e9a6d5761209f64b01a8b64bf4172292d13427433ab95768c0566f9e1d5861', 'category': 'Street name', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2861.0}, \"hi\": {\"y\": 3142.0, \"x\": 3093.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5736: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:ee076333cc84c8a36e83500f030bbc0f:00110060\n",
- "Processing image 5736: timestamp=2024-02-21 14:58:17.765683+00:00, observationId=o1:ee076333cc84c8a36e83500f030bbc0f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names \\'West 2nd St\\' and \\'North Davis Ave\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10881520029324204, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:ee076333cc84c8a36e83500f030bbc0f:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:58:17.765683+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee076333cc84c8a36e83500f030bbc0f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7375f5ea866025dffbc18b85037c132d27e0b6e33cc718766616574923e524c5c150757f0c30c1a06c115dcd748a3cfb502a338206cfdbc4e5207eacba5c0d589c0968c144ef9779d1dd034245dcb22829f1813d6bb6bc9bf91c65076196bbaec51157176bdf3410c22a72882f2e037385c810669b1c926e3f2a1705216d633c8253e874bc008ec3fdb06d9072e4f92c0f77c8437a5e5058a11d6b24add44b479f5be3f63696c37c2a82aeccecaf5c8377ebea809c84d338c79e1fededf4b082a03ed57ae580d046aab1a67a8dca3ccc594d620683ece00f1d741e71f2ae3fdd05c7b2284d9f3f9ced702c18b40be537e1d8e4f0d9b98092e1bfc4da89569adc', 'category': 'Street name', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3172.0, \"x\": 1278.0}, \"hi\": {\"y\": 3220.0, \"x\": 1391.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5737: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060\n",
- "Processing image 5737: timestamp=2024-01-25 17:04:35.492871+00:00, observationId=o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The image shows two signs. The top sign is green and says \\\\\"Pennsylvania Av\\\\\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. \",\\n \"image_quality_notes\": \"The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.697642027442135, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=134, prompt_token_count=2557, total_token_count=2691) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.'}\n",
- "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:04:35.492871+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A75d615c0ef1838784cf5e1bd83f7efbf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0389b47622476ba107041d10dd7484ec836a86eec944d1d0c785201303d54b9111e5703487ef592cfbf04ce5ad54cc0299cedcc8b81f1bd633b78b171ca46b65585523d6f134281a1e22f4b1821c87c0ff4c9edd7d3b2141a41ec830e21b71be1f104da656896a15853e7ae93194f6003098b9e8a7654c17608257e708c21b6f41422a95e9e7f4b4a22925a84bad1d2369ad9834ffff946915bb6b6ed4d9da49b81f68a5bb8e4a17677d753b6baa768d2c6b9ca45a2c644c559680ff5ac4bfa82fab23698dd839823a0793d6de018c210582651adb510f9c6fe9fe5a28dad0a5825ea6b21591a52b8239adbe911416a08cd326b1fc858e5912b1bc6acfd7f0de', 'category': 'Street name', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2610.0, \"x\": 29.0}, \"hi\": {\"y\": 2807.0, \"x\": 755.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5738: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:f6db3c029f25bcb71c9a2d84de605c64:00110060\n",
- "Processing image 5738: timestamp=2024-01-25 17:42:22.401579+00:00, observationId=o1:f6db3c029f25bcb71c9a2d84de605c64:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The street signs indicate \\'Riggins St\\' and \\'Pennsylvania Av\\'. There is also a sign behind the street names and it looks like a Stop sign.\",\\n \"image_quality_notes\": \"The street signs are easy to read, the Stop sign behind them is stained and hard to read.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47068851552111035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.'}\n",
- "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:f6db3c029f25bcb71c9a2d84de605c64:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:42:22.401579+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af6db3c029f25bcb71c9a2d84de605c64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b3a71c89520a6a6733143553f423684e356d9d8fa74d02431dc562463709a5a23f720cc6ff8c19d7bf0434d42bb9d94985d5f68f6071b6267cf7f02c55846a083c16d4297df7b44ee4eb694b616c11cad99316823b9299ce05051c7ff12873f5be1eb203c167112676806f91ac7946c5953ea0bd285175a0364858950ec23dc270ba965e1744cdaaf0404923e8e4d1c13306792e09b86243d0927552188de13e2dfb086245aac7c62b1bb1a217dddf628fcc7f4939a51d676dce4a0646d0e7c41d076d01a71d521045a5579569bb74945528ce7f758a46ac5c2365e3c5121860a61bf7e51f7a33c55fa4bb37d7449e2d1b04e88285b092f5f54975ff7edf557b', 'category': 'Street name', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1719.0, \"x\": 2665.0}, \"hi\": {\"y\": 1913.0, \"x\": 3170.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5739: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:f850d6533bcc1535dc50a3b840712b27:00110060\n",
- "Processing image 5739: timestamp=2024-02-27 14:51:57.999777+00:00, observationId=o1:f850d6533bcc1535dc50a3b840712b27:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Riggins St\\' with a directional arrow and the number \\'300\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19297445324105275, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:f850d6533bcc1535dc50a3b840712b27:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-02-27T14:51:57.999777+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af850d6533bcc1535dc50a3b840712b27%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=526c897231ac58c6786e6b0624af8afd3d3e46a50604fb3dfd05ec1fad33e944e0943e1e4187daa47902fbab554ff503768073f9565c123d2e8cef2ac9dd3693958cd77ffd9ed63c4c1c26da4c172f5d9fa1236dfeeaf8f061b04c745b4fc4c30ef79bf5c4c6e35d3dc0ff2928876e9365cb87b018bc8b2b44863c140857b8e5eeabfc8dab53c3605698d1d8c7a9d440745bf085eb2bb46e57588fbcc6a21f0e558299f8adf2a482fc1d6bbf3e2fc3c170c6d9b899803f6494744c442ec0fe0bbfbf510a6ed446912d61321b34ecb85cd33d5a76eee4646307dfeebf6844f886be41e348bddfdaf43177d4b1902a05ad066167163e88d6e79d60fe0d0cae8a19', 'category': 'Street name', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1669.0, \"x\": 2952.0}, \"hi\": {\"y\": 1876.0, \"x\": 3456.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5740: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:23aab5de644801e9399d48341faa32de:00110060\n",
- "Processing image 5740: timestamp=2024-01-24 20:48:23.327473+00:00, observationId=o1:23aab5de644801e9399d48341faa32de:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows a red octagonal stop sign with white lettering. It also has an \\'ALL WAY\\' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3463167367979538, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:23aab5de644801e9399d48341faa32de:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-24T20:48:23.327473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23aab5de644801e9399d48341faa32de%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=577c2f02b00c44a5820f7b238272cc753825f9f30e02e1adebfb124c76f337af9f770cd90793922a347e595feea9ef5f290779bfa4c9245c15d4d6ccce06ebae6e53dda4529f64c5ebc76c5741274ab1ea5c8620396d2700ec1556050f87473dd1ac599c823daaccf392df835ddea37e8e1d6d2dbde9d2cfda0166b7ece1350ad96391169fbca352ec979f9401c737f3af9ea299ee5aaf0ad6c7107f4a34c21ecbb24a6011e87f75884fd5d124c4702517840a43b4b1eccd9c1129f31aad630e82da5ea227dd0000615245b31bc1fd25170e824bd682a11ad3f918d97c1ada349140608965265ad7aed77f08d79d2a983dcef74efde88bdd43fb8f995995b906', 'category': 'Stop', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1528.0, \"x\": 1215.0}, \"hi\": {\"y\": 1695.0, \"x\": 1784.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5741: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:78610fc7d7fc9f8dfccff8232217705e:00110060\n",
- "Processing image 5741: timestamp=2024-01-25 17:04:30.096969+00:00, observationId=o1:78610fc7d7fc9f8dfccff8232217705e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible, along with a sign reading \\\\\"ALL WAY\\\\\" below it.\",\\n \"image_quality_notes\": \"Image is clear\",\\n \"Street names\": \"Riggins St & Pennsylvania Av\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3749542690458752, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'Street names': 'Riggins St & Pennsylvania Av'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'Street names': 'Riggins St & Pennsylvania Av'}\n",
- "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:78610fc7d7fc9f8dfccff8232217705e:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:04:30.096969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A78610fc7d7fc9f8dfccff8232217705e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7cc0bf8437210c3e591360cb720e8894fa76c252138ed80f12a74398b0bf53ea327a7c32ce55f07a76a18d4b87a5ea984000100d4647010f51553281f680329948e95131bef60eb7857c13f856583c6dffa06905c0a192a614173f803cb4b5a91dd7fabf145c0b8223688570da815ddf827f6304099fc6dd73f5d7c9d418b53cd18bc978e45ebb9464558f1b641f999d04aa84c0e6075ab5eb85c263d339c80da084b663bc9b4a68a28c3485fdafd8a7559898cf4f828714d711d144f405e2085c9350f0be94064ede1ff94db376a9156be4834be9445a6961e9996e53439ed41eaed9ae0fb9120d9be518077ed71f90ffd71b1cd84ee7e8ac65c613b5ed96ec', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2542.0, \"x\": 2553.0}, \"hi\": {\"y\": 2736.0, \"x\": 3192.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5742: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:e8d865bafefa0ce7043673fe003497f6:00110060\n",
- "Processing image 5742: timestamp=2022-09-07 21:10:56.255551+00:00, observationId=o1:e8d865bafefa0ce7043673fe003497f6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.\",\\n \"image_quality_notes\": \"Image is a little blurry, but the sign is clearly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26830709245469836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:e8d865bafefa0ce7043673fe003497f6:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-09-07T21:10:56.255551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae8d865bafefa0ce7043673fe003497f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c42b2f4af7c5d30b379684e33da38361c15f60b28664ea757d02985481043e59ddcc0e1590e880faf4f171e6dba74eb2b48be7f38fb0e1be36c6b2ec5a084704ddc9449746c47344355af9cacef21740f3e8d3f317e8f9db8d60adb603368bd7de011b9cc11b6bdb088acb273c61e3dd88a42bc88968ce5c20ff9b4bb48bcc0594a42662d029107dd7da3afc2a65bd9816c2ba77e8ede701b39015243b8d545976c8fe9f9d7bc61ed87d9917687e60a60440a8e0b2451676812dcdadf5f87be4b55cf2d6a3dd3d88525f4a157fa111a8061f3ddd9f561338d815f5dab41447eb7ef5b1598d54b570a9ae73a80067edbb6ba2175389e529c3b6cf8f2e6bf5771', 'category': 'Street name', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3147.0, \"x\": 250.0}, \"hi\": {\"y\": 3211.0, \"x\": 300.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5743: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:171208a3592632fed39cb4f180050b48:00110060\n",
- "Processing image 5743: timestamp=2022-08-03 16:45:23.767584+00:00, observationId=o1:171208a3592632fed39cb4f180050b48:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.\",\\n \"image_quality_notes\": \"Image quality is good. The sign is mostly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5358296466130082, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=1525, total_token_count=1618) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.'}\n",
- "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:171208a3592632fed39cb4f180050b48:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.767584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A171208a3592632fed39cb4f180050b48%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092314Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=28ae94708882c10ba6833745fccfb1d91830f1a558d966c9d0cb8db3ee96a62a6a8f54957d9bb41ec095dc77d4b4842548c44e2db94afeabef8c6785d89365becdff57bff8d14c0db806c0986a6f6c12c707df9633f64837c36c88337da786ea4aecb1b79ad12c3ca48d9f1bc548d2b235ece8dcfe7f805c1acfae6983d100acc6c3efae8e9c6489fd0f6757ff598d45b13668965948dfa11e19aea349bd228a2e62b686268b26492bc60c94c0393e4907109301397b2940d3f6c8d69d3bcedabd5abfc83a9bb85820fa5b7931ec1da1b8237f19602942ec6b9c2df1f4ea7d7b39c2007480a5705e1af577e3cc33e5d66f39df6929c2785db323fc597e5b42fd', 'category': 'Street name', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3147.0, \"x\": 258.0}, \"hi\": {\"y\": 3213.0, \"x\": 308.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5744: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:36ab80384c2953c31541e66f347ef7ec:00110060\n",
- "Processing image 5744: timestamp=2022-08-03 16:45:23.467526+00:00, observationId=o1:36ab80384c2953c31541e66f347ef7ec:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.\",\\n \"image_quality_notes\": \"Image quality is fair, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31519864553428556, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1525, total_token_count=1608) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:36ab80384c2953c31541e66f347ef7ec:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.467526+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36ab80384c2953c31541e66f347ef7ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a176d9a4a348d35d0bfa7d03cf353a41016f79fa29335de80ddde9e544063a2aae71640e3e1395dc24ba074c7c95725684b426b3a906cf3c01422b558456e80ddaafd0cc0f8e00a7eadd83abc234dadeb61320e11fce331c16fb0ceb2bda6ee823b5d41e19eade0610717937f99173cadd617f2fee6a2fff12a244467e0085944a082639d06e59128719d6d4f14736866cd46de1cd22d87e21c6ca336738cf4902a2ca70307507437ade48497415529b06b4f7eebcf98c6ab9c3d54de4de169c76ca8338de78be565b0ebbb32c19c8cdf76102da3c481618dbc94f129b3124cb036f6eeaec1a0f8002070f67f3c764060bbaffb46c5a3c55a798f7f3491722db', 'category': 'Street name', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3170.0, \"x\": 3288.0}, \"hi\": {\"y\": 3227.0, \"x\": 3339.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5745: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:f87ca873239089559e58eee26ece7856:00110060\n",
- "Processing image 5745: timestamp=2022-08-03 16:45:23.767584+00:00, observationId=o1:f87ca873239089559e58eee26ece7856:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. \",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the overall structure of the guide signs is discernible. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40566486011851915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=110, prompt_token_count=1525, total_token_count=1635) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. '}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. '}\n",
- "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:f87ca873239089559e58eee26ece7856:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.767584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af87ca873239089559e58eee26ece7856%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091617Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a57f47f3153a88bac59f0d4d62d91ec94eef9f6e4615498a9609361a9f5cc7b82f85b388398ede4e3c8ef8b0e0f8b08f411651e91bd7e36f0c9874d0985496b498e4fef3885f3b2bc89faedd57f80d363796b1f73aab6a76450e45e714333e4ecb0df3d0d0398e51370314170a3a3311056937280ac6c5103f909b647dfc1ef49ddbd77a9715cc8dadbc3e6df3145022d8c2a6649d6740a6e106d102268bb71529f9798a47128ac1cab5f1c7d95c4959338ad078425a81b6a75341843e0c01a48dc59094ca9675e66bb1952572204a0a9e1a22a6078e212c8d28946e5ffa1f153c4ffc3f216ec37db5c0280f96eec041203e6bfe3419ff476ae4d8374346f638', 'category': 'Other', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 3298.0}, \"hi\": {\"y\": 3227.0, \"x\": 3351.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5746: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:a1f20899f64bb63331ef3650350eba60:00110060\n",
- "Processing image 5746: timestamp=2022-08-03 16:45:23.167627+00:00, observationId=o1:a1f20899f64bb63331ef3650350eba60:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a green street name sign with information about the cities and exits. The left sign says \\'Las Vegas, Salt Lake\\', \\'To Reno\\' and \\'Cheyenne\\' while the right sign shows \\'North Salt Lake\\', \\'To Reno\\' and \\'West\\'.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7016116111509262, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=124, prompt_token_count=1525, total_token_count=1649) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.'}\n",
- "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:a1f20899f64bb63331ef3650350eba60:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.167627+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa1f20899f64bb63331ef3650350eba60%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3708503ece817f0493b0211996a16aab4a1c78fb144dba75ec3b6a5605025557db091ec24ca032da88b7f62733cc7ae2394b1ea99b810d23a72706d8da421b83f0828b9448ff0b407edfb122af7e31f3e5f9c69bdaff1d35b427b33382ab5afed3a16d1159fc69c85bc6f6b32a40e20ac2d0f82d6e813c9293138a20a078e9d87ab0c74d4106f75d7823a7ec6be1c64b87e3b6d7531f6963eb849e2f86b0ebc1f4b6bdfd621694348b8a00f766f2b26d48919b778783fd7224cbe030a016fd1f0056234ee627c95e00711d1274ee2403ed38f52444e481c2c6efe94be13aa3f48a551f7e7a34c830beb1cb33edfa90a80dc5afe94c3086d74938d43a424ead44', 'category': 'Street name', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3149.0, \"x\": 184.0}, \"hi\": {\"y\": 3209.0, \"x\": 233.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5747: trackId=t1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f, observationId=o1:81cbe194e4db61805d99e92b6caa6570:00110060\n",
- "Processing image 5747: timestamp=2024-05-14 18:18:37.684034+00:00, observationId=o1:81cbe194e4db61805d99e92b6caa6570:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"NO PARKING ANY TIME\\\\\" with arrows pointing in opposite directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09310654988364568, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3073, total_token_count=3136) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f', 'observationId': 'o1:81cbe194e4db61805d99e92b6caa6570:00110060', 'geographic_point': 'POINT(-111.939120251463 40.7730903292637)', 'mapsURL': 'https://maps.google.com/?q=40.773090,-111.939120', 'captureTimestamp': '2024-05-14T18:18:37.684034+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81cbe194e4db61805d99e92b6caa6570%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0215a67585f1e05bd41f2c898e0e35df627a9d7c79b3988ca4d6c397f67b27590fd202cba01a29169ec1ade39cb551eebfadc1063aa10f17294514ab435d4c70b01bbc92fba2981c7c92bff818a17e91e658485d760a60f1f92c1cf75495b34cdcbf97bf16e5fcfd8b9237e4e9572ba116f769622a0609132617f36313c0a8a30ef7de7b4ebc938c55e79d56c7195242e0c109b74998290b3160ea3216cf41f74f91117eae67d9b2746660bf2b53f01b22107f7ee883fcdd7a09217ae8882a76c6dbb5f61636367926f941ff1c68a009c2b76961a13dd0bae6410d8bc779d8de4d92b448b56d3d14c72fbcf76d56b96f5400c52c7cdcafc290898d25effcbe02', 'category': 'No Parking', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1966.0, \"x\": 955.0}, \"hi\": {\"y\": 2295.0, \"x\": 1164.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5748: trackId=t1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f, observationId=o1:53de629134b582e9e6ba8b265f32fede:00110060\n",
- "Processing image 5748: timestamp=2024-06-12 17:00:23.192386+00:00, observationId=o1:53de629134b582e9e6ba8b265f32fede:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign with \\'NO PARKING ANY TIME\\' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2353527117998172, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3073, total_token_count=3151) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f', 'observationId': 'o1:53de629134b582e9e6ba8b265f32fede:00110060', 'geographic_point': 'POINT(-111.939120251463 40.7730903292637)', 'mapsURL': 'https://maps.google.com/?q=40.773090,-111.939120', 'captureTimestamp': '2024-06-12T17:00:23.192386+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A53de629134b582e9e6ba8b265f32fede%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ca1b2b36e23221e69456d8204f5fa9ba09d4b0893d2d941a3687b5d8b423966cf7b8e8d126557fb236050d1aa46de881b8ed71ab95a0487b8c1a1af27208dcbbe5cbac2f3a9e156cfbf87b1dc52d37a53a4b603fe3388fd34bfade9c38288dbe619e5f6c59a7f2405f17761649a14c450dcad8c3e913ed6f89c38d64a975daa9a7a3d63bc4c37d8e994493972f2bcf51b11cb1c1ceb563a341b0d38a4e2961513b559cc622225872ad67634629783a5d3e601ae6f2646ae3419281ae1b525f3bb788d91c2358b4cf9f6fffc974bf9c8cda2c3622811752d7caa1b8a897f2d6d7d5792ff44c3d9576c07ccc6200ff385a4cf8b0e02d7c5418c2906177d1a7c06', 'category': 'No Parking', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2015.0, \"x\": 1058.0}, \"hi\": {\"y\": 2303.0, \"x\": 1244.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5749: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:7c65a2988d2bde438ef0c5170670b3f1:00110060\n",
- "Processing image 5749: timestamp=2021-02-26 18:50:12.886184+00:00, observationId=o1:7c65a2988d2bde438ef0c5170670b3f1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates a speed limit of 10. There is a second sign below it that indicates \\\\\"CAUTION SPEED BUMPS\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2516637529645647, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:7c65a2988d2bde438ef0c5170670b3f1:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:12.886184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7c65a2988d2bde438ef0c5170670b3f1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e2302458c0e8969d0aabfdd1e6480b9daa33bdd8f98c466a2ba5a914ab7bbb8006f5d40d0342ccaaebc98ec8f4a2f0f3db1513bdaa5e9abaff34589acac40e87736b78682073926713d9bad504571bb527ab90816241eb4d91bb49155dd1a15c8f414a3e74853e9e7a7147e1283ae0695d6c8356ff365741252ddcd2310c4d2af781030832779ce8d694728dab476603c1bc45387564161940fb67fe39093f5ddf4200285392a016f6885bf8be4ab8ed21f6957ce5ebf4612c519e0fa5980906cc92f62d8f0dee2dd75f5a94566282eac68f9e6cdd29aeab7cee02770b07e8b5fc35a030c5c1f4db5ad31faf629e3f68de8610c5dac2d8a83423c2cc8b97d7a', 'category': 'Speed Limit', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3528.0, \"x\": 2692.0}, \"hi\": {\"y\": 3903.0, \"x\": 2876.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5750: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:d205e83fa617055fc7767bc018b16cdc:00110060\n",
- "Processing image 5750: timestamp=2024-01-18 15:08:53.215054+00:00, observationId=o1:d205e83fa617055fc7767bc018b16cdc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \\\\\"SPEED LIMIT\\\\\" and \\\\\"10\\\\\" in large black font. The bottom sign is yellow and says \\\\\"CAUTION SPEED BUMPS\\\\\" in black font.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2252886743828802, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3589, total_token_count=3690) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:d205e83fa617055fc7767bc018b16cdc:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2024-01-18T15:08:53.215054+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad205e83fa617055fc7767bc018b16cdc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0550e2659365b35c177b283c962f14904d45bd5ce01dbbb9509b457f5a8faac9fd20264fc48a6aa78139037956abde83a8e68cfcb4bae3317c33731635364983596347520c1c1814b8654e914c3c60c2c07bae76e6eefa4febba03eabb947e8080d11ca62e4e51ba0c5cb30d469ec36680c5c1877694c0995d903f4a81a055d75c260ee3262221d97f0209920b3cc8f52296f7f5a3086d86728088cd981ef3245884c617c127baf97c7979a5010dc2d42c01cde45fcef126995bed5c524087884776e9319f9aa639de62d3ec05ed84c20be2b87580dd71d352044df3e867a2a35d84cf5a31905e4feea62c16d86d41207f8e4504830f85f362ebd1873fcb0312', 'category': 'Speed Limit', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 2724.0}, \"hi\": {\"y\": 3771.0, \"x\": 2886.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5751: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:a22dae3ecd4395225bb19b6945c37b1b:00110060\n",
- "Processing image 5751: timestamp=2021-02-26 18:50:11.954099+00:00, observationId=o1:a22dae3ecd4395225bb19b6945c37b1b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying \\'SPEED LIMIT\\' above the number \\'10\\'. The second sign warns of \\'CAUTION SPEED BUMPS\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2992443576935799, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=2557, total_token_count=2650) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:a22dae3ecd4395225bb19b6945c37b1b:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:11.954099+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa22dae3ecd4395225bb19b6945c37b1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=373a3bfbc52bc5b6841dabe2a5f0ca5ab3c5a08bb4bf029276bc6153b692488da496cfb2ee6701635ba03c2dbd55af8febf41bfc68e7a500cc138cfb1298c40868b935744c5c2bca23d2bfe7712a7828c94039d97eb8dc0229067b7d2ec657537191c6c02d9cddcf05cf9239073a647999039abe3d4c9bf926589d5628502f24dbc4c1c2d3eeb8c2b8c08431c84fecc40ff2a3aa6f5f2fb85422e82b2a11866fd70de0d26fab9c41e697a1104c250b2b141f0c4531c2828b90d276f67a749c13f757300103eed88f5141d1911680a19c4ea37bc58223c9f1a78fead7bbf7ed968cde3f686673eb41feb2046dafc6ee2ed4cc254edabc61e74416b27e595079ac', 'category': 'Speed Limit', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3395.0, \"x\": 1421.0}, \"hi\": {\"y\": 3580.0, \"x\": 1538.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5752: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:c1334138ae5b952f56514b886469f2da:00110060\n",
- "Processing image 5752: timestamp=2021-02-26 18:50:11.226157+00:00, observationId=o1:c1334138ae5b952f56514b886469f2da:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about \\'Caution Speed Bumps\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36566169261932374, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2041, total_token_count=2121) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:c1334138ae5b952f56514b886469f2da:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:11.226157+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac1334138ae5b952f56514b886469f2da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=49c372180d7e0071ffb3549bad88fe76c1def58d34cd914a5f9c2a45c2dc797257fb9039f51ab1264b522a2c762cea8e6b41ecae623f17f3aabfe025392994643b5209d42dd4cc8330dd63ed3b533b338728cffa27efd782cd37eb739153acda5815d0bd99dab367854b103b7c542cf67e1211ca0290b2587ff59bc0a229d0cda959d788717124016aca8bf60f11da95a5db7dce17c5cf89bffc8db6e5567c7035778c56f5e14b78755dcfa6d4bb44e0e21e0584c196ae9971a4382b6f35859237032495353a1ef05d26f9d17e346f898afcb24ccbb9282aca28760a1d10abd214fcf713f1f15dd1dc3f5e26b71921ed966d820d2e8cbd40cee1ecd4ab649277', 'category': 'Speed Limit', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3322.0, \"x\": 986.0}, \"hi\": {\"y\": 3447.0, \"x\": 1068.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5753: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:2b012d3274ea724b821dba74ecc4047a:00110060\n",
- "Processing image 5753: timestamp=2024-01-18 15:08:54.947048+00:00, observationId=o1:2b012d3274ea724b821dba74ecc4047a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says \\'caution speed bumps\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20581529047582056, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2557, total_token_count=2634) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:2b012d3274ea724b821dba74ecc4047a:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2024-01-18T15:08:54.947048+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b012d3274ea724b821dba74ecc4047a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=33429f8ed8b790298a790364ded0fcaf5cdd5e8247a1faed52dab5bc7653ffff694662a7fe068ec89961d0add9491eeea87e617e651f27e42ad879835d12f805843ded4257197b23e67f13cd6b61812bc3df5baf9f0b9b988205c62ef284236cafdbcd0f021b02973e80301c39cf273435d93820cafe15f5120753fbe1a990d92cc8591d9c6b2786cccd9777faa25d13f324f0f467c73f7f057e8d14eb64f674abbd31abf0608409c7158c08587f75d7f113097592d01d62b6a8c2c4ac577aea2d1e358d0ef65dba52fd958c0dddb01aee079e13a9fcb12ce106df61dd33d721c84abad2fff7739736dfca3988af9c74252874c6f6d3499ff5d4af0b6bdc61e6', 'category': 'Speed Limit', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3326.0, \"x\": 1386.0}, \"hi\": {\"y\": 3479.0, \"x\": 1487.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5754: trackId=t1:033d4561e7e3b48590d39cd221094006:ffff005f, observationId=o1:3b04441639dd1d45d3b76e90b228b411:00110060\n",
- "Processing image 5754: timestamp=2022-05-16 20:37:36.330981+00:00, observationId=o1:3b04441639dd1d45d3b76e90b228b411:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NO PARKING ANY TIME\\' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19517605304718016, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d4561e7e3b48590d39cd221094006:ffff005f', 'observationId': 'o1:3b04441639dd1d45d3b76e90b228b411:00110060', 'geographic_point': 'POINT(-111.886866301015 40.7760260088475)', 'mapsURL': 'https://maps.google.com/?q=40.776026,-111.886866', 'captureTimestamp': '2022-05-16T20:37:36.330981+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b04441639dd1d45d3b76e90b228b411%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6b05e15493bd06e68cacd9f87ec1c796637fa4dd1707e268650e2d4d6faa91db9602930204a926db6df9e84af03c591dcacdcf2dd507aa255c5c413046bbc098321dd6961acce77c4e3f47184b4a44b3e99be103d26e7d1825562d428486e39b97ef88d1d6e817dff21d79839788806a014facddd58146f59095d08f6b1f839023df0f8276344fa534ab6ee582317c5e6f417c46b41cf28a8879a0190429ac6be377dd6f2c2ad768f35f38cbfbb6e80f0b500170faa521bfa696426b702eba65a8e3ddab8932581fe1a8147d070deec5815ae418b371541785dc72cee59846b50a04fba450edb501831067ad62f4acb15a091d9d45c8d3b59d9933e940964526', 'category': 'No Parking', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2102.0, \"x\": 2178.0}, \"hi\": {\"y\": 2186.0, \"x\": 2224.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5755: trackId=t1:033d4561e7e3b48590d39cd221094006:ffff005f, observationId=o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060\n",
- "Processing image 5755: timestamp=2021-05-05 15:28:28.247561+00:00, observationId=o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is white with red text saying \\'NO PARKING\\' and has an arrow pointing in a direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32086097492891197, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:033d4561e7e3b48590d39cd221094006:ffff005f', 'observationId': 'o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060', 'geographic_point': 'POINT(-111.886866301015 40.7760260088475)', 'mapsURL': 'https://maps.google.com/?q=40.776026,-111.886866', 'captureTimestamp': '2021-05-05T15:28:28.247561+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaf0acb3f54b3d54de5f2aaf54acadcbe%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0059eac35e59b0d7d5d257fdf0403728dd60eb9ce6d287953b37cd15c29e1c56a4331f5c448d8405f2a69cadef36f626ba9303671423e0770b8f84a21c51e3a3271b39438ffde7aa061cb204074afa85336c5a38c52b68db18b131e8f4b432e640e6d1b902fb9a527dd10ba90c9cdf4129efc2cc7789283cd25673202c020256c4057603e64e231ad924317b3b924993ba64f9c4d2f98751ec117f2ae8484d377910a7773469a96e198179c4edf94d930197cbb9a4df730f4a3fadd5d4f942077e0fa02f53aefb33bce192fb5da9f8fd48c6c71f176424e509c42191f706d02f21d2fb51b3969c16feb3dd0ad36ea0b0f0f52afa9ccfc90a0c6cb9e30c475a52', 'category': 'No Parking', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2153.0, \"x\": 3063.0}, \"hi\": {\"y\": 2264.0, \"x\": 3106.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5756: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060\n",
- "Processing image 5756: timestamp=2022-09-29 17:31:30.148891+00:00, observationId=o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white \\'No Parking Any Time\\' sign is visible with arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11190115515865497, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:31:30.148891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d16a7c4815908f3ead4f6d4e87b434a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a8e99dc807943b2e6753dd3212090f68136818de26a5b2a432913f1f0c922eb29017453998456e13adb7c4ca467ff68936c2df6fd594363237ba5fd7d0b8477ce43735f15131d76e2f51c255b718b439c3c8602dd55fc576504bc5fd8a92e74d10abf12adbfed1c40646e6c91635adf51396d3383f5352693ba19347cfc38b14b945f22c9bd2d0f041aae3f17a992e4a6bf5514436a7140c26ed48fcd9e9c7593069b06ff7418efa64c313d2c51bfd5bb98885bbdb506ba5f98c0c883f939755a115000a6cdaeec0d39b18dc0fd617313afe99bced2229fff646e587645b219abc8ce54437fae106dcc4c8f7e35424c8c2a025765574eb7ecfdc0f2aab489f0', 'category': 'No Parking', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1738.0, \"x\": 1087.0}, \"hi\": {\"y\": 2056.0, \"x\": 1250.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5757: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:fee6fa15976ecfbe067f77313699c669:00110060\n",
- "Processing image 5757: timestamp=2022-09-29 17:31:29.800881+00:00, observationId=o1:fee6fa15976ecfbe067f77313699c669:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO PARKING ANY TIME\\\\\" and has a double-headed arrow indicating the area where parking is prohibited\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19471116133139166, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:fee6fa15976ecfbe067f77313699c669:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:31:29.800881+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afee6fa15976ecfbe067f77313699c669%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8f2647de1fc48a2d504bcae126628925bfcc1b0100a93138387109bf11e457a652e4deff71b727d4183ce418424c27b76d01cd3e9cd404aeaa1ac03f7a0786cd44210150f22013a1d7b0ff6d86f41e9742494e479d0c93410ffb19c056d1c9203a29b5cdd60abc5f81421f9aa96ea2296f6d2991c13feb07284382168b99a42bd9784ee727fb5a5ffac9e69f3110f1c03b5e98f3a87919a7af203c9aece2ba7058ac5763de99919add982672b823366755efd2a81a052f6b22c030a9d3e8d0c0565a5f1ba55b21988943da0dea8d4b45389af36d2f2baed9ef081e7cd0ba313cda765da111d7285c85b0db6ec279c0cbd8b47107dddfe4e59216018ff62cdb7', 'category': 'No Parking', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2927.0, \"x\": 1984.0}, \"hi\": {\"y\": 3113.0, \"x\": 2108.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5758: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:c3a3b9b325e267dbd6c0382800ff707f:00110060\n",
- "Processing image 5758: timestamp=2022-09-29 17:32:20.075253+00:00, observationId=o1:c3a3b9b325e267dbd6c0382800ff707f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO PARKING ANY TIME\\\\\" with arrows pointing left and right, indicating that parking is prohibited in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14969786008199057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:c3a3b9b325e267dbd6c0382800ff707f:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.075253+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3a3b9b325e267dbd6c0382800ff707f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61c6221500e84197b7d2527ead6d7080c23f756545cfe194b6f867904448d5056dd23d480238fec608fc61413a5f88c251edd1f66eedcf0add9b38a7123700ef9da5d8edcd017f0d277f057112a93248d822e46464d63ed736adc57dbcc55321db2b435ea221914262faa2f32e6dec90c07bf34e0fa4ce1d33dceaf8a7d53c6da49b9537694a448a1562a83c8a17ed95597d45118d2df6757fa4ac52fc79f42aefd55902b02ad85494c45322a5637ad181c3b88939b33fd3ec41145b41ad870535ba44eadb04acdcf2e64d52d06277fe2c15566c588137e9ff7712dc10b9908ad41e12e5bbb8b6abe754cd013dbc6373d1ae6423e8d6aaec0f0ae1557e546ab7', 'category': 'No Parking', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3008.0, \"x\": 1695.0}, \"hi\": {\"y\": 3155.0, \"x\": 1794.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5759: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:f2d3fd7d8888d37888359632cd8e1435:00110060\n",
- "Processing image 5759: timestamp=2022-09-29 17:32:20.799912+00:00, observationId=o1:f2d3fd7d8888d37888359632cd8e1435:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with red border that says \\'NO PARKING ANY TIME\\' with a red arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20080926077706474, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:f2d3fd7d8888d37888359632cd8e1435:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.799912+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af2d3fd7d8888d37888359632cd8e1435%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08a0f145f8c4c479901e4af6244bfbc2b12cb456bd00cc7ba44ab5afdcce904d19ec1af437b15e9b170f982e378a9c390e5ad411128cebee4dd79caead1aa2838569276e1f4794c4fa3235671b619a2e75e16c826def24b98b1b9ad94d041de1e589d8c77b6ef42378266c02a8151be10b0bd2449f37532fa7651c9f00b8b77cab28199cfffc1d41899d0b2108c68421e1561c1755d4e2911ea6428a43939c76a6884f9c096648e8c192f0e62a695c55a4330143e8e614495a3700a260cafa26531fc4fae4e1d6c07148f2f29d6746ed6625a0e5349ad136db9ac224bcb25acce38063b3411e7c978d7cb29366dfe584ef7ca24e6dc3ea7afe9473a2ea68aa4f', 'category': 'No Parking', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2880.0, \"x\": 3288.0}, \"hi\": {\"y\": 3039.0, \"x\": 3458.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5760: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:cd3158841a1434ab77b9990a43d9e00f:00110060\n",
- "Processing image 5760: timestamp=2022-09-29 17:32:20.799912+00:00, observationId=o1:cd3158841a1434ab77b9990a43d9e00f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NO PARKING ANY TIME\\' with arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14028073870946492, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:cd3158841a1434ab77b9990a43d9e00f:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.799912+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd3158841a1434ab77b9990a43d9e00f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7f82bfd8d5edd5b64546dc01200dc529637f65d418782bd1be3047a36a1ab24d7f487588e329bba0222bcca10e6c92966ccf98f8b33a857d21549345f84516f14fe04b3bf489be1076514ccbdfb1189b05924d48b5d07049e1590e9e80337800357fa4b2507937136d7eda772535b7c9fe8cc2f39cfa67127224c7abaa569a93fa0d3fe7a69d01608d591a74c6eeaf47f9742f56548e094e850c20c24e07bf00363ab766ce727470f1a7951fe13c11ca9e0a0291ef5b1ba3b1f14fe6a8de45e5d65f73d3c8f7202d56a8d0df1fdac7f6919dee8efe3d748a19273bbbbb817ec267d4dbdaa5abdac2a7f7d4f1071b8c08e4c22ed733405bcb0b5f877bf36fb463', 'category': 'No Parking', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1838.0, \"x\": 316.0}, \"hi\": {\"y\": 2123.0, \"x\": 484.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5761: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:0fb250694325016e925caefee8b9d8bb:00110060\n",
- "Processing image 5761: timestamp=2024-06-13 16:25:11.298810+00:00, observationId=o1:0fb250694325016e925caefee8b9d8bb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18497306872636843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2041, total_token_count=2119) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:0fb250694325016e925caefee8b9d8bb:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2024-06-13T16:25:11.298810+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0fb250694325016e925caefee8b9d8bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=162d5119cbc8ed91fb0d21b2681c19859719bdeea2440933dd9383c561fb2cc19b5789236b63cdb3cf764302c98dbfefd6c5ac2c318e02c088feb1413b79805827f2bbec73d1e8bb5fda95e0d59da7bfea467668123b90502554087262c768dc151c18314308c7b36f0fb34e8db8599ca5ab837936521f18099c228dd6ea4057ed212785af2caed346e07d30d9f78a6aabbd207c98f684010b7cb2493761933a9fdf5630d6e60bbf12fcf0059a6711834220d3700a1d61fce555ffe215aa64e2047cfa54201fd8de3fe818d617f0cc03442fde52417a2e38877f3e603f830277968a0841f0b01aca3a377a5d8aa0cfbcb89707c52461a06969962ee8b813005f', 'category': 'Pedestrian Crossing', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2797.0, \"x\": 2385.0}, \"hi\": {\"y\": 3077.0, \"x\": 2622.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5762: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:f3d651a4fc06561b3b26f67607eab0e1:00110060\n",
- "Processing image 5762: timestamp=2024-06-13 16:25:11.606479+00:00, observationId=o1:f3d651a4fc06561b3b26f67607eab0e1:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2644783020019531, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:f3d651a4fc06561b3b26f67607eab0e1:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2024-06-13T16:25:11.606479+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af3d651a4fc06561b3b26f67607eab0e1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=45ef55689b3c8fb5ba3078611f2779f17637f32c13be7a50146e1066652525d8797f9ffd203e60ddfa5b33bd2e45979f000730ec131b37978db9a8f6b08fdb7d143c3521cf264591c9dff5ccbf28c1e0dc81f85007a79a9098c0b29cbd4edeaf9def024c7fd08b4d2952f40cae546b4659bbd034862485fde5cbaeba8c29fff418842bd1ee38788c78acaae2bebb6b0a31300c47802dab3c03a55b66e9286e5fd9d749a5ac367033e38ab548545ab4eee2f55e2aea6b23ceb62aa751c20a457fb6eeb907c6593563f6c6cb2078a767b183910f833ee2d8bb12429c16fe7724b141e4d3c3def17efe5edc2e48fffcda1fbc231d1fa08657486b1a3b6219437a3f', 'category': 'Other', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1695.0, \"x\": 618.0}, \"hi\": {\"y\": 2082.0, \"x\": 827.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5763: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:827270753b65a03317593df29dbcbacb:00110060\n",
- "Processing image 5763: timestamp=2022-06-22 21:39:36.956160+00:00, observationId=o1:827270753b65a03317593df29dbcbacb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10613278419740739, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:827270753b65a03317593df29dbcbacb:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2022-06-22T21:39:36.956160+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A827270753b65a03317593df29dbcbacb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0aee5efbe14dabfc5948cc0ffc14d7090a9694b0a9aebbb2811f41c04fc7f338e812d6c9d8d9478a4c1806636038099c7fc52b05a70b2c55ff1562cfcbdb209098579fa5d3bb175044776428475b9c674ef6514a367c68612a65424b22e29885d39c5242c947914de2b77fdbdf7951aa459edb0375130449b915170c69e3150f49934935a8b23ad77cf4024f017b85fce9b736dddd92f7ff4e4cfee475eb57d6f148d87059f08212f62a9c4399695d0929a4ab9120a4692c61991938a1535825d3e1b7a904ecb9a01cda56bc22e7bf36cee10391b17c4f0b6c26317aabcca047a6b5cf89769cf148fa4e5ffca3afd33e7c70655d9f76a4fadcab703a605eb0c8', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1683.0, \"x\": 961.0}, \"hi\": {\"y\": 2059.0, \"x\": 1144.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5764: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:094872e96b54939c862e66459759b8b7:00110060\n",
- "Processing image 5764: timestamp=2022-06-22 21:39:36.576098+00:00, observationId=o1:094872e96b54939c862e66459759b8b7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2751568906447467, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3073, total_token_count=3141) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:094872e96b54939c862e66459759b8b7:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2022-06-22T21:39:36.576098+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A094872e96b54939c862e66459759b8b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d523c08338e5f536f73bef5337a3048b3d2559934517f7dcfb0b410b1161987bfe255733cb5502c6e46d01bbf35eeb227af542ccc9a94ba7fccb4e638be7e51dd7c30be32ed941bc0237e8b7e1087434535e30afd76c122b3288dde7f07bbde1e0a841da12aee50438766950cfb671f1f271df05309132b45ccc80b8b2bf98071a0da4e3a20916c9fb7080cfe0a32c5dacd9b0ba4ef83ff2ef034c7b289db38a3cc28ba299d3090411858f7ac10a2b6f2ba75b957ac10ca8eb415dbb4e2fe207f489929b9c87bec197eacbf6d2ac9663e3faa7a31d7ef4f15ededdb257ef45854f26d7cd7c2cdabc4f6afcfe8eb860dc8428a29d74f19a69f130999f81399be', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2787.0, \"x\": 2565.0}, \"hi\": {\"y\": 3081.0, \"x\": 2808.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5765: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:f8660dd1256fbd938f71592ec869bb0a:00110060\n",
- "Processing image 5765: timestamp=2024-02-27 15:46:57.674575+00:00, observationId=o1:f8660dd1256fbd938f71592ec869bb0a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2733655036250247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3073, total_token_count=3152) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:f8660dd1256fbd938f71592ec869bb0a:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-02-27T15:46:57.674575+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af8660dd1256fbd938f71592ec869bb0a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4de24da69f8cc279da40dbaf38a6ef017a77d82e463ab94cc21f26299100a8bf8e30e6814bd6a1e0fd3afbe6a6e2670cdd082daa48ba888355ae1cf7fdbeeeca9af06a349d1789e7946de68844090d767eb61bbfa8818d78252bcd060fd8043f485ad52c3d955cb08c0f9f916aa6ca1179321c38fc1d235f5998a920ad5d1ec7f7d884054dd3a50db1e0492e919cfd4eb69ed5a42ff855f4d3aab1e848b74dbe1acd8e64be4e4e37122449d0cef4f9a96441c1f0b91ecc3ee2fee9ddbb1bd08d0ce835d15869b87fc6a86b0c3fcac9adf8b4bbf25b742cdb72150aa5fc4bea58e257288e94bfb928cfc66f99e086bcb9a6637732506ec32ec4656942fb037702', 'category': 'Turn', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1943.0, \"x\": 2837.0}, \"hi\": {\"y\": 2275.0, \"x\": 2934.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5766: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:4d49dbe80f83135f5e564a1db110d973:00110060\n",
- "Processing image 5766: timestamp=2024-01-22 15:02:08.869779+00:00, observationId=o1:4d49dbe80f83135f5e564a1db110d973:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1990754915320355, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:4d49dbe80f83135f5e564a1db110d973:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:08.869779+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d49dbe80f83135f5e564a1db110d973%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8b936bd9ec02172a005d04f3f1da35ff0a82288e41f344afc4eebd0b9e78aaab56e42ec74dd9356f93827ac164aa64ef3d4df432ee8a0936547437ced7047f7a77723e665511b84c3aba965179cdfa82ef1abdfbd61f6e20e08c4cd0afcb9cca8a3860b6689ef2a3bdc77ea547eae46afc5dc4392d09bc402550a6ed0bb76c957456b1c0f4dbfb7f5f7f19518a60978129417af81611001c50f55912810e00aec7c0a8510267a8904a590a41a24f4fc10c96b7da03730f190d77247ba13626d6e6dfc7480cbdc5a1067e983dd2e6743eafc8d30aa6392887ae85fbe7d2d8b0d0fab5e5378e06a63174a2e8a730adcba4a62519ea5e12004ce3ae3490dd443e14', 'category': 'Turn', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3011.0, \"x\": 2403.0}, \"hi\": {\"y\": 3236.0, \"x\": 2551.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5767: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:2072b9e19133a60e77b53eac2bded58d:00110060\n",
- "Processing image 5767: timestamp=2024-01-22 15:02:09.573768+00:00, observationId=o1:2072b9e19133a60e77b53eac2bded58d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is orange with a black arrow pointing to the right, indicating a turn ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08473005145788193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:2072b9e19133a60e77b53eac2bded58d:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:09.573768+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2072b9e19133a60e77b53eac2bded58d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=958fe6f9c7d2a7a2274a2c5c98c2218aa20867036b97d8b27cf5ad72c3cd0f8e18ccafebc5a6392ca9a657688151d25540676bcacbaf251b498208d4a19b93ebece764f1d2a982cecc090b252db84922c6a930a0ef0178bf95aeba7323485ce33aa13174b2865376482da83af8cda3cb7d2dfdc919cf5c92e01931b3435adc735994dd67c413c9c822f616a5d5a442e360e4e569c36ade089d582ae2bf50ea06dd922595d64c0969f11bf17726401d89c46bc918a6223b1248e059ab71a19184d9fe77511a4138452494c1a17993a0df7021e6f6f25b1f46a99e579b1dc7cd18694c89d874cbc217df008de64e7660c29537bf1a64a3e696bcb8a1579b3c5a27', 'category': 'Turn', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2813.0, \"x\": 735.0}, \"hi\": {\"y\": 3231.0, \"x\": 941.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5768: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:6f4ae218f0750513918980226c62f737:00110060\n",
- "Processing image 5768: timestamp=2024-01-22 15:02:09.221658+00:00, observationId=o1:6f4ae218f0750513918980226c62f737:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14377388272966657, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:6f4ae218f0750513918980226c62f737:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:09.221658+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f4ae218f0750513918980226c62f737%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=22f1c1e72fac5ee1a8425d619ab7c5e22566e944d175292027a94f48cf383a10b361379cec10630377c0f2cd2b4c73289548bb3c30b6810627326671af768be63ca5696de51a77b932cf2feb41218b65cc96d6c2e3fc3d5a8c9098c8c4827fa3228783c0cbb5e2329739d34d0e38ec099e74d6ebe48b1e4dd97ee3ef0956ca5223f35ab029d7ea6283d77f1bd8d2116c72711ec4399452a2a1661e1cce46ee9d75ecd42493494e044f9936764b2ae684831064c173bb6768a8094c0c4b11fe3c24fccd856f4bc0e6313ccc40a5a93c62d35349e90ccac4be4607107b26176452f90d815c06545bbf65d4f5a33252afa83c7e4e019c64633ceb6915323b7bc5fc', 'category': 'Turn', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2957.0, \"x\": 1791.0}, \"hi\": {\"y\": 3251.0, \"x\": 1973.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5769: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060\n",
- "Processing image 5769: timestamp=2024-02-27 15:46:57.338418+00:00, observationId=o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18991689539667386, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-02-27T15:46:57.338418+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb55a6dda777840dfd4c8f5d58b0c7e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bf88800e2932a8abe79c912a0c14d1f7d06158d04e31656a76b73ccddd5527a9aa85d48c2a4ef23f433b12c64b8839b9098e68d5fdb2066c172df2a5bd897aa327bf30b022e4883ba29f1ae3b98df87fb2218115f6dc2926cb22ecd5cbc6fed837de0f19a39887ff258d7b5d85625e2a06158311ed01b1ba58cb63a1cffe77316b076ff1f5831341daa634825e7dd5659389051ecf0d116947a3c04cd028c9cf2883a41738991b4c309c1eaf44135d54c504b68cd0f108a72b0b80d376e17b841a668b988860524e7f7bc1323eff31de0c8218795273a89d6df5b74199ce64c82b174f9d0c7d95d23b578c6741e9236778e6d67842f1a9f4f0674e8684dc923', 'category': 'Turn', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2976.0, \"x\": 973.0}, \"hi\": {\"y\": 3233.0, \"x\": 1101.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5770: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:d214895306e2eb710d4210795223d1d3:00110060\n",
- "Processing image 5770: timestamp=2024-01-25 15:08:33.232783+00:00, observationId=o1:d214895306e2eb710d4210795223d1d3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs reading \\'Conrad St\\' and \\'Shakespeare Dr\\'. Both appear to be in good condition, with clear lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17795485178629558, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=3589, total_token_count=3664) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:d214895306e2eb710d4210795223d1d3:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:33.232783+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad214895306e2eb710d4210795223d1d3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=60c4a83dbfe598cdfc8d0ee55c7c49ad3b635c4b58e32fabf3b1f78603718b0a2fcf533554edc60e945ba6ac5e6ef660022c2b3b968fb69a5b640a1799d26c84e176ec84e36772430f26b8a7b53fdf0fb4ce7a7c951d98623c9fabe894262f34855d8b350094107f3716026c1844853a9281d7e41781a3be27f0c452b0ebc0b98f7ea89725c133de3e8e7e366a3e20c4355f447ccdf8df08bb08f40860b324d1c00a52b87ee5668a2bc5ea61b57e3251fb03d16dd2350fac0cff32da794021c9f47ee904ac3f3c155136f1ec63fce59dcc101b33f7afb7c866f64875dd78fd0ccb0dd35049257a504ab1a768ab5968d04d56bbdfac1f4fe3c681c34bdc40b9a6', 'category': 'Street name', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3110.0, \"x\": 691.0}, \"hi\": {\"y\": 3235.0, \"x\": 1250.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5771: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:c76dfab36cafe9504444586a5b2d5498:00110060\n",
- "Processing image 5771: timestamp=2024-01-25 15:08:20.225262+00:00, observationId=o1:c76dfab36cafe9504444586a5b2d5498:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'Shakespeare Dr\\' and \\'Conrad St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13033916836693174, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:c76dfab36cafe9504444586a5b2d5498:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:20.225262+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac76dfab36cafe9504444586a5b2d5498%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7eb7585d3334a80bb3320a76653804180721b952e663c61647048476729cb0395a76c8d306203660de3aefcff05202695952d2cbded2585ec7bfce1f1777f546538e35c514011582af8532275e5fbae00c74f96750543bf4a932bb76ec6796a5389cd5d387db6fdda9a22740a54ac23e3e0b5bf02eda0844ac8f1c90bf3e5df1dc1befeccfdbd50b5935b547b40f46522a51eb929f6f639076f2e9113de51d100d0ca772d094cc816d0af25d411dcef29bee2e44a08e5284bd7e2e8c9baf726492aa4b5a30be883af0182ef9d8c4bd59335c55bc37609454aa1dc631a2deb33284256e1ae66d56dc68f2cacb038c2c6b3c9b0c74a0825742d69e7cf58120d91e', 'category': 'Street name', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2220.0, \"x\": 1711.0}, \"hi\": {\"y\": 2312.0, \"x\": 2172.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5772: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:f55d6cef70e3e7d16873193a8f168b0b:00110060\n",
- "Processing image 5772: timestamp=2024-01-25 15:08:26.841255+00:00, observationId=o1:f55d6cef70e3e7d16873193a8f168b0b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names \\'Conrad St\\' and \\'Shakespeare Dr\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09691818176753937, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:f55d6cef70e3e7d16873193a8f168b0b:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:26.841255+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af55d6cef70e3e7d16873193a8f168b0b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a34f019a5035878d88e91818ad395b01b8c8ae614ac2a4671e1bccedde0e371fb60c98dddfe82fe84500eac0adcb325b9fdebc53fa50acc826f814936529d797f94fb9e0c64ee69e9af6e774908db294c0e0955f446ec37bd0711c25137c64c5c37bbd4daead5bda90cf13ba5c99cfc254201a77e55b817185dfb8c9796dcb989576722969c945fad8c1e2d74c5bc47c39111edcdc09b51d217b0e83822e1ce0f28b404a882d1d084cded3368ca57e183537da9bd92c8b0a63c62a633bc517204a4ac9c978a738b601bcb66157f6113af8c3a5b7ebcbe538e3197c53dc52dec3bc846b44d4e3939a7092286c29151c8f20d6f26e9ee36f84fe32d188ba5359e4', 'category': 'Street name', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2212.0, \"x\": 2538.0}, \"hi\": {\"y\": 2310.0, \"x\": 2978.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5773: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060\n",
- "Processing image 5773: timestamp=2024-01-25 15:08:16.733229+00:00, observationId=o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Shakespeare Dr\\' and \\'Conrad St\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10483388746938398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:16.733229+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A579f9b57d3560d931f0aa2c9f7f141e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=260737b8d7b1be8826c582d81290a0f634c4d82cefa3b8d39e6fdd7a250066f1ad8f1bdd2c824303dcbdabd22e84b5fb8ed61b401a6de4021ea92088a590b34ab0ecda7584227f9d10c6bfa8da27930baf2c2da1da97b279735510835521fb7374546dbfb725206452d5e59cffaa0d3bf6bf2fd3bc0beb529d3e07d2e4d82abb258cba2ee6e172dffbe03925b9d848e11744e97d0ce1b36ff1fdda91247f7949124446afd5e15dd05e8e885503a49490b5e858a8155473700d43e9dbce44c2336810452b5419be8ceafb1bb44f2c32a9e4d7239633eccf993a8dd051829f702948f0421cdc791e747a7816dd0b210bce6d19c6914166b6e76071c8857558d7bf', 'category': 'Street name', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 1277.0}, \"hi\": {\"y\": 3211.0, \"x\": 1657.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5774: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:28a92b5036858e4223f02d51ab4db15c:00110060\n",
- "Processing image 5774: timestamp=2024-01-25 15:08:39.092727+00:00, observationId=o1:28a92b5036858e4223f02d51ab4db15c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates street names Conrad and Shakespeare Dr. It is green and white.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2632504115028987, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:28a92b5036858e4223f02d51ab4db15c:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:39.092727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28a92b5036858e4223f02d51ab4db15c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092827Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37ec236fd7ce48ca81f590a94ec88d46d4ca4e4e8c461e153d9e9c4fec7f3f8e39d714f80adc7bcb9f473724bda9d6a41dfb1e7f5551182435bc90d0c7b8a04d605918074caf08c51b4eb5c2890548d4296a52806e6fbd4faa1207bd5cc24cf3c5843a80b40a4a0e35ecced6a47e147cf9115b494cd7a662503e821778f84451806e304978f8f0cc4110219a4d80df6cb32fe577ff13e23e195e124e71085e22deafe37d17a1259c98e539e70f39682a4299badaa04a997bc1bf3ae1f5bd457edce4c14591ee88ad9c3a19710ae325cc781156a8c29aa74e8e58b9875ac80825bf9d8a3cc2b943675ad75c6130d857b47b47cead1f8f8445549ecace16d44181', 'category': 'Street name', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 3271.0}, \"hi\": {\"y\": 3120.0, \"x\": 3558.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5775: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:3f3d77d167ea60244b6046dadbd30f4d:00110060\n",
- "Processing image 5775: timestamp=2024-01-08 19:18:26.341379+00:00, observationId=o1:3f3d77d167ea60244b6046dadbd30f4d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign with \\\\\"SPEED LIMIT\\\\\" written on top and \\\\\"25\\\\\" below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17686954896841475, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:3f3d77d167ea60244b6046dadbd30f4d:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2024-01-08T19:18:26.341379+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3f3d77d167ea60244b6046dadbd30f4d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0639939dcd419798f05dd9a5ef91fcbfb2813968b9e1b37110726eacb03d85156c3f018db3e7b43d4714bb4d7e351e746407c562f4b69066abe20936aef91ef0feb16e7c2477d03b2f4d2e2899ce53c5c293b3a471666be62698a2ee203bd31ed178a0ca7b85328396bb334c6f5b5f6cc1cc49279f26e606e98c2497c2f86d16918db2309666b23d4a252634886a3eb816004d9d646f87be23c880998de0f229a90a12f22078fa1785a4bddf486088a38ca9f81bf4e9d1feffe35e978741a520c87a543c517c3146ed7bbd997a0d120ec07b954f920fd9c88ed815a27f53c79348b64085c67b548fb54897812c79fb2cee03a8c43fcb548fdede6c8c92555193', 'category': 'Speed Limit', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3127.0, \"x\": 1689.0}, \"hi\": {\"y\": 3431.0, \"x\": 1904.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5776: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:5945b987ad3ec9059869bc56dcfa793a:00110060\n",
- "Processing image 5776: timestamp=2019-09-04 18:41:49.818009+00:00, observationId=o1:5945b987ad3ec9059869bc56dcfa793a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16819599883197106, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=3589, total_token_count=3662) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:5945b987ad3ec9059869bc56dcfa793a:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2019-09-04T18:41:49.818009+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5945b987ad3ec9059869bc56dcfa793a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090927Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7cf611579a5e20553576bc69e325b71c1f4ce718d9c0f67353a31896c0b033207e586a37655cb88a7f049c90b6fd3dff0dd3b94d0b91dca9e16bb503e24cdf8d19b41aab05dcc2c6a0a27fda0f77d1f1f0b2db685d7540023934e3830b88f86eb726d4b0afc6860d25190a18036e4f95a07d0de58f9c7f9adf1881cbfde34ff8a377a69fcd411ca30d28bd586b33fe20fef6b57284fffd68ce4fe3f938995b1d96e6841a391240d23511c6752968d3cab0300b8e84a908b2fa7225d0e053878d1204659ac442ee42f0f21c8a95796c63a697a1e9848bb7c2481356279bc4ad62a9d25271deb9a933bf07f6037fd9ae03b82ce03f6f7084f9451db5d45e8dde96', 'category': 'Speed Limit', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3024.0, \"x\": 2484.0}, \"hi\": {\"y\": 3474.0, \"x\": 2724.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5777: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:56ee28ca6822c5159c7133340acfff5c:00110060\n",
- "Processing image 5777: timestamp=2024-01-08 19:18:26.797347+00:00, observationId=o1:56ee28ca6822c5159c7133340acfff5c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular white sign with \\\\\"SPEED LIMIT\\\\\" written in black at the top and \\\\\"25\\\\\" below. The sign appears to be in good condition and is mounted on a metal pole.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2800474166870117, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3589, total_token_count=3675) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.'}\n",
- "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:56ee28ca6822c5159c7133340acfff5c:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2024-01-08T19:18:26.797347+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A56ee28ca6822c5159c7133340acfff5c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a6d45b6a29c5bc6ef869dc2af236d94d65199140034f78a0b3f29b161cb1ff619d31b80bc098eea6abaf3e5d4fbc0889c5a3f1ed1caaba498e4451710a9bc2b781916af582cbec6e3a8f413aa90578fbef459a448cbb0276d9316a5e50e154061a222ae52573379508a6fc986175cb8c37481ee3b77ece26bd3126c793d43613b1a3f4962e074a81dccbcc7a6e35052fc3f936b1718c3caeaeb184bcdaff84cfdf6a05049e7b18f01021e2beb5f6c74c26bb369031311361632ead35d137bc86320bc1283f331170ab4bb9fc22d29dbbdf0df964be0db24408ef454ab0df56e31d3e41e2a23628694c2c325630f71da49a86e1be9763fa2196ccd7f8296d917', 'category': 'Speed Limit', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2072.0, \"x\": 683.0}, \"hi\": {\"y\": 2702.0, \"x\": 851.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5778: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060\n",
- "Processing image 5778: timestamp=2023-08-31 16:28:32.032072+00:00, observationId=o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a white speed limit sign with black text indicating a speed limit of 25.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10950571031712775, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2023-08-31T16:28:32.032072+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2c4eda5ecb924f6028e4c25b8f23049c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4932cd5fb31dacb7c80abe625ce600bf36329001f5e7055fa4fda64fb3c64915b64e1000536898cc99c165321f89ebbc5f29792010caac91972af595b84a18df786c862059c6d6a8608d7e645db93af263647ec2152250b7eb27f8d3f7590b6c9fc2a6d3040274b349c6f6ac58c66ba5cc404164ec5b0574428e9821903d6d84a1aad6cdc4a6c559d9d0b826522a858eae3c23675b9b8ebc8156a71d870f6cb5103fa1991c54903bdbffb468a5dcddebbd098323b468479b7374cbf59b8a0d584bdeee49c67afe6893454322b92685ce58f071ffb72758b23dfda4b009dc9645934c9c0e3c6354a23f16246cd19fe8b6541bd439b6830d4b058203185acbe54c', 'category': 'Speed Limit', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3154.0, \"x\": 1938.0}, \"hi\": {\"y\": 3471.0, \"x\": 2152.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5779: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:8e198d51450fa31df524b3a8863202a3:00110060\n",
- "Processing image 5779: timestamp=2019-09-27 18:01:14.595300+00:00, observationId=o1:8e198d51450fa31df524b3a8863202a3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a speed limit of 25. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15314409312079935, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3589, total_token_count=3657) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:8e198d51450fa31df524b3a8863202a3:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2019-09-27T18:01:14.595300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e198d51450fa31df524b3a8863202a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7ae82fa8310ff65240f0aaa2855d24a2c5c9c6ffb4819b5151aef135ee6c6017fb43a1e24400348c1a99c30b8dd488da7dd7a68dd0de9ab18e7831dd6514368843242104e8c5f86b6f36b294fbaf1dbe3721d6a27eae283f0365e7d4d417faceb1ea982154d4261d32be3ae5aa18b424226fe3ff80640319f10ffc49096e0b311b2181afe201427786ec8daed6980982fdc8ed9b0f0f4bacc7ce28e9b45fa59216e1e8678f733b23024db3cb88cb2532c15df62623895d5d85a94f69c30910678b901e8988c9408b45967813067a0c5e8d84639f42f1ec76db6c9391d006e9981f810e725e0606a6d0f548aaf4011cb93a7d5500dd98955fbc07434cfe767360', 'category': 'Speed Limit', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3077.0, \"x\": 2136.0}, \"hi\": {\"y\": 3482.0, \"x\": 2383.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5780: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060\n",
- "Processing image 5780: timestamp=2022-06-01 17:24:48.366811+00:00, observationId=o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a red circle and diagonal line over the letter \\'P\\', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14813525767265995, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:48.366811+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57fd3c1e0751fdcaca4a4ac3370f592c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=42265b33142a152febbc32cce17bf5e354ea35f3ac4e309cf50f97dd5a7a6bcb40333cb43ccc5a08ae403f2259075bad0d5a1f1898419c3496fc1bd1d1e293fa2d8bd98fd9d42c862687b0762bde75ff8d4f3f7457988c12e712f0635be0313ee52b0f2f30246335f468c36bf3d28c09f8fefaa2f31e3d2cf10fadc9a9a9ef6106f5325b392f723416e90b9880618d027179cdefcfbe51eb270fae1094a6150e250719163c0e3cf2f70d796fdf4097f93de9c3d5cd0a41657fef7ca8e0f1c0263bb4a242fafccf9de83f34a2c62860e865a8aa52793a38bddaf738a99fdea41b94bd3b720b6c6d15ee8906465e8c1c945474cadf5c944b051a50a8c4fb3b4a90', 'category': 'No Parking', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2168.0, \"x\": 3150.0}, \"hi\": {\"y\": 2441.0, \"x\": 3303.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5781: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:db70d419f8aa3c2b249e7187e8373e84:00110060\n",
- "Processing image 5781: timestamp=2019-06-04 22:02:04.226973+00:00, observationId=o1:db70d419f8aa3c2b249e7187e8373e84:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a red circle and diagonal line over a black \\'P\\', with red arrows pointing in opposite directions below the \\'P\\'. This indicates no parking in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21022042995545923, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:db70d419f8aa3c2b249e7187e8373e84:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2019-06-04T22:02:04.226973+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adb70d419f8aa3c2b249e7187e8373e84%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=386ead9a0b52e9cc0a9ccc852013389940d07eb1174ce073dd2908b5d1c3578fd76c7b95cf772e1d7e2c8928e4561a32875f04c5d1402d4eb3db76395be6d95a7b7085d98fd067257694109086aa3038e889766c807a18a8ee47d028ea08c3595c823236a6c07808fdd47db2bffa22b87fb8c19b331b5c6d6fd993fc681a7d6d80ac6e1da6a6fb366e24a82610a72caf007b49fed49590cf02ad54e736638d4d27b7b0723036c50048be68803d089ac4bbcd382c63bff6a0e846e031fd5d8f398aaf8ba271920fd2b34f06a2ee55879bcda1821ae48b1fff8f9d7beb3650c422272df710c1d472e0e3c438a7138da1522a265cd533a7dfb9288db5adfb2efe8d', 'category': 'No Parking', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3025.0, \"x\": 2250.0}, \"hi\": {\"y\": 3339.0, \"x\": 2425.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5782: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:62438501835678b409815d8738d8c3fd:00110060\n",
- "Processing image 5782: timestamp=2022-06-01 17:24:49.302735+00:00, observationId=o1:62438501835678b409815d8738d8c3fd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter \\'P\\', with arrows below indicating that parking is prohibited in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3220576180352105, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:62438501835678b409815d8738d8c3fd:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:49.302735+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A62438501835678b409815d8738d8c3fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6d197e7cc79dc7ce28512a719032daaf146819645951333a44c35d094f3f97a2b956a27cee41255b01eba9d640ef3905afc52fe818119fd7d29475ff5a4eb32d1458f3ed45f921fb15d50a14490211622893b5f095f5f9f74498ad8baaeafa2125d47478b261a82a7d8e5920db9245d2b2e1d7d3a55214e9a76fd054a331dd5058050888666bc9b1af901c740b82a6b5364276b3360fe56a65baa06430bd079514d15dedc50e4ff5c9d7634d9f493514bb6bd0db3ed30ed23d2ccf39684739985d66bb9e60c457c16d90f7743eca9f30ec475c98d6aac36faef784c6869dbb5cfe095940c854b1ceca6887ad5620b500d4ccb31f35106cb5eb09afd9ec1e7d91', 'category': 'No Parking', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2147.0, \"x\": 368.0}, \"hi\": {\"y\": 2433.0, \"x\": 546.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5783: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060\n",
- "Processing image 5783: timestamp=2019-06-04 22:02:05.822868+00:00, observationId=o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36539652408697665, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2019-06-04T22:02:05.822868+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec2aefd2b9f8b9f22f67244d60af62b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=521a744fe48d60d4c93b3adeb1ab58cee8fec514de6d17313322682132dd4fdef83cc48c8e7023294e262479f27789cc0bb60678c7840fa961ff8b36fa44799b06acc7c3a71d4b2da46b70763475820055a5383b2b0b064da1a5b8ebda9b6fe85c626186baf8b2eab7e0d5071386e2ff3d105f01a8956f41c3e65598a6866092eea8050b1a0bdee7167d475229a64c0e157ce31afc7e4de381ce8d117433763e13adde7cb3dbb68cdb042bd283e5c84f16b51b237d5eb3eb27ac50da3a504f86c02cca2ba5982e4a272be1453c16e1fc068297d01049397ee8fa01d749d38349c7d1214c1dc9c35f487a52caeb771dc237da6714cbbccb91134462140b46ad8a', 'category': 'No Parking', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1952.0, \"x\": 2924.0}, \"hi\": {\"y\": 2451.0, \"x\": 3154.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5784: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060\n",
- "Processing image 5784: timestamp=2022-06-01 17:24:49.302735+00:00, observationId=o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a capital letter \\'P\\' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30272657606336806, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3589, total_token_count=3679) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:49.302735+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d121203b9825fc22fe4a2a2f5b91ae2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=471fb5ba617ccf81387cc83d6fbfbc566aa21483f394d2c1a9bc4040a1c343ada27d8bf084c9b72579a0626d60208c91cfe1fbad40175c5fe3d97787cdb816540ff44b898d80bc6e55042c9d2f248bbe2950ce833080339db8bfb286c35d38ddd6ff8f8e129fc34bf2e1f28321525c74a42a6bd7fbbdd6f67b16b9ae458d7667c95b315c019d5b86701baf0515bf95f001ec95347ba79fd97818321df2307bf9a6627f3b3c235f4a97f8f2fe2982b6097773eb0dc0464755e5e0094b6f114506cc5a2fa96d8a1f65e02c946953e6c7be793b279fa80323203158aae0797d32f514114ca5e70182465f2e1a1de7ced64f4a491afa915b47ae2aa2779b4c696d69', 'category': 'No Parking', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3022.0, \"x\": 3400.0}, \"hi\": {\"y\": 3307.0, \"x\": 3574.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5785: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:bb484d1eff2abd2af3945eeacb3c286c:00110060\n",
- "Processing image 5785: timestamp=2024-02-22 14:34:02.020978+00:00, observationId=o1:bb484d1eff2abd2af3945eeacb3c286c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking - This Side of Street\\' sign. The sign is white with red lettering and a red border.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14710869660248627, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3073, total_token_count=3147) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:bb484d1eff2abd2af3945eeacb3c286c:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:02.020978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abb484d1eff2abd2af3945eeacb3c286c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5f56716eb34219c909923081a5e99d49a77c3c03a2cf7d838f376d961f0ab75f3b61c725a1a5506a782c3f17daf773427e74514ef7753d53215be7b83a7a75936ce20a48ae9c4cbbd9fa46d9bd250e846d12008a92d71fa159773538c3c7c880e2423b208b04e12ce20c53b476acf460c3294e8f75e8eae9b826d0b367ff091980b64c59179dd1a1e9c79d1e1ba0d4bd48ad14ec7bd2389bdb6d3df15e540fbdc7e52e0a1ec987bff0442b6c174cf766190f075d0c5608ba1f5253eebcd8283c20d6adef40c211a9d15194e21cced6472070043b2df03b85f88b3127ab7d89da75778a843b156b6568c2abf60f7eca0e8eedeb962bf91f41be9c65dbe59ac1db', 'category': 'No Parking', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3162.0, \"x\": 2978.0}, \"hi\": {\"y\": 3590.0, \"x\": 3195.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5786: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:8d62622c9423b6ab1bbe962370004bce:00110060\n",
- "Processing image 5786: timestamp=2024-02-22 14:34:00.917098+00:00, observationId=o1:8d62622c9423b6ab1bbe962370004bce:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'NO PARKING THIS SIDE OF STREET\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11474329738293663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:8d62622c9423b6ab1bbe962370004bce:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:00.917098+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d62622c9423b6ab1bbe962370004bce%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=473f6e28950c46540bb1d22bcc98cdd0cbc786977b4478d191b42712a341a18b208a0aa789e27cdec4ae1d1fad36e8e26f9d24a1ea24114dc4dbd8f915ec1f6cfe7d5ad43fc0471c2d668005712e74575a83f18a77d8dccb03288ba03a94c7a4ff1a3c160b23bcc459e5ad7ea4f725fd6a884649d076c693508039a46808818109678c85f4bd34b4ae72a3812afcb4d52c355cbb62fe44cee3ce9f1dde7a8accb3e4d03477ab71d113ec7a4f1b36091831d11e60bbedc51ee7b73744403266b87c93493749cfc02134392da58a735c71363965f9ccd88c9a31a510181305939c72d115a8601c8c519d0bf6b896b45fdfb258a8187fa3eb9968e5b0e6ad3310bf', 'category': 'No Parking', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3222.0, \"x\": 1365.0}, \"hi\": {\"y\": 3424.0, \"x\": 1510.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5787: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060\n",
- "Processing image 5787: timestamp=2024-02-22 14:34:02.020978+00:00, observationId=o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates \\'NO PARKING THIS SIDE OF STREET\\'. It is red and white.\",\\n \"image_quality_notes\": \"Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4183257607852711, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.'}\n",
- "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:02.020978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abbf8309ccafc86f77cf79f367cd3b97d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092828Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=23e68cdcbd5177d46ff8aff3adc7566fa9e2cc05bc8fe781b2710f3d99b6d20f3e598315e30a5f768c946f69b249e3cf2e3562d1d9739697e189cba3b756046ea53e884757a59abb076f6e4602cb1703ccdc923b0c5ef48a9897d5959849ea1d99628e9ce0d6281098669b351d1eb6723c2b57d3ae53ca20d72dc456ec41ffa4b92d3fa4ead0abae9a0e1aa49b8c1c9d50db09200489ec3b9dd728689b0c38bb3a327db185a0174c0a726395bcba106724999759a1da1e1e46df664726dc94bbaf1ed22df1a68efd85142a05ff3b6e91a7d18c4bfa5891d062580d1e6c4f055ec123606ebc0efdd27483796a33f468e2300b3832264424f39a3720d70755b1f2', 'category': 'No Parking', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2275.0, \"x\": 0.0}, \"hi\": {\"y\": 2729.0, \"x\": 144.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5788: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060\n",
- "Processing image 5788: timestamp=2019-07-29 15:28:00.204317+00:00, observationId=o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white sign that reads \\\\\"NO PARKING THIS SIDE OF STREET\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12424423545598984, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3073, total_token_count=3137) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2019-07-29T15:28:00.204317+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a01c3b708ed320cd6df09fa0cd46b24%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093115Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=097891a4b2becff1adfce581da46ae7dc3e5acf2645de457c4b1380674b6e997eda34bcf667fadcd74f2997484ae4c8e487b43a99f8dedc6a1aef2882469b46f7909110be8a4f007dea6b99e8c3bb628b1aff08795ec4b62fd4c5395318860969deb89df551b993e9814c15161238b5be35faa678cdabfe2c835c91e6db19832b77960633ce017fb8bcc8564edac376abc8b3ded3a8a55358059b46d8384b91ffd82fb54bad5c4b638a83dd2be84ae1765e7fe4710de5cd0d9f12cfc66307c66e319a0429c4e0994e02f76a73cd474d07e6182f5a77a33dbf62ed92dc6c6ac90fc4604b923d15acd8a227ea6aa037ea4855aeaf631466069ca404cd0f8e0f62f', 'category': 'No Parking', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3310.0, \"x\": 2374.0}, \"hi\": {\"y\": 3518.0, \"x\": 2512.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5789: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:98a80d0085aacc4d05ff23dd069d7746:00110060\n",
- "Processing image 5789: timestamp=2024-01-25 19:02:38.538004+00:00, observationId=o1:98a80d0085aacc4d05ff23dd069d7746:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A \\'NO PARKING THIS SIDE OF STREET\\' sign is visible. The sign is rectangular with a red border and the words \\'NO PARKING\\' are written in red at the top. The words \\'THIS SIDE OF STREET\\' are written in black below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16390385578588113, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=2557, total_token_count=2654) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:98a80d0085aacc4d05ff23dd069d7746:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-01-25T19:02:38.538004+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A98a80d0085aacc4d05ff23dd069d7746%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73205c8bf5882997ec8d2fbd0a7533f6a246ba32f48d43f82d6a7f0708f00839949b872cb0a81f24597cf7781821cffd8f58f08b8d6e906daef4061b3202962282ff38ced6ba95e13e1d111a97f5bd1acd1311244365e63e0f93ca9a368aeeb7da224f90b0adfc1f2022a282477e2294d23e7c10e01a9d1e8616d9dc8a651464b27d3a7fe1950bf5264e3c1abe323cd7c53b465dd4783f073e2bac5f47fa45d4bac07f9b0a65442ac0985d122e717f1eb3bbbfc5372f05488a96c61dd487d359a8775e90befaea195ee497a76a504017ad43880261c74c8d491508a058ecdfaa27f9953a544ec93d994f5a2f3f60ff8ebc1770badaf49461ad2760f22c12e96d', 'category': 'No Parking', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 2066.0}, \"hi\": {\"y\": 3528.0, \"x\": 2276.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5790: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060\n",
- "Processing image 5790: timestamp=2021-03-01 16:11:26.268286+00:00, observationId=o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.\",\\n \"image_quality_notes\": \"The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.48192290540011423, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=1525, total_token_count=1631) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible'}\n",
- "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.268286+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeeafebcea9c8bbe63f6831fcd92900c7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ebc124007b59af6f70659811d777aa4a2a4b2dda2d2bde0fb4191a78b41977f0d24bf974ea61187d7326ad0110065904f1dfe8c35d0d8f9d79bcafa34c8825b67cf83f7ce1408842367faf51539ed74c1edcd3df3ed09efc1209d04b71d590587ef1b5cd84a3d6d4086af273e64c81c5b5104b0976b57c42866d852644568cd07882f0b1ec1130fcbf45a5111e9cfb1e998b59294caa8c50c471ebc9635e4c444cf71a029c6eed40c5b669e9e976966ffcb5e32f94a54c311f1ef639edc710ed8c25c925278e1fc5e17c50a91bfd1aa4131f4b12d7cdccd6c2d6efa1e7ffb4bd03a6d204a4123d1122d382c00f51b7a33335edcf8ed14dd8f9b35c87e1eb8c9', 'category': 'Turn', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3134.0, \"x\": 16.0}, \"hi\": {\"y\": 3189.0, \"x\": 62.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5791: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060\n",
- "Processing image 5791: timestamp=2021-03-01 16:09:31.867244+00:00, observationId=o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2609279685550266, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:09:31.867244+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A54e8bd13f46e1c6cc3a9e486163c0d02%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=429468b1dbf32fdcd1a714bc2f29bf21602965dd98c308db38cf505894e91179556ed230073822f038a2a1cc3b4622ead1ef247e5bb4557354dab42c9fa33a9f4b18d02c276563c73b610cb1ae5d566a00104dda2f4027ae62d867809b17add1c0feac6ef16dedb7619f93d6032e8b33bf4023a67be2f3dcfc078f202eb928eb61be26986a51be3ea562e06cf705ca116d0245fff5b5d38aba0323450ac526d3dc71014b7441f228728fcf90b0c6d2532753d81a991b063b9e614e5bd51ca203cd1d634556a153ff48b3f321c17fe5b96884847891dd9d9dd57a9d0952cd30159333813c475f23040eec715c9e75d816063371eb0775a514f3066aec13cafc38', 'category': 'Turn', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 3396.0}, \"hi\": {\"y\": 3257.0, \"x\": 3452.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5792: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:d36796942b09113eb5fbc7b88f1b1143:00110060\n",
- "Processing image 5792: timestamp=2021-03-01 16:09:32.207297+00:00, observationId=o1:d36796942b09113eb5fbc7b88f1b1143:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There\\'s also a diamond-shaped warning sign below it.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2708878394884941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:d36796942b09113eb5fbc7b88f1b1143:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:09:32.207297+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad36796942b09113eb5fbc7b88f1b1143%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1096e8ad0461676d550a91f1cba9fbdb13b2b23278c80576cdc4443f27a59cebdb3ef2ae2b544dec60d29d28739caa5331b774be998856492bc655611964fab9f251bb6565773b91dfdda27223e57451cb42c332f2500ed2016d4f9655abce78fd563bceb3331e40a08fc35947bf051c6dec087c57474131cdf08500f4f12956d31689c11f17324450cee089f3aa53aeb802077d1db3aeb5fb29af17f789ef61430de49c166b0d063bce48cecaa364e2558ab347a84fd7f277f51d75fce84848a2590edd2b813dc5c24f3e51fc1238b0c17b406d78280129fb95d6fdd7edb3303dc0f1b7cbc555a3d3de7d52d83c21f360ac7f43adb50cd7c104f45cc761cda4', 'category': 'Turn', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3185.0, \"x\": 302.0}, \"hi\": {\"y\": 3239.0, \"x\": 351.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5793: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:fc97f8ca63fd181bd6987e71f20ca121:00110060\n",
- "Processing image 5793: timestamp=2021-03-01 16:11:26.580279+00:00, observationId=o1:fc97f8ca63fd181bd6987e71f20ca121:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow turn sign with a black arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09946023264238911, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=1525, total_token_count=1587) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:fc97f8ca63fd181bd6987e71f20ca121:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.580279+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afc97f8ca63fd181bd6987e71f20ca121%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d05f5582303178ed2912774b9fc0d0ac271bd5edba2c192efaa35e52b365390b7fa1f6735a8ef4145edca9f1debb569622b9c2aa18d287483686b60b41d5e12f5dc76fc00055afe67c13b201329dd7911d0e29e7a171c1e9a349e99482ff5748bf865754fc4c1dc62fc0bfdb7f0a1fa340b6dc5f0aa8b5342dac23b3c0dde6f6d4defc4d51e23d14d2df793cf992302cdb935b36620eab2bcb86f168d299281cb98ce05e897840e1fa7913dcc93c8a180cc850e9244169f97ab62035e0e60a9fdd6d5a08fa45274f3c5d2822502f33e627372ff85a67de386ae4d03667130890d0cdc55bd3db276eef2788da14788868d8ed4eea7020a29859e950115755b6c', 'category': 'Turn', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3186.0, \"x\": 3066.0}, \"hi\": {\"y\": 3246.0, \"x\": 3115.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5794: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:aab61ccc20b716bcabef5f2ec318ad53:00110060\n",
- "Processing image 5794: timestamp=2021-03-01 16:11:26.268286+00:00, observationId=o1:aab61ccc20b716bcabef5f2ec318ad53:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19806501758632375, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:aab61ccc20b716bcabef5f2ec318ad53:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.268286+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaab61ccc20b716bcabef5f2ec318ad53%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa040d49a822588e0304149e919a7b437c3e3025f8617dd56a71961a57faf5129134d1a6206e2d182f8f8bd76c1aa2aab518278e90c62eedbca1ba378ac40a2f93808705e4cb5fbe47d2e4d3c424d14ee7baf440337eeb86121f8c3930e777773e1a4ad7a7591a8ec1114b93f1fefa0259f61bc35a143318e10d05414ec5db7f4c51b83e4eda19c3a237cd520fbef05a380463d4ad99dbd2375b0834fba4e120d7e9de6670fd6592761c37d1fbe167fcb92f13a37528ff7e7245b071e36853b51fd4ea3c9b69e66d8ea27a8c443e57dc3da6105c7614ba7cabc512624f5b1d15c657fa9ce08ce8629241cd3c4552c5b4b20609d72d8705bd3b0ded75a89daf7d', 'category': 'Turn', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3183.0, \"x\": 3122.0}, \"hi\": {\"y\": 3235.0, \"x\": 3165.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5795: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060\n",
- "Processing image 5795: timestamp=2024-02-13 19:33:52.490613+00:00, observationId=o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a speed limit of 15 mph.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the speed limit number is legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18493905274764352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=1267, total_token_count=1336) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.'}\n",
- "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-13T19:33:52.490613+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1281d9907c1cb9c7bc63349eccd13f2a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=923e815d89cbb4c9b1584f35e6e489a2360bf36161c329f2436c9157c49688de4f15c27c484b2ef1f5e891c23e546e581c6b1bcf339094144fdb76a4cae3491651e18c87be6a755f6cf0a0f1b1f3ad88f8cbb78442f15ca810715f5fcd49e789b48c9d796442a708102c89903842bfdcb22866446c9fb995e7141d8e91171ab4ecaa962a0da3e9bfd57d380f6038735ad612a1eaee59644993fe5ae3bb147e7a5b129a9196b9f579164fc3b9679fb3f75f4a3e2a4fc56a5ade2abc18c20f1e967846d6879a7a66fdb779925f50736ad5025ca51a6bc45ff4147a9f271c26928dca122cde0187c496b5836a5e5cd2f7da16d273ed096ff6a9ca92cebb0401b16b', 'category': 'Speed Limit', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3158.0, \"x\": 614.0}, \"hi\": {\"y\": 3225.0, \"x\": 650.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5796: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060\n",
- "Processing image 5796: timestamp=2019-01-29 14:38:08.813975+00:00, observationId=o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign indicates a school speed limit of 15 when flashing.\",\\n \"image_quality_notes\": \"Image quality is poor, making it difficult to read the text at the bottom of the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26353878169864803, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=493, total_token_count=570) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.'}\n",
- "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2019-01-29T14:38:08.813975+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A21f32ebd59b6f9e6b1af8a32f7ca5dd7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090914Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc833759337630c526a3c45a98a210b4541d37ec7ae7c746126c3f24971d28d148d332223acaf68109c492e5077fced0ac5c822a7e1af35c972950dccea8473ed247816c93084b6a1128ae6c58ae1a130cdcb4ef7e9ef20ff539c5f7dcbbe0cf79b726da8937c653e82a6ff17fee907e8daa3aab9fb3f6da89874b3477ab629c7e4af518bb6f38e3545b2943f99d85c26d5e7c98f0bdb46dbf28951dfeac18625fd55c400c1382090c447a9d67efee59439fa544395104729d89d20cc08dd8bd5092cedaa039dbb5a4ef9e8bef689ec53890b9674ce86c54d8418ad20be18a0f7dcf21aa92fc9b2e3919b9fbcdf346c16dc0e66839f04fce88f07ad63b19ae45', 'category': 'Speed Limit', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2831.0, \"x\": 3602.0}, \"hi\": {\"y\": 2902.0, \"x\": 3648.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5797: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:12cb5b221c47bc74a97d9121b486b188:00110060\n",
- "Processing image 5797: timestamp=2024-02-21 15:49:49.888844+00:00, observationId=o1:12cb5b221c47bc74a97d9121b486b188:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3854707645464547, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:12cb5b221c47bc74a97d9121b486b188:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-21T15:49:49.888844+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A12cb5b221c47bc74a97d9121b486b188%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=20e200edcaab14d88035bf4499af1bc5af5badebdc0e5602b56ff2dc887b590f21469be96336fbea0da927f263f110912acf84e47af7c986e08d8864946b41ab1caa793e3ae5dbc7420de4898166f29c51552ed71034fe4876484083735a62109b050c49c1c1884c36dd3751a0902187704bd3a497b6b2529ec325c54547f14b7f4dd59843e7dfd8de0e38ee258567e8f4494adfe5e988a2b2f7f6f84ddf60adca46c2b83ed4d71c3136aabd5f0ce8e9c6f899930399b200b6a7aebb094659f64a5baed1a0fde1d671014f29345c3dc564459db0d2fe29eae02a4b8d9e6ae64ea95dfce2e1dc55142fdd83898ef87887241d2a43d9ccad498f25538bae6155c7', 'category': 'Stop', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 178.0}, \"hi\": {\"y\": 3234.0, \"x\": 221.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5798: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:305a9f8dfdb32d734f6a841439c37697:00110060\n",
- "Processing image 5798: timestamp=2024-02-13 19:33:55.002196+00:00, observationId=o1:305a9f8dfdb32d734f6a841439c37697:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a school speed limit sign, the limit is 15 when flashing\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31288901108961836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:305a9f8dfdb32d734f6a841439c37697:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-13T19:33:55.002196+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A305a9f8dfdb32d734f6a841439c37697%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5d244fe6f77895c3295682977d44241f04246445403c1ff3b83284179967dd98b286efa65d5c709244d206f376391f1f5b3207165db3373de39918128f7383e404e638a29fc58d2b1d7c2ef8599e9277b0aea477df4ed4a077c864cbb60b5d7ffd4e95ef71f728808e9bb4b1832cd1203aeeb5eec8bbea4a1e7e959a8fddee6631bcad556bd646b68883d7afdb0632c24f7d4acbbe804099a8b70d7cd45e54c7f3725c3cb5dee41899ea5c59c9ca7879e424c248c03cd8faed1d5a98dc018984f339b94c4f85fa79bf8d0d6debedafe7d716d7a3b149be94ec3a9489ddd3925ebda52cd8f8a147f560b23ad125bd18871a46b90d0e04001bc84ab8240ec7d5c0', 'category': 'Speed Limit', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2217.0, \"x\": 2699.0}, \"hi\": {\"y\": 2334.0, \"x\": 2742.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5799: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:3e96e8da4e3706614e2a872f0642120a:00110060\n",
- "Processing image 5799: timestamp=2019-01-29 14:38:08.297994+00:00, observationId=o1:3e96e8da4e3706614e2a872f0642120a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a speed limit. The top of the sign reads \\'SCHOOL\\'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads \\'XX XX XXXXX\\'\",\\n \"image_quality_notes\": \"The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7798575758934021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=128, prompt_token_count=493, total_token_count=621) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. '}\n",
- "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. '}\n",
- "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:3e96e8da4e3706614e2a872f0642120a:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2019-01-29T14:38:08.297994+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e96e8da4e3706614e2a872f0642120a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b7e3f378074681a078982fd1166b067ee7032104e6c8ac9fa3cdb4c6ba528d054856f6c5e6104d4e4f4a1a905114d5a9e10f884452724ff5460a593afa99dcf7cd077b8510506247da57d003dc638f84d438ebe3d08ff193d702588f23e77d678791d20d858350c8794116b7420d0220d861db810c5a3e186e7eb7b5396aa4cbc353a35885d2d461a17d592eb99703bd672d6c45df0d98baea2c2e646fef383788f013f61a6984484d70ee5705e82bb603216b09f723b875851e2ac35af13e241334b3ea35ecd82cf39a289a37dbf8a62afcfcf05396b1f49c72a901a418eee38a574c6ade4bf84c2ca4f661efc3e3de90fd0d0ed248d6ec25a5e17e49cf2339', 'category': 'Speed Limit', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2848.0, \"x\": 3298.0}, \"hi\": {\"y\": 2924.0, \"x\": 3342.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5800: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:c0612e109608e342227fdfa44f2dcad5:00110060\n",
- "Processing image 5800: timestamp=2019-07-29 15:37:48.969850+00:00, observationId=o1:c0612e109608e342227fdfa44f2dcad5:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped, orange road sign that reads \\'ROAD WORK 500 FT\\'. This is a warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10436610772576131, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:c0612e109608e342227fdfa44f2dcad5:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T15:37:48.969850+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac0612e109608e342227fdfa44f2dcad5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092716Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=884f6a9d82189dc5bd1679e0e192a2ba14d52124ef47e1049bb6dfe834e4260c1b06a01cc5fac598694084dab5bd2163211decc491a768cf885c1cc0830e5acb4189a3a24da9062f9d595d48b2508079aee682afdaa93a53042bd0a8ea5ac31508a79fd0c33756c1e46096090f941f61f772eb9c88b00c02302214e637c90f14f164a3a9eb383300cb205e7c6b143e16bd7e7d4349147b06eb325d3e3997bbb965ef291d1cb5fc4da848b444343abe682ba7f7999c135de8acc34e8dc725b7fac97032f3a72b637df448d6dc2ad3edf5e189c64da0be19bdb0505e655f30f5473338ec945a435581a6ae32e0c3c81f87fb0dbde26c55cbfe0b021305a67c98d4', 'category': 'Other', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2091.0, \"x\": 2331.0}, \"hi\": {\"y\": 2224.0, \"x\": 2461.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5801: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:378421be5531724c72de166678fa5a80:00110060\n",
- "Processing image 5801: timestamp=2019-07-29 13:55:54.249335+00:00, observationId=o1:378421be5531724c72de166678fa5a80:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a orange diamond shape that reads \\\\\"ROAD WORK 500 FT\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1876354506521514, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:378421be5531724c72de166678fa5a80:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:54.249335+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A378421be5531724c72de166678fa5a80%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=216bb5735484e122ed9bd927fa0c97a4ac05dae255610b39a4e9fccec880fa8d77985735fd588ce5ed4eb318fc8c9e9bdf190e9d97bb4d28cedf0ad8b0ea7b6dc2cd80d4640ba078d0237bcbfef52851cb4cafc9045ca933db1cc463a8106aa6922aed0b2ca510961030724911386ed22387913ca2a3a56f5af1d99c25089404beacff052cfc0ee2ad102cae28f9f60e68955c7c779116d3adc1f5d6a4055b99d3984eb0aac623b02b7dc874fa6e9ac0866defdcec99b128b9df1e1c2e2cd8483b169f01eb86e61429322ffadcd987f0a3dfbfab22d2892361374bb3910bf49bd2af4fb4130b7136f401f1ce0e61047ac8e922564f5247a972fd8e19dcd71a7e', 'category': 'Other', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2938.0, \"x\": 924.0}, \"hi\": {\"y\": 3170.0, \"x\": 1144.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5802: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:5a8b622242365c38dbc964d6c803d2bd:00110060\n",
- "Processing image 5802: timestamp=2019-07-29 13:55:53.560857+00:00, observationId=o1:5a8b622242365c38dbc964d6c803d2bd:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20054849477914663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:5a8b622242365c38dbc964d6c803d2bd:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:53.560857+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a8b622242365c38dbc964d6c803d2bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a3c951139c6e64de4a6b6317a9921058d7f16e8175b3cca4848fa721ba18c80735f98e158c7b4cc2ba82c3f5d12288c1ab3daedd431761d0acf7f29d1b2ff44f0b3f6e874c47ff8c6abc145c2ca37f36d3830ed822700c282c7480cfd386f24b0e674e20f3b974a7192da6dd56b8fe2435e901e7dc20c893b5fa60cffddfb1c0d22ce7d0f6b4db695c0103f7d4561c23c70d806958463736333830f105fa12990743ebe8097cd97b0c828216f80880c14682a336462a8720197087694012ea02f6078329d9276971115850989524e6f7af7a63c3b277eb0ba38b67aa6155f5c341d315abf2b7908e5e933e8841b29a923fdcd57f7e11d2e45c6701cd3fb44f6', 'category': 'Other', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2958.0, \"x\": 805.0}, \"hi\": {\"y\": 3147.0, \"x\": 984.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5803: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:12c13acb7237daa38cfe89246c982b33:00110060\n",
- "Processing image 5803: timestamp=2019-07-29 13:55:52.880872+00:00, observationId=o1:12c13acb7237daa38cfe89246c982b33:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is orange and diamond shaped, with the text \\'ROAD WORK 500 FT\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14679569984549906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:12c13acb7237daa38cfe89246c982b33:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:52.880872+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A12c13acb7237daa38cfe89246c982b33%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=075204687b95e10587fdf7c5922355212f2ec72618df9fbc04e817138143f150df6c81a899e3e9b075011d12da5e60777cdd89b7c35521e7947e302c35f57b740fdfe2440b1497d48fffc00e14f6e7e1c3640acfa50811a9b93c1f1edba2a405608f26d83d75f8ff36d2a5a56aee46c7f941ec53cd8da02bdf969a9092a362d5afdab0ad46ca23d31be539d48db1cfe645c983ee6fcba5f8a78c85b1e12a3fdfb06612a699159682f4b8e64497c98b5fe769171d14fd4d04a03a90d9f85e90e942d3e1d8612536c4e1f523aef83bcd9476c051db9ee8ce6b971af842910231ce97994a7025ccbf81085738ba897247cc93114ce7eb6b3f4f682e85330b273b12', 'category': 'Other', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3009.0, \"x\": 726.0}, \"hi\": {\"y\": 3169.0, \"x\": 881.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5804: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:6af621d9f6f28cd221297ee21ab83d6c:00110060\n",
- "Processing image 5804: timestamp=2019-07-29 13:55:56.900855+00:00, observationId=o1:6af621d9f6f28cd221297ee21ab83d6c:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange diamond shaped sign with the text \\\\\"ROAD WORK 500 FT.\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11920592188835144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:6af621d9f6f28cd221297ee21ab83d6c:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:56.900855+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6af621d9f6f28cd221297ee21ab83d6c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e0187ed8eb26e3941f8d3bdfae72dd6646915eaf4f026175dd5768137b6648b5926efea5c237cad6d8e5153da5ae6f28d19cd985116ad624770824ecff15359e707db694b752261f1ef0f025770d74a76c1e0dccb45feb8056dc3ecbb52874d4f72198beb9f1e829d9cc1bdd2c6818f7f905815f58c28199a6a22e88bc2530fff301a50f818b764bcb6858b324154e5691b81138a74ed86007629a44f9099400976b8195a25fa49d6684ebe6d209233574f4798659afaeac30c3b0f9f7a159e4141217e19405003a64933656b20f39d6fecf1fc10e25ce2d42475a350e1b3748b13ccf0235d68c3d1a4717d8a51c5424707ac01031bc85e92ca2dc959604703', 'category': 'Other', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1321.0, \"x\": 915.0}, \"hi\": {\"y\": 2148.0, \"x\": 1189.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5805: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:8e715c027c93d8fc425b72262e8826b7:00110060\n",
- "Processing image 5805: timestamp=2021-05-05 18:05:34.980893+00:00, observationId=o1:8e715c027c93d8fc425b72262e8826b7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.029648797852652415, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=2557, total_token_count=2613) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:8e715c027c93d8fc425b72262e8826b7:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2021-05-05T18:05:34.980893+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e715c027c93d8fc425b72262e8826b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3841170f66eb624271fdda3f9d7d649b9458ce21bd70b1a632c8a6ff24219414ca895f7f2bf54142e0a9be9509b68cf98648b9ad58f94fa9da02c4055fb48a3a9c7595d1bbbdc8f8912559d59e939203000b9e104382d1a0e3c77195ccc4f25812864505e830873a7ab589cc0f441d2514bbb28dbb728cf101f89a08f62374992f26bc5ce38dc57d2a7796ea1d9a941596f50434fc83db64bf32819a233e007e65972644f89e568ceba312cee9099af5187eae3a1a77a5899883b19b68159c9e0b0e2ab8fb81e139599b69e0b02a79c83cb8b00d71eb7110d673d4aa6029b15249b52c5429aa8b017c7db30621964396a32bf20ddea688b55874e63df3d578af', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3066.0, \"x\": 672.0}, \"hi\": {\"y\": 3107.0, \"x\": 860.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5806: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:a657d41245903cc1a2d075180ee01664:00110060\n",
- "Processing image 5806: timestamp=2022-06-15 17:24:54.596529+00:00, observationId=o1:a657d41245903cc1a2d075180ee01664:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible, along with the Redwood Rd street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13433073461055756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3073, total_token_count=3137) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:a657d41245903cc1a2d075180ee01664:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:54.596529+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa657d41245903cc1a2d075180ee01664%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3f9d9dded244a0a0eddb6789a2c0513d1919096d9538dc5f7a12732a4eda7b74a087198d38f22770c1111f6a456690d8bca692f8638e1977e9fa2fd971877017f7c1b4891e2536c2493863f50cbdd27341999bc40213a2ca2e3598f91368c124231da8f4927b58ccb86b26642076e65ba61472a549b1b023c84ef542efa9f3d9dc69044989cdc53b20678c100cb4fcb021019ea502601f05651686bc46541e85814de8ad043703ba8029739620a2585b9f69aea91bd0fbbbec4f492c5f58ee9fb66353db72d56fa6d40e4f4937561f826cb5c0e54a71e6feedc40295d7db08a94c2adfcf03feed777df8062b9b4f4f8ee95abe652f25c2ddcf051eb06f495855', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3014.0, \"x\": 766.0}, \"hi\": {\"y\": 3067.0, \"x\": 1043.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5807: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:92670e3661e7ee6ac2f10d607f25655d:00110060\n",
- "Processing image 5807: timestamp=2022-06-15 17:24:55.340582+00:00, observationId=o1:92670e3661e7ee6ac2f10d607f25655d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible. The sign is positioned below street name signs for \\'900 S\\' and \\'Redwood Rd\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21524055282790938, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:92670e3661e7ee6ac2f10d607f25655d:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:55.340582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A92670e3661e7ee6ac2f10d607f25655d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52c9e126fbf7a474ae0ef93956b39afadd153159260fcdbc5b0c6b4fc4a624b1aee0b9781859193d9ff4b3b66594f505d4c7707156560b18b79887fb07df75bdbf985864dfde8d5b3ac277eb3ae0ec45951a0f77ea8255efcf3e31534c43439fe55fea6547b31fd9544607c5ad057a8f49cf3664d04f13424b0af4e914844766013a38b66fe63af6e59df2e68c34612db04ab543ab32caa9c1bc9877bc7ddd9690301dd932dce39d088d58e0d3134cc15ed703886280570001e31159b2af626bdface521cbf2fe6981000f913393e457738cd9a858a4bbbe023d387964672a62f5a0e3ffa0841937a64fb748f21c97e7c095ccaa23f5201fbefa682a6743ada0', 'category': 'Stop', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2927.0, \"x\": 1093.0}, \"hi\": {\"y\": 3012.0, \"x\": 1473.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5808: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:3378e56509a4baeef3ed5734dfebb10a:00110060\n",
- "Processing image 5808: timestamp=2022-06-15 17:24:53.912575+00:00, observationId=o1:3378e56509a4baeef3ed5734dfebb10a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.021941006183624268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=3073, total_token_count=3129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:3378e56509a4baeef3ed5734dfebb10a:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:53.912575+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3378e56509a4baeef3ed5734dfebb10a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16f68e470bc7f949cd339a2cd1e62b076ec214039095bb6a9c1637cffbc60c41944c6723c15464deda7c1782c3849d7703ccd6b9cdcd699f197a9be8532829dca17b950f99b73b5739518a323fb009d94e4473a068f8ce559574be4c7a2b2c2a4dad9daa76fc9000bdffa0b23e050ef63a1a5fcd6f6f9eedd775376e7c8f680c80e0efc013d5e6eccd1894e5f9afaea9b2db9af4c34edd8923a1c0ef3683491ec11a24130c68ce8915a7e7fe13960a937b45ce49af632cfa2cb43f4764ed2cb8e644a104c9d36a850743249190ae1b348f6314d0b605dd3649a8db71b13fbbcf3d259cb5d6d6b615709163831f00e1de41110d7b1073c2d84c6ce13f5cf13695', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3049.0, \"x\": 609.0}, \"hi\": {\"y\": 3091.0, \"x\": 813.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5809: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:a4dacf0c165fc825d2b4487dfeab204f:00110060\n",
- "Processing image 5809: timestamp=2021-05-05 18:05:35.544478+00:00, observationId=o1:a4dacf0c165fc825d2b4487dfeab204f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.05673427241189139, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=3073, total_token_count=3129) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:a4dacf0c165fc825d2b4487dfeab204f:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2021-05-05T18:05:35.544478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4dacf0c165fc825d2b4487dfeab204f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=96cdeaf4a235f36ec6b5d920fd8a35476f24ea1115d781d3d014d3166105d2615238f293290a4f7df081d6020be0a92318a8473a529e452392c8ad1c563a50c4d524141dbbbd3dcc99ac0559ebda2610867ac60b1fb2e0d4b663b8451bd8ce864f526bd39368abf571340c9d062f9a74c89659e1ff38a644daa2d574bfa701edbdfeed6c9e989a48c2f693132a492ef8fb89be2334bd2ccc0df0fd1f84dcb7f57fb6b560b0a2fd1fcc7acec858a372ea18df765a050c123688d69a19bce9e468ff44a3b59a7f3a06c0029b9b260215fc2641e9cafa0617507ed624be2c0f9e270373a8651c389b74336ead5612520e8cde8df41edcc883134170cda97a8e4e8a', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3028.0, \"x\": 887.0}, \"hi\": {\"y\": 3083.0, \"x\": 1127.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5810: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060\n",
- "Processing image 5810: timestamp=2024-05-14 18:20:03.851727+00:00, observationId=o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign indicating Redwood Rd and Northwood Ave\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1355958873942747, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-05-14T18:20:03.851727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4fc9cba4f5eb6aacb75c6b9f6fd60978%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b5f1b1b0dc491d7b069d9a58c93e84c68c074122f863767d57c50b5ed4b9ddbe7e2155c988964e696b11ada076c05fb5ba1472281da3180d28a719400591f7902805aca5f9f2ce9342ee6284cfd97160712f19dddbf9b4a9b372be6c6c5eece722fbdcd94805608b869732b31d0c1e050ac1d0bd91111058a9543222699a6e565f34491424d7638a5273965cdf041040aa3016e3e5ea0718bee7ef60edcea83eb070da16ab3a314f434746625a9a70326425114c894466af45e2d9ae80576fb89e276f3f3e63e0e6f8ff19ac7d4cd6681e6298819002c6d58d44e33fe35bc910cfc2114227bb32223a3057e6df2ddc7c23070cdbeb8e10a61a8b87fa815dc28', 'category': 'Street name', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2060.0, \"x\": 3118.0}, \"hi\": {\"y\": 2120.0, \"x\": 3355.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5811: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060\n",
- "Processing image 5811: timestamp=2024-06-12 17:01:41.325650+00:00, observationId=o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street sign with \\'Redwood Rd\\' and \\'Northwood Ave\\'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\",\\n \"image_quality_notes\": \"The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6771404943733572, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.'}\n",
- "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-06-12T17:01:41.325650+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27f0dd1657f5c55edb4a8e430f800ab9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=574706074b93a0dacdb13eec9fbafb1a1c01b50d4f9568ac1c7ee8035631286990ced4c1ca2455cd6aae52b686d7c0b127eafd3514018f17b29a3c0c7378d9d584da6a47a304955cc2cc032e0a69091405700edcad816a0d7c3aaaa19cef4fec42f8eccde3d73e3335d53f49fd2ce54c32abc62e7ae43dbb8787a827a5d411bb6d573c98cf27b80c8559a263a7be30c76fc14b5ce43a8c7f3461a793f61857832050780bc55a7a8bc2c893a07be1ca93d2b342ef4e03b5d7ed353512d6dffc617d905b777c5ab0794b58cd3d8665c687cc97ff3a4d6312c21fa272495491103d43c6c25d5a4f199358ac0a2e2205b18dbf08c141f38f26e33ba2cda2d15b9005', 'category': 'Street name', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2084.0, \"x\": 3248.0}, \"hi\": {\"y\": 2141.0, \"x\": 3485.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5812: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060\n",
- "Processing image 5812: timestamp=2024-05-14 18:20:03.851727+00:00, observationId=o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.\",\\n \"image_quality_notes\": \"Sufficient quality, some items are blured in the picture. Color has faded from the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5820851380797638, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.'}\n",
- "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.'}\n",
- "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-05-14T18:20:03.851727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aff2995ad2509cdfac281eba64ed1e1dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=970c6947f618669d872875037c8e28b7e6ef057eda98a22fe0a90ae0cce32da5dc16ff8ce1665cd61a70656d68e06cfb764781aa2b79297b5228729991cb3809d6af529773677212808966fcb969df62c67c4a89c832a5f844f481129ad2ac3814b23de10f94e8f217988ca2413ea22df942498d59c6ba214739d7afb596f04f983266cccfee380a0cb5128e5678b3319313373cecb5d713c99dc2f7588ffad788050826c98d97b138ce0ee7af8590daf6d78bdef3466c60b2c7450df416e16c466bd2da3f68daf341c91baf2c18672a8f5acf6116449fc482292a235f903664b3b3fb9b093ab223d2f9b3ca9964023ae7cba840f9bd8b485ac4e0b214e69896', 'category': 'Stop', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2931.0, \"x\": 107.0}, \"hi\": {\"y\": 3001.0, \"x\": 351.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5813: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:f67205191517398bd13e8fefefd97b4a:00110060\n",
- "Processing image 5813: timestamp=2023-12-21 15:53:38.114644+00:00, observationId=o1:f67205191517398bd13e8fefefd97b4a:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the street names \\'W 5th St\\' and \\'Providence Rd\\'. It also includes an indicator of the neighborhood name, \\'Gladys Leggett Neighborhood\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3048822085062663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:f67205191517398bd13e8fefefd97b4a:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:53:38.114644+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af67205191517398bd13e8fefefd97b4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a68cacfcfcbfdb08ca6af53fe7100fbae051469fc7ff981ec2f7d87b2f73525527a941766026289f2fa5991a89444a6b088ee1405398f60d58d639c4e1ed23c4fdef9087425aaf78ff63fed01df70d21a2615d2293d64672c37927ed35cf7d3b5b9f39e629fc096bd24f28290b8bc96fc3d9446cd09173c1e147367f63b8c8320ff5c522461147a8cc0cf7c1ce2fca609ef298d6558a88f248e727db90513819b419c560d46bf5cbe4b6f6ef0dd29c7b2e8eaf70b707537588dbb091b4babddb882d9df9d3e9e8a6d9ceb2f3b98edc9dbe7c2fc859057161072c7afcc267e01819db0f2f211da9f19da02ad821bdbb87fb61be4d01ab7c7ab62746b76c6b4055', 'category': 'Street name', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2289.0, \"x\": 1509.0}, \"hi\": {\"y\": 2510.0, \"x\": 2140.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5814: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:bdb494c4ba3a163153383d74257b0ebc:00110060\n",
- "Processing image 5814: timestamp=2011-05-06 22:04:35.132362+00:00, observationId=o1:bdb494c4ba3a163153383d74257b0ebc:00110060\n",
- " Error processing image 5814: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abdb494c4ba3a163153383d74257b0ebc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=385936a99e29f1dff5354378e2e183edcff06361fb6604edf870e1c501853ab983d7d130b9b2f6c65fecef8f0f991fcc4632352a22e112e9f7210e3a505c76159e59f33f010bbc377d9c7906cb41c9f8f01ffb4382e2929869d9ed3ce4a3e48b9986a8eb69fc69219627a63802e27f282a44ea3eb27c1cca45126d2c69a5281297b0e5fcd3e2750aa6c9b40ba99947ce80d07f500ad4d1b778c75d537b6c9027a4b7ca256e81b28761358bc6c55ee983ae1565b000e8891052a515836ec201d9513f53c399fd8c5fe21f19f36f791386b39039aa388332568f7475a41ce54dc9afad697f3a8bdd093d06fe49522349ea15dd82d561c4b320c63805fba5fd0583\n",
- "Processing image 5815: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:95370424089a98d7ac76a93ca9b6efee:00110060\n",
- "Processing image 5815: timestamp=2023-12-21 15:53:37.290765+00:00, observationId=o1:95370424089a98d7ac76a93ca9b6efee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3405760635029186, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:95370424089a98d7ac76a93ca9b6efee:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:53:37.290765+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A95370424089a98d7ac76a93ca9b6efee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=158d8b4587fa4898ec1ecbd5a1751ed1f16faaa488335b142af7864ff801e721eab56180355ca6b66c8dab71165dbdbbd4d2c092e08472b83916f46a2847a6d40a5e9b0ac693445a2fc50245aed5d70c05df5d33324834d2a9761037423956adcfe1c55d427d6d6661d985fbcebcaebad49998e0aff41417fbb0ab1091a5e159fc2ef37666e09c0834ba82b6913328557039f5e5c4d20fe0bce71727e5569afc204288f2fa48bfa054c988bb6141122e8ad0c466eadd779eda9b71b6059bea95dad662001fe4cfb43b236d6925c02c5d35e24af8cbe60bc362b3b70c16d1784b63644be110eb92ae18e22ae7590a6908574e295599a2867281686c6a7d4db387', 'category': 'Street name', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3300.0, \"x\": 2519.0}, \"hi\": {\"y\": 3462.0, \"x\": 2853.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5816: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:6231b287d74fac13cc9442396eb83ba7:00110060\n",
- "Processing image 5816: timestamp=2019-01-21 15:37:01.593862+00:00, observationId=o1:6231b287d74fac13cc9442396eb83ba7:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street sign indicating \\'Providence Rd\\' with an address of \\'1100\\' with arrow pointing to the left, indicating direction. Also includes sign for \\'Gladys Leggett Neighborhood\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4334026205128637, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:6231b287d74fac13cc9442396eb83ba7:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2019-01-21T15:37:01.593862+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6231b287d74fac13cc9442396eb83ba7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=21c1c6523b5c4e5ab427dd72caa30cc975411e784309ecdec37465ef84f42f07342575f35caa5287d0b9bb4feb2983702b7547f42b5971f1550fee355b28dd649749f708c81419fdc717906b7ab83888bd39eca1ce357cb0e00f195658e7ba9b1ee25a56612efb03c2022e476d6e5e27855ad4ae1ee6c6bf78ff21939452ad3de73d567d6ebc73c22e6515f0165073bae82a00bc7bdd2c8e576d9a7f791b2c3fdb092ebd336cc4c656a8054cab4588ac150be4dc906f13976e9a6b5438c45491cf348cd0f5e4012be56787c421daacdeb6292950a7634c72548ae1477cb08d8f1999b7ba48c5ebf8ba646af4c46203be0d2f3b75653e5830d7f0516adb8281cb', 'category': 'Street name', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3403.0, \"x\": 463.0}, \"hi\": {\"y\": 3604.0, \"x\": 842.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5817: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060\n",
- "Processing image 5817: timestamp=2023-12-21 15:39:07.420990+00:00, observationId=o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'Providence Rd\\'. The arrow indicates the direction for the street.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3304991646418496, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:39:07.420990+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af0985eadd99cfad7faeb4f141fbe43ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091617Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=151c7b1462b9239bd2e190647051c46fdc667e32fbeeca700b8437b22a1706b9beff9a756794ea91463d1fe3057c6ef04a54c835e4277f9dd0a99736aeb49cd135baf70e2254f68121dfec2720cfa17cb0467d880fd850bbaf908b149a28a535c90fef2ac4b414e840bc76deaa34f71b9c840be86e4404b200f4d6537d6691412d847c76f14cf65bed8f84e8d58481a57c173e07ba3bb0d007a622e294d09ae6722e714b5e339a73799003a8b9685ac1eaea903dd09e131096a78565133ac7dda709fafeef772946a811dc35ec5dca69478d5a50012a9459312efaf07a9547f5d6a314df19a1517d19840d4dc0d137096229f06c4d202b66f6cebc67cd0d8399', 'category': 'Street name', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2542.0, \"x\": 2643.0}, \"hi\": {\"y\": 2666.0, \"x\": 3091.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5818: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:9dfd03a0953ae78b84ef609cde83a063:00110060\n",
- "Processing image 5818: timestamp=2024-01-19 18:35:04.846961+00:00, observationId=o1:9dfd03a0953ae78b84ef609cde83a063:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \\\\\"Parking by Disabled Permit Only\\\\\", and the bottom portion specifies a time frame or other restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38620209426022645, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:9dfd03a0953ae78b84ef609cde83a063:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:04.846961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9dfd03a0953ae78b84ef609cde83a063%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=024caf9679f0b343a7de8bfc2971c72ec92217c2221b76d86fa84cb882d4f52081acc484cdd2b840c90c0de478a79f3e8b8ade0dbbe06984f77f20998a2c82769ab3228a650c57c0f180e842ceb9ab15aae6bdc492347bce2307e04cbe4891c9890ed7466ebf57839aeb749d7f4e0059d318c2e2135d510f31974db150c894e063495564aad0e7262f5b9e95b110dde8fcd930d4cd6213d8d2a64ed6fbf2f87bfc8e15c3bb9f11fe842cd6a4b4f5552e1b1402eb502f9c6c291485019e9e7c2b4c1487f6bd74fbb0b45c02dc0eba3fb57608772c7da2da272a314ca67f4e5f49d9ba5112ba1fef41aa44d027bceef1b0cc124541871d873c746f5a6ce2bce4f4', 'category': 'Other', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3030.0, \"x\": 3412.0}, \"hi\": {\"y\": 3080.0, \"x\": 3465.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5819: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060\n",
- "Processing image 5819: timestamp=2024-01-19 18:33:42.049351+00:00, observationId=o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying \\'Parking by Disabled Permit Only\\' and a fine amount.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2889211723603398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:33:42.049351+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2ea2c370f4fdff4bb8e6183e04f03eb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=62f42c73ff2a5d773e2033db584f7254f1e39e04b255680adcdba0713350b2043e45d27e22ac0018bccfe1ea963459eed02f9c38f8a38e8dcb67b4ceb833d08955fb8328e4edbc976be927d4ca312efd4cedc5503747715bc31ac701371d79b4a04219662d6eb58a12e1530dc3f9ac31ef8704ba5ffe8e8a9e6bf8d3294241ccc849a689ecd7833e39ae6f4186b478bdba2d28ac4998fe1af096de40a39805b8a7b5678cc2244812aedc19af2c1f311ed6c6fdc1ca85594b9b046650be217db3e5b18b6c5a795e479bbb869bbaedb81cc6fa0f30c66df43f9ef5b31f028857e64c939572cffa86f0929d4a9ed3ae522edf377bfa7c495d3b76a6043a2d57bcfd', 'category': 'Other', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2192.0, \"x\": 1933.0}, \"hi\": {\"y\": 2246.0, \"x\": 2000.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5820: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060\n",
- "Processing image 5820: timestamp=2024-01-19 18:35:02.355086+00:00, observationId=o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4488532511393229, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:02.355086+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73d1de3b0ca6dfe63726ed8ee1b38e8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=97d3f6946a750b63fe3573a22b6630ce23a86edeaa9dbde472a2033952526e41ba3ec74bbdacb11bb05150be5a02b8510a5928efb3e81aa0641be34238b69579635c65d27b9b6255d28e8da94aacd7993d69ec93a3b5c9b64119012112db0ac9786939bd2ef07d0706fcd1eb418fc6b9aca38e19ba62267efe3431254de4f449a078c359da9c3601f1f3ca905f4e91853e6cc6be1c46517757b8048c013fcd71551840edc965b4dbe30eddfb1b9196998b590eb742b36628486b7da020d412840245eba56a44edfee2d13189e6363bc8ea330ac046c09eaea8ad724c2d99f3d59973f18cacbd00f0341c0c74bdabca56c15942bc6482b3085f0080bf2ff76484', 'category': 'Other', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2190.0, \"x\": 3468.0}, \"hi\": {\"y\": 2239.0, \"x\": 3515.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5821: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:2db05857d9abdcdee379c128c00ca2b8:00110060\n",
- "Processing image 5821: timestamp=2024-01-19 18:33:43.301770+00:00, observationId=o1:2db05857d9abdcdee379c128c00ca2b8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating \\'Parking By Disabled Permit Only\\' and a notice of a $250 fine for violations.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3890236415220111, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:2db05857d9abdcdee379c128c00ca2b8:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:33:43.301770+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2db05857d9abdcdee379c128c00ca2b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=527304a76b11a15bb64680f6b738ff0134324a3c3c0f849e6c123e0fabb386a9007a55bcfe424b3375afd7cdf8e70fcf48ab6fe75b18414dd128ad4cf3917a06b69b1fb112872d9b4401a0b1d7ae3bdb680334d75d52281a08f35b3b4e28e96f4639882123af320d69c23723e27544e81b6badfab03fe83f930247cd430fd5c6b23cec29e0234c89cf595fa099202aafcbbbddcf1ca22a2265d2684338e8b865808d7a47c7dcf1de760f0ab32ac641c2e0301a342c7f67f608264ce84008dbfbef54678536fa9aebc31b7a287ae1ecdb6714371531f4843d96c29e9f6cfd4d1bf6596c40cbcc8aa40de6d57ca7bb8aadca96abd4c9dc7c1c95a2678378f098b9', 'category': 'No Parking', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2197.0, \"x\": 1852.0}, \"hi\": {\"y\": 2251.0, \"x\": 1913.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5822: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:b70287eb0bdd5739065ed6f4571a170f:00110060\n",
- "Processing image 5822: timestamp=2024-01-19 18:35:03.459349+00:00, observationId=o1:b70287eb0bdd5739065ed6f4571a170f:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2982615042423856, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:b70287eb0bdd5739065ed6f4571a170f:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:03.459349+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab70287eb0bdd5739065ed6f4571a170f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b91fd06561a34fcc726fde61b15b71cc9f080bb52b8ef51939ce3159a7b4bb252c304c0e49da985aa6112cc6c4e4dd79f83f2bcc80720eb56bfe52d6b5d2b875a8ce286e8dd9610bc63e7053302cc908d22dc65e7a1bce04bfe19e3076bfde8324735f2536721b445425920c11c9952c0cd32a56a23e876dac462bab69e174865361a8455edbd3acb45d2e83239262fada315654da1727bd9fe60efba81aa147e7c94020bb4b541ddc86b6a5b3dc755180676cb6c22d9d74810f5dc2c1db068e204ae09d9ac09e074f588be9e2a7a2ce62e1d5833b74529fa50d5003e7b993fd34ed567f731d68e5c79b5aa0cdb306629a5cf640ff9bc3ca08ee05209e24fed', 'category': 'No Parking', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2141.0, \"x\": 2220.0}, \"hi\": {\"y\": 2187.0, \"x\": 2278.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5823: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:bc65c05059d4395af5a4b455b30c1002:00110060\n",
- "Processing image 5823: timestamp=2022-06-14 16:46:42.175137+00:00, observationId=o1:bc65c05059d4395af5a4b455b30c1002:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5211028195499035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:bc65c05059d4395af5a4b455b30c1002:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2022-06-14T16:46:42.175137+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abc65c05059d4395af5a4b455b30c1002%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a426f8a84eb1dc36791a0da2f8e04c4b3bd2eb6fd61c4935615e452e9412fa104de1aa0447c1a15a44e87999d426f568c3d79fbba5611349466c8a34cfdaec6de5255253c22146686f002fc19f0ba719afdb180f4331710c487acbd6ca5bd6dd5a58bdf0e06b74758299be73de5a49cede1c34ef14836115a1e16c9b35f6205d71bf812a7f9c191fc8fd76958e28394f02eb7e603598fa24b1895773846606a2c152d8da424d901aa47c0731b8f9edd4d7f9e16ddedae54d08959f38a13d111bf8c72e18d8ef5f6efbc50e171bf57a3a4b15691225396000efe0a908af4993cc025d8e36a437ad5b1c771301585b7053dce093753458d3ac39e913de8251c692', 'category': 'No Parking', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2227.0, \"x\": 1484.0}, \"hi\": {\"y\": 2418.0, \"x\": 1587.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5824: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:f45a5995046040b2feceed89a3146942:00110060\n",
- "Processing image 5824: timestamp=2022-06-14 16:46:41.566619+00:00, observationId=o1:f45a5995046040b2feceed89a3146942:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a combination of parking signs. The top most sign shows a \\'No Parking\\' restriction with an arrow indicating the direction that it applies to. The middle sign indicates \\'1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.\\' The third sign indicates \\'Resident Parking Area, Area 5, Permits Exempt Time Restriction\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3598713556925456, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=120, prompt_token_count=2041, total_token_count=2161) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:f45a5995046040b2feceed89a3146942:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2022-06-14T16:46:41.566619+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af45a5995046040b2feceed89a3146942%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=53eee3581ee77a7cd04f1a880be9fc1e050725832bfd5aa2df7304bf8bf0bc8d7961d7c08d577891ced08840e0e6d27fb730ad2772a0840a734e3f0e1b7da4bee7b5a203d567b5be38c3a12204c7a4d13a8ab3429e22865107d6042417d7a75f0e8df944a9ddf387031974755f1ab7a52f88980460d222b661f17c4af9dac921f9b77d68b9d4ce85fe37afaad1f1313ddd194f672af9521de6763f90656806e9222fa9e56a7b00a42f04e10a1a9b5969dd127264073bb004572bb43adf6d5653d7818f37cad8306ca54677967ed1033a4dd4edc2357b2761aa422a38645ed9e8655d1a320c07b8116bfeca1932de2c1048cd08ebe0e78d99938a808e5172dd5e', 'category': 'No Parking', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3195.0, \"x\": 2880.0}, \"hi\": {\"y\": 3346.0, \"x\": 2980.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5825: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:29092dbbe19f26ac70f249d68bacae83:00110060\n",
- "Processing image 5825: timestamp=2021-10-18 20:21:13.304246+00:00, observationId=o1:29092dbbe19f26ac70f249d68bacae83:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign with a red circle and a slash through a \\\\\"P\\\\\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.\",\\n \"image_quality_notes\": \"Image is somewhat blurry but the general shape and markings on the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3967942457932692, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=493, total_token_count=584) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.'}\n",
- "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:29092dbbe19f26ac70f249d68bacae83:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:21:13.304246+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29092dbbe19f26ac70f249d68bacae83%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b1728988a96ebd6e12cd218c81e63f8160cb9a9bbb88b3ee68e2982da5bc4f0dafc6b2d238a58792563d950ced2a19de13e0b6f50c91114c94054652eaa5e2c39877e684a67aeaf437dd212b2d55c33df9b6b636c00658fa515292e3d076f3a7e839a7e699d66a0ab2d23af7ec53c7007bca574b3fa302120eb0a58bef6c3032c8f775e0345d42b0eb27cfa210bd77527e8d3e0c76a02d037ba4661dd9f51d44a2bfd10b9ba43d6d3d959fcf38844527acaccca075ee8b4248894623e81a2143c858e498c931770f264196ac23a9f99a7874140a41fc2076bc1a62611cb68aa4b6b3d2ef21533ab2395f04dcc703d0212e920beafe36e0c2055a9d3d7805445', 'category': 'No Parking', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3265.0, \"x\": 1581.0}, \"hi\": {\"y\": 3308.0, \"x\": 1611.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5826: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:939cc76244f5ca579f42025115cad7f8:00110060\n",
- "Processing image 5826: timestamp=2021-10-18 20:21:12.440325+00:00, observationId=o1:939cc76244f5ca579f42025115cad7f8:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29618828296661376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:939cc76244f5ca579f42025115cad7f8:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:21:12.440325+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A939cc76244f5ca579f42025115cad7f8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47e592b727b657886475016f70bf7ceb12ea0552394e52240e0502a738e96150ccd913e682e1b0ae01e116bec6f85efccc34fdb55a1d9bae35a90c551986eae6fddb997af656288d352e63c2e39b34ecab511f1e2753d7142eb274c7e0b8580b11c0d4a27bbd145414890858f02a833c0cf441847e7f6b5e3ddcac036877735c2aa1399e903ecd30b3cc0e7d4f354a0ed2111477988da8b8ff7cda8dfb102971c84308361ff1116ef6e235e71ba7de42c087e0c83ff3118aabc6f86536135d34c25af96b5492d4e0ac7b7e20b962bfcb1be3abd7f0450917f9a6f4a79c9bdaba984ef2639e37cf11dc18dff78554e366789a59cd4707ad56341f03fa4335e657', 'category': 'No Parking', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3266.0, \"x\": 2226.0}, \"hi\": {\"y\": 3329.0, \"x\": 2265.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5827: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060\n",
- "Processing image 5827: timestamp=2021-10-18 20:23:15.076249+00:00, observationId=o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3173505126452837, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=122, prompt_token_count=2557, total_token_count=2679) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:23:15.076249+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7cb6e4aff8140750e9ab52c19f1b02df%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=739b4c8b54df00214bbe247054240be86b7a9d836ef41142d038edd799b2181de82d9ccba81063c780421cbff5b3a42905faa4e01b7c628eff37f9ecc8de212bed68d36508dee0bfbac473b371b55172b3ac0173c12b604febf2f79805fa185010eb6ec25733b1a4113aa0c5059dfbdc1a0485d3ca8f3fb9cca064eefe849fdb0954112f0aef417d0edf2ac137b36932fe56a130e73b1b036b5725c6eb23b384eec594cee92e6e32800c9bb604269448e8f97494f84b598e1fc173746b46dcd672143657ed574f90385b093d206617d86cb3af7324ccb978d02291d9ca823288ca3a9ec6686ae39dc82582f2633af8522f1f2a2952aec7b828122e8e53dadbab', 'category': 'No Parking', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2242.0, \"x\": 1790.0}, \"hi\": {\"y\": 2434.0, \"x\": 1884.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5828: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:87fa2356d88b218f9bf7ca47733b710d:00110060\n",
- "Processing image 5828: timestamp=2023-12-15 17:13:21.284406+00:00, observationId=o1:87fa2356d88b218f9bf7ca47733b710d:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs: \\'Frontage Rd S\\' and \\'McCue Rd\\'. They are green with white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07003134650153083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:87fa2356d88b218f9bf7ca47733b710d:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:21.284406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87fa2356d88b218f9bf7ca47733b710d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=46f2e7162d0a66b7dc116ff429124db9001b114e1d321c3b9ada6c7f53ad308c377457190e60abc1c28537490b50ebfe270e1aaf6252b26c54860d207626100bdff4fca9f30a71b8109feadcc121f6282a06d7956337501b3c75d47874628ef7a280cf1b74d9281afacd03f3ed766161da1a1cd6b51f54b927853727d26ea33b7b338d165b7647abd530810d4e98f9bf30e54736828a446ab2eb8cb3504d2819837d38bcce86f793dfe93ca7a4a5e054253032f15cc64f21feeab4256dbf3159a30fe73d1c1095e9722fe71d932b7aa5564553f3dd0379cdb1d048889c26ebd473bab668e7cf87b9117a2d6be14568656811d591b88e36cb226ec8ecf04faca9', 'category': 'Street name', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 3120.0}, \"hi\": {\"y\": 3195.0, \"x\": 3174.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5829: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:0b67cbe69ade7311b72e426aed655ec0:00110060\n",
- "Processing image 5829: timestamp=2023-12-15 17:13:16.728942+00:00, observationId=o1:0b67cbe69ade7311b72e426aed655ec0:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two street name signs are visible, one reading \\'McCue Rd\\' and the other reading \\'Frontage\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1339773314339774, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=1525, total_token_count=1595) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:0b67cbe69ade7311b72e426aed655ec0:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:16.728942+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b67cbe69ade7311b72e426aed655ec0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091724Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b7a5e4d71e71da469f1d36917fa71644a09582556c7aef86ffb4ca04bd810ff53dfc3dc1200fda7652992c3c7f4f106e8cbc9851ac9500d159255b1687137270ad03a3af615432cf1a5ea4783dd7e695a2a05a6ba8318976f33dc884a3866a2f6f1f9d8a1e386a543139f5ab7e5526a2c7ef894897fdab5b46f3dc946437b3ec01cd6e5c2d9e5eb2d17f96ea4c25cd13ef452a8cfd11d3bcbcf5bdf86f4a6036b7c95d49c956741228d3490757b745f4b7cfe6e50b307f4fccbeb80d219e8ee720cd6fb4dd767a791ba31a3d9bf2bfd9af636294f39972065ae2888df786e0c612470c9701778b5a22ce86178a3cb0208eea2bd860038f3add469317617505a0', 'category': 'Street name', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2260.0, \"x\": 2965.0}, \"hi\": {\"y\": 2311.0, \"x\": 3085.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5830: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060\n",
- "Processing image 5830: timestamp=2024-01-22 15:26:36.431808+00:00, observationId=o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14168556876804517, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2024-01-22T15:26:36.431808+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A037c2b33ec7bfd2cd6b23ace5bd0d2ca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b987935403e81ba7f00e7c399edd1245200b387eb1abee27dcfc31b42c0c1a0a67d9fa4333509f119a1a6282c78e41b6435ad362d76b5b3b22d609eae7aa777ae129447c8ad1518dbc3e7899a53cde3d415435f41214febea33fc2cb71e2bb9bf8724754408a55a6e31894d7d6739a77b7c18d6fa7e02427e54f571fa86f0aa7cd9c2e3adf6e7360330245edbc015767579f1c2670f9726bbce2875512831ba286c6a14d7cd3c987da12a2752cd285b292e4bf2b4c8343626f7fac54daac2544c6d8d73790e2f71c691c6896b2ab2732f74ebe98bbab56a815109bc00b78e74b7b577a4c54f028b70fb312f7398e2485544e30517b527eb595b674bd5c932746', 'category': 'Street name', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2199.0, \"x\": 2038.0}, \"hi\": {\"y\": 2258.0, \"x\": 2196.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5831: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:132af582777ba2b46cb0ccad61e82649:00110060\n",
- "Processing image 5831: timestamp=2023-12-15 17:13:21.284406+00:00, observationId=o1:132af582777ba2b46cb0ccad61e82649:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates the street names \\'Frontage Rd S\\' and \\'McCue Rd\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19254920731729536, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear'}\n",
- "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:132af582777ba2b46cb0ccad61e82649:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:21.284406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A132af582777ba2b46cb0ccad61e82649%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1380e040ed3621af6e4651568c5a5895149ba58bb9f3416c4417524b505862f268a7bdcd96b008859ef5f165d28e59f3379ac1d199ecea4dfe2ed81f34d2a2a0c2e261d0d2b059d3d9e3bb770424c6086bf1a55eb532e2b3408d9978f9970525854095183baf51b9a04ac7af99029adc70bf4e027989cbec76458f9ebc0ded0622e5c1122ab1f95f73b3d24300d5276ca8d7e55e39be10909f56f221bed7af4b9592c78269c241d4ac3f7cb5125357e10177de087a9615df76d5d8539ec8af7d9095dc8019f09bd4665b9e523832963108022fdf5ca96861ca39b3a7fee8defcf97308d8280434b9ee69da60d7b0b3410ede4324ffc591b31e40b540d42a36b', 'category': 'Street name', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 69.0}, \"hi\": {\"y\": 2323.0, \"x\": 131.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5832: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:7480b6d5a43068d32c832835816b466e:00110060\n",
- "Processing image 5832: timestamp=2023-12-15 17:13:15.760909+00:00, observationId=o1:7480b6d5a43068d32c832835816b466e:00110060\n",
- " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green street sign reads \\\\\"McCue Rd\\\\\", and another sign reads \\\\\"Frontage\\\\\"\",\\n \"image_quality_notes\": \"The image quality is fair, but the text on the sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36251143405311986, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
- " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.'}\n",
- "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.'}\n",
- "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:7480b6d5a43068d32c832835816b466e:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:15.760909+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7480b6d5a43068d32c832835816b466e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=00d408905d3f4ed69f57faa6c47c78f16d11928f563a90211e6c02e8a3d4f3d6026f8ae167ddd7c150570a2fd1cf6324749aec5070338c4b67ec2a8d409a944811ca2ebf8a305d56ed05811f816db2bae8d773f20e2c08ce48143aa725dad7693ee782c2f402c02e5a1de7476fc4d6b8216d36976be07853e65afc7de6a8b3b8d43112db1c76c4a18e520382ba68331b051bca0668bb31e143f3a46b2936c0e7bdfb6c42fc8a26d6cc6335e3d6ccc38923a4038773de7f17d5963f83d0d966b0e70d6757e52081bc4b5ea409abf2c0b987744c22ebcabc02fe9f9a5765b32afa2eb684f55c70a52fcc582f7dfa215d17f6376e29041ecc0f1f04af70a396f5ee', 'category': 'Street name', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3190.0, \"x\": 733.0}, \"hi\": {\"y\": 3233.0, \"x\": 851.0}}'}\n",
- "Image report inserted successfully.\n",
- "Processing image 5833: trackId=t1:034c0e27e0a66f328f023d0d931b3105:ffff005f, observationId=o1:951aec98c472f4fbd0c044401d1d7f48:00110060\n",
- "Processing image 5833: timestamp=2023-12-19 21:16:29.770663+00:00, observationId=o1:951aec98c472f4fbd0c044401d1d7f48:00110060\n"
- ]
- }
- ],
- "source": [
- "all_reports = process_image_reports(results)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "Pw7QWS_ujcHZ",
- "metadata": {
- "id": "Pw7QWS_ujcHZ"
- },
- "source": [
- "# Visualize the dataset"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "M2K91xM6we9M",
- "metadata": {
- "id": "M2K91xM6we9M"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "df_all_reports = pd.DataFrame(all_reports)\n",
- "print(f\"The size of all_reports inside the pandas is: {len(all_reports)}\")\n",
- "#print(df_all_reports)\n",
- "df_all_reports"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "IuBm-oKwcmr1",
- "metadata": {
- "id": "IuBm-oKwcmr1"
- },
- "outputs": [],
- "source": [
- "# (OPTIONAL)\n",
- "# You can export the results of the analysis\n",
- "# df_all_reports.to_csv(\"road_sign_classification_results.csv\", index=False)"
- ]
- }
- ],
- "metadata": {
- "colab": {
- "name": "classify_road_signs_and_save_in_bq",
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.10.10"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/places_insights/notebooks/analyze_site_performance/README.md b/places_insights/notebooks/analyze_site_performance/README.md
new file mode 100644
index 0000000..13e82c7
--- /dev/null
+++ b/places_insights/notebooks/analyze_site_performance/README.md
@@ -0,0 +1,25 @@
+# Analyze Site Performance with Places Insights and BigQuery ML
+
+This directory contains a complete Geospatial Machine Learning workflow demonstrating how to combine internal operational metrics with external environmental data to diagnose the location factors that drive site success.
+
+By leveraging **Places Insights**, **BigQuery ML**, and **H3 Spatial Indexing**, this sample shows how to move beyond anecdotal explanations and quantify exactly how local competitive density and neighborhood characteristics dictate performance.
+
+## Directory Contents
+
+* **`places_insights_analyze_site_performance_bigquery_ml.ipynb`**: The primary interactive workflow. It demonstrates how to ingest site data, engineer features using Spatial Joins (`ST_DWITHIN`) against the Places Insights dataset, train a Robust Linear Regression model in BigQuery ML, and visualize city-wide expansion opportunities using an interactive H3 grid map.
+* **`places_insights_analyze_site_performance_data_generation.ipynb`**: An optional supplementary notebook. It demonstrates how to dynamically generate a realistic, synthetic training dataset of store locations in London by scoring geographic points based on their proximity to real-world amenities.
+* **`store_performance_london.csv`**: The static, pre-generated dataset created by the data generation notebook. This allows users to run the main BigQuery ML workflow immediately without needing to generate their own data.
+
+## Getting Started
+
+### Prerequisites
+
+To execute these notebooks, you will need:
+1. **Google Cloud Project**: With billing enabled and BigQuery active.
+2. **Places Insights Access**: Your project must be subscribed to the [GB Places Insights dataset](https://developers.google.com/maps/documentation/placesinsights/cloud-setup) in BigQuery.
+3. **Google Maps Platform API Key**: Required to render the interactive map visualizations. You must enable the **Maps JavaScript API** and **Maps Tiles API** on this key.
+
+### Execution Order
+
+1. *(Optional)* Run `places_insights_analyze_site_performance_data_generation.ipynb` to see how the synthetic correlation between performance and amenities is mathematically generated.
+2. Run `places_insights_analyze_site_performance_bigquery_ml.ipynb`. The notebook automatically fetches the provided `store_performance_london.csv` dataset directly from GitHub to proceed with the BigQuery ML training and prospecting visualization. *(Note: If you ran the optional data generation step, you can modify the notebook to ingest your custom generated file instead).*
\ No newline at end of file
diff --git a/places_insights/notebooks/analyze_site_performance/places_insights_analyze_site_performance_bigquery_ml.ipynb b/places_insights/notebooks/analyze_site_performance/places_insights_analyze_site_performance_bigquery_ml.ipynb
new file mode 100644
index 0000000..378f28e
--- /dev/null
+++ b/places_insights/notebooks/analyze_site_performance/places_insights_analyze_site_performance_bigquery_ml.ipynb
@@ -0,0 +1,751 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "private_outputs": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "code",
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "metadata": {
+ "id": "pDKqIF_IzOI6"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# 📊 Analyze Site Performance with Places Insights and BigQuery ML\n",
+ "\n",
+ "
\n",
+ "\"\"\"\n",
+ "print(\"✅ Logo HTML prepared.\")"
+ ],
+ "metadata": {
+ "cellView": "form",
+ "id": "EWAWR0K6SJRR"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title Phase 4b: Map Visualization\n",
+ "# @markdown Visualizes the **custom location scores** generated by combining **Places Insights** data with **BigQuery `AI.GENERATE`**.\n",
+ "# @markdown\n",
+ "# @markdown This interactive map plots the apartment listings, allowing you to instantly see which locations best fit the target persona and explore the reasoning.\n",
+ "\n",
+ "import folium\n",
+ "\n",
+ "# 1. Construct Tile URL\n",
+ "# Note: {{z}}, {{x}}, {{y}} are kept as literals for Folium/Leaflet to substitute.\n",
+ "tiles_url = f\"https://tile.googleapis.com/v1/2dtiles/{{z}}/{{x}}/{{y}}?session={session_token}&key={GMP_API_KEY}\"\n",
+ "\n",
+ "# 2. Initialize Map\n",
+ "m = folium.Map(\n",
+ " location=[center_lat, center_lng],\n",
+ " zoom_start=ZOOM_LEVEL,\n",
+ " tiles=tiles_url,\n",
+ " attr=google_attribution, # Uses the dynamic copyright fetched in Phase 4a\n",
+ " name=\"Google Maps\",\n",
+ " control_scale=True,\n",
+ " prefer_canvas=True\n",
+ ")\n",
+ "\n",
+ "# 3. Create Custom Legend HTML\n",
+ "legend_html = '''\n",
+ "
\n",
+ " AI Score Legend \n",
+ " High (8-10) \n",
+ " Medium (5-7) \n",
+ " Low (0-4) \n",
+ "
\n",
+ " '''\n",
+ "\n",
+ "# 4. Inject Overlays (Logo + Legend)\n",
+ "# We add the logo to the left, and the legend to the right.\n",
+ "m.get_root().html.add_child(folium.Element(logo_html)) # Logo (from Phase 4a)\n",
+ "m.get_root().html.add_child(folium.Element(legend_html)) # Legend\n",
+ "\n",
+ "# 5. Add Scored Markers\n",
+ "print(\"📍 Plotting AI-scored locations...\")\n",
+ "\n",
+ "for _, row in df_scored.iterrows():\n",
+ " # Dynamic Color Logic based on AI Score\n",
+ " score = row['score']\n",
+ " if score >= 8.0:\n",
+ " icon_color = 'green'\n",
+ " icon_type = 'star'\n",
+ " elif score >= 5.0:\n",
+ " icon_color = 'orange'\n",
+ " icon_type = 'info-sign'\n",
+ " else:\n",
+ " icon_color = 'red'\n",
+ " icon_type = 'exclamation-sign'\n",
+ "\n",
+ " # Popup Content (HTML)\n",
+ " popup_html = f\"\"\"\n",
+ "
\n",
+ "
{row['name']}
\n",
+ "
Score:{score}/10
\n",
+ "
\"{row['reasoning']}\"
\n",
+ "
\n",
+ " \"\"\"\n",
+ "\n",
+ " folium.Marker(\n",
+ " location=[row['lat'], row['lng']],\n",
+ " popup=folium.Popup(popup_html, max_width=300),\n",
+ " tooltip=f\"{row['name']} ({score})\",\n",
+ " icon=folium.Icon(color=icon_color, icon=icon_type)\n",
+ " ).add_to(m)\n",
+ "\n",
+ "# 6. Display\n",
+ "display(m)"
+ ],
+ "metadata": {
+ "cellView": "form",
+ "id": "HeS4nK6WTmLf"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title Phase 5: Clean Up Resources\n",
+ "# @markdown This cell deletes the demo dataset and all tables within it.\n",
+ "# @markdown\n",
+ "# @markdown **You will be prompted to confirm before deletion.**\n",
+ "\n",
+ "from google.cloud.exceptions import NotFound\n",
+ "\n",
+ "# Validation\n",
+ "print(f\"⚠️ WARNING: You are about to DELETE the dataset: `{DATASET_ID}`\")\n",
+ "print(f\" Project: `{GCP_PROJECT_ID}`\")\n",
+ "print(\" This action cannot be undone.\")\n",
+ "\n",
+ "# Interactive Input\n",
+ "confirmation = input(\"Type 'yes' to proceed with deletion: \").strip().lower()\n",
+ "\n",
+ "if confirmation == 'yes':\n",
+ " print(f\"\\n🗑️ Deleting dataset: {DATASET_ID}...\")\n",
+ " try:\n",
+ " # delete_contents=True removes tables inside the dataset\n",
+ " client.delete_dataset(DATASET_ID, delete_contents=True, not_found_ok=True)\n",
+ " print(f\"✅ Successfully deleted dataset '{DATASET_ID}' and all contents.\")\n",
+ " except Exception as e:\n",
+ " print(f\"❌ Error deleting dataset: {e}\")\n",
+ "else:\n",
+ " print(f\"\\n🛑 Operation cancelled. Dataset `{DATASET_ID}` was NOT deleted.\")"
+ ],
+ "metadata": {
+ "id": "4MBgXd_p0aR1"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/places_insights/notebooks/identify_sales_leads/README.md b/places_insights/notebooks/identify_sales_leads/README.md
new file mode 100644
index 0000000..02a3fec
--- /dev/null
+++ b/places_insights/notebooks/identify_sales_leads/README.md
@@ -0,0 +1,35 @@
+# Identify Net-New Field Sales Leads with Places Insights
+
+> **⚠️ Important Requirement:** To run the queries in this notebook, your Google Cloud Project must have access to the **US Places Insights dataset**. For instructions on how to request and configure access, please see [Set up Places Insights](https://developers.google.com/maps/documentation/placesinsights/cloud-setup).
+
+### Overall Goal
+
+This notebook demonstrates an end-to-end data pipeline based on the [Places Insights Sales Leads Architecture](https://developers.google.com/maps/architecture/places-insights-sales-leads). It solves a common, high-value business problem: **finding every operational target business in a specific territory that is *not* already in your CRM.**
+
+By visualizing commercial density and using spatial joins, this workflow transforms raw map data into a clean, actionable list of highly targeted sales prospects.
+
+### Key Technologies Used
+
+* **[Places Insights](https://developers.google.com/maps/documentation/placesinsights):** To provide the underlying commercial datasets and geospatial count functions.
+* **[BigQuery](https://cloud.google.com/bigquery):** To execute analytical queries, handle complex polygons, and perform the final `LEFT JOIN` exclusion.
+* **[Address Validation API](https://developers.google.com/maps/documentation/address-validation):** To confidently translate unstructured CRM addresses into definitive `place_id`s.
+* **[Places API (Text Search)](https://developers.google.com/maps/documentation/places/web-service/text-search):** To serve as a highly accurate fallback for extracting establishment IDs.
+* **[Google Maps 2D Tiles](https://developers.google.com/maps/documentation/tile/2d-tiles-overview):** To visualize the territory density on an authentic Google basemap.
+* **Python Libraries:** **GeoPandas** (spatial manipulation), **Folium** (interactive mapping), and **Requests** (API calls).
+
+*Note: This notebook executes queries and API calls that incur costs. See [Google Maps Platform Pricing](https://mapsplatform.google.com/pricing/) and [BigQuery Pricing](https://cloud.google.com/bigquery/pricing) for details.*
+
+### The Step-by-Step Workflow
+
+1. **Define Target Place Types:** In a production environment, your first step is mapping your ideal customer profile to specific [Places Insights Place Types](https://developers.google.com/maps/architecture/places-insights-sales-leads#step_1_define_your_target_place_types). *For this notebook, we have pre-selected `['restaurant', 'bar', 'cafe', 'coffee_shop']` to focus on the food and beverage sector.*
+2. **Extract High-Potential Areas:** We use the `PLACES_COUNT_PER_H3` function combined with a public city boundary dataset to identify the most densely packed commercial zones in New York City, visualising the results on an interactive heatmap.
+3. **Normalize CRM Data:** We take a sample of raw, unstructured CRM addresses and pass them through a two-step API pipeline (Address Validation & Text Search) to extract the definitive Google Maps `place_id` for every existing customer.
+4. **Whitespace Exclusion Analysis:** We zoom in on the highest-density territory (Union Square) and run a BigQuery spatial query. By cross-referencing the businesses in the territory against our newly normalized CRM IDs, we filter out existing customers to reveal a list of 100% net-new sales leads.
+
+### How to Use This Notebook
+
+1. **Prerequisites & Secrets:** Before running this notebook, you must configure two environment variables in the Colab "Secrets" tab (the **key icon** on the left menu):
+ * `GCP_PROJECT_ID`: Your Google Cloud Project ID. **Crucially, this project must be authorized to access the US Places Insights dataset (see [Set up Places Insights](https://developers.google.com/maps/documentation/placesinsights/cloud-setup)).**
+ * `GMP_API_KEY`: A Google Maps Platform API key with the following APIs enabled: *Address Validation API, Places API (New), and Map Tiles API*.
+2. **Authentication:** The first cell will prompt you to authenticate your Google Account. Ensure the account you use has BigQuery Data Viewer/Job User permissions for your Project ID.
+3. **Run the Cells:** Once authenticated, execute the cells in order from top to bottom to extract, visualize, and generate your leads.
\ No newline at end of file
diff --git a/places_insights/notebooks/identify_sales_leads/places_insights_sales_leads.ipynb b/places_insights/notebooks/identify_sales_leads/places_insights_sales_leads.ipynb
new file mode 100644
index 0000000..49c89fe
--- /dev/null
+++ b/places_insights/notebooks/identify_sales_leads/places_insights_sales_leads.ipynb
@@ -0,0 +1,596 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "private_outputs": true,
+ "provenance": []
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "code",
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "metadata": {
+ "id": "z78zcqRzdpdY"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Identify Net-New Field Sales Leads with Places Insights\n",
+ "\n",
+ "
\n",
+ " '''\n",
+ "m.get_root().html.add_child(folium.Element(legend_html))\n",
+ "\n",
+ "# 4. Inject Google Logo (from Backend Cell)\n",
+ "m.get_root().html.add_child(Element(logo_html))\n",
+ "\n",
+ "display(m)"
+ ],
+ "metadata": {
+ "id": "F4Zt7xqqJjWB",
+ "cellView": "form"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 6. Function Query: Fetch H3 Density Data\n",
+ "# @markdown This cell shows a Grid Search using the [PLACES_COUNT_PER_H3](https://developers.google.com/maps/documentation/placesinsights/place-count-functions/places-count-per-h3) SQL function.\n",
+ "# @markdown\n",
+ "# @markdown **The Analysis Workflow:**\n",
+ "# @markdown 1. **H3 Grid System:** We use [H3](https://h3geo.org/) (Resolution 8) to normalize the city map into uniform hexagonal cells. This is ideal for comparing density across irregular city layouts.\n",
+ "# @markdown 2. **The Query:** We call the pre-defined BigQuery function `PLACES_COUNT_PER_H3`. This function automatically aggregates places into the grid cells.\n",
+ "# @markdown 3. **Search Parameters:**\n",
+ "# @markdown * **Area:** A **5km radius** around the city center.\n",
+ "# @markdown * **Types:** Broad commercial activity (`restaurant`, `store`, `point_of_interest`).\n",
+ "# @markdown * **Status:** Only `OPERATIONAL` places.\n",
+ "# @markdown 4. **Geometry Processing:** The query returns GeoJSON strings for each hexagon, which we parse into a `GeoDataFrame` for visualization.\n",
+ "\n",
+ "import json\n",
+ "from shapely.geometry import shape\n",
+ "\n",
+ "# 1. Determine Function Name\n",
+ "if \".\" in DATASET_TABLE:\n",
+ " dataset_path = DATASET_TABLE.rsplit('.', 1)[0]\n",
+ " function_table_name = f\"{dataset_path}.PLACES_COUNT_PER_H3\"\n",
+ "else:\n",
+ " function_table_name = \"PLACES_COUNT_PER_H3\"\n",
+ "\n",
+ "print(f\"🎯 Function Target: {function_table_name}\")\n",
+ "\n",
+ "# 2. Define Function Query\n",
+ "function_query = f\"\"\"\n",
+ "SELECT\n",
+ " h3_cell_index,\n",
+ " count,\n",
+ " ST_ASGEOJSON(geography) as geometry_json\n",
+ "FROM `{function_table_name}`(\n",
+ " JSON_OBJECT(\n",
+ " 'geography', ST_GEOGPOINT({CITY_CENTER_LNG}, {CITY_CENTER_LAT}),\n",
+ " 'geography_radius', 5000,\n",
+ " 'types', ['restaurant', 'store', 'coffee_shop'],\n",
+ " 'business_status', ['OPERATIONAL'],\n",
+ " 'h3_resolution', 8\n",
+ " )\n",
+ ")\n",
+ "\"\"\"\n",
+ "\n",
+ "print(\"🚀 Running H3 Function Query...\")\n",
+ "try:\n",
+ " df_h3 = client.query(function_query).to_dataframe()\n",
+ " print(f\"✅ Data Retrieved: {len(df_h3)} hexagonal cells.\")\n",
+ "except Exception as e:\n",
+ " print(f\"❌ Query Failed: {e}\")\n",
+ " print(\"👉 Hint: Ensure you have subscribed to the Sample Dataset for this specific country in Analytics Hub.\")\n",
+ " df_h3 = pd.DataFrame()\n",
+ "\n",
+ "# 3. Process Data for Mapping\n",
+ "if not df_h3.empty:\n",
+ " print(\"⚙️ Processing Geometries...\")\n",
+ " # Convert GeoJSON string to Shapely Geometry\n",
+ " df_h3['geometry'] = df_h3['geometry_json'].apply(lambda x: shape(json.loads(x)))\n",
+ " # Create GeoDataFrame and set CRS\n",
+ " gdf_h3 = gpd.GeoDataFrame(df_h3, geometry='geometry')\n",
+ " gdf_h3.set_crs(epsg=4326, inplace=True)\n",
+ " print(\"✅ GeoDataFrame Ready.\")\n",
+ "else:\n",
+ " gdf_h3 = None\n",
+ " print(\"⚠️ No data to process.\")"
+ ],
+ "metadata": {
+ "id": "Sg30v_-zJmdn"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 7. Visualization: H3 Density Heatmap\n",
+ "# @markdown This cell renders the H3 grid data as a Choropleth map overlay.\n",
+ "# @markdown\n",
+ "# @markdown **Visualization Details:**\n",
+ "# @markdown * **Technique (Choropleth):** We map the `count` of places in each H3 hexagon to a color scale.\n",
+ "# @markdown * **Color Scale:** We use a **Yellow-Orange-Red (`YlOrRd`)** gradient.\n",
+ "# @markdown * 🟨 **Yellow:** Lower density of places.\n",
+ "# @markdown * 🟥 **Red:** High density/commercial saturation.\n",
+ "# @markdown * **Context:** By overlaying this on the map, you can correlate high-density hexagons with specific neighborhoods, transit hubs, or shopping districts.\n",
+ "\n",
+ "if 'gdf_h3' not in locals() or gdf_h3 is None or gdf_h3.empty:\n",
+ " raise ValueError(\"No H3 data found! Please run Cell 6 successfully first.\")\n",
+ "\n",
+ "# 1. Initialize Map using Backend Assets\n",
+ "m_hex = folium.Map(\n",
+ " location=[CITY_CENTER_LAT, CITY_CENTER_LNG],\n",
+ " zoom_start=12,\n",
+ " tiles=tiles_template_url,\n",
+ " attr=google_attribution,\n",
+ " name=\"Google Maps\",\n",
+ " control_scale=True\n",
+ ")\n",
+ "\n",
+ "# 2. Add Choropleth Layer\n",
+ "folium.Choropleth(\n",
+ " geo_data=gdf_h3,\n",
+ " data=df_h3,\n",
+ " columns=['h3_cell_index', 'count'],\n",
+ " key_on='feature.properties.h3_cell_index',\n",
+ " fill_color='YlOrRd',\n",
+ " fill_opacity=0.7,\n",
+ " line_opacity=0.1,\n",
+ " legend_name='Place Density (Count per H3 Cell)'\n",
+ ").add_to(m_hex)\n",
+ "\n",
+ "# 3. Inject Google Logo (from Backend Cell)\n",
+ "m_hex.get_root().html.add_child(Element(logo_html))\n",
+ "\n",
+ "print(\"🗺️ Rendering Heatmap...\")\n",
+ "display(m_hex)"
+ ],
+ "metadata": {
+ "id": "H_6oq9nrJpev",
+ "cellView": "form"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/places_insights/notebooks/spot_check_results/README.md b/places_insights/notebooks/spot_check_results/README.md
new file mode 100644
index 0000000..ed1a300
--- /dev/null
+++ b/places_insights/notebooks/spot_check_results/README.md
@@ -0,0 +1,35 @@
+# Spot-Checking Places Insights Data with Functions and Sample Place IDs
+
+### Overall Goal
+
+This notebook demonstrates a workflow for spot-checking Places Insights data. It starts with a high-level statistical query to find restaurant density and then **directly visualizes both the high-level density and ground-truth sample locations from the city's busiest areas on a single, combined map.**
+
+### Key Technologies Used
+
+* **[Places Insights](https://developers.google.com/maps/documentation/placesinsights):** To provide the Places Data and Place Count Function.
+* **[BigQuery](https://cloud.google.com/bigquery):** To run the `PLACES_COUNT_PER_H3` function, which provides aggregated place counts and `sample_place_ids`.
+* **[Google Maps Place Details API](https://developers.google.com/maps/documentation/places/web-service/place-details):** To fetch rich, detailed information (name, address, rating, and a Google Maps link) for the specific `sample_place_ids`.
+* **[Google Maps 2D Tiles](https://developers.google.com/maps/documentation/tile/2d-tiles-overview):** To use Google Maps as the basemap.
+* **Python Libraries:**
+ * **[GeoPandas](https://geopandas.org/en/stable/)** for spatial data manipulation.
+ * **[Folium](https://python-visualization.github.io/folium/latest/)** for creating the final interactive, layered map.
+
+See [Google Maps Platform Pricing](https://mapsplatform.google.com/intl/en_uk/pricing/) For API costs assocated with running this notebook.
+
+### The Step-by-Step Workflow
+
+1. **Query Aggregated Data:** We begin by querying BigQuery to count all highly-rated, operational restaurants across London, grouping them into H3 hexagonal cells. This query provides the statistical foundation for our analysis and, crucially, a list of `sample_place_ids` for each cell.
+
+2. **Identify Hotspots & Fetch Details:** The notebook then **automatically** identifies the 20 busiest H3 cells. It consolidates the `sample_place_ids` from all of these top hotspots into a single master list and uses the Places API to fetch detailed information for each one.
+
+3. **Create a Combined Visualization:** In the final step, we generate a single, layered map.
+ * The **base layer** is a choropleth "heatmap" showing restaurant density across the entire city.
+ * The **top layer** displays individual pins for all the sample restaurants from the top 20 hotspots, providing a direct, ground-level view of the locations that make up the aggregated counts. Each pin's popup includes a link to open the location directly in Google Maps.
+
+### **How to Use This Notebook**
+
+1. ** Set Up Secrets:** Before you begin, you must configure two secrets in the Colab "Secrets" tab (the **🔑 key icon** on the left menu):
+ * `GCP_PROJECT`: Your Google Cloud Project ID with access to Places Insights.
+ * `GMP_API_KEY`: Your Google Maps Platform API key. Ensure the **Maps Tile API** is enabled for this key in your GCP console.
+
+2. **Run the Cells:** Once the secrets are set, simply run the cells in order from top to bottom. Each visualization will appear as the output of its corresponding code cell.
\ No newline at end of file
diff --git a/places_insights/notebooks/spot_check_results/places_insights_spot_check_results_using_functions.ipynb b/places_insights/notebooks/spot_check_results/places_insights_spot_check_results_using_functions.ipynb
new file mode 100644
index 0000000..4be8ec6
--- /dev/null
+++ b/places_insights/notebooks/spot_check_results/places_insights_spot_check_results_using_functions.ipynb
@@ -0,0 +1,611 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "private_outputs": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "code",
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "metadata": {
+ "id": "8gEou7lgxicD"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Spot-Checking Places Insights Data with Functions and Sample Place IDs\n",
+ "\n",
+ "
\n",
+ "\"\"\"\n",
+ "print(\"✅ Logo HTML prepared.\")"
+ ],
+ "metadata": {
+ "cellView": "form",
+ "id": "mrJQEhrKttTq"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title Query Aggregated Restaurant Data\n",
+ "# @markdown This query selects operational restaurants with a rating > 3.5 within a 5km radius of Central London.\n",
+ "# @markdown The results are aggregated into H3 cells (Resolution 9) and saved to the dataframe `df_restaurants_in_london`.\n",
+ "%%bigquery df_restaurants_in_london --project $GCP_PROJECT_ID\n",
+ "\n",
+ "DECLARE geo GEOGRAPHY;\n",
+ "\n",
+ "-- Create a polygon: A 5km radius around Central London (Charing Cross)\n",
+ "SET geo = ST_BUFFER(ST_GEOGPOINT(-0.1276, 51.5074), 5000);\n",
+ "\n",
+ "SELECT *\n",
+ "FROM `places_insights___gb.PLACES_COUNT_PER_H3`(\n",
+ " JSON_OBJECT(\n",
+ " 'geography', geo,\n",
+ " 'h3_resolution', 9,\n",
+ " 'types', ['restaurant'],\n",
+ " 'business_status', ['OPERATIONAL'],\n",
+ " 'min_rating', 3.5\n",
+ " )\n",
+ ");"
+ ],
+ "metadata": {
+ "id": "bihXeGeyrA18"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# 1. Convert the WKT string column into geometry objects\n",
+ "# We use apply(wkt.loads) to parse the string representation of the polygons\n",
+ "df_restaurants_in_london['geography'] = df_restaurants_in_london['geography'].apply(wkt.loads) # type: ignore\n",
+ "\n",
+ "# 2. Convert the standard DataFrame to a GeoDataFrame\n",
+ "gdf_restaurants_in_london = gpd.GeoDataFrame(\n",
+ " df_restaurants_in_london, # type: ignore\n",
+ " geometry='geography',\n",
+ " crs='EPSG:4326'\n",
+ ")\n",
+ "\n",
+ "print(f\"Successfully processed {len(gdf_restaurants_in_london)} cells.\")\n",
+ "print(\"Displaying top 5 rows:\")\n",
+ "display(gdf_restaurants_in_london.head())"
+ ],
+ "metadata": {
+ "id": "pWoAjJSmrCzl"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Visualizing Restaurant Density on a Heatmap\n",
+ "\n",
+ "The code below uses the GeoDataFrame to generate a heatmap. Here's what it shows:\n",
+ "\n",
+ "* **Choropleth Map:** Each H3 hexagon on the map is colored based on the number of operational restaurants it contains.\n",
+ "* **Color Scale:** The map uses a yellow-to-red color scale (`YlOrRd`). Lighter, yellow areas have fewer restaurants, while darker, red areas represent the densest hotspots.\n",
+ "* **Interactivity:** You can hover over any hexagon to see its unique H3 index and the exact restaurant count. Clicking on a hexagon will open a popup with all the data for that cell.\n",
+ "\n",
+ "This visualization gives us an immediate and intuitive understanding of where the major dining hubs are located throughout the city.\n",
+ "\n",
+ "**Note:** This cell uses [2D Map Tiles](https://developers.google.com/maps/documentation/tile/2d-tiles-overview). Please review the documentation for pricing."
+ ],
+ "metadata": {
+ "id": "sARRaIAY704E"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Check if dataframe exists\n",
+ "if 'gdf_restaurants_in_london' in locals() and not gdf_restaurants_in_london.empty:\n",
+ "\n",
+ " # Define tooltips\n",
+ " restaurant_tooltip_cols = ['h3_cell_index', 'count']\n",
+ "\n",
+ " # 1. Create the map using .explore()\n",
+ " # Note how clean this is now: we just pass the pre-calculated URL and Attribution\n",
+ " london_restaurants_map = gdf_restaurants_in_london.explore(\n",
+ " column=\"count\",\n",
+ " cmap=\"YlOrRd\",\n",
+ " scheme=\"NaturalBreaks\",\n",
+ " tooltip=restaurant_tooltip_cols,\n",
+ " popup=True,\n",
+ " tiles=google_tiles_url, # <--- Injected from Setup Cell\n",
+ " attr=google_attribution, # <--- Injected from Setup Cell\n",
+ " style_kwds={\"stroke\": True, \"color\": \"black\", \"weight\": 0.2, \"fillOpacity\": 0.7}\n",
+ " )\n",
+ "\n",
+ " # 2. Inject the Google Logo\n",
+ " # This adds the HTML div on top of the map container\n",
+ " london_restaurants_map.get_root().html.add_child(folium.Element(google_logo_html))\n",
+ "\n",
+ " # 3. Display\n",
+ " display(london_restaurants_map)\n",
+ "else:\n",
+ " print(\"DataFrame 'gdf_restaurants_in_london' not found. Please run the BigQuery cell first.\")"
+ ],
+ "metadata": {
+ "id": "ip7EqZQLuAtf"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Identify Top Hotspots and Consolidate Place IDs\n",
+ "\n",
+ "Now that we have the density data for all of London, we will focus our analysis on the 20 busiest areas.\n",
+ "\n",
+ "The code below isolates these top 20 H3 cells and extracts up to 10 `sample_place_ids` from each one. It then displays a summary table of these hotspots before consolidating all the IDs into a single master list for analysis. This list will be used in the next step to fetch detailed information for each location."
+ ],
+ "metadata": {
+ "id": "okmimHojzTHf"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Isolate the top 20 H3 cells with the highest restaurant counts.\n",
+ "print(f\"Identifying the top 20 busiest H3 cells from the {len(gdf_restaurants_in_london)} total cells...\")\n",
+ "top_20_cells_df = gdf_restaurants_in_london.sort_values(by='count', ascending=False).head(20).reset_index(drop=True)\n",
+ "print(\"Top 20 cells identified.\")\n",
+ "\n",
+ "# For each of the top 20 cells, take the first 10 sample_place_ids.\n",
+ "# The .apply() method performs this slicing operation on each row's list individually.\n",
+ "print(\"Extracting up to 10 sample Place IDs from each of the top 20 cells...\")\n",
+ "sliced_ids_series = top_20_cells_df['sample_place_ids'].apply(lambda id_list: id_list[:10])\n",
+ "\n",
+ "# --- Create and display the summary table ---\n",
+ "print(\"Generating summary table of top hotspots...\")\n",
+ "summary_df = pd.DataFrame({\n",
+ " 'H3 Cell Index': top_20_cells_df['h3_cell_index'],\n",
+ " 'Total Places in Cell': top_20_cells_df['count'],\n",
+ " 'Sample IDs to Analyze': sliced_ids_series.apply(len)\n",
+ "})\n",
+ "display(summary_df)\n",
+ "\n",
+ "\n",
+ "# Consolidate all the sliced lists into a single series.\n",
+ "# The .explode() function creates a new row for each Place ID.\n",
+ "all_place_ids_series = sliced_ids_series.explode()\n",
+ "\n",
+ "# Get a final list of unique Place IDs to process.\n",
+ "place_ids_to_process = all_place_ids_series.unique().tolist()\n",
+ "\n",
+ "print(f\"\\nConsolidated a total of {len(place_ids_to_process)} unique sample Place IDs to analyze.\")\n",
+ "\n",
+ "# Display the first 5 IDs as a sample\n",
+ "print(\"\\nSample of Place IDs to be processed:\")\n",
+ "print(place_ids_to_process[:5])"
+ ],
+ "metadata": {
+ "id": "DPIMj07U0Bzv"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Fetch Details for Consolidated Place IDs\n",
+ "\n",
+ "With our consolidated list of unique Place IDs, we now use the Google Maps Places API to fetch rich, detailed information for each location.\n",
+ "\n",
+ "The script below will loop through each ID and retrieve its name, address, user rating, and latitude/longitude coordinates. All of this information is then compiled into a single DataFrame, `details_df`, which will power our final, combined map visualization.\n",
+ "\n",
+ "**Note:** This cell uses [Place Details API](https://developers.google.com/maps/documentation/places/web-service/place-details). Please review the documentation for pricing."
+ ],
+ "metadata": {
+ "id": "Xe-jCDMm1pwx"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Check if the list of Place IDs from Phase 1 exists.\n",
+ "if 'place_ids_to_process' in locals() and place_ids_to_process:\n",
+ "\n",
+ " # *** THE FIX: Pass the API key explicitly using client_options ***\n",
+ " try:\n",
+ " places_client = places_v1.PlacesClient(\n",
+ " client_options={\"api_key\": gmp_api_key}\n",
+ " )\n",
+ " except NameError:\n",
+ " raise NameError(\"The 'gmp_api_key' variable is not defined. Please run the Setup cell first.\")\n",
+ "\n",
+ " if places_client:\n",
+ " # Loop through the list of Place IDs and fetch details.\n",
+ " place_details_list = []\n",
+ " fields_to_request = \"formattedAddress,location,displayName,googleMapsUri\"\n",
+ "\n",
+ " total_ids = len(place_ids_to_process)\n",
+ " print(f\"\\nFetching details for {total_ids} unique Place IDs...\")\n",
+ "\n",
+ " for i, place_id in enumerate(place_ids_to_process):\n",
+ " if i > 0 and i % 50 == 0:\n",
+ " print(f\" ...processed {i} of {total_ids} IDs.\")\n",
+ "\n",
+ " try:\n",
+ " request = {\"name\": f\"places/{place_id}\"}\n",
+ " response = places_client.get_place(\n",
+ " request=request,\n",
+ " metadata=[(\"x-goog-fieldmask\", fields_to_request)]\n",
+ " )\n",
+ "\n",
+ " place_details_list.append({\n",
+ " \"Name\": response.display_name.text,\n",
+ " \"Address\": response.formatted_address,\n",
+ " \"Place ID\": place_id,\n",
+ " \"Latitude\": response.location.latitude,\n",
+ " \"Longitude\": response.location.longitude,\n",
+ " \"Google Maps URI\": response.google_maps_uri\n",
+ " })\n",
+ " except exceptions.GoogleAPICallError as e:\n",
+ " print(f\" - Warning: Could not fetch details for Place ID '{place_id}': {e.message}\")\n",
+ "\n",
+ " # Convert the list of details into a pandas DataFrame.\n",
+ " if place_details_list:\n",
+ " print(f\"\\nSuccessfully fetched details for {len(place_details_list)} places.\")\n",
+ " details_df = pd.DataFrame(place_details_list)\n",
+ "\n",
+ " # Define which columns we want to show in the summary table.\n",
+ " columns_to_display = [\"Name\", \"Address\", \"Place ID\"]\n",
+ "\n",
+ " print(\"Here is a sample of the retrieved data (Google Maps URI is hidden):\")\n",
+ " # Display only the selected columns from the head of the DataFrame.\n",
+ " display(details_df[columns_to_display].head())\n",
+ " else:\n",
+ " print(\"\\nCould not fetch details for any of the sample Place IDs.\")\n",
+ " details_df = pd.DataFrame()\n",
+ "\n",
+ "else:\n",
+ " print(\"The 'place_ids_to_process' list does not exist or is empty. \"\n",
+ " \"Please run the previous cell to generate the list of IDs first.\")"
+ ],
+ "metadata": {
+ "id": "wcSoHDb81zE_"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Create the Combined Map\n",
+ "\n",
+ "This is the final step where we bring all our analysis together into a single visualization.\n",
+ "\n",
+ "The code below first creates the restaurant density heatmap, coloring each H3 cell based on the number of qualifying restaurants. Then, it iterates through the restaurant data we fetched in the previous step and overlays a pin for each restaurant onto the map.\n",
+ "\n",
+ "The result is a layered map that shows both the high-level \"hotspots\" and the ground-truth, individual places that make up those dense areas.\n",
+ "\n",
+ "**Note:** This cell uses [2D Map Tiles](https://developers.google.com/maps/documentation/tile/2d-tiles-overview). Please review the documentation for pricing."
+ ],
+ "metadata": {
+ "id": "eFE1gip-8fUd"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Check if required DataFrames exist\n",
+ "if 'gdf_restaurants_in_london' in locals() and not gdf_restaurants_in_london.empty and 'details_df' in locals() and not details_df.empty:\n",
+ "\n",
+ " restaurant_tooltip_cols = ['h3_cell_index', 'count']\n",
+ "\n",
+ " # 1. Generate base choropleth map\n",
+ " print(\"Generating base choropleth map...\")\n",
+ " combined_map = gdf_restaurants_in_london.explore(\n",
+ " column=\"count\",\n",
+ " cmap=\"YlOrRd\",\n",
+ " scheme=\"NaturalBreaks\",\n",
+ " tooltip=restaurant_tooltip_cols,\n",
+ " popup=True,\n",
+ " tiles=google_tiles_url, # <--- Injected from Setup Cell\n",
+ " attr=google_attribution, # <--- Injected from Setup Cell\n",
+ " style_kwds={\"stroke\": True, \"color\": \"black\", \"weight\": 0.2, \"fillOpacity\": 0.7}\n",
+ " )\n",
+ "\n",
+ " # 2. Iterate and add markers (Logic unchanged)\n",
+ " print(f\"Adding {len(details_df)} individual restaurant markers...\")\n",
+ " for index, row in details_df.iterrows():\n",
+ " lat, lon = row['Latitude'], row['Longitude']\n",
+ "\n",
+ " if pd.isna(lat) or pd.isna(lon): continue\n",
+ "\n",
+ " name = str(row['Name']).replace('`', \"'\") if pd.notna(row['Name']) else \"Unnamed Place\"\n",
+ " address = str(row['Address']) if pd.notna(row['Address']) else \"\"\n",
+ " uri = str(row['Google Maps URI']) if pd.notna(row['Google Maps URI']) else \"#\"\n",
+ "\n",
+ " popup_html = f\"\"\"\n",
+ " {name} \n",
+ " \n",
+ " {address}
\n",
+ " View on Google Maps\n",
+ " \"\"\"\n",
+ "\n",
+ " folium.Marker(\n",
+ " location=[lat, lon],\n",
+ " tooltip=name,\n",
+ " popup=folium.Popup(popup_html, max_width=300),\n",
+ " icon=folium.Icon(color='blue', icon='utensils', prefix='fa')\n",
+ " ).add_to(combined_map)\n",
+ "\n",
+ " # 3. Inject the Google Logo\n",
+ " combined_map.get_root().html.add_child(folium.Element(google_logo_html))\n",
+ "\n",
+ " # 4. Display\n",
+ " print(\"Displaying combined map.\")\n",
+ " display(combined_map)\n",
+ "\n",
+ "else:\n",
+ " print(\"Required DataFrames not found. Ensure previous cells ran successfully.\")"
+ ],
+ "metadata": {
+ "id": "TfH22zQ1uJkt"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/README.md b/places_insights/places-insights-demo/README.md
new file mode 100644
index 0000000..ab6bbf0
--- /dev/null
+++ b/places_insights/places-insights-demo/README.md
@@ -0,0 +1,132 @@
+# Places Insights Demo Application
+
+This is a client-side web application that demonstrates how to query and visualize Google Places Insights data. It allows users to define geographic search areas, apply a variety of filters, and see aggregated results from Google BigQuery displayed on a Google Map.
+
+The application is built entirely with HTML, CSS, and JavaScript, using the Google Maps Platform JavaScript API for mapping, Deck.gl for H3 heatmap visualizations, and Google Identity Services for client-side OAuth 2.0 authentication.
+
+---
+
+## Prerequisites
+
+Before you can run this application, you must have a Google Cloud project with billing enabled and ensure the following are set up:
+
+### 1. Places Insights Subscription
+
+This demo queries the Places Insights datasets in BigQuery. You must subscribe to these datasets in the Google Cloud Marketplace for the countries you wish to query.
+
+* **Action:** Visit the [Places Insights product page](https://developers.google.com/maps/documentation/placesinsights) and follow the instructions to subscribe to the datasets for your project.
+
+### 2. Enabled APIs
+
+Ensure the following APIs are enabled in your Google Cloud project:
+
+* **BigQuery API** (for running the queries)
+* **Maps JavaScript API** (for displaying the map)
+* **Geocoding API** (for centering the map on countries/regions)
+* **Routes API** (for the "Route Search" feature)
+* **Places API (New)** (for the Place Autocomplete web components and Place Details)
+* **Places UI Kit API** (Required for the `` component used in the H3 Function demo)
+
+### 3. IAM Permissions
+
+The Google account you authorize with must have the appropriate IAM permissions in your Cloud project to run BigQuery jobs. At a minimum, this typically includes:
+
+* `BigQuery Job User`
+* `BigQuery Resource Viewer`
+
+---
+
+## Setup
+
+Follow these steps to configure and run the application locally.
+
+### 1. Create an OAuth 2.0 Client ID
+
+This application uses client-side OAuth 2.0 to authorize users to run BigQuery queries on their own behalf.
+
+1. In the Google Cloud Console, navigate to **APIs & Services > Credentials**.
+2. Click **+ CREATE CREDENTIALS** and select **OAuth client ID**.
+3. For "Application type", select **Web application**.
+4. Give it a name (e.g., "Places Insights Demo").
+5. Under **Authorized JavaScript origins**, click **+ ADD URI**.
+6. Enter the origin for your local development server. For most servers, this is `http://localhost:8000`.
+7. Click **CREATE**.
+8. Copy the **Your Client ID** value. You will need this in the next step.
+
+### 2. Create a Google Maps Platform API Key
+
+1. On the same **Credentials** page, click **+ CREATE CREDENTIALS** and select **API key**.
+2. Copy the generated API key.
+3. **Important:** For security in a production environment, you should restrict this key to your website's domain and ensure it only has access to the APIs listed in the Prerequisites section.
+
+### 3. Configure the Application
+
+1. In the project directory, find the file named `config.js.template` (or create a new `config.js` file).
+2. **Rename** this file to `config.js`.
+3. Open `config.js` and fill in the placeholder values with your project-specific credentials:
+
+ ```javascript
+ window.APP_CONFIG = {
+ // Your Google Cloud Project ID
+ GCP_PROJECT_ID: 'YOUR_GCP_PROJECT_ID',
+
+ // The OAuth 2.0 Client ID you created in Step 1
+ OAUTH_CLIENT_ID: 'YOUR_OAUTH_CLIENT_ID.apps.googleusercontent.com',
+
+ // The Google Maps Platform API Key you created in Step 2
+ MAPS_API_KEY: 'YOUR_MAPS_API_KEY',
+
+ /**
+ * Defines which dataset to query.
+ * Options: 'FULL' or 'SAMPLE'
+ * - 'FULL': Queries the full country datasets (e.g., places_insights___us.places).
+ * - 'SAMPLE': Queries the city sample datasets (e.g., places_insights___us___sample.places_sample).
+ */
+ DATASET: 'FULL',
+ };
+ ```
+
+4. **Dataset Selection:** Set the `DATASET` parameter to `'SAMPLE'` if you are using the [sample datasets](https://developers.google.com/maps/documentation/placesinsights/cloud-setup#sample_data), or `'FULL'` if you have subscribed to the [full datasets](https://developers.google.com/maps/documentation/placesinsights/cloud-setup#full_data).
+5. **Security Note:** The `config.js` file **must not be committed to version control**.
+
+### 4. Run a Local Server
+
+Because of browser security policies related to OAuth 2.0, you cannot run this application by opening the `index.html` file directly. You must serve it from a local web server.
+
+1. Open a terminal in the project's root directory.
+2. If you have Python 3 installed, you can run a simple server with the command:
+ ```sh
+ python3 -m http.server 8000
+ ```
+3. Open your web browser and navigate to `http://localhost:8000`.
+
+---
+
+## How to Use the Application
+
+For a detailed walkthrough, click the **Help** button in the application's sidebar.
+
+### Quick Start
+
+1. **Select a Location:** Choose a country or city you have subscribed to in Places Insights.
+2. **Authorize:** Sign in with your Google account to enable querying.
+3. **Choose a Demo Type:**
+ * **Circle Search:** Click on the map to define a search radius.
+ * **Polygon Search:** Draw a custom shape on the map or paste a WKT string.
+ * **Region Search:** Search by administrative names like "London" or "California". You can add multiple regions to search at once.
+ * **Route Search:** Select an origin and destination to search along a calculated driving route.
+ * **Places Count Per H3 (Function):** Uses server-side BigQuery functions for high-performance density mapping. This mode supports **low counts (0-4)** and **sample place markers**.
+4. **Apply Filters:** Narrow your search using the collapsible filter sections:
+ * **Place Types:** Select types and optionally check **"Match Primary Type Only"** for stricter filtering.
+ * **Attributes:** Filter by Price Level, Rating, Business Status (Operational/Closed), and various amenities (e.g., "Offers Delivery").
+ * **Opening Hours:** Filter by day and time (Standard modes only).
+ * **Brands:** Filter by brand name or category (US Standard mode only).
+5. **Visualize:**
+ * Leave **Show H3 Density Map** unchecked for simple aggregate counts (Standard modes only).
+ * Check the box to visualize the results as a color-coded heatmap of hexagonal cells. You can use the **H3 Resolution slider** (supporting up to resolution 11) to adjust the granularity of the cells.
+6. **Run Search:** Click the "Run Search" button to execute the query and see the results on the map.
+
+### Interactive Features (H3 Function Mode)
+When running the **Places Count Per H3** demo:
+1. **Click a Hexagon:** Click on any colored H3 cell on the map. This will load up to 20 sample markers for places within that cell.
+2. **View Details:** Click on any of the yellow markers to open a **Place Details Card** containing rich information (photos, reviews, opening hours) powered by the Places UI Kit.
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/auth.js b/places_insights/places-insights-demo/auth.js
new file mode 100644
index 0000000..27a1553
--- /dev/null
+++ b/places_insights/places-insights-demo/auth.js
@@ -0,0 +1,84 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- AUTHENTICATION ---
+
+/**
+ * Initializes the Google Identity Services client. This is called once on page load.
+ */
+function initializeIdentityServices() {
+ if (!OAUTH_CLIENT_ID || !GCP_PROJECT_ID) {
+ updateStatus('Configuration missing. Please set up config.js.', 'error');
+ return;
+ }
+ if (typeof google === 'undefined' || !google.accounts) {
+ updateStatus('Google Identity Services failed to load.', 'error');
+ console.error('GSI client library not loaded or initialized.');
+ return;
+ }
+ try {
+ // Initialize the token client for handling OAuth 2.0 flow.
+ tokenClient = google.accounts.oauth2.initTokenClient({
+ client_id: OAUTH_CLIENT_ID,
+ scope: BQ_SCOPES,
+ callback: () => {}, // Callback is handled by the promise in ensureAccessToken.
+ });
+ } catch (error) {
+ updateStatus('Could not initialize Google Identity Services.', 'error');
+ console.error(error);
+ }
+}
+
+/**
+ * Handles clicks on the main authorization button (sign-in or sign-out).
+ */
+function handleAuthClick() {
+ if (userSignedIn) {
+ // If the user is signed in, revoke the token and sign out.
+ if (accessToken) {
+ google.accounts.oauth2.revoke(accessToken, () => {});
+ }
+ accessToken = null;
+ resetSignedInUi();
+ } else {
+ // If the user is signed out, start the sign-in process.
+ ensureAccessToken({ prompt: 'consent' });
+ }
+}
+
+/**
+ * Gets a valid access token, prompting the user for consent if necessary.
+ * @param {object} options - Options for the token request (e.g., { prompt: 'consent' }).
+ * @returns {Promise} A promise that resolves with the access token.
+ */
+function ensureAccessToken(options = { prompt: '' }) {
+ if (accessToken) return Promise.resolve(accessToken);
+
+ return new Promise((resolve, reject) => {
+ if (!tokenClient) {
+ return reject(new Error('Identity client not initialized.'));
+ }
+ // Define the callback for the token request.
+ tokenClient.callback = (tokenResponse) => {
+ if (tokenResponse.error) {
+ resetSignedInUi();
+ return reject(new Error(tokenResponse.error_description || 'Authorization failed.'));
+ }
+ accessToken = tokenResponse.access_token;
+ setSignedInUi();
+ resolve(accessToken);
+ };
+ tokenClient.requestAccessToken(options);
+ });
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/config.js.template b/places_insights/places-insights-demo/config.js.template
new file mode 100644
index 0000000..b90b8e7
--- /dev/null
+++ b/places_insights/places-insights-demo/config.js.template
@@ -0,0 +1,33 @@
+// This file contains the client-side configuration for connecting to Google Cloud.
+// RENAME this file to "config.js" and fill in your actual credentials.
+// IMPORTANT: config.js is ignored by Git to keep your credentials private.
+
+window.APP_CONFIG = {
+ /**
+ * Your Google Cloud Project ID.
+ * This is the project where BigQuery API calls will be billed.
+ */
+ GCP_PROJECT_ID: 'YOUR_GCP_PROJECT_ID',
+
+ /**
+ * Your OAuth 2.0 Client ID for a Web Application.
+ * This ID is used to authenticate users and get their consent to run queries on their behalf.
+ * Ensure your app's origin (e.g., http://localhost:8000) is in the "Authorized JavaScript origins".
+ */
+ OAUTH_CLIENT_ID: 'YOUR_OAUTH_CLIENT_ID.apps.googleusercontent.com',
+
+ /**
+ * Your Google Maps Platform API Key.
+ * This is used to display the map and call the Routes API.
+ * Ensure it has "Maps JavaScript API", "Geocoding API", and "Routes API" enabled.
+ */
+ MAPS_API_KEY: 'YOUR_MAPS_API_KEY',
+
+ /**
+ * Defines which dataset to query.
+ * Options: 'FULL' or 'SAMPLE'
+ * - 'FULL': Queries the full country datasets (e.g., places_insights___us.places).
+ * - 'SAMPLE': Queries the city sample datasets (e.g., places_insights___us___sample.places_sample).
+ */
+ DATASET: 'FULL',
+};
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/display.js b/places_insights/places-insights-demo/display.js
new file mode 100644
index 0000000..69d2af2
--- /dev/null
+++ b/places_insights/places-insights-demo/display.js
@@ -0,0 +1,252 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- DISPLAY & DATA HELPERS ---
+
+/**
+ * Displays the result of a simple aggregate query in a Google Maps InfoWindow.
+ * This function is now capable of handling multiple rows for brand queries.
+ * @param {object} bqResult The JSON response from the BigQuery API.
+ * @param {google.maps.LatLng} center The location to anchor the InfoWindow.
+ */
+function displayResultsOnMap(bqResult, center) {
+ if (infoWindow) infoWindow.close();
+
+ // Handle cases where the query returns no rows (e.g., count < 5).
+ if (!bqResult.rows || bqResult.rows.length === 0) {
+ infoWindow = new google.maps.InfoWindow({
+ content: "
Query returned no results. (Note: Aggregations may require a minimum count to appear).
"
+ });
+ infoWindow.setPosition(center);
+ infoWindow.open(map);
+ return;
+ }
+
+ const schema = bqResult.schema.fields;
+
+ // Build an HTML string from all rows in the result.
+ let content = '
';
+
+ infoWindow = new google.maps.InfoWindow({ content });
+ infoWindow.setPosition(center);
+ infoWindow.open(map);
+}
+
+/**
+ * Displays the results of an H3 density query as a deck.gl heatmap layer.
+ * This version processes parallel arrays of h3 indices and counts from a single-row ARRAY_AGG result.
+ * @param {object} bqResult The JSON response from the BigQuery API.
+ */
+function displayH3Results(bqResult) {
+ const tooltip = document.getElementById('tooltip');
+
+ // With ARRAY_AGG, we expect exactly one row.
+ if (!bqResult.rows || bqResult.rows.length === 0) {
+ updateStatus("Query returned no results. Try a larger search area or different filters.", 'info');
+ return;
+ }
+
+ const rowData = bqResult.rows[0].f;
+ const indices = rowData[0].v; // Array of h3_index objects: [{v: '...'}, {v: '...'}]
+ const counts = rowData[1].v; // Array of count objects: [{v: '...'}, {v: '...'}]
+
+ // If the first index is null or the array is empty, it means the ARRAY_AGG was empty.
+ if (!indices || indices.length === 0 || indices[0].v === null) {
+ updateStatus("Query returned no results. Try a larger search area or different filters.", 'info');
+ return;
+ }
+
+ const h3Data = [];
+ for (let i = 0; i < indices.length; i++) {
+ h3Data.push({
+ h3_index: indices[i].v,
+ count: parseInt(counts[i].v, 10),
+ });
+ }
+
+ const maxCount = Math.max(...h3Data.map(d => d.count));
+
+ // Create a new deck.gl GeoJsonLayer for the H3 cells.
+ const layer = new deck.GeoJsonLayer({
+ id: 'h3-layer',
+ data: h3Data.map(d => {
+ const boundary = h3.cellToBoundary(d.h3_index);
+ const coordinates = boundary.map(p => [p[1], p[0]]); // Swap to [lng, lat]
+ coordinates.push(coordinates[0]); // Close the polygon ring
+
+ return {
+ type: 'Feature',
+ geometry: {
+ type: 'Polygon',
+ coordinates: [coordinates]
+ },
+ properties: { count: d.count }
+ };
+ }),
+ wrapLongitude: true,
+ pickable: true,
+ stroked: true,
+ filled: true,
+ lineWidthMinPixels: 1,
+ getFillColor: d => colorScale(d.properties.count, maxCount),
+ getLineColor: [255, 255, 255, 100],
+ onHover: info => {
+ isHoveringH3 = !!info.object; // Track hover state to prevent map click conflicts
+
+ if (info.object) {
+ tooltip.style.display = 'block';
+ tooltip.style.left = `${info.x}px`;
+ tooltip.style.top = `${info.y}px`;
+ tooltip.innerHTML = `Count: ${info.object.properties.count}`;
+ } else {
+ tooltip.style.display = 'none';
+ }
+ }
+ });
+
+ deckglOverlay.setProps({ layers: [layer] });
+}
+
+
+/**
+ * Parses a WKT Polygon string (e.g., "POLYGON((lng lat, ...))") into a GeoJSON coordinates array.
+ * Uses Regex to robustly handle optional spaces after POLYGON.
+ * @param {string} wkt The WKT string.
+ * @returns {Array} Array of [lng, lat] pairs.
+ */
+function parseWktPolygon(wkt) {
+ if (!wkt) return [];
+
+ // Match POLYGON((...)) or POLYGON ((...)) case-insensitive
+ const match = wkt.match(/POLYGON\s*\(\((.*)\)\)/i);
+
+ if (!match || !match[1]) {
+ console.error("Failed to parse WKT:", wkt);
+ return [];
+ }
+
+ try {
+ const content = match[1];
+ return [content.split(',').map(pair => {
+ const [lng, lat] = pair.trim().split(/\s+/); // Split by any whitespace
+ return [parseFloat(lng), parseFloat(lat)];
+ })];
+ } catch (e) {
+ console.error("Failed to parse WKT coordinates:", wkt, e);
+ return [];
+ }
+}
+
+/**
+ * Displays results from the PLACES_COUNT_PER_H3 function.
+ * Uses the server-side 'geography' geometry directly.
+ * @param {object} bqResult
+ */
+function displayH3FunctionResults(bqResult) {
+ const tooltip = document.getElementById('tooltip');
+
+ if (!bqResult.rows || bqResult.rows.length === 0) {
+ updateStatus("Query returned no results.", 'info');
+ return;
+ }
+
+ // Map rows to GeoJSON features
+ const features = bqResult.rows.map(row => {
+ const cols = row.f;
+ // Schema assumed: h3_cell_index (0), geography (1), count (2), place_ids (3)
+ const wkt = cols[1].v;
+ const count = parseInt(cols[2].v, 10);
+
+ // Parse place_ids. BigQuery returns arrays as {v: [{v: 'id1'}, {v: 'id2'}]}
+ let placeIds = [];
+ if (cols[3] && cols[3].v) {
+ placeIds = cols[3].v.map(item => item.v);
+ }
+
+ return {
+ type: 'Feature',
+ geometry: {
+ type: 'Polygon',
+ coordinates: parseWktPolygon(wkt)
+ },
+ properties: {
+ count: count,
+ place_ids: placeIds
+ }
+ };
+ });
+
+ const maxCount = Math.max(...features.map(f => f.properties.count));
+
+ const layer = new deck.GeoJsonLayer({
+ id: 'h3-func-layer',
+ data: features,
+ pickable: true,
+ stroked: true,
+ filled: true,
+ lineWidthMinPixels: 1,
+ getFillColor: d => colorScale(d.properties.count, maxCount),
+ getLineColor: [255, 255, 255, 150],
+ onHover: info => {
+ isHoveringH3 = !!info.object; // Track hover state
+
+ if (info.object) {
+ tooltip.style.display = 'block';
+ tooltip.style.left = `${info.x}px`;
+ tooltip.style.top = `${info.y}px`;
+ let html = `Count: ${info.object.properties.count}`;
+ if (info.object.properties.place_ids && info.object.properties.place_ids.length > 0) {
+ html += ` Click to show sample places`;
+ }
+ tooltip.innerHTML = html;
+ } else {
+ tooltip.style.display = 'none';
+ }
+ },
+ onClick: info => {
+ if (info.object && info.object.properties.place_ids) {
+ loadPlaceMarkers(info.object.properties.place_ids);
+ }
+ }
+ });
+
+ deckglOverlay.setProps({ layers: [layer] });
+}
+
+/**
+ * Calculates a color for a heatmap cell based on its value relative to the max value.
+ * @param {number} value The count for the current cell.
+ * @param {number} max The maximum count in the dataset.
+ * @returns {Array} An RGBA color array.
+ */
+function colorScale(value, max) {
+ const percentage = Math.sqrt(value / max); // Use sqrt for better visual distribution of colors.
+ const r = 255;
+ const g = 255 - (200 * percentage);
+ const b = 0;
+ return [r, g, b, 180]; // Yellow to Red, with some transparency
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/help.js b/places_insights/places-insights-demo/help.js
new file mode 100644
index 0000000..a94caea
--- /dev/null
+++ b/places_insights/places-insights-demo/help.js
@@ -0,0 +1,153 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * Generates the HTML content for the User Guide modal dynamically based on the configuration.
+ * @returns {string} HTML string for the guide.
+ */
+function generateGuideHtml() {
+ const isSample = DATASET === 'SAMPLE';
+ const locationType = isSample ? 'City' : 'Country';
+ const locationTypeLower = locationType.toLowerCase();
+
+ // Example dataset name for explanation
+ const exampleLocation = isSample ? 'London, United Kingdom' : 'United Kingdom';
+ const exampleDataset = isSample ? 'places_insights___gb___sample' : 'places_insights___gb';
+
+ return `
+
1. Introduction
+
+ Welcome to the Places Insights Demo! This interactive web application is designed to help you explore and visualize Google's rich geospatial data without needing to write any code. Using a simple interface, you can define search areas on a map, apply powerful filters, and get aggregated insights directly from Google BigQuery, displayed visually on Google Maps.
+
+
+ This guide will walk you through all the features of the application, from getting started to running advanced queries.
+
+
+
2. Getting Started
+
+ Before you can run a query, there are two initial steps you must complete.
+
+
Step 1: Select a ${locationType}
+
+ When you first load the application, you will be greeted by a modal window prompting you to select a ${locationTypeLower}.
+
+
+
Why is this important? The ${locationTypeLower} you choose determines which BigQuery dataset your queries will run against (e.g., selecting "${exampleLocation}" targets the ${exampleDataset} dataset).
+
Action: Choose a ${locationTypeLower} from the dropdown menu and click Show Map.
+
+
+
Step 2: Authorize with Google
+
+ Once the map loads, you will see a control sidebar on the left. To run queries, you must grant the application permission to use your Google account.
+
+
+
Why is this important? This is a purely client-side application. It runs queries in BigQuery on your behalf, and the costs associated with those queries are billed to your Google Cloud project. Authorization is required to securely link your actions in the browser to your BigQuery account.
+
Action: Click the green Authorize with Google button and follow the prompts in the Google sign-in window. Once successful, the button will change to Sign Out and the status message will turn green.
+
+
+
3. Defining Your Search Area (Demo Types)
+
+ The "Demo Type" dropdown is the primary way to define the geographic area for your search.
+
+
A. Circle Search
+
+ This is the simplest search method, ideal for analyzing the area around a specific point.
+
+
+
Select Circle Search from the "Demo Type" dropdown.
+
Set a Radius (meters) in the input box.
+
Click anywhere on the map. A blue circle will appear, defining your search area. Clicking a new location will move the circle.
+
+
+
B. Polygon Search
+
+ This mode allows you to define a custom, multi-sided search area. You can do this in two ways:
+
+
+
By Drawing:
+
+
Select Polygon Search from the "Demo Type" dropdown.
+
Click the Start Drawing button. Your cursor will turn into a crosshair.
+
Click on the map to place the corners (vertices) of your polygon.
+
When you are done, click the Finish Drawing button. An editable blue polygon will appear. You can drag the corners or edges to refine the shape.
+
Click Clear Polygon to start over.
+
+
+
By Pasting WKT:
+
+
If you have a polygon in Well-Known Text (WKT) format (e.g., POLYGON((lng lat, ...))), you can paste it directly into the Polygon (WKT) text area. The map will automatically draw the shape.
+
Conversely, as you draw or edit a polygon on the map, its WKT representation will automatically appear in the text area.
+
+
+
+
+
C. Region Search
+
+ This powerful mode allows you to search by administrative regions like cities, states, or postal codes using Place Autocomplete.
+
+
+
Select Region Search from the "Demo Type" dropdown.
+
Start typing a region name in the Region input box (e.g., "Manhattan").
+
Select the correct region from the dropdown suggestions. This guarantees accurate results by using the exact Place ID.
+
(Optional) Add Multiple Regions: To search across several regions at once, continue searching and adding more places to the list.
+
+
+
D. Route Search
+
+ This mode is designed for analyzing a corridor along a driving route.
+
+
+
Select Route Search from the "Demo Type" dropdown.
+
In the Origin input, start typing an address or place name and select a location from the autocomplete suggestions.
+
Do the same for the Destination input.
+
Set a Radius (meters) to define the buffer around the route.
+
+
+
E. Places Count Per H3 (Function)
+
+ This advanced mode uses BigQuery's server-side functions to generate high-performance density maps.
+
+
+
Low Counts: Unlike standard aggregation, this mode can return counts lower than 5 (including 0).
+
Sample Places: This mode returns sample Place IDs. Click on any hexagon on the map to load markers for up to 20 sample places in that cell. Clicking a marker will reveal full place details.
+
Limitations: Brand filters and Opening Hours are not supported in this mode.
+
+
+
4. Refining Your Search with Filters
+
+ The filter sections are collapsible; click on any filter title to expand it.
+
+
+
Included Place Types: Start typing a place category (e.g., restaurant, park) and click a suggestion to add it as a tag.
+
Match Primary Type Only: Check this box to search strictly for places where the selected type is their primary classification (e.g., finding a "Restaurant" that is primarily a restaurant, not a hotel with a restaurant).
+
Business Status: Filter places by their operational status (Operational, Closed Temporarily, Closed Permanently, or Any). Default is Operational.
+
Attribute Filters: Filter by Price Level, set min/max ratings, or select checkboxes for amenities (e.g., "Offers Delivery").
+
Opening Hours: Select a Day of Week and time window (Not available in H3 Function mode).
+
Brand Filters (US Only): Filter by Brand Name (Not available in H3 Function mode).
+
+
+
5. Choosing Your Visualization
+
+
Simple Count (Default): Results are displayed as numbers in a pop-up window.
+
H3 Density Map: Check the Show H3 Density Map box to see a heatmap. Use the H3 Resolution slider (up to resolution 11) to change the cell size. (This is always enabled in H3 Function mode).
+
+
+
6. Running a Query and Managing the App
+
+
Run Search: Click the blue Run Search button to execute the query.
+
View/Copy Query: After running a query, click View Query to see the SQL code. You can copy this SQL to run it directly in the BigQuery console.
+
Change ${locationType}: Click Change ${locationType} to restart with a different dataset.
+
+ `;
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/index.html b/places_insights/places-insights-demo/index.html
new file mode 100644
index 0000000..a7e0daf
--- /dev/null
+++ b/places_insights/places-insights-demo/index.html
@@ -0,0 +1,261 @@
+
+
+
+
+
+ Places Insights Demo
+
+
+
+
+
+
+
Select a Country for the Demo
+
Places Insights data is available for the following locations.
+
+
+
+
+
+
+
+
+
+ ×
+
User Guide
+
+
Loading...
+
+
+
+
+
+
+
+ ×
+
Last Executed SQL Query
+
+
+
+
+
+
+
+
+
+
+
+
Places Insights
+
+
+
+
+
+
+
+
Please authorize to run a query.
+
+
+
+
+
+
+
+
+
+
Click on the map to set the search center.
+
+
+
+
+
+
+
+
Define a search area by drawing or pasting WKT.
+
+
+
+
+
+
+
+
+
+
+
+
+
Search for a region (e.g., city, state, zip code).
+
+
+
+
+
+
+
+
+
Select an origin and destination for the route.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/main.js b/places_insights/places-insights-demo/main.js
new file mode 100644
index 0000000..16cb5cf
--- /dev/null
+++ b/places_insights/places-insights-demo/main.js
@@ -0,0 +1,369 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- MAIN APPLICATION ENTRY POINT ---
+
+/**
+ * Hides the "View Query" button and clears the last executed query state.
+ * This is called whenever a search parameter is changed.
+ */
+function invalidateQueryState() {
+ document.getElementById('view-query-btn').classList.add('hidden');
+ lastExecutedQuery = null;
+}
+
+/**
+ * Populates the country/city selection dropdown based on the configuration mode.
+ */
+function populateLocationSelect() {
+ const select = document.getElementById("country-select");
+ const title = document.getElementById("selector-title");
+ const changeBtn = document.getElementById("change-country-btn");
+
+ // Clear existing options (keep the default disabled one)
+ while (select.options.length > 1) {
+ select.remove(1);
+ }
+
+ if (DATASET === 'SAMPLE') {
+ title.textContent = "Select a City for the Demo";
+ if (changeBtn) changeBtn.textContent = "Change City";
+
+ Object.keys(SAMPLE_LOCATIONS).sort().forEach(location => {
+ const option = document.createElement("option");
+ option.value = location;
+ option.textContent = location;
+ select.appendChild(option);
+ });
+ } else {
+ // FULL dataset mode
+ title.textContent = "Select a Country for the Demo";
+ if (changeBtn) changeBtn.textContent = "Change Country";
+
+ Object.keys(COUNTRY_CODES).sort().forEach(location => {
+ const option = document.createElement("option");
+ option.value = location;
+ option.textContent = location;
+ select.appendChild(option);
+ });
+ }
+}
+
+/**
+ * Handles the initial start of the demo after a location is selected from the modal.
+ */
+function handleStartDemo() {
+ selectedCountryName = document.getElementById("country-select").value;
+ if (selectedCountryName) {
+ document.getElementById("country-selector-modal").classList.add("hidden");
+ document.getElementById("sidebar").classList.remove("hidden");
+
+ const brandFilters = document.getElementById('brand-filters');
+ // Logic for Brand Filters visibility
+ let isUS = false;
+ let countryCode;
+ if (DATASET === 'SAMPLE') {
+ countryCode = SAMPLE_LOCATIONS[selectedCountryName];
+ isUS = countryCode === 'us';
+ } else {
+ countryCode = COUNTRY_CODES[selectedCountryName];
+ isUS = selectedCountryName === 'United States';
+ }
+
+ if (isUS) {
+ brandFilters.classList.remove('hidden');
+ } else {
+ brandFilters.classList.add('hidden');
+ }
+
+ // Restrict Region Autocomplete to the active country
+ if (window.regionAutocomplete) {
+ window.regionAutocomplete.includedRegionCodes = [countryCode];
+ }
+
+ startDemo(selectedCountryName);
+ } else {
+ alert("Please select a location to begin.");
+ }
+}
+
+/**
+ * Handles clicks on the "Change Country/City" button.
+ */
+function handleChangeCountryClick() {
+ document.getElementById('country-selector-modal').classList.remove('hidden');
+ document.getElementById('sidebar').classList.add('hidden');
+ resetSidebarUI();
+ clearAllOverlays(true);
+ invalidateQueryState();
+}
+
+/**
+ * Handles clicks on the "+" button to add a brand to the list.
+ */
+function handleAddBrandClick() {
+ const brandInput = document.getElementById('brand-name-input');
+ const brandList = document.getElementById('selected-brands-list');
+ const brandName = brandInput.value.trim();
+
+ if (brandName) {
+ addTag(brandName, brandList); // Keep original case for brands
+ brandInput.value = '';
+ brandInput.focus();
+ invalidateQueryState();
+ }
+}
+
+/**
+ * Generates the help HTML via help.js and displays the modal.
+ */
+function showHelpModal() {
+ const guideModal = document.getElementById('guide-modal');
+ const guideContent = document.getElementById('guide-content');
+
+ // Use the function from help.js to generate fresh HTML based on current config
+ try {
+ guideContent.innerHTML = generateGuideHtml();
+ } catch (error) {
+ console.error(error);
+ guideContent.innerHTML = '
Error: Could not load the user guide.
';
+ }
+
+ guideModal.classList.remove('hidden');
+}
+
+/**
+ * Hides the specified modal.
+ * @param {string} modalId The ID of the modal to hide.
+ */
+function hideModal(modalId) {
+ document.getElementById(modalId).classList.add('hidden');
+}
+
+/**
+ * Displays the last executed query in a modal.
+ */
+function showQueryModal() {
+ if (lastExecutedQuery) {
+ document.getElementById('query-content').textContent = lastExecutedQuery;
+ document.getElementById('query-modal').classList.remove('hidden');
+ } else {
+ alert("No valid query has been executed yet.");
+ }
+}
+
+/**
+ * Copies the displayed SQL query to the clipboard.
+ */
+function handleCopyQueryClick() {
+ const queryText = document.getElementById('query-content').textContent;
+ const copyButton = document.getElementById('copy-query-btn');
+
+ navigator.clipboard.writeText(queryText).then(() => {
+ copyButton.textContent = 'Copied!';
+ setTimeout(() => {
+ copyButton.textContent = 'Copy SQL';
+ }, 2000); // Revert text after 2 seconds
+ }).catch(err => {
+ console.error('Failed to copy text: ', err);
+ alert('Failed to copy query to clipboard.');
+ });
+}
+
+
+/**
+ * Initializes the Place Autocomplete (New) web components for Region search.
+ */
+async function initializeRegionSearch() {
+ const { PlaceAutocompleteElement } = await google.maps.importLibrary("places");
+ const container = document.getElementById('region-autocomplete-container');
+
+ const autocomplete = new PlaceAutocompleteElement();
+ container.appendChild(autocomplete);
+
+ autocomplete.addEventListener('gmp-select', async ({ placePrediction }) => {
+ if (!placePrediction) return;
+ invalidateQueryState();
+
+ const place = placePrediction.toPlace();
+ // Request the viewport field to properly frame the region on the map
+ await place.fetchFields({ fields: ['id', 'displayName', 'types', 'location', 'viewport'] });
+
+ let targetColumn = null;
+ if (place.types) {
+ for (const type of place.types) {
+ if (REGION_TYPE_TO_BQ_COLUMN[type]) {
+ targetColumn = REGION_TYPE_TO_BQ_COLUMN[type];
+ break;
+ }
+ }
+ }
+
+ if (!targetColumn) {
+ alert(`The selected place type is not supported as a search region. Please select a valid city, state, or neighborhood.`);
+ autocomplete.inputValue = '';
+ return;
+ }
+
+ if (place.location || place.viewport) {
+ addRegionTag(place.displayName, place.id, targetColumn, place.location, place.viewport);
+ } else {
+ alert("Could not retrieve location for this place.");
+ }
+
+ autocomplete.inputValue = '';
+ });
+
+ window.regionAutocomplete = autocomplete;
+}
+
+/**
+ * Initializes the Place Autocomplete (New) web components for route search.
+ */
+async function initializeRouteSearch() {
+ const { PlaceAutocompleteElement } = await google.maps.importLibrary("places");
+
+ const originContainer = document.getElementById('origin-input-container');
+ const destinationContainer = document.getElementById('destination-input-container');
+
+ const originAutocomplete = new PlaceAutocompleteElement();
+ const destinationAutocomplete = new PlaceAutocompleteElement();
+
+ originContainer.appendChild(originAutocomplete);
+ destinationContainer.appendChild(destinationAutocomplete);
+
+ originAutocomplete.addEventListener('gmp-select', async ({ placePrediction }) => {
+ invalidateQueryState();
+ const place = placePrediction.toPlace();
+ await place.fetchFields({ fields: ['location'] });
+ originPlace = place;
+ });
+
+ destinationAutocomplete.addEventListener('gmp-select', async ({ placePrediction }) => {
+ invalidateQueryState();
+ const place = placePrediction.toPlace();
+ await place.fetchFields({ fields: ['location'] });
+ destinationPlace = place;
+ });
+}
+
+
+/**
+ * Sets up the accordion functionality for collapsible fieldsets.
+ */
+function initializeAccordion() {
+ const fieldsets = document.querySelectorAll('.collapsible-fieldset');
+ fieldsets.forEach(fieldset => {
+ const legend = fieldset.querySelector('legend');
+ legend.addEventListener('click', () => {
+ const wasOpen = fieldset.classList.contains('is-open');
+
+ fieldsets.forEach(fs => fs.classList.remove('is-open'));
+
+ if (!wasOpen) {
+ fieldset.classList.add('is-open');
+ }
+ });
+ });
+}
+
+
+/**
+ * This function runs once the entire page, including all external scripts, has finished loading.
+ */
+window.onload = () => {
+ // Populate the selector based on config
+ populateLocationSelect();
+
+ const elements = {
+ sidebar: document.getElementById('sidebar'),
+ authButton: document.getElementById('auth-button'),
+ runQueryBtn: document.getElementById('run-query-btn'),
+ viewQueryBtn: document.getElementById('view-query-btn'),
+ copyQueryBtn: document.getElementById('copy-query-btn'),
+ demoTypeSelect: document.getElementById('demo-type-select'),
+ startButton: document.getElementById("start-demo-btn"),
+ changeCountryBtn: document.getElementById('change-country-btn'),
+ addBrandBtn: document.getElementById('add-brand-btn'),
+ showHelpBtn: document.getElementById('show-help-btn'),
+ guideModal: document.getElementById('guide-modal'),
+ queryModal: document.getElementById('query-modal'),
+ closeHelpBtn: document.querySelector('#guide-modal .close-modal-btn'),
+ closeQueryBtn: document.querySelector('#query-modal .close-modal-btn'),
+ h3Toggle: document.getElementById('h3-density-toggle'),
+ h3Controls: document.getElementById('h3-resolution-controls'),
+ h3Slider: document.getElementById('h3-resolution-slider'),
+ h3Value: document.getElementById('h3-resolution-value'),
+ wktInput: document.getElementById('wkt-input'),
+ clearPolygonBtn: document.getElementById('clear-polygon-btn'),
+ startDrawingBtn: document.getElementById('start-drawing-btn'),
+ finishDrawingBtn: document.getElementById('finish-drawing-btn'),
+ dayOfWeekSelect: document.getElementById('day-of-week-select'),
+ startTimeInput: document.getElementById('start-time-input'),
+ endTimeInput: document.getElementById('end-time-input')
+ };
+
+ // Central invalidation listener for any change within the sidebar.
+ elements.sidebar.addEventListener('input', invalidateQueryState);
+
+ elements.authButton.addEventListener('click', handleAuthClick);
+ elements.runQueryBtn.addEventListener('click', runQuery);
+ elements.viewQueryBtn.addEventListener('click', showQueryModal);
+ elements.copyQueryBtn.addEventListener('click', handleCopyQueryClick);
+ elements.startButton.addEventListener("click", handleStartDemo);
+ elements.changeCountryBtn.addEventListener('click', handleChangeCountryClick);
+ elements.addBrandBtn.addEventListener('click', handleAddBrandClick);
+ elements.showHelpBtn.addEventListener('click', showHelpModal);
+ elements.closeHelpBtn.addEventListener('click', () => hideModal('guide-modal'));
+ elements.closeQueryBtn.addEventListener('click', () => hideModal('query-modal'));
+ elements.guideModal.addEventListener('click', (e) => {
+ if (e.target === elements.guideModal) hideModal('guide-modal');
+ });
+ elements.queryModal.addEventListener('click', (e) => {
+ if (e.target === elements.queryModal) hideModal('query-modal');
+ });
+ elements.demoTypeSelect.addEventListener('change', handleDemoTypeChange);
+
+ elements.h3Toggle.addEventListener('change', (e) => {
+ elements.h3Controls.classList.toggle('hidden', !e.target.checked);
+ });
+ elements.h3Slider.addEventListener('input', (e) => {
+ elements.h3Value.textContent = e.target.value;
+ });
+
+ elements.clearPolygonBtn.addEventListener('click', clearPolygon);
+ elements.startDrawingBtn.addEventListener('click', startDrawing);
+ elements.finishDrawingBtn.addEventListener('click', finishDrawing);
+
+ // New: Event listener for opening hours filter
+ elements.dayOfWeekSelect.addEventListener('change', (e) => {
+ const daySelected = e.target.value !== '';
+ elements.startTimeInput.disabled = !daySelected;
+ elements.endTimeInput.disabled = !daySelected;
+ if (!daySelected) {
+ elements.startTimeInput.value = '';
+ elements.endTimeInput.value = '';
+ }
+ });
+
+ initializeIdentityServices();
+ initializeAutocomplete(document.getElementById('place-type-input'));
+ initializeRegionSearch();
+ initializeRouteSearch();
+ initializeAccordion();
+
+ // Set initial state for time inputs
+ elements.startTimeInput.disabled = true;
+ elements.endTimeInput.disabled = true;
+};
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/map.js b/places_insights/places-insights-demo/map.js
new file mode 100644
index 0000000..da14ab7
--- /dev/null
+++ b/places_insights/places-insights-demo/map.js
@@ -0,0 +1,322 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- MAP & DRAWING LOGIC ---
+
+// New state for sample markers
+let sampleMarkers = [];
+let detailsInfoWindow = null;
+
+/**
+ * Main entry point for map initialization after country selection.
+ */
+async function startDemo(countryName) {
+ try {
+ await initMap(countryName);
+ } catch (error) {
+ console.error("Error starting the demo:", error);
+ alert("Map initialization failed. Check console for details.");
+ document.getElementById("country-selector-modal").classList.remove("hidden");
+ document.getElementById("sidebar").classList.add("hidden");
+ }
+}
+
+/**
+ * Initializes the Google Map, deck.gl overlay, and main click listener.
+ */
+async function initMap(countryName) {
+ const { Map, Circle, InfoWindow, Polyline, Polygon } = await google.maps.importLibrary("maps");
+ const { Geocoder } = await google.maps.importLibrary("geocoding");
+ const geocoder = new Geocoder();
+ const { results } = await geocoder.geocode({ address: countryName });
+
+ if (results.length > 0) {
+ map = new Map(document.getElementById("map"), {
+ mapId: "DEMO_MAP_ID",
+ mapTypeControl: false,
+ streetViewControl: false
+ });
+ map.fitBounds(results[0].geometry.viewport);
+
+ deckglOverlay = new deck.GoogleMapsOverlay({});
+ deckglOverlay.setMap(map);
+ map.addListener('click', handleMapClick);
+ } else {
+ throw new Error("Geocoding failed for the selected country.");
+ }
+}
+
+/**
+ * Handles the user changing the demo type (Circle vs. Polygon vs. Region vs. Route).
+ */
+function handleDemoTypeChange(e) {
+ const demoType = e.target.value;
+ const isH3Function = demoType === 'h3-function';
+
+ // 1. Reset UI to the selected mode (clears inputs, sets correct visibility)
+ resetSidebarUI(demoType);
+
+ // 2. Apply Special Rules for H3 Function
+ if (isH3Function) {
+ // Force H3 Toggle ON and disabled
+ const h3Toggle = document.getElementById('h3-density-toggle');
+ h3Toggle.checked = true;
+ h3Toggle.disabled = true;
+
+ // Show Slider with Max 11
+ document.getElementById('h3-resolution-controls').classList.remove('hidden');
+ const h3Slider = document.getElementById('h3-resolution-slider');
+ h3Slider.max = '11';
+ if (parseInt(h3Slider.value) > 11) {
+ h3Slider.value = '11';
+ document.getElementById('h3-resolution-value').textContent = '11';
+ }
+
+ // Always Hide Brand Filters for Function mode
+ document.getElementById('brand-filters').classList.add('hidden');
+
+ // Hide Opening Hours for Function mode
+ document.getElementById('opening-hours-filters').classList.add('hidden');
+
+ } else {
+ // 3. Restore Standard State (if not handled by resetSidebarUI defaults)
+ // Ensure Country-specific Brand Filters are visible if applicable (US)
+ const brandFilters = document.getElementById('brand-filters');
+ if (selectedCountryName === 'United States') {
+ brandFilters.classList.remove('hidden');
+ }
+
+ // Show Opening Hours
+ document.getElementById('opening-hours-filters').classList.remove('hidden');
+ }
+
+ map.setOptions({ draggableCursor: 'grab' });
+ clearAllOverlays(true);
+ invalidateQueryState();
+}
+
+/**
+ * Central handler for all clicks on the map.
+ */
+function handleMapClick(e) {
+ // If we are hovering over an H3 cell (and likely clicking it), ignore the map click
+ // This prevents the map background click from clearing the H3 overlay
+ if (isHoveringH3) return;
+
+ const demoType = document.getElementById('demo-type-select').value;
+ // Allow circle placement for both standard Circle Search AND the new H3 Function
+ if (demoType === 'circle-search' || demoType === 'h3-function') {
+ invalidateQueryState();
+ clearAllOverlays(true);
+ searchCenter = e.latLng;
+ const radius = parseInt(document.getElementById('radius-input').value, 10);
+ searchCircle = new google.maps.Circle({
+ strokeColor: "#4285F4", strokeOpacity: 0.8, strokeWeight: 2,
+ fillColor: "transparent", map, center: searchCenter, radius: radius,
+ });
+ } else if (demoType === 'polygon-search' && isDrawing) {
+ invalidateQueryState();
+ polygonVertices.push(e.latLng);
+ tempPolyline.setPath(polygonVertices);
+ }
+}
+
+/**
+ * Puts the application into "drawing mode".
+ */
+function startDrawing() {
+ invalidateQueryState();
+ clearPolygon();
+ isDrawing = true;
+ polygonVertices = [];
+ map.setOptions({ draggableCursor: 'crosshair' });
+ tempPolyline = new google.maps.Polyline({ map: map, strokeColor: "#0000FF", strokeWeight: 2 });
+
+ document.getElementById('start-drawing-btn').classList.add('hidden');
+ document.getElementById('finish-drawing-btn').classList.remove('hidden');
+ document.getElementById('polygon-instructions').textContent = "Click points on the map. Click 'Finish' when done.";
+}
+
+/**
+ * Exits "drawing mode" and finalizes the polygon shape.
+ */
+function finishDrawing() {
+ if (!isDrawing) return;
+ isDrawing = false;
+ map.setOptions({ draggableCursor: 'grab' });
+
+ if (tempPolyline) tempPolyline.setMap(null);
+ tempPolyline = null;
+
+ document.getElementById('start-drawing-btn').classList.remove('hidden');
+ document.getElementById('finish-drawing-btn').classList.add('hidden');
+ document.getElementById('polygon-instructions').textContent = "Define a search area by drawing or pasting WKT.";
+
+ if (polygonVertices.length < 3) {
+ polygonVertices = [];
+ return;
+ }
+
+ searchPolygon = new google.maps.Polygon({
+ paths: polygonVertices, editable: true, draggable: true, fillColor: '#5599FF',
+ fillOpacity: 0.3, strokeColor: '#0000FF', strokeWeight: 2, map: map,
+ });
+
+ updateWktFromPolygon(searchPolygon);
+
+ searchPolygon.getPaths().forEach(path => {
+ google.maps.event.addListener(path, 'set_at', () => {
+ updateWktFromPolygon(searchPolygon);
+ invalidateQueryState();
+ });
+ google.maps.event.addListener(path, 'insert_at', () => {
+ updateWktFromPolygon(searchPolygon);
+ invalidateQueryState();
+ });
+ });
+ invalidateQueryState();
+}
+
+/**
+ * Clears all visual overlays from the map.
+ * @param {boolean} fullReset If true, also nullifies state variables for search geometry.
+ */
+function clearAllOverlays(fullReset = false) {
+ if (isDrawing) finishDrawing();
+ if (searchCircle) searchCircle.setMap(null);
+ if (searchPolygon) searchPolygon.setMap(null);
+ if (routePolyline) routePolyline.setMap(null);
+ if (infoWindow) infoWindow.close();
+ if (deckglOverlay) deckglOverlay.setProps({ layers: [] });
+
+ clearSampleMarkers();
+
+ if (fullReset) {
+ searchCenter = null;
+ searchCircle = null;
+ searchPolygon = null;
+ routePolyline = null;
+ originPlace = null;
+ destinationPlace = null;
+ }
+}
+
+/**
+ * Clears only the polygon and its associated state.
+ */
+function clearPolygon() {
+ invalidateQueryState();
+ if (isDrawing) finishDrawing();
+ if (searchPolygon) searchPolygon.setMap(null);
+ searchPolygon = null;
+ document.getElementById('wkt-input').value = '';
+ document.getElementById('wkt-input').classList.remove('invalid');
+}
+
+/**
+ * Clears all sample place markers from the map.
+ */
+function clearSampleMarkers() {
+ sampleMarkers.forEach(m => m.map = null);
+ sampleMarkers = [];
+ if (detailsInfoWindow) {
+ detailsInfoWindow.close();
+ }
+}
+
+/**
+ * Fetches details for a list of place IDs and puts markers on the map.
+ * @param {string[]} placeIds List of Place IDs to show.
+ */
+async function loadPlaceMarkers(placeIds) {
+ clearSampleMarkers();
+
+ if (!placeIds || placeIds.length === 0) return;
+
+ // Limit to top 20 to ensure performance/rate limits
+ const limit = 20;
+ const subset = placeIds.slice(0, limit);
+
+ updateStatus(`Fetching locations for ${subset.length} places...`);
+
+ try {
+ const { Place } = await google.maps.importLibrary("places");
+ const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary("marker");
+ // Import to register web components for InfoWindow
+ await google.maps.importLibrary("places");
+
+ if (!detailsInfoWindow) {
+ detailsInfoWindow = new google.maps.InfoWindow();
+ }
+
+ const bounds = new google.maps.LatLngBounds();
+
+ for (const id of subset) {
+ // Individual try/catch so one failure doesn't stop the loop
+ try {
+ const place = new Place({ id: id });
+ await place.fetchFields({ fields: ['location'] });
+
+ if (!place.location) continue;
+
+ const pin = new PinElement({
+ scale: 0.8,
+ background: "#FBBC04",
+ borderColor: "#137333",
+ glyphColor: "white"
+ });
+
+ const marker = new AdvancedMarkerElement({
+ map: map,
+ position: place.location,
+ content: pin.element,
+ title: "Click for details"
+ });
+
+ // Click Listener: Create Web Component in InfoWindow
+ marker.addListener('click', () => {
+ const container = document.createElement('div');
+ container.className = 'info-window-component-container';
+
+ const details = document.createElement('gmp-place-details-compact');
+ details.setAttribute('orientation', 'vertical');
+
+ const request = document.createElement('gmp-place-details-place-request');
+ request.setAttribute('place', id);
+
+ const allContent = document.createElement('gmp-place-all-content');
+
+ details.appendChild(request);
+ details.appendChild(allContent);
+ container.appendChild(details);
+
+ detailsInfoWindow.setContent(container);
+ detailsInfoWindow.open(map, marker);
+ });
+
+ sampleMarkers.push(marker);
+ bounds.extend(place.location);
+
+ } catch (e) {
+ console.warn(`Failed to fetch place ${id}`, e);
+ }
+ }
+
+ updateStatus(`Showing ${sampleMarkers.length} sample places. Click a marker for details.`, 'success');
+
+ } catch (error) {
+ console.error("Error loading markers:", error);
+ updateStatus("Error loading sample markers.", 'error');
+ }
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/place_types.js b/places_insights/places-insights-demo/place_types.js
new file mode 100644
index 0000000..8e62cc4
--- /dev/null
+++ b/places_insights/places-insights-demo/place_types.js
@@ -0,0 +1,82 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file contains a comprehensive list of place types from the documentation
+// to be used by the application's autocomplete feature.
+
+const PLACE_TYPES = [
+ 'acai_shop', 'academic_department', 'accounting', 'adventure_sports_center', 'afghani_restaurant', 'african_restaurant', 'aircraft_rental_service',
+ 'airport', 'airstrip', 'american_restaurant', 'amphitheatre', 'amusement_center', 'amusement_park', 'apartment_building', 'apartment_complex',
+ 'aquarium', 'arena', 'argentinian_restaurant', 'art_gallery', 'art_museum', 'art_studio', 'asian_fusion_restaurant', 'asian_grocery_store',
+ 'asian_restaurant', 'association_or_organization', 'astrologer', 'athletic_field', 'atm', 'auditorium', 'australian_restaurant',
+ 'austrian_restaurant', 'auto_parts_store', 'bagel_shop', 'bakery', 'bangladeshi_restaurant', 'bank', 'banquet_hall', 'bar', 'bar_and_grill',
+ 'barbecue_area', 'barbecue_restaurant', 'barber_shop', 'basque_restaurant', 'bavarian_restaurant', 'beach', 'beautician', 'beauty_salon',
+ 'bed_and_breakfast', 'beer_garden', 'belgian_restaurant', 'bicycle_store', 'bike_sharing_station', 'bistro', 'body_art_service', 'book_store',
+ 'botanical_garden', 'bowling_alley', 'brazilian_restaurant', 'breakfast_restaurant', 'brewery', 'brewpub', 'bridge', 'british_restaurant',
+ 'brunch_restaurant', 'buddhist_temple', 'budget_japanese_inn', 'buffet_restaurant', 'building_materials_store', 'burmese_restaurant',
+ 'burrito_restaurant', 'business_center', 'butcher_shop', 'cafe', 'cafeteria', 'cajun_restaurant', 'cake_shop', 'californian_restaurant',
+ 'cambodian_restaurant', 'campground', 'camping_cabin', 'candy_store', 'cantonese_restaurant', 'car_dealer', 'car_rental', 'car_repair',
+ 'car_wash', 'caribbean_restaurant', 'casino', 'castle', 'cat_cafe', 'catering_service', 'cell_phone_store', 'cemetery', 'chauffeur_service',
+ 'chicken_restaurant', 'chicken_wings_restaurant', 'child_care_agency', 'childrens_camp', 'chilean_restaurant', 'chinese_noodle_restaurant',
+ 'chinese_restaurant', 'chiropractor', 'chocolate_factory', 'chocolate_shop', 'church', 'city_hall', 'city_park', 'clothing_store',
+ 'cocktail_bar', 'coffee_roastery', 'coffee_shop', 'coffee_stand', 'colombian_restaurant', 'comedy_club', 'community_center', 'concert_hall',
+ 'condominium_complex', 'confectionery', 'consultant', 'convenience_store', 'convention_center', 'corporate_office', 'cosmetics_store',
+ 'cottage', 'courier_service', 'courthouse', 'coworking_space', 'croatian_restaurant', 'cuban_restaurant', 'cultural_center',
+ 'cultural_landmark', 'cycling_park', 'czech_restaurant', 'dance_hall', 'danish_restaurant', 'deli', 'dental_clinic', 'dentist',
+ 'department_store', 'dessert_restaurant', 'dessert_shop', 'dim_sum_restaurant', 'diner', 'discount_store', 'discount_supermarket',
+ 'doctor', 'dog_cafe', 'dog_park', 'donut_shop', 'drugstore', 'dumpling_restaurant', 'dutch_restaurant', 'eastern_european_restaurant',
+ 'ebike_charging_station', 'educational_institution', 'electric_vehicle_charging_station', 'electrician', 'electronics_store', 'embassy',
+ 'employment_agency', 'establishment', 'ethiopian_restaurant', 'european_restaurant', 'event_venue', 'extended_stay_hotel', 'falafel_restaurant',
+ 'family_restaurant', 'farmers_market', 'farm', 'farmstay', 'fast_food_restaurant', 'ferris_wheel', 'ferry_service', 'ferry_terminal',
+ 'filipino_restaurant', 'finance', 'fine_dining_restaurant', 'fire_station', 'fish_and_chips_restaurant', 'fishing_charter', 'fishing_pier',
+ 'fishing_pond', 'fitness_center', 'flea_market', 'florist', 'fondue_restaurant', 'food', 'food_court', 'food_delivery', 'food_store',
+ 'foot_care', 'fountain', 'french_restaurant', 'funeral_home', 'furniture_store', 'fusion_restaurant', 'garden', 'garden_center',
+ 'gas_station', 'gastropub', 'general_contractor', 'general_hospital', 'general_store', 'german_restaurant', 'gift_shop', 'go_karting_venue',
+ 'golf_course', 'government_office', 'greek_restaurant', 'grocery_store', 'guest_house', 'gym', 'gyro_restaurant', 'hair_care', 'hair_salon',
+ 'halal_restaurant', 'hamburger_restaurant', 'hardware_store', 'hawaiian_restaurant', 'health', 'health_food_store', 'heliport', 'hiking_area',
+ 'hindu_temple', 'historical_landmark', 'historical_place', 'history_museum', 'home_goods_store', 'home_improvement_store', 'hookah_bar',
+ 'hospital', 'hostel', 'hot_dog_restaurant', 'hot_dog_stand', 'hot_pot_restaurant', 'hotel', 'housing_complex', 'hungarian_restaurant',
+ 'hypermarket', 'ice_cream_shop', 'ice_skating_rink', 'indian_restaurant', 'indoor_golf_course', 'indoor_playground', 'indonesian_restaurant',
+ 'inn', 'insurance_agency', 'international_airport', 'internet_cafe', 'irish_pub', 'irish_restaurant', 'island', 'israeli_restaurant',
+ 'italian_restaurant', 'japanese_curry_restaurant', 'japanese_inn', 'japanese_izakaya_restaurant', 'japanese_restaurant', 'jewelry_store',
+ 'juice_shop', 'karaoke', 'kebab_shop', 'korean_barbecue_restaurant', 'korean_restaurant', 'lake', 'landmark', 'latin_american_restaurant',
+ 'laundry', 'lawyer', 'lebanese_restaurant', 'library', 'light_rail_station', 'liquor_store', 'live_music_venue', 'local_government_office',
+ 'locksmith', 'lodging', 'lounge_bar', 'makeup_artist', 'malaysian_restaurant', 'manufacturer', 'marina', 'market', 'marketing_consultant',
+ 'massage', 'massage_spa', 'meal_delivery', 'meal_takeaway', 'medical_center', 'medical_clinic', 'medical_lab', 'mediterranean_restaurant',
+ 'mexican_restaurant', 'middle_eastern_restaurant', 'miniature_golf_course', 'mobile_home_park', 'mongolian_barbecue_restaurant', 'monument',
+ 'moroccan_restaurant', 'mosque', 'motel', 'mountain_peak', 'movie_rental', 'movie_theater', 'moving_company', 'museum', 'nail_salon',
+ 'national_park', 'natural_feature', 'nature_preserve', 'night_club', 'non_profit_organization', 'noodle_shop',
+ 'north_indian_restaurant', 'observation_deck', 'off_roading_area', 'opera_house', 'oyster_bar_restaurant', 'paintball_center', 'painter',
+ 'pakistani_restaurant', 'park', 'park_and_ride', 'parking', 'parking_garage', 'parking_lot', 'pastry_shop', 'performing_arts_theater',
+ 'persian_restaurant', 'peruvian_restaurant', 'pet_boarding_service', 'pet_care', 'pet_store', 'pharmacy', 'philharmonic_hall',
+ 'physiotherapist', 'picnic_ground', 'pizza_delivery', 'pizza_restaurant', 'place_of_worship', 'planetarium', 'playground', 'plaza',
+ 'plumber', 'point_of_interest', 'police', 'polish_restaurant', 'portuguese_restaurant', 'post_office', 'premise', 'preschool',
+ 'primary_school', 'private_guest_room', 'psychic', 'pub', 'public_bath', 'public_bathroom', 'race_course', 'ramen_restaurant', 'ranch',
+ 'real_estate_agency', 'research_institute', 'resort_hotel', 'restaurant', 'rest_stop', 'river', 'roller_coaster', 'romanian_restaurant',
+ 'roofing_contractor', 'russian_restaurant', 'rv_park', 'salad_shop', 'sandwich_shop', 'sauna', 'scandinavian_restaurant', 'scenic_spot',
+ 'school', 'sculpture', 'seafood_restaurant', 'secondary_school', 'service', 'shawarma_restaurant', 'shipping_service', 'shinto_shrine',
+ 'shoe_store', 'shopping_mall', 'skin_care_clinic', 'ski_resort', 'skateboard_park', 'snack_bar', 'soul_food_restaurant', 'soup_restaurant',
+ 'south_american_restaurant', 'south_indian_restaurant', 'southwestern_us_restaurant', 'spa', 'spanish_restaurant', 'sporting_goods_store',
+ 'sports_activity_location', 'sports_bar', 'sports_club', 'sports_coaching', 'sports_complex', 'sports_school', 'sportswear_store',
+ 'sri_lankan_restaurant', 'stable', 'stadium', 'state_park', 'steak_house', 'storage', 'store', 'street_address', 'subpremise', 'subway_station',
+ 'summer_camp_organizer', 'supermarket', 'supplier', 'sushi_restaurant', 'swimming_pool', 'swiss_restaurant', 'synagogue', 'taco_restaurant',
+ 'tailor', 'taiwanese_restaurant', 'tanning_studio', 'tapas_restaurant', 'taxi_service', 'taxi_stand', 'tea_house', 'tea_store',
+ 'telecommunications_service_provider', 'television_studio', 'tennis_court', 'tex_mex_restaurant', 'thai_restaurant', 'thrift_store',
+ 'tibetan_restaurant', 'tire_shop', 'toll_station', 'tonkatsu_restaurant', 'tour_agency', 'tourist_attraction', 'tourist_information_center',
+ 'toy_store', 'train_station', 'train_ticket_office', 'tram_stop', 'transit_depot', 'transit_station', 'transit_stop', 'transportation_service',
+ 'travel_agency', 'truck_dealer', 'truck_stop', 'turkish_restaurant', 'ukrainian_restaurant', 'university', 'vegan_restaurant',
+ 'vegetarian_restaurant', 'veterinary_care', 'video_arcade', 'vietnamese_restaurant', 'vineyard', 'visitor_center', 'warehouse_store',
+ 'water_park', 'wedding_venue', 'wellness_center', 'western_restaurant', 'wholesaler', 'wildlife_park', 'wildlife_refuge', 'wine_bar',
+ 'winery', 'womens_clothing_store', 'woods', 'yakiniku_restaurant', 'yakitori_restaurant', 'yoga_studio', 'zoo'
+];
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/query.js b/places_insights/places-insights-demo/query.js
new file mode 100644
index 0000000..a352de2
--- /dev/null
+++ b/places_insights/places-insights-demo/query.js
@@ -0,0 +1,511 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- BIGQUERY QUERY LOGIC ---
+
+// Note: fetchRouteAsWkt is imported from routes.js
+
+// --- SEARCH PARAMETER HELPERS ---
+
+function getCircleSearchParams() {
+ if (!searchCenter) {
+ return { success: false, message: "Click a location on the map to set the search center." };
+ }
+ const radius = parseInt(document.getElementById('radius-input').value, 10);
+ const filter = `ST_DWITHIN(ST_GEOGPOINT(${searchCenter.lng()}, ${searchCenter.lat()}), places.point, ${radius})`;
+ return { success: true, filter, center: searchCenter, searchAreaVar: '' };
+}
+
+function getPolygonSearchParams() {
+ if (!searchPolygon) {
+ return { success: false, message: "Draw or paste a polygon to define the search area." };
+ }
+ const wkt = document.getElementById('wkt-input').value;
+ const searchAreaVar = `DECLARE search_area GEOGRAPHY; SET search_area = ST_GEOGFROMTEXT("""${wkt}""");`;
+ const filter = 'ST_CONTAINS(search_area, places.point)';
+ return { success: true, filter, center: searchPolygon.getPath().getAt(0), searchAreaVar };
+}
+
+async function getRegionSearchParams() {
+ const regionTags = [...document.querySelectorAll('#selected-regions-list .selected-region-tag')];
+
+ if (regionTags.length === 0) {
+ return { success: false, message: "Search for and select at least one Region." };
+ }
+
+ // Group tags by their target column and type to build the filter
+ const columnsToIds = {};
+ regionTags.forEach(tag => {
+ const col = tag.dataset.column;
+ const colType = tag.dataset.colType;
+ if (!columnsToIds[col]) columnsToIds[col] = { type: colType, ids: [] };
+ columnsToIds[col].ids.push(tag.dataset.id);
+ });
+
+ // Build exact match filters using the Place IDs based on their column data type
+ const filterParts = [];
+ for (const [col, data] of Object.entries(columnsToIds)) {
+ const idList = data.ids.map(id => `'${id}'`).join(', ');
+ if (data.type === 'STRING') {
+ filterParts.push(`places.${col} IN (${idList})`);
+ } else {
+ filterParts.push(`EXISTS (SELECT 1 FROM UNNEST(places.${col}) AS id WHERE id IN (${idList}))`);
+ }
+ }
+ const filter = `(${filterParts.join(' OR ')})`;
+
+ // Calculate map bounds from tags, prioritizing the viewport for accurate framing
+ const bounds = new google.maps.LatLngBounds();
+ let hasBounds = false;
+
+ regionTags.forEach(tag => {
+ if (tag.dataset.north) {
+ const sw = { lat: parseFloat(tag.dataset.south), lng: parseFloat(tag.dataset.west) };
+ const ne = { lat: parseFloat(tag.dataset.north), lng: parseFloat(tag.dataset.east) };
+ bounds.union(new google.maps.LatLngBounds(sw, ne));
+ hasBounds = true;
+ } else if (tag.dataset.lat) {
+ bounds.extend({ lat: parseFloat(tag.dataset.lat), lng: parseFloat(tag.dataset.lng) });
+ hasBounds = true;
+ }
+ });
+
+ if (hasBounds) {
+ map.fitBounds(bounds);
+ }
+
+ return {
+ success: true, filter, center: bounds.getCenter(), searchAreaVar: ''
+ };
+}
+
+async function getRouteSearchParams() {
+ if (!originPlace || !destinationPlace) {
+ return { success: false, message: "Select both an origin and a destination for the route." };
+ }
+ updateStatus('Calculating route...');
+ // Call helper from routes.js
+ const routeData = await fetchRouteAsWkt(originPlace, destinationPlace);
+ const radius = parseInt(document.getElementById('route-radius-input').value, 10);
+ const searchAreaVar = `DECLARE route GEOGRAPHY; SET route = ST_GEOGFROMTEXT("""${routeData.wktString}""");`;
+ const filter = `ST_DWITHIN(route, places.point, ${radius})`;
+ return { success: true, filter, center: routeData.bounds.getCenter(), searchAreaVar };
+}
+
+
+/**
+ * The main function to execute a query. It's called when the "Run Search" button is clicked.
+ */
+async function runQuery() {
+ const runQueryBtn = document.getElementById('run-query-btn');
+ runQueryBtn.disabled = true;
+ runQueryBtn.textContent = 'Running...';
+ updateStatus('Validating inputs...');
+
+ try {
+ const demoType = document.getElementById('demo-type-select').value;
+
+ let countryCode;
+ if (DATASET === 'SAMPLE') {
+ countryCode = SAMPLE_LOCATIONS[selectedCountryName];
+ } else {
+ countryCode = COUNTRY_CODES[selectedCountryName];
+ }
+
+ let sqlQuery;
+
+ // Clean up any existing sample markers from H3 interaction
+ if (typeof clearSampleMarkers === 'function') {
+ clearSampleMarkers();
+ }
+
+ // 1. Branch for H3 Function (Special Case)
+ if (demoType === 'h3-function') {
+ if (!searchCenter) {
+ throw new Error("Click a location on the map to set the search center.");
+ }
+ updateStatus('Checking authorization...');
+ const token = await ensureAccessToken();
+
+ updateStatus('Building function query...');
+ sqlQuery = buildH3FunctionQuery(countryCode);
+ lastExecutedQuery = sqlQuery;
+
+ if (infoWindow) infoWindow.close();
+ if (deckglOverlay) deckglOverlay.setProps({ layers: [] });
+
+ updateStatus('Executing function...');
+ const response = await fetch(`https://bigquery.googleapis.com/bigquery/v2/projects/${GCP_PROJECT_ID}/queries`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
+ body: JSON.stringify({ query: sqlQuery, useLegacySql: false, maxResults: 100000 })
+ });
+
+ const initialResult = await response.json();
+ if (!response.ok) throw new Error(initialResult.error?.message || 'API request failed.');
+
+ const result = await fetchAllQueryRows(GCP_PROJECT_ID, initialResult, token);
+
+ document.getElementById('view-query-btn').classList.remove('hidden');
+ if (searchCircle) searchCircle.setMap(null); // Hide circle so heatmap is visible
+
+ displayH3FunctionResults(result);
+ updateStatus('Query successful.', 'success');
+
+ } else {
+ // 2. Standard SQL Logic (Circle, Polygon, Region, Route)
+
+ // Get Geometry Parameters
+ let searchParams;
+ switch (demoType) {
+ case 'circle-search': searchParams = getCircleSearchParams(); break;
+ case 'polygon-search': searchParams = getPolygonSearchParams(); break;
+ case 'region-search': searchParams = await getRegionSearchParams(); break;
+ case 'route-search': searchParams = await getRouteSearchParams(); break;
+ default: throw new Error("Invalid demo type selected.");
+ }
+
+ if (!searchParams.success) {
+ updateStatus(searchParams.message, 'error');
+ return;
+ }
+
+ // Clear previous results and Authorize
+ if (infoWindow) infoWindow.close();
+ if (deckglOverlay) deckglOverlay.setProps({ layers: [] });
+ updateStatus('Checking authorization...');
+ const token = await ensureAccessToken();
+
+ // Gather all other filters
+ updateStatus('Building query...');
+ const allFilters = [searchParams.filter];
+
+ // Place Types Logic (Primary vs Included)
+ const placeTypes = [...document.querySelectorAll('#selected-types-list span')].map(s => s.textContent);
+ // Use new Checkbox
+ const usePrimaryType = document.getElementById('primary-type-checkbox').checked;
+
+ if (placeTypes.length > 0) {
+ if (usePrimaryType) {
+ // Primary Type filter
+ const typeList = placeTypes.map(t => `'${t}'`).join(', ');
+ allFilters.push(`places.primary_type IN (${typeList})`);
+ } else {
+ // Included Type (Standard) filter
+ allFilters.push(`(${placeTypes.map(t => `'${t}' IN UNNEST(places.types)`).join(' OR ')})`);
+ }
+ }
+
+ const attributes = [...document.querySelectorAll('.attribute-filter:checked')].map(cb => cb.name);
+ if (attributes.length > 0) allFilters.push(...buildAttributeFilter(attributes));
+ const ratingFilter = buildRatingFilter(parseFloat(document.getElementById('min-rating-input').value), parseFloat(document.getElementById('max-rating-input').value));
+ if (ratingFilter) allFilters.push(ratingFilter);
+
+ const bizStatus = document.getElementById('business-status-select').value;
+ if (bizStatus) allFilters.push(`places.business_status = '${bizStatus}'`);
+
+ const priceLevel = document.getElementById('price-level-select').value;
+ if (priceLevel) allFilters.push(`places.price_level = '${priceLevel}'`);
+
+ // Brand Filters (only applicable here, not in H3 Function)
+ const brandNames = [...document.querySelectorAll('#selected-brands-list span')].map(s => s.textContent);
+ const pendingBrandInput = document.getElementById('brand-name-input').value.trim();
+ if (pendingBrandInput && !brandNames.includes(pendingBrandInput)) {
+ brandNames.push(pendingBrandInput);
+ }
+ if (brandNames.length > 0) allFilters.push(buildBrandFilter(brandNames));
+
+ const openingDay = document.getElementById('day-of-week-select').value;
+ const hoursFilter = buildOpeningHoursFilter(openingDay, document.getElementById('start-time-input').value, document.getElementById('end-time-input').value);
+ if (hoursFilter.whereClause) allFilters.push(hoursFilter.whereClause);
+
+ // Assemble FROM clause dynamically based on dataset type
+ let tableName;
+ if (DATASET === 'SAMPLE') {
+ tableName = `places_insights___${countryCode}___sample.places_sample`;
+ } else {
+ tableName = `places_insights___${countryCode}.places`;
+ }
+
+ let fromClause = `FROM \`${tableName}\` places`;
+
+ if (openingDay) fromClause += ` ${hoursFilter.unnestClause}`;
+
+ // Brands Join Logic
+ const isBrandQuery = brandNames.length > 0;
+ if (isBrandQuery) {
+ let brandsTable;
+ if (DATASET === 'SAMPLE') {
+ brandsTable = 'places_insights___us___sample.brands';
+ } else {
+ brandsTable = 'places_insights___us.brands';
+ }
+
+ fromClause += `, UNNEST(places.brand_ids) AS brand_id LEFT JOIN \`${brandsTable}\` brands ON brand_id = brands.id`;
+ }
+
+ const whereClause = allFilters.length > 0 ? `WHERE ${allFilters.join(' AND ')}` : '';
+
+ // Build the final SQL Query
+ const useH3 = document.getElementById('h3-density-toggle').checked;
+
+ if (useH3) {
+ const h3Res = parseInt(document.getElementById('h3-resolution-slider').value, 10);
+ sqlQuery = buildH3DensityQuery(searchParams.searchAreaVar, fromClause, whereClause, h3Res);
+ } else {
+ sqlQuery = buildAggregateQuery(searchParams.searchAreaVar, fromClause, whereClause, placeTypes, isBrandQuery);
+ }
+ lastExecutedQuery = sqlQuery;
+
+ // Execute Query and Display Results
+ updateStatus('Executing query...');
+ const response = await fetch(`https://bigquery.googleapis.com/bigquery/v2/projects/${GCP_PROJECT_ID}/queries`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
+ body: JSON.stringify({ query: sqlQuery, useLegacySql: false, maxResults: 100000 })
+ });
+ const initialResult = await response.json();
+ if (!response.ok) throw new Error(initialResult.error?.message || 'API request failed.');
+
+ const result = await fetchAllQueryRows(GCP_PROJECT_ID, initialResult, token);
+
+ document.getElementById('view-query-btn').classList.remove('hidden');
+
+ if (useH3) {
+ if (searchCircle) searchCircle.setMap(null);
+ if (searchPolygon) searchPolygon.setMap(null);
+ displayH3Results(result);
+ } else {
+ if (searchCircle) searchCircle.setMap(map);
+ if (searchPolygon) searchPolygon.setMap(map);
+ displayResultsOnMap(result, searchParams.center);
+ }
+
+ let successMessage = 'Query successful.';
+ if (!useH3 && result.rows && Number(result.totalRows) > result.rows.length) {
+ successMessage += ` Warning: Displaying ${result.rows.length.toLocaleString()} of ${Number(result.totalRows).toLocaleString()} total rows.`;
+ }
+ updateStatus(successMessage, 'success');
+ }
+
+ } catch (error) {
+ console.error('Query failed:', error);
+ updateStatus(`Error: ${error.message}`, 'error');
+ } finally {
+ runQueryBtn.disabled = false;
+ runQueryBtn.textContent = 'Run Search';
+ }
+}
+
+
+// --- FILTER BUILDERS ---
+
+function buildBrandFilter(brandNames) {
+ if (!brandNames || brandNames.length === 0) return '';
+ const sanitizedNames = brandNames.map(name => `"${name.replace(/"/g, '\\"')}"`).join(', ');
+ return `brands.name IN (${sanitizedNames})`;
+}
+
+function buildOpeningHoursFilter(day, startTime, endTime) {
+ if (!day || (!startTime && !endTime)) return { unnestClause: '', whereClause: '' };
+ const unnestClause = `, UNNEST(places.regular_opening_hours.${day}) AS opening_period`;
+ let conditions = [];
+ if (startTime) conditions.push(`opening_period.start_time <= TIME '${startTime}:00'`);
+ if (endTime) conditions.push(`opening_period.end_time >= TIME '${endTime}:00'`);
+ return { unnestClause, whereClause: conditions.join(' AND ') };
+}
+
+function buildAttributeFilter(attributes) {
+ if (!attributes || attributes.length === 0) return [];
+ return attributes.map(attr => `places.${attr} = TRUE`);
+}
+
+function buildRatingFilter(min, max) {
+ const hasMin = !isNaN(min);
+ const hasMax = !isNaN(max);
+ if (hasMin && hasMax) return `places.rating BETWEEN ${min} AND ${max}`;
+ if (hasMin) return `places.rating >= ${min}`;
+ if (hasMax) return `places.rating <= ${max}`;
+ return '';
+}
+
+// --- UNIFIED QUERY BUILDERS ---
+
+function buildAggregateQuery(searchAreaVar, fromClause, whereClause, types, isBrandQuery) {
+ if (isBrandQuery) {
+ return `${searchAreaVar} SELECT WITH AGGREGATION_THRESHOLD brands.name, COUNT(places.id) AS count ${fromClause} ${whereClause} GROUP BY brands.name ORDER BY count DESC`;
+ }
+ if (types.length <= 1) {
+ return `${searchAreaVar} SELECT WITH AGGREGATION_THRESHOLD COUNT(*) AS total_count ${fromClause} ${whereClause}`;
+ }
+ const select = types.map(t => `COUNTIF('${t}' IN UNNEST(places.types)) AS ${t.replace(/ /g, '_')}_count`).join(',\n ');
+ return `${searchAreaVar} SELECT WITH AGGREGATION_THRESHOLD ${select}, COUNT(*) AS total_count ${fromClause} ${whereClause}`;
+}
+
+function buildH3DensityQuery(searchAreaVar, fromClause, whereClause, resolution) {
+ // This is the inner query that performs the main aggregation.
+ const innerQuery = `
+ SELECT WITH AGGREGATION_THRESHOLD
+ \`carto-os.carto.H3_FROMGEOGPOINT\`(places.point, ${resolution}) AS h3_index,
+ COUNT(*) AS place_count
+ ${fromClause}
+ ${whereClause}
+ GROUP BY h3_index
+ `;
+
+ // This outer query wraps the inner one to aggregate results into arrays.
+ return `${searchAreaVar}
+ SELECT
+ ARRAY_AGG(h3_index) as indices,
+ ARRAY_AGG(place_count) as counts
+ FROM (${innerQuery})
+ WHERE h3_index IS NOT NULL
+ `;
+}
+
+// --- NEW FUNCTION QUERY BUILDER ---
+
+function buildH3FunctionQuery(countryCode) {
+ const radius = parseInt(document.getElementById('radius-input').value, 10);
+ const h3Resolution = parseInt(document.getElementById('h3-resolution-slider').value, 10);
+
+ // Construct JSON_OBJECT fields
+ let jsonParts = [];
+
+ // Geography (Point + Radius)
+ jsonParts.push(`'geography', ST_GEOGPOINT(${searchCenter.lng()}, ${searchCenter.lat()})`);
+ jsonParts.push(`'geography_radius', ${radius}`);
+ jsonParts.push(`'h3_resolution', ${h3Resolution}`);
+
+ // Standard Filters
+ // 1. Business Status
+ const bizStatus = document.getElementById('business-status-select').value;
+ if (bizStatus) {
+ jsonParts.push(`'business_status', ['${bizStatus}']`);
+ }
+
+ // 2. Place Types (Toggle logic)
+ const placeTypes = [...document.querySelectorAll('#selected-types-list span')].map(s => s.textContent);
+ // Use new Checkbox
+ const usePrimaryType = document.getElementById('primary-type-checkbox').checked;
+
+ if (placeTypes.length > 0) {
+ const formattedTypes = placeTypes.map(t => `"${t}"`).join(', ');
+ if (usePrimaryType) {
+ jsonParts.push(`'primary_type', [${formattedTypes}]`);
+ } else {
+ jsonParts.push(`'types', [${formattedTypes}]`);
+ }
+ }
+
+ // 3. Ratings
+ const minRating = parseFloat(document.getElementById('min-rating-input').value);
+ const maxRating = parseFloat(document.getElementById('max-rating-input').value);
+ if (!isNaN(minRating)) jsonParts.push(`'min_rating', ${minRating}`);
+ if (!isNaN(maxRating)) jsonParts.push(`'max_rating', ${maxRating}`);
+
+ // 4. Price Level
+ const priceLevel = document.getElementById('price-level-select').value;
+ if (priceLevel) {
+ jsonParts.push(`'price_level', ['${priceLevel}']`);
+ }
+
+ // 5. Boolean Attributes
+ const attributes = [...document.querySelectorAll('.attribute-filter:checked')].map(cb => cb.name);
+ attributes.forEach(attr => {
+ jsonParts.push(`'${attr}', TRUE`);
+ });
+
+ // Note: Brand filters are strictly excluded here.
+
+ // Dynamic table name based on dataset configuration
+ let tableName;
+ if (DATASET === 'SAMPLE') {
+ tableName = `places_insights___${countryCode}___sample`;
+ } else {
+ tableName = `places_insights___${countryCode}`;
+ }
+
+ return `
+ SELECT * FROM \`${tableName}.PLACES_COUNT_PER_H3\`(
+ JSON_OBJECT(
+ ${jsonParts.join(',\n ')}
+ )
+ )
+ `;
+}
+
+/**
+ * Polls and fetches all rows for a BigQuery query job, handling pagination and timeouts.
+ */
+async function fetchAllQueryRows(projectId, initialResult, token) {
+ if (initialResult.jobComplete && !initialResult.pageToken) {
+ return initialResult;
+ }
+
+ const jobReference = initialResult.jobReference;
+ const jobId = jobReference.jobId;
+ const location = jobReference.location;
+ let rows = initialResult.rows || [];
+ let pageToken = initialResult.pageToken;
+ let schema = initialResult.schema;
+ let jobComplete = initialResult.jobComplete;
+
+ let url = `https://bigquery.googleapis.com/bigquery/v2/projects/${projectId}/queries/${jobId}`;
+ if (location) {
+ url += `?location=${location}`;
+ }
+
+ // 1. Poll until job is complete
+ while (!jobComplete) {
+ updateStatus('Waiting for query results...');
+ // Wait 1 second before polling
+ await new Promise(resolve => setTimeout(resolve, 1000));
+
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: { 'Authorization': `Bearer ${token}` }
+ });
+ const result = await response.json();
+ if (!response.ok) throw new Error(result.error?.message || 'Failed to fetch query results.');
+
+ jobComplete = result.jobComplete;
+ if (jobComplete) {
+ schema = result.schema;
+ if (result.rows) rows.push(...result.rows);
+ pageToken = result.pageToken;
+ }
+ }
+
+ // 2. Paginate using pageToken
+ while (pageToken) {
+ updateStatus(`Loading results (loaded ${rows.length.toLocaleString()})...`);
+ let pageUrl = `https://bigquery.googleapis.com/bigquery/v2/projects/${projectId}/queries/${jobId}?pageToken=${pageToken}`;
+ if (location) {
+ pageUrl += `&location=${location}`;
+ }
+
+ const response = await fetch(pageUrl, {
+ method: 'GET',
+ headers: { 'Authorization': `Bearer ${token}` }
+ });
+ const result = await response.json();
+ if (!response.ok) throw new Error(result.error?.message || 'Failed to fetch paginated results.');
+
+ if (result.rows) rows.push(...result.rows);
+ pageToken = result.pageToken;
+ }
+
+ return { schema, rows, totalRows: rows.length.toString() };
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/routes.js b/places_insights/places-insights-demo/routes.js
new file mode 100644
index 0000000..7ebfa23
--- /dev/null
+++ b/places_insights/places-insights-demo/routes.js
@@ -0,0 +1,83 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- ROUTES API LOGIC ---
+
+/**
+ * Calls the Routes API to get a route between an origin and destination,
+ * draws it on the map, and returns the route as a WKT LINESTRING.
+ * @param {google.maps.places.Place} origin The origin Place object.
+ * @param {google.maps.places.Place} destination The destination Place object.
+ * @returns {Promise<{wktString: string, bounds: google.maps.LatLngBounds}>}
+ */
+async function fetchRouteAsWkt(origin, destination) {
+ const API_KEY = MAPS_API_KEY;
+ const URL = 'https://routes.googleapis.com/directions/v2:computeRoutes';
+
+ const originLatLng = origin.location.toJSON();
+ const destinationLatLng = destination.location.toJSON();
+
+ const requestBody = {
+ origin: { location: { latLng: { latitude: originLatLng.lat, longitude: originLatLng.lng }}},
+ destination: { location: { latLng: { latitude: destinationLatLng.lat, longitude: destinationLatLng.lng }}},
+ travelMode: 'DRIVE',
+ routingPreference: 'TRAFFIC_AWARE',
+ polylineEncoding: 'GEO_JSON_LINESTRING',
+ computeAlternativeRoutes: false,
+ };
+
+ const response = await fetch(URL, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'X-Goog-Api-Key': API_KEY,
+ 'X-Goog-FieldMask': 'routes.polyline.geoJsonLinestring,routes.viewport',
+ },
+ body: JSON.stringify(requestBody),
+ });
+
+ if (!response.ok) {
+ const errorBody = await response.json();
+ console.error('Error from Routes API:', errorBody);
+ throw new Error(`Routes API request failed: ${errorBody.error?.message || response.status}`);
+ }
+
+ const data = await response.json();
+ if (!data.routes || data.routes.length === 0) {
+ throw new Error('No routes found between the selected origin and destination.');
+ }
+
+ const route = data.routes[0];
+ const coordinates = route.polyline.geoJsonLinestring.coordinates;
+ const wktCoordinatePairs = coordinates.map(coord => `${coord[0]} ${coord[1]}`);
+ const wktString = `LINESTRING(${wktCoordinatePairs.join(', ')})`;
+
+ if (routePolyline) routePolyline.setMap(null);
+ const path = coordinates.map(coord => ({ lng: coord[0], lat: coord[1] }));
+ routePolyline = new google.maps.Polyline({
+ path: path,
+ strokeColor: '#4285F4',
+ strokeOpacity: 0.8,
+ strokeWeight: 6,
+ map: map,
+ });
+
+ const viewport = route.viewport;
+ const lowPoint = { lat: viewport.low.latitude, lng: viewport.low.longitude };
+ const highPoint = { lat: viewport.high.latitude, lng: viewport.high.longitude };
+ const bounds = new google.maps.LatLngBounds(lowPoint, highPoint);
+ map.fitBounds(bounds);
+
+ return { wktString, bounds };
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/state.js b/places_insights/places-insights-demo/state.js
new file mode 100644
index 0000000..4ed2c40
--- /dev/null
+++ b/places_insights/places-insights-demo/state.js
@@ -0,0 +1,183 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- CONFIGURATION CONSTANTS ---
+// These are loaded from config.js and treated as constants throughout the app.
+const config = window.APP_CONFIG || {};
+const GCP_PROJECT_ID = config.GCP_PROJECT_ID || '';
+const OAUTH_CLIENT_ID = config.OAUTH_CLIENT_ID || '';
+const MAPS_API_KEY = config.MAPS_API_KEY || '';
+const DATASET = config.DATASET || 'FULL';
+const BQ_SCOPES = 'https://www.googleapis.com/auth/bigquery';
+
+// --- APPLICATION STATE ---
+// Holds the name of the country/city selected in the initial modal.
+let selectedCountryName = '';
+
+// Maps full country names to their two-letter codes for BigQuery table names (FULL Dataset).
+const COUNTRY_CODES = {
+ 'Argentina': 'ar',
+ 'Australia': 'au',
+ 'Austria': 'at',
+ 'Bahrain': 'bh',
+ 'Belgium': 'be',
+ 'Brazil': 'br',
+ 'Bulgaria': 'bg',
+ 'Canada': 'ca',
+ 'Chile': 'cl',
+ 'Colombia': 'co',
+ 'Czechia': 'cz',
+ 'Denmark': 'dk',
+ 'Egypt': 'eg',
+ 'Finland': 'fi',
+ 'France': 'fr',
+ 'Germany': 'de',
+ 'Greece': 'gr',
+ 'Hong Kong': 'hk',
+ 'Hungary': 'hu',
+ 'India': 'in',
+ 'Indonesia': 'id',
+ 'Ireland': 'ie',
+ 'Israel': 'il',
+ 'Italy': 'it',
+ 'Japan': 'jp',
+ 'Malaysia': 'my',
+ 'Mexico': 'mx',
+ 'Netherlands': 'nl',
+ 'New Zealand': 'nz',
+ 'Norway': 'no',
+ 'Peru': 'pe',
+ 'Philippines': 'ph',
+ 'Poland': 'pl',
+ 'Portugal': 'pt',
+ 'Qatar': 'qa',
+ 'Romania': 'ro',
+ 'Saudi Arabia': 'sa',
+ 'Singapore': 'sg',
+ 'South Africa': 'za',
+ 'South Korea': 'kr',
+ 'Spain': 'es',
+ 'Sweden': 'se',
+ 'Switzerland': 'ch',
+ 'Taiwan': 'tw',
+ 'Thailand': 'th',
+ 'Turkey': 'tr',
+ 'United Arab Emirates': 'ae',
+ 'United Kingdom': 'gb',
+ 'United States': 'us',
+ 'Vietnam': 'vn'
+};
+
+// Maps sample city locations to their country codes (SAMPLE Dataset).
+const SAMPLE_LOCATIONS = {
+ 'Buenos Aires, Argentina': 'ar',
+ 'Sydney, Australia': 'au',
+ 'Bad Gastein, Austria': 'at',
+ 'Riffa, Bahrain': 'bh',
+ 'Brussels, Belgium': 'be',
+ 'Sao Paulo, Brazil': 'br',
+ 'Plovdiv, Bulgaria': 'bg',
+ 'Toronto, Canada': 'ca',
+ 'Santiago, Chile': 'cl',
+ 'Medellín, Colombia': 'co',
+ 'Brno, Czechia': 'cz',
+ 'Copenhagen, Denmark': 'dk',
+ 'Cairo, Egypt': 'eg',
+ 'Helsinki, Finland': 'fi',
+ 'Paris, France': 'fr',
+ 'Berlin, Germany': 'de',
+ 'Athens, Greece': 'gr',
+ 'Hong Kong, Hong Kong': 'hk',
+ 'Debrecen, Hungary': 'hu',
+ 'Mumbai, India': 'in',
+ 'Jakarta, Indonesia': 'id',
+ 'Cork, Ireland': 'ie',
+ 'Tel Aviv-Yafo, Israel': 'il',
+ 'Rome, Italy': 'it',
+ 'Tokyo, Japan': 'jp',
+ 'Busan, South Korea': 'kr',
+ 'Kuala Lumpur, Malaysia': 'my',
+ 'Mexico City, Mexico': 'mx',
+ 'Amsterdam, Netherlands': 'nl',
+ 'Wellington, New Zealand': 'nz',
+ 'Oslo, Norway': 'no',
+ 'Arequipa, Peru': 'pe',
+ 'Manila, Philippines': 'ph',
+ 'Warsaw, Poland': 'pl',
+ 'Lisbon, Portugal': 'pt',
+ 'Lusail, Qatar': 'qa',
+ 'Bucharest, Romania': 'ro',
+ 'Jeddah, Saudi Arabia': 'sa',
+ 'Singapore, Singapore': 'sg',
+ 'Johannesburg, South Africa': 'za',
+ 'Madrid, Spain': 'es',
+ 'Stockholm, Sweden': 'se',
+ 'Zurich, Switzerland': 'ch',
+ 'Taipei, Taiwan': 'tw',
+ 'Chiang Mai, Thailand': 'th',
+ 'Ankara, Turkey': 'tr',
+ 'Sharjah, United Arab Emirates': 'ae',
+ 'London, United Kingdom': 'gb',
+ 'New York City, United States': 'us',
+ 'Hanoi, Vietnam': 'vn'
+};
+
+// Holds the data from brands.json, loaded at startup.
+let BRANDS_DATA = [];
+
+// Maps Places API Types to their exact BigQuery Columns and Data Types
+const REGION_TYPE_TO_BQ_COLUMN = {
+ 'administrative_area_level_1': { column: 'administrative_area_level_1_id', type: 'STRING' },
+ 'administrative_area_level_2': { column: 'administrative_area_level_2_id', type: 'STRING' },
+ 'administrative_area_level_3': { column: 'administrative_area_level_3_id', type: 'STRING' },
+ 'administrative_area_level_4': { column: 'administrative_area_level_4_id', type: 'STRING' },
+ 'administrative_area_level_5': { column: 'administrative_area_level_5_id', type: 'STRING' },
+ 'administrative_area_level_6': { column: 'administrative_area_level_6_id', type: 'STRING' },
+ 'administrative_area_level_7': { column: 'administrative_area_level_7_id', type: 'STRING' },
+ 'locality': { column: 'locality_ids', type: 'ARRAY' },
+ 'sublocality': { column: 'sublocality_level_1_ids', type: 'ARRAY' },
+ 'sublocality_level_1': { column: 'sublocality_level_1_ids', type: 'ARRAY' },
+ 'sublocality_level_2': { column: 'sublocality_level_2_ids', type: 'ARRAY' },
+ 'sublocality_level_3': { column: 'sublocality_level_3_ids', type: 'ARRAY' },
+ 'sublocality_level_4': { column: 'sublocality_level_4_ids', type: 'ARRAY' },
+ 'sublocality_level_5': { column: 'sublocality_level_5_ids', type: 'ARRAY' },
+ 'neighborhood': { column: 'neighborhood_ids', type: 'ARRAY' },
+ 'postal_code': { column: 'postal_code_ids', type: 'ARRAY' },
+ 'postal_town': { column: 'postal_town_ids', type: 'ARRAY' }
+};
+
+// --- MAP & OVERLAY STATE ---
+// References to Google Maps and deck.gl objects.
+let map, searchCenter, searchCircle, searchPolygon, infoWindow, deckglOverlay;
+
+// Route Search State
+let originPlace = null, destinationPlace = null, routePolyline = null;
+
+// --- DRAWING STATE ---
+// Manages the custom polygon drawing process.
+let isDrawing = false;
+let polygonVertices = [];
+let tempPolyline;
+
+// --- AUTHENTICATION STATE ---
+// Manages the user's sign-in status and access token.
+let tokenClient, accessToken = null, userSignedIn = false;
+
+// --- UI STATE ---
+// Caches the content of guide.html to avoid re-fetching.
+let guideContentHtml = null;
+// Caches the last successfully executed query.
+let lastExecutedQuery = null;
+// Tracks if mouse is hovering over an H3 cell to prevent map click conflicts
+let isHoveringH3 = false;
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/style.css b/places_insights/places-insights-demo/style.css
new file mode 100644
index 0000000..2d64046
--- /dev/null
+++ b/places_insights/places-insights-demo/style.css
@@ -0,0 +1,520 @@
+/* Basic styles */
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+}
+
+#map {
+ height: 100%;
+}
+
+/* Modal styles */
+#country-selector-modal,
+#guide-modal,
+#query-modal {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.7);
+ z-index: 2000;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+#country-selector-modal.hidden,
+#guide-modal.hidden,
+#query-modal.hidden {
+ display: none;
+}
+
+.modal-content {
+ background-color: white;
+ padding: 25px 35px;
+ border-radius: 8px;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
+ text-align: center;
+ width: 90%;
+ max-width: 450px;
+ position: relative;
+}
+
+.modal-content h2 {
+ font-size: 24px;
+ margin-top: 0;
+}
+
+.modal-content p {
+ margin-bottom: 25px;
+ color: #555;
+ font-size: 16px;
+}
+
+#country-select {
+ width: 100%;
+ padding: 12px;
+ margin-bottom: 20px;
+ font-size: 16px;
+ border-radius: 4px;
+ border: 1px solid #ccc;
+ box-sizing: border-box;
+}
+
+#start-demo-btn {
+ width: 100%;
+ padding: 12px;
+ font-size: 16px;
+ font-weight: bold;
+ background-color: #4285F4;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.3s;
+}
+
+#start-demo-btn:hover {
+ background-color: #357ae8;
+}
+
+/* Help & Query Modal Specifics */
+#guide-modal .modal-content,
+#query-modal .modal-content {
+ text-align: left;
+ max-width: 700px;
+ max-height: 80vh;
+ overflow-y: auto;
+}
+
+.close-modal-btn {
+ position: absolute;
+ top: 10px;
+ right: 20px;
+ font-size: 28px;
+ font-weight: bold;
+ color: #aaa;
+ cursor: pointer;
+ line-height: 1;
+}
+
+.close-modal-btn:hover {
+ color: #333;
+}
+
+#guide-content h2,
+#guide-content h3 {
+ margin-top: 1.5em;
+ margin-bottom: 0.5em;
+}
+
+#guide-content p,
+#guide-content ul,
+#guide-content ol {
+ line-height: 1.6;
+}
+
+#query-content {
+ background-color: #f1f3f4;
+ border-radius: 4px;
+ padding: 15px;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ font-family: monospace;
+ font-size: 13px;
+}
+
+.modal-actions {
+ margin-top: 15px;
+ text-align: right;
+}
+
+
+/* Sidebar styles */
+#sidebar {
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ width: 320px;
+ max-height: calc(100% - 20px);
+ overflow-y: auto;
+ background-color: white;
+ padding: 15px;
+ border-radius: 8px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+ z-index: 1000;
+}
+
+.sidebar-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+}
+
+.sidebar-header h1 {
+ font-size: 20px;
+ margin: 0;
+}
+
+.sidebar-header-buttons {
+ display: flex;
+ gap: 8px;
+}
+
+.sidebar-header button {
+ font-size: 14px;
+ padding: 6px 10px;
+}
+
+#sidebar hr {
+ border: none;
+ border-top: 1px solid #eee;
+ margin: 15px 0;
+}
+
+.control-group {
+ margin-bottom: 15px;
+}
+
+.control-group label {
+ display: block;
+ font-size: 14px;
+ font-weight: 500;
+ margin-bottom: 5px;
+}
+
+.control-group input,
+.control-group select,
+.control-group textarea {
+ width: 100%;
+ padding: 8px;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-sizing: border-box;
+}
+
+.control-group textarea {
+ font-family: monospace;
+ resize: vertical;
+}
+
+.control-group textarea.invalid {
+ border-color: #ea4335;
+}
+
+.info-text {
+ font-size: 14px;
+ color: #555;
+ margin-top: 0;
+}
+
+.advanced-options label,
+.filter-group label {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+ font-weight: normal;
+}
+
+.advanced-options input,
+.filter-group input {
+ width: auto;
+ margin-right: 8px;
+}
+
+.drawing-buttons {
+ display: flex;
+ gap: 8px;
+ margin-bottom: 15px;
+}
+
+.drawing-buttons button {
+ flex: 1;
+}
+
+.input-with-button {
+ display: flex;
+ gap: 8px;
+}
+
+.input-with-button input {
+ flex: 1;
+}
+
+.input-with-button button {
+ flex-shrink: 0;
+ padding-left: 12px;
+ padding-right: 12px;
+ font-weight: bold;
+}
+
+/* Styles for Place Autocomplete (New) Web Component */
+#origin-input-container,
+#destination-input-container {
+ min-height: 36px;
+}
+
+gmp-place-autocomplete::part(input) {
+ width: 100%;
+ padding: 8px;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-sizing: border-box;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+}
+
+
+/* Attribute Filters Section */
+.attribute-filters {
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ padding: 0 10px;
+ margin-bottom: 15px;
+}
+
+.attribute-filters legend {
+ font-weight: 500;
+ padding: 0 5px;
+}
+
+.filter-group {
+ margin-bottom: 8px;
+}
+
+.rating-inputs,
+.time-inputs {
+ display: flex;
+ gap: 10px;
+ margin-bottom: 10px;
+}
+
+.rating-inputs .control-group,
+.time-inputs .control-group {
+ flex: 1;
+ margin-bottom: 0;
+}
+
+/* Collapsible Accordion Styles */
+.collapsible-fieldset > legend {
+ cursor: pointer;
+ position: relative;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 10px 5px;
+ margin-left: -5px;
+}
+
+.collapsible-fieldset > legend::after {
+ content: '+';
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ transform: translateY(-50%);
+ font-weight: bold;
+}
+
+.collapsible-fieldset.is-open > legend::after {
+ content: '−';
+}
+
+.collapsible-content {
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.3s ease-out;
+ padding: 0;
+}
+
+.collapsible-fieldset.is-open > .collapsible-content {
+ max-height: 600px; /* A large enough value */
+ padding: 10px 0;
+}
+
+.collapsible-fieldset:not(.is-open) {
+ padding-top: 0;
+ padding-bottom: 0;
+ border-width: 1px 0;
+}
+
+.collapsible-fieldset:not(.is-open):first-of-type {
+ border-top-width: 1px;
+}
+
+.collapsible-fieldset:not(.is-open) > legend {
+ margin-bottom: 0;
+}
+
+
+/* Auth container & Buttons */
+.auth-container {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ align-items: stretch;
+}
+
+#status {
+ margin: 0;
+ font-weight: bold;
+ text-align: center;
+ font-size: 13px;
+}
+
+#status.error {
+ color: #ea4335;
+}
+
+#status.success {
+ color: #34a853;
+}
+
+.main-buttons {
+ display: flex;
+ gap: 8px;
+ margin-top: 15px;
+}
+
+.main-buttons #run-query-btn {
+ flex-grow: 1;
+}
+
+button {
+ padding: 10px 15px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 16px;
+ transition: background-color 0.2s;
+}
+
+button:disabled {
+ background-color: #ccc;
+ cursor: not-allowed;
+}
+
+button.secondary-button {
+ background-color: #f1f3f4;
+ color: #5f6368;
+ font-size: 14px;
+ padding: 8px;
+}
+
+button.secondary-button:hover:not(:disabled) {
+ background-color: #e8eaed;
+}
+
+#run-query-btn {
+ background-color: #4285F4;
+ color: white;
+}
+
+#run-query-btn:hover:not(:disabled) {
+ background-color: #357ae8;
+}
+
+#auth-button {
+ background-color: #34a853;
+ color: white;
+}
+
+#auth-button:hover {
+ background-color: #2c8e44;
+}
+
+/* Autocomplete styles */
+.autocomplete-container {
+ position: relative;
+}
+
+#autocomplete-suggestions,
+#brand-autocomplete-suggestions {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ background: white;
+ border: 1px solid #ccc;
+ border-top: none;
+ border-radius: 0 0 4px 4px;
+ z-index: 1001;
+ max-height: 200px;
+ overflow-y: auto;
+}
+
+.suggestion-item {
+ padding: 8px;
+ cursor: pointer;
+}
+
+.suggestion-item:hover {
+ background-color: #f0f0f0;
+}
+
+/* Selected list styles */
+#selected-types-list,
+#selected-brands-list,
+#selected-regions-list {
+ list-style: none;
+ padding: 0;
+ margin: 10px 0;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+}
+
+.selected-type-tag {
+ display: flex;
+ align-items: center;
+ background-color: #e0e0e0;
+ padding: 5px 10px;
+ border-radius: 15px;
+ font-size: 14px;
+}
+
+.remove-tag-btn {
+ background: none;
+ border: none;
+ color: #555;
+ cursor: pointer;
+ margin-left: 8px;
+ font-size: 16px;
+ padding: 0;
+}
+
+.remove-tag-btn:hover {
+ color: black;
+}
+
+/* Tooltip for deck.gl */
+#tooltip {
+ position: absolute;
+ z-index: 1001;
+ pointer-events: none;
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+ padding: 8px;
+ border-radius: 4px;
+ font-size: 12px;
+}
+
+.hidden {
+ display: none;
+}
+
+/* InfoWindow container for Place Details Component */
+.info-window-component-container {
+ width: 300px;
+ min-height: 200px;
+ display: block;
+ overflow: hidden;
+}
+
+.info-window-component-container gmp-place-details-compact {
+ width: 100%;
+}
\ No newline at end of file
diff --git a/places_insights/places-insights-demo/ui.js b/places_insights/places-insights-demo/ui.js
new file mode 100644
index 0000000..f69aa7d
--- /dev/null
+++ b/places_insights/places-insights-demo/ui.js
@@ -0,0 +1,325 @@
+// Copyright 2026 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// --- UI HELPERS ---
+
+/**
+ * Converts a string to Title Case.
+ * @param {string} str The string to convert.
+ * @returns {string} The Title Cased string.
+ */
+function toTitleCase(str) {
+ if (!str) return '';
+ return str.toLowerCase().split(' ').map(word => {
+ return word.charAt(0).toUpperCase() + word.slice(1);
+ }).join(' ');
+}
+
+/**
+ * Resets the sidebar UI to a specific mode's default state.
+ * Clears input values and toggles the appropriate control sections.
+ * @param {string} targetMode The demo mode to switch to (e.g., 'circle-search'). Defaults to 'circle-search'.
+ */
+function resetSidebarUI(targetMode = 'circle-search') {
+ const select = document.getElementById('demo-type-select');
+ if (select.value !== targetMode) {
+ select.value = targetMode;
+ }
+
+ // Map modes to their control container IDs
+ const modeToControls = {
+ 'circle-search': 'circle-search-controls',
+ 'h3-function': 'circle-search-controls', // H3 function uses circle inputs
+ 'polygon-search': 'polygon-search-controls',
+ 'region-search': 'region-search-controls',
+ 'route-search': 'route-search-controls'
+ };
+
+ const activeControlId = modeToControls[targetMode];
+
+ // Hide all control sections first
+ ['circle-search-controls', 'polygon-search-controls', 'region-search-controls', 'route-search-controls']
+ .forEach(id => {
+ const el = document.getElementById(id);
+ if (id === activeControlId) {
+ el.classList.remove('hidden');
+ } else {
+ el.classList.add('hidden');
+ }
+ });
+
+ // Reset Input Values
+ // Set default radius to 5000m for H3 Function, 1000m for others
+ if (targetMode === 'h3-function') {
+ document.getElementById('radius-input').value = '5000';
+ } else {
+ document.getElementById('radius-input').value = '1000';
+ }
+
+ document.getElementById('wkt-input').value = '';
+ document.getElementById('wkt-input').classList.remove('invalid');
+
+ // Reset Region Search
+ document.getElementById('selected-regions-list').innerHTML = '';
+ if (window.regionAutocomplete) {
+ window.regionAutocomplete.inputValue = '';
+ }
+
+ document.getElementById('route-radius-input').value = '100';
+
+ // Reset Filters
+ document.getElementById('place-type-input').value = '';
+ document.getElementById('selected-types-list').innerHTML = '';
+ // Reset Type Checkbox
+ document.getElementById('primary-type-checkbox').checked = false;
+
+ document.getElementById('min-rating-input').value = '';
+ document.getElementById('max-rating-input').value = '';
+ document.getElementById('business-status-select').value = 'OPERATIONAL';
+ document.getElementById('price-level-select').value = '';
+ document.querySelectorAll('.attribute-filter').forEach(cb => cb.checked = false);
+
+ // Reset Time
+ const daySelect = document.getElementById('day-of-week-select');
+ const startInput = document.getElementById('start-time-input');
+ const endInput = document.getElementById('end-time-input');
+ daySelect.value = '';
+ startInput.value = '';
+ endInput.value = '';
+ startInput.disabled = true;
+ endInput.disabled = true;
+
+ // Reset Brands
+ document.getElementById('brand-name-input').value = '';
+ document.getElementById('selected-brands-list').innerHTML = '';
+
+ // Reset H3 Controls (Default State)
+ // Specific overrides for 'h3-function' are handled in map.js after this call.
+ const h3Toggle = document.getElementById('h3-density-toggle');
+ h3Toggle.checked = false;
+ h3Toggle.disabled = false;
+
+ document.getElementById('h3-resolution-controls').classList.add('hidden');
+ const h3Slider = document.getElementById('h3-resolution-slider');
+ h3Slider.max = '12';
+ h3Slider.value = '8';
+ document.getElementById('h3-resolution-value').textContent = '8';
+
+ // Close Accordions
+ document.querySelectorAll('.collapsible-fieldset').forEach(fs => fs.classList.remove('is-open'));
+}
+
+
+/**
+ * A generic function to add a removable "tag" to a list.
+ */
+function addTag(text, listElement) {
+ if ([...listElement.querySelectorAll('span')].some(el => el.textContent === text)) return;
+
+ const tag = document.createElement('li');
+ tag.className = 'selected-type-tag';
+ const textSpan = document.createElement('span');
+ textSpan.textContent = text;
+ const removeBtn = document.createElement('button');
+ removeBtn.className = 'remove-tag-btn';
+ removeBtn.innerHTML = '×';
+ removeBtn.onclick = () => {
+ tag.remove();
+ invalidateQueryState(); // Invalidate when a tag is removed
+ };
+
+ tag.appendChild(textSpan);
+ tag.appendChild(removeBtn);
+ listElement.appendChild(tag);
+}
+
+/**
+ * Adds a region tag that explicitly stores its Place ID, column, data type, and viewport.
+ */
+function addRegionTag(name, id, columnObj, location, viewport) {
+ const listElement = document.getElementById('selected-regions-list');
+ if ([...listElement.querySelectorAll('.selected-region-tag')].some(el => el.dataset.id === id)) return;
+
+ const tag = document.createElement('li');
+ tag.className = 'selected-type-tag selected-region-tag';
+ tag.dataset.id = id;
+ tag.dataset.column = columnObj.column;
+ tag.dataset.colType = columnObj.type;
+
+ // Store Viewport for accurate bounding box
+ if (viewport) {
+ const vp = viewport.toJSON();
+ tag.dataset.north = vp.north;
+ tag.dataset.south = vp.south;
+ tag.dataset.east = vp.east;
+ tag.dataset.west = vp.west;
+ }
+
+ // Always store location as a fallback
+ if (location) {
+ tag.dataset.lat = location.lat();
+ tag.dataset.lng = location.lng();
+ }
+
+ const textSpan = document.createElement('span');
+ textSpan.textContent = name;
+
+ const removeBtn = document.createElement('button');
+ removeBtn.className = 'remove-tag-btn';
+ removeBtn.innerHTML = '×';
+ removeBtn.onclick = () => {
+ tag.remove();
+ invalidateQueryState();
+ };
+
+ tag.appendChild(textSpan);
+ tag.appendChild(removeBtn);
+ listElement.appendChild(tag);
+}
+
+/**
+ * Initializes the place type autocomplete functionality.
+ */
+function initializeAutocomplete(inputElement) {
+ const suggestionsContainer = document.getElementById('autocomplete-suggestions');
+ const selectedTypesList = document.getElementById('selected-types-list');
+
+ inputElement.addEventListener('input', () => {
+ const query = inputElement.value.toLowerCase();
+ suggestionsContainer.innerHTML = '';
+ if (!query) return;
+
+ const filteredTypes = PLACE_TYPES
+ .filter(t => t.toLowerCase().includes(query))
+ .sort((a, b) => {
+ const aL = a.toLowerCase(), bL = b.toLowerCase();
+ const sA = (aL === query) ? 1 : (aL.startsWith(query) ? 2 : 3);
+ const sB = (bL === query) ? 1 : (bL.startsWith(query) ? 2 : 3);
+ if (sA !== sB) return sA - sB;
+ return a.localeCompare(b);
+ }).slice(0, 10);
+
+ filteredTypes.forEach(type => {
+ const item = document.createElement('div');
+ item.className = 'suggestion-item';
+ item.textContent = type;
+ item.addEventListener('click', () => {
+ addTag(type, selectedTypesList);
+ inputElement.value = '';
+ suggestionsContainer.innerHTML = '';
+ invalidateQueryState(); // Invalidate on add
+ });
+ suggestionsContainer.appendChild(item);
+ });
+ });
+
+ document.addEventListener('click', e => {
+ if (!e.target.closest('.autocomplete-container')) {
+ suggestionsContainer.innerHTML = '';
+ }
+ });
+}
+
+/**
+ * Converts a google.maps.Polygon object to a WKT string and updates the textarea.
+ */
+function updateWktFromPolygon(polygon) {
+ const path = polygon.getPath().getArray();
+ const wktInput = document.getElementById('wkt-input');
+ if (path.length < 3) {
+ wktInput.value = '';
+ return;
+ }
+ let wkt = "POLYGON((";
+ wkt += path.map(p => `${p.lng()} ${p.lat()}`).join(', ');
+ wkt += `, ${path[0].lng()} ${path[0].lat()}`;
+ wkt += "))";
+ wktInput.value = wkt;
+ wktInput.classList.remove('invalid');
+}
+
+/**
+ * Handles user input in the WKT textarea, parsing it and drawing a polygon on the map.
+ */
+function handleWktInputChange(e) {
+ const wktString = e.target.value;
+ const wktInput = e.target;
+ try {
+ const coords = wktString.match(/\(\((.*)\)\)/)[1].split(',').map(c => {
+ const parts = c.trim().split(' ');
+ return { lng: parseFloat(parts[0]), lat: parseFloat(parts[1]) };
+ });
+
+ if (coords.length < 4 || isNaN(coords[0].lat)) throw new Error("Invalid coordinate format");
+
+ clearAllOverlays();
+
+ searchPolygon = new google.maps.Polygon({
+ paths: coords,
+ editable: true, draggable: true, fillColor: '#5599FF', fillOpacity: 0.3,
+ strokeColor: '#0000FF', strokeWeight: 2, map: map
+ });
+
+ searchPolygon.getPaths().forEach(path => {
+ google.maps.event.addListener(path, 'set_at', () => {
+ updateWktFromPolygon(searchPolygon);
+ invalidateQueryState();
+ });
+ google.maps.event.addListener(path, 'insert_at', () => {
+ updateWktFromPolygon(searchPolygon);
+ invalidateQueryState();
+ });
+ });
+
+ wktInput.classList.remove('invalid');
+ } catch (err) {
+ wktInput.classList.add('invalid');
+ }
+}
+
+// --- STATUS & AUTH UI HELPERS ---
+
+/**
+ * Updates the status message in the sidebar.
+ * @param {string} message The text to display.
+ * @param {string} type 'info', 'success', or 'error'.
+ */
+function updateStatus(message, type = 'info') {
+ const statusDisplay = document.getElementById('status');
+ if (statusDisplay) {
+ statusDisplay.textContent = message;
+ statusDisplay.className = type;
+ }
+}
+
+/**
+ * Updates the UI to a "signed-in" state.
+ */
+function setSignedInUi() {
+ userSignedIn = true;
+ document.getElementById('auth-button').textContent = 'Sign Out';
+ document.getElementById('run-query-btn').disabled = false;
+ updateStatus('Authorized successfully.', 'success');
+}
+
+/**
+ * Updates the UI to a "signed-out" state.
+ */
+function resetSignedInUi() {
+ userSignedIn = false;
+ document.getElementById('auth-button').textContent = 'Authorize with Google';
+ document.getElementById('run-query-btn').disabled = true;
+ accessToken = null;
+ updateStatus('Please authorize to run a query.');
+}
\ No newline at end of file
diff --git a/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/README.md b/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/README.md
new file mode 100644
index 0000000..5e3ace8
--- /dev/null
+++ b/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/README.md
@@ -0,0 +1,10 @@
+### Description
+
+This query calculates the density of bars and restaurants within a geographic area (New York City) by aggregating them into H3 cells. The output includes separate counts for bars and restaurants, a total count, and the H3 cell boundary, making it ideal for creating a multi-layered heatmap visualization.
+
+### Key Concepts
+
+* **H3 Spatial Indexing:** Uses the `carto-os.carto.H3_FROMGEOGPOINT` function to assign each place's location to a specific H3 hexagonal cell (at resolution 8). This is a highly efficient method for creating uniform spatial bins for aggregation.
+* **Conditional Aggregation:** Employs `COUNTIF` to efficiently count different categories (`bar`, `restaurant`) within a single pass over the data. This is more performant than running multiple queries or subqueries.
+* **Two-Step Geometry Generation:** The query first calculates the counts per H3 index. The outer query then uses `carto-os.carto.H3_BOUNDARY` to generate the polygon geometry for each H3 cell, preparing the data for mapping tools.
+* **Performance Optimization:** The `WHERE` clause pre-filters for places that are either a `bar` or `restaurant`. This reduces the amount of data processed by the `GROUP BY` clause, improving query efficiency.
diff --git a/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/bars_and_restaurants_by_h3_cell_nyc.sql b/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/bars_and_restaurants_by_h3_cell_nyc.sql
new file mode 100644
index 0000000..89d9f9e
--- /dev/null
+++ b/places_insights/sample_queries/bars_and_restaurants_by_h3_cell_nyc/bars_and_restaurants_by_h3_cell_nyc.sql
@@ -0,0 +1,30 @@
+-- Step 2: Join the aggregated counts with the H3 cell boundary for visualization
+SELECT
+ h3_index,
+ `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geography,
+ bar_count,
+ restaurant_count,
+ total_count
+FROM (
+ -- Step 1: Calculate the counts per H3 cell
+ SELECT
+ WITH
+ AGGREGATION_THRESHOLD
+ `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
+ COUNTIF('bar' IN UNNEST(types)) AS bar_count,
+ COUNTIF('restaurant' IN UNNEST(types)) AS restaurant_count,
+ COUNT(*) AS total_count
+ FROM
+ `places_insights___us.places`
+ WHERE
+ -- Filter for NYC
+ 'New York' IN UNNEST(locality_names)
+ AND administrative_area_level_1_name = 'New York'
+ -- Pre-filter to only include places that are either a bar or a restaurant for efficiency
+ AND ('bar' IN UNNEST(types)
+ OR 'restaurant' IN UNNEST(types))
+ GROUP BY
+ h3_index
+)
+ORDER BY
+ total_count DESC;
diff --git a/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/README.md b/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/README.md
new file mode 100644
index 0000000..9a851f4
--- /dev/null
+++ b/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/README.md
@@ -0,0 +1,9 @@
+### Description
+This query aggregates place counts into S2 cells, an alternative spatial indexing system to H3. It calculates the density of bars and restaurants in New York City and returns the S2 cell ID, its boundary, and separate counts for each category, which is ideal for creating a density heatmap.
+
+### Key Concepts
+
+* **S2 Spatial Indexing:** Uses the native BigQuery GIS function `S2_CELLIDFROMPOINT` to generate a unique ID for the S2 cell (at level 14) containing each place's point. S2 cells are quadrilateral (mostly square) and are another standard for spatial aggregation.
+* **Conditional Aggregation:** Employs `COUNTIF` to efficiently count different place types (`bar`, `restaurant`) in a single aggregation pass.
+* **Two-Step Geometry Generation:** The inner query computes the counts per `s2_cell_id`. The outer query then uses the `carto-os.carto.S2_BOUNDARY` function to generate the polygon geometry for each S2 cell, making the results ready for visualization.
+* **Performance Optimization:** The `WHERE` clause pre-filters for the relevant place types before grouping, which is an efficient pattern that reduces the amount of data shuffled during aggregation.
diff --git a/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/bars_and_restaurants_by_s2_cell_nyc.sql b/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/bars_and_restaurants_by_s2_cell_nyc.sql
new file mode 100644
index 0000000..d743564
--- /dev/null
+++ b/places_insights/sample_queries/bars_and_restaurants_by_s2_cell_nyc/bars_and_restaurants_by_s2_cell_nyc.sql
@@ -0,0 +1,32 @@
+-- Step 2: Join the aggregated counts with the S2 cell boundary for visualization
+SELECT
+ s2_cell_id,
+ -- Use the stable CARTO function to get the S2 cell's geography
+ `carto-os.carto.S2_BOUNDARY`(s2_cell_id) AS s2_geography,
+ bar_count,
+ restaurant_count,
+ total_count
+FROM (
+ -- Step 1: Calculate the counts per S2 cell
+ SELECT
+ WITH
+ AGGREGATION_THRESHOLD
+ -- Get the S2 Cell ID at level 14 for each place's point
+ S2_CELLIDFROMPOINT(point, 14) AS s2_cell_id,
+ COUNTIF('bar' IN UNNEST(types)) AS bar_count,
+ COUNTIF('restaurant' IN UNNEST(types)) AS restaurant_count,
+ COUNT(*) AS total_count
+ FROM
+ `places_insights___us.places`
+ WHERE
+ -- Filter for NYC
+ 'New York' IN UNNEST(locality_names)
+ AND administrative_area_level_1_name = 'New York'
+ -- Pre-filter to only include places that are either a bar or a restaurant for efficiency
+ AND ('bar' IN UNNEST(types)
+ OR 'restaurant' IN UNNEST(types))
+ GROUP BY
+ s2_cell_id
+)
+ORDER BY
+ total_count DESC;
diff --git a/places_insights/sample_queries/bars_in_paris_by_s2_cell/README.md b/places_insights/sample_queries/bars_in_paris_by_s2_cell/README.md
new file mode 100644
index 0000000..a150e4c
--- /dev/null
+++ b/places_insights/sample_queries/bars_in_paris_by_s2_cell/README.md
@@ -0,0 +1,8 @@
+### Description
+This query generates a table of S2 cells in Paris, France, with each cell containing a count of bars. The two-step process first aggregates counts and then generates geometries, resulting in an output that is ready for creating a density heatmap in a visualization tool.
+
+### Key Concepts
+* **Country-Specific Table:** Correctly uses the `places_insights___fr.places` table to query data for France.
+* **S2 Spatial Indexing:** Employs the `S2_CELLIDFROMPOINT` function to bin each bar's location into a level-14 S2 cell, which is an appropriate resolution for city-level analysis.
+* **Two-Step Geometry Generation:** The inner query efficiently calculates the `bar_count` for each `s2_cell_id`. The outer query then uses `carto-os.carto.S2_BOUNDARY` to convert the cell IDs into polygons for mapping.
+* **Attribute and Location Filtering:** The query effectively filters the dataset down to the specific `locality.name` ('Paris') and place `type` ('bar') before performing any aggregations.
diff --git a/places_insights/sample_queries/bars_in_paris_by_s2_cell/bars_in_paris_by_s2_cell.sql b/places_insights/sample_queries/bars_in_paris_by_s2_cell/bars_in_paris_by_s2_cell.sql
new file mode 100644
index 0000000..8b3b89d
--- /dev/null
+++ b/places_insights/sample_queries/bars_in_paris_by_s2_cell/bars_in_paris_by_s2_cell.sql
@@ -0,0 +1,31 @@
+-- This query generates a table of S2 cells in Paris, each containing a count of bars.
+-- The output is ready for visualization in a heatmap.
+
+-- Step 2: The outer query takes the S2 cell IDs and counts, and generates the actual
+-- polygon shape for each cell, which is needed for mapping tools.
+SELECT
+ s2_cell_id,
+ bar_count,
+ -- This CARTO function turns the S2 cell ID into a visual geography (a polygon).
+ `carto-os.carto.S2_BOUNDARY`(s2_cell_id) AS s2_geography
+FROM (
+ -- Step 1: The inner query finds all bars in Paris, assigns them to an S2 cell,
+ -- and counts how many are in each cell.
+ SELECT WITH AGGREGATION_THRESHOLD
+ -- S2_CELLIDFROMPOINT groups each place's location into a specific S2 cell.
+ -- Level 14 is a good size for city blocks. Higher numbers = smaller cells.
+ S2_CELLIDFROMPOINT(point, 14) AS s2_cell_id,
+ COUNT(*) AS bar_count
+ FROM
+ -- We must use the 'fr' table for data in France.
+ `places_insights___fr.places`
+ WHERE
+ -- Filter down to the city of Paris.
+ locality.name = 'Paris'
+ -- And select only places that have 'bar' in their list of types.
+ AND 'bar' IN UNNEST(types)
+ GROUP BY
+ s2_cell_id
+)
+ORDER BY
+ bar_count DESC;
diff --git a/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/README.md b/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/README.md
new file mode 100644
index 0000000..73445bd
--- /dev/null
+++ b/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/README.md
@@ -0,0 +1,9 @@
+### Description
+This query produces a high-resolution density map of pubs in London. It dynamically fetches the official boundary for London from the `overture_maps` public dataset, uses it to filter the Places data, and then aggregates the results into H3 cells for visualization. This pattern is powerful for analyzing data within precise, complex administrative areas without needing to hardcode a polygon.
+
+### Key Concepts
+* **Dynamic Boundary Loading:** Uses `DECLARE` and `SET` to create a `GEOGRAPHY` variable. This variable is populated with the shape of London by querying the `bigquery-public-data.overture_maps.division_area` table, making the query adaptable and precise.
+* **Correct UK Table:** Critically, it uses `places_insights___gb.places`, adhering to the product requirement of using the `gb` country code for the United Kingdom.
+* **CTE for Logical Flow:** A Common Table Expression (CTE) is used to first identify all `pub` locations that fall within the London boundary using `ST_CONTAINS`. This step isolates the filtering logic from the aggregation logic.
+* **Final Aggregation:** The final `SELECT` statement performs the `COUNT` and `GROUP BY` on the pre-filtered data from the CTE. This is where the mandatory `SELECT WITH AGGREGATION_THRESHOLD` clause is placed.
+* **H3 Geometry Generation:** `carto-os.carto.H3_BOUNDARY` is used in the final step to generate the hexagonal cell geometries for mapping.
diff --git a/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/pubs_in_london_by_h3_cell_dynamic_boundary.sql b/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/pubs_in_london_by_h3_cell_dynamic_boundary.sql
new file mode 100644
index 0000000..6b92d97
--- /dev/null
+++ b/places_insights/sample_queries/pubs_in_london_by_h3_cell_dynamic_boundary/pubs_in_london_by_h3_cell_dynamic_boundary.sql
@@ -0,0 +1,50 @@
+-- This query creates a high-resolution density map of pubs within the official Overture Maps boundary for London.
+
+-- Step 1: Declare a variable to hold the geometry of London.
+DECLARE london_boundary GEOGRAPHY;
+
+-- Step 2: Set the variable by querying the Overture Maps public dataset for London's shape.
+-- The subquery ensures we get a single GEOGRAPHY value. We add LIMIT 1 as a safeguard.
+SET london_boundary = (
+ SELECT
+ ST_MAKEPOLYGON(ST_EXTERIORRING(geometry)) as geometry
+ FROM `bigquery-public-data.overture_maps.division_area` area , unnest (names.common.key_value) kv
+ WHERE
+ country = 'GB' and class="land"
+ and (kv.key="en" and kv.value = "London")
+
+);
+-- Step 3: Use a Common Table Expression (CTE) to find all pubs inside the London boundary
+-- and calculate their H3 index.
+WITH pubs_in_london AS (
+ SELECT
+ -- For each pub's geographic point, calculate its corresponding H3 index at resolution 7.
+ `carto-os.carto.H3_FROMGEOGPOINT`(point, 7) as h3_index
+ FROM
+ -- CRITICAL: We must use the 'gb' table for the United Kingdom.
+ `places_insights___gb.places`
+ WHERE
+ -- Filter 1: The place must be a 'pub'.
+ 'pub' IN UNNEST(types)
+ -- Filter 2: The place's point must be geographically contained within the London boundary we just defined.
+ AND ST_CONTAINS(london_boundary, point)
+)
+
+-- Step 4: Aggregate the results from the CTE to get the final counts and cell geometries.
+SELECT WITH AGGREGATION_THRESHOLD
+ -- The H3 cell identifier.
+ h3_index,
+
+ -- The total count of pubs found within this cell.
+ COUNT(*) AS pub_count,
+
+ -- This function takes the H3 index and returns its actual hexagonal polygon shape for visualization.
+ `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geography
+FROM
+ pubs_in_london
+GROUP BY
+ -- Group by the H3 index to count how many pubs fall into each unique cell.
+ h3_index
+ORDER BY
+ -- Show the most dense pub areas first.
+ pub_count DESC;
diff --git a/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/README.md b/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/README.md
new file mode 100644
index 0000000..4155f2e
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/README.md
@@ -0,0 +1,8 @@
+### Description
+This query first identifies all restaurants within a specific circular area (a 10km radius around a point in Mumbai, India) and then aggregates them into H3 cells. The result is a list of H3 cells, their geometries, and the count of restaurants within each, perfect for creating a fine-grained density heatmap of a specific point of interest.
+
+### Key Concepts
+* **Country-Specific Table:** This query uses the `places_insights___in.places` table to analyze data specifically for India.
+* **Circular Geospatial Filter:** Leverages `ST_DWITHIN` to efficiently filter for all places within a given radius (10,000 meters) of a central point. This is the most performant way to conduct a radius search.
+* **H3 Spatial Indexing:** Uses `carto-os.carto.H3_FROMGEOGPOINT` to bin the filtered restaurants into H3 cells (at resolution 8), which are then counted.
+* **Two-Step Geometry Generation:** As with other heatmap queries, it first aggregates the counts by H3 index and then uses `carto-os.carto.H3_BOUNDARY` in an outer query to generate the cell polygon for visualization.
diff --git a/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/restaurants_in_radius_by_h3_cell_india.sql b/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/restaurants_in_radius_by_h3_cell_india.sql
new file mode 100644
index 0000000..8ad1db5
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_in_radius_by_h3_cell_india/restaurants_in_radius_by_h3_cell_india.sql
@@ -0,0 +1,18 @@
+SELECT
+ h3_index,
+ `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
+ place_count
+FROM (
+ SELECT WITH AGGREGATION_THRESHOLD
+ `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
+ COUNT(*) AS place_count
+ FROM
+ `places_insights___in.places`
+ WHERE
+ -- First, filter for places within a 10km radius of the specified point
+ ST_DWITHIN(point, ST_GEOGPOINT(72.82659778844332, 18.96337985829327), 10000)
+ -- Then, filter for only restaurants
+ AND primary_type = 'restaurant'
+ GROUP BY
+ h3_index
+)
diff --git a/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/README.md b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/README.md
new file mode 100644
index 0000000..ceb8e3b
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/README.md
@@ -0,0 +1,8 @@
+### Description
+This query provides a simple and efficient way to count the number of restaurants in each neighborhood of São Paulo, Brazil. It leverages the built-in address components of the Brazil-specific schema to produce a table of neighborhood names and their corresponding restaurant counts. This output is ideal for generating a ranked list or a bar chart, but does not include the geographic shapes needed for a choropleth map.
+
+### Key Concepts
+* **Country-Specific Table:** Correctly uses the `places_insights___br.places` table for analysis in Brazil.
+* **Record-Based Access:** Demonstrates the correct `record.field` syntax (e.g., `sublocality_level_1.name`) for accessing data from `STRUCT` type columns, which is common in country-specific schemas.
+* **Efficient Grouping:** Avoids complex and costly geospatial joins by grouping directly on the neighborhood name field provided in the data.
+* **Tabular Analysis:** This pattern is best suited for creating tables and charts, as it does not retrieve the polygon geometries required for map-based visualizations like choropleths.
diff --git a/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/restaurants_per_neighborhood_sao_paulo.sql b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/restaurants_per_neighborhood_sao_paulo.sql
new file mode 100644
index 0000000..c7b0bb0
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo/restaurants_per_neighborhood_sao_paulo.sql
@@ -0,0 +1,22 @@
+-- This query counts restaurants per neighborhood in São Paulo using the built-in address components.
+-- NOTE: This produces a table of counts but does not include neighborhood geometries for mapping.
+
+SELECT WITH AGGREGATION_THRESHOLD
+ -- Access the .name field directly from the sublocality_level_1 record.
+ sublocality_level_1.name AS neighborhood_name,
+ -- The total count of restaurants found in that neighborhood.
+ COUNT(*) AS restaurant_count
+FROM
+ -- The FROM clause now only needs the main table.
+ `places_insights___br.places`
+WHERE
+ -- Filter 1: The place must be a 'restaurant'.
+ 'restaurant' IN UNNEST(types)
+ -- Filter 2: The place must be located within the city of São Paulo.
+ AND administrative_area_level_2.name = 'São Paulo'
+GROUP BY
+ -- Group by the neighborhood name to get the count for each one.
+ neighborhood_name
+ORDER BY
+ -- Show the neighborhoods with the most restaurants first.
+ restaurant_count DESC;
diff --git a/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/README.md b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/README.md
new file mode 100644
index 0000000..c767660
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/README.md
@@ -0,0 +1,9 @@
+### Description
+This query produces a choropleth map-ready table that shows the count of restaurants within each "macrohood" (a type of neighborhood) of São Paulo, Brazil. It demonstrates a sophisticated, multi-step geospatial process: first, it identifies all relevant neighborhood boundaries within the city, then joins them to the Places data to calculate counts, and finally rejoins the geometries for visualization.
+
+### Key Concepts
+* **Hierarchical Boundary Filtering:** A powerful pattern where a large boundary (São Paulo city) is first retrieved from Overture Maps and then used with `ST_CONTAINS` to select a set of smaller, contained boundaries (the macrohoods).
+* **Two-Step Geometry Retrieval:** A best-practice pattern for choropleth maps. The query first calculates the counts grouped by a non-geography `id` and `name`. A final `JOIN` is then used to attach the `GEOGRAPHY` data back to the aggregated counts, as `GEOGRAPHY` types cannot be used in a `GROUP BY` clause.
+* **Country-Specific Table:** Correctly uses the `places_insights___br.places` table for analysis in Brazil.
+* **Geometry Simplification:** Uses `ST_SIMPLIFY` in the final step to reduce the complexity of the neighborhood polygons, ensuring better performance in mapping tools.
+* **Joining Public and Private Datasets:** Effectively combines the proprietary Places Insights data with the public Overture Maps dataset to achieve a detailed, location-based analysis.
diff --git a/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/restaurants_per_neighborhood_sao_paulo_choropleth.sql b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/restaurants_per_neighborhood_sao_paulo_choropleth.sql
new file mode 100644
index 0000000..9215eae
--- /dev/null
+++ b/places_insights/sample_queries/restaurants_per_neighborhood_sao_paulo_choropleth/restaurants_per_neighborhood_sao_paulo_choropleth.sql
@@ -0,0 +1,63 @@
+-- STEP 1: Create a temporary table of all São Paulo macrohood boundaries.
+WITH neighborhood_geometries AS (
+ SELECT
+ neighborhoods.id,
+ neighborhoods.names.primary AS macrohood_name,
+ neighborhoods.geometry AS macrohood_geography
+ FROM
+ `bigquery-public-data.overture_maps.division_area` AS neighborhoods
+ WHERE
+ neighborhoods.subtype = 'macrohood'
+ AND ST_CONTAINS(
+ (
+ SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
+ WHERE country = 'BR'
+ AND region = 'BR-SP'
+ AND subtype = 'locality'
+ AND names.primary = 'São Paulo'
+ LIMIT 1
+ ),
+ neighborhoods.geometry
+ )
+),
+
+-- STEP 2: Perform the join and aggregation. This CTE calculates the counts.
+counts_by_neighborhood AS (
+ SELECT WITH AGGREGATION_THRESHOLD
+ -- We only select the columns we can group by: the neighborhood's ID and name.
+ neighborhoods.id AS neighborhood_id,
+ neighborhoods.macrohood_name,
+ -- Perform the count of restaurants for each group.
+ COUNT(restaurants.id) AS restaurant_count
+ FROM
+ -- We start from the boundaries we defined in the first CTE.
+ neighborhood_geometries AS neighborhoods
+ JOIN
+ -- Join to the Brazil Places Insights data.
+ `places_insights___br.places` AS restaurants
+ ON ST_CONTAINS(neighborhoods.macrohood_geography, restaurants.point)
+ WHERE
+ -- Filter for restaurants.
+ 'restaurant' IN UNNEST(restaurants.types)
+ GROUP BY
+ neighborhoods.id,
+ neighborhoods.macrohood_name
+)
+
+-- STEP 3: Join the calculated counts back to the geometries to create the final output.
+SELECT
+ counts.macrohood_name,
+ counts.restaurant_count,
+
+ -- Now we retrieve the geometry by joining on the ID, and we can safely simplify it for mapping.
+ ST_SIMPLIFY(geometries.macrohood_geography, 100) AS geography_for_map
+FROM
+ -- Start with our table of counts.
+ counts_by_neighborhood AS counts
+JOIN
+ -- Join back to our table of geometries using the unique ID.
+ neighborhood_geometries AS geometries
+ ON counts.neighborhood_id = geometries.id
+ORDER BY
+ -- Order the results to show the most dense restaurant areas first.
+ restaurant_count DESC;
diff --git a/places_insights/sample_queries/supermarkets_by_zip_nyc/README.md b/places_insights/sample_queries/supermarkets_by_zip_nyc/README.md
new file mode 100644
index 0000000..18f875d
--- /dev/null
+++ b/places_insights/sample_queries/supermarkets_by_zip_nyc/README.md
@@ -0,0 +1,10 @@
+### Description
+
+This query generates a table suitable for creating a choropleth map. It counts the number of places of a specific type (`supermarket`) that fall within each ZIP code for a given area (New York City). The final output includes the ZIP code, the count of supermarkets, and the simplified geometry of the ZIP code for visualization.
+
+### Key Concepts
+
+* **Geospatial Join:** Uses `ST_CONTAINS` to join the point data from `places_insights___us.places` with polygon data from the public `geo_us_boundaries.zip_codes` table.
+* **Two-Step Geometry Retrieval:** Because `GEOGRAPHY` data types cannot be used in a `GROUP BY` clause, the query first calculates the counts per `zip_code` in a Common Table Expression (CTE). It then joins those results back to the boundaries table a second time to retrieve the `zip_code_geom` for the final output.
+* **Geometry Simplification:** Uses `ST_SIMPLIFY` to reduce the complexity of the ZIP code polygons. This is a best practice that significantly improves rendering performance in visualization tools like Looker Studio or BigQuery's Geo Viz.
+* **Mandatory Aggregation Clause:** The `SELECT WITH AGGREGATION_THRESHOLD` clause is correctly placed in the first pass where the `COUNT` aggregation occurs.
diff --git a/places_insights/sample_queries/supermarkets_by_zip_nyc/supermarkets_by_zip_nyc.sql b/places_insights/sample_queries/supermarkets_by_zip_nyc/supermarkets_by_zip_nyc.sql
new file mode 100644
index 0000000..7a55d86
--- /dev/null
+++ b/places_insights/sample_queries/supermarkets_by_zip_nyc/supermarkets_by_zip_nyc.sql
@@ -0,0 +1,40 @@
+-- This query counts the number of supermarkets in each ZIP code in New York City.
+-- STEP 1: Join places to ZIP code boundaries, filter for New York City and the place type,
+-- and then perform the aggregation.
+WITH counts_in_zip_boundaries AS (
+ SELECT WITH AGGREGATION_THRESHOLD
+ zip_boundaries.zip_code AS zip_code,
+ COUNT(places_table.id) AS supermarket_count
+ FROM
+ -- Start with the public table of ZIP code shapes
+ `bigquery-public-data.geo_us_boundaries.zip_codes` AS zip_boundaries
+ JOIN
+ -- Join to the Places Insights data
+ `places_insights___us.places` AS places_table
+ -- The join condition finds which ZIP code polygon each place's point is inside
+ ON ST_CONTAINS(zip_boundaries.zip_code_geom, places_table.point)
+ WHERE
+ -- Use the precise filter on the public boundaries table
+ zip_boundaries.state_code = 'NY'
+ AND zip_boundaries.city = 'New York city'
+ -- And filter for places that are supermarkets
+ AND 'supermarket' IN UNNEST(places_table.types)
+ GROUP BY
+ -- We group by the column from the public table
+ zip_boundaries.zip_code
+)
+
+-- STEP 2: Now, join the aggregated counts back to the boundaries table a second time
+-- to retrieve the geometry for mapping.
+SELECT
+ counts.zip_code,
+ counts.supermarket_count,
+ -- We simplify the geometry to make it render faster in visualization tools.
+ ST_SIMPLIFY(zip_boundaries_2.zip_code_geom, 100) AS geography
+FROM
+ counts_in_zip_boundaries AS counts
+JOIN
+ `bigquery-public-data.geo_us_boundaries.zip_codes` AS zip_boundaries_2
+ ON counts.zip_code = zip_boundaries_2.zip_code
+ORDER BY
+ supermarket_count DESC;
diff --git a/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/README.md b/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/README.md
new file mode 100644
index 0000000..bea628b
--- /dev/null
+++ b/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/README.md
@@ -0,0 +1,9 @@
+### Description
+This query creates a density map of tourist attractions in Paris by dynamically loading the city's official boundary from the Overture Maps public dataset. It then filters the French Places data to find all attractions within that boundary, aggregating them into H3 cells for a high-resolution heatmap visualization.
+
+### Key Concepts
+* **Dynamic Boundary Loading:** Uses `DECLARE` and `SET` to load the official geometry for Paris from the `overture_maps` public dataset into a variable. This ensures the analysis uses a precise and official boundary without hardcoding.
+* **Country-Specific Table:** Correctly uses `places_insights___fr.places` to query data in France.
+* **Geospatial Filtering:** Employs `ST_CONTAINS` to efficiently select only the places whose points fall within the pre-loaded Paris boundary polygon.
+* **CTE for Logical Flow:** A Common Table Expression (CTE) neatly isolates the logic of finding and binning the attractions within Paris before the final aggregation step.
+* **H3 Indexing for Visualization:** Uses `carto-os.carto.H3_FROMGEOGPOINT` to bin attractions into H3 cells and `carto-os.carto.H3_BOUNDARY` to generate the corresponding hexagonal polygons for mapping.
diff --git a/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary.sql b/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary.sql
new file mode 100644
index 0000000..06a8280
--- /dev/null
+++ b/places_insights/sample_queries/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary/tourist_attractions_in_paris_by_h3_cell_dynamic_boundary.sql
@@ -0,0 +1,45 @@
+-- This query creates a high-resolution density map of tourist attractions within the official Overture Maps boundary for Paris.
+
+-- Step 1: Declare a variable to hold the GEOGRAPHY of Paris.
+DECLARE paris_boundary GEOGRAPHY;
+
+-- Step 2: Set the variable by querying the Overture Maps public dataset for Paris's shape.
+-- The subquery ensures we get a single GEOGRAPHY value.
+SET paris_boundary = (
+ SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
+ WHERE country = 'FR' AND names.primary = 'Paris'
+ LIMIT 1
+);
+-- Step 3: Use a Common Table Expression (CTE) to find all tourist attractions inside the Paris boundary
+-- and calculate their H3 index.
+WITH attractions_in_paris AS (
+ SELECT
+ -- For each attraction's geographic point, calculate its corresponding H3 index.
+ -- Resolution 9 is a good size for city analysis.
+ `carto-os.carto.H3_FROMGEOGPOINT`(point, 9) as h3_index
+ FROM
+ -- We must use the 'fr' table for data in France.
+ `places_insights___fr.places`
+ WHERE
+ -- Filter 1: The place must be a 'tourist_attraction'. THIS IS THE LINE WE CHANGED.
+ 'tourist_attraction' IN UNNEST(types)
+ -- Filter 2: The place's point must be geographically contained within the Paris boundary we just defined.
+ AND ST_CONTAINS(paris_boundary, point)
+)
+
+-- Step 4: Aggregate the results from the CTE to get the final counts and cell geometries.
+SELECT WITH AGGREGATION_THRESHOLD
+ -- The H3 cell identifier.
+ h3_index,
+ -- The total count of tourist attractions found within this cell.
+ COUNT(*) AS tourist_attraction_count,
+ -- This function takes the H3 index and returns its actual hexagonal polygon shape for visualization.
+ `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geography
+FROM
+ attractions_in_paris
+GROUP BY
+ -- Group by the H3 index to count how many attractions fall into each unique cell.
+ h3_index
+ORDER BY
+ -- Show the most dense tourist areas first.
+ tourist_attraction_count DESC;
diff --git a/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/README.md b/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/README.md
new file mode 100644
index 0000000..aa36af8
--- /dev/null
+++ b/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/README.md
@@ -0,0 +1,41 @@
+# Population Dynamics Insights: WorldPop-Weighted Custom Boundary Aggregation
+
+> **⚠️ Important Requirement:** To run the queries in this notebook, your Google Cloud Project must have access to the **US Population Dynamics Insights dataset**. For instructions on how to request and configure access, see [Set up Population Dynamics Insights](https://developers.google.com/maps/documentation/population-dynamics-insights/cloud-setup).
+
+### Overall Goal
+
+This guide demonstrates how to use **Population Dynamics Insights (PDI)** alongside **Google Earth Engine (GEE)** to perform **Custom Boundary Aggregation**: taking native S2 cell (Level 12) embeddings and accurately rolling them up into custom, arbitrary polygons (like drive-time isochrones or sales territories) using a highly precise **Population-Weighted Average**.
+
+**The Scenario:** You want to use PDI's 330-dimensional embeddings as features in an ML model predicting retail store performance. Your target geographic boundaries are 5km radii. Because human activity is rarely spread evenly across physical space, a naive "area-weighted" aggregation (assuming a 50% overlap equals 50% of the signal) will warp your ML features. By performing all calculations directly in BigQuery, we leverage high-resolution raster population data, specifically the[WorldPop USA 2025 Population Counts (100m resolution) dataset](https://hub.worldpop.org/geodata/summary?id=75983) (see attribution and licensing at the end of this notebook), to properly weight each intersecting S2 "sliver" based on actual human density.
+
+*🌟 Note on Temporal Alignment: We explicitly align our 2025 PDI Embeddings with the 2025 WorldPop demographic dataset to avoid temporal confounding, a critical best practice in spatial machine learning!*
+
+### Key Technologies Used
+
+* **[Population Dynamics Insights](https://developers.google.com/maps/documentation/population-dynamics-insights/overview):** To provide the underlying 330-dimensional embeddings capturing geographic, environmental, and map features.
+* **[BigQuery GIS](https://cloud.google.com/bigquery):** To execute spatial overlays (`ST_INTERSECTS`, `ST_INTERSECTION`) and math natively in the data warehouse.
+* **[Google Earth Engine (GEE)](https://earthengine.google.com/):** Used natively within BigQuery via `ST_REGIONSTATS` to access the [WorldPop 2025 Population Counts dataset](https://hub.worldpop.org/geodata/summary?id=75983) without any raster processing overhead.
+* **[CARTO Analytics Toolbox](https://docs.carto.com/data-and-analysis/analytics-toolbox-overview):** To dynamically generate S2 boundary polygons from PDI string tokens.
+* **Python Libraries:** **[Pandas](https://pandas.pydata.org/)** (data manipulation) and **[NumPy](https://numpy.org/)** (mathematical validation).
+
+*Note: This notebook executes queries that incur BigQuery costs. See [BigQuery Pricing](https://cloud.google.com/bigquery/pricing) for details.*
+
+### The Step-by-Step Workflow
+
+1. **Generate Target Boundaries:** We use BigQuery GIS to construct dummy 5km store isochrones around major US cities to act as our custom boundaries.
+2. **Calculate Total Populations:** We use Earth Engine to compute the total human population residing inside each 5km boundary.
+3. **Intersect & Calculate Slivers:** We load the PDI data, join the S2 cells against our store boundaries, cut out the precise overlapping spatial "slivers", and use Earth Engine again to determine the exact population living within that specific sliver.
+4. **Apply Weights:** We multiply the 330 PDI dimensions by their population weight ratio and sum the vectors natively in BigQuery.
+5. **Optional Python Normalization:** We demonstrate how to apply L2 Renormalization using `scikit-learn` for users whose models require strictly normalized unit vectors.
+6. **Mathematical Validation:** We extract the final array into NumPy to programmatically prove it retains 330 dimensions and a magnitude of `1.0`.
+
+### How to Use This Notebook
+
+1. **Prerequisites:** Before running this notebook, you must:
+ * Enable the **BigQuery API** and the **Google Earth Engine API** in your Google Cloud Project.
+ * **Project Authentication:**
+ * **Standard Colab Users:** Configure an environment variable in the Colab "Secrets" tab (the **key icon** on the left menu) named `GCP_PROJECT_ID`. This should be your Google Cloud Project ID.
+ * **Colab Enterprise / Vertex AI Users:** No secret configuration is needed. The notebook will automatically authenticate using the active Google Cloud Project you are working in.
+ * **Crucially, the Google Cloud Project you use must have an active subscription/authorization to access the US Population Dynamics Insights dataset.**
+2. **Authentication:** The first code cell will prompt you to authenticate your Google Account. Ensure the account you use has BigQuery Data Viewer/Job User permissions and Earth Engine Resource Viewer permissions for your Project ID.
+3. **Run the Cells:** Once authenticated, execute the cells in order from top to bottom.
\ No newline at end of file
diff --git a/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/pdi_worldpop_weighted_custom_boundary_aggregation.ipynb b/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/pdi_worldpop_weighted_custom_boundary_aggregation.ipynb
new file mode 100644
index 0000000..def31e9
--- /dev/null
+++ b/population_dynamics_insights/notebooks/worldpop_weighted_custom_boundary_aggregation/pdi_worldpop_weighted_custom_boundary_aggregation.ipynb
@@ -0,0 +1,444 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "7G5kDU7Z9CXp"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Population Dynamics Insights: WorldPop-Weighted Custom Boundary Aggregation\n",
+ "\n",
+ "
"
+ ],
+ "metadata": {
+ "id": "j4q9sJuIjke-"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "> **⚠️ Important Requirement:** To run the queries in this notebook, your Google Cloud Project must have access to the **US Population Dynamics Insights dataset**. For instructions on how to request and configure access, see [Set up Population Dynamics Insights](https://developers.google.com/maps/documentation/population-dynamics-insights/cloud-setup).\n",
+ "\n",
+ "### Overall Goal\n",
+ "\n",
+ "This guide demonstrates how to use **Population Dynamics Insights (PDI)** alongside **Google Earth Engine (GEE)** to perform **Custom Boundary Aggregation**: taking native S2 cell (Level 12) embeddings and accurately rolling them up into custom, arbitrary polygons (like drive-time isochrones or sales territories) using a highly precise **Population-Weighted Average**.\n",
+ "\n",
+ "**The Scenario:** You want to use PDI's 330-dimensional embeddings as features in an ML model predicting retail store performance. Your target geographic boundaries are 5km radii. Because human activity is rarely spread evenly across physical space, a naive \"area-weighted\" aggregation (assuming a 50% overlap equals 50% of the signal) will warp your ML features. By performing all calculations directly in BigQuery, we leverage high-resolution raster population data, specifically the[WorldPop USA 2025 Population Counts (100m resolution) dataset](https://hub.worldpop.org/geodata/summary?id=75983) (see attribution and licensing at the end of this notebook), to properly weight each intersecting S2 \"sliver\" based on actual human density.\n",
+ "\n",
+ "*🌟 Note on Temporal Alignment: We explicitly align our 2025 PDI Embeddings with the 2025 WorldPop demographic dataset to avoid temporal confounding, a critical best practice in spatial machine learning!*\n",
+ "\n",
+ "### Key Technologies Used\n",
+ "\n",
+ "* **[Population Dynamics Insights](https://developers.google.com/maps/documentation/population-dynamics-insights/overview):** To provide the underlying 330-dimensional embeddings capturing geographic, environmental, and map features.\n",
+ "* **[BigQuery GIS](https://cloud.google.com/bigquery):** To execute spatial overlays (`ST_INTERSECTS`, `ST_INTERSECTION`) and math natively in the data warehouse.\n",
+ "* **[Google Earth Engine (GEE)](https://earthengine.google.com/):** Used natively within BigQuery via `ST_REGIONSTATS` to access the [WorldPop 2025 Population Counts dataset](https://hub.worldpop.org/geodata/summary?id=75983) without any raster processing overhead.\n",
+ "* **[CARTO Analytics Toolbox](https://docs.carto.com/data-and-analysis/analytics-toolbox-overview):** To dynamically generate S2 boundary polygons from PDI string tokens.\n",
+ "* **Python Libraries:** **[Pandas](https://pandas.pydata.org/)** (data manipulation) and **[NumPy](https://numpy.org/)** (mathematical validation).\n",
+ "\n",
+ "*Note: This notebook executes queries that incur BigQuery costs. See [BigQuery Pricing](https://cloud.google.com/bigquery/pricing) for details.*\n",
+ "\n",
+ "### The Step-by-Step Workflow\n",
+ "\n",
+ "1. **Generate Target Boundaries:** We use BigQuery GIS to construct dummy 5km store isochrones around major US cities to act as our custom boundaries.\n",
+ "2. **Calculate Total Populations:** We use Earth Engine to compute the total human population residing inside each 5km boundary.\n",
+ "3. **Intersect & Calculate Slivers:** We load the PDI data, join the S2 cells against our store boundaries, cut out the precise overlapping spatial \"slivers\", and use Earth Engine again to determine the exact population living within that specific sliver.\n",
+ "4. **Apply Weights:** We multiply the 330 PDI dimensions by their population weight ratio and sum the vectors natively in BigQuery.\n",
+ "5. **Optional Python Normalization:** We demonstrate how to apply L2 Renormalization using `scikit-learn` for users whose models require strictly normalized unit vectors.\n",
+ "6. **Mathematical Validation:** We extract the final array into NumPy to programmatically prove it retains 330 dimensions and a magnitude of `1.0`.\n",
+ "\n",
+ "### How to Use This Notebook\n",
+ "\n",
+ "1. **Prerequisites:** Before running this notebook, you must:\n",
+ " * Enable the **BigQuery API** and the **Google Earth Engine API** in your Google Cloud Project.\n",
+ " * **Project Authentication:**\n",
+ " * **Standard Colab Users:** Configure an environment variable in the Colab \"Secrets\" tab (the **key icon** on the left menu) named `GCP_PROJECT_ID`. This should be your Google Cloud Project ID.\n",
+ " * **Colab Enterprise / Vertex AI Users:** No secret configuration is needed. The notebook will automatically authenticate using the active Google Cloud Project you are working in.\n",
+ " * **Crucially, the Google Cloud Project you use must have an active subscription/authorization to access the US Population Dynamics Insights dataset.**\n",
+ "2. **Authentication:** The first code cell will prompt you to authenticate your Google Account. Ensure the account you use has BigQuery Data Viewer/Job User permissions and Earth Engine Resource Viewer permissions for your Project ID.\n",
+ "3. **Run the Cells:** Once authenticated, execute the cells in order from top to bottom."
+ ],
+ "metadata": {
+ "id": "-PGTdQ1S9HBx"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title Install Dependencies - Not required in Google Colab Environment\n",
+ "# @markdown Install necessary BigQuery to Pandas dependencies.\n",
+ "# !pip install -q db-dtypes"
+ ],
+ "metadata": {
+ "id": "hgqIswbl9KZt"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 1. Setup & Authentication\n",
+ "# @markdown Authenticate to Google Cloud, retrieve secrets, and initialize the BigQuery client.\n",
+ "import sys\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import warnings\n",
+ "from google.cloud import bigquery\n",
+ "import google.auth\n",
+ "\n",
+ "warnings.filterwarnings('ignore') # Suppress warnings for a cleaner output\n",
+ "\n",
+ "try:\n",
+ " # --- ATTEMPT 1: Standard Consumer Colab ---\n",
+ " from google.colab import userdata, auth\n",
+ " GCP_PROJECT_ID = userdata.get('GCP_PROJECT_ID')\n",
+ " print(\"✅ Standard Colab Secrets found.\")\n",
+ "\n",
+ " print(\"🔄 Authenticating user...\")\n",
+ " auth.authenticate_user(project_id=GCP_PROJECT_ID)\n",
+ "\n",
+ " client = bigquery.Client(project=GCP_PROJECT_ID)\n",
+ " print(f\"✅ Authenticated to Google Cloud Project: {GCP_PROJECT_ID}\")\n",
+ "\n",
+ "except (ImportError, Exception) as e:\n",
+ " # --- ATTEMPT 2: Colab Enterprise / Local Jupyter ---\n",
+ " print(f\"ℹ️ Standard Colab setup skipped ({e}). Falling back to Enterprise/Local Auth...\")\n",
+ "\n",
+ " credentials, GCP_PROJECT_ID = google.auth.default()\n",
+ " print(f\"✅ Authenticated via default credentials to Project: {GCP_PROJECT_ID}\")\n",
+ "\n",
+ " client = bigquery.Client(credentials=credentials, project=GCP_PROJECT_ID)\n",
+ "\n",
+ "print(\"✅ BigQuery Client Initialized.\")"
+ ],
+ "metadata": {
+ "cellView": "form",
+ "id": "ilmRHt4V9MqO"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Step 2: Generate Dummy Target Boundaries\n",
+ "\n",
+ "Before running the core aggregation, we need custom polygons to act as our target geometries. This BigQuery SQL cell will create a new dataset (`pdi_testing`) and a new table (`store_isochrones`) directly in your Google Cloud Project, populated with five dummy \"store trade areas\" (5km circular buffers around major US cities) to test the pipeline."
+ ],
+ "metadata": {
+ "id": "qUBTHec-9X-o"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "%%bigquery --project $GCP_PROJECT_ID\n",
+ "CREATE SCHEMA IF NOT EXISTS pdi_testing;\n",
+ "\n",
+ "CREATE OR REPLACE TABLE pdi_testing.store_isochrones AS\n",
+ "SELECT 'store_1_ny' AS store_id, ST_BUFFER(ST_GEOGPOINT(-74.0060, 40.7128), 5000) AS isochrone_geom UNION ALL\n",
+ "SELECT 'store_2_la', ST_BUFFER(ST_GEOGPOINT(-118.2437, 34.0522), 5000) UNION ALL\n",
+ "SELECT 'store_3_chi', ST_BUFFER(ST_GEOGPOINT(-87.6298, 41.8781), 5000) UNION ALL\n",
+ "SELECT 'store_4_hou', ST_BUFFER(ST_GEOGPOINT(-95.3698, 29.7604), 5000) UNION ALL\n",
+ "SELECT 'store_5_pho', ST_BUFFER(ST_GEOGPOINT(-112.0740, 33.4484), 5000);"
+ ],
+ "metadata": {
+ "id": "cETiGVMd9VKD"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Step 3: The Aggregation Pipeline (Core Logic)\n",
+ "\n",
+ "This cell executes the spatial math and aggregation entirely within BigQuery, saving the results directly to a Pandas DataFrame named `df_aggregated`.\n",
+ "\n",
+ "To efficiently and accurately roll up the S2 cells into our custom boundaries, we:\n",
+ "1. Use BigQuery's native `S2_COVERINGCELLIDS` to perform a highly-optimized index match, retrieving only the specific PDI S2 cells that touch our custom polygons.\n",
+ "2. Cut out the precise intersecting \"slivers\" and use **Google Earth Engine** to calculate the high-resolution WorldPop population inside each sliver.\n",
+ "3. Calculate the weight ratio natively using a BigQuery Window Function, multiply the 330 PDI dimensions by this weight, and sum the vectors to capture the exact density and pattern of the geographic features.\n",
+ "\n",
+ "> **💡 Note:** In the SQL cell below, please verify the `JOIN` statement in the `Matched_PDI` CTE references the correct dataset name for your PDI subscription. Depending on how your access was provisioned, you may need to update the table path (e.g., replacing `population_dynamics___us.v1_s2_z12` with your linked dataset name)."
+ ],
+ "metadata": {
+ "id": "ZUUTWcgE9cN6"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "%%bigquery df_aggregated --project $GCP_PROJECT_ID\n",
+ "-- 1. Define UDF to convert BigQuery's S2 INT64 to PDI's Hex String\n",
+ "CREATE TEMP FUNCTION TO_S2_HEX(s2_int INT64) RETURNS STRING AS (\n",
+ " RTRIM(FORMAT('%x%015x', (s2_int >> 60) & 0xF, s2_int & 0x0FFFFFFFFFFFFFFF), '0')\n",
+ ");\n",
+ "\n",
+ "WITH Custom_Boundaries AS (\n",
+ " -- 2. Load Custom Geometries\n",
+ " SELECT\n",
+ " store_id,\n",
+ " isochrone_geom AS target_geom\n",
+ " FROM `pdi_testing.store_isochrones`\n",
+ "),\n",
+ "\n",
+ "Covering_Cells AS (\n",
+ " -- 3. Get S2 Level 12 cells that cover our polygon\n",
+ " -- We use named arguments and bump max_cells to ensure full coverage.\n",
+ " SELECT\n",
+ " store_id,\n",
+ " target_geom,\n",
+ " TO_S2_HEX(cell_id) AS s2_hex\n",
+ " FROM Custom_Boundaries,\n",
+ " UNNEST(S2_COVERINGCELLIDS(target_geom, min_level => 12, max_level => 12, max_cells => 500)) AS cell_id\n",
+ "),\n",
+ "\n",
+ "Matched_PDI AS (\n",
+ " -- 4. Fast String Join: Only generate geometries for the cells we actually need!\n",
+ " SELECT\n",
+ " c.store_id,\n",
+ " c.target_geom,\n",
+ " p.geo_id AS s2_id,\n",
+ " p.features,\n",
+ " `carto-os.carto.S2_BOUNDARY`(`carto-os.carto.S2_FROMTOKEN`(p.geo_id)) AS s2_geom\n",
+ " FROM Covering_Cells c\n",
+ " JOIN `population_dynamics___us.v1_s2_z12` p\n",
+ " ON c.s2_hex = p.geo_id\n",
+ "),\n",
+ "\n",
+ "Intersecting_Cells AS (\n",
+ " -- 5. Cut out the precise intersecting 'sliver' geometry\n",
+ " SELECT\n",
+ " store_id,\n",
+ " s2_id,\n",
+ " features,\n",
+ " ST_INTERSECTION(target_geom, s2_geom) AS sliver_geom\n",
+ " FROM Matched_PDI\n",
+ " -- Double check intersection since S2 covering is a slight over-approximation\n",
+ " WHERE ST_INTERSECTS(target_geom, s2_geom)\n",
+ "),\n",
+ "\n",
+ "Sliver_Populations AS (\n",
+ " -- 6. Call Earth Engine to get the population of the sliver\n",
+ " SELECT\n",
+ " store_id,\n",
+ " features,\n",
+ " ST_REGIONSTATS(\n",
+ " sliver_geom,\n",
+ " 'ee://projects/sat-io/open-datasets/WORLDPOP/pop/USA_POP_2025_CN_100M_R2025A_V1'\n",
+ " ).sum AS sliver_pop\n",
+ " FROM Intersecting_Cells\n",
+ "),\n",
+ "\n",
+ "Sliver_Weights AS (\n",
+ " -- 7. Calculate the weight using a BigQuery Window Function\n",
+ " SELECT\n",
+ " store_id,\n",
+ " features,\n",
+ " sliver_pop / NULLIF(SUM(sliver_pop) OVER(PARTITION BY store_id), 0) AS weight\n",
+ " FROM Sliver_Populations\n",
+ " -- Don't unnest 330 dimensions if the population is 0\n",
+ " WHERE sliver_pop > 0\n",
+ "),\n",
+ "\n",
+ "Weighted_Features AS (\n",
+ " -- 8. Unnest the arrays, apply the weight, and sum the vectors\n",
+ " SELECT\n",
+ " store_id,\n",
+ " dimension_index,\n",
+ " SUM(feature_value * weight) AS weighted_sum_value\n",
+ " FROM Sliver_Weights\n",
+ " CROSS JOIN UNNEST(features) AS feature_value WITH OFFSET AS dimension_index\n",
+ " GROUP BY 1, 2\n",
+ ")\n",
+ "\n",
+ "-- 9. Final Output: Reconstruct the ML array (Unnormalized)\n",
+ "SELECT\n",
+ " store_id,\n",
+ " ARRAY_AGG(\n",
+ " weighted_sum_value\n",
+ " ORDER BY dimension_index\n",
+ " ) AS aggregated_features\n",
+ "FROM Weighted_Features\n",
+ "GROUP BY 1"
+ ],
+ "metadata": {
+ "id": "FXu_iTPG9hNQ"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 4. Tabular Output\n",
+ "# @markdown View the aggregated DataFrame showing the custom boundaries and their native embeddings.\n",
+ "# @markdown\n",
+ "# @markdown **What you are looking at:**\n",
+ "# @markdown The DataFrame below is the direct result of our BigQuery zero-ETL aggregation. For each `store_id` (representing our custom 5km boundaries), you will see a single `aggregated_features` column.\n",
+ "# @markdown\n",
+ "# @markdown This column contains a 330-dimensional array of floats. Because we did not apply any arbitrary normalization, the magnitude (length) of this vector natively represents the raw volume and signal density of the underlying geographic area.\n",
+ "\n",
+ "# Validate DataFrame Shape\n",
+ "print(f\"Total Rows Aggregated: {df_aggregated.shape[0]}\")\n",
+ "print(\"Preview of resulting data:\")\n",
+ "\n",
+ "# Display the clean DataFrame\n",
+ "display(df_aggregated.head())"
+ ],
+ "metadata": {
+ "id": "_-UOuB5P9lV_"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Step 5: Optional L2 Normalization in Python\n",
+ "\n",
+ "If your downstream use case requires unit vectors (e.g., using Dot Product as a proxy for Cosine Similarity, or performing K-Means clustering based on feature profiles rather than total magnitude), you can apply L2 normalization in Python using Scikit-Learn:"
+ ],
+ "metadata": {
+ "id": "qEeo_NW09sWj"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 5. Apply L2 Normalization\n",
+ "from sklearn.preprocessing import normalize\n",
+ "\n",
+ "if not df_aggregated.empty:\n",
+ " # 1. Extract the aggregated features into a 2D NumPy array\n",
+ " X_matrix = np.stack(df_aggregated['aggregated_features'].values)\n",
+ "\n",
+ " # 2. Apply L2 normalization\n",
+ " X_normalized = normalize(X_matrix, norm='l2')\n",
+ "\n",
+ " print(f\"Original matrix shape: {X_matrix.shape}\")\n",
+ " print(f\"Normalized matrix shape: {X_normalized.shape}\")\n",
+ " print(\"✅ Normalization complete.\")\n",
+ "else:\n",
+ " print(\"⚠️ The DataFrame is empty. Ensure the BigQuery aggregation cell ran successfully.\")"
+ ],
+ "metadata": {
+ "id": "x9qlASMU9rD8"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title 6. Mathematical Validation\n",
+ "# @markdown Verify that the output vector has the correct PDI dimensions (330) and that the Scikit-Learn L2 Renormalization successfully resulted in a unit vector.\n",
+ "# @markdown\n",
+ "# @markdown **Why do we run this test?**\n",
+ "# @markdown Before passing aggregated spatial data into distance-based machine learning algorithms or Vector Databases, we want to mathematically prove our Python pipeline correctly formatted the embedding space.\n",
+ "# @markdown\n",
+ "# @markdown This cell takes the first result from our normalized array and uses Python's `numpy` library to test two strict conditions:\n",
+ "# @markdown 1. **Dimensionality:** Does the resulting array still have exactly 330 dimensions?\n",
+ "# @markdown 2. **Euclidean Length (L2 Norm):** Does the vector have a magnitude of exactly `1.0`? (Validating our Euclidean distance math: $Length = \\sqrt{p_1^2 + p_2^2 + \\cdots + p_n^2}$).\n",
+ "\n",
+ "if 'X_normalized' in locals():\n",
+ " # Extract the first vector from our normalized matrix\n",
+ " first_vector = X_normalized[0]\n",
+ "\n",
+ " # --- 1. Validate Dimensions ---\n",
+ " num_dimensions = len(first_vector)\n",
+ " print(f\"Vector Dimensions: {num_dimensions}\")\n",
+ "\n",
+ " if num_dimensions == 330:\n",
+ " print(\"✅ Success: The vector has exactly 330 dimensions, matching the PDI specification.\")\n",
+ " else:\n",
+ " print(f\"❌ Error: Expected 330 dimensions, found {num_dimensions}.\")\n",
+ "\n",
+ " # --- 2. Validate L2 Renormalization (Unit Vector) ---\n",
+ " # np.linalg.norm calculates the Euclidean length of the array\n",
+ " vector_magnitude = np.linalg.norm(first_vector)\n",
+ " print(f\"\\nL2 Norm (Magnitude): {vector_magnitude:.6f}\")\n",
+ "\n",
+ " # We use np.isclose to account for extremely minor floating-point math differences\n",
+ " if np.isclose(vector_magnitude, 1.0, atol=1e-5):\n",
+ " print(\"✅ Success: The vector magnitude is ~1.0. L2 Renormalization was applied!\")\n",
+ " else:\n",
+ " print(\"❌ Error: The vector is not a unit vector. Renormalization failed.\")\n",
+ "\n",
+ "else:\n",
+ " print(\"⚠️ The X_normalized array does not exist. Ensure Step 5 ran successfully.\")"
+ ],
+ "metadata": {
+ "id": "jCppHka490Wd"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Data Attribution & Licensing\n",
+ "\n",
+ "**[WorldPop Dataset](https://www.worldpop.org/):**\n",
+ "This notebook utilizes high-resolution population data to perform population-weighted spatial aggregations. The underlying raster dataset is sourced from WorldPop.\n",
+ "\n",
+ "* **License:** This data is distributed under the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/). Note that WorldPop datasets derived from OpenStreetMap or Microsoft Building Footprints are subject to the Open Database License (ODbL); if you alter or build upon that specific data, the results must be distributed under the same ODbL license.\n",
+ "* **Recommended Citation:** Bondarenko M., Priyatikanto R., Tejedor-Garavito N., Zhang W., McKeen T., Cunningham A., Woods T., Hilton J., Cihan D., Nosatiuk B., Brinkhoff T., Tatem A., Sorichetta A.. 2025 Constrained estimates of 2015-2030 total number of people per grid square at a resolution of 3 arc (approximately 100m at the equator) R2025A version v1. Global Demographic Data Project - Funded by The Bill and Melinda Gates Foundation (INV-045237). WorldPop - School of Geography and Environmental Science, University of Southampton. DOI:10.5258/SOTON/WP00839"
+ ],
+ "metadata": {
+ "id": "5RHeU35ztYUM"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/roads_management_insights/rmi_adk_agent/.env.example b/roads_management_insights/rmi_adk_agent/.env.example
new file mode 100644
index 0000000..7085e6b
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/.env.example
@@ -0,0 +1,5 @@
+GOOGLE_CLOUD_PROJECT=your-project-id
+GOOGLE_CLOUD_LOCATION=your-region
+RMI_DATASET=your-rmi-dataset-id
+GOOGLE_GENAI_USE_VERTEXAI=TRUE #set to FALSE if using Gemini API KEY
+GOOGLE_API_KEY=your-api-key #(if not using VertexAI Gemini API)
\ No newline at end of file
diff --git a/roads_management_insights/rmi_adk_agent/.python-version b/roads_management_insights/rmi_adk_agent/.python-version
new file mode 100644
index 0000000..e4fba21
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/.python-version
@@ -0,0 +1 @@
+3.12
diff --git a/roads_management_insights/rmi_adk_agent/README.md b/roads_management_insights/rmi_adk_agent/README.md
new file mode 100644
index 0000000..92fa1e9
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/README.md
@@ -0,0 +1,70 @@
+# RMI ADK Agent
+
+This directory contains a demo AI agent for the Roads Management Insights (RMI) service built using Google's Agent Development Kit (ADK). The agent is designed to answer questions about RMI data residing in BigQuery and can execute SQL queries to retrieve relevant information.
+
+## Prerequisites
+
+- [uv](https://github.com/astral-sh/uv) installed on your machine.
+- [Google Cloud SDK (gcloud)](https://cloud.google.com/sdk/docs/install) installed and authenticated.
+
+## Setup
+
+1. **Clone the repository** (if you haven't already).
+2. **Navigate to the agent directory**:
+ ```bash
+ cd roads_management_insights/rmi_adk_agent
+ ```
+3. **Create and sync the virtual environment**:
+ Using `uv`, you can quickly set up the environment and install dependencies:
+ ```bash
+ uv sync
+ ```
+ This will create a `.venv` directory and install all required packages listed in `pyproject.toml`.
+
+## Environment Variables
+
+The agent requires several environment variables and configurations to function correctly:
+
+### 1. Google Cloud Authentication
+The agent uses Application Default Credentials (ADC). Authenticate your local environment:
+```bash
+gcloud auth application-default login
+```
+
+### 2. Configuration via `.env` file
+The agent can also be configured using a `.env` file in the project root. This is the recommended way to manage environment-specific settings.
+
+Create a file named `.env` in the `roads_management_insights/rmi_adk_agent/` directory with the following content:
+
+```bash
+GOOGLE_CLOUD_PROJECT=your-project-id
+GOOGLE_CLOUD_LOCATION=your-region
+RMI_DATASET=your-rmi-dataset-id
+GOOGLE_GENAI_USE_VERTEXAI=TRUE
+# GOOGLE_API_KEY=your-api-key (if not using ADC)
+```
+
+- `GOOGLE_CLOUD_PROJECT`: The ID of your Google Cloud project.
+- `RMI_DATASET`: The ID of the BigQuery dataset containing RMI data.
+- `GOOGLE_CLOUD_LOCATION`: The region where your Google Cloud resources are located (e.g., `us-central1`).
+- `GOOGLE_GENAI_USE_VERTEXAI`: Set to `TRUE` to use Vertex AI for the agent's language model.
+
+These variables are automatically loaded by the agent upon startup.
+
+
+## Running the Agent
+
+You can run the agent using the `uv run` command. Since the agent is defined in `src/agent.py`, you can interact with it using the ADK CLI or by importing it into a script.
+
+### Using the ADK built-in runtimes (Recommended)
+If you have the `google-adk` package installed, you can use its built-in tools to chat with the agent using either the web UI
+
+```bash
+uv run adk web
+```
+
+or the CLI interface
+
+```bash
+uv run adk run src
+```
diff --git a/roads_management_insights/rmi_adk_agent/pyproject.toml b/roads_management_insights/rmi_adk_agent/pyproject.toml
new file mode 100644
index 0000000..b117824
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "rmi-adk-agent"
+version = "0.1.0"
+description = "Demo AI agent for Roads Management Insights using Google's ADK"
+readme = "README.md"
+requires-python = ">=3.12"
+dependencies = [
+ "google-adk>=1.22.1",
+ "google-cloud-bigquery>=3.38.0",
+ "google-genai>=1.46.0",
+]
\ No newline at end of file
diff --git a/roads_management_insights/rmi_adk_agent/src/agent.py b/roads_management_insights/rmi_adk_agent/src/agent.py
new file mode 100644
index 0000000..20d75a6
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/src/agent.py
@@ -0,0 +1,79 @@
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from google.adk.agents import Agent
+from google.adk.planners import BuiltInPlanner
+from google.adk.tools.agent_tool import AgentTool
+from google.adk.tools.bigquery import BigQueryCredentialsConfig
+from google.adk.tools.bigquery import BigQueryToolset
+from google.adk.tools.bigquery.config import BigQueryToolConfig
+from google.adk.tools.bigquery.config import WriteMode
+import google.auth
+from google.genai import types
+
+from src import prompts
+
+# Define a tool configuration to block any write operations for safety
+tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED)
+
+# Use application default credentials
+# This will use the credentials from the gcloud CLI
+try:
+ application_default_credentials, project_id = google.auth.default()
+ credentials_config = BigQueryCredentialsConfig(
+ credentials=application_default_credentials
+ )
+ print(f"Successfully loaded Google Cloud credentials for project: {project_id}")
+except Exception as e:
+ print(f"Error loading Google Cloud credentials: {e}")
+ print("Please make sure you have authenticated with 'gcloud auth application-default login'")
+ # Handle the case where credentials are not available
+ application_default_credentials = None
+ credentials_config = None
+
+# Instantiate a BigQuery toolset
+if credentials_config:
+ bigquery_toolset = BigQueryToolset(
+ credentials_config=credentials_config, bigquery_tool_config=tool_config
+ )
+else:
+ bigquery_toolset = []
+
+
+# Agent Definition
+bq_agent = Agent(
+ model="gemini-3.5-flash",
+ name="bigquery_agent",
+ description=(
+ "Agent to answer questions about BigQuery data and execute SQL queries."
+ ),
+ instruction=prompts.BQ_AGENT_PROMPT,
+ tools=[bigquery_toolset] if bigquery_toolset else [],
+)
+
+root_agent = Agent(
+ model="gemini-3.5-flash",
+ name="RMI_agent",
+ description=(
+ "Agent to answer questions about RMI data residing in BigQuery."
+ ),
+ planner=BuiltInPlanner(
+ thinking_config=types.ThinkingConfig(
+ include_thoughts=True,
+ thinking_level='medium',
+ )
+ ),
+ instruction=prompts.RMI_AGENT_PROMPT,
+ tools=[AgentTool(bq_agent)],
+)
\ No newline at end of file
diff --git a/roads_management_insights/rmi_adk_agent/src/prompts.py b/roads_management_insights/rmi_adk_agent/src/prompts.py
new file mode 100644
index 0000000..0553184
--- /dev/null
+++ b/roads_management_insights/rmi_adk_agent/src/prompts.py
@@ -0,0 +1,120 @@
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import calendar
+import datetime
+import os
+import dotenv
+
+# Load environment variables from .env file
+dotenv.load_dotenv()
+
+TODAY = datetime.datetime.today()
+DAY_OF_WEEK = calendar.day_name[TODAY.weekday()]
+DATE_STR = TODAY.strftime("%Y-%m-%d")
+
+RMI_AGENT_PROMPT = f"""
+You are a helpful AI assistant specializing in the Roads Management Insights (RMI) product. Your primary function is to serve as the intelligent interface between a user and a powerful data-querying sub-agent. You do not write or execute code. Your job is to understand the user's needs, direct the sub-agent to fetch the correct data, and then translate that raw data into a clear, human-readable insight.
+
+Context:
+
+You are aware of a specialized sub-agent, the `bigquery_agent`, whose only job is to interact with BigQuery to list table, write and run SQL queries.
+
+This BigQuery Agent has access to the Google Roads Management Insights dataset, which contains detailed information about road network segments and travel times from Google Maps data.
+
+The cloud project in use is `{os.getenv("GOOGLE_CLOUD_PROJECT", "cloud-geographers-internal-gee")}`
+The RMI dataset is: `{os.getenv("RMI_DATASET")}`
+
+The following is the schema for historical_travel_time RMI BigQuery table :
+
+| Name | Mode | Type | Description |
+|-----------------------|-----------|-------------|-------------------------------------------|
+| selected_route_id | NULLABLE | STRING | selected_route_id of the route |
+| display_name | NULLABLE | STRING | Display name of the route |
+| record_time | NULLABLE | TIMESTAMP | The timestamp when the route data is computed |
+| duration_in_seconds | NULLABLE | FLOAT | The traffic-aware duration of the route |
+| static_duration_in_seconds| NULLABLE | FLOAT | The traffic-unaware duration of the route |
+| route_geometry | NULLABLE | GEOGRAPHY | The traffic-aware polyline geometry of the route |
+
+The following is the schema for the recent_roads_data RMI BigQuery table
+
+| Name | Mode | Type | Description |
+|------------------------------|------------|---------------|-----------------------------------------------------------------------------|
+| selected_route_id | NULLABLE | STRING | selected_route_id of the route |
+| display_name | NULLABLE | STRING | Display name of the route |
+| record_time | NULLABLE | TIMESTAMP | The timestamp when the route data is computed |
+| duration_in_seconds | NULLABLE | FLOAT | The traffic-aware duration of the route |
+| static_duration_in_seconds | NULLABLE | FLOAT | The traffic-unaware duration of the route |
+| route_geometry | NULLABLE | GEOGRAPHY | The traffic-aware polyline geometry of the route |
+| speed_reading_intervals | REPEATED | RECORD | Intervals representing the traffic density across the route. See the original definition in Routes API |
+| speed_reading_intervals.interval_coordinates | REPEATED | GEOGRAPHY | The geometry for this interval |
+| speed_reading_intervals.speed | NULLABLE | STRING | The classification of the speed for this interval. Possible values: NORMAL, SLOW, TRAFFIC_JAM |
+
+
+Execution Flow:
+
+Deconstruct User Request: Analyze the user's question to identify the core intent, key entities (e.g., city, road name, time frame), and the specific metrics needed.
+
+Formulate Instruction for Sub-Agent: Create a clear, unambiguous, and specific instruction for the BigQuery Agent. This instruction should be a precise task and how to fomulate the query, not a question.
+
+Delegate and Wait: Pass this instruction to the BigQuery Agent and await the structured data results (e.g., JSON, list of records).
+
+Synthesize and Respond: Analyze the raw data returned by the sub-agent. Formulate a final, polished answer in natural language for the user, summarizing the key findings. Do not show the raw data unless the user asks for it.
+
+Constraints:
+
+Never write SQL. Your function is to direct and summarize.
+
+If a user's request is ambiguous (e.g., "show me traffic on the bridge"), you must ask clarifying questions ("Which bridge are you referring to?") before dispatching a task to the sub-agent.
+
+Maintain a helpful, analytical persona. The user should feel they are talking to a data expert, not a machine.
+
+Today's date is {DAY_OF_WEEK} {DATE_STR}
+"""
+
+BQ_AGENT_PROMPT = """
+You are a BigQuery Query and Data Analytics Specialist. Your one and only function is to receive a task instruction, convert it into an efficient BigQuery operations, execute it, and return the raw, unaltered result.
+
+Context:
+
+You only accept instructions from the Main Agent. You never interact with an end-user.
+
+All queries are to be run against the Google Roads Management Insights dataset. You are an expert on its schema.
+
+You are stateless and treat every instruction as a new, independent task.
+
+Execution Flow:
+
+Receive Instruction: Accept a task string (e.g., "Task: Find the average speed on 'US-101' in 'San Francisco'").
+
+Identify appropriate operation: These are a set of tools aimed to provide integration with BigQuery, namely:
+
+* list_dataset_ids: Fetches BigQuery dataset ids present in a GCP project.
+* get_dataset_info: Fetches metadata about a BigQuery dataset.
+* list_table_ids: Fetches table ids present in a BigQuery dataset.
+* get_table_info: Fetches metadata about a BigQuery table.
+* execute_sql: Runs a SQL query in BigQuery and fetch the result.
+* forecast: Runs a BigQuery AI time series forecast using the AI.FORECAST function.
+* ask_data_insights: Answers questions about data in BigQuery tables using natural language.
+
+Return Raw Data: Output the complete, unmodified results from the query directly back to the calling agent. Do not add any summary, explanation, or conversational text.
+
+Constraints:
+
+You must not respond with anything other than the raw query result or a structured error message.
+
+If the instruction is ambiguous or lacks the information needed to build a valid query, return an error stating what is missing. Do not attempt to guess or ask for clarification.
+
+Your output should be pure data (e.g., JSON), not natural language.
+"""
diff --git a/roads_management_insights/rmi_cli_tools/README.md b/roads_management_insights/rmi_cli_tools/README.md
new file mode 100644
index 0000000..ea05133
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/README.md
@@ -0,0 +1,126 @@
+# RMI Command-line Tools
+
+This tool provides scriptable access to the Roads Management Insights (RMI) service. It includes ready-to-use workflows and standalone API clients designed for easy integration into data pipelines and development environments.
+
+## Architecture & Workflow
+
+The following diagram illustrates how these scripts interact with both Google-managed and customer-managed projects:
+
+```mermaid
+graph TD
+ subgraph Google ["Google-Managed Project (maps-platform-roads-management)"]
+ DX[Analytics Hub Data Exchange]
+ TOPIC[Pub/Sub Topics]
+ end
+
+ subgraph RMI_PROJ ["Customer RMI Project"]
+ RSA[Roads Selection API]
+ S1[project_rmi_setup.sh]
+ S3[rmi_verify_api_access.sh]
+ end
+
+ subgraph DATA_PROJ ["Customer Data Project"]
+ BQ[BigQuery Linked Dataset]
+ SUB[Pub/Sub Subscription]
+ S2[project_cloud_setup.sh]
+ end
+
+ S1 -- "Configures" --> RSA
+ S3 -- "Tests CRUD on" --> RSA
+
+ DX -- "Subscribe" --> BQ
+ TOPIC -- "Subscribe" --> SUB
+
+ S2 -- "Configures APIs & Subscriptions" --> DATA_PROJ
+
+ subgraph Operations ["Maintenance & Security"]
+ S4[rmi_data_backup.sh]
+ S5[project_optional_vpcsc.sh]
+ end
+
+ S4 -- "Backs up from" --> RSA
+ S4 -- "Copies to" --> BQ
+ S5 -- "Generates Rules for" --> Google
+ S5 -- "Generates Rules for" --> DATA_PROJ
+```
+
+## Getting Started
+
+1. **Prerequisites**:
+ * Ensure the [Google Cloud CLI (`gcloud`)](https://cloud.google.com/sdk/docs/install) is installed and in your PATH.
+ * Ensure `jq` is installed for JSON processing.
+
+2. **Authenticate**:
+ ```bash
+ gcloud auth application-default login
+ ```
+
+3. **Make Executable**:
+ ```bash
+ chmod +x clients/*.sh scenarios/*.sh
+ ```
+
+## Project Awareness
+
+A typical RMI implementation involves two distinct Google Cloud projects. Throughout this tool and its documentation, we intentionally distinguish between them to ensure operations are performed in the correct context:
+
+1. **RMI Project (`PROJECT_RMI_ID`)**: This is the project where you enable the **Roads Selection API** and register your **Routes of Interest**. It acts as the "Control Plane" for your RMI configuration.
+2. **Data Project (`PROJECT_CLOUD_ID`)**: This is the project where data is accumulated and consumed. It contains your **BigQuery linked datasets** (via Analytics Hub) and **Pub/Sub subscriptions** for real-time streams.
+
+*Note: While these can be the same project, RMI's architecture allows them to be separate to satisfy different security, billing, or organizational requirements. Always verify you are using the intended Project ID for each command.*
+
+---
+
+## 1. Functional Scenarios (Recommended for Setup)
+
+The most common tasks are bundled into "Scenarios" in the `scenarios/` directory. These scripts are modular; run them with `all` for a full run, or call individual `step_` functions for granular control. Call any script without arguments to see detailed usage.
+
+### `project_rmi_setup.sh`
+Configures the primary Google Cloud project for RMI API access.
+* **Action:** Enables APIs and grants `roles/roads.roadsSelectionAdmin`.
+* **Usage:** `./scenarios/project_rmi_setup.sh all [MEMBER]`
+
+### `project_cloud_setup.sh`
+Configures the project used for data accumulation (BigQuery) and real-time streams (Pub/Sub).
+* **Action:** Enables BigQuery/Analytics Hub APIs and provides modular helpers for subscriptions.
+* **Usage:** `./scenarios/project_cloud_setup.sh all [MEMBER]`
+
+### `rmi_verify_api_access.sh`
+Performs a complete CRUD (Create, Read, List, Delete) cycle to verify API connectivity.
+* **Action:** Creates a temporary route, verifies it, and deletes it.
+* **Usage:** `./scenarios/rmi_verify_api_access.sh all `
+
+### `rmi_data_backup.sh`
+Manages the preservation of your preview data.
+* **Action:** Backs up `SelectedRoutes` to JSON and copies BigQuery tables to a destination dataset or GCS.
+* **Usage:** `./scenarios/rmi_data_backup.sh all `
+
+### `project_optional_vpcsc.sh`
+Generates YAML snippets for VPC Service Controls.
+* **Action:** Creates Ingress and Egress rules to allow data flow through service perimeters.
+* **Usage:** `./scenarios/project_optional_vpcsc.sh all `
+
+---
+
+## 2. Standalone API Clients
+
+For custom integrations, use the bundled building blocks in the `clients/` directory.
+
+### Core Clients (Wraps raw API 1-to-1)
+* **`analyticshub_v1.sh`**: Data Exchanges and Listings.
+* **`roadsselection_v1.sh`**: Roads Selection API.
+* **`routes_v2.sh`**: Directions and Distance Matrix.
+
+### Utility Clients (Pagination helpers)
+* **`analyticshub_v1_util.sh`**
+* **`roadsselection_v1_util.sh`**
+
+*Example (Sourcing a Utility):*
+```bash
+source clients/roadsselection_v1_util.sh
+# List all routes in your project
+roadsselection_v1_projects_selectedRoutes_list_all "$PROJECT_RMI_ID" "100"
+```
+
+## License
+Apache 2.0
diff --git a/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1.sh b/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1.sh
new file mode 100755
index 0000000..7723699
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1.sh
@@ -0,0 +1,467 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+###############################################################################
+# Google API Client - Internal Utilities
+#
+# This script provides shared internal helper functions for authentication,
+# request building, and API execution. It is intended to be sourced by
+# specific service client scripts.
+###############################################################################
+
+# =============================================================================
+# INTERNAL: Authentication & API Utilities
+# =============================================================================
+
+# Cache the access token to avoid calling gcloud repeatedly.
+_API_CLIENT_ACCESS_TOKEN=""
+
+# _get_access_token ensures we only call gcloud once per script execution.
+_get_access_token() {
+ local project_id="${1:-""}"
+ local gcloud_args=()
+
+ if [[ -n "${project_id}" ]]; then
+ gcloud_args+=("--project"="${project_id}")
+ fi
+
+ if [[ -z "${_API_CLIENT_ACCESS_TOKEN}" ]]; then
+ if ! command -v gcloud &> /dev/null; then
+ echo "Error: gcloud CLI is not installed or not in PATH." >&2
+ return 1
+ fi
+ _API_CLIENT_ACCESS_TOKEN=$(gcloud auth application-default print-access-token "${gcloud_args[@]}" 2>/dev/null)
+ fi
+ echo "${_API_CLIENT_ACCESS_TOKEN}"
+}
+# _build_query_params safely constructs a URL query string.
+#
+# @param ... Key-value pairs (e.g., "pageSize=10" "pageToken=abc").
+# Only pairs with a non-empty value are included.
+_build_query_params() {
+ local params=()
+ for arg in "$@"; do
+ local key="${arg%%=*}"
+ local value="${arg#*=}"
+ if [[ -n "$value" ]]; then
+ # Note: For production use, value should be URL-encoded.
+ params+=("${key}=${value}")
+ fi
+ done
+
+ if ((${#params[@]} > 0)); then
+ (
+ # Join the array with '&'
+ IFS='&'
+ echo "?${params[*]}"
+ )
+ else
+ echo ""
+ fi
+}
+
+
+# _call_api is a helper function to make authenticated API calls.
+#
+# @param string method The HTTP method (e.g., GET, POST, DELETE).
+# @param string url The full URL for the API endpoint.
+# @param string body Optional. The request body as a JSON string.
+# @param string project_id Optional. Project ID for quota and billing.
+# @param string additional_headers Optional. A newline-separated string of additional headers.
+_call_api() {
+ local method="$1"
+ local url="$2"
+ local body="${3:-""}"
+ local project_id="${4:-""}"
+ local additional_headers="${5:-""}"
+ local access_token
+
+ # Log the API call to stderr (captured by logs)
+ echo "[API CALL] $method $url" >&2
+ if [[ -n "${body}" ]]; then
+ echo "[API BODY] ${body}" >&2
+ fi
+
+ access_token=$(_get_access_token "${project_id}")
+
+ if [[ -z "${access_token}" ]]; then
+ echo "Error: Not authenticated. Please run 'gcloud auth application-default login'." >&2
+ return 1
+ fi
+
+ local curl_args=("--silent" "--show-error" "--request" "${method}")
+ curl_args+=("--header" "Authorization: Bearer ${access_token}")
+
+ # Add the quota project header if a project_id was provided.
+ if [[ -n "${project_id}" ]]; then
+ curl_args+=("--header" "X-Goog-User-Project: ${project_id}")
+ fi
+
+ # Parse and add additional headers
+ if [[ -n "${additional_headers}" ]]; then
+ local OLD_IFS="$IFS"
+ IFS=$'\n'
+ for header in ${additional_headers}; do
+ curl_args+=("--header" "${header}")
+ done
+ IFS="$OLD_IFS"
+ fi
+
+ if [[ -n "${body}" ]]; then
+ curl_args+=("--header" "Content-Type: application/json")
+ curl_args+=("--data" "${body}")
+ fi
+
+ curl "${curl_args[@]}" "${url}"
+}
+
+
+###############################################################################
+# Analytics Hub API (v1) - JSON Helpers
+#
+# This script provides helper functions to construct JSON request bodies
+# for the Analytics Hub API v1.
+###############################################################################
+
+# Creates a JSON object for a DataExchange.
+# @param string display_name Required.
+# @param string description Optional.
+# @param string primary_contact Optional.
+# @param string documentation Optional.
+create_data_exchange() {
+ local display_name="$1"
+ local description="${2:-null}"
+ local primary_contact="${3:-null}"
+ local documentation="${4:-null}"
+
+ jq -c --null-input \
+ --arg dn "$display_name" \
+ --arg desc "$description" \
+ --arg pc "$primary_contact" \
+ --arg doc "$documentation" \
+ '{displayName: $dn, description: $desc, primaryContact: $pc, documentation: $doc} | del(..|select(. == "null"))'
+}
+
+# Creates a JSON object for a BigQueryDatasetSource.
+# @param string dataset_resource Required. Format: projects/{project}/datasets/{dataset}
+create_bigquery_dataset_source() {
+ jq -c --null-input --arg ds "$1" '{dataset: $ds}'
+}
+
+# Creates a JSON object for a Listing.
+# @param string display_name Required.
+# @param string bigquery_dataset_source_json Required. JSON object.
+# @param string description Optional.
+# @param string primary_contact Optional.
+# @param string documentation Optional.
+create_listing() {
+ local display_name="$1"
+ local bq_source="$2"
+ local description="${3:-null}"
+ local primary_contact="${4:-null}"
+ local documentation="${5:-null}"
+
+ jq -c --null-input \
+ --arg dn "$display_name" \
+ --argjson bqs "$bq_source" \
+ --arg desc "$description" \
+ --arg pc "$primary_contact" \
+ --arg doc "$documentation" \
+ '{displayName: $dn, bigQueryDataset: $bqs, description: $desc, primaryContact: $pc, documentation: $doc} | del(..|select(. == "null"))'
+}
+
+# Creates a JSON object for DestinationDatasetReference.
+# @param string project_id Required.
+# @param string dataset_id Required.
+create_destination_dataset_reference() {
+ jq -c --null-input --arg pid "$1" --arg did "$2" \
+ '{projectId: $pid, datasetId: $did}'
+}
+
+# Creates a JSON object for DestinationDataset.
+# @param string dataset_reference_json Required.
+# @param string location Required.
+# @param string description Optional.
+# @param string friendly_name Optional.
+create_destination_dataset() {
+ local ref="$1"
+ local loc="$2"
+ local desc="${3:-null}"
+ local fname="${4:-null}"
+
+ jq -c --null-input \
+ --argjson ref "$ref" \
+ --arg loc "$loc" \
+ --arg desc "$desc" \
+ --arg fname "$fname" \
+ '{datasetReference: $ref, location: $loc, description: $desc, friendlyName: $fname} | del(..|select(. == "null"))'
+}
+
+# Creates a JSON object for SubscribeListingRequest.
+# @param string destination_dataset_json Required.
+create_subscribe_listing_request() {
+ jq -c --null-input --argjson dd "$1" \
+ '{destinationDataset: $dd}'
+}
+
+# Creates a JSON object for SetIamPolicyRequest.
+# @param string policy_json Required.
+# @param string update_mask Optional.
+create_set_iam_policy_request() {
+ local policy="$1"
+ local mask="${2:-null}"
+ jq -c --null-input --argjson p "$policy" --arg m "$mask" \
+ '{policy: $p, updateMask: $m} | del(..|select(. == "null"))'
+}
+
+# Creates a JSON object for RefreshSubscriptionRequest.
+create_refresh_subscription_request() {
+ echo "{}"
+}
+
+# Creates a JSON object for RevokeSubscriptionRequest.
+create_revoke_subscription_request() {
+ echo "{}"
+}
+
+# Creates a JSON object for SubscribeDataExchangeRequest.
+# @param string destination_dataset_json Required.
+create_subscribe_data_exchange_request() {
+ jq -c --null-input --argjson dd "$1" \
+ '{destinationDataset: $dd}'
+}
+
+# Creates a JSON object for TestIamPermissionsRequest.
+# @param string permissions_array_json Required. e.g. ["bigquery.datasets.get"]
+create_test_iam_permissions_request() {
+ jq -c --null-input --argjson p "$1" \
+ '{permissions: $p}'
+}
+
+
+###############################################################################
+# Analytics Hub API (v1) Client
+#
+# This script provides a client for the Analytics Hub API v1.
+#
+# Discovery Doc Revision: 20260125
+###############################################################################
+
+# Resolve the directory of this script to locate internal helpers.
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+# Base URL for the Analytics Hub API
+ANALYTICSHUB_V1_BASE_URL="https://analyticshub.googleapis.com/v1"
+
+# --- Data Exchanges ---
+
+# Lists all data exchanges in a given project and location.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_list() {
+ local project_id="$1"
+ local location="$2"
+ local page_size="${3:-""}"
+ local page_token="${4:-""}"
+ local billing_project_id="${5:-$project_id}"
+
+ local parent="projects/${project_id}/locations/${location}"
+ local query_args=()
+ if [[ -n "${page_size}" ]]; then query_args+=("pageSize=${page_size}"); fi
+ if [[ -n "${page_token}" ]]; then query_args+=("pageToken=${page_token}"); fi
+
+ local query_params
+ query_params=$(_build_query_params "${query_args[@]}")
+
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${parent}/dataExchanges${query_params}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
+
+# Creates a new data exchange.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string request_body Required. DataExchange JSON.
+# @param string data_exchange_id Required. The ID of the data exchange.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_create() {
+ local project_id="$1"
+ local location="$2"
+ local request_body="$3"
+ local data_exchange_id="$4"
+ local billing_project_id="${5:-$project_id}"
+
+ local parent="projects/${project_id}/locations/${location}"
+ local query_params
+ query_params=$(_build_query_params "dataExchangeId=${data_exchange_id}")
+
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${parent}/dataExchanges${query_params}"
+ _call_api "POST" "${url}" "${request_body}" "${billing_project_id}"
+}
+
+# Gets the details of a data exchange.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_get() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local billing_project_id="${4:-$project_id}"
+
+ local name="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}"
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${name}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
+
+# Deletes an existing data exchange.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_delete() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local billing_project_id="${4:-$project_id}"
+
+ local name="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}"
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${name}"
+ _call_api "DELETE" "${url}" "" "${billing_project_id}"
+}
+
+# --- Listings ---
+
+# Lists all listings in a given project and location.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_list() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local page_size="${4:-""}"
+ local page_token="${5:-""}"
+ local billing_project_id="${6:-$project_id}"
+
+ local parent="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}"
+ local query_args=()
+ if [[ -n "${page_size}" ]]; then query_args+=("pageSize=${page_size}"); fi
+ if [[ -n "${page_token}" ]]; then query_args+=("pageToken=${page_token}"); fi
+
+ local query_params
+ query_params=$(_build_query_params "${query_args[@]}")
+
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${parent}/listings${query_params}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
+
+# Creates a new listing.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string request_body Required. Listing JSON.
+# @param string listing_id Required. The ID of the listing.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_create() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local request_body="$4"
+ local listing_id="$5"
+ local billing_project_id="${6:-$project_id}"
+
+ local parent="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}"
+ local query_params
+ query_params=$(_build_query_params "listingId=${listing_id}")
+
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${parent}/listings${query_params}"
+ _call_api "POST" "${url}" "${request_body}" "${billing_project_id}"
+}
+
+# Gets the details of a listing.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string listing_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_get() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local listing_id="$4"
+ local billing_project_id="${5:-$project_id}"
+
+ local name="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}/listings/${listing_id}"
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${name}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
+
+# Deletes a listing.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string listing_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_delete() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local listing_id="$4"
+ local billing_project_id="${5:-$project_id}"
+
+ local name="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}/listings/${listing_id}"
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${name}"
+ _call_api "DELETE" "${url}" "" "${billing_project_id}"
+}
+
+# Subscribes to a listing.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param string listing_id Required.
+# @param string request_body Required. SubscribeListingRequest JSON.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_subscribe() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local listing_id="$4"
+ local request_body="$5"
+ local billing_project_id="${6:-$project_id}"
+
+ local name="projects/${project_id}/locations/${location}/dataExchanges/${data_exchange_id}/listings/${listing_id}"
+ local url="${ANALYTICSHUB_V1_BASE_URL}/${name}:subscribe"
+ _call_api "POST" "${url}" "${request_body}" "${billing_project_id}"
+}
diff --git a/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1_util.sh b/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1_util.sh
new file mode 100755
index 0000000..72879c2
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/clients/analyticshub_v1_util.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# UTILITY SCRIPT FOR: analyticshub_v1
+###############################################################################
+
+# Source the main client script
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${_SCRIPT_DIR}/analyticshub_v1.sh"
+
+
+###############################################################################
+# Analytics Hub API (v1) - Utility Functions
+###############################################################################
+
+# Lists all Data Exchanges by automatically handling pagination.
+#
+# Output: Stream of DataExchange resources in JSONL (Newline Delimited JSON) format.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_list_all() {
+ local project_id="$1"
+ local location="$2"
+ local page_size="${3:-""}"
+ local next_page_token="${4:-""}"
+ local billing_project_id="${5:-$project_id}"
+
+ while true; do
+ local response
+ response=$(analyticshub_v1_projects_locations_dataExchanges_list "${project_id}" "${location}" "${page_size}" "${next_page_token}" "${billing_project_id}")
+
+ if echo "$response" | jq --exit-status '.error' > /dev/null 2>&1; then
+ echo "API Error: $(echo "$response" | jq --compact-output '.error')" >&2
+ return 1
+ fi
+
+ echo "$response" | jq -c '.dataExchanges[]? // empty'
+
+ next_page_token=$(echo "$response" | jq -r '.nextPageToken // empty')
+ if [[ -z "${next_page_token}" ]]; then break; fi
+ done
+}
+
+# Lists all Listings by automatically handling pagination.
+#
+# Output: Stream of Listing resources in JSONL (Newline Delimited JSON) format.
+#
+# @param string project_id Required.
+# @param string location Required.
+# @param string data_exchange_id Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+analyticshub_v1_projects_locations_dataExchanges_listings_list_all() {
+ local project_id="$1"
+ local location="$2"
+ local data_exchange_id="$3"
+ local page_size="${4:-""}"
+ local next_page_token="${5:-""}"
+ local billing_project_id="${6:-$project_id}"
+
+ while true; do
+ local response
+ response=$(analyticshub_v1_projects_locations_dataExchanges_listings_list "${project_id}" "${location}" "${data_exchange_id}" "${page_size}" "${next_page_token}" "${billing_project_id}")
+
+ if echo "$response" | jq --exit-status '.error' > /dev/null 2>&1; then
+ echo "API Error: $(echo "$response" | jq --compact-output '.error')" >&2
+ return 1
+ fi
+
+ echo "$response" | jq -c '.listings[]? // empty'
+
+ next_page_token=$(echo "$response" | jq -r '.nextPageToken // empty')
+ if [[ -z "${next_page_token}" ]]; then break; fi
+ done
+}
diff --git a/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1.sh b/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1.sh
new file mode 100755
index 0000000..6fff954
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1.sh
@@ -0,0 +1,310 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+###############################################################################
+# Google API Client - Internal Utilities
+#
+# This script provides shared internal helper functions for authentication,
+# request building, and API execution. It is intended to be sourced by
+# specific service client scripts.
+###############################################################################
+
+# =============================================================================
+# INTERNAL: Authentication & API Utilities
+# =============================================================================
+
+# Cache the access token to avoid calling gcloud repeatedly.
+_API_CLIENT_ACCESS_TOKEN=""
+
+# _get_access_token ensures we only call gcloud once per script execution.
+_get_access_token() {
+ local project_id="${1:-""}"
+ local gcloud_args=()
+
+ if [[ -n "${project_id}" ]]; then
+ gcloud_args+=("--project"="${project_id}")
+ fi
+
+ if [[ -z "${_API_CLIENT_ACCESS_TOKEN}" ]]; then
+ if ! command -v gcloud &> /dev/null; then
+ echo "Error: gcloud CLI is not installed or not in PATH." >&2
+ return 1
+ fi
+ _API_CLIENT_ACCESS_TOKEN=$(gcloud auth application-default print-access-token "${gcloud_args[@]}" 2>/dev/null)
+ fi
+ echo "${_API_CLIENT_ACCESS_TOKEN}"
+}
+# _build_query_params safely constructs a URL query string.
+#
+# @param ... Key-value pairs (e.g., "pageSize=10" "pageToken=abc").
+# Only pairs with a non-empty value are included.
+_build_query_params() {
+ local params=()
+ for arg in "$@"; do
+ local key="${arg%%=*}"
+ local value="${arg#*=}"
+ if [[ -n "$value" ]]; then
+ # Note: For production use, value should be URL-encoded.
+ params+=("${key}=${value}")
+ fi
+ done
+
+ if ((${#params[@]} > 0)); then
+ (
+ # Join the array with '&'
+ IFS='&'
+ echo "?${params[*]}"
+ )
+ else
+ echo ""
+ fi
+}
+
+
+# _call_api is a helper function to make authenticated API calls.
+#
+# @param string method The HTTP method (e.g., GET, POST, DELETE).
+# @param string url The full URL for the API endpoint.
+# @param string body Optional. The request body as a JSON string.
+# @param string project_id Optional. Project ID for quota and billing.
+# @param string additional_headers Optional. A newline-separated string of additional headers.
+_call_api() {
+ local method="$1"
+ local url="$2"
+ local body="${3:-""}"
+ local project_id="${4:-""}"
+ local additional_headers="${5:-""}"
+ local access_token
+
+ # Log the API call to stderr (captured by logs)
+ echo "[API CALL] $method $url" >&2
+ if [[ -n "${body}" ]]; then
+ echo "[API BODY] ${body}" >&2
+ fi
+
+ access_token=$(_get_access_token "${project_id}")
+
+ if [[ -z "${access_token}" ]]; then
+ echo "Error: Not authenticated. Please run 'gcloud auth application-default login'." >&2
+ return 1
+ fi
+
+ local curl_args=("--silent" "--show-error" "--request" "${method}")
+ curl_args+=("--header" "Authorization: Bearer ${access_token}")
+
+ # Add the quota project header if a project_id was provided.
+ if [[ -n "${project_id}" ]]; then
+ curl_args+=("--header" "X-Goog-User-Project: ${project_id}")
+ fi
+
+ # Parse and add additional headers
+ if [[ -n "${additional_headers}" ]]; then
+ local OLD_IFS="$IFS"
+ IFS=$'\n'
+ for header in ${additional_headers}; do
+ curl_args+=("--header" "${header}")
+ done
+ IFS="$OLD_IFS"
+ fi
+
+ if [[ -n "${body}" ]]; then
+ curl_args+=("--header" "Content-Type: application/json")
+ curl_args+=("--data" "${body}")
+ fi
+
+ curl "${curl_args[@]}" "${url}"
+}
+
+
+###############################################################################
+# Roads Selection API (v1) - JSON Helpers
+#
+# This script provides helper functions to construct JSON request bodies
+# for the Roads Selection API.
+###############################################################################
+
+# Creates a JSON object for a LatLng.
+# @param float latitude
+# @param float longitude
+create_lat_lng() {
+ jq -c --null-input --argjson lat "$1" --argjson lon "$2" \
+ '{latitude: $lat, longitude: $lon}'
+}
+
+# Creates a JSON object for a DynamicRoute.
+# @param string origin_json JSON object (LatLng)
+# @param string destination_json JSON object (LatLng)
+# @param string intermediates_json_array Optional. JSON array of LatLng objects.
+create_dynamic_route() {
+ local origin="$1"
+ local destination="$2"
+ local intermediates="${3:-null}"
+
+ jq -c --null-input \
+ --argjson origin "$origin" \
+ --argjson dest "$destination" \
+ --argjson inter "$intermediates" \
+ '{origin: $origin, destination: $dest, intermediates: $inter} | del(..|nulls)'
+}
+
+# Creates a JSON object for a SelectedRoute.
+# @param string dynamic_route_json JSON object (DynamicRoute)
+# @param string display_name Optional.
+# @param string route_attributes_json Optional. JSON object (map).
+create_selected_route() {
+ local dynamic_route="$1"
+ local display_name="${2:-null}"
+ local route_attributes="${3:-null}"
+
+ jq -c --null-input \
+ --argjson dr "$dynamic_route" \
+ --arg dn "$display_name" \
+ --argjson ra "$route_attributes" \
+ '{dynamicRoute: $dr, displayName: $dn, routeAttributes: $ra} | del(..|nulls) | if .displayName == "null" then del(.displayName) else . end'
+}
+
+# Creates a JSON object for a CreateSelectedRouteRequest.
+# @param string parent Required. Format: projects/{project}
+# @param string selected_route_json Required. JSON object (SelectedRoute).
+# @param string selected_route_id Optional.
+create_create_selected_route_request() {
+ local parent="$1"
+ local selected_route="$2"
+ local selected_route_id="${3:-null}"
+
+ jq -c --null-input \
+ --arg p "$parent" \
+ --argjson sr "$selected_route" \
+ --arg srid "$selected_route_id" \
+ '{parent: $p, selectedRoute: $sr, selectedRouteId: $srid} | del(..|nulls) | if .selectedRouteId == "null" then del(.selectedRouteId) else . end'
+}
+
+# Creates a JSON object for a BatchCreateSelectedRoutesRequest.
+# @param string requests_json_array Required. JSON array of CreateSelectedRouteRequest objects.
+create_batch_create_selected_routes_request() {
+ local requests="$1"
+
+ jq -c --null-input \
+ --argjson reqs "$requests" \
+ '{requests: $reqs}'
+}
+
+
+###############################################################################
+# Roads Selection API (v1) Client
+#
+# This script provides a client for the Roads Selection API.
+# It includes authentication helpers, request builders, and API methods.
+#
+# Discovery Doc Revision: 20260204
+###############################################################################
+
+# Resolve the directory of this script to locate internal helpers.
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+# Base URL for the Roads Selection API
+ROADS_SELECTION_V1_BASE_URL="https://roads.googleapis.com/selection/v1"
+
+# Creates multiple SelectedRoutes and starts a schedule.
+#
+# @param string project_id Required.
+# @param string request_body Required. The BatchCreateSelectedRoutesRequest JSON.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_batchCreate() {
+ local project_id="$1"
+ local request_body="$2"
+ local billing_project_id="${3:-$project_id}"
+ local parent="projects/${project_id}"
+ local url="${ROADS_SELECTION_V1_BASE_URL}/${parent}/selectedRoutes:batchCreate"
+ _call_api "POST" "${url}" "${request_body}" "${billing_project_id}"
+}
+
+# Creates a SelectedRoute and starts a schedule.
+#
+# @param string project_id Required.
+# @param string request_body Required. The SelectedRoute JSON.
+# @param string selected_route_id Optional. The ID to use for the SelectedRoute.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_create() {
+ local project_id="$1"
+ local request_body="$2"
+ local selected_route_id="${3:-}"
+ local billing_project_id="${4:-$project_id}"
+
+ local parent="projects/${project_id}"
+ local query_params=""
+ if [[ -n "${selected_route_id}" ]]; then
+ query_params=$(_build_query_params "selectedRouteId=${selected_route_id}")
+ fi
+
+ local url="${ROADS_SELECTION_V1_BASE_URL}/${parent}/selectedRoutes${query_params}"
+ _call_api "POST" "${url}" "${request_body}" "${billing_project_id}"
+}
+
+# Deletes the specified SelectedRoute.
+#
+# @param string project_id Required.
+# @param string selected_route_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_delete() {
+ local project_id="$1"
+ local selected_route_id="$2"
+ local billing_project_id="${3:-$project_id}"
+ local name="projects/${project_id}/selectedRoutes/${selected_route_id}"
+ local url="${ROADS_SELECTION_V1_BASE_URL}/${name}"
+ _call_api "DELETE" "${url}" "" "${billing_project_id}"
+}
+
+# Gets a SelectedRoute.
+#
+# @param string project_id Required.
+# @param string selected_route_id Required.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_get() {
+ local project_id="$1"
+ local selected_route_id="$2"
+ local billing_project_id="${3:-$project_id}"
+ local name="projects/${project_id}/selectedRoutes/${selected_route_id}"
+ local url="${ROADS_SELECTION_V1_BASE_URL}/${name}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
+
+# Lists all SelectedRoutes for the specified project.
+#
+# @param string project_id Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_list() {
+ local project_id="$1"
+ local page_size="${2:-}"
+ local page_token="${3:-}"
+ local billing_project_id="${4:-$project_id}"
+
+ local parent="projects/${project_id}"
+ local query_args=()
+ if [[ -n "${page_size}" ]]; then query_args+=("pageSize=${page_size}"); fi
+ if [[ -n "${page_token}" ]]; then query_args+=("pageToken=${page_token}"); fi
+
+ local query_params
+ query_params=$(_build_query_params "${query_args[@]}")
+
+ local url="${ROADS_SELECTION_V1_BASE_URL}/${parent}/selectedRoutes${query_params}"
+ _call_api "GET" "${url}" "" "${billing_project_id}"
+}
diff --git a/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1_util.sh b/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1_util.sh
new file mode 100755
index 0000000..9ef0022
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/clients/roadsselection_v1_util.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# UTILITY SCRIPT FOR: roadsselection_v1
+###############################################################################
+
+# Source the main client script
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${_SCRIPT_DIR}/roadsselection_v1.sh"
+
+
+###############################################################################
+# Roads Selection API (v1) - Utility Functions
+#
+# This script provides higher-level convenience functions for the Roads
+# Selection API, such as automatic pagination for list methods.
+###############################################################################
+
+# Lists all SelectedRoutes by automatically handling pagination.
+#
+# Output: Stream of SelectedRoute resources in JSONL (Newline Delimited JSON) format.
+#
+# @param string project_id Required.
+# @param integer page_size Optional.
+# @param string page_token Optional.
+# @param string billing_project_id Optional. Defaults to project_id.
+roadsselection_v1_projects_selectedRoutes_list_all() {
+ local project_id="$1"
+ local page_size="${2:-""}"
+ local next_page_token="${3:-""}"
+ local billing_project_id="${4:-$project_id}"
+
+ while true; do
+ local response
+ response=$(roadsselection_v1_projects_selectedRoutes_list "${project_id}" "${page_size}" "${next_page_token}" "${billing_project_id}")
+
+ # Check for API Error
+ if echo "$response" | jq --exit-status '.error' > /dev/null 2>&1; then
+ echo "API Error: $(echo "$response" | jq --compact-output '.error')" >&2
+ return 1
+ fi
+
+ # Output the current page of routes (JSONL format)
+ echo "$response" | jq -c '.selectedRoutes[]? // empty'
+
+ # Extract next page token
+ next_page_token=$(echo "$response" | jq -r '.nextPageToken // empty')
+
+ if [[ -z "${next_page_token}" ]]; then
+ break
+ fi
+ done
+}
diff --git a/roads_management_insights/rmi_cli_tools/clients/routes_v2.sh b/roads_management_insights/rmi_cli_tools/clients/routes_v2.sh
new file mode 100755
index 0000000..9a71474
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/clients/routes_v2.sh
@@ -0,0 +1,322 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+###############################################################################
+# Google API Client - Internal Utilities
+#
+# This script provides shared internal helper functions for authentication,
+# request building, and API execution. It is intended to be sourced by
+# specific service client scripts.
+###############################################################################
+
+# =============================================================================
+# INTERNAL: Authentication & API Utilities
+# =============================================================================
+
+# Cache the access token to avoid calling gcloud repeatedly.
+_API_CLIENT_ACCESS_TOKEN=""
+
+# _get_access_token ensures we only call gcloud once per script execution.
+_get_access_token() {
+ local project_id="${1:-""}"
+ local gcloud_args=()
+
+ if [[ -n "${project_id}" ]]; then
+ gcloud_args+=("--project"="${project_id}")
+ fi
+
+ if [[ -z "${_API_CLIENT_ACCESS_TOKEN}" ]]; then
+ if ! command -v gcloud &> /dev/null; then
+ echo "Error: gcloud CLI is not installed or not in PATH." >&2
+ return 1
+ fi
+ _API_CLIENT_ACCESS_TOKEN=$(gcloud auth application-default print-access-token "${gcloud_args[@]}" 2>/dev/null)
+ fi
+ echo "${_API_CLIENT_ACCESS_TOKEN}"
+}
+# _build_query_params safely constructs a URL query string.
+#
+# @param ... Key-value pairs (e.g., "pageSize=10" "pageToken=abc").
+# Only pairs with a non-empty value are included.
+_build_query_params() {
+ local params=()
+ for arg in "$@"; do
+ local key="${arg%%=*}"
+ local value="${arg#*=}"
+ if [[ -n "$value" ]]; then
+ # Note: For production use, value should be URL-encoded.
+ params+=("${key}=${value}")
+ fi
+ done
+
+ if ((${#params[@]} > 0)); then
+ (
+ # Join the array with '&'
+ IFS='&'
+ echo "?${params[*]}"
+ )
+ else
+ echo ""
+ fi
+}
+
+
+# _call_api is a helper function to make authenticated API calls.
+#
+# @param string method The HTTP method (e.g., GET, POST, DELETE).
+# @param string url The full URL for the API endpoint.
+# @param string body Optional. The request body as a JSON string.
+# @param string project_id Optional. Project ID for quota and billing.
+# @param string additional_headers Optional. A newline-separated string of additional headers.
+_call_api() {
+ local method="$1"
+ local url="$2"
+ local body="${3:-""}"
+ local project_id="${4:-""}"
+ local additional_headers="${5:-""}"
+ local access_token
+
+ # Log the API call to stderr (captured by logs)
+ echo "[API CALL] $method $url" >&2
+ if [[ -n "${body}" ]]; then
+ echo "[API BODY] ${body}" >&2
+ fi
+
+ access_token=$(_get_access_token "${project_id}")
+
+ if [[ -z "${access_token}" ]]; then
+ echo "Error: Not authenticated. Please run 'gcloud auth application-default login'." >&2
+ return 1
+ fi
+
+ local curl_args=("--silent" "--show-error" "--request" "${method}")
+ curl_args+=("--header" "Authorization: Bearer ${access_token}")
+
+ # Add the quota project header if a project_id was provided.
+ if [[ -n "${project_id}" ]]; then
+ curl_args+=("--header" "X-Goog-User-Project: ${project_id}")
+ fi
+
+ # Parse and add additional headers
+ if [[ -n "${additional_headers}" ]]; then
+ local OLD_IFS="$IFS"
+ IFS=$'\n'
+ for header in ${additional_headers}; do
+ curl_args+=("--header" "${header}")
+ done
+ IFS="$OLD_IFS"
+ fi
+
+ if [[ -n "${body}" ]]; then
+ curl_args+=("--header" "Content-Type: application/json")
+ curl_args+=("--data" "${body}")
+ fi
+
+ curl "${curl_args[@]}" "${url}"
+}
+
+
+###############################################################################
+# Routes API (v2) - JSON Helpers
+#
+# This script provides helper functions to construct JSON request bodies
+# for the Routes API v2.
+###############################################################################
+
+# Creates a JSON object for a LatLng.
+# @param float latitude
+# @param float longitude
+create_lat_lng() {
+ jq -c --null-input --argjson lat "$1" --argjson lon "$2" \
+ '{latitude: $lat, longitude: $lon}'
+}
+
+# Creates a JSON object for a Location.
+# @param string lat_lng_json Required.
+# @param integer heading Optional.
+create_location() {
+ local lat_lng="$1"
+ local heading="${2:-null}"
+
+ jq -c --null-input \
+ --argjson ll "$lat_lng" \
+ --argjson h "$heading" \
+ '{latLng: $ll, heading: $h} | del(..|select(. == null))'
+}
+
+# Creates a JSON object for a Waypoint.
+# @param string location_json Optional. Location JSON.
+# @param string place_id Optional.
+# @param string address Optional.
+# @param boolean via Optional.
+create_waypoint() {
+ local location="${1:-null}"
+ local place_id="${2:-null}"
+ local address="${3:-null}"
+ local via="${4:-null}"
+
+ jq -c --null-input \
+ --argjson loc "$location" \
+ --arg pid "$place_id" \
+ --arg addr "$address" \
+ --argjson via "$via" \
+ '{location: $loc, placeId: $pid, address: $addr, via: $via} | del(..|select(. == "null" or . == null))'
+}
+
+# Creates a JSON object for RouteModifiers.
+# @param boolean avoid_tolls Optional.
+# @param boolean avoid_highways Optional.
+# @param boolean avoid_ferries Optional.
+create_route_modifiers() {
+ local tolls="${1:-null}"
+ local highways="${2:-null}"
+ local ferries="${3:-null}"
+
+ jq -c --null-input \
+ --argjson tolls "$tolls" \
+ --argjson highways "$highways" \
+ --argjson ferries "$ferries" \
+ '{avoidTolls: $tolls, avoidHighways: $highways, avoidFerries: $ferries} | del(..|select(. == null))'
+}
+
+# Creates a JSON object for TransitPreferences.
+# @param string allowed_travel_modes_array_json Optional. Array of strings (e.g. ["BUS", "SUBWAY"]).
+# @param string routing_preference Optional. e.g. LESS_WALKING.
+create_transit_preferences() {
+ local modes="${1:-null}"
+ local pref="${2:-null}"
+
+ jq -c --null-input \
+ --argjson modes "$modes" \
+ --arg pref "$pref" \
+ '{allowedTravelModes: $modes, routingPreference: $pref} | del(..|select(. == "null" or . == null))'
+}
+
+# Creates a JSON object for a ComputeRoutesRequest.
+# @param string origin_waypoint_json Required.
+# @param string destination_waypoint_json Required.
+# @param string travel_mode Optional. e.g. DRIVE, WALK, BICYCLE.
+# @param string routing_preference Optional. e.g. TRAFFIC_AWARE, TRAFFIC_AWARE_OPTIMAL.
+# @param string intermediates_array_json Optional. Array of Waypoint JSONs.
+create_compute_routes_request() {
+ local origin="$1"
+ local destination="$2"
+ local travel_mode="${3:-null}"
+ local routing_pref="${4:-null}"
+ local intermediates="${5:-null}"
+
+ jq -c --null-input \
+ --argjson origin "$origin" \
+ --argjson dest "$destination" \
+ --arg tm "$travel_mode" \
+ --arg rp "$routing_pref" \
+ --argjson inter "$intermediates" \
+ '{origin: $origin, destination: $dest, travelMode: $tm, routingPreference: $rp, intermediates: $inter} | del(..|select(. == "null" or . == null))'
+}
+
+# Creates a JSON object for a RouteMatrixOrigin.
+# @param string waypoint_json Required.
+# @param string route_modifiers_json Optional.
+create_route_matrix_origin() {
+ local waypoint="$1"
+ local modifiers="${2:-null}"
+
+ jq -c --null-input \
+ --argjson wp "$waypoint" \
+ --argjson mod "$modifiers" \
+ '{waypoint: $wp, routeModifiers: $mod} | del(..|select(. == null))'
+}
+
+# Creates a JSON object for a RouteMatrixDestination.
+# @param string waypoint_json Required.
+create_route_matrix_destination() {
+ local waypoint="$1"
+
+ jq -c --null-input \
+ --argjson wp "$waypoint" \
+ '{waypoint: $wp}'
+}
+
+# Creates a JSON object for a ComputeRouteMatrixRequest.
+# @param string origins_array_json Required. Array of RouteMatrixOrigin JSONs.
+# @param string destinations_array_json Required. Array of RouteMatrixDestination JSONs.
+# @param string travel_mode Optional.
+# @param string routing_preference Optional.
+create_compute_route_matrix_request() {
+ local origins="$1"
+ local destinations="$2"
+ local travel_mode="${3:-null}"
+ local routing_pref="${4:-null}"
+
+ jq -c --null-input \
+ --argjson origins "$origins" \
+ --argjson destinations "$destinations" \
+ --arg tm "$travel_mode" \
+ --arg rp "$routing_pref" \
+ '{origins: $origins, destinations: $destinations, travelMode: $tm, routingPreference: $rp} | del(..|select(. == "null" or . == null))'
+}
+
+
+###############################################################################
+# Routes API (v2) Client
+#
+# This script provides a client for the Routes API v2.
+#
+# Discovery Doc Revision: 20260202
+###############################################################################
+
+# Resolve the directory of this script to locate internal helpers.
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+# Base URL for the Routes API
+ROUTES_V2_BASE_URL="https://routes.googleapis.com"
+
+# Returns the primary route along with optional alternate routes.
+#
+# @param string request_body Required. ComputeRoutesRequest JSON.
+# @param string field_mask Required. Response field mask (e.g., "*").
+# @param string project_id Optional.
+# @see https://developers.google.com/maps/documentation/routes/reference/rest/v2/directions/computeRoutes
+routes_v2_computeRoutes() {
+ local request_body="$1"
+ local field_mask="${2:-"*"}"
+ local project_id="${3:-""}"
+
+ local url="${ROUTES_V2_BASE_URL}/directions/v2:computeRoutes"
+ local headers="X-Goog-FieldMask: ${field_mask}"
+
+ _call_api "POST" "${url}" "${request_body}" "${project_id}" "${headers}"
+}
+
+# Takes in a list of origins and destinations and returns a stream of route information.
+#
+# @param string request_body Required. ComputeRouteMatrixRequest JSON.
+# @param string field_mask Required. Response field mask.
+# @param string project_id Optional.
+# @see https://developers.google.com/maps/documentation/routes/reference/rest/v2/distanceMatrix/computeRouteMatrix
+routes_v2_computeRouteMatrix() {
+ local request_body="$1"
+ local field_mask="${2:-"*"}"
+ local project_id="${3:-""}"
+
+ local url="${ROUTES_V2_BASE_URL}/distanceMatrix/v2:computeRouteMatrix"
+ local headers="X-Goog-FieldMask: ${field_mask}"
+
+ _call_api "POST" "${url}" "${request_body}" "${project_id}" "${headers}"
+}
diff --git a/roads_management_insights/rmi_cli_tools/scenarios/project_cloud_setup.sh b/roads_management_insights/rmi_cli_tools/scenarios/project_cloud_setup.sh
new file mode 100755
index 0000000..97ba44d
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/scenarios/project_cloud_setup.sh
@@ -0,0 +1,292 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# Project Cloud Setup
+#
+# This script helps configure a Google Cloud project for accumulated data access.
+# References: https://developers.google.com/maps/documentation/roads-management-insights/accumulated-data
+###############################################################################
+
+# Locate and source the bundled utility script
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+# This path works in the 'dist' directory structure
+ANALYTICSHUB_UTIL="${_SCRIPT_DIR}/../clients/analyticshub_v1_util.sh"
+
+if [[ -f "$ANALYTICSHUB_UTIL" ]]; then
+ source "$ANALYTICSHUB_UTIL"
+fi
+
+# Displays usage information and available commands for the script.
+usage() {
+ echo "Usage: $0 [args]"
+ echo ""
+ echo "Commands:"
+ echo " all [MEMBER] Run setup and grant roles (e.g. user:email@addr)"
+ echo " step_enable_apis Enable BigQuery, Analytics Hub, Pub/Sub"
+ echo " step_verify_apis Verify APIs are enabled"
+ echo " step_configure_iam Grant required roles to a member"
+ echo ""
+ echo "IAM Helpers (MEMBER format: user:EMAIL, serviceAccount:EMAIL, group:EMAIL):"
+ echo " grant_roles_to_user "
+ echo " grant_roles_to_group "
+ echo " grant_roles_to_service_account "
+ echo ""
+ echo "Pub/Sub Helpers:"
+ echo " create_rmi_json_subscription [SUB_ID]"
+ echo " create_rmi_binary_subscription [SUB_ID]"
+ echo ""
+ echo "Analytics Hub Helpers:"
+ echo " subscribe_from_console_url [DATASET] [LOC]"
+ echo " subscribe_from_params [DATASET] [LOC]"
+}
+
+# Enables the required Google Cloud APIs (BigQuery, Analytics Hub, Pub/Sub) for the data project.
+step_enable_apis() {
+ local project_id="${1:-${PROJECT_CLOUD_ID:-}}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_CLOUD_ID required"; exit 1; fi
+ echo "Enabling APIs for $project_id..."
+ gcloud services enable bigquery.googleapis.com --project "$project_id"
+ gcloud services enable analyticshub.googleapis.com --project "$project_id"
+ gcloud services enable pubsub.googleapis.com --project "$project_id"
+ echo "APIs enabled."
+}
+
+# Verifies that the required APIs are successfully enabled in the project.
+step_verify_apis() {
+ local project_id="${1:-${PROJECT_CLOUD_ID:-}}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_CLOUD_ID required"; exit 1; fi
+ echo "Verifying enabled APIs for $project_id..."
+ gcloud services list --project "$project_id" --filter="config.name:bigquery.googleapis.com"
+ gcloud services list --project "$project_id" --filter="config.name:analyticshub.googleapis.com"
+ gcloud services list --project "$project_id" --filter="config.name:pubsub.googleapis.com"
+}
+
+# Internal helper to grant a specific IAM role to a member.
+_grant_role() {
+ local project_id="$1"
+ local member="$2"
+ local role="$3"
+ echo "Granting $role to $member on project $project_id..."
+
+ if ! gcloud projects add-iam-policy-binding "$project_id" --member="$member" --role="$role" --quiet > /dev/null 2> /tmp/gcloud_error.log; then
+ local error_msg
+ error_msg=$(cat /tmp/gcloud_error.log)
+ if [[ "$error_msg" == *"PERMISSION_DENIED"* ]]; then
+ echo "Error: Permission Denied while granting $role."
+ echo "Your account may lack 'resourcemanager.projects.setIamPolicy' on project $project_id."
+ echo "Please ask a Project Owner or IAM Admin to run this command for you:"
+ echo " gcloud projects add-iam-policy-binding $project_id --member='$member' --role='$role'"
+ return 1
+ else
+ echo "Error: $error_msg"
+ return 1
+ fi
+ fi
+}
+
+# Configures the necessary IAM roles for a member in the data project.
+step_configure_iam() {
+ local project_id="$1"
+ local member="$2"
+ if [[ -z "$project_id" || -z "$member" ]]; then echo "Usage: step_configure_iam "; exit 1; fi
+
+ echo "Configuring IAM roles for $member on $project_id..."
+ local failed=0
+ _grant_role "$project_id" "$member" "roles/analyticshub.subscriber" || failed=1
+ _grant_role "$project_id" "$member" "roles/bigquery.user" || failed=1
+ _grant_role "$project_id" "$member" "roles/pubsub.editor" || failed=1
+
+ if [[ $failed -eq 1 ]]; then
+ echo "IAM configuration partially or fully failed. See errors above."
+ return 1
+ fi
+ echo "IAM configuration complete."
+}
+
+# Helper to grant roles specifically to a user account.
+grant_roles_to_user() {
+ step_configure_iam "$1" "user:$2"
+}
+
+# Helper to grant roles specifically to a Google Group.
+grant_roles_to_group() {
+ step_configure_iam "$1" "group:$2"
+}
+
+# Helper to grant roles specifically to a Service Account.
+grant_roles_to_service_account() {
+ step_configure_iam "$1" "serviceAccount:$2"
+}
+
+# Runs the complete setup pipeline sequentially.
+run_all() {
+ local project_cloud_id="${1:-}"
+ local member="${2:-}" # Optional: user:email@example.com
+
+ if [[ -z "$project_cloud_id" ]]; then
+ usage
+ exit 1
+ fi
+
+ echo "Configuring Data Project (Cloud): $project_cloud_id"
+ step_enable_apis "$project_cloud_id"
+ step_verify_apis "$project_cloud_id"
+
+ if [[ -n "$member" ]]; then
+ step_configure_iam "$project_cloud_id" "$member"
+ else
+ echo "----------------------------------------------------------------"
+ echo "INFO: No member provided. To grant roles, run:"
+ echo " $0 step_configure_iam $project_cloud_id user:YOUR_EMAIL"
+ echo "----------------------------------------------------------------"
+ fi
+
+ echo "Data Project Configuration Helper Complete."
+}
+
+# Internal function to handle subscription logic to an Analytics Hub data exchange.
+_subscribe_to_exchange() {
+ local src_project="$1"
+ local src_location="$2"
+ local src_exchange="$3"
+ local project_cloud_id="$4"
+ local dest_dataset="$5"
+ local dest_location="$6"
+
+ echo "Target Exchange: projects/$src_project/locations/$src_location/dataExchanges/$src_exchange"
+
+ if ! command -v analyticshub_v1_projects_locations_dataExchanges_listings_list &> /dev/null; then
+ echo "Error: Analytics Hub client not found. Ensure you are running from the 'dist' folder."
+ return 1
+ fi
+
+ echo "Fetching listings for exchange..."
+ local listings_json
+ listings_json=$(analyticshub_v1_projects_locations_dataExchanges_listings_list "$src_project" "$src_location" "$src_exchange" "" "" "$project_cloud_id")
+
+ local listing_name
+ listing_name=$(echo "$listings_json" | jq -r '.listings[0].name // empty')
+
+ if [[ -z "$listing_name" ]]; then
+ echo "Error: No listings found in this exchange."
+ return 1
+ fi
+
+ local listing_id
+ listing_id=$(echo "$listing_name" | sed 's|.*/listings/||')
+
+ echo "Found Listing: $listing_id"
+
+ # Prepare Subscription Request
+ local dest_ref
+ dest_ref=$(create_destination_dataset_reference "$project_cloud_id" "$dest_dataset")
+ local dest_ds
+ dest_ds=$(create_destination_dataset "$dest_ref" "$dest_location")
+ local sub_req
+ sub_req=$(create_subscribe_listing_request "$dest_ds")
+
+ echo "Subscribing to listing..."
+ analyticshub_v1_projects_locations_dataExchanges_listings_subscribe "$src_project" "$src_location" "$src_exchange" "$listing_id" "$sub_req" "$project_cloud_id"
+}
+
+# Subscribes to a data exchange using a URL from the Google Cloud Console.
+subscribe_from_console_url() {
+ local url="$1"
+ local project_cloud_id="$2"
+ local dest_dataset="${3:-rmi_data_dataset}"
+ local dest_location="${4:-us}"
+
+ # Extract components from Console URL
+ if [[ "$url" =~ projects/([^/]+)/locations/([^/]+)/dataExchanges/([^/]+) ]]; then
+ local src_project="${BASH_REMATCH[1]}"
+ local src_location="${BASH_REMATCH[2]}"
+ local src_exchange="${BASH_REMATCH[3]}"
+
+ _subscribe_to_exchange "$src_project" "$src_location" "$src_exchange" "$project_cloud_id" "$dest_dataset" "$dest_location"
+ else
+ echo "Error: Could not parse Analytics Hub URL."
+ echo "Expected format: https://console.cloud.google.com/bigquery/analytics-hub/exchanges/projects/.../locations/.../dataExchanges/..."
+ fi
+}
+
+# Subscribes to a data exchange using explicit project, location, and exchange IDs.
+subscribe_from_params() {
+ local src_project="$1"
+ local src_location="$2"
+ local src_exchange="$3"
+ local project_cloud_id="$4"
+ local dest_dataset="${5:-rmi_data_dataset}"
+ local dest_location="${6:-us}"
+
+ _subscribe_to_exchange "$src_project" "$src_location" "$src_exchange" "$project_cloud_id" "$dest_dataset" "$dest_location"
+}
+
+# Creates a Pub/Sub subscription to the RMI real-time topic in JSON format.
+create_rmi_json_subscription() {
+ local project_rmi_id="$1"
+ local project_cloud_id="$2"
+ local sub_id="${3:-rmi-real-time-json-sub}"
+
+ # Get RMI project number
+ local project_number
+ project_number=$(gcloud projects describe "$project_rmi_id" --format="value(projectNumber)")
+
+ local topic="projects/maps-platform-roads-management/topics/rmi-roadsinformation-$project_number-json"
+
+ echo "Creating JSON subscription '$sub_id' in $project_cloud_id for topic $topic..."
+ gcloud pubsub subscriptions create "$sub_id" --topic="$topic" --project="$project_cloud_id"
+}
+
+# Creates a Pub/Sub subscription to the RMI real-time topic in Binary (Proto) format.
+create_rmi_binary_subscription() {
+ local project_rmi_id="$1"
+ local project_cloud_id="$2"
+ local sub_id="${3:-rmi-real-time-sub}"
+
+ # Get RMI project number
+ local project_number
+ project_number=$(gcloud projects describe "$project_rmi_id" --format="value(projectNumber)")
+
+ local topic="projects/maps-platform-roads-management/topics/rmi-roadsinformation-$project_number"
+
+ echo "Creating Binary subscription '$sub_id' in $project_cloud_id for topic $topic..."
+ gcloud pubsub subscriptions create "$sub_id" --topic="$topic" --project="$project_cloud_id"
+}
+
+# Command dispatcher
+if [[ $# -eq 0 ]]; then
+ usage
+ exit 0
+fi
+
+case "$1" in
+ all)
+ shift
+ run_all "$@"
+ ;;
+ step_*|subscribe_*|create_*|grant_*)
+ cmd="$1"
+ shift
+ "$cmd" "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/roads_management_insights/rmi_cli_tools/scenarios/project_optional_vpcsc.sh b/roads_management_insights/rmi_cli_tools/scenarios/project_optional_vpcsc.sh
new file mode 100755
index 0000000..5398997
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/scenarios/project_optional_vpcsc.sh
@@ -0,0 +1,153 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# Project Optional VPC-SC Setup
+#
+# This script provides guidance and YAML generation for VPC Service Controls (VPC-SC)
+# configuration required to consume RMI data.
+# References: https://developers.google.com/maps/documentation/roads-management-insights/vpc-sc
+###############################################################################
+
+# Displays usage information and available commands for the VPC-SC setup script.
+usage() {
+ echo "Usage: $0 [args]"
+ echo ""
+ echo "Commands:"
+ echo " all Generate all VPC-SC rule snippets"
+ echo " step_show_restricted_services Show required restricted services"
+ echo " step_generate_ingress Generate Ingress Rule YAML"
+ echo " step_generate_egress Generate Egress Rule YAML"
+ echo ""
+ echo "MEMBER_LIST: Comma-separated identities (e.g. user:email@addr,serviceAccount:sa@proj.iam.gserviceaccount.com)"
+}
+
+# Displays the list of services that must be restricted within the VPC-SC perimeter.
+step_show_restricted_services() {
+ echo "Ensure the following services are added to the 'Restricted Services' list in your perimeter:"
+ echo " - analyticshub.googleapis.com"
+ echo " - bigquery.googleapis.com"
+ echo " - pubsub.googleapis.com"
+ echo " - roads.googleapis.com"
+}
+
+# Generates the YAML snippet for a VPC-SC Ingress Rule.
+step_generate_ingress() {
+ local project_cloud_id="$1"
+ local members_csv="$2"
+ if [[ -z "$project_cloud_id" || -z "$members_csv" ]]; then echo "Usage: step_generate_ingress "; exit 1; fi
+
+ # Get project number
+ echo "Fetching project number for $project_cloud_id..." >&2
+ local project_number
+ project_number=$(gcloud projects describe "$project_cloud_id" --format="value(projectNumber)")
+
+ echo "--- Ingress Rule YAML ---"
+ echo "- ingressFrom:"
+ echo " identities:"
+ IFS=',' read -ra ADDR <<< "$members_csv"
+ for member in "${ADDR[@]}"; do
+ echo " - $member"
+ done
+ echo " sources:"
+ echo " - accessLevel: '*'"
+ echo " ingressTo:"
+ echo " operations:"
+ echo " - serviceName: analyticshub.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: bigquery.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: pubsub.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: roads.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " resources:"
+ echo " - projects/$project_number"
+}
+
+# Generates the YAML snippet for a VPC-SC Egress Rule.
+step_generate_egress() {
+ local members_csv="$1"
+ if [[ -z "$members_csv" ]]; then echo "Usage: step_generate_egress "; exit 1; fi
+
+ echo "--- Egress Rule YAML ---"
+ echo "- egressTo:"
+ echo " operations:"
+ echo " - serviceName: analyticshub.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: bigquery.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: pubsub.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " - serviceName: roads.googleapis.com"
+ echo " methodSelectors:"
+ echo " - method: '*'"
+ echo " resources:"
+ echo " - projects/maps-platform-roads-management"
+ echo " egressFrom:"
+ echo " identities:"
+ IFS=',' read -ra ADDR <<< "$members_csv"
+ for member in "${ADDR[@]}"; do
+ echo " - $member"
+ done
+}
+
+# Runs the complete VPC-SC configuration guidance pipeline.
+run_all() {
+ local project_cloud_id="$1"
+ local members_csv="$2"
+
+ echo "=== RMI VPC-SC Configuration Guide ==="
+ echo ""
+ step_show_restricted_services
+ echo ""
+ step_generate_ingress "$project_cloud_id" "$members_csv"
+ echo ""
+ step_generate_egress "$members_csv"
+ echo ""
+ echo "VPC-SC configuration rules generated. Please provide these to your Security Administrator."
+}
+
+# Command dispatcher
+if [[ $# -eq 0 ]]; then
+ usage
+ exit 0
+fi
+
+case "$1" in
+ all)
+ shift
+ run_all "$@"
+ ;;
+ step_*)
+ cmd="$1"
+ shift
+ "$cmd" "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/roads_management_insights/rmi_cli_tools/scenarios/project_rmi_setup.sh b/roads_management_insights/rmi_cli_tools/scenarios/project_rmi_setup.sh
new file mode 100755
index 0000000..bd233e3
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/scenarios/project_rmi_setup.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# Project RMI Setup
+#
+# This script helps configure a Google Cloud project for RMI.
+# References: https://developers.google.com/maps/documentation/roads-management-insights/cloud-setup
+###############################################################################
+
+# Displays usage information and available commands for the script.
+usage() {
+ echo "Usage: $0 [args]"
+ echo ""
+ echo "Commands:"
+ echo " all [MEMBER] Run all steps sequentially (MEMBER: user:EMAIL, etc.)"
+ echo " step_check_billing Check if billing is enabled"
+ echo " step_enable_apis Enable required GCP APIs"
+ echo " step_verify_apis Verify APIs are enabled"
+ echo " step_configure_iam Configure IAM roles for a member"
+ echo ""
+ echo "IAM Helpers (MEMBER format: user:EMAIL, serviceAccount:EMAIL, group:EMAIL):"
+ echo " grant_roles_to_user "
+ echo " grant_roles_to_group "
+ echo " grant_roles_to_service_account "
+}
+
+# Checks if billing is enabled for the specified Google Cloud project.
+step_check_billing() {
+ local project_id="${1:-${PROJECT_RMI_ID:-}}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+ echo "Checking billing status for $project_id..."
+ local billing_enabled
+ billing_enabled=$(gcloud beta billing projects describe "$project_id" --format="value(billingEnabled)" 2>/dev/null || echo "false")
+ if [[ "$billing_enabled" != "true" ]]; then
+ echo "Error: Billing is not enabled for project $project_id."
+ echo "Please enable billing in the Google Cloud Console."
+ exit 1
+ fi
+ echo "Billing is enabled."
+}
+
+# Enables the required Google Cloud APIs for the RMI project.
+step_enable_apis() {
+ local project_id="${1:-${PROJECT_RMI_ID:-}}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+ echo "Enabling APIs for $project_id..."
+ gcloud services enable roads.googleapis.com --project "$project_id"
+ gcloud services enable analyticshub.googleapis.com --project "$project_id"
+ echo "APIs enabled."
+}
+
+# Verifies that the required APIs are successfully enabled in the project.
+step_verify_apis() {
+ local project_id="${1:-${PROJECT_RMI_ID:-}}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+ echo "Verifying enabled APIs for $project_id..."
+ gcloud services list --project "$project_id" --filter="config.name:roads.googleapis.com"
+ gcloud services list --project "$project_id" --filter="config.name:analyticshub.googleapis.com"
+}
+
+# Internal helper to grant a specific IAM role to a member.
+_grant_role() {
+ local project_id="$1"
+ local member="$2"
+ local role="$3"
+ echo "Granting $role to $member on project $project_id..."
+
+ if ! gcloud projects add-iam-policy-binding "$project_id" --member="$member" --role="$role" --quiet > /dev/null 2> /tmp/gcloud_error.log; then
+ local error_msg
+ error_msg=$(cat /tmp/gcloud_error.log)
+ if [[ "$error_msg" == *"PERMISSION_DENIED"* ]]; then
+ echo "Error: Permission Denied while granting $role."
+ echo "Your account may lack 'resourcemanager.projects.setIamPolicy' on project $project_id."
+ echo "Please ask a Project Owner or IAM Admin to run this command for you:"
+ echo " gcloud projects add-iam-policy-binding $project_id --member='$member' --role='$role'"
+ return 1
+ else
+ echo "Error: $error_msg"
+ return 1
+ fi
+ fi
+}
+
+# Configures the necessary IAM roles for a member in the RMI project.
+step_configure_iam() {
+ local project_id="$1"
+ local member="$2"
+ if [[ -z "$project_id" || -z "$member" ]]; then echo "Usage: step_configure_iam "; exit 1; fi
+
+ echo "Configuring IAM roles for $member on $project_id..."
+ _grant_role "$project_id" "$member" "roles/roads.roadsSelectionAdmin"
+ echo "IAM configuration complete."
+}
+
+# Helper to grant roles specifically to a user account.
+grant_roles_to_user() {
+ step_configure_iam "$1" "user:$2"
+}
+
+# Helper to grant roles specifically to a Google Group.
+grant_roles_to_group() {
+ step_configure_iam "$1" "group:$2"
+}
+
+# Helper to grant roles specifically to a Service Account.
+grant_roles_to_service_account() {
+ step_configure_iam "$1" "serviceAccount:$2"
+}
+
+# Runs the complete setup pipeline sequentially.
+run_all() {
+ local project_rmi_id="${1:-}"
+ local member="${2:-}"
+
+ if [[ -z "$project_rmi_id" ]]; then
+ usage
+ exit 1
+ fi
+
+ echo "Configuring RMI project: $project_rmi_id"
+
+ step_check_billing "$project_rmi_id"
+ step_enable_apis "$project_rmi_id"
+ step_verify_apis "$project_rmi_id"
+
+ if [[ -n "$member" ]]; then
+ step_configure_iam "$project_rmi_id" "$member"
+ else
+ echo "No member provided. To grant admin access to a member, run:"
+ echo " $0 step_configure_iam $project_rmi_id user:USER_EMAIL"
+ fi
+
+ echo "RMI Project Configuration Complete."
+}
+
+# Command dispatcher
+if [[ $# -eq 0 ]]; then
+ usage
+ exit 0
+fi
+
+case "$1" in
+ all)
+ shift
+ run_all "$@"
+ ;;
+ step_*|grant_*)
+ cmd="$1"
+ shift
+ "$cmd" "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/roads_management_insights/rmi_cli_tools/scenarios/rmi_data_backup.sh b/roads_management_insights/rmi_cli_tools/scenarios/rmi_data_backup.sh
new file mode 100755
index 0000000..568cca6
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/scenarios/rmi_data_backup.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+###############################################################################
+# RMI Data Backup
+#
+# This script helps back up RMI-related data.
+###############################################################################
+
+# Locate and source the bundled utility script
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+ROADS_SELECTION_UTIL="${_SCRIPT_DIR}/../clients/roadsselection_v1_util.sh"
+
+if [[ -f "$ROADS_SELECTION_UTIL" ]]; then
+ source "$ROADS_SELECTION_UTIL"
+fi
+
+# Displays usage information and available commands for the backup script.
+usage() {
+ echo "Usage: $0 [args]"
+ echo ""
+ echo "Commands:"
+ echo " all [OUT_FILE]"
+ echo " Run full backup (Routes + BigQuery Copy)"
+ echo " step_initialize_backup "
+ echo " Show backup configuration"
+ echo " step_backup_routes [OUT_FILE]"
+ echo " Backup SelectedRoutes to a JSON file"
+ echo " step_backup_bq [DEST_DATASET_ID]"
+ echo " Copy travel time data to a backup dataset"
+ echo " step_export_to_gcs "
+ echo " Export data to Cloud Storage as JSONL"
+}
+
+# Initializes and displays the backup configuration.
+step_initialize_backup() {
+ local project_rmi_id="${1:-${PROJECT_RMI_ID:-}}"
+ local project_cloud_id="${2:-${PROJECT_CLOUD_ID:-}}"
+ echo "RMI Data Backup Script"
+ echo "Source (RMI Project): $project_rmi_id"
+ echo "Destination (Cloud Project): $project_cloud_id"
+}
+
+# Backs up Routes of Interest (SelectedRoutes) to a local JSON file.
+step_backup_routes() {
+ local project_id="${1:-${PROJECT_RMI_ID:-}}"
+ local output_file="${2:-selected_routes_backup.json}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+
+ echo "Backing up SelectedRoutes for project $project_id to $output_file..."
+
+ if ! command -v roadsselection_v1_projects_selectedRoutes_list_all &> /dev/null; then
+ echo "Error: Roads Selection utility not found. Run bundle.sh first."
+ return 1
+ fi
+
+ roadsselection_v1_projects_selectedRoutes_list_all "$project_id" "1000" ""
+
+ local count
+ count=$(wc -l < "$output_file")
+ echo "Backup complete. $count routes saved to $output_file"
+}
+
+# Copies travel time data from a subscribed dataset to a new backup dataset in the cloud project.
+step_backup_bq() {
+ local project_cloud_id="${1:-${PROJECT_CLOUD_ID:-}}"
+ local src_project_id="$2"
+ local src_dataset_id="$3"
+ local dest_dataset_id="${4:-rmi_backup}"
+
+ if [[ -z "$project_cloud_id" || -z "$src_project_id" || -z "$src_dataset_id" ]]; then
+ echo "Usage: step_backup_bq [DEST_DATASET_ID]"
+ exit 1
+ fi
+
+ echo "Backing up BigQuery data from $src_project_id.$src_dataset_id to $project_cloud_id.$dest_dataset_id..."
+
+ # 1. Create the backup dataset if it doesn't exist
+ echo "Ensuring dataset $dest_dataset_id exists in $project_cloud_id..."
+ bq --project_id="$project_cloud_id" mk --dataset --if_exists=true "$dest_dataset_id"
+
+ # 2. Copy tables
+ local tables=("routes_status" "historical_travel_time" "recent_roads_data")
+ for table in "${tables[@]}"; do
+ echo "Copying $table..."
+ bq --project_id="$project_cloud_id" query --use_legacy_sql=false \
+ "CREATE OR REPLACE TABLE \`$project_cloud_id.$dest_dataset_id.$table\` AS SELECT * FROM \`$src_project_id.$src_dataset_id.$table\`"
+ done
+
+ echo "BigQuery backup complete."
+}
+
+# Exports travel time data from the subscribed dataset to Google Cloud Storage.
+step_export_to_gcs() {
+ local project_cloud_id="$1"
+ local src_project_id="$2"
+ local src_dataset_id="$3"
+ local gcs_path="$4"
+
+ if [[ -z "$project_cloud_id" || -z "$src_project_id" || -z "$src_dataset_id" || -z "$gcs_path" ]]; then
+ echo "Usage: step_export_to_gcs "
+ exit 1
+ fi
+
+ echo "Exporting BigQuery data from $src_project_id.$src_dataset_id to $gcs_path..."
+
+ local tables=("routes_status" "historical_travel_time" "recent_roads_data")
+ for table in "${tables[@]}"; do
+ echo "Exporting $table..."
+ bq --project_id="$project_cloud_id" extract --destination_format=NEWLINE_DELIMITED_JSON \
+ "$src_project_id:$src_dataset_id.$table" "$gcs_path/${table}-*.json"
+ done
+
+ echo "GCS export complete."
+}
+
+# Executes the complete backup pipeline (Routes + BigQuery Copy).
+run_all() {
+ local project_rmi_id="${1:-}"
+ local project_cloud_id="${2:-}"
+ local src_dataset_proj="${3:-}"
+ local src_dataset_name="${4:-}"
+ local output_file="${5:-selected_routes_backup.json}"
+
+ if [[ -z "$project_rmi_id" || -z "$project_cloud_id" || -z "$src_dataset_proj" || -z "$src_dataset_name" ]]; then
+ usage
+ exit 1
+ fi
+
+ step_initialize_backup "$project_rmi_id" "$project_cloud_id"
+ step_backup_routes "$project_rmi_id" "$output_file"
+ step_backup_bq "$project_cloud_id" "$src_dataset_proj" "$src_dataset_name"
+}
+
+# Command dispatcher
+if [[ $# -eq 0 ]]; then
+ usage
+ exit 0
+fi
+
+case "$1" in
+ all)
+ shift
+ run_all "$@"
+ ;;
+ step_*)
+ cmd="$1"
+ shift
+ "$cmd" "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/roads_management_insights/rmi_cli_tools/scenarios/rmi_verify_api_access.sh b/roads_management_insights/rmi_cli_tools/scenarios/rmi_verify_api_access.sh
new file mode 100755
index 0000000..4cbbd6c
--- /dev/null
+++ b/roads_management_insights/rmi_cli_tools/scenarios/rmi_verify_api_access.sh
@@ -0,0 +1,240 @@
+#!/bin/bash
+set -euo pipefail
+#
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+###############################################################################
+# RMI API Access Verification
+#
+# This script demonstrates and tests the Create, Read, List, and Delete
+# operations for the Roads Selection API.
+#
+# Usage: ./rmi_verify_api_access.sh
+###############################################################################
+
+PROJECT_RMI_ID="${1:-}"
+
+if [[ -z "$PROJECT_RMI_ID" ]]; then
+ echo "Usage: $0 "
+ exit 1
+fi
+
+# Locate and source the bundled utility script
+_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+DIST_SCRIPT="${_SCRIPT_DIR}/../clients/roadsselection_v1_util.sh"
+
+if [[ ! -f "$DIST_SCRIPT" ]]; then
+ echo "Error: Bundled script not found at $DIST_SCRIPT"
+ echo "Please run 'scripts/bash/bundle.sh' first."
+ exit 1
+fi
+
+source "$DIST_SCRIPT"
+
+# Displays usage information and available commands for the API access test script.
+usage() {
+ echo "Usage: $0 [args]"
+ echo ""
+ echo "Commands:"
+ echo " all Run all CRUD tests sequentially"
+ echo " step_prepare_data Prepare sample route data"
+ echo " step_create_route Create a selected route"
+ echo " step_get_route Retrieve the created route"
+ echo " step_list_routes List routes and verify presence"
+ echo " step_delete_route Delete the created route"
+ echo " step_verify_deletion Verify the route is gone (404)"
+}
+
+# Global variables to store test state (for sequential 'all' run)
+ORIGIN=""
+DESTINATION=""
+DYNAMIC_ROUTE=""
+DISPLAY_NAME=""
+SELECTED_ROUTE=""
+ROUTE_NAME=""
+
+# Prepares the necessary data structures (LatLng, Route) for the test.
+step_prepare_data() {
+ echo "--- Step 1: Preparing Data ---"
+ # Tokyo Tower
+ ORIGIN=$(create_lat_lng 35.658581 139.745433)
+ # Roppongi Hills
+ DESTINATION=$(create_lat_lng 35.660456 139.729067)
+ # Simple Route
+ DYNAMIC_ROUTE=$(create_dynamic_route "$ORIGIN" "$DESTINATION")
+ DISPLAY_NAME="CRUD Test Route $(date +%s)"
+ SELECTED_ROUTE=$(create_selected_route "$DYNAMIC_ROUTE" "$DISPLAY_NAME")
+
+ echo "Origin: $ORIGIN"
+ echo "Destination: $DESTINATION"
+ echo "Display Name: $DISPLAY_NAME"
+}
+
+# Creates a new selected route in the specified project.
+step_create_route() {
+ local project_id="${1:-$PROJECT_RMI_ID}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+ if [[ -z "$SELECTED_ROUTE" ]]; then step_prepare_data; fi
+
+ echo "--- Step 2: Create Selected Route in $project_id ---"
+ local response_create
+ response_create=$(roadsselection_v1_projects_selectedRoutes_create "$project_id" "$SELECTED_ROUTE")
+
+ # Check for errors
+ if echo "$response_create" | jq -e '.error' >/dev/null; then
+ echo "Error Creating Route:"
+ echo "$response_create" | jq .
+ exit 1
+ fi
+
+ ROUTE_NAME=$(echo "$response_create" | jq -r '.name')
+ echo "Created Route Name: $ROUTE_NAME"
+}
+
+# Retrieves the details of a specific selected route.
+step_get_route() {
+ local project_id="${1:-$PROJECT_RMI_ID}"
+ local route_name="${2:-$ROUTE_NAME}"
+ if [[ -z "$project_id" || -z "$route_name" ]]; then echo "Usage: step_get_route "; exit 1; fi
+
+ local route_id
+ route_id=$(echo "$route_name" | sed 's|.*/selectedRoutes/||')
+
+ echo "--- Step 3: Get Selected Route $route_id ---"
+ local response_get
+ response_get=$(roadsselection_v1_projects_selectedRoutes_get "$project_id" "$route_id")
+
+ if echo "$response_get" | jq -e '.error' >/dev/null; then
+ echo "Error Getting Route:"
+ echo "$response_get" | jq .
+ exit 1
+ fi
+
+ local get_display_name
+ get_display_name=$(echo "$response_get" | jq -r '.displayName')
+ echo "Retrieved Route Display Name: $get_display_name"
+}
+
+# Lists all selected routes in the project and checks if a specific route exists.
+step_list_routes() {
+ local project_id="${1:-$PROJECT_RMI_ID}"
+ local route_name="${2:-$ROUTE_NAME}"
+ if [[ -z "$project_id" ]]; then echo "Error: PROJECT_RMI_ID required"; exit 1; fi
+
+ echo "--- Step 4: List Selected Routes in $project_id ---"
+ local response_list
+ response_list=$(roadsselection_v1_projects_selectedRoutes_list "$project_id" "100")
+
+ if echo "$response_list" | jq -e '.error' >/dev/null; then
+ echo "Error Listing Routes:"
+ echo "$response_list" | jq .
+ exit 1
+ fi
+
+ if [[ -n "$route_name" ]]; then
+ local found_in_list
+ found_in_list=$(echo "$response_list" | jq --arg name "$route_name" '[.selectedRoutes[]? | select(.name == $name)] | length')
+ if [[ "$found_in_list" -gt 0 ]]; then
+ echo "PASS: Route $route_name found in list."
+ else
+ echo "FAIL: Route $route_name not found in list."
+ fi
+ fi
+}
+
+# Deletes a specific selected route from the project.
+step_delete_route() {
+ local project_id="${1:-$PROJECT_RMI_ID}"
+ local route_name="${2:-$ROUTE_NAME}"
+ if [[ -z "$project_id" || -z "$route_name" ]]; then echo "Usage: step_delete_route "; exit 1; fi
+
+ local route_id
+ route_id=$(echo "$route_name" | sed 's|.*/selectedRoutes/||')
+
+ echo "--- Step 5: Delete Selected Route $route_id ---"
+ local response_delete
+ response_delete=$(roadsselection_v1_projects_selectedRoutes_delete "$project_id" "$route_id")
+
+ if echo "$response_delete" | jq -e '.error' >/dev/null; then
+ echo "Error Deleting Route:"
+ echo "$response_delete" | jq .
+ exit 1
+ fi
+
+ echo "Delete command executed successfully."
+}
+
+# Verifies that a route has been successfully deleted by attempting to retrieve it.
+step_verify_deletion() {
+ local project_id="${1:-$PROJECT_RMI_ID}"
+ local route_name="${2:-$ROUTE_NAME}"
+ if [[ -z "$project_id" || -z "$route_name" ]]; then echo "Usage: step_verify_deletion "; exit 1; fi
+
+ local route_id
+ route_id=$(echo "$route_name" | sed 's|.*/selectedRoutes/||')
+
+ echo "--- Step 6: Verify Deletion of $route_id ---"
+ local response_get_again
+ response_get_again=$(roadsselection_v1_projects_selectedRoutes_get "$project_id" "$route_id")
+
+ if echo "$response_get_again" | jq -e '.error.code == 404' >/dev/null; then
+ echo "PASS: Route successfully deleted (Received 404 as expected)."
+ else
+ echo "FAIL: Route might still exist or unexpected error."
+ echo "Response: $response_get_again"
+ exit 1
+ fi
+}
+
+# Executes the complete CRUD test scenario sequentially.
+run_all() {
+ PROJECT_RMI_ID="${1:-}"
+ if [[ -z "$PROJECT_RMI_ID" ]]; then usage; exit 1; fi
+
+ echo "=== Starting CRUD Test for RMI Project: $PROJECT_RMI_ID ==="
+
+ step_prepare_data
+ step_create_route "$PROJECT_RMI_ID"
+ step_get_route "$PROJECT_RMI_ID" "$ROUTE_NAME"
+ step_list_routes "$PROJECT_RMI_ID" "$ROUTE_NAME"
+ step_delete_route "$PROJECT_RMI_ID" "$ROUTE_NAME"
+ step_verify_deletion "$PROJECT_RMI_ID" "$ROUTE_NAME"
+
+ echo "=== CRUD Test Scenario Complete ==="
+}
+
+# Command dispatcher
+if [[ $# -eq 0 ]]; then
+ usage
+ exit 0
+fi
+
+case "" in
+ all)
+ shift
+ run_all "$@"
+ ;;
+ step_*)
+ cmd=""
+ shift
+ "$cmd" "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/roads_management_insights/rmi_sample_queries/README.md b/roads_management_insights/rmi_sample_queries/README.md
new file mode 100644
index 0000000..b3b800f
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/README.md
@@ -0,0 +1,115 @@
+# Road Management Insights (RMI) - Sample Query Library
+
+This folder contains a curated library of SQL queries and interactive notebooks designed for the Road Management Insights (RMI) BigQuery dataset. These assets are organized by analytical persona to help users quickly find the right starting point for their specific use case.
+
+## 📂 Folder Structure
+
+- **`/queries`**: A collection of verified SQL queries categorized by persona. These queries demonstrate best practices for querying the RMI data model, including travel time analysis, bottleneck detection, and spatial joins.
+- **`/notebooks`**: Interactive Jupyter notebooks ready to be opened in Google Colab or BigQuery Studio. These notebooks provide a guided environment to execute the sample queries against the RMI sample dataset.
+
+## 🚀 Getting Started
+
+1. **Browse Queries**: Explore the roles below to find working SQL samples for your specific business questions.
+2. **Interactive Analysis**: Open the `.ipynb` files in the `/notebooks` directory for a guided, hands-on experience.
+3. **Dataset**: All queries are designed to run against the `boston_oct_2025_sample_data` shared dataset.
+
+---
+
+## 👥 Query Catalog by Persona
+
+### Traffic Operations Manager
+*Real-time monitoring and immediate bottleneck detection.*
+
+1. **Peak Hour Delay Analysis**: What is the average travel time delay during the morning peak (7-9 AM) for the top 10 most congested routes?
+ * [View SQL](queries/traffic_operations_manager/tom1_peak_hour_delay.sql)
+2. **Persistent Bottlenecks**: Which road segments (SRIs) have been in a 'TRAFFIC_JAM' state most frequently?
+ * [View SQL](queries/traffic_operations_manager/tom2_persistent_bottlenecks.sql)
+3. **Operational Health Check**: Which routes are currently flagged with a 'LOW_ROAD_USAGE' validation error?
+ * [View SQL](queries/traffic_operations_manager/tom3_operational_health.sql)
+4. **Data Collection Latency**: Are there any active routes that have stopped sending data near the end of the snapshot period?
+ * [View SQL](queries/traffic_operations_manager/tom4_data_latency.sql)
+5. **Significant Event Detection**: Which routes experienced a travel time more than double their static baseline?
+ * [View SQL](queries/traffic_operations_manager/tom5_significant_event_detection.sql)
+
+### Urban Planner
+*Long-term trends and infrastructure planning.*
+
+1. **Long-Term Corridor Performance**: What has been the week-over-week trend in the average delay ratio for a specific corridor?
+ * [View SQL](queries/urban_planner/up1_corridor_trend.sql)
+2. **Traffic Monitoring Density**: Which geographic areas show the highest concentration of RMI route monitoring?
+ * [View SQL](queries/urban_planner/up3_monitoring_density.sql)
+3. **Weekend vs. Weekday Trends**: How does average travel time in the afternoon (2-5 PM) differ between weekdays and weekends?
+ * [View SQL](queries/urban_planner/up4_weekend_vs_weekday.sql)
+4. **Before-and-After Impact Analysis**: Has the average travel time on routes passing through a recent construction zone improved?
+ * [View SQL](queries/urban_planner/up2_impact_analysis.sql)
+5. **Geofenced Congestion**: Within a specific downtown polygon, which routes are currently seeing travel times more than 50% above baseline?
+ * [View SQL](queries/urban_planner/up5_geofenced_congestion.sql)
+
+### Data Scientist
+*Statistical analysis and predictive modeling.*
+
+1. **Outlier Detection (IQR)**: Identify travel time records that are statistical outliers for a specific route.
+ * [View SQL](queries/data_scientist/ds1_outlier_detection.sql)
+2. **Route Integrity Audit**: Which routes have a captured geometry that deviates significantly from the intended length?
+ * [View SQL](queries/data_scientist/ds4_route_integrity_audit.sql)
+3. **Persistent Unreliability Audit**: Group consecutive travel time spikes into failure windows (streaks).
+ * [View SQL](queries/data_scientist/ds5_reliability_ranking.sql)
+4. **Route Similarity Clustering**: Group routes based on their diurnal morning, midday, and evening delay profiles.
+ * [View SQL](queries/data_scientist/ds2_similarity_clustering.sql)
+5. **Predictive Feature Engineering**: Generate a high-quality, gap-aware feature set with regularized hourly grids.
+ * [View SQL](queries/data_scientist/ds3_feature_engineering.sql)
+6. **Travel Time Forecasting (ARIMA)**: Train and backtest a predictive model for future travel times.
+ * [View SQL](queries/data_scientist/ds6_travel_time_forecasting.sql)
+7. **Zero-Shot Forecasting (TimesFM)**: Forecast next-day traffic for multiple routes simultaneously without training.
+ * [View SQL](queries/data_scientist/ds7_zero_shot_forecasting.sql)
+
+### RMI Planner
+*Business value and monitoring scale.*
+
+1. **Usage Growth Projection**: Forecast data volume and compute spend for larger route fleets.
+ * [View SQL](queries/rmi_planner/rmip1_usage_projection.sql)
+2. **Customer ROI (Value at Risk)**: Quantify the total hours of delay across critical corridors.
+ * [View SQL](queries/rmi_planner/rmip2_customer_roi.sql)
+3. **Road Segment Estimation**: Estimate physical scale of the addressable monitoring network.
+ * [View SQL](queries/rmi_planner/rmip3_segment_estimation.sql)
+4. **Administrative Geofencing**: Create reusable city boundaries for localized reporting.
+ * [View SQL](queries/rmi_planner/rmip4_area_boundary.sql)
+
+### Data Engineer
+*Data pipelines and analysis-ready datasets.*
+
+1. **Create Materialized Subset**: Create filtered, high-performance materialized views.
+ * [View SQL](queries/data_engineer/de1_materialized_view.sql)
+2. **Data Cleaning**: Produce a typed, cleaned version of route metadata.
+ * [View SQL](queries/data_engineer/de2_data_cleaning.sql)
+3. **SRI Flattening**: Transform nested arrays into flattened spatial records with distance metrics.
+ * [View SQL](queries/data_engineer/de3_sri_flattening.sql)
+4. **Attribute Extraction**: Pivot JSON attributes into distinct, typed columns.
+ * [View SQL](queries/data_engineer/de4_attribute_extraction.sql)
+5. **Data Freshness Audit**: Monitor latest arrival times across active routes.
+ * [View SQL](queries/data_engineer/de5_freshness_audit.sql)
+6. **Automated Status History**: Capture daily snapshots of route status using scheduled queries.
+ * [View SQL](queries/data_engineer/de7_routes_status_snapshot.sql)
+
+### BigQuery Admin
+*Platform health, cost governance, and performance optimization.*
+
+1. **Metadata Inventory**: Zero-cost check of row count and storage size for RMI tables.
+ * [View SQL](queries/bigquery_admin/bqa0_metadata_inventory.sql)
+2. **Scan Volume Monitoring**: Identify users or service accounts generating high scan volume.
+ * [View SQL](queries/bigquery_admin/bqa1_scan_volume.sql)
+3. **Cost Attribution Audit**: Identify jobs missing the mandatory naming prefix in their job IDs.
+ * [View SQL](queries/bigquery_admin/bqa2_cost_attribution.sql)
+4. **Identify Derived Resources**: Audit tables or views derived from the core RMI dataset.
+ * [View SQL](queries/bigquery_admin/bqa3_derived_resources.sql)
+5. **Repeated Query Patterns**: Detect frequent patterns (joins, JSON extraction) for pro-active optimization.
+ * [View SQL](queries/bigquery_admin/bqa4_query_patterns.sql)
+6. **Partition Pruning Audit**: Identify queries performing expensive full table scans instead of using partition filters.
+ * [View SQL](queries/bigquery_admin/bqa5_partition_pruning.sql)
+7. **Data Complexity Audit**: Audit spatial complexity (vertex count) and metadata size of actual records.
+ * [View SQL](queries/bigquery_admin/bqa6_data_complexity_audit.sql)
+
+
+## 📄 License
+
+Copyright 2026 Google LLC. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0).
diff --git a/roads_management_insights/rmi_sample_queries/notebooks/BigQuery_Admin_Samples.ipynb b/roads_management_insights/rmi_sample_queries/notebooks/BigQuery_Admin_Samples.ipynb
new file mode 100644
index 0000000..b1fd0bc
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/notebooks/BigQuery_Admin_Samples.ipynb
@@ -0,0 +1,480 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```\n# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Sample Queries: BigQuery Admin (GA)\n",
+ "\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This notebook contains sample queries for the **Data Scientist** persona, specifically for the **GA** stage."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Setup"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "import pandas as pd\n",
+ "\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "project_id = 'your-project-id' #@param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Writable Dataset\n",
+ "\n",
+ "Several queries in this notebook (e.g., those creating Materialized Views, Models, or Views) require a **writable dataset** within your own project. \n",
+ "**Note**: The source `boston_oct_2025_sample_data` dataset is a read-only subscription and cannot be used to store new resources.\n",
+ "\n",
+ "Run the cell below to create a new dataset (e.g., `rmi_analysis`) in your project if you haven't already.\n",
+ "\n",
+ "**Important**: When running queries that create new BigQuery resources (e.g., tables, views, models) outside of these `%%bigquery` magic cells, remember to manually prepend the job ID with `msqlfactory--` for proper tracking. For example: `bq query --job_id=msqlfactory--your-descriptive-job-name ...`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset_id = \"rmi_analysis\" #@param {type:\"string\"}\n",
+ "! bq --location=US mk --dataset {project_id}:{dataset_id}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## GA (General Availability)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds1_outlier_detection.sql\n",
+ "**Business Question**: Which travel time records for a specific route are statistical outliers?\nUse Case: Automatically flags anomalous data points that could indicate extreme traffic events or potential data collection issues.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds1_outlier_detection\n",
+ "/*\n",
+ " QUALITY FILTERS:\n",
+ " 1. continuous_path: Excludes records where the geometry is not a single ST_LineString.\n",
+ " 2. length_integrity: Excludes records where actual physical length deviates by > 5% \n",
+ " from the intended 'route_length' attribute.\n",
+ "*/\n",
+ "\n",
+ "WITH quality_filtered_history AS (\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.record_time,\n",
+ " h.duration_in_seconds,\n",
+ " ST_LENGTH(h.route_geometry) as actual_length,\n",
+ " CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) as intended_length\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ " JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)\n",
+ " WHERE h.selected_route_id = 'route-4202493217'\n",
+ " AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Quality filter: Only process single, continuous paths\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ " -- Quality filter: Length deviation check (< 5%)\n",
+ " AND SAFE_DIVIDE(ABS(ST_LENGTH(h.route_geometry) - CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)), CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)) < 0.05\n",
+ "),\n",
+ "stats AS (\n",
+ " SELECT\n",
+ " APPROX_QUANTILES(duration_in_seconds, 100)[OFFSET(25)] AS q1,\n",
+ " APPROX_QUANTILES(duration_in_seconds, 100)[OFFSET(75)] AS q3\n",
+ " FROM quality_filtered_history\n",
+ "),\n",
+ "outlier_thresholds AS (\n",
+ " SELECT\n",
+ " q1,\n",
+ " q3,\n",
+ " (q3 - q1) AS iqr,\n",
+ " q1 - (1.5 * (q3 - q1)) AS lower_bound,\n",
+ " q3 + (1.5 * (q3 - q1)) AS upper_bound\n",
+ " FROM stats\n",
+ ")\n",
+ "SELECT\n",
+ " h.record_time,\n",
+ " h.duration_in_seconds,\n",
+ " t.lower_bound,\n",
+ " t.upper_bound,\n",
+ " CASE \n",
+ " WHEN h.duration_in_seconds > t.upper_bound THEN 'High_Outlier'\n",
+ " WHEN h.duration_in_seconds < t.lower_bound THEN 'Low_Outlier'\n",
+ " END as outlier_type\n",
+ "FROM quality_filtered_history h, outlier_thresholds t\n",
+ "-- Filter for records outside the calculated IQR bounds\n",
+ "WHERE (h.duration_in_seconds > t.upper_bound OR h.duration_in_seconds < t.lower_bound)\n",
+ "ORDER BY h.record_time DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds2_similarity_clustering.sql\n",
+ "**Business Question**: Which routes exhibit similar traffic patterns based on their average peak-hour delay ratios?\nUse Case: Grouping routes by behavioral similarity allows planners to apply similar mitigation strategies to entire clusters of road segments rather than analyzing each route individually.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds2_similarity_clustering\n",
+ "/*\n",
+ " INTERPRETATION GUIDE:\n",
+ " Routes assigned to the same 'cluster_id' share a similar diurnal traffic profile \n",
+ " (the relationship between AM, Midday, and PM delays).\n",
+ " \n",
+ " Example Interpretation:\n",
+ " - Cluster 1: Commuter Heavy (High AM/PM delay, low Midday).\n",
+ " - Cluster 2: Consistently Efficient (Delay ratio near 1.0 all day).\n",
+ " - Cluster 3: Midday Bottleneck (High Midday delay, typical AM/PM).\n",
+ "*/\n",
+ "\n",
+ "-- Step 1: Create the K-Means model.\n",
+ "-- NOTE: The source dataset (e.g., `boston_oct_2025_sample_data`) is a read-only subscription.\n",
+ "-- This model MUST be created in a separate, writable dataset within your project.\n",
+ "-- Replace `your-project.your-dataset` with your target location.\n",
+ "\n",
+ "CREATE OR REPLACE MODEL `your-project.your-dataset.route_clusters`\n",
+ "OPTIONS(model_type='kmeans', num_clusters=5) AS\n",
+ "SELECT\n",
+ " -- K-Means works with numerical features. We will use the delay ratios as features.\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 7 AND 9 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_am_delay,\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 12 AND 14 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_midday_delay,\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 16 AND 18 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_pm_delay\n",
+ "FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ "WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ "GROUP BY selected_route_id;\n",
+ "\n",
+ "-- Step 2: Predict the cluster for each route using the trained model.\n",
+ "WITH route_features AS (\n",
+ " SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 7 AND 9 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_am_delay,\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 12 AND 14 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_midday_delay,\n",
+ " COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 16 AND 18 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_pm_delay\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " GROUP BY 1, 2\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " CENTROID_ID AS cluster_id,\n",
+ " ROUND(avg_am_delay, 2) as am_ratio,\n",
+ " ROUND(avg_midday_delay, 2) as midday_ratio,\n",
+ " ROUND(avg_pm_delay, 2) as pm_ratio\n",
+ "FROM ML.PREDICT(MODEL `your-project.your-dataset.route_clusters`,\n",
+ " (SELECT * FROM route_features)\n",
+ ")\n",
+ "ORDER BY cluster_id, selected_route_id;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds3_feature_engineering.sql\n",
+ "**Business Question**: How can I prepare a high-quality, gap-aware feature set for training a predictive traffic model?\nUse Case: Demonstrates how to regularize a time-series using a timestamp grid. This ensures that window functions (LAG, AVG) accurately reflect chronological time even when records are missing due to quality filtering or detours.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds3_feature_engineering\n",
+ "/*\n",
+ " HANDLING MISSING DATA (DETOURS/GAPS):\n",
+ " By joining the RMI data with a generated 'time_grid', we identify missing records. \n",
+ " Downstream models can then decide how to handle these nulls (e.g., interpolation, \n",
+ " imputation, or masking), preventing window functions from 'collapsing' time gaps.\n",
+ "*/\n",
+ "\n",
+ "WITH quality_filtered_base AS (\n",
+ " SELECT\n",
+ " -- Truncating to hour to match the RMI collection interval\n",
+ " TIMESTAMP_TRUNC(h.record_time, HOUR) as record_hour,\n",
+ " h.duration_in_seconds,\n",
+ " ST_LENGTH(h.route_geometry) as actual_length,\n",
+ " CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) as intended_length\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ " JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)\n",
+ " WHERE h.selected_route_id = 'route-4202493217'\n",
+ " AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Quality filter: Only process single, continuous paths\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ "),\n",
+ "hourly_averages AS (\n",
+ " -- Aggregate to a single record per hour before regularizing\n",
+ " SELECT \n",
+ " record_hour,\n",
+ " AVG(duration_in_seconds) as avg_duration,\n",
+ " COUNT(*) as samples_in_hour\n",
+ " FROM quality_filtered_base\n",
+ " WHERE SAFE_DIVIDE(ABS(actual_length - intended_length), intended_length) < 0.05\n",
+ " GROUP BY 1\n",
+ "),\n",
+ "time_grid AS (\n",
+ " -- Generate a continuous hourly grid for the study period\n",
+ " SELECT hour\n",
+ " FROM UNNEST(GENERATE_TIMESTAMP_ARRAY('2025-10-01', '2025-10-31', INTERVAL 1 HOUR)) as hour\n",
+ "),\n",
+ "regularized_series AS (\n",
+ " SELECT\n",
+ " g.hour,\n",
+ " a.avg_duration as duration_in_seconds,\n",
+ " COALESCE(a.samples_in_hour, 0) as samples_in_hour,\n",
+ " IF(a.avg_duration IS NULL, TRUE, FALSE) as is_missing_data\n",
+ " FROM time_grid g\n",
+ " LEFT JOIN hourly_averages a ON g.hour = a.record_hour\n",
+ ")\n",
+ "SELECT\n",
+ " hour,\n",
+ " ROUND(duration_in_seconds, 2) as duration_in_seconds,\n",
+ " samples_in_hour,\n",
+ " is_missing_data,\n",
+ " -- Lagged features now accurately represent -1hr and -2hr regardless of data availability\n",
+ " ROUND(LAG(duration_in_seconds, 1) OVER (ORDER BY hour), 2) AS lag_1hr_duration,\n",
+ " ROUND(LAG(duration_in_seconds, 2) OVER (ORDER BY hour), 2) AS lag_2hr_duration,\n",
+ " -- Rolling average (3-hour window)\n",
+ " ROUND(AVG(duration_in_seconds) OVER (\n",
+ " ORDER BY hour \n",
+ " ROWS BETWEEN 2 PRECEDING AND CURRENT ROW\n",
+ " ), 2) AS rolling_avg_3hr\n",
+ "FROM regularized_series\n",
+ "ORDER BY hour DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds4_route_integrity_audit.sql\n",
+ "**Business Question**: When and for how long did specific routes experience extreme geometry deviations?\nUse Case: Identifies persistent \"integrity incidents\" rather than transient noise. By grouping consecutive failed records into windows, engineers can correlate failures with specific infrastructure changes, GPS outages, or registration updates.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds4_route_integrity_audit\n",
+ "/*\n",
+ " DEFINITION: Route Integrity\n",
+ " In RMI, 'Route Integrity' measures the spatial consistency between a route's \n",
+ " registered definition and its actual data collection performance.\n",
+ " \n",
+ " - The Baseline: 'intended_length' (meters) provided as a custom attribute during registration.\n",
+ " - The Signal: 'actual_length' (meters) calculated from the captured ST_LineString.\n",
+ " - High Integrity: A ratio near 1.0 (actual length matches intended definition).\n",
+ " - Low Integrity: Significant deviations (> 10%) indicate detours, missing road \n",
+ " segments, or incorrect metadata registration.\n",
+ "*/\n",
+ "\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Islands and Gaps\n",
+ " This query groups consecutive records that exceed a 10% length deviation threshold \n",
+ " into discrete failure windows.\n",
+ "*/\n",
+ "\n",
+ "WITH base_comparison AS (\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.display_name,\n",
+ " h.record_time,\n",
+ " ST_LENGTH(h.route_geometry) AS actual_length,\n",
+ " CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) AS intended_length\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ " JOIN `boston_oct_2025_sample_data.routes_status` s USING (selected_route_id)\n",
+ " WHERE s.status = 'STATUS_RUNNING'\n",
+ " AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Quality filter: Exclude non-continuous geometries\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ "),\n",
+ "outlier_flagging AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- Flag if deviation exceeds 10% (actual / intended)\n",
+ " IF(intended_length IS NOT NULL AND (SAFE_DIVIDE(actual_length, intended_length) > 1.1 OR SAFE_DIVIDE(actual_length, intended_length) < 0.9), 1, 0) as is_outlier\n",
+ " FROM base_comparison\n",
+ "),\n",
+ "streak_identification AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- A new streak starts if this is an outlier and the previous record (by time) wasn't\n",
+ " IF(is_outlier = 1 AND LAG(is_outlier) OVER (PARTITION BY selected_route_id ORDER BY record_time) = 0, 1, \n",
+ " IF(is_outlier = 1 AND LAG(is_outlier) OVER (PARTITION BY selected_route_id ORDER BY record_time) IS NULL, 1, 0)) as is_streak_start\n",
+ " FROM outlier_flagging\n",
+ "),\n",
+ "streak_grouping AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- Cumulative sum of starts creates a unique ID for each failure window\n",
+ " SUM(is_streak_start) OVER (PARTITION BY selected_route_id ORDER BY record_time) as streak_id\n",
+ " FROM streak_identification\n",
+ " WHERE is_outlier = 1\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " MIN(record_time) as failure_start,\n",
+ " MAX(record_time) as failure_end,\n",
+ " COUNT(*) as consecutive_records,\n",
+ " -- Average ratio across the window: Severity of the discrepancy\n",
+ " ROUND(AVG(SAFE_DIVIDE(actual_length, intended_length)), 2) as avg_deviation_ratio,\n",
+ " -- Identify if the deviation is an over-count (likely detour) or under-count (missing segments)\n",
+ " IF(AVG(actual_length) > AVG(intended_length), 'OVER_COUNT', 'UNDER_COUNT') as failure_type\n",
+ "FROM streak_grouping\n",
+ "GROUP BY selected_route_id, display_name, streak_id\n",
+ "-- Focus on persistent issues\n",
+ "HAVING consecutive_records >= 1\n",
+ "ORDER BY failure_start DESC, avg_deviation_ratio DESC\n",
+ "LIMIT 50;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds5_reliability_ranking.sql\n",
+ "**Business Question**: When and for how long did specific routes experience persistent travel time spikes?\nUse Case: Identifies chronic congestion incidents rather than transient variance. By grouping consecutive \"slow\" records into windows, operators can distinguish between random noise and actionable infrastructure failures or major events.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds5_reliability_ranking\n",
+ "/*\n",
+ " DEFINITION: Route Reliability vs. Route Integrity\n",
+ " - Route Integrity (DS4): Measures spatial consistency (Actual Geometry vs. Registered Definition).\n",
+ " - Route Reliability (DS5): Measures temporal performance (Actual Travel Time vs. Free-flow Baseline).\n",
+ " \n",
+ " High Reliability means a route's travel time is stable and near its ideal baseline. \n",
+ " Low Reliability (this query) indicates persistent periods of 'excess delay' \n",
+ " where actual travel times significantly exceed free-flow estimates.\n",
+ "*/\n",
+ "\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Reliability Gaps (Islands and Gaps)\n",
+ " 1. Calculate a historical baseline per route.\n",
+ " 2. Flag records where travel time exceeds a 'significant delay' threshold (e.g., 1.5x baseline).\n",
+ " 3. Group consecutive flags into discrete failure windows (streaks).\n",
+ "*/\n",
+ "\n",
+ "WITH quality_filtered_history AS (\n",
+ " -- Standard quality filtering to ensure we analyze healthy geometries\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.display_name,\n",
+ " h.record_time,\n",
+ " h.duration_in_seconds,\n",
+ " h.static_duration_in_seconds\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ " JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)\n",
+ " WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ " AND SAFE_DIVIDE(ABS(ST_LENGTH(h.route_geometry) - CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)), CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)) < 0.05\n",
+ "),\n",
+ "incident_flagging AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- Threshold: Travel time is more than 50% above the static (free-flow) baseline\n",
+ " IF(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) > 1.5, 1, 0) as is_incident\n",
+ " FROM quality_filtered_history\n",
+ "),\n",
+ "streak_identification AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- Identify the start of a new consecutive incident window\n",
+ " IF(is_incident = 1 AND LAG(is_incident) OVER (PARTITION BY selected_route_id ORDER BY record_time) = 0, 1, \n",
+ " IF(is_incident = 1 AND LAG(is_incident) OVER (PARTITION BY selected_route_id ORDER BY record_time) IS NULL, 1, 0)) as is_streak_start\n",
+ " FROM incident_flagging\n",
+ "),\n",
+ "streak_grouping AS (\n",
+ " SELECT\n",
+ " *,\n",
+ " -- Cumulative sum of starts creates a unique ID for each incident window\n",
+ " SUM(is_streak_start) OVER (PARTITION BY selected_route_id ORDER BY record_time) as streak_id\n",
+ " FROM streak_identification\n",
+ " WHERE is_incident = 1\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " MIN(record_time) as incident_start,\n",
+ " MAX(record_time) as incident_end,\n",
+ " -- Total consecutive records in this incident window\n",
+ " COUNT(*) as consecutive_samples,\n",
+ " -- Average severity of the delay during this window\n",
+ " ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 2) as avg_delay_ratio\n",
+ "FROM streak_grouping\n",
+ "GROUP BY selected_route_id, display_name, streak_id\n",
+ "-- Focus on persistent unreliability (lasting at least 3 samples)\n",
+ "HAVING consecutive_samples >= 3\n",
+ "ORDER BY avg_delay_ratio DESC, incident_start DESC\n",
+ "LIMIT 50;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds6_travel_time_forecasting.sql\n",
+ "**Business Question**: Can we predict next week's peak travel times based on the last 21 days of history?\nUse Case: Demonstrates a complete predictive workflow: Training an ARIMA_PLUS model, evaluating its seasonal fit, and performing backtesting against actual results.\nProduct Stage: GA (Uses BigQuery ML)\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds6_travel_time_forecasting\n",
+ "/*\n",
+ " METHODOLOGY: TIME-SERIES BACKTESTING\n",
+ " To build trust in a traffic model, we use 'Backtesting'. We split our 31-day \n",
+ " sample dataset into two parts:\n",
+ " 1. Training Set (Weeks 1-3): The model 'learns' the route's diurnal and weekly rhythm.\n",
+ " 2. Validation Set (Week 4): We withhold this data from the model, then ask the \n",
+ " model to 'forecast' it. Comparing the forecast to reality gives us an \n",
+ " empirical accuracy score.\n",
+ "*/\n",
+ "\n",
+ "/*\n",
+ " INTERPRETATION & VISUALIZATION GUIDE:\n",
+ " \n",
+ " 1. REPORT INTERPRETATION:\n",
+ " - 'absolute_error': Smaller is better. Measures the magnitude of the prediction 'miss'.\n",
+ " - 'within_confidence_interval': This is your 'Anomaly Signal'. \n",
+ " - 'YES': Traffic is behaving normally/predictably.\n",
+ " - 'NO': A significant event occurred (accident, weather, gridlock) that \n",
+ " exceeded statistical expectations. This is the trigger for operational alerts.\n",
+ " \n",
+ " 2. RECOMMENDED VISUALIZATIONS:\n",
+ " - Time-Series Line: Plot 'forecast_seconds' and 'actual_seconds' on the same Y-axis.\n",
+ " - Confidence Band: Plot 'lower_bound' and 'upper_bound' as a shaded area. Dots \n",
+ " (actuals) falling outside this band are your truly actionable traffic incidents.\n",
+ "*/\n",
+ "\n",
+ "-- STEP 1: Train the ARIMA_PLUS model using a 3-week window.\n",
+ "-- We use hourly aggregation (AVG) to regularize the input for the ARIMA algorithm.\n",
+ "CREATE OR REPLACE MODEL `your-project.your-dataset.travel_time_forecast_model`\n",
+ "OPTIONS(\n",
+ " model_type='ARIMA_PLUS',\n",
+ " time_series_timestamp_col='record_hour',\n",
+ " time_series_data_col='duration_in_seconds',\n",
+ " auto_arima=TRUE, -- Automatically finds the best P, D, Q parameters.\n",
+ " data_frequency='HOURLY',\n",
+ " clean_spikes_and_dips=TRUE -- Prevents one-off accidents from skewing the long-term trend.\n",
+ ") AS\n",
+ "SELECT\n",
+ " TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,\n",
+ " AVG(duration_in_seconds) as duration_in_seconds\n",
+ "FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ "WHERE selected_route_id = 'route-4202493217'\n",
+ " AND record_time BETWEEN '2025-10-01' AND '2025-10-21'\n",
+ "GROUP BY 1;\n",
+ "\n",
+ "-- STEP 2: Evaluate the model's training metrics.\n",
+ "-- This returns AIC, Log Likelihood, and identified seasonal periods (e.g., DAILY).\n",
+ "-- A low AIC relative to other models indicates a better fit.\n",
+ "SELECT * FROM ML.EVALUATE(MODEL `your-project.your-dataset.travel_time_forecast_model`);\n",
+ "\n",
+ "-- STEP 3: Compare Forecast vs. Actual for the 4th week (Backtesting).\n",
+ "-- We forecast a 168-hour 'horizon' (7 full days) to match the final week of October.\n",
+ "WITH forecast_data AS (\n",
+ " SELECT\n",
+ " forecast_timestamp,\n",
+ " forecast_value as predicted_duration,\n",
+ " prediction_interval_lower_bound as lower_bound,\n",
+ " prediction_interval_upper_bound as upper_bound\n",
+ " FROM ML.FORECAST(MODEL `your-project.your-dataset.travel_time_forecast_model`,\n",
+ " STRUCT(168 AS horizon, 0.9 AS confidence_level))\n",
+ "),\n",
+ "actual_data AS (\n",
+ " -- Aggregate actual withheld data to the same hourly grid for comparison.\n",
+ " SELECT\n",
+ " TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,\n",
+ " AVG(duration_in_seconds) as actual_duration\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " WHERE selected_route_id = 'route-4202493217'\n",
+ " AND record_time BETWEEN '2025-10-22' AND '2025-10-29'\n",
+ " GROUP BY 1\n",
+ ")\n",
+ "SELECT\n",
+ " f.forecast_timestamp,\n",
+ " ROUND(f.predicted_duration, 1) as forecast_seconds,\n",
+ " ROUND(a.actual_duration, 1) as actual_seconds,\n",
+ " -- absolute_error: How many seconds off was the prediction?\n",
+ " ROUND(ABS(f.predicted_duration - a.actual_duration), 1) as absolute_error,\n",
+ " -- within_confidence_interval: Was reality within the 90% expected range?\n",
+ " IF(a.actual_duration BETWEEN f.lower_bound AND f.upper_bound, 'YES', 'NO') as within_confidence_interval,\n",
+ " -- Include bounds for visualization in tools like Looker Studio or Colab.\n",
+ " ROUND(f.lower_bound, 1) as lower_bound,\n",
+ " ROUND(f.upper_bound, 1) as upper_bound\n",
+ "FROM forecast_data f\n",
+ "LEFT JOIN actual_data a ON f.forecast_timestamp = a.record_hour\n",
+ "WHERE a.actual_duration IS NOT NULL\n",
+ "ORDER BY f.forecast_timestamp;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ds7_zero_shot_forecasting.sql\n",
+ "**Business Question**: Can we immediately forecast next-day traffic for multiple routes without waiting to train individual models?\nUse Case: Demonstrates 'Zero-Shot' forecasting using Google's Time Series Foundation Model (TimesFM). Unlike ARIMA, this model uses pre-trained patterns to predict future travel times for an entire cluster of routes simultaneously, even with limited local history.\nProduct Stage: GA (Uses AI.FORECAST with TimesFM)\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_ds7_zero_shot_forecasting\n",
+ "/*\n",
+ " ANALYTICAL ADVANTAGE: Foundation Models vs. Traditional Models\n",
+ " - ARIMA_PLUS (DS6): Requires 'Training' (Learning) on specific route history first.\n",
+ " - TimesFM (DS7): Uses 'Zero-Shot' inference via AI.FORECAST. It applies global \n",
+ " patterns to your data immediately. Ideal for 'Cold Start' (new routes) or \n",
+ " scaling to thousands of routes without per-route training overhead.\n",
+ "*/\n",
+ "\n",
+ "-- STEP 1: Prepare a 'Context' window of history for multiple routes.\n",
+ "-- Foundation models like TimesFM perform best with 3-7 days of chronological context.\n",
+ "WITH route_context AS (\n",
+ " SELECT\n",
+ " selected_route_id,\n",
+ " TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,\n",
+ " AVG(duration_in_seconds) as duration_in_seconds\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " -- We pick a 7-day context window for 3 specific routes\n",
+ " WHERE selected_route_id IN ('route-4202493217', 'route-3850158153', 'route-381361371')\n",
+ " AND record_time BETWEEN '2025-10-14' AND '2025-10-21'\n",
+ " GROUP BY 1, 2\n",
+ ")\n",
+ "-- STEP 2: Use AI.FORECAST to generate predictions.\n",
+ "-- Note: TimesFM is a managed foundation model; no CREATE MODEL is required.\n",
+ "SELECT\n",
+ " *\n",
+ "FROM AI.FORECAST(\n",
+ " TABLE route_context,\n",
+ " data_col => 'duration_in_seconds',\n",
+ " timestamp_col => 'record_hour',\n",
+ " model => 'TimesFM 2.0', -- Specify the foundation model version\n",
+ " id_cols => ['selected_route_id'], -- Forecast each route independently\n",
+ " horizon => 24, -- Forecast 24 hours ahead\n",
+ " confidence_level => 0.9 -- Generate 90% confidence intervals\n",
+ ")\n",
+ "ORDER BY selected_route_id, forecast_timestamp;\n",
+ ""
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/roads_management_insights/rmi_sample_queries/notebooks/RMI_Planner_Samples.ipynb b/roads_management_insights/rmi_sample_queries/notebooks/RMI_Planner_Samples.ipynb
new file mode 100644
index 0000000..ce422cf
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/notebooks/RMI_Planner_Samples.ipynb
@@ -0,0 +1,280 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```\n# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Sample Queries: RMI Planner (GA)\n",
+ "\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This notebook contains sample queries for the **RMI Planner** persona, specifically for the **GA** stage."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Setup"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "import pandas as pd\n",
+ "\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "project_id = 'your-project-id' #@param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Writable Dataset\n",
+ "\n",
+ "Several queries in this notebook (e.g., those creating Materialized Views, Models, or Views) require a **writable dataset** within your own project. \n",
+ "**Note**: The source `boston_oct_2025_sample_data` dataset is a read-only subscription and cannot be used to store new resources.\n",
+ "\n",
+ "Run the cell below to create a new dataset (e.g., `rmi_analysis`) in your project if you haven't already.\n",
+ "\n",
+ "**Important**: When running queries that create new BigQuery resources (e.g., tables, views, models) outside of these `%%bigquery` magic cells, remember to manually prepend the job ID with `msqlfactory--` for proper tracking. For example: `bq query --job_id=msqlfactory--your-descriptive-job-name ...`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset_id = \"rmi_analysis\" #@param {type:\"string\"}\n",
+ "! bq --location=US mk --dataset {project_id}:{dataset_id}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## GA (General Availability)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### rmip1_usage_projection.sql\n",
+ "**Business Question**: Based on current data, what is the rate of record creation, and how will it scale?\nUse Case: Helps sales teams estimate BigQuery storage and compute growth as a customer increases their monitoring footprint from a small pilot to an enterprise-wide fleet.\nProduct Stage: GA\nEstimated Bytes Processed: < 1 MB (Standard SQL on RMI Tables)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_rmip1_usage_projection\n",
+ "WITH daily_stats AS (\n",
+ " SELECT\n",
+ " DATE(record_time) as log_date,\n",
+ " selected_route_id,\n",
+ " COUNT(*) as records_per_day\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " GROUP BY 1, 2\n",
+ "),\n",
+ "avg_usage AS (\n",
+ " SELECT\n",
+ " AVG(records_per_day) as avg_daily_records_per_route\n",
+ " FROM daily_stats\n",
+ ")\n",
+ "SELECT\n",
+ " ROUND(avg_daily_records_per_route, 2) as avg_records_per_route_per_day,\n",
+ " -- Parameter: Target fleet size (e.g., 5,000 routes)\n",
+ " 5000 as target_route_count,\n",
+ " ROUND(avg_daily_records_per_route * 5000, 0) as estimated_total_daily_records,\n",
+ " -- Extrapolate to monthly volume in millions of records\n",
+ " ROUND(avg_daily_records_per_route * 5000 * 30 / 1000000, 2) as estimated_monthly_millions\n",
+ "FROM avg_usage;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### rmip2_customer_roi.sql\n",
+ "**Business Question**: How much total time is lost to congestion across different customer service tiers?\nUse Case: Translates raw traffic data into \"Business Value\" by quantifying the potential time savings for priority routes, justifying the monitoring cost and providing a clear ROI for the customer.\nProduct Stage: GA\nEstimated Bytes Processed: < 1 MB (Standard SQL on RMI Tables)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_rmip2_customer_roi\n",
+ "SELECT\n",
+ " JSON_EXTRACT_SCALAR(route_attributes, '$.tier') as service_tier,\n",
+ " -- Aggregate total lost time (Actual - Free-flow) converted to hours\n",
+ " ROUND(SUM(duration_in_seconds - static_duration_in_seconds) / 3600, 1) as total_delay_hours,\n",
+ " COUNT(DISTINCT h.selected_route_id) as monitored_routes,\n",
+ " -- Average performance multiplier\n",
+ " ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 2) as avg_delay_index\n",
+ "FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ "JOIN `boston_oct_2025_sample_data.routes_status` s ON h.selected_route_id = s.selected_route_id\n",
+ "WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Filter for records where actual was slower than free-flow\n",
+ " AND (duration_in_seconds - static_duration_in_seconds) > 0\n",
+ "GROUP BY 1\n",
+ "HAVING service_tier IS NOT NULL\n",
+ "ORDER BY total_delay_hours DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### rmip3_segment_estimation.sql\n",
+ "**Business Question**: How many physical road segments exist in our target study area, categorized by class?\nUse Case: Helps sales and solution architects estimate the \"Total Addressable Monitoring\" footprint for a city, aiding in pricing and coverage strategy.\nProduct Stage: GA\nEstimated Bytes Processed: ~1 MB (Uses BigQuery Public Dataset: Overture Maps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_rmip3_segment_estimation\n",
+ "/*\n",
+ " EXTERNAL DEPENDENCY: \n",
+ " RMI monitoring is based on user-defined routes. To understand the underlying \n",
+ " physical scale of an area, this query joins with the Overture Maps public \n",
+ " dataset to provide a baseline count of all physical road segments.\n",
+ "*/\n",
+ "\n",
+ "WITH target_boundary AS (\n",
+ " SELECT geometry\n",
+ " FROM `bigquery-public-data.overture_maps.division_area`\n",
+ " WHERE names.primary = 'Boston' \n",
+ " AND country = 'US' \n",
+ " AND region = 'US-MA'\n",
+ " AND class = 'land'\n",
+ ")\n",
+ "SELECT\n",
+ " -- Group by physical road classification (e.g., motorway, primary, local)\n",
+ " class as road_class,\n",
+ " subtype,\n",
+ " COUNT(*) as segment_count,\n",
+ " ROUND(SUM(ST_LENGTH(s.geometry)) / 1000, 2) as total_length_km\n",
+ "FROM `bigquery-public-data.overture_maps.segment` s\n",
+ "JOIN target_boundary b ON ST_INTERSECTS(s.geometry, b.geometry)\n",
+ "WHERE s.subtype = 'road'\n",
+ "GROUP BY 1, 2\n",
+ "ORDER BY segment_count DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### rmip4_area_boundary.sql\n",
+ "**Business Question**: How can I create a reusable, open-source administrative boundary for my target study area?\nUse Case: Establishes a \"Master Boundary\" for a city or region using public data. This view can then be joined with RMI tables to automate geofencing and localized reporting.\nProduct Stage: GA\nEstimated Bytes Processed: ~1 MB (Uses BigQuery Public Dataset: Overture Maps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_rmip4_area_boundary\n",
+ "/*\n",
+ " NOTE: This query creates a persistent view of a target city's official boundary.\n",
+ " The source dataset (e.g., `boston_oct_2025_sample_data`) is read-only.\n",
+ " This view MUST be created in a separate, writable dataset within your project.\n",
+ " Replace `your-project.your-dataset` with your target location.\n",
+ "*/\n",
+ "\n",
+ "CREATE OR REPLACE VIEW `your-project.your-dataset.target_area_boundary` \n",
+ "(\n",
+ " division_id OPTIONS(description=\"Stable identifier for the administrative division.\"),\n",
+ " area_name OPTIONS(description=\"The primary display name (e.g. Boston).\"),\n",
+ " region OPTIONS(description=\"The ISO state/province code (e.g. US-MA).\"),\n",
+ " country OPTIONS(description=\"The ISO country code.\"),\n",
+ " geometry OPTIONS(description=\"The physical land boundary of the division as a GEOGRAPHY polygon.\")\n",
+ ")\n",
+ "OPTIONS(\n",
+ " description=\"A reusable administrative boundary for geofencing RMI analytical assets.\"\n",
+ ")\n",
+ "AS\n",
+ "SELECT \n",
+ " id AS division_id,\n",
+ " names.primary AS area_name,\n",
+ " region,\n",
+ " country,\n",
+ " geometry\n",
+ "FROM `bigquery-public-data.overture_maps.division_area`\n",
+ "WHERE names.primary = 'Boston' \n",
+ " AND country = 'US' \n",
+ " AND region = 'US-MA'\n",
+ " AND class = 'land';\n",
+ ""
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/roads_management_insights/rmi_sample_queries/notebooks/Traffic_Operations_Manager_Samples.ipynb b/roads_management_insights/rmi_sample_queries/notebooks/Traffic_Operations_Manager_Samples.ipynb
new file mode 100644
index 0000000..da2680d
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/notebooks/Traffic_Operations_Manager_Samples.ipynb
@@ -0,0 +1,344 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```\n# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Sample Queries: Traffic Operations Manager (GA)\n",
+ "\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This notebook contains sample queries for the **Traffic Operations Manager** persona, specifically for the **GA** stage."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Setup"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "import pandas as pd\n",
+ "\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "project_id = 'your-project-id' #@param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Writable Dataset\n",
+ "\n",
+ "Several queries in this notebook (e.g., those creating Materialized Views, Models, or Views) require a **writable dataset** within your own project. \n",
+ "**Note**: The source `boston_oct_2025_sample_data` dataset is a read-only subscription and cannot be used to store new resources.\n",
+ "\n",
+ "Run the cell below to create a new dataset (e.g., `rmi_analysis`) in your project if you haven't already.\n",
+ "\n",
+ "**Important**: When running queries that create new BigQuery resources (e.g., tables, views, models) outside of these `%%bigquery` magic cells, remember to manually prepend the job ID with `msqlfactory--` for proper tracking. For example: `bq query --job_id=msqlfactory--your-descriptive-job-name ...`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset_id = \"rmi_analysis\" #@param {type:\"string\"}\n",
+ "! bq --location=US mk --dataset {project_id}:{dataset_id}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## GA (General Availability)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### tom1_peak_hour_delay.sql\n",
+ "**Business Question**: What is the average travel time delay during the morning peak (7-9 AM) for the top 10 most congested routes?\nUse Case: Identifies critical morning commute bottlenecks to inform operational decisions or public messaging.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_tom1_peak_hour_delay\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Temporal Filtering\n",
+ " This query uses EXTRACT(HOUR...) on a converted DATETIME to focus on local \n",
+ " Boston peak windows. It filters for active routes and applies a quality \n",
+ " check to ensure the geometry is a single ST_LineString.\n",
+ "*/\n",
+ "\n",
+ "WITH peak_hour_data AS (\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.display_name,\n",
+ " -- delay_ratio > 1.0 indicates travel time is slower than free-flow (static)\n",
+ " SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) AS delay_ratio\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` AS h\n",
+ " JOIN `boston_oct_2025_sample_data.routes_status` AS s USING (selected_route_id)\n",
+ " WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- STATUS_RUNNING ensures we only analyze routes that are currently being monitored\n",
+ " AND s.status = 'STATUS_RUNNING'\n",
+ " -- AM Peak Window: 7:00 AM to 8:59 AM Local Time\n",
+ " AND EXTRACT(HOUR FROM DATETIME(h.record_time, 'America/New_York')) BETWEEN 7 AND 8\n",
+ " -- Geometry Integrity: Only process continuous, healthy paths\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ ")\n",
+ "SELECT\n",
+ " display_name,\n",
+ " ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,\n",
+ " COUNT(*) AS sample_count\n",
+ "FROM peak_hour_data\n",
+ "GROUP BY 1\n",
+ "-- Threshold: Filter for routes that are at least marginally slower than free-flow\n",
+ "HAVING avg_delay_ratio > 1.0\n",
+ "ORDER BY avg_delay_ratio DESC\n",
+ "LIMIT 10;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### tom2_persistent_bottlenecks.sql\n",
+ "**Business Question**: Which road segments (SRIs) have been in a 'TRAFFIC_JAM' state most frequently?\nUse Case: Locates recurring local bottlenecks within routes, enabling targeted infrastructure investigation or signal timing adjustments.\nProduct Stage: GA\nEstimated Bytes Processed: ~250 MB (Requires UNNEST of speed_reading_intervals)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_tom2_persistent_bottlenecks\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: SRI Unnesting\n",
+ " RMI routes store segment-level traffic states (SRI) in a nested array. \n",
+ " This query 'explodes' that array using UNNEST to audit the frequency of \n",
+ " severe congestion across the entire network.\n",
+ "*/\n",
+ "\n",
+ "WITH exploded_sris AS (\n",
+ " SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " -- 'speed' represents the RMI traffic state for that specific interval\n",
+ " sri.speed\n",
+ " FROM `boston_oct_2025_sample_data.recent_roads_data`,\n",
+ " UNNEST(speed_reading_intervals) AS sri\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " -- We count every occurrence of an interval being in a 'TRAFFIC_JAM'\n",
+ " COUNT(*) AS traffic_jam_count\n",
+ "FROM exploded_sris\n",
+ "-- Filter exclusively for the most severe RMI congestion state\n",
+ "WHERE speed = 'TRAFFIC_JAM'\n",
+ "GROUP BY 1, 2\n",
+ "ORDER BY traffic_jam_count DESC\n",
+ "LIMIT 10;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### tom3_operational_health.sql\n",
+ "**Business Question**: Which active routes are currently flagged with a 'LOW_ROAD_USAGE' validation error?\nUse Case: Monitors the reliability of data collection. Low usage flags indicate that insights for these routes may be based on fewer probes, requiring a review of route priority or placement.\nProduct Stage: GA\nEstimated Bytes Processed: < 1 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_tom3_operational_health\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Status Auditing\n",
+ " This query inspects the management plane table (routes_status) to identify \n",
+ " active routes that have quality warnings. This is critical for maintaining \n",
+ " trust in downstream traffic analytics.\n",
+ "*/\n",
+ "\n",
+ "SELECT\n",
+ " display_name,\n",
+ " selected_route_id,\n",
+ " status,\n",
+ " validation_error,\n",
+ " -- 'low_road_usage_start_time' is specifically populated when probe density drops below threshold\n",
+ " low_road_usage_start_time,\n",
+ " -- Time elapsed since the error was first detected (relative to sample end date)\n",
+ " DATETIME_DIFF(DATETIME('2025-11-01'), DATETIME(low_road_usage_start_time, 'UTC'), DAY) AS days_in_error_state\n",
+ "FROM `boston_oct_2025_sample_data.routes_status`\n",
+ "-- We only care about errors on routes that are supposed to be active (STATUS_RUNNING)\n",
+ "WHERE status = 'STATUS_RUNNING'\n",
+ " -- Filter specifically for the Low Road Usage warning\n",
+ " AND validation_error = 'VALIDATION_ERROR_LOW_ROAD_USAGE'\n",
+ "ORDER BY days_in_error_state DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### tom4_data_latency.sql\n",
+ "**Business Question**: Are there any active routes that have stopped sending data near the end of the snapshot period?\nUse Case: Detects localized data gaps or \"silent\" routes in real-time, enabling operators to investigate issues before they impact reporting.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_tom4_data_latency\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Freshness Monitoring\n",
+ " By comparing the max record_time per route against the overall dataset \n",
+ " end-time, we can identify routes that have 'gone silent'.\n",
+ "*/\n",
+ "\n",
+ "WITH last_data_arrival AS (\n",
+ " SELECT\n",
+ " selected_route_id,\n",
+ " -- Get the latest record timestamp for every route in the dataset\n",
+ " MAX(record_time) AS last_arrival\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " -- Focused partition scan for the full sample month\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " GROUP BY 1\n",
+ ")\n",
+ "SELECT\n",
+ " s.selected_route_id,\n",
+ " s.display_name,\n",
+ " l.last_arrival,\n",
+ " -- Measured relative to the very end of the sample dataset ('2025-11-01')\n",
+ " TIMESTAMP_DIFF(TIMESTAMP('2025-11-01 00:00:00'), l.last_arrival, MINUTE) as minutes_of_silence\n",
+ "FROM `boston_oct_2025_sample_data.routes_status` s\n",
+ "LEFT JOIN last_data_arrival l USING (selected_route_id)\n",
+ "-- Focus on routes that are supposed to be producing data\n",
+ "WHERE s.status = 'STATUS_RUNNING'\n",
+ " -- Threshold: Highlight routes that haven't sent a record in the last 2 minutes of the dataset\n",
+ " AND l.last_arrival < TIMESTAMP('2025-10-31 23:58:00')\n",
+ "ORDER BY minutes_of_silence DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### tom5_significant_event_detection.sql\n",
+ "**Business Question**: Which routes experienced a travel time more than double their static baseline in the last 24 hours?\nUse Case: Automates the detection of extreme traffic events (accidents, severe weather, gridlock) that require immediate operational intervention.\nProduct Stage: GA\nEstimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_tom5_significant_event_detection\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Threshold-Based Alerting\n",
+ " This query identifies major traffic incidents by flagging records where the \n",
+ " actual travel time is at least 2x the free-flow baseline (static_duration). \n",
+ " It applies quality filters to ensure alerts are only triggered for single, \n",
+ " continuous paths.\n",
+ "*/\n",
+ "\n",
+ "SELECT\n",
+ " h.display_name,\n",
+ " h.selected_route_id,\n",
+ " h.record_time,\n",
+ " h.duration_in_seconds,\n",
+ " h.static_duration_in_seconds,\n",
+ " -- Delay ratio > 2.0 means travel time is 2x slower than ideal\n",
+ " ROUND(SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds), 2) AS delay_ratio\n",
+ "FROM `boston_oct_2025_sample_data.historical_travel_time` AS h\n",
+ "JOIN `boston_oct_2025_sample_data.routes_status` AS s USING(selected_route_id)\n",
+ "-- Filter for the final day of the sample dataset\n",
+ "WHERE h.record_time BETWEEN '2025-10-30' AND '2025-11-01'\n",
+ " -- Focus on active monitoring fleet\n",
+ " AND s.status = 'STATUS_RUNNING'\n",
+ " -- Filter for \"Significant\" events\n",
+ " AND SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) > 2.0\n",
+ " -- Quality filter: Exclude non-continuous geometries\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ "ORDER BY delay_ratio DESC;\n",
+ ""
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/roads_management_insights/rmi_sample_queries/notebooks/Urban_Planner_Samples.ipynb b/roads_management_insights/rmi_sample_queries/notebooks/Urban_Planner_Samples.ipynb
new file mode 100644
index 0000000..e2449c4
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/notebooks/Urban_Planner_Samples.ipynb
@@ -0,0 +1,350 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```\n# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Sample Queries: Urban Planner (GA)\n",
+ "\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This notebook contains sample queries for the **Urban Planner** persona, specifically for the **GA** stage."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Setup"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "import pandas as pd\n",
+ "\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "project_id = 'your-project-id' #@param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Writable Dataset\n",
+ "\n",
+ "Several queries in this notebook (e.g., those creating Materialized Views, Models, or Views) require a **writable dataset** within your own project. \n",
+ "**Note**: The source `boston_oct_2025_sample_data` dataset is a read-only subscription and cannot be used to store new resources.\n",
+ "\n",
+ "Run the cell below to create a new dataset (e.g., `rmi_analysis`) in your project if you haven't already.\n",
+ "\n",
+ "**Important**: When running queries that create new BigQuery resources (e.g., tables, views, models) outside of these `%%bigquery` magic cells, remember to manually prepend the job ID with `msqlfactory--` for proper tracking. For example: `bq query --job_id=msqlfactory--your-descriptive-job-name ...`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset_id = \"rmi_analysis\" #@param {type:\"string\"}\n",
+ "! bq --location=US mk --dataset {project_id}:{dataset_id}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## GA (General Availability)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### up1_corridor_trend.sql\n",
+ "**Business Question**: What has been the week-over-week trend in the average delay ratio for a specific corridor?\nUse Case: Enables long-term performance monitoring of critical transportation infrastructure, helping planners identify if congestion is worsening or improving over time.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_up1_corridor_trend\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Weekly Trend Aggregation\n",
+ " This query truncates timestamps to the week level to smooth out day-to-day \n",
+ " fluctuations, focusing on the macro traffic behavior of a critical route.\n",
+ "*/\n",
+ "\n",
+ "WITH weekly_trends AS (\n",
+ " SELECT\n",
+ " selected_route_id,\n",
+ " -- Truncate to the start of the week for consistent aggregation\n",
+ " TIMESTAMP_TRUNC(record_time, WEEK) AS week,\n",
+ " -- Calculate average delay (Actual / Free-flow baseline)\n",
+ " AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)) AS avg_delay_ratio\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " -- Filter for a specific corridor of interest (e.g., Storrow Drive)\n",
+ " WHERE selected_route_id = 'route-4202493217'\n",
+ " AND record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " GROUP BY 1, 2\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " -- Format for readable year-week reporting\n",
+ " FORMAT_TIMESTAMP(\"%Y-%W\", week) AS year_week,\n",
+ " ROUND(avg_delay_ratio, 3) AS avg_delay_ratio\n",
+ "FROM weekly_trends\n",
+ "ORDER BY week;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### up2_impact_analysis.sql\n",
+ "**Business Question**: Has the average travel time on routes passing through a recent construction zone improved since the project's completion date?\nUse Case: Provides empirical evidence of infrastructure project success, validating whether road improvements (like new lanes or signals) actually reduced congestion.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_up2_impact_analysis\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Spatial & Milestone Join\n",
+ " This query uses a DECLARE statement for the study area geometry to ensure \n",
+ " BigQuery treats the polygon as a constant, enabling efficient spatial \n",
+ " indexing during the ST_INTERSECTS join. It then segments the data based \n",
+ " on a chronological project milestone.\n",
+ "*/\n",
+ "\n",
+ "-- Study Area: Downtown Boston Intersection\n",
+ "DECLARE study_area GEOGRAPHY DEFAULT ST_GEOGFROMTEXT('POLYGON((-71.06 42.35, -71.05 42.35, -71.05 42.34, -71.06 42.34, -71.06 42.35))');\n",
+ "-- Project Milestone: Date when construction was completed\n",
+ "DECLARE completion_date DATE DEFAULT '2025-10-15';\n",
+ "\n",
+ "WITH impact_data AS (\n",
+ " SELECT\n",
+ " -- Split records into 'Before' and 'After' buckets\n",
+ " record_time >= completion_date AS is_after_completion,\n",
+ " SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) AS delay_ratio\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " -- Filter for routes that physically pass through the study zone\n",
+ " WHERE ST_INTERSECTS(route_geometry, study_area)\n",
+ " AND record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ ")\n",
+ "SELECT\n",
+ " is_after_completion,\n",
+ " ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,\n",
+ " COUNT(*) as sample_count\n",
+ "FROM impact_data\n",
+ "GROUP BY 1\n",
+ "ORDER BY 1;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### up3_monitoring_density.sql\n",
+ "**Business Question**: Which geographic areas show the highest concentration of RMI route monitoring?\nUse Case: Helps planners identify \"blind spots\" in their monitoring network or confirm that critical urban zones are sufficiently covered by RMI probes.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_up3_monitoring_density\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Spatial Grid Aggregation\n",
+ " This query maps the RMI monitoring footprint by calculating route centroids \n",
+ " and grouping them into a ~1.1km grid (3 decimal places). This provides a \n",
+ " coarse-grained view of network density without high computational overhead.\n",
+ "*/\n",
+ "\n",
+ "WITH route_centroids AS (\n",
+ " SELECT \n",
+ " selected_route_id,\n",
+ " -- Use the centroid to represent the general location of the route polyline\n",
+ " ST_CENTROID(route_geometry) as centroid\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ ")\n",
+ "SELECT\n",
+ " -- Grid the coordinates to a precision of ~1.1km\n",
+ " ROUND(ST_Y(centroid), 3) AS lat_grid,\n",
+ " ROUND(ST_X(centroid), 3) AS lon_grid,\n",
+ " -- Count unique route definitions in this grid cell\n",
+ " COUNT(DISTINCT selected_route_id) AS unique_routes_monitored,\n",
+ " -- Count total traffic samples captured in this grid cell\n",
+ " COUNT(*) AS total_samples_collected\n",
+ "FROM route_centroids\n",
+ "GROUP BY 1, 2\n",
+ "ORDER BY unique_routes_monitored DESC\n",
+ "LIMIT 20;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### up4_weekend_vs_weekday.sql\n",
+ "**Business Question**: How does average travel time in the afternoon (2-5 PM) differ between weekdays and weekends?\nUse Case: Informs urban policy decisions like congestion pricing or off-peak transit scheduling by highlighting when road demand is most elastic.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_up4_weekend_vs_weekday\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Day-Type Segmentation\n",
+ " This query uses EXTRACT(DAYOFWEEK...) to categorize records into binary \n",
+ " 'Weekday' or 'Weekend' buckets. It combines this with a peak-window filter \n",
+ " to provide a clean comparison of temporal demand shifts.\n",
+ "*/\n",
+ "\n",
+ "WITH afternoon_stats AS (\n",
+ " SELECT\n",
+ " -- Day segmentation: 1 = Sunday, 7 = Saturday\n",
+ " CASE \n",
+ " WHEN EXTRACT(DAYOFWEEK FROM DATETIME(record_time, 'America/New_York')) IN (1, 7) THEN 'Weekend'\n",
+ " ELSE 'Weekday'\n",
+ " END AS day_type,\n",
+ " duration_in_seconds,\n",
+ " static_duration_in_seconds\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time`\n",
+ " WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Afternoon period: 2 PM to 5 PM Local Time (Boston)\n",
+ " AND EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 14 AND 17\n",
+ ")\n",
+ "SELECT\n",
+ " day_type,\n",
+ " -- Calculate Average Delay Index (Actual / Ideal)\n",
+ " ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 3) AS avg_delay_ratio,\n",
+ " ROUND(AVG(duration_in_seconds), 2) AS avg_duration_seconds,\n",
+ " COUNT(*) as sample_count\n",
+ "FROM afternoon_stats\n",
+ "GROUP BY 1\n",
+ "ORDER BY avg_delay_ratio DESC;\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### up5_geofenced_congestion.sql\n",
+ "**Business Question**: Within a specific downtown polygon, which routes are currently seeing travel times more than 50% above their static baseline?\nUse Case: Enables targeted traffic management and demand-response strategies within high-density zones or during special events.\nProduct Stage: GA\nEstimated Bytes Processed: ~150 MB"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project {project_id} df_up5_geofenced_congestion\n",
+ "/*\n",
+ " ANALYTICAL PATTERN: Spatial Geofencing\n",
+ " This query uses a DECLARE statement for the downtown polygon to ensure \n",
+ " BigQuery treats the study area as a constant, enabling efficient spatial \n",
+ " indexing during the ST_INTERSECTS join. It identifies routes that are \n",
+ " physically impacted by a specific urban zone.\n",
+ "*/\n",
+ "\n",
+ "-- Study Area: Downtown Boston Geofence\n",
+ "DECLARE downtown_zone GEOGRAPHY DEFAULT ST_GEOGFROMTEXT('POLYGON((-71.066 42.358, -71.052 42.358, -71.052 42.348, -71.066 42.348, -71.066 42.358))');\n",
+ "\n",
+ "WITH intersecting_routes AS (\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.display_name,\n",
+ " SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) AS delay_ratio\n",
+ " FROM `boston_oct_2025_sample_data.historical_travel_time` h\n",
+ " WHERE ST_INTERSECTS(h.route_geometry, downtown_zone)\n",
+ " AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'\n",
+ " -- Quality filter: Exclude non-continuous geometries\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ ")\n",
+ "SELECT\n",
+ " selected_route_id,\n",
+ " display_name,\n",
+ " ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,\n",
+ " COUNT(*) as sample_count\n",
+ "FROM intersecting_routes\n",
+ "GROUP BY 1, 2\n",
+ "-- Threshold: Filter for routes that are at least 1.5x slower than free-flow\n",
+ "HAVING avg_delay_ratio > 1.5\n",
+ "ORDER BY avg_delay_ratio DESC;\n",
+ ""
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa0_metadata_inventory.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa0_metadata_inventory.sql
new file mode 100644
index 0000000..052675c
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa0_metadata_inventory.sql
@@ -0,0 +1,38 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Q0: Metadata Inventory and Partition Overview
+-- Business Question: How can I quickly check the row count and storage size of all RMI tables using zero-cost metadata queries?
+-- Product Stage: GA
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ This query utilizes INFORMATION_SCHEMA.PARTITIONS to provide a high-level
+ overview of table scale and data accumulation trends.
+ It processes 0 bytes because it scans system metadata rather than table data.
+*/
+
+SELECT
+ table_name,
+ CASE
+ WHEN partition_id IS NULL OR partition_id = '__UNPARTITIONED__' THEN 'UNPARTITIONED'
+ ELSE partition_id
+ END as partition_id,
+ total_rows,
+ ROUND(total_logical_bytes / POW(1024, 2), 2) as size_mb,
+ last_modified_time
+FROM `boston_oct_2025_sample_data.INFORMATION_SCHEMA.PARTITIONS`
+WHERE table_name IN ('historical_travel_time', 'recent_roads_data', 'routes_status')
+ AND partition_id != '__NULL__'
+ORDER BY table_name, partition_id DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa1_scan_volume.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa1_scan_volume.sql
new file mode 100644
index 0000000..1971f0a
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa1_scan_volume.sql
@@ -0,0 +1,47 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- BigQuery Admin Query 1: Scan Volume Monitoring by User
+-- Business Question: Which users or service accounts are generating the highest scan volume against RMI tables this month?
+-- Use Case: Enables cost governance by identifying 'heavy' consumers of the RMI dataset. Administrators can use this data to justify budget reallocations or suggest query optimizations to specific teams.
+-- Product Stage: GA (Uses BigQuery INFORMATION_SCHEMA)
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ AUDIT PATTERN: Job Metadata Analysis
+ This query scans the system-managed JOBS view. It calculates total data scanned
+ (billed bytes) for any query that mentions core RMI table names.
+
+ Note: Replace 'region-us' with the specific region where your dataset resides.
+*/
+
+SELECT
+ user_email,
+ -- Convert bytes to GB for readable billing analysis
+ SUM(total_bytes_billed) / POW(1024, 3) AS total_gb_billed,
+ COUNT(*) AS job_count,
+ -- Average scan size helps distinguish between 'many small queries' vs 'one massive scan'
+ AVG(total_bytes_billed) / POW(1024, 3) AS avg_gb_per_job
+FROM `region-us`.INFORMATION_SCHEMA.JOBS
+WHERE creation_time BETWEEN TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), MONTH) AND CURRENT_TIMESTAMP()
+ AND job_type = 'QUERY'
+ -- Heuristic filter: Look for queries mentioning RMI core tables
+ AND (
+ query LIKE '%historical_travel_time%'
+ OR query LIKE '%recent_roads_data%'
+ OR query LIKE '%routes_status%'
+ )
+GROUP BY 1
+ORDER BY total_gb_billed DESC
+LIMIT 10;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa2_cost_attribution.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa2_cost_attribution.sql
new file mode 100644
index 0000000..7b28eaa
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa2_cost_attribution.sql
@@ -0,0 +1,48 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- BigQuery Admin Query 2: Cost Attribution Audit (Missing Prefixes)
+-- Business Question: Identify any BigQuery jobs missing the mandatory 'rmisqlfactory_' prefix in their job IDs.
+-- Use Case: Ensures compliance with project governance standards. Consistent job ID prefixing is required for accurate cost attribution and auditing of RMI-related analysis.
+-- Product Stage: GA (Uses BigQuery INFORMATION_SCHEMA)
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ NOTE: 'rmisqlfactory_' is the mandatory job ID prefix for this workspace.
+ This allows administrators to filter billing logs and correlate spend
+ with specific personas or tools.
+
+ SCOPE NOTE: Replace 'JOBS' with 'JOBS_BY_ORGANIZATION' if you have the
+ necessary permissions to audit spend across multiple projects.
+*/
+
+SELECT
+ job_id,
+ user_email,
+ creation_time,
+ total_bytes_billed,
+ -- Provide the query text to help identify the source of the non-compliant job
+ query
+FROM `region-us`.INFORMATION_SCHEMA.JOBS
+WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
+ AND job_type = 'QUERY'
+ -- Filter for jobs that missed the mandatory prefix
+ AND NOT STARTS_WITH(job_id, 'rmisqlfactory_')
+ -- Only audit jobs that were targeting RMI core tables
+ AND (
+ query LIKE '%historical_travel_time%'
+ OR query LIKE '%recent_roads_data%'
+ OR query LIKE '%routes_status%'
+ )
+ORDER BY creation_time DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa3_derived_resources.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa3_derived_resources.sql
new file mode 100644
index 0000000..35d7a15
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa3_derived_resources.sql
@@ -0,0 +1,57 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- BigQuery Admin Query 3: Identify Derived Tables and Views
+-- Business Question: What tables or views in my project are derived from the core RMI dataset?
+-- Use Case: Critical for lineage auditing and change management. Identifies 'shadow' analytical assets that may need to be updated or retired if the core RMI schema changes.
+-- Product Stage: GA (Uses BigQuery INFORMATION_SCHEMA)
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ LINEAGE PATTERN: Metadata Dependency Mapping
+ This query scans the project metadata to find any VIEW definition that
+ references RMI core tables, as well as any clones or snapshots
+ targeting 'rmi' or 'road' named resources.
+*/
+
+-- Replace `your-project.your-dataset` with the location of your analytical workspace.
+
+SELECT
+ table_schema AS dataset_id,
+ table_name AS resource_name,
+ 'VIEW' AS type,
+ -- view_definition allows the admin to see the exact transformation logic
+ view_definition as lineage_detail
+FROM `your-project.your-dataset.INFORMATION_SCHEMA.VIEWS`
+WHERE (
+ view_definition LIKE '%historical_travel_time%'
+ OR view_definition LIKE '%recent_roads_data%'
+ OR view_definition LIKE '%routes_status%'
+ )
+
+UNION ALL
+
+-- Also identify Clones and Snapshots (cost-effective analytical patterns)
+SELECT
+ table_schema AS dataset_id,
+ table_name AS resource_name,
+ table_type AS type,
+ 'N/A (Check Table Metadata for Base Table Lineage)' AS lineage_detail
+FROM `your-project.your-dataset.INFORMATION_SCHEMA.TABLES`
+WHERE (table_name LIKE '%rmi%' OR table_name LIKE '%road%')
+ AND table_type IN ('BASE TABLE', 'CLONE', 'SNAPSHOT')
+ -- Exclude the raw source tables themselves
+ AND table_name NOT IN ('historical_travel_time', 'recent_roads_data', 'routes_status')
+
+ORDER BY dataset_id, resource_name;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa4_query_patterns.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa4_query_patterns.sql
new file mode 100644
index 0000000..f7666b6
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa4_query_patterns.sql
@@ -0,0 +1,81 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- BigQuery Admin Query 4: Detect Repeated Query Patterns for Optimization
+-- Business Question: What are the most frequent query patterns (joins, filters, JSON extractions) that could benefit from optimized downstream tables?
+-- Use Case: Enables pro-active optimization. If many users are extracting the same JSON attribute or joining the same tables daily, the Admin can create a materialized view or flattened table to improve performance and reduce costs.
+-- Product Stage: GA (Uses BigQuery INFORMATION_SCHEMA)
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ OPTIMIZATION PATTERN: Pattern Mining
+ This query analyzes your recent job history to identify common access patterns.
+
+ Note: Replace 'region-us' with your actual BigQuery region.
+*/
+
+WITH job_history AS (
+ SELECT
+ query,
+ total_bytes_processed
+ FROM `region-us`.INFORMATION_SCHEMA.JOBS
+ WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
+ AND job_type = 'QUERY'
+ AND statement_type = 'SELECT'
+ -- Heuristic: Focus on RMI-related queries
+ AND (
+ query LIKE '%historical_travel_time%'
+ OR query LIKE '%recent_roads_data%'
+ OR query LIKE '%routes_status%'
+ )
+),
+patterns AS (
+ SELECT
+ query,
+ -- Regex: Identify specific JSON attributes being extracted from 'route_attributes'
+ REGEXP_EXTRACT_ALL(query, r"JSON_EXTRACT_SCALAR\(route_attributes, '([^']+)'\)") as extracted_attributes,
+ -- Regex: Detect if the query performs SRI flattening (expensive unnest)
+ REGEXP_CONTAINS(query, r"UNNEST\(speed_reading_intervals\)") as uses_sri_unnest,
+ -- Regex: Detect common join patterns
+ REGEXP_CONTAINS(query, r"JOIN\s+`[^`]+historical_travel_time`") AND REGEXP_CONTAINS(query, r"JOIN\s+`[^`]+routes_status`") as joins_hist_and_status
+ FROM job_history
+)
+SELECT
+ 'Frequent Attribute Extraction' as pattern_type,
+ attr as detail,
+ COUNT(*) as frequency
+FROM patterns, UNNEST(extracted_attributes) as attr
+GROUP BY 1, 2
+
+UNION ALL
+
+SELECT
+ 'Heavy SRI Processing' as pattern_type,
+ 'Uses UNNEST(speed_reading_intervals)' as detail,
+ COUNT(*) as frequency
+FROM patterns
+WHERE uses_sri_unnest
+GROUP BY 1, 2
+
+UNION ALL
+
+SELECT
+ 'Common Table Joins' as pattern_type,
+ 'Joins historical_travel_time and routes_status' as detail,
+ COUNT(*) as frequency
+FROM patterns
+WHERE joins_hist_and_status
+GROUP BY 1, 2
+
+ORDER BY frequency DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa5_partition_pruning.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa5_partition_pruning.sql
new file mode 100644
index 0000000..adcb628
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa5_partition_pruning.sql
@@ -0,0 +1,46 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- BigQuery Admin Query 5: Identify Queries with Inefficient Partition Pruning
+-- Business Question: Are there queries performing full table scans on 'historical_travel_time' instead of using the 'record_time' partition filter?
+-- Use Case: Detects 'expensive' behavior. Since RMI datasets are partitioned by day on 'record_time', any query that doesn't include a temporal filter will scan the entire history, significantly increasing costs.
+-- Product Stage: GA (Uses BigQuery INFORMATION_SCHEMA)
+-- Estimated Bytes Processed: N/A (Metadata Query)
+
+/*
+ AUDIT PATTERN: Pruning Heuristics
+ This query identifies large scans on the historical table.
+ It calculates if the 'total_bytes_processed' for a job is disproportionately
+ large compared to the typical size of a single daily partition.
+
+ Note: Replace 'region-us' with your actual BigQuery region.
+*/
+
+SELECT
+ job_id,
+ user_email,
+ query,
+ -- Convert bytes to GB for readable performance auditing
+ total_bytes_processed / POW(1024, 3) AS gb_processed,
+ creation_time
+FROM `region-us`.INFORMATION_SCHEMA.JOBS
+WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
+ AND job_type = 'QUERY'
+ AND statement_type = 'SELECT'
+ AND query LIKE '%historical_travel_time%'
+ -- Heuristic: Trigger audit if scan volume exceeds 100 GB (adjustable baseline)
+ -- This suggests the user might have missed a partition pruning filter (record_time)
+ AND total_bytes_processed > 100 * POW(1024, 3)
+ORDER BY gb_processed DESC
+LIMIT 10;
diff --git a/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa6_data_complexity_audit.sql b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa6_data_complexity_audit.sql
new file mode 100644
index 0000000..a647f3a
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/bigquery_admin/bqa6_data_complexity_audit.sql
@@ -0,0 +1,60 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Q6: Data Characteristics and Complexity Audit
+-- Business Question: What is the average spatial complexity (vertex count) and metadata size (routeAttributes) of my actual records?
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~450 MB (Full scan of geometry and attributes)
+
+/*
+ This query performs a deep audit of the data payload.
+ It is useful for understanding the impact of route precision and
+ custom attributes on storage and processing costs.
+*/
+
+-- Historical Spatial Complexity
+SELECT
+ 'historical_travel_time' as table_name,
+ COUNT(DISTINCT selected_route_id) as unique_routes,
+ AVG(BYTE_LENGTH(ST_ASBINARY(route_geometry))) as avg_geom_bytes,
+ AVG(ST_LENGTH(route_geometry) / 1000) as avg_route_length_km,
+ AVG(ST_NUMPOINTS(route_geometry)) as avg_num_points,
+ CAST(NULL AS FLOAT64) as avg_attr_bytes
+FROM `boston_oct_2025_sample_data.historical_travel_time`
+WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+
+UNION ALL
+
+-- Recent Spatial Complexity (Enriched)
+SELECT
+ 'recent_roads_data' as table_name,
+ COUNT(DISTINCT selected_route_id) as unique_routes,
+ AVG(BYTE_LENGTH(ST_ASBINARY(route_geometry))) as avg_geom_bytes,
+ AVG(ST_LENGTH(route_geometry) / 1000) as avg_route_length_km,
+ AVG(ST_NUMPOINTS(route_geometry)) as avg_num_points,
+ CAST(NULL AS FLOAT64) as avg_attr_bytes
+FROM `boston_oct_2025_sample_data.recent_roads_data`
+WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+
+UNION ALL
+
+-- Status Metadata Complexity
+SELECT
+ 'routes_status' as table_name,
+ COUNT(DISTINCT selected_route_id) as unique_routes,
+ CAST(NULL AS FLOAT64) as avg_geom_bytes,
+ CAST(NULL AS FLOAT64) as avg_route_length_km,
+ CAST(NULL AS FLOAT64) as avg_num_points,
+ AVG(BYTE_LENGTH(route_attributes)) as avg_attr_bytes
+FROM `boston_oct_2025_sample_data.routes_status`;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de1_materialized_view.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de1_materialized_view.sql
new file mode 100644
index 0000000..b1a4798
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de1_materialized_view.sql
@@ -0,0 +1,61 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Engineer Query 1: Create Materialized Subset
+-- Business Question: Generate a query to create a 7-day materialized view of historical_travel_time for a specific corridor.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+-- Metadata: Uses ALTER statements to apply technical descriptions to all columns and the view itself.
+
+-- NOTE: The source dataset (e.g., `boston_oct_2025_sample_data`) is a read-only subscription from Analytics Hub.
+-- This materialized view MUST be created in a separate, writable dataset within your project.
+-- Replace `your-project.your-dataset` with your target location.
+
+CREATE MATERIALIZED VIEW IF NOT EXISTS `your-project.your-dataset.storrow_drive_view`
+CLUSTER BY selected_route_id AS
+SELECT
+ selected_route_id,
+ display_name,
+ record_time,
+ duration_in_seconds,
+ static_duration_in_seconds,
+ route_geometry
+FROM `boston_oct_2025_sample_data.historical_travel_time`
+WHERE record_time >= TIMESTAMP_SUB(TIMESTAMP('2025-10-31'), INTERVAL 7 DAY)
+ AND display_name LIKE '%Storrow-Drive%';
+
+-- Applying view-level metadata
+ALTER MATERIALIZED VIEW `your-project.your-dataset.storrow_drive_view`
+SET OPTIONS (
+ description="A 7-day rolling subset of RMI historical travel time data specifically for the Storrow Drive corridor."
+);
+
+-- Applying column-level metadata descriptions
+ALTER COLUMN selected_route_id SET OPTIONS(description="Unique identifier for the SelectedRoute resource.")
+ON `your-project.your-dataset.storrow_drive_view`;
+
+ALTER COLUMN display_name SET OPTIONS(description="User-provided descriptive name for the route.")
+ON `your-project.your-dataset.storrow_drive_view`;
+
+ALTER COLUMN record_time SET OPTIONS(description="The UTC timestamp representing when the route data was computed.")
+ON `your-project.your-dataset.storrow_drive_view`;
+
+ALTER COLUMN duration_in_seconds SET OPTIONS(description="The traffic-aware duration of the route in seconds.")
+ON `your-project.your-dataset.storrow_drive_view`;
+
+ALTER COLUMN static_duration_in_seconds SET OPTIONS(description="The traffic-unaware (static) duration of the route in seconds.")
+ON `your-project.your-dataset.storrow_drive_view`;
+
+ALTER COLUMN route_geometry SET OPTIONS(description="The traffic-aware polyline geometry of the route as a GEOGRAPHY object.")
+ON `your-project.your-dataset.storrow_drive_view`;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de2_data_cleaning.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de2_data_cleaning.sql
new file mode 100644
index 0000000..02b1bb6
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de2_data_cleaning.sql
@@ -0,0 +1,46 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Engineer Query 2: Data Cleaning Transformation
+-- Business Question: Write a query that produces a "cleaned" version of the routes_status table, correctly casting the route_length.
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB
+-- Metadata: Provides descriptions for transformed fields and the view itself.
+
+/*
+ PRE-REQUISITE: This query utilizes the custom routeAttribute 'route_length'
+ (intended physical length in meters), which has been pre-configured for
+ all routes in this sample dataset.
+*/
+
+CREATE OR REPLACE VIEW `your-project.your-dataset.routes_status_cleaned`
+(
+ selected_route_id OPTIONS(description="Unique identifier for the SelectedRoute resource."),
+ display_name OPTIONS(description="User-provided descriptive name for the route."),
+ status OPTIONS(description="Operational state (e.g., STATUS_RUNNING)."),
+ validation_error OPTIONS(description="Reason for failure if status is INVALID."),
+ route_length_meters OPTIONS(description="The pre-computed intended route length in meters, cast from the custom 'route_length' routeAttribute.")
+)
+OPTIONS(
+ description="A cleaned view of SelectedRoutes status, with the custom route_length attribute promoted to a typed column."
+)
+AS
+SELECT
+ selected_route_id,
+ display_name,
+ status,
+ validation_error,
+ CAST(JSON_VALUE(route_attributes, '$.route_length') AS FLOAT64) AS route_length_meters
+FROM `boston_oct_2025_sample_data.routes_status`
+WHERE status != 'STATUS_INVALID';
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de3_sri_flattening.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de3_sri_flattening.sql
new file mode 100644
index 0000000..10db599
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de3_sri_flattening.sql
@@ -0,0 +1,120 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Engineer Query 3: SRI Flattening (Scripted Version)
+-- Business Question: Create an optimized script to transform the latest 30 minutes of nested SRI data into a flattened format with spatial progress metrics and quality filters.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~10 MB (Optimized via Scripting and Static Partition Pruning)
+
+/*
+ BIGQUERY OPTIMIZATION PATTERN: Static vs. Dynamic Partition Pruning
+
+ This query uses BigQuery Scripting (DECLARE/SET) to force "Static Pruning".
+
+ 1. Static Pruning (This Pattern): By resolving 'target_time' into a variable BEFORE
+ the main SELECT, BigQuery treats it as a constant. This allows the optimizer
+ to immediately discard irrelevant partitions.
+
+ 2. Geometry Integrity Check: To ensure high-quality analysis, this query:
+ a) Calculates 'length_deviation_ratio' against pre-computed attributes.
+ b) Excludes 'MultiLineString' geometries to ensure we only process single,
+ continuous paths (ST_LineString).
+
+ 3. Noise Reduction: Final results exclude 'NORMAL' speed states and filter out
+ extremely short intervals (< 5 meters) that often represent GPS noise.
+*/
+
+-- Step 1: Define the static anchor date to narrow down partitions
+DECLARE anchor_date DATE DEFAULT '2025-10-31';
+
+-- Step 2: Find the exact latest timestamp and define the 30-minute window
+DECLARE latest_timestamp TIMESTAMP;
+SET latest_timestamp = (
+ SELECT MAX(record_time)
+ FROM `boston_oct_2025_sample_data.recent_roads_data`
+ WHERE record_time >= TIMESTAMP(anchor_date)
+);
+
+-- Step 3: Execute the flattening logic for the latest 30-minute window
+WITH base_intervals AS (
+ SELECT
+ r.selected_route_id,
+ r.record_time,
+ segment_offset as interval_index,
+ sri.speed as interval_speed_state,
+ -- Reconstruct the interval polyline from the array of interval points
+ ST_MAKELINE(sri.interval_coordinates) as interval_geometry,
+ -- Core metrics for integrity check
+ ST_LENGTH(r.route_geometry) as actual_route_length_meters,
+ CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) as intended_route_length_meters
+ FROM `boston_oct_2025_sample_data.recent_roads_data` r
+ JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id),
+ UNNEST(speed_reading_intervals) AS sri WITH OFFSET AS segment_offset
+ WHERE r.record_time >= TIMESTAMP(anchor_date)
+ -- Capture only records from the last 30 minutes
+ AND r.record_time > TIMESTAMP_SUB(latest_timestamp, INTERVAL 30 MINUTE)
+ -- Quality filter: Only process single, continuous paths
+ AND ST_GEOMETRYTYPE(r.route_geometry) = 'ST_LineString'
+),
+quality_filtered_intervals AS (
+ SELECT
+ *,
+ -- Deviation between intended and actual geometry length
+ SAFE_DIVIDE(ABS(actual_route_length_meters - intended_route_length_meters), intended_route_length_meters) as length_deviation_ratio
+ FROM base_intervals
+ -- Filter for high-integrity geometries (e.g., < 5% deviation)
+ WHERE SAFE_DIVIDE(ABS(actual_route_length_meters - intended_route_length_meters), intended_route_length_meters) < 0.05
+),
+metrics_calculation AS (
+ SELECT
+ *,
+ ST_LENGTH(interval_geometry) as interval_length_meters,
+ -- Roll-up sum of interval lengths to find cumulative distance from origin
+ SUM(ST_LENGTH(interval_geometry)) OVER (
+ PARTITION BY selected_route_id, record_time
+ ORDER BY interval_index
+ ) as cumulative_length_meters,
+ -- Count total intervals in the route for context
+ COUNT(*) OVER (
+ PARTITION BY selected_route_id, record_time
+ ) as total_intervals
+ FROM quality_filtered_intervals
+),
+position_ratios AS (
+ SELECT
+ *,
+ -- The end of the previous interval is the start of the current interval
+ COALESCE(LAG(cumulative_length_meters) OVER (
+ PARTITION BY selected_route_id, record_time
+ ORDER BY interval_index
+ ), 0.0) as start_length_meters
+ FROM metrics_calculation
+)
+SELECT
+ selected_route_id,
+ record_time,
+ interval_index,
+ total_intervals,
+ interval_speed_state,
+ interval_length_meters,
+ -- Rounded relative positions (0.000 to 1.000) within the trip
+ ROUND(SAFE_DIVIDE(start_length_meters, actual_route_length_meters), 3) as start_position_ratio,
+ ROUND(SAFE_DIVIDE(cumulative_length_meters, actual_route_length_meters), 3) as end_position_ratio,
+ length_deviation_ratio,
+ interval_geometry
+FROM position_ratios
+-- Filter for congested intervals and exclude noise (short intervals)
+WHERE interval_speed_state != 'NORMAL'
+ AND interval_length_meters >= 5
+ORDER BY selected_route_id, record_time, interval_index;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de4_attribute_extraction.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de4_attribute_extraction.sql
new file mode 100644
index 0000000..4fe6056
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de4_attribute_extraction.sql
@@ -0,0 +1,42 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Engineer Query 4: Attribute Extraction
+-- Business Question: Write a query that pivots the JSON route_attributes into distinct columns.
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB
+-- Metadata: Enriches pivoted columns with business definitions.
+
+CREATE OR REPLACE VIEW `your-project.your-dataset.routes_enriched_attributes`
+(
+ selected_route_id OPTIONS(description="Unique identifier for the SelectedRoute resource."),
+ region OPTIONS(description="The geographical business region extracted from routeAttributes."),
+ tier OPTIONS(description="The service tier (e.g. priority, standard) extracted from routeAttributes."),
+ priority OPTIONS(description="The operational priority level assigned during registration."),
+ route_length_meters OPTIONS(description="The intended physical length of the route in meters, cast to FLOAT64 from routeAttributes.")
+)
+OPTIONS(
+ description="A denormalized view of SelectedRoute metadata, promoting custom JSON attributes into typed top-level columns."
+)
+AS
+SELECT
+ selected_route_id,
+ JSON_EXTRACT_SCALAR(route_attributes, '$.region') as region,
+ JSON_EXTRACT_SCALAR(route_attributes, '$.tier') as tier,
+ JSON_EXTRACT_SCALAR(route_attributes, '$.priority') as priority,
+ -- route_attributes values are always strings. Casting to FLOAT64 for numerical analysis.
+ CAST(JSON_EXTRACT_SCALAR(route_attributes, '$.route_length') AS FLOAT64) as route_length_meters
+FROM `boston_oct_2025_sample_data.routes_status`
+-- Example: Filtering by priority attribute
+-- WHERE JSON_EXTRACT_SCALAR(route_attributes, '$.priority') = 'high';
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de5_freshness_audit.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de5_freshness_audit.sql
new file mode 100644
index 0000000..2fbc182
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de5_freshness_audit.sql
@@ -0,0 +1,57 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Engineer Query 5: Data Freshness Audit
+-- Business Question: Which active routes have stopped receiving updates, indicating potential data gaps?
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB
+-- Metadata: Provides descriptions for the audit results.
+
+/*
+ AUDIT GOAL: Identify routes that are 'STATUS_RUNNING' but have no recent
+ records in historical_travel_time. This helps detect routes with
+ insufficient traffic or pipeline latency issues.
+*/
+
+CREATE OR REPLACE VIEW `your-project.your-dataset.route_freshness_audit`
+(
+ selected_route_id OPTIONS(description="Unique identifier for the SelectedRoute resource."),
+ display_name OPTIONS(description="Human-readable name of the route."),
+ last_updated OPTIONS(description="The timestamp of the most recent record found in historical_travel_time."),
+ hours_since_last_update OPTIONS(description="The age of the data in hours relative to the audit timestamp.")
+)
+OPTIONS(
+ description="Operational audit view to identify active routes with missing or stale travel time data."
+)
+AS
+WITH freshness AS (
+ SELECT
+ selected_route_id,
+ MAX(record_time) as last_updated
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ -- Scans the full sample month to find the latest record for every route
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ GROUP BY 1
+)
+SELECT
+ s.selected_route_id,
+ s.display_name,
+ f.last_updated,
+ -- Using '2025-11-01' as the reference 'Now' for this static sample dataset
+ TIMESTAMP_DIFF(TIMESTAMP('2025-11-01'), f.last_updated, HOUR) AS hours_since_last_update
+FROM `boston_oct_2025_sample_data.routes_status` s
+LEFT JOIN freshness f USING(selected_route_id)
+-- Focus on routes that SHOULD be providing data
+WHERE s.status = 'STATUS_RUNNING'
+ORDER BY hours_since_last_update DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_engineer/de7_routes_status_snapshot.sql b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de7_routes_status_snapshot.sql
new file mode 100644
index 0000000..8ef40c9
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_engineer/de7_routes_status_snapshot.sql
@@ -0,0 +1,61 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Q7: Automate Daily Snapshot of Routes Status (Scheduled Query)
+-- Business Question: How can I automate the historical tracking of my SelectedRoutes' status changes?
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB
+-- Metadata: Inherits column descriptions from routes_status and adds snapshot metadata.
+
+/*
+ AUTOMATION EXAMPLE:
+ To schedule this snapshot daily at 2 AM UTC using the bq CLI, run:
+
+ bq mk \
+ --transfer_config \
+ --project_id="your-project-id" \
+ --data_source=scheduled_query \
+ --display_name="Daily RMI Routes Status Snapshot" \
+ --target_dataset="your_dataset" \
+ --schedule="every 24 hours" \
+ --params='{
+ "query":"INSERT INTO `your-project.your-dataset.routes_status_history` SELECT CURRENT_TIMESTAMP() as snapshot_time, * FROM `boston_oct_2025_sample_data.routes_status`"
+ }'
+*/
+
+-- STEP 1: Initialize the partitioned history table with enriched metadata
+CREATE TABLE IF NOT EXISTS `your-project.your-dataset.routes_status_history` (
+ snapshot_time TIMESTAMP OPTIONS(description="The UTC timestamp when this snapshot was captured."),
+ selected_route_id STRING OPTIONS(description="Unique identifier for the SelectedRoute resource."),
+ display_name STRING OPTIONS(description="User-provided descriptive name for the route."),
+ status STRING OPTIONS(description="Current operational state (e.g., STATUS_RUNNING, STATUS_INVALID)."),
+ validation_error STRING OPTIONS(description="Detailed reason if the route failed validation."),
+ low_road_usage_start_time TIMESTAMP OPTIONS(description="Timestamp when low road usage was first detected."),
+ route_attributes STRING OPTIONS(description="JSON string of custom business metadata.")
+)
+PARTITION BY DATE(snapshot_time)
+CLUSTER BY selected_route_id;
+
+-- STEP 2: The Periodic Append Logic (Manually executable version)
+-- This statement appends the current state of all routes into the history table.
+INSERT INTO `your-project.your-dataset.routes_status_history`
+SELECT
+ CURRENT_TIMESTAMP() as snapshot_time,
+ selected_route_id,
+ display_name,
+ status,
+ validation_error,
+ low_road_usage_start_time,
+ route_attributes
+FROM `boston_oct_2025_sample_data.routes_status`;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds1_outlier_detection.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds1_outlier_detection.sql
new file mode 100644
index 0000000..7f99659
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds1_outlier_detection.sql
@@ -0,0 +1,71 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 1: Outlier Detection (Interquartile Range)
+-- Business Question: Which travel time records for a specific route are statistical outliers?
+-- Use Case: Automatically flags anomalous data points that could indicate extreme traffic events or potential data collection issues.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ QUALITY FILTERS:
+ 1. continuous_path: Excludes records where the geometry is not a single ST_LineString.
+ 2. length_integrity: Excludes records where actual physical length deviates by > 5%
+ from the intended 'route_length' attribute.
+*/
+
+WITH quality_filtered_history AS (
+ SELECT
+ h.selected_route_id,
+ h.record_time,
+ h.duration_in_seconds,
+ ST_LENGTH(h.route_geometry) as actual_length,
+ CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) as intended_length
+ FROM `boston_oct_2025_sample_data.historical_travel_time` h
+ JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)
+ WHERE h.selected_route_id = 'route-4202493217'
+ AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Quality filter: Only process single, continuous paths
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+ -- Quality filter: Length deviation check (< 5%)
+ AND SAFE_DIVIDE(ABS(ST_LENGTH(h.route_geometry) - CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)), CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)) < 0.05
+),
+stats AS (
+ SELECT
+ APPROX_QUANTILES(duration_in_seconds, 100)[OFFSET(25)] AS q1,
+ APPROX_QUANTILES(duration_in_seconds, 100)[OFFSET(75)] AS q3
+ FROM quality_filtered_history
+),
+outlier_thresholds AS (
+ SELECT
+ q1,
+ q3,
+ (q3 - q1) AS iqr,
+ q1 - (1.5 * (q3 - q1)) AS lower_bound,
+ q3 + (1.5 * (q3 - q1)) AS upper_bound
+ FROM stats
+)
+SELECT
+ h.record_time,
+ h.duration_in_seconds,
+ t.lower_bound,
+ t.upper_bound,
+ CASE
+ WHEN h.duration_in_seconds > t.upper_bound THEN 'High_Outlier'
+ WHEN h.duration_in_seconds < t.lower_bound THEN 'Low_Outlier'
+ END as outlier_type
+FROM quality_filtered_history h, outlier_thresholds t
+-- Filter for records outside the calculated IQR bounds
+WHERE (h.duration_in_seconds > t.upper_bound OR h.duration_in_seconds < t.lower_bound)
+ORDER BY h.record_time DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds2_similarity_clustering.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds2_similarity_clustering.sql
new file mode 100644
index 0000000..c30879c
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds2_similarity_clustering.sql
@@ -0,0 +1,70 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 2: Route Similarity Clustering (Feature-Based)
+-- Business Question: Which routes exhibit similar traffic patterns based on their average peak-hour delay ratios?
+-- Use Case: Grouping routes by behavioral similarity allows planners to apply similar mitigation strategies to entire clusters of road segments rather than analyzing each route individually.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ INTERPRETATION GUIDE:
+ Routes assigned to the same 'cluster_id' share a similar diurnal traffic profile
+ (the relationship between AM, Midday, and PM delays).
+
+ Example Interpretation:
+ - Cluster 1: Commuter Heavy (High AM/PM delay, low Midday).
+ - Cluster 2: Consistently Efficient (Delay ratio near 1.0 all day).
+ - Cluster 3: Midday Bottleneck (High Midday delay, typical AM/PM).
+*/
+
+-- Step 1: Create the K-Means model.
+-- NOTE: The source dataset (e.g., `boston_oct_2025_sample_data`) is a read-only subscription.
+-- This model MUST be created in a separate, writable dataset within your project.
+-- Replace `your-project.your-dataset` with your target location.
+
+CREATE OR REPLACE MODEL `your-project.your-dataset.route_clusters`
+OPTIONS(model_type='kmeans', num_clusters=5) AS
+SELECT
+ -- K-Means works with numerical features. We will use the delay ratios as features.
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 7 AND 9 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_am_delay,
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 12 AND 14 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_midday_delay,
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 16 AND 18 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_pm_delay
+FROM `boston_oct_2025_sample_data.historical_travel_time`
+WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+GROUP BY selected_route_id;
+
+-- Step 2: Predict the cluster for each route using the trained model.
+WITH route_features AS (
+ SELECT
+ selected_route_id,
+ display_name,
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 7 AND 9 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_am_delay,
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 12 AND 14 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_midday_delay,
+ COALESCE(AVG(CASE WHEN EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 16 AND 18 THEN SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) END), 1.0) AS avg_pm_delay
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ GROUP BY 1, 2
+)
+SELECT
+ selected_route_id,
+ display_name,
+ CENTROID_ID AS cluster_id,
+ ROUND(avg_am_delay, 2) as am_ratio,
+ ROUND(avg_midday_delay, 2) as midday_ratio,
+ ROUND(avg_pm_delay, 2) as pm_ratio
+FROM ML.PREDICT(MODEL `your-project.your-dataset.route_clusters`,
+ (SELECT * FROM route_features)
+)
+ORDER BY cluster_id, selected_route_id;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds3_feature_engineering.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds3_feature_engineering.sql
new file mode 100644
index 0000000..8ff53b2
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds3_feature_engineering.sql
@@ -0,0 +1,80 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 3: Predictive Feature Engineering (Regularized Time-Series)
+-- Business Question: How can I prepare a high-quality, gap-aware feature set for training a predictive traffic model?
+-- Use Case: Demonstrates how to regularize a time-series using a timestamp grid. This ensures that window functions (LAG, AVG) accurately reflect chronological time even when records are missing due to quality filtering or detours.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB
+
+/*
+ HANDLING MISSING DATA (DETOURS/GAPS):
+ By joining the RMI data with a generated 'time_grid', we identify missing records.
+ Downstream models can then decide how to handle these nulls (e.g., interpolation,
+ imputation, or masking), preventing window functions from 'collapsing' time gaps.
+*/
+
+WITH quality_filtered_base AS (
+ SELECT
+ -- Truncating to hour to match the RMI collection interval
+ TIMESTAMP_TRUNC(h.record_time, HOUR) as record_hour,
+ h.duration_in_seconds,
+ ST_LENGTH(h.route_geometry) as actual_length,
+ CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) as intended_length
+ FROM `boston_oct_2025_sample_data.historical_travel_time` h
+ JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)
+ WHERE h.selected_route_id = 'route-4202493217'
+ AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Quality filter: Only process single, continuous paths
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+),
+hourly_averages AS (
+ -- Aggregate to a single record per hour before regularizing
+ SELECT
+ record_hour,
+ AVG(duration_in_seconds) as avg_duration,
+ COUNT(*) as samples_in_hour
+ FROM quality_filtered_base
+ WHERE SAFE_DIVIDE(ABS(actual_length - intended_length), intended_length) < 0.05
+ GROUP BY 1
+),
+time_grid AS (
+ -- Generate a continuous hourly grid for the study period
+ SELECT hour
+ FROM UNNEST(GENERATE_TIMESTAMP_ARRAY('2025-10-01', '2025-10-31', INTERVAL 1 HOUR)) as hour
+),
+regularized_series AS (
+ SELECT
+ g.hour,
+ a.avg_duration as duration_in_seconds,
+ COALESCE(a.samples_in_hour, 0) as samples_in_hour,
+ IF(a.avg_duration IS NULL, TRUE, FALSE) as is_missing_data
+ FROM time_grid g
+ LEFT JOIN hourly_averages a ON g.hour = a.record_hour
+)
+SELECT
+ hour,
+ ROUND(duration_in_seconds, 2) as duration_in_seconds,
+ samples_in_hour,
+ is_missing_data,
+ -- Lagged features now accurately represent -1hr and -2hr regardless of data availability
+ ROUND(LAG(duration_in_seconds, 1) OVER (ORDER BY hour), 2) AS lag_1hr_duration,
+ ROUND(LAG(duration_in_seconds, 2) OVER (ORDER BY hour), 2) AS lag_2hr_duration,
+ -- Rolling average (3-hour window)
+ ROUND(AVG(duration_in_seconds) OVER (
+ ORDER BY hour
+ ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
+ ), 2) AS rolling_avg_3hr
+FROM regularized_series
+ORDER BY hour DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds4_route_integrity_audit.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds4_route_integrity_audit.sql
new file mode 100644
index 0000000..8e90023
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds4_route_integrity_audit.sql
@@ -0,0 +1,91 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 4: Route Integrity Audit (Time-Windowed)
+-- Business Question: When and for how long did specific routes experience extreme geometry deviations?
+-- Use Case: Identifies persistent "integrity incidents" rather than transient noise. By grouping consecutive failed records into windows, engineers can correlate failures with specific infrastructure changes, GPS outages, or registration updates.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ DEFINITION: Route Integrity
+ In RMI, 'Route Integrity' measures the spatial consistency between a route's
+ registered definition and its actual data collection performance.
+
+ - The Baseline: 'intended_length' (meters) provided as a custom attribute during registration.
+ - The Signal: 'actual_length' (meters) calculated from the captured ST_LineString.
+ - High Integrity: A ratio near 1.0 (actual length matches intended definition).
+ - Low Integrity: Significant deviations (> 10%) indicate detours, missing road
+ segments, or incorrect metadata registration.
+*/
+
+/*
+ ANALYTICAL PATTERN: Islands and Gaps
+ This query groups consecutive records that exceed a 10% length deviation threshold
+ into discrete failure windows.
+*/
+
+WITH base_comparison AS (
+ SELECT
+ h.selected_route_id,
+ h.display_name,
+ h.record_time,
+ ST_LENGTH(h.route_geometry) AS actual_length,
+ CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64) AS intended_length
+ FROM `boston_oct_2025_sample_data.historical_travel_time` h
+ JOIN `boston_oct_2025_sample_data.routes_status` s USING (selected_route_id)
+ WHERE s.status = 'STATUS_RUNNING'
+ AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Quality filter: Exclude non-continuous geometries
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+),
+outlier_flagging AS (
+ SELECT
+ *,
+ -- Flag if deviation exceeds 10% (actual / intended)
+ IF(intended_length IS NOT NULL AND (SAFE_DIVIDE(actual_length, intended_length) > 1.1 OR SAFE_DIVIDE(actual_length, intended_length) < 0.9), 1, 0) as is_outlier
+ FROM base_comparison
+),
+streak_identification AS (
+ SELECT
+ *,
+ -- A new streak starts if this is an outlier and the previous record (by time) wasn't
+ IF(is_outlier = 1 AND LAG(is_outlier) OVER (PARTITION BY selected_route_id ORDER BY record_time) = 0, 1,
+ IF(is_outlier = 1 AND LAG(is_outlier) OVER (PARTITION BY selected_route_id ORDER BY record_time) IS NULL, 1, 0)) as is_streak_start
+ FROM outlier_flagging
+),
+streak_grouping AS (
+ SELECT
+ *,
+ -- Cumulative sum of starts creates a unique ID for each failure window
+ SUM(is_streak_start) OVER (PARTITION BY selected_route_id ORDER BY record_time) as streak_id
+ FROM streak_identification
+ WHERE is_outlier = 1
+)
+SELECT
+ selected_route_id,
+ display_name,
+ MIN(record_time) as failure_start,
+ MAX(record_time) as failure_end,
+ COUNT(*) as consecutive_records,
+ -- Average ratio across the window: Severity of the discrepancy
+ ROUND(AVG(SAFE_DIVIDE(actual_length, intended_length)), 2) as avg_deviation_ratio,
+ -- Identify if the deviation is an over-count (likely detour) or under-count (missing segments)
+ IF(AVG(actual_length) > AVG(intended_length), 'OVER_COUNT', 'UNDER_COUNT') as failure_type
+FROM streak_grouping
+GROUP BY selected_route_id, display_name, streak_id
+-- Focus on persistent issues
+HAVING consecutive_records >= 1
+ORDER BY failure_start DESC, avg_deviation_ratio DESC
+LIMIT 50;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds5_reliability_ranking.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds5_reliability_ranking.sql
new file mode 100644
index 0000000..6646f13
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds5_reliability_ranking.sql
@@ -0,0 +1,89 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 5: Persistent Unreliability Audit (Time-Windowed)
+-- Business Question: When and for how long did specific routes experience persistent travel time spikes?
+-- Use Case: Identifies chronic congestion incidents rather than transient variance. By grouping consecutive "slow" records into windows, operators can distinguish between random noise and actionable infrastructure failures or major events.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ DEFINITION: Route Reliability vs. Route Integrity
+ - Route Integrity (DS4): Measures spatial consistency (Actual Geometry vs. Registered Definition).
+ - Route Reliability (DS5): Measures temporal performance (Actual Travel Time vs. Free-flow Baseline).
+
+ High Reliability means a route's travel time is stable and near its ideal baseline.
+ Low Reliability (this query) indicates persistent periods of 'excess delay'
+ where actual travel times significantly exceed free-flow estimates.
+*/
+
+/*
+ ANALYTICAL PATTERN: Reliability Gaps (Islands and Gaps)
+ 1. Calculate a historical baseline per route.
+ 2. Flag records where travel time exceeds a 'significant delay' threshold (e.g., 1.5x baseline).
+ 3. Group consecutive flags into discrete failure windows (streaks).
+*/
+
+WITH quality_filtered_history AS (
+ -- Standard quality filtering to ensure we analyze healthy geometries
+ SELECT
+ h.selected_route_id,
+ h.display_name,
+ h.record_time,
+ h.duration_in_seconds,
+ h.static_duration_in_seconds
+ FROM `boston_oct_2025_sample_data.historical_travel_time` h
+ JOIN `boston_oct_2025_sample_data.routes_status` s USING(selected_route_id)
+ WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+ AND SAFE_DIVIDE(ABS(ST_LENGTH(h.route_geometry) - CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)), CAST(JSON_VALUE(s.route_attributes, '$.route_length') AS FLOAT64)) < 0.05
+),
+incident_flagging AS (
+ SELECT
+ *,
+ -- Threshold: Travel time is more than 50% above the static (free-flow) baseline
+ IF(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) > 1.5, 1, 0) as is_incident
+ FROM quality_filtered_history
+),
+streak_identification AS (
+ SELECT
+ *,
+ -- Identify the start of a new consecutive incident window
+ IF(is_incident = 1 AND LAG(is_incident) OVER (PARTITION BY selected_route_id ORDER BY record_time) = 0, 1,
+ IF(is_incident = 1 AND LAG(is_incident) OVER (PARTITION BY selected_route_id ORDER BY record_time) IS NULL, 1, 0)) as is_streak_start
+ FROM incident_flagging
+),
+streak_grouping AS (
+ SELECT
+ *,
+ -- Cumulative sum of starts creates a unique ID for each incident window
+ SUM(is_streak_start) OVER (PARTITION BY selected_route_id ORDER BY record_time) as streak_id
+ FROM streak_identification
+ WHERE is_incident = 1
+)
+SELECT
+ selected_route_id,
+ display_name,
+ MIN(record_time) as incident_start,
+ MAX(record_time) as incident_end,
+ -- Total consecutive records in this incident window
+ COUNT(*) as consecutive_samples,
+ -- Average severity of the delay during this window
+ ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 2) as avg_delay_ratio
+FROM streak_grouping
+GROUP BY selected_route_id, display_name, streak_id
+-- Focus on persistent unreliability (lasting at least 3 samples)
+HAVING consecutive_samples >= 3
+ORDER BY avg_delay_ratio DESC, incident_start DESC
+LIMIT 50;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds6_travel_time_forecasting.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds6_travel_time_forecasting.sql
new file mode 100644
index 0000000..0f655de
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds6_travel_time_forecasting.sql
@@ -0,0 +1,106 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 6: Travel Time Forecasting (BigQuery ML ARIMA_PLUS)
+-- Business Question: Can we predict next week's peak travel times based on the last 21 days of history?
+-- Use Case: Demonstrates a complete predictive workflow: Training an ARIMA_PLUS model, evaluating its seasonal fit, and performing backtesting against actual results.
+-- Product Stage: GA (Uses BigQuery ML)
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ METHODOLOGY: TIME-SERIES BACKTESTING
+ To build trust in a traffic model, we use 'Backtesting'. We split our 31-day
+ sample dataset into two parts:
+ 1. Training Set (Weeks 1-3): The model 'learns' the route's diurnal and weekly rhythm.
+ 2. Validation Set (Week 4): We withhold this data from the model, then ask the
+ model to 'forecast' it. Comparing the forecast to reality gives us an
+ empirical accuracy score.
+*/
+
+/*
+ INTERPRETATION & VISUALIZATION GUIDE:
+
+ 1. REPORT INTERPRETATION:
+ - 'absolute_error': Smaller is better. Measures the magnitude of the prediction 'miss'.
+ - 'within_confidence_interval': This is your 'Anomaly Signal'.
+ - 'YES': Traffic is behaving normally/predictably.
+ - 'NO': A significant event occurred (accident, weather, gridlock) that
+ exceeded statistical expectations. This is the trigger for operational alerts.
+
+ 2. RECOMMENDED VISUALIZATIONS:
+ - Time-Series Line: Plot 'forecast_seconds' and 'actual_seconds' on the same Y-axis.
+ - Confidence Band: Plot 'lower_bound' and 'upper_bound' as a shaded area. Dots
+ (actuals) falling outside this band are your truly actionable traffic incidents.
+*/
+
+-- STEP 1: Train the ARIMA_PLUS model using a 3-week window.
+-- We use hourly aggregation (AVG) to regularize the input for the ARIMA algorithm.
+CREATE OR REPLACE MODEL `your-project.your-dataset.travel_time_forecast_model`
+OPTIONS(
+ model_type='ARIMA_PLUS',
+ time_series_timestamp_col='record_hour',
+ time_series_data_col='duration_in_seconds',
+ auto_arima=TRUE, -- Automatically finds the best P, D, Q parameters.
+ data_frequency='HOURLY',
+ clean_spikes_and_dips=TRUE -- Prevents one-off accidents from skewing the long-term trend.
+) AS
+SELECT
+ TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,
+ AVG(duration_in_seconds) as duration_in_seconds
+FROM `boston_oct_2025_sample_data.historical_travel_time`
+WHERE selected_route_id = 'route-4202493217'
+ AND record_time BETWEEN '2025-10-01' AND '2025-10-21'
+GROUP BY 1;
+
+-- STEP 2: Evaluate the model's training metrics.
+-- This returns AIC, Log Likelihood, and identified seasonal periods (e.g., DAILY).
+-- A low AIC relative to other models indicates a better fit.
+SELECT * FROM ML.EVALUATE(MODEL `your-project.your-dataset.travel_time_forecast_model`);
+
+-- STEP 3: Compare Forecast vs. Actual for the 4th week (Backtesting).
+-- We forecast a 168-hour 'horizon' (7 full days) to match the final week of October.
+WITH forecast_data AS (
+ SELECT
+ forecast_timestamp,
+ forecast_value as predicted_duration,
+ prediction_interval_lower_bound as lower_bound,
+ prediction_interval_upper_bound as upper_bound
+ FROM ML.FORECAST(MODEL `your-project.your-dataset.travel_time_forecast_model`,
+ STRUCT(168 AS horizon, 0.9 AS confidence_level))
+),
+actual_data AS (
+ -- Aggregate actual withheld data to the same hourly grid for comparison.
+ SELECT
+ TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,
+ AVG(duration_in_seconds) as actual_duration
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ WHERE selected_route_id = 'route-4202493217'
+ AND record_time BETWEEN '2025-10-22' AND '2025-10-29'
+ GROUP BY 1
+)
+SELECT
+ f.forecast_timestamp,
+ ROUND(f.predicted_duration, 1) as forecast_seconds,
+ ROUND(a.actual_duration, 1) as actual_seconds,
+ -- absolute_error: How many seconds off was the prediction?
+ ROUND(ABS(f.predicted_duration - a.actual_duration), 1) as absolute_error,
+ -- within_confidence_interval: Was reality within the 90% expected range?
+ IF(a.actual_duration BETWEEN f.lower_bound AND f.upper_bound, 'YES', 'NO') as within_confidence_interval,
+ -- Include bounds for visualization in tools like Looker Studio or Colab.
+ ROUND(f.lower_bound, 1) as lower_bound,
+ ROUND(f.upper_bound, 1) as upper_bound
+FROM forecast_data f
+LEFT JOIN actual_data a ON f.forecast_timestamp = a.record_hour
+WHERE a.actual_duration IS NOT NULL
+ORDER BY f.forecast_timestamp;
diff --git a/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds7_zero_shot_forecasting.sql b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds7_zero_shot_forecasting.sql
new file mode 100644
index 0000000..611e98b
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/data_scientist/ds7_zero_shot_forecasting.sql
@@ -0,0 +1,55 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Data Scientist Query 7: Zero-Shot Multi-Route Forecasting (TimesFM)
+-- Business Question: Can we immediately forecast next-day traffic for multiple routes without waiting to train individual models?
+-- Use Case: Demonstrates 'Zero-Shot' forecasting using Google's Time Series Foundation Model (TimesFM). Unlike ARIMA, this model uses pre-trained patterns to predict future travel times for an entire cluster of routes simultaneously, even with limited local history.
+-- Product Stage: GA (Uses AI.FORECAST with TimesFM)
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL ADVANTAGE: Foundation Models vs. Traditional Models
+ - ARIMA_PLUS (DS6): Requires 'Training' (Learning) on specific route history first.
+ - TimesFM (DS7): Uses 'Zero-Shot' inference via AI.FORECAST. It applies global
+ patterns to your data immediately. Ideal for 'Cold Start' (new routes) or
+ scaling to thousands of routes without per-route training overhead.
+*/
+
+-- STEP 1: Prepare a 'Context' window of history for multiple routes.
+-- Foundation models like TimesFM perform best with 3-7 days of chronological context.
+WITH route_context AS (
+ SELECT
+ selected_route_id,
+ TIMESTAMP_TRUNC(record_time, HOUR) as record_hour,
+ AVG(duration_in_seconds) as duration_in_seconds
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ -- We pick a 7-day context window for 3 specific routes
+ WHERE selected_route_id IN ('route-4202493217', 'route-3850158153', 'route-381361371')
+ AND record_time BETWEEN '2025-10-14' AND '2025-10-21'
+ GROUP BY 1, 2
+)
+-- STEP 2: Use AI.FORECAST to generate predictions.
+-- Note: TimesFM is a managed foundation model; no CREATE MODEL is required.
+SELECT
+ *
+FROM AI.FORECAST(
+ TABLE route_context,
+ data_col => 'duration_in_seconds',
+ timestamp_col => 'record_hour',
+ model => 'TimesFM 2.0', -- Specify the foundation model version
+ id_cols => ['selected_route_id'], -- Forecast each route independently
+ horizon => 24, -- Forecast 24 hours ahead
+ confidence_level => 0.9 -- Generate 90% confidence intervals
+)
+ORDER BY selected_route_id, forecast_timestamp;
diff --git a/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip1_usage_projection.sql b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip1_usage_projection.sql
new file mode 100644
index 0000000..25e7b97
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip1_usage_projection.sql
@@ -0,0 +1,42 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- RMI Seller Query 1: Usage Growth Projection
+-- Business Question: Based on current data, what is the rate of record creation, and how will it scale?
+-- Use Case: Helps sales teams estimate BigQuery storage and compute growth as a customer increases their monitoring footprint from a small pilot to an enterprise-wide fleet.
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB (Standard SQL on RMI Tables)
+
+WITH daily_stats AS (
+ SELECT
+ DATE(record_time) as log_date,
+ selected_route_id,
+ COUNT(*) as records_per_day
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ GROUP BY 1, 2
+),
+avg_usage AS (
+ SELECT
+ AVG(records_per_day) as avg_daily_records_per_route
+ FROM daily_stats
+)
+SELECT
+ ROUND(avg_daily_records_per_route, 2) as avg_records_per_route_per_day,
+ -- Parameter: Target fleet size (e.g., 5,000 routes)
+ 5000 as target_route_count,
+ ROUND(avg_daily_records_per_route * 5000, 0) as estimated_total_daily_records,
+ -- Extrapolate to monthly volume in millions of records
+ ROUND(avg_daily_records_per_route * 5000 * 30 / 1000000, 2) as estimated_monthly_millions
+FROM avg_usage;
diff --git a/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip2_customer_roi.sql b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip2_customer_roi.sql
new file mode 100644
index 0000000..344d43d
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip2_customer_roi.sql
@@ -0,0 +1,35 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- RMI Seller Query 2: Customer ROI (Value at Risk)
+-- Business Question: How much total time is lost to congestion across different customer service tiers?
+-- Use Case: Translates raw traffic data into "Business Value" by quantifying the potential time savings for priority routes, justifying the monitoring cost and providing a clear ROI for the customer.
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB (Standard SQL on RMI Tables)
+
+SELECT
+ JSON_EXTRACT_SCALAR(route_attributes, '$.tier') as service_tier,
+ -- Aggregate total lost time (Actual - Free-flow) converted to hours
+ ROUND(SUM(duration_in_seconds - static_duration_in_seconds) / 3600, 1) as total_delay_hours,
+ COUNT(DISTINCT h.selected_route_id) as monitored_routes,
+ -- Average performance multiplier
+ ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 2) as avg_delay_index
+FROM `boston_oct_2025_sample_data.historical_travel_time` h
+JOIN `boston_oct_2025_sample_data.routes_status` s ON h.selected_route_id = s.selected_route_id
+WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Filter for records where actual was slower than free-flow
+ AND (duration_in_seconds - static_duration_in_seconds) > 0
+GROUP BY 1
+HAVING service_tier IS NOT NULL
+ORDER BY total_delay_hours DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip3_segment_estimation.sql b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip3_segment_estimation.sql
new file mode 100644
index 0000000..be60f31
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip3_segment_estimation.sql
@@ -0,0 +1,46 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- RMI Seller Query 3: Road Segment Estimation
+-- Business Question: How many physical road segments exist in our target study area, categorized by class?
+-- Use Case: Helps sales and solution architects estimate the "Total Addressable Monitoring" footprint for a city, aiding in pricing and coverage strategy.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~1 MB (Uses BigQuery Public Dataset: Overture Maps)
+
+/*
+ EXTERNAL DEPENDENCY:
+ RMI monitoring is based on user-defined routes. To understand the underlying
+ physical scale of an area, this query joins with the Overture Maps public
+ dataset to provide a baseline count of all physical road segments.
+*/
+
+WITH target_boundary AS (
+ SELECT geometry
+ FROM `bigquery-public-data.overture_maps.division_area`
+ WHERE names.primary = 'Boston'
+ AND country = 'US'
+ AND region = 'US-MA'
+ AND class = 'land'
+)
+SELECT
+ -- Group by physical road classification (e.g., motorway, primary, local)
+ class as road_class,
+ subtype,
+ COUNT(*) as segment_count,
+ ROUND(SUM(ST_LENGTH(s.geometry)) / 1000, 2) as total_length_km
+FROM `bigquery-public-data.overture_maps.segment` s
+JOIN target_boundary b ON ST_INTERSECTS(s.geometry, b.geometry)
+WHERE s.subtype = 'road'
+GROUP BY 1, 2
+ORDER BY segment_count DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip4_area_boundary.sql b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip4_area_boundary.sql
new file mode 100644
index 0000000..659a210
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/rmi_planner/rmip4_area_boundary.sql
@@ -0,0 +1,50 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- RMI Seller Query 4: Create Reusable Area Boundary
+-- Business Question: How can I create a reusable, open-source administrative boundary for my target study area?
+-- Use Case: Establishes a "Master Boundary" for a city or region using public data. This view can then be joined with RMI tables to automate geofencing and localized reporting.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~1 MB (Uses BigQuery Public Dataset: Overture Maps)
+
+/*
+ NOTE: This query creates a persistent view of a target city's official boundary.
+ The source dataset (e.g., `boston_oct_2025_sample_data`) is read-only.
+ This view MUST be created in a separate, writable dataset within your project.
+ Replace `your-project.your-dataset` with your target location.
+*/
+
+CREATE OR REPLACE VIEW `your-project.your-dataset.target_area_boundary`
+(
+ division_id OPTIONS(description="Stable identifier for the administrative division."),
+ area_name OPTIONS(description="The primary display name (e.g. Boston)."),
+ region OPTIONS(description="The ISO state/province code (e.g. US-MA)."),
+ country OPTIONS(description="The ISO country code."),
+ geometry OPTIONS(description="The physical land boundary of the division as a GEOGRAPHY polygon.")
+)
+OPTIONS(
+ description="A reusable administrative boundary for geofencing RMI analytical assets."
+)
+AS
+SELECT
+ id AS division_id,
+ names.primary AS area_name,
+ region,
+ country,
+ geometry
+FROM `bigquery-public-data.overture_maps.division_area`
+WHERE names.primary = 'Boston'
+ AND country = 'US'
+ AND region = 'US-MA'
+ AND class = 'land';
diff --git a/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom1_peak_hour_delay.sql b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom1_peak_hour_delay.sql
new file mode 100644
index 0000000..acfe2ce
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom1_peak_hour_delay.sql
@@ -0,0 +1,53 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Traffic Operations Manager Query 1: Peak Hour Delay Analysis
+-- Business Question: What is the average travel time delay during the morning peak (7-9 AM) for the top 10 most congested routes?
+-- Use Case: Identifies critical morning commute bottlenecks to inform operational decisions or public messaging.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ ANALYTICAL PATTERN: Temporal Filtering
+ This query uses EXTRACT(HOUR...) on a converted DATETIME to focus on local
+ Boston peak windows. It filters for active routes and applies a quality
+ check to ensure the geometry is a single ST_LineString.
+*/
+
+WITH peak_hour_data AS (
+ SELECT
+ h.selected_route_id,
+ h.display_name,
+ -- delay_ratio > 1.0 indicates travel time is slower than free-flow (static)
+ SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) AS delay_ratio
+ FROM `boston_oct_2025_sample_data.historical_travel_time` AS h
+ JOIN `boston_oct_2025_sample_data.routes_status` AS s USING (selected_route_id)
+ WHERE h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- STATUS_RUNNING ensures we only analyze routes that are currently being monitored
+ AND s.status = 'STATUS_RUNNING'
+ -- AM Peak Window: 7:00 AM to 8:59 AM Local Time
+ AND EXTRACT(HOUR FROM DATETIME(h.record_time, 'America/New_York')) BETWEEN 7 AND 8
+ -- Geometry Integrity: Only process continuous, healthy paths
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+)
+SELECT
+ display_name,
+ ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,
+ COUNT(*) AS sample_count
+FROM peak_hour_data
+GROUP BY 1
+-- Threshold: Filter for routes that are at least marginally slower than free-flow
+HAVING avg_delay_ratio > 1.0
+ORDER BY avg_delay_ratio DESC
+LIMIT 10;
diff --git a/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom2_persistent_bottlenecks.sql b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom2_persistent_bottlenecks.sql
new file mode 100644
index 0000000..ddd90f2
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom2_persistent_bottlenecks.sql
@@ -0,0 +1,48 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Traffic Operations Manager Query 2: Persistent Bottlenecks (Segment-Level)
+-- Business Question: Which road segments (SRIs) have been in a 'TRAFFIC_JAM' state most frequently?
+-- Use Case: Locates recurring local bottlenecks within routes, enabling targeted infrastructure investigation or signal timing adjustments.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~250 MB (Requires UNNEST of speed_reading_intervals)
+
+/*
+ ANALYTICAL PATTERN: SRI Unnesting
+ RMI routes store segment-level traffic states (SRI) in a nested array.
+ This query 'explodes' that array using UNNEST to audit the frequency of
+ severe congestion across the entire network.
+*/
+
+WITH exploded_sris AS (
+ SELECT
+ selected_route_id,
+ display_name,
+ -- 'speed' represents the RMI traffic state for that specific interval
+ sri.speed
+ FROM `boston_oct_2025_sample_data.recent_roads_data`,
+ UNNEST(speed_reading_intervals) AS sri
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+)
+SELECT
+ selected_route_id,
+ display_name,
+ -- We count every occurrence of an interval being in a 'TRAFFIC_JAM'
+ COUNT(*) AS traffic_jam_count
+FROM exploded_sris
+-- Filter exclusively for the most severe RMI congestion state
+WHERE speed = 'TRAFFIC_JAM'
+GROUP BY 1, 2
+ORDER BY traffic_jam_count DESC
+LIMIT 10;
diff --git a/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom3_operational_health.sql b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom3_operational_health.sql
new file mode 100644
index 0000000..2467b61
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom3_operational_health.sql
@@ -0,0 +1,42 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Traffic Operations Manager Query 3: Operational Health Check
+-- Business Question: Which active routes are currently flagged with a 'LOW_ROAD_USAGE' validation error?
+-- Use Case: Monitors the reliability of data collection. Low usage flags indicate that insights for these routes may be based on fewer probes, requiring a review of route priority or placement.
+-- Product Stage: GA
+-- Estimated Bytes Processed: < 1 MB
+
+/*
+ ANALYTICAL PATTERN: Status Auditing
+ This query inspects the management plane table (routes_status) to identify
+ active routes that have quality warnings. This is critical for maintaining
+ trust in downstream traffic analytics.
+*/
+
+SELECT
+ display_name,
+ selected_route_id,
+ status,
+ validation_error,
+ -- 'low_road_usage_start_time' is specifically populated when probe density drops below threshold
+ low_road_usage_start_time,
+ -- Time elapsed since the error was first detected (relative to sample end date)
+ DATETIME_DIFF(DATETIME('2025-11-01'), DATETIME(low_road_usage_start_time, 'UTC'), DAY) AS days_in_error_state
+FROM `boston_oct_2025_sample_data.routes_status`
+-- We only care about errors on routes that are supposed to be active (STATUS_RUNNING)
+WHERE status = 'STATUS_RUNNING'
+ -- Filter specifically for the Low Road Usage warning
+ AND validation_error = 'VALIDATION_ERROR_LOW_ROAD_USAGE'
+ORDER BY days_in_error_state DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom4_data_latency.sql b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom4_data_latency.sql
new file mode 100644
index 0000000..95fc063
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom4_data_latency.sql
@@ -0,0 +1,49 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Traffic Operations Manager Query 4: Data Collection Latency
+-- Business Question: Are there any active routes that have stopped sending data near the end of the snapshot period?
+-- Use Case: Detects localized data gaps or "silent" routes in real-time, enabling operators to investigate issues before they impact reporting.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ ANALYTICAL PATTERN: Freshness Monitoring
+ By comparing the max record_time per route against the overall dataset
+ end-time, we can identify routes that have 'gone silent'.
+*/
+
+WITH last_data_arrival AS (
+ SELECT
+ selected_route_id,
+ -- Get the latest record timestamp for every route in the dataset
+ MAX(record_time) AS last_arrival
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ -- Focused partition scan for the full sample month
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ GROUP BY 1
+)
+SELECT
+ s.selected_route_id,
+ s.display_name,
+ l.last_arrival,
+ -- Measured relative to the very end of the sample dataset ('2025-11-01')
+ TIMESTAMP_DIFF(TIMESTAMP('2025-11-01 00:00:00'), l.last_arrival, MINUTE) as minutes_of_silence
+FROM `boston_oct_2025_sample_data.routes_status` s
+LEFT JOIN last_data_arrival l USING (selected_route_id)
+-- Focus on routes that are supposed to be producing data
+WHERE s.status = 'STATUS_RUNNING'
+ -- Threshold: Highlight routes that haven't sent a record in the last 2 minutes of the dataset
+ AND l.last_arrival < TIMESTAMP('2025-10-31 23:58:00')
+ORDER BY minutes_of_silence DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom5_significant_event_detection.sql b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom5_significant_event_detection.sql
new file mode 100644
index 0000000..a90db73
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/traffic_operations_manager/tom5_significant_event_detection.sql
@@ -0,0 +1,47 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Traffic Operations Manager Query 5: Significant Event Detection
+-- Business Question: Which routes experienced a travel time more than double their static baseline in the last 24 hours?
+-- Use Case: Automates the detection of extreme traffic events (accidents, severe weather, gridlock) that require immediate operational intervention.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~151 MB (Requires JOIN with routes_status)
+
+/*
+ ANALYTICAL PATTERN: Threshold-Based Alerting
+ This query identifies major traffic incidents by flagging records where the
+ actual travel time is at least 2x the free-flow baseline (static_duration).
+ It applies quality filters to ensure alerts are only triggered for single,
+ continuous paths.
+*/
+
+SELECT
+ h.display_name,
+ h.selected_route_id,
+ h.record_time,
+ h.duration_in_seconds,
+ h.static_duration_in_seconds,
+ -- Delay ratio > 2.0 means travel time is 2x slower than ideal
+ ROUND(SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds), 2) AS delay_ratio
+FROM `boston_oct_2025_sample_data.historical_travel_time` AS h
+JOIN `boston_oct_2025_sample_data.routes_status` AS s USING(selected_route_id)
+-- Filter for the final day of the sample dataset
+WHERE h.record_time BETWEEN '2025-10-30' AND '2025-11-01'
+ -- Focus on active monitoring fleet
+ AND s.status = 'STATUS_RUNNING'
+ -- Filter for "Significant" events
+ AND SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) > 2.0
+ -- Quality filter: Exclude non-continuous geometries
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+ORDER BY delay_ratio DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/urban_planner/up1_corridor_trend.sql b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up1_corridor_trend.sql
new file mode 100644
index 0000000..7123751
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up1_corridor_trend.sql
@@ -0,0 +1,46 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Urban Planner Query 1: Corridor Performance Trend
+-- Business Question: What has been the week-over-week trend in the average delay ratio for a specific corridor?
+-- Use Case: Enables long-term performance monitoring of critical transportation infrastructure, helping planners identify if congestion is worsening or improving over time.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL PATTERN: Weekly Trend Aggregation
+ This query truncates timestamps to the week level to smooth out day-to-day
+ fluctuations, focusing on the macro traffic behavior of a critical route.
+*/
+
+WITH weekly_trends AS (
+ SELECT
+ selected_route_id,
+ -- Truncate to the start of the week for consistent aggregation
+ TIMESTAMP_TRUNC(record_time, WEEK) AS week,
+ -- Calculate average delay (Actual / Free-flow baseline)
+ AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)) AS avg_delay_ratio
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ -- Filter for a specific corridor of interest (e.g., Storrow Drive)
+ WHERE selected_route_id = 'route-4202493217'
+ AND record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ GROUP BY 1, 2
+)
+SELECT
+ selected_route_id,
+ -- Format for readable year-week reporting
+ FORMAT_TIMESTAMP("%Y-%W", week) AS year_week,
+ ROUND(avg_delay_ratio, 3) AS avg_delay_ratio
+FROM weekly_trends
+ORDER BY week;
diff --git a/roads_management_insights/rmi_sample_queries/queries/urban_planner/up2_impact_analysis.sql b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up2_impact_analysis.sql
new file mode 100644
index 0000000..36cd845
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up2_impact_analysis.sql
@@ -0,0 +1,50 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Urban Planner Query 2: Before-and-After Impact Analysis
+-- Business Question: Has the average travel time on routes passing through a recent construction zone improved since the project's completion date?
+-- Use Case: Provides empirical evidence of infrastructure project success, validating whether road improvements (like new lanes or signals) actually reduced congestion.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL PATTERN: Spatial & Milestone Join
+ This query uses a DECLARE statement for the study area geometry to ensure
+ BigQuery treats the polygon as a constant, enabling efficient spatial
+ indexing during the ST_INTERSECTS join. It then segments the data based
+ on a chronological project milestone.
+*/
+
+-- Study Area: Downtown Boston Intersection
+DECLARE study_area GEOGRAPHY DEFAULT ST_GEOGFROMTEXT('POLYGON((-71.06 42.35, -71.05 42.35, -71.05 42.34, -71.06 42.34, -71.06 42.35))');
+-- Project Milestone: Date when construction was completed
+DECLARE completion_date DATE DEFAULT '2025-10-15';
+
+WITH impact_data AS (
+ SELECT
+ -- Split records into 'Before' and 'After' buckets
+ record_time >= completion_date AS is_after_completion,
+ SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) AS delay_ratio
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ -- Filter for routes that physically pass through the study zone
+ WHERE ST_INTERSECTS(route_geometry, study_area)
+ AND record_time BETWEEN '2025-10-01' AND '2025-11-01'
+)
+SELECT
+ is_after_completion,
+ ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,
+ COUNT(*) as sample_count
+FROM impact_data
+GROUP BY 1
+ORDER BY 1;
diff --git a/roads_management_insights/rmi_sample_queries/queries/urban_planner/up3_monitoring_density.sql b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up3_monitoring_density.sql
new file mode 100644
index 0000000..d6db411
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up3_monitoring_density.sql
@@ -0,0 +1,47 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Urban Planner Query 3: Traffic Monitoring Density
+-- Business Question: Which geographic areas show the highest concentration of RMI route monitoring?
+-- Use Case: Helps planners identify "blind spots" in their monitoring network or confirm that critical urban zones are sufficiently covered by RMI probes.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL PATTERN: Spatial Grid Aggregation
+ This query maps the RMI monitoring footprint by calculating route centroids
+ and grouping them into a ~1.1km grid (3 decimal places). This provides a
+ coarse-grained view of network density without high computational overhead.
+*/
+
+WITH route_centroids AS (
+ SELECT
+ selected_route_id,
+ -- Use the centroid to represent the general location of the route polyline
+ ST_CENTROID(route_geometry) as centroid
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+)
+SELECT
+ -- Grid the coordinates to a precision of ~1.1km
+ ROUND(ST_Y(centroid), 3) AS lat_grid,
+ ROUND(ST_X(centroid), 3) AS lon_grid,
+ -- Count unique route definitions in this grid cell
+ COUNT(DISTINCT selected_route_id) AS unique_routes_monitored,
+ -- Count total traffic samples captured in this grid cell
+ COUNT(*) AS total_samples_collected
+FROM route_centroids
+GROUP BY 1, 2
+ORDER BY unique_routes_monitored DESC
+LIMIT 20;
diff --git a/roads_management_insights/rmi_sample_queries/queries/urban_planner/up4_weekend_vs_weekday.sql b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up4_weekend_vs_weekday.sql
new file mode 100644
index 0000000..2c6e4e8
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up4_weekend_vs_weekday.sql
@@ -0,0 +1,50 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Urban Planner Query 4: Weekend vs. Weekday Trends
+-- Business Question: How does average travel time in the afternoon (2-5 PM) differ between weekdays and weekends?
+-- Use Case: Informs urban policy decisions like congestion pricing or off-peak transit scheduling by highlighting when road demand is most elastic.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL PATTERN: Day-Type Segmentation
+ This query uses EXTRACT(DAYOFWEEK...) to categorize records into binary
+ 'Weekday' or 'Weekend' buckets. It combines this with a peak-window filter
+ to provide a clean comparison of temporal demand shifts.
+*/
+
+WITH afternoon_stats AS (
+ SELECT
+ -- Day segmentation: 1 = Sunday, 7 = Saturday
+ CASE
+ WHEN EXTRACT(DAYOFWEEK FROM DATETIME(record_time, 'America/New_York')) IN (1, 7) THEN 'Weekend'
+ ELSE 'Weekday'
+ END AS day_type,
+ duration_in_seconds,
+ static_duration_in_seconds
+ FROM `boston_oct_2025_sample_data.historical_travel_time`
+ WHERE record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Afternoon period: 2 PM to 5 PM Local Time (Boston)
+ AND EXTRACT(HOUR FROM DATETIME(record_time, 'America/New_York')) BETWEEN 14 AND 17
+)
+SELECT
+ day_type,
+ -- Calculate Average Delay Index (Actual / Ideal)
+ ROUND(AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)), 3) AS avg_delay_ratio,
+ ROUND(AVG(duration_in_seconds), 2) AS avg_duration_seconds,
+ COUNT(*) as sample_count
+FROM afternoon_stats
+GROUP BY 1
+ORDER BY avg_delay_ratio DESC;
diff --git a/roads_management_insights/rmi_sample_queries/queries/urban_planner/up5_geofenced_congestion.sql b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up5_geofenced_congestion.sql
new file mode 100644
index 0000000..78c8b1d
--- /dev/null
+++ b/roads_management_insights/rmi_sample_queries/queries/urban_planner/up5_geofenced_congestion.sql
@@ -0,0 +1,52 @@
+-- Copyright 2026 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Urban Planner Query 5: Geofenced Congestion
+-- Business Question: Within a specific downtown polygon, which routes are currently seeing travel times more than 50% above their static baseline?
+-- Use Case: Enables targeted traffic management and demand-response strategies within high-density zones or during special events.
+-- Product Stage: GA
+-- Estimated Bytes Processed: ~150 MB
+
+/*
+ ANALYTICAL PATTERN: Spatial Geofencing
+ This query uses a DECLARE statement for the downtown polygon to ensure
+ BigQuery treats the study area as a constant, enabling efficient spatial
+ indexing during the ST_INTERSECTS join. It identifies routes that are
+ physically impacted by a specific urban zone.
+*/
+
+-- Study Area: Downtown Boston Geofence
+DECLARE downtown_zone GEOGRAPHY DEFAULT ST_GEOGFROMTEXT('POLYGON((-71.066 42.358, -71.052 42.358, -71.052 42.348, -71.066 42.348, -71.066 42.358))');
+
+WITH intersecting_routes AS (
+ SELECT
+ h.selected_route_id,
+ h.display_name,
+ SAFE_DIVIDE(h.duration_in_seconds, h.static_duration_in_seconds) AS delay_ratio
+ FROM `boston_oct_2025_sample_data.historical_travel_time` h
+ WHERE ST_INTERSECTS(h.route_geometry, downtown_zone)
+ AND h.record_time BETWEEN '2025-10-01' AND '2025-11-01'
+ -- Quality filter: Exclude non-continuous geometries
+ AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'
+)
+SELECT
+ selected_route_id,
+ display_name,
+ ROUND(AVG(delay_ratio), 3) AS avg_delay_ratio,
+ COUNT(*) as sample_count
+FROM intersecting_routes
+GROUP BY 1, 2
+-- Threshold: Filter for routes that are at least 1.5x slower than free-flow
+HAVING avg_delay_ratio > 1.5
+ORDER BY avg_delay_ratio DESC;
diff --git a/roads_management_insights/route_registration_from_csv/create_routes_in_jurisdiction.py b/roads_management_insights/route_registration_from_csv/create_routes_in_jurisdiction.py
index 94ba2d6..ac09f8a 100644
--- a/roads_management_insights/route_registration_from_csv/create_routes_in_jurisdiction.py
+++ b/roads_management_insights/route_registration_from_csv/create_routes_in_jurisdiction.py
@@ -42,6 +42,9 @@ class APIRequestError(Exception):
"""Custom exception for API request failures."""
pass
+# --- Global Variables ---
+LOG_FILE = "route_creator_log.txt"
+
# --- Logging Function ---
def write_log(message):
"""Writes a message to the log file with a timestamp."""
diff --git a/roads_management_insights/route_registration_from_csv/route_creator_log.txt b/roads_management_insights/route_registration_from_csv/route_creator_log.txt
new file mode 100644
index 0000000..14e4da7
--- /dev/null
+++ b/roads_management_insights/route_registration_from_csv/route_creator_log.txt
@@ -0,0 +1,35 @@
+[2026-04-09 09:48:13] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:15] Successfully fetched gcloud access token.
+[2026-04-09 09:48:15] Attempting to create route: route-salt-lake-city-1 with Origin: (42.34077361, -71.05673485), Dest: (42.34111504, -71.05632465)
+[2026-04-09 09:48:15] Successfully created route: route-salt-lake-city-1. Status: 200
+[2026-04-09 09:48:15] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:17] Successfully fetched gcloud access token.
+[2026-04-09 09:48:17] Attempting to create route: route-salt-lake-city-2 with Origin: (42.34111504, -71.05632465), Dest: (42.34145518, -71.05593804)
+[2026-04-09 09:48:18] Successfully created route: route-salt-lake-city-2. Status: 200
+[2026-04-09 09:48:19] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:20] Successfully fetched gcloud access token.
+[2026-04-09 09:48:20] Attempting to create route: route-salt-lake-city-3 with Origin: (42.34145518, -71.05593804), Dest: (42.34182396, -71.05550337)
+[2026-04-09 09:48:21] Successfully created route: route-salt-lake-city-3. Status: 200
+[2026-04-09 09:48:21] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:23] Successfully fetched gcloud access token.
+[2026-04-09 09:48:23] Attempting to create route: route-salt-lake-city-4 with Origin: (42.34182396, -71.05550337), Dest: (42.34222753, -71.05501944)
+[2026-04-09 09:48:23] Successfully created route: route-salt-lake-city-4. Status: 200
+[2026-04-09 09:48:23] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:25] Successfully fetched gcloud access token.
+[2026-04-09 09:48:25] Attempting to create route: route-salt-lake-city-5 with Origin: (42.34222753, -71.05501944), Dest: (42.3425956, -71.05457945)
+[2026-04-09 09:48:25] Successfully created route: route-salt-lake-city-5. Status: 200
+[2026-04-09 09:48:26] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:27] Successfully fetched gcloud access token.
+[2026-04-09 09:48:27] Attempting to create route: route-salt-lake-city-6 with Origin: (42.3425956, -71.05457945), Dest: (42.34285169, -71.05427918)
+[2026-04-09 09:48:28] Successfully created route: route-salt-lake-city-6. Status: 200
+[2026-04-09 09:48:28] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:29] Successfully fetched gcloud access token.
+[2026-04-09 09:48:29] Attempting to create route: route-salt-lake-city-7 with Origin: (42.34285169, -71.05427918), Dest: (42.34337016, -71.05370703)
+[2026-04-09 09:48:30] Successfully created route: route-salt-lake-city-7. Status: 200
+[2026-04-09 09:48:30] Attempting to fetch gcloud access token...
+[2026-04-09 09:48:32] Successfully fetched gcloud access token.
+[2026-04-09 09:48:32] Attempting to create route: route-salt-lake-city-8 with Origin: (42.34872699, -71.04974932), Dest: (42.34907307, -71.04947981)
+[2026-04-09 09:48:32] Successfully created route: route-salt-lake-city-8. Status: 200
+[2026-04-09 09:48:32] Route Creator Script finished.
+[2026-04-09 09:48:32] Total entries processed: 8 (out of 8 available).
+[2026-04-09 09:48:32] Total routes successfully created: 8.
diff --git a/roads_management_insights/route_registration_tool_script/.gitignore b/roads_management_insights/route_registration_tool_script/.gitignore
new file mode 100644
index 0000000..48a503e
--- /dev/null
+++ b/roads_management_insights/route_registration_tool_script/.gitignore
@@ -0,0 +1,3 @@
+*.json
+!base_export.json
+!sample_routes.geojson
diff --git a/roads_management_insights/route_registration_tool_script/README.md b/roads_management_insights/route_registration_tool_script/README.md
new file mode 100644
index 0000000..c13d8d9
--- /dev/null
+++ b/roads_management_insights/route_registration_tool_script/README.md
@@ -0,0 +1,42 @@
+# Route Registration Export Tool
+
+This tool manages RMI Project Export JSON files by merging new routes from GeoJSON data.
+
+## Overview
+
+The tool reads a GeoJSON file containing route geometries (LineStrings), parses the features, and either generates a new RMI project export JSON or updates an existing one. It automatically handles:
+- Coordinate extraction from GeoJSON.
+- Polyline encoding for the Google Roads API.
+- Bounding box and center point calculation.
+- Merging with existing export files.
+- Writing output as zipped `.zip`.
+
+## Files
+
+- `main.py`: The main Python script that performs the conversion and merging.
+- `config.yaml`: Configuration file for project metadata, file paths, and route settings.
+- `sample_input.geojson`: A sample GeoJSON input file with redacted real-world geometries.
+- `sample_project.json`: A sample RMI project export file (redacted version of the original Boston export).
+
+## Prerequisites
+
+- Python 3.x
+- `PyYAML` library
+- `pyproj` library
+
+To install dependencies:
+```bash
+pip install PyYAML pyproj
+```
+
+## Usage
+
+1. Configure file paths (and optional settings) in `config.yaml`.
+2. (Optional) Set `base_export_file` to an existing export ZIP to merge new routes into it. The `project` section is taken from that file; use `project_info` only for fields you want to override.
+3. Run the script:
+
+```bash
+python3 main.py config.yaml
+```
+
+The script will generate or update the JSON file as specified in the `output_export_file` path of your configuration.
diff --git a/roads_management_insights/route_registration_tool_script/config.yaml b/roads_management_insights/route_registration_tool_script/config.yaml
new file mode 100644
index 0000000..fa570ec
--- /dev/null
+++ b/roads_management_insights/route_registration_tool_script/config.yaml
@@ -0,0 +1,49 @@
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Configuration for generating/updating the RMI Export JSON from GeoJSON
+#
+# When paths.base_export_file points to an existing export, the project block is
+# loaded from that file. project_info is optional: list only fields you want to override.
+# (tag applies to new routes only, not the project record.)
+#
+# When there is no base file, project_info populates the new project (defaults apply for
+# omitted keys). Example overrides: tag, project_name, dataset_name, viewstate, etc.
+project_info: {}
+# project_info:
+# id: 1
+# project_name: "sample-project"
+# google_cloud_project_id: "redacted-project-id"
+# google_cloud_project_number: "1234567890"
+# subscription_id: "redacted-subscription-id"
+# dataset_name: "historical_roads_data"
+# tag: "sample-tag"
+# # The jurisdiction boundary in GeoJSON format (as a string or object)
+# jurisdiction_boundary_geojson: '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"coordinates":[[[-71.0951,42.3130],[-71.0941,42.3122],[-71.0936,42.3105],[-71.0951,42.3130]]],"type":"Polygon"}}]}'
+# viewstate: '{"center": {"lat": 42.3125, "lng": -71.0802}, "zoom": 15}'
+# map_snapshot: ""
+
+paths:
+ # Path to the route input. Supports .geojson or .zip (first .geojson inside ZIP is used)
+ input_geojson_file: "sample_input.geojson"
+ # (Optional) Path to a base export file to merge routes into (.zip only).
+ # If commented out or empty, a new project JSON will be created from project_info.
+ base_export_file: "project.zip"
+ # Output path (.zip only). The export JSON is written inside the ZIP.
+ output_export_file: "output_project.zip"
+
+route_settings:
+ route_type: "imported"
+ sync_status: "unsynced"
+ is_enabled: 1
diff --git a/roads_management_insights/route_registration_tool_script/main.py b/roads_management_insights/route_registration_tool_script/main.py
new file mode 100644
index 0000000..739fcb1
--- /dev/null
+++ b/roads_management_insights/route_registration_tool_script/main.py
@@ -0,0 +1,318 @@
+# Copyright 2026 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+Route Registration Export Tool
+
+A utility script to convert a GeoJSON file (extracted from the Route Registration Tool)
+into an RMI project export JSON format.
+"""
+
+import json
+import uuid
+import yaml
+import sys
+import os
+import logging
+import zipfile
+from datetime import datetime
+from typing import List, Tuple, Dict, Any, Optional
+from pyproj import Geod
+
+# --- Configuration & Logging ---
+logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(message)s')
+logger = logging.getLogger(__name__)
+
+def encode_polyline(points: List[Tuple[float, float]]) -> str:
+ """Encodes a list of (lat, lng) coordinates into a Google Polyline string."""
+ res = ""
+ last_lat = 0
+ last_lng = 0
+ for lat, lng in points:
+ lat_int = int(round(lat * 1e5))
+ lng_int = int(round(lng * 1e5))
+ d_lat = lat_int - last_lat
+ d_lng = lng_int - last_lng
+ for val in [d_lat, d_lng]:
+ val = ~(val << 1) if val < 0 else (val << 1)
+ while val >= 0x20:
+ res += chr((0x20 | (val & 0x1f)) + 63)
+ val >>= 5
+ res += chr(val + 63)
+ last_lat = lat_int
+ last_lng = lng_int
+ return res
+
+
+_WGS84_GEOD = Geod(ellps="WGS84")
+
+
+def _polyline_length_km(points: List[Tuple[float, float]]) -> float:
+ """Returns total geodesic polyline length in kilometers using pyproj."""
+ if len(points) < 2:
+ return 0.0
+ lats = [lat for lat, _ in points]
+ lngs = [lng for _, lng in points]
+ return _WGS84_GEOD.line_length(lngs, lats) / 1000.0
+
+
+def _load_geojson_data(geojson_path: str) -> Dict[str, Any]:
+ """Loads GeoJSON from a .geojson file or from a .zip archive."""
+ if not os.path.exists(geojson_path):
+ logger.error(f"GeoJSON file not found: {geojson_path}")
+ sys.exit(1)
+
+ lower_path = geojson_path.lower()
+ try:
+ if lower_path.endswith(".zip"):
+ with zipfile.ZipFile(geojson_path, "r") as zf:
+ members = [
+ name for name in zf.namelist()
+ if not name.endswith("/") and name.lower().endswith(".geojson")
+ ]
+ if not members:
+ logger.error(
+ "Input ZIP does not contain a .geojson file: %s",
+ geojson_path,
+ )
+ sys.exit(1)
+ selected = members[0]
+ logger.info("Reading GeoJSON from ZIP member: %s", selected)
+ with zf.open(selected) as f:
+ return json.load(f)
+ if lower_path.endswith(".geojson"):
+ with open(geojson_path, "r") as f:
+ return json.load(f)
+ logger.error("Unsupported input file format (use .geojson or .zip): %s", geojson_path)
+ sys.exit(1)
+ except Exception as e:
+ logger.error(f"Failed to load GeoJSON: {e}")
+ sys.exit(1)
+
+
+def _save_export_data(output_path: str, export_data: Dict[str, Any]) -> None:
+ """Saves export JSON inside a ZIP file."""
+ lower_path = output_path.lower()
+ if not lower_path.endswith(".zip"):
+ logger.error("Unsupported output format (use .zip): %s", output_path)
+ sys.exit(1)
+
+ inner_name = f"{os.path.splitext(os.path.basename(output_path))[0]}.json"
+ payload = json.dumps(export_data, indent=4).encode("utf-8")
+ with zipfile.ZipFile(output_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
+ zf.writestr(inner_name, payload)
+ logger.info("Wrote export JSON to ZIP member: %s", inner_name)
+
+
+def _load_export_data(base_export_path: str) -> Dict[str, Any]:
+ """Loads export JSON from a .zip archive."""
+ lower_path = base_export_path.lower()
+ if not lower_path.endswith(".zip"):
+ logger.error("Unsupported base export format (use .zip): %s", base_export_path)
+ sys.exit(1)
+
+ try:
+ with zipfile.ZipFile(base_export_path, "r") as zf:
+ members = [
+ name for name in zf.namelist()
+ if not name.endswith("/") and name.lower().endswith(".json")
+ ]
+ if not members:
+ logger.error(
+ "Base export ZIP does not contain a .json file: %s",
+ base_export_path,
+ )
+ sys.exit(1)
+ selected = members[0]
+ logger.info("Reading base export from ZIP member: %s", selected)
+ with zf.open(selected) as f:
+ return json.load(f)
+ except Exception as e:
+ logger.error("Failed to load base export: %s", e)
+ sys.exit(1)
+
+
+def process_geojson_to_routes(geojson_path: str, project_id: int, tag: str, route_set: Dict[str, Any]) -> List[Dict[str, Any]]:
+ """Parses GeoJSON features and converts them to RMI route entries."""
+ geojson_data = _load_geojson_data(geojson_path)
+
+ routes = []
+ features = geojson_data.get('features', [])
+ logger.info(f"Found {len(features)} features in GeoJSON.")
+
+ for feat in features:
+ geom = feat.get('geometry', {})
+ props = feat.get('properties', {})
+
+ if geom.get('type') != 'LineString':
+ logger.warning(f"Skipping non-LineString feature: {geom.get('type')}")
+ continue
+
+ # GeoJSON is [lng, lat] -> convert to [lat, lng]
+ points = [(p[1], p[0]) for p in geom.get('coordinates', [])]
+ if not points:
+ continue
+
+ start_lat, start_lng = points[0]
+ end_lat, end_lng = points[-1]
+ waypoints = points[1:-1] if len(points) > 2 else None
+
+ center_lat = sum(p[0] for p in points) / len(points)
+ center_lng = sum(p[1] for p in points) / len(points)
+
+ route_entry = {
+ # Always generate fresh UUIDs for imported routes (ignore input UUID).
+ "uuid": str(uuid.uuid4()),
+ "project_id": project_id,
+ "route_name": props.get('name', f"route-{uuid.uuid4().hex[:8]}"),
+ "origin": json.dumps({"lat": start_lat, "lng": start_lng}),
+ "destination": json.dumps({"lat": end_lat, "lng": end_lng}),
+ "waypoints": json.dumps([[p[1], p[0]] for p in waypoints]) if waypoints else None,
+ "center": json.dumps({"lat": center_lat, "lng": center_lng}),
+ "encoded_polyline": encode_polyline(points),
+ # Route type is fixed for imported registrations.
+ "route_type": "drawn",
+ # Always calculate length from geometry; input length is ignored.
+ "length": _polyline_length_km(points),
+ "parent_route_id": None,
+ "has_children": 0,
+ "is_segmented": 0,
+ "segmentation_type": None,
+ "segmentation_points": None,
+ "segmentation_config": None,
+ # Sync status is fixed for imported registrations.
+ "sync_status": "unsynced",
+ "is_enabled": route_set.get('is_enabled', 1),
+ "created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
+ "updated_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
+ "deleted_at": None,
+ "tag": props.get('tag', tag),
+ "start_lat": start_lat,
+ "start_lng": start_lng,
+ "end_lat": end_lat,
+ "end_lng": end_lng,
+ "min_lat": min(p[0] for p in points),
+ "max_lat": max(p[0] for p in points),
+ "min_lng": min(p[1] for p in points),
+ "max_lng": max(p[1] for p in points),
+ "latest_data_update_time": None,
+ "static_duration_seconds": None,
+ "current_duration_seconds": None,
+ "routes_status": None,
+ "synced_at": None,
+ "original_route_geo_json": None,
+ "match_percentage": None,
+ "temp_geometry": None,
+ "validation_status": None,
+ "traffic_status": None,
+ "segment_order": None
+ }
+ routes.append(route_entry)
+
+ return routes
+
+
+# Keys allowed under project_info in YAML that apply to routes only, not export project.*
+_PROJECT_INFO_NON_PROJECT_KEYS = frozenset({"tag"})
+
+
+def _merge_project_overrides(project: Dict[str, Any], p_info: Dict[str, Any]) -> None:
+ """Apply project_info keys onto export project; skip route-only keys like tag."""
+ for key, val in p_info.items():
+ if key in _PROJECT_INFO_NON_PROJECT_KEYS:
+ continue
+ project[key] = val
+
+
+def _default_route_tag(export_data: Dict[str, Any], p_info: Dict[str, Any]) -> str:
+ """Tag for new routes: config override, else first existing route, else 'default'."""
+ if "tag" in p_info and p_info["tag"] is not None:
+ return str(p_info["tag"])
+ for route in export_data.get("routes") or []:
+ t = route.get("tag")
+ if t:
+ return str(t)
+ return "default"
+
+
+def main(config_path: str):
+ """Main execution entry point."""
+ if not os.path.exists(config_path):
+ logger.error(f"Configuration file not found: {config_path}")
+ sys.exit(1)
+
+ with open(config_path, 'r') as f:
+ config = yaml.safe_load(f)
+
+ paths = config.get('paths', {})
+ p_info = config.get('project_info') or {}
+ route_set = config.get('route_settings', {})
+
+ geojson_path = paths.get('input_geojson_file')
+ base_json_path = paths.get('base_export_file') or paths.get('base_export_json_file')
+ output_json_path = paths.get('output_export_file') or paths.get('output_export_json_file')
+
+ if not all([geojson_path, output_json_path]):
+ logger.error("Missing required paths in config.yaml")
+ sys.exit(1)
+
+ # Initialize or Load Export Data
+ if base_json_path and os.path.exists(base_json_path):
+ logger.info(f"Loading base export: {base_json_path}")
+ export_data = _load_export_data(base_json_path)
+ # Project metadata comes entirely from the base file; project_info only overrides
+ # keys you list (omit project_info or use {} to keep the base project unchanged).
+ if p_info:
+ proj = export_data.setdefault("project", {})
+ _merge_project_overrides(proj, p_info)
+ applied = sorted(k for k in p_info if k not in _PROJECT_INFO_NON_PROJECT_KEYS)
+ if applied:
+ logger.info("Applied project_info overrides: %s", ", ".join(applied))
+ else:
+ logger.info("Generating new project structure from config.")
+ export_data = {
+ "project": {
+ "id": p_info.get('id', 1),
+ "project_name": p_info.get('project_name', 'sample-project'),
+ "jurisdiction_boundary_geojson": p_info.get('jurisdiction_boundary_geojson', '{}'),
+ "google_cloud_project_id": p_info.get('google_cloud_project_id', ''),
+ "google_cloud_project_number": p_info.get('google_cloud_project_number', ''),
+ "subscription_id": p_info.get('subscription_id', ''),
+ "dataset_name": p_info.get('dataset_name', 'historical_roads_data'),
+ "viewstate": p_info.get('viewstate', '{}'),
+ "map_snapshot": p_info.get("map_snapshot", "")
+ },
+ "routes": []
+ }
+
+ project_id = export_data['project'].get('id', 1)
+ tag = _default_route_tag(export_data, p_info)
+
+ # Extract routes from GeoJSON
+ logger.info(f"Processing routes from: {geojson_path}")
+ new_routes = process_geojson_to_routes(geojson_path, project_id, tag, route_set)
+
+ # Merge (append if base exists, otherwise replace)
+ export_data['routes'].extend(new_routes)
+ logger.info(f"Merged {len(new_routes)} new routes. Total: {len(export_data['routes'])}")
+
+ # Save
+ _save_export_data(output_json_path, export_data)
+ logger.info(f"Successfully saved export JSON to: {output_json_path}")
+
+if __name__ == "__main__":
+ config_file = "config.yaml"
+ if len(sys.argv) > 1:
+ config_file = sys.argv[1]
+ main(config_file)
diff --git a/roads_management_insights/route_registration_tool_script/sample_input.geojson b/roads_management_insights/route_registration_tool_script/sample_input.geojson
new file mode 100644
index 0000000..0dc7fc1
--- /dev/null
+++ b/roads_management_insights/route_registration_tool_script/sample_input.geojson
@@ -0,0 +1,36 @@
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [-71.08190, 42.31489],
+ [-71.08170, 42.31440],
+ [-71.08090, 42.31357],
+ [-71.07986, 42.31394],
+ [-71.08142, 42.31385]
+ ]
+ },
+ "properties": {
+ "name": "sample-route-1",
+ "tag": "sample-tag"
+ }
+ },
+ {
+ "type": "Feature",
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [-71.08352, 42.31469],
+ [-71.08326, 42.31535]
+ ]
+ },
+ "properties": {
+ "name": "sample-route-2",
+ "tag": "sample-tag"
+ }
+ }
+ ]
+}
diff --git a/roads_management_insights/tutorials/01_project_setup.ipynb b/roads_management_insights/tutorials/01_project_setup.ipynb
new file mode 100644
index 0000000..d32a436
--- /dev/null
+++ b/roads_management_insights/tutorials/01_project_setup.ipynb
@@ -0,0 +1,274 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "metadata": {
+ "cell_style": "center"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License.\n"
+ ],
+ "execution_count": null
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Tutorial 01: Cloud Project Setup & API Verification\n",
+ "\n",
+ "Welcome to the first module of the Roads Management Insights (RMI) tutorial series. This guide uses the `gcloud` CLI directly to initialize your environment.\n",
+ "\n",
+ "### Objectives:\n",
+ "1. **Authenticate** with Google Cloud.\n",
+ "2. **Set** your target project.\n",
+ "3. **Identify** your Project Number.\n",
+ "4. **Enable** the RMI service.\n",
+ "5. **Manage** IAM permissions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/01_project_setup.ipynb) \n",
+ "[](https://console.cloud.google.com/vertex-ai/colab/import/https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F01_project_setup.ipynb) \n",
+ "[](https://console.cloud.google.com/bigquery/import?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F01_project_setup.ipynb) \n",
+ "[](https://github.com/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/01_project_setup.ipynb)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Authentication\n",
+ "Run the appropriate cell below depending on your environment."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Environment A: Google Colab\n",
+ "Use this if you are running this notebook in your browser via colab.research.google.com."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "auth.authenticate_user()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Environment B: Local Machine (Jupyter)\n",
+ "Use this if you are running this notebook locally. Follow the interactive prompts to login."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud auth application-default login"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. Project Configuration\n",
+ "Set your target Google Cloud Project ID. Replace `YOUR_PROJECT_ID` with your actual ID."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud config set project YOUR_PROJECT_ID"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Identify Project Number\n",
+ "The RMI team requires your **numeric Project Number** for provisioning. The following command retrieves it automatically for the active project."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4. Enable RMI API\n",
+ "Enable the `roads.googleapis.com` service in your project."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud services enable roads.googleapis.com"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. IAM Permission Management\n",
+ "RMI requires specific roles for road selection and monitoring. \n",
+ "\n",
+ "### Understanding RMI Roles\n",
+ "Run the cells below to see the specific technical permissions included in each role. This is particularly useful for developers who need to create **Custom IAM Roles** to meet strict organizational security policies. For more information on custom roles, see the [official Cloud documentation](https://cloud.google.com/iam/docs/creating-custom-roles)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Describe the Admin Role\n",
+ "!gcloud iam roles describe roles/roads.roadsSelectionAdmin --format='json(includedPermissions)'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Describe the Viewer Role\n",
+ "!gcloud iam roles describe roles/roads.roadsSelectionViewer --format='json(includedPermissions)'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Current Permissions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud projects get-iam-policy $(gcloud config get-value project) \\\n",
+ " --flatten=\"bindings[].members\" \\\n",
+ " --format=\"table(bindings.role)\" \\\n",
+ " --filter=\"bindings.members:$(gcloud config get-value account) AND (bindings.role:roles/roads.roadsSelectionAdmin OR bindings.role:roles/roads.roadsSelectionViewer)\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Grant RMI Role to a User\n",
+ "Update the variables in the block below to grant permissions to a team member."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "MEMBER_EMAIL=\"user@example.com\"\n",
+ "ROLE=\"roles/roads.roadsSelectionAdmin\"\n",
+ "\n",
+ "gcloud projects add-iam-policy-binding $(gcloud config get-value project) \\\n",
+ " --member=\"user:${MEMBER_EMAIL}\" \\\n",
+ " --role=\"${ROLE}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Grant RMI Role to a Service Account\n",
+ "Update the variables below for automation identities."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "SA_EMAIL=\"service-account@PROJECT_ID.iam.gserviceaccount.com\"\n",
+ "ROLE=\"roles/roads.roadsSelectionAdmin\"\n",
+ "\n",
+ "gcloud projects add-iam-policy-binding $(gcloud config get-value project) \\\n",
+ " --member=\"serviceAccount:${SA_EMAIL}\" \\\n",
+ " --role=\"${ROLE}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Summary & Next Steps\n",
+ "You have successfully initialized your project and verified your technical permissions using the `gcloud` CLI. \n",
+ "\n",
+ "**Next**: Proceed to the next tutorial to set up your first monitored route and begin receiving traffic insights."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "**For more advanced RMI query patterns, visit the official [RMI Sample Queries Repository](https://github.com/googlemaps-samples/insights-samples/tree/main/roads_management_insights/rmi_sample_queries).**"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python",
+ "version": "3.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
\ No newline at end of file
diff --git a/roads_management_insights/tutorials/02_route_setting.ipynb b/roads_management_insights/tutorials/02_route_setting.ipynb
new file mode 100644
index 0000000..99a6b26
--- /dev/null
+++ b/roads_management_insights/tutorials/02_route_setting.ipynb
@@ -0,0 +1,251 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cell_style": "center"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Tutorial 02: Simple Route Setting\n",
+ "\n",
+ "Now that your project is set up and the API is enabled, let's register your first monitored road segment using the **Roads Selection API**.\n",
+ "\n",
+ "### Objectives:\n",
+ "1. **Define** a monitoring segment (Origin/Destination).\n",
+ "2. **Construct** an RMI-compliant JSON payload.\n",
+ "3. **Register** the route via a REST API call.\n",
+ "4. **Verify** the route status."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/02_route_setting.ipynb) \n",
+ "[](https://console.cloud.google.com/vertex-ai/colab/import/https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F02_route_setting.ipynb) \n",
+ "[](https://console.cloud.google.com/bigquery/import?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F02_route_setting.ipynb) \n",
+ "[](https://github.com/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/02_route_setting.ipynb)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Install necessary libraries\n",
+ "!pip install --upgrade requests google-auth"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import requests\n",
+ "import json\n",
+ "import google.auth\n",
+ "import google.auth.transport.requests\n",
+ "from google.colab import auth\n",
+ "\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "PROJECT_ID = 'YOUR_PROJECT_ID' # @param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!gcloud config set project {PROJECT_ID}\n",
+ "!gcloud config list"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Define the Route\n",
+ "We will define a simple **Origin/Destination (O/D)** dynamic route. \n",
+ "\n",
+ "### Why use O/D Only?\n",
+ "The O/D-only strategy is the simplest way to define a monitoring segment. By providing only the start and end points, you allow RMI to automatically calculate the optimal path between them based on the underlying road network.\n",
+ "\n",
+ "**This strategy is best for:**\n",
+ "- **Transit Monitoring**: Defining segments between consecutive bus stops or train stations.\n",
+ "- **Standard Corridors**: Short road segments where the physical path is unambiguous.\n",
+ "- **Rapid Prototyping**: Quickly setting up a large number of segments without needing precise waypoint traces.\n",
+ "\n",
+ "If you wish to influence the path selection (e.g., to bias the route toward specific segments), you would instead provide a list of **intermediate waypoints** (up to 25). Note that intermediates act as hints and do not strictly enforce a specific lane or microscopic path."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ROUTE_ID = 'tutorial-route-001' # No underscores allowed!\n",
+ "DISPLAY_NAME = 'Tutorial Prototype Route'\n",
+ "\n",
+ "# Example: Coordinates for a segment in Boston\n",
+ "ORIGIN = {\"latitude\": 42.3601, \"longitude\": -71.0589}\n",
+ "DESTINATION = {\"latitude\": 42.3611, \"longitude\": -71.0579}\n",
+ "\n",
+ "payload = {\n",
+ " \"displayName\": DISPLAY_NAME,\n",
+ " \"dynamicRoute\": {\n",
+ " \"origin\": ORIGIN,\n",
+ " \"destination\": DESTINATION,\n",
+ " \"intermediates\": []\n",
+ " },\n",
+ " \"routeAttributes\": {\n",
+ " \"use_case\": \"prototype\",\n",
+ " \"tutorial_id\": \"02\"\n",
+ " }\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. Register the Route\n",
+ "We use an authenticated POST request to the Roads Selection API. For detailed specifications, refer to the [official guide on selecting roads](https://developers.google.com/maps/documentation/roads-management-insights/roads-selection/create) and the [REST API reference for route creation](https://developers.google.com/maps/documentation/roads-management-insights/reference/rest/v1/selection.v1.projects.selectedRoutes/create)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Get Access Token\n",
+ "creds, _ = google.auth.default(scopes=['https://www.googleapis.com/auth/cloud-platform'])\n",
+ "auth_req = google.auth.transport.requests.Request()\n",
+ "creds.refresh(auth_req)\n",
+ "\n",
+ "ROADS_SELECTION_BASE_URL=\"https://roads.googleapis.com/selection/v1\"\n",
+ "\n",
+ "url = f\"{ROADS_SELECTION_BASE_URL}/projects/{PROJECT_ID}/selectedRoutes?selectedRouteId={ROUTE_ID}\"\n",
+ "headers = {\n",
+ " \"Content-Type\": \"application/json\",\n",
+ " \"Authorization\": f\"Bearer {creds.token}\",\n",
+ " \"x-goog-user-project\": f\"{PROJECT_ID}\"\n",
+ "}\n",
+ "\n",
+ "response = requests.post(url, headers=headers, json=payload)\n",
+ "\n",
+ "if response.status_code == 200:\n",
+ " print(\"Success! Route registered.\")\n",
+ " print(json.dumps(response.json(), indent=2))\n",
+ "else:\n",
+ " print(f\"Error {response.status_code}: {response.text}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Monitor Route Status (Polling)\n",
+ "Once registered, a route initially enters the `STATE_VALIDATING` phase. RMI performs internal geometry checks and verifies road usage. The cell below uses the [Get SelectedRoute REST method](https://developers.google.com/maps/documentation/roads-management-insights/reference/rest/v1/selection.v1.projects.selectedRoutes/get) to poll the API until the state changes to `STATE_RUNNING` or `STATE_INVALID`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import time\n",
+ "\n",
+ "get_url = f\"{ROADS_SELECTION_BASE_URL}/projects/{PROJECT_ID}/selectedRoutes/{ROUTE_ID}\"\n",
+ "status = \"STATE_VALIDATING\"\n",
+ "max_retries = 10\n",
+ "retry_count = 0\n",
+ "\n",
+ "print(f\"Polling status for {ROUTE_ID}...\")\n",
+ "\n",
+ "while status == \"STATE_VALIDATING\" and retry_count < max_retries:\n",
+ " response = requests.get(get_url, headers=headers)\n",
+ " if response.status_code == 200:\n",
+ " data = response.json()\n",
+ " status = data.get('state', 'UNKNOWN')\n",
+ " validation_error = data.get('validationError', 'None')\n",
+ " \n",
+ " print(f\" - Current State: {status} (Validation Error: {validation_error})\")\n",
+ " \n",
+ " if status != \"STATE_VALIDATING\":\n",
+ " break\n",
+ " else:\n",
+ " print(f\"Error {response.status_code}: {response.text}\")\n",
+ " break\n",
+ " \n",
+ " retry_count += 1\n",
+ " time.sleep(30) # Poll every 30 seconds\n",
+ "\n",
+ "if status == \"STATE_RUNNING\":\n",
+ " print(\"\\nSuccess! Your route is now active and monitoring traffic.\")\n",
+ "elif status == \"STATE_INVALID\":\n",
+ " print(f\"\\nRoute is INVALID. Reason: {validation_error}\")\n",
+ "else:\n",
+ " print(\"\\nPolling timed out or encountered an error.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Summary & Next Steps\n",
+ "You have successfully registered your first monitored route. RMI will now begin validating the geometry and traffic volumes.\n",
+ "\n",
+ "**Next**: In the next tutorial, we will verify how the data flows into BigQuery once the route is active."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "**For more advanced RMI query patterns, visit the official [RMI Sample Queries Repository](https://github.com/googlemaps-samples/insights-samples/tree/main/roads_management_insights/rmi_sample_queries).**"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python",
+ "version": "3.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/roads_management_insights/tutorials/03_bq_verification.ipynb b/roads_management_insights/tutorials/03_bq_verification.ipynb
new file mode 100644
index 0000000..440d60e
--- /dev/null
+++ b/roads_management_insights/tutorials/03_bq_verification.ipynb
@@ -0,0 +1,336 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "metadata": {
+ "cell_style": "center"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License.\n"
+ ],
+ "execution_count": null
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Tutorial 03: BigQuery Data Verification\n",
+ "\n",
+ "Once your routes are active and historical data begins to accumulate, you can access this information directly in BigQuery via your **Linked Dataset**.\n",
+ "\n",
+ "### Objectives:\n",
+ "1. **Locate** your RMI linked dataset.\n",
+ "2. **Verify** your registered routes in the `routes_status` table.\n",
+ "3. **Query** historical traffic data using BigQuery magics.\n",
+ "4. **Analyze** performance metrics like the Travel Time Index (TTI)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/03_bq_verification.ipynb) \n",
+ "[](https://console.cloud.google.com/vertex-ai/colab/import/https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F03_bq_verification.ipynb) \n",
+ "[](https://console.cloud.google.com/bigquery/import?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F03_bq_verification.ipynb) \n",
+ "[](https://github.com/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/03_bq_verification.ipynb)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import auth\n",
+ "auth.authenticate_user()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Environment Setup\n",
+ "Set your Project ID and the standard RMI dataset name."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "PROJECT_ID = 'YOUR_PROJECT_ID' # @param {type:\"string\"}\n",
+ "DATASET_ID = 'historical_roads_data' # @param {type:\"string\"}\n",
+ "os.environ['PROJECT_ID'] = PROJECT_ID\n",
+ "os.environ['DATASET_ID'] = DATASET_ID"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. Check Route Status\n",
+ "The `routes_status` table contains your route definitions and their current RMI state. We use the `%%bigquery` magic for direct SQL execution."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project $PROJECT_ID\n",
+ "SELECT \n",
+ " selected_route_id, \n",
+ " status, \n",
+ " validation_error \n",
+ "FROM `historical_roads_data.routes_status` \n",
+ "LIMIT 10"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Query Historical Performance\n",
+ "Using the **Gold Standard** pattern: temporal filtering, geometry type checks, and joining with status for attributes."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project $PROJECT_ID\n",
+ "DECLARE start_date DEFAULT TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);\n",
+ "\n",
+ "WITH base_history AS (\n",
+ " SELECT\n",
+ " h.selected_route_id,\n",
+ " h.record_time,\n",
+ " h.duration_in_seconds,\n",
+ " h.static_duration_in_seconds,\n",
+ " s.route_attributes\n",
+ " FROM `historical_roads_data.historical_travel_time` h\n",
+ " JOIN `historical_roads_data.routes_status` s\n",
+ " ON h.selected_route_id = s.selected_route_id\n",
+ " WHERE h.record_time >= start_date\n",
+ " -- Early Path Integrity Filter\n",
+ " AND ST_GEOMETRYTYPE(h.route_geometry) = 'ST_LineString'\n",
+ ")\n",
+ "SELECT\n",
+ " *,\n",
+ " -- Metric Calculation (Travel Time Index)\n",
+ " SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) as travel_time_index\n",
+ "FROM base_history\n",
+ "ORDER BY record_time DESC\n",
+ "LIMIT 10"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4. Visualize Traffic Trends\n",
+ "Finally, let's plot the **Travel Time Index (Ratio)** over time to see congestion patterns. We'll use `plotly` for a quick interactive chart."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery df_trends --project $PROJECT_ID\n",
+ "DECLARE start_date DEFAULT TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);\n",
+ "\n",
+ "SELECT\n",
+ " record_time,\n",
+ " selected_route_id,\n",
+ " SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds) as travel_time_index\n",
+ "FROM `historical_roads_data.historical_travel_time` \n",
+ "WHERE record_time >= start_date\n",
+ "ORDER BY record_time ASC"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import plotly.express as px\n",
+ "\n",
+ "fig = px.line(df_trends, x='record_time', y='travel_time_index', color='selected_route_id',\n",
+ " title='Travel Time Index Over Last 24 Hours',\n",
+ " labels={'travel_time_index': 'Congestion Ratio (Actual/Static)', 'record_time': 'Time (UTC)'})\n",
+ "fig.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. Weekly Congestion Heatmap\n",
+ "Let's look at long-term trends by analyzing the average congestion ratio by **Hour of Day** and **Day of Week** over the last 30 days."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery df_heatmap --project $PROJECT_ID\n",
+ "DECLARE start_date DEFAULT TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY);\n",
+ "\n",
+ "SELECT\n",
+ " EXTRACT(DAYOFWEEK FROM record_time) as day_of_week,\n",
+ " EXTRACT(HOUR FROM record_time) as hour_of_day,\n",
+ " AVG(SAFE_DIVIDE(duration_in_seconds, static_duration_in_seconds)) as avg_tti\n",
+ "FROM `historical_roads_data.historical_travel_time` \n",
+ "WHERE record_time >= start_date\n",
+ "GROUP BY 1, 2\n",
+ "ORDER BY 1, 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import plotly.graph_objects as go\n",
+ "\n",
+ "days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n",
+ "\n",
+ "# Pivot the data for the heatmap\n",
+ "pivot_df = df_heatmap.pivot(index='day_of_week', columns='hour_of_day', values='avg_tti')\n",
+ "\n",
+ "fig = go.Figure(data=go.Heatmap(\n",
+ " z=pivot_df.values,\n",
+ " x=pivot_df.columns,\n",
+ " y=[days[i-1] for i in pivot_df.index],\n",
+ " colorscale='Viridis',\n",
+ " hoverongaps=False))\n",
+ "\n",
+ "fig.update_layout(\n",
+ " title='Average Congestion Heatmap (Last 30 Days)',\n",
+ " xaxis_title='Hour of Day (UTC)',\n",
+ " yaxis_title='Day of Week')\n",
+ "\n",
+ "fig.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 6. Audit Table Partitions\n",
+ "To manage costs and understand data retention, you can audit the physical partitions of your RMI tables using the `INFORMATION_SCHEMA`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project $PROJECT_ID$PROJECT_ID\n",
+ "SELECT\n",
+ " table_schema as dataset,\n",
+ " table_name as table, \n",
+ " partition_id, \n",
+ " total_rows, \n",
+ " total_logical_bytes, \n",
+ " total_billable_bytes, \n",
+ " last_modified_time, \n",
+ " storage_tier\n",
+ "FROM\n",
+ " `historical_roads_data.INFORMATION_SCHEMA.PARTITIONS`\n",
+ "ORDER BY 1, 2, 3"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 7. Advanced Partition Pruning\n",
+ "For maximum efficiency, you can dynamically identify the latest available partition before running your main query. This is the most cost-effective way to audit the freshest RMI data.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bigquery --project $PROJECT_ID\n",
+ "DECLARE last_partition TIMESTAMP;\n",
+ "\n",
+ "SET last_partition = (\n",
+ " SELECT\n",
+ " PARSE_TIMESTAMP(\"%Y%m%d\", MAX(partition_id))\n",
+ " FROM\n",
+ " `historical_roads_data.INFORMATION_SCHEMA.PARTITIONS`\n",
+ " WHERE\n",
+ " table_name = \"historical_travel_time\"\n",
+ ");\n",
+ "\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " `historical_roads_data.historical_travel_time`\n",
+ "WHERE\n",
+ " record_time >= last_partition\n",
+ "LIMIT 10\n"
+ ],
+ "execution_count": null
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Summary & Next Steps\n",
+ "You have successfully verified your RMI data in BigQuery using native magics.\n",
+ "\n",
+ "**Next**: In the next tutorial, we will explore real-time data flow via **Pub/Sub**.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "**For more advanced RMI query patterns, visit the official [RMI Sample Queries Repository](https://github.com/googlemaps-samples/insights-samples/tree/main/roads_management_insights/rmi_sample_queries).**"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python",
+ "version": "3.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/roads_management_insights/tutorials/04_pubsub_verification.ipynb b/roads_management_insights/tutorials/04_pubsub_verification.ipynb
new file mode 100644
index 0000000..31f6fe9
--- /dev/null
+++ b/roads_management_insights/tutorials/04_pubsub_verification.ipynb
@@ -0,0 +1,264 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cell_style": "center"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# RMI Tutorial 04: Pub/Sub Real-time Verification\n",
+ "\n",
+ "RMI provides near real-time traffic updates via Cloud Pub/Sub. This tutorial uses the `gcloud` CLI to verify your real-time data stream.\n",
+ "\n",
+ "### Objectives:\n",
+ "1. **Identify** your RMI provider topic.\n",
+ "2. **Create** a local Pull subscription.\n",
+ "3. **Retrieve** and parse real-time messages via the CLI."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/04_pubsub_verification.ipynb) \n",
+ "[](https://console.cloud.google.com/vertex-ai/colab/import/https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F04_pubsub_verification.ipynb) \n",
+ "[](https://console.cloud.google.com/bigquery/import?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgooglemaps-samples%2Finsights-samples%2Fmain%2Froads_management_insights%2Ftutorials%2F04_pubsub_verification.ipynb) \n",
+ "[](https://github.com/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/04_pubsub_verification.ipynb)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Authenticate with Google Cloud\n",
+ "from google.colab import auth\n",
+ "auth.authenticate_user()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 1. Environment Setup\n",
+ "Set your Project ID and Project Number (from Tutorial 01)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = \"YOUR_PROJECT_ID\" # @param {type:\"string\"}\n",
+ "PROJECT_NUMBER = \"YOUR_PROJECT_NUMBER\" # @param {type:\"string\"}\n",
+ "SUBSCRIPTION_ID = \"tutorial-rmi-json-pull-sub\"\n",
+ "\n",
+ "import os\n",
+ "os.environ[\"PROJECT_ID\"] = PROJECT_ID\n",
+ "# Note: Topic names are provided by the RMI team and may vary.\n",
+ "os.environ[\"TOPIC_PATH\"] = f\"projects/maps-platform-roads-management/topics/roadsinformation-{PROJECT_NUMBER}-json\"\n",
+ "os.environ[\"SUBSCRIPTION_PATH\"] = f\"projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_ID}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2. Create the Pull Subscription\n",
+ "We create a subscription in your local project to listen to the RMI provider topic."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "gcloud pubsub subscriptions create \"${SUBSCRIPTION_PATH}\" \\\n",
+ " --topic=\"${TOPIC_PATH}\" \\\n",
+ " --project=\"${PROJECT_ID}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Pull and Parse Messages\n",
+ "Retrieve messages from the stream. We use `--auto-ack` to automatically acknowledge receipt and `--format=\"json\"` to view the full RMI payload."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "gcloud pubsub subscriptions pull \"${SUBSCRIPTION_PATH}\" \\\n",
+ " --limit=5 \\\n",
+ " --auto-ack \\\n",
+ " --format=\"json\" \\\n",
+ " --project=\"${PROJECT_ID}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 4. Optional: Create a BigQuery Subscription\n",
+ "For long-term storage and analysis, you can stream RMI updates directly into a BigQuery table.\n",
+ "\n",
+ "### When to use a BigQuery Subscription vs. RMI Shared Tables?\n",
+ "RMI already provides a **`recent_roads_data`** table via your Analytics Hub subscription. \n",
+ "\n",
+ "**Use the RMI Shared Table (`recent_roads_data`) if:**\n",
+ "- You only need the last 24 hours of data.\n",
+ "- You want a zero-maintenance, managed experience.\n",
+ "\n",
+ "**Use a BigQuery Subscription (Custom) if:**\n",
+ "- You need to **retain** data for more than 24 hours in a raw format.\n",
+ "- You want to perform **custom real-time transformations** during ingestion."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Create the Target Dataset"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "bq mk --project_id=${PROJECT_ID} --dataset rmi_realtime_stream"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Grant Permissions to Pub/Sub Service Account\n",
+ "Pub/Sub requires the `BigQuery Data Editor` role on your project (or dataset) to write messages into the table. The service account follows the pattern: `service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "gcloud projects add-iam-policy-binding ${PROJECT_ID} \\\n",
+ " --member=\"serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com\" \\\n",
+ " --role=\"roles/bigquery.dataEditor\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Create the BigQuery Subscription\n",
+ "This creates a no-code streaming pipeline from Pub/Sub to BigQuery."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "gcloud pubsub subscriptions create \"projects/${PROJECT_ID}/subscriptions/tutorial-rmi-bq-sub\" \\\n",
+ " --topic=\"${TOPIC_PATH}\" \\\n",
+ " --bigquery-table=\"${PROJECT_ID}:rmi_realtime_stream.realtime_updates\" \\\n",
+ " --use-topic-schema \\\n",
+ " --project=\"${PROJECT_ID}\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. Optional: Subscription Filtering\n",
+ "You can use [Subscription Filters](https://docs.cloud.google.com/pubsub/docs/subscription-message-filter) to only receive a subset of messages.\n",
+ "\n",
+ "### Create a Filtered Subscription\n",
+ "Only receives messages for a specific route ID."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%%bash\n",
+ "# Create a subscription with prefix filtering\n",
+ "# This only receives messages where the route ID starts with \"PREFIX-\"\n",
+ "gcloud pubsub subscriptions create \"projects/${PROJECT_ID}/subscriptions/tutorial-rmi-prefix-filtered-sub\" \\\n",
+ " --topic=\"${TOPIC_PATH}\" \\\n",
+ " --message-filter='attributes.selected_route_id.hasPrefix(\"PREFIX-\")' \\\n",
+ " --project=\"${PROJECT_ID}\"\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Summary & Next Steps\n",
+ "You have successfully verified your real-time data stream using the `gcloud` CLI.\n",
+ "\n",
+ "**Next**: In the next tutorial, we will **Visualize** our RMI data on an interactive map using **pydeck**."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "**For more advanced RMI query patterns, visit the official [RMI Sample Queries Repository](https://github.com/googlemaps-samples/insights-samples/tree/main/roads_management_insights/rmi_sample_queries).**"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python",
+ "version": "3.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/roads_management_insights/tutorials/README.md b/roads_management_insights/tutorials/README.md
new file mode 100644
index 0000000..e816038
--- /dev/null
+++ b/roads_management_insights/tutorials/README.md
@@ -0,0 +1,29 @@
+# RMI Tutorial Series: From Setup to Insight
+
+This directory contains a progressive series of Jupyter notebooks designed to onboard developers to the **Roads Management Insights (RMI)** ecosystem.
+
+## 🚀 Learning Path
+
+| Module | Notebook | Audience | Open | Key Learning |
+| :--- | :--- | :--- | :--- | :--- |
+| **01** | [Project Setup](./01_project_setup.ipynb) | New Users | [](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/01_project_setup.ipynb) | Auth, API, and IAM roles. |
+| **02** | [Route Setting](./02_route_setting.ipynb) | Developers | [](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/02_route_setting.ipynb) | Registering routes via REST. |
+| **03** | [BigQuery Verification](./03_bq_verification.ipynb) | Data Analysts | [](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/03_bq_verification.ipynb) | Trend analysis and SQL audits. |
+| **04** | [Pub/Sub Real-time](./04_pubsub_verification.ipynb) | Operations | [](https://colab.research.google.com/github/googlemaps-samples/insights-samples/blob/main/roads_management_insights/tutorials/04_pubsub_verification.ipynb) | JSON traffic feeds & BQ subs. |
+
+## 🛠 Prerequisites
+
+To execute these notebooks, you will need:
+1. **Google Cloud Project**: With billing enabled.
+2. **RMI Onboarding**: Your Project Number must be registered with the Google RMI team.
+3. **Permissions**: `roles/roads.roadsSelectionAdmin` or equivalent.
+4. **Environment**: [Google Colab](https://colab.research.google.com/) (Recommended) or a local Jupyter environment.
+
+## 💡 Best Practices
+
+- **CLI-First**: These tutorials prioritize the `gcloud` CLI and BigQuery magics for transparency and ease of automation.
+- **Cost Efficiency**: See Tutorial 03 for the "Gold Standard" partition pruning patterns to minimize query costs.
+- **Real-time Scale**: See Tutorial 04 for how to use Pub/Sub filters to reduce ingestion volume.
+
+---
+**For more advanced RMI query patterns, visit the official [RMI Sample Queries Repository](https://github.com/googlemaps-samples/insights-samples/tree/main/roads_management_insights/rmi_sample_queries).**
diff --git a/roads_management_insights/.DS_Store b/street_view_insights/.DS_Store
similarity index 88%
rename from roads_management_insights/.DS_Store
rename to street_view_insights/.DS_Store
index 390760f..9f24afe 100644
Binary files a/roads_management_insights/.DS_Store and b/street_view_insights/.DS_Store differ
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/README.md b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/README.md
new file mode 100644
index 0000000..f4079ad
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/README.md
@@ -0,0 +1,50 @@
+# Identify Lamp Make and Model using Gemini 2.5 Flash and RAG
+
+This notebook demonstrates how to identify the make and model of a lamp using the Gemini 2.5 Flash model with a Retrieval Augmented Generation (RAG) approach.
+
+## Notebook Description
+
+The primary goal of this notebook is to leverage the advanced multimodal capabilities of Gemini 2.5 Flash to analyze images of lamps and extract specific information about their make and model. It employs a RAG strategy, which involves:
+
+1. **Image Input:** You'll provide images of lamps as input.
+2. **Information Retrieval (RAG):** The notebook will access an external knowledge base or a set of documents containing information about various lamp makes and models. This could be a local dataset, a cloud-hosted database, or even web search results.
+3. **Gemini 2.5 Flash Integration:** The Gemini 2.5 Flash model will process the input image and the retrieved information to identify the most probable make and model of the lamp.
+4. **Output:** The notebook will output the identified make and model, potentially with a confidence score or additional descriptive details.
+
+## What is RAG?
+
+Retrieval-Augmented Generation (RAG) is a technique for improving the accuracy and reliability of large language models (LLMs) by grounding them in external knowledge bases. Instead of relying solely on the information it was trained on, a RAG model retrieves relevant information from an authoritative knowledge base and uses it to generate a more informed response.
+
+## How is the RAG Corpus Created in Vertex AI?
+
+The RAG corpus in this notebook is created using Vertex AI Search. The process involves:
+
+1. **Creating a Datastore:** A datastore is created in Vertex AI Search to hold the knowledge base.
+2. **Ingesting Data:** The knowledge base, which in this case is a collection of JSON files containing information about lamp makes and models, is ingested into the datastore.
+3. **Linking the Datastore to the Model:** The datastore is then linked to the Gemini 2.5 Flash model, allowing the model to retrieve information from it during the generation process.
+
+## What the Notebook Does
+
+The notebook performs the following steps:
+
+1. **Fetches Image URIs from BigQuery:** It queries a BigQuery table to get the GCS URIs of the images to be classified.
+2. **Checks for Lamp Posts:** It uses a simple prompt to quickly determine if an image contains a lamp post.
+3. **Generates Detailed Descriptions:** If a lamp post is detected, it generates a detailed description of the lamp post, focusing on features like style, material, color, and design.
+4. **Identifies Make and Model:** It uses the detailed description to identify the make and model of the lamp post, leveraging the RAG-grounded Gemini model.
+5. **Saves Results to BigQuery:** The identified make and model, along with other relevant information, are saved to a BigQuery table.
+
+## Prerequisites for First-Time Users
+
+To successfully run this notebook, please ensure the following:
+
+1. **Google Cloud Project:** You need an active Google Cloud project.
+2. **Enable APIs:**
+ * **Vertex AI API:** This is essential for accessing and using Gemini models. You can enable it through the Google Cloud Console under "APIs & Services" > "Library".
+3. **Authentication:**
+ * **Google Cloud Authentication:** Ensure your Colab environment is authenticated to your Google Cloud project.
+4. **Input Data:**
+ * **Lamp Images:** Prepare the images of the lamps you want to identify. These should be uploaded to your Colab environment or accessible from Google Cloud Storage.
+ * **RAG Data Source:** If the RAG component relies on a specific data source (e.g., a CSV file, a database, or a collection of documents), ensure this data is accessible and in the correct format.
+5. **Required Libraries:** The notebook will likely import several libraries. Ensure they are installed.
+
+By following these steps, you should be well-equipped to run this notebook and explore the capabilities of Gemini 2.5 Flash for lamp identification.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_1.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_1.json
new file mode 100644
index 0000000..5dcbe2a
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_1.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Acorn Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Hartsfield LED (HTFL)",
+ "Manufacturer": "American Electric Lighting (Acuity Brands)",
+ "Description/Key_Features": "Replaces up to 150W HPS. Lumen packages from 2,700-8,600 lm. CCTs from 2700K-5000K. Choice of 8\" or 9\" acrylic or polycarbonate refractor globe. IP65 rated. Heavy grade A360 cast aluminum housing.",
+ "Dimensions (L x W x H or H x D)": "38.73\"H x 16.6\"D",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Slip-fitter for 3\" O.D. pole tenon.",
+ "Image_URL": "3581199.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_2.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_2.json
new file mode 100644
index 0000000..a07c607
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_2.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Acorn Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Washington Postlite LED",
+ "Manufacturer": "Holophane (Acuity Brands)",
+ "Description/Key_Features": "Urban-scale acorn luminaire for 12-25 ft mounting heights. Prismatic globes available in glass or acrylic. Gen 3 light engine with up to 20,000 lumens and 160 LPW. Optional Lunar Optics to reduce uplight and sky glow.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top",
+ "Image_URL": "holophane-washington-postlite.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_3.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_3.json
new file mode 100644
index 0000000..6e3bed8
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_3.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Acorn Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "K425 Classic Acorn",
+ "Manufacturer": "King Luminaire",
+ "Description/Key_Features": "Cast aluminum construction with prismatic acrylic or polycarbonate refractor (Type III or V). T1 advanced LED optical system with Cree LEDs. Universal dimmable DALI-2 D4i driver. 20kV/10kA surge protection. KingCoat SuperDurable finish.",
+ "Dimensions (L x W x H or H x D)": "44.625\"H",
+ "Weight": "Contact Manufacturer",
+ "Mounting_Details": "Mounts to 3.5\" max diameter x 3.5\" max length tenon.",
+ "Image_URL": "king-luminaire-k425.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_4.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_4.json
new file mode 100644
index 0000000..c2f12d9
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/acorn_luminaries_4.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Acorn Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "1910LED Medium Acorn",
+ "Manufacturer": "Sternberg Lighting",
+ "Description/Key_Features": "Medium scale decorative pendant luminaire. Decorative cast aluminum fitter with clear textured DR acrylic or polycarbonate lens. IP66 rated. 0-10V dimming. 7-year warranty.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top, Wall Mount, Stem Hung, Chain Hung, Catenary",
+ "Image_URL": "sternberg-1910led.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_1.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_1.json
new file mode 100644
index 0000000..7be2fbf
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_1.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Autobahn ATBS",
+ "Manufacturer": "Acuity Brands / American Electric Lighting",
+ "Description/Key_Features": "Breakthrough LEDs, precision optics, works with control systems. CCT 3000K/5000K, CRI 70, IP66.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Arm Mount, Pole",
+ "Image_URL": "https://img.acuitybrands.com/public-assets/catalog/252703/atbs_vr_hero_mid.png?abl_version=03%2f19%2f2025+09%3a58%3a49",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_10.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_10.json
new file mode 100644
index 0000000..f999fec
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_10.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "WSD 100W (Warehouse-Lighting)",
+ "Manufacturer": "WSD",
+ "Description/Key_Features": "100W, 15000lm, 5000K, CRI 70, Lumileds LED, Sosen Driver, IP65.",
+ "Dimensions (L x W x H or H x D)": "18.67\"L x 10.81\"W x 3.94\"H",
+ "Weight": "11 lbs",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_11.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_11.json
new file mode 100644
index 0000000..f53ba2c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_11.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LEDRadiant 100W",
+ "Manufacturer": "LEDRadiant",
+ "Description/Key_Features": "100W, 15100lm (151 lm/W), 5000K, replaces 400W HID/HPS, 10KV surge, dimmable 1-10V, IP65.",
+ "Dimensions (L x W x H or H x D)": "18.67\"L x 10.61\"W x 3.94\"H",
+ "Weight": "11 lbs",
+ "Mounting_Details": "Hardwired, Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_12.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_12.json
new file mode 100644
index 0000000..ecb1fa7
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_12.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LEDRadiant 150W",
+ "Manufacturer": "LEDRadiant",
+ "Description/Key_Features": "150W, 22650lm (151 lm/W), 5000K, replaces 600W HID/HPS, 10KV surge, dimmable 1-10V, IP65.",
+ "Dimensions (L x W x H or H x D)": "18.67\"L x 10.61\"W x 3.94\"H",
+ "Weight": "11 lbs",
+ "Mounting_Details": "Hardwired, Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_13.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_13.json
new file mode 100644
index 0000000..d1fed17
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_13.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "SLL006-3D86-TPW-004",
+ "Manufacturer": "LEDTronics",
+ "Description/Key_Features": "60W, 3525 lm (59 lm/W), 4800-5200K, Type III beam, 10-30Vdc input.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "12 lbs",
+ "Mounting_Details": "Fits 1.25\"-2\" Pipe (1.66\"-2.375\" OD)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_14.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_14.json
new file mode 100644
index 0000000..42a3a6b
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_14.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Konlite KRL150W40KLV3P",
+ "Manufacturer": "Konlite",
+ "Description/Key_Features": "150W, 20000lm (133 lm/W), 4000K, replaces 400W MH, Type III, Photocell.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available (Diameter 7.9\")",
+ "Weight": "12 lbs",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_15.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_15.json
new file mode 100644
index 0000000..b1086ac
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_15.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Mongoose Series 120W",
+ "Manufacturer": "LEDLightExpert",
+ "Description/Key_Features": "120W, 17400lm (145 lm/W), 5000K, Type II, Photocell opt., IP65.",
+ "Dimensions (L x W x H or H x D)": "525mm L x 320mm W x 73mm H (approx 20.7\"x12.6\"x2.9\")",
+ "Weight": "6.8 kg (15 lbs)",
+ "Mounting_Details": "Slip fit for 2\"-2.4\" pole",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_16.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_16.json
new file mode 100644
index 0000000..7777c7e
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_16.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Torvan II Series 240W Max",
+ "Manufacturer": "LEDLightExpert",
+ "Description/Key_Features": "60-240W selectable, 31400lm max (>135 lm/W), 3000K, Motion+Photocell, Type II, IP65.",
+ "Dimensions (L x W x H or H x D)": "31\"L x 11.8\"W x 3.9\"H",
+ "Weight": "16.1 lbs",
+ "Mounting_Details": "Slip fit for 2\"-2.4\" pole",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_17.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_17.json
new file mode 100644
index 0000000..8c67332
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_17.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Traveyo TRVLG (Large)",
+ "Manufacturer": "Cree Lighting",
+ "Description/Key_Features": "13k-21.7k lm, 80-150W, up to 153 LPW, CCT 2700-5700K, Type II/III/IV/V optics.",
+ "Dimensions (L x W x H or H x D)": "22.4\"L x 11.2\"W x 4.5\"H",
+ "Weight": "10.6 lbs",
+ "Mounting_Details": "Horizontal Tenon (1.25\"-2\" IP / 1.66\"-2.375\" OD)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_18.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_18.json
new file mode 100644
index 0000000..e60a1bd
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_18.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Traveyo TRVXL (Extra Large)",
+ "Manufacturer": "Cree Lighting",
+ "Description/Key_Features": "22k-32.6k lm, 120-220W, up to 155 LPW, CCT 2700-5700K, Type II/III/IV/V optics.",
+ "Dimensions (L x W x H or H x D)": "24.0\"L x 13.0\"W x 4.5\"H",
+ "Weight": "14.4 lbs",
+ "Mounting_Details": "Horizontal Tenon (1.25\"-2\" IP / 1.66\"-2.375\" OD)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_19.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_19.json
new file mode 100644
index 0000000..a1a7f21
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_19.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "HPS",
+ "Specific_Model/Example_Identifier": "Model 125 (250W)",
+ "Manufacturer": "American Electric Lighting",
+ "Description/Key_Features": "250W High Pressure Sodium, Mogul base, CWA ballast, Type III Medium Semi-cutoff.",
+ "Dimensions (L x W x H or H x D)": "31.5\"D x 14.75\"W x 14\"H",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Slipfitter",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_2.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_2.json
new file mode 100644
index 0000000..20a9a56
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_2.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Evolve ERL1",
+ "Manufacturer": "GE Current",
+ "Description/Key_Features": "Reflective optics, LightGrid+ compatible, Assembled in USA. 2k-15.7k lm, 14-97W, 101-143 LPW, CCT 2700-5000K.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Adjustable for 1.25\"-2.0\" nominal pipe, Optional 4-Bolt Slipfitter",
+ "Image_URL": "(https://cdn.currentlighting.com/site/prodimage1200/ERL1_Main_Image_1_1200.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_20.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_20.json
new file mode 100644
index 0000000..665574c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_20.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "HPS/MH",
+ "Specific_Model/Example_Identifier": "DS-202",
+ "Manufacturer": "Alibaba Seller (Implied)",
+ "Description/Key_Features": "Classic aluminum, 250W/400W HPS/MH, E39/E40 lampholder, IP65.",
+ "Dimensions (L x W x H or H x D)": "Packing: 68x34.5x22cm. Fixture size not explicit.",
+ "Weight": "8.2 kgs (Packing?)",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_21.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_21.json
new file mode 100644
index 0000000..bdb4b10
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_21.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "HPS/MH",
+ "Specific_Model/Example_Identifier": "YL-13-00002",
+ "Manufacturer": "Yulan Lighting",
+ "Description/Key_Features": "250W/400W HPS/MH, Die-cast Al, Tempered glass bowl, E27/E40 holder, IP65.",
+ "Dimensions (L x W x H or H x D)": "250W: 640x300x210mm; 400W: 700x310x230mm",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Side entry diameter 48-60mm",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_22.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_22.json
new file mode 100644
index 0000000..49dafdd
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_22.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "MH/HPS/IND",
+ "Specific_Model/Example_Identifier": "BP90003",
+ "Manufacturer": "Premier Lighting",
+ "Description/Key_Features": "100-400W MH/HPS or 80/120W Induction. Die-cast Al housing, glass lens.",
+ "Dimensions (L x W x H or H x D)": "29.25\"L x 11.56\"H",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_23.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_23.json
new file mode 100644
index 0000000..30eb208
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_23.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "Mercury Vapor",
+ "Specific_Model/Example_Identifier": "Generic MV Cobra Head",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Traditional MV tech, often replaced. Sizes varied (Small: 50-250W, Medium: 250-400W, Large: 700-1000W). Bluish-green light, poor CRI.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available (General descriptions)",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "(https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/2024-04-16_09_30_05_Mercury_vapor_cobra_head_street_light_illuminated_during_daylight_on_a_wooden_utility_pole_at_the_north_end_of_John_Fitch_Parkway_%28New_Jersey_State_Route_29%29_in_Trenton%2C_Mercer_County%2C_New_Jersey.jpg/800px-thumbnail.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_24.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_24.json
new file mode 100644
index 0000000..c2d4d33
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_24.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "Induction",
+ "Specific_Model/Example_Identifier": "IRW1 Series",
+ "Manufacturer": "ILF (Induction Lighting Fixtures)",
+ "Description/Key_Features": "40W-100W, replaces HPS/MV, >0.98 PF, 100k hr life, Type 3, Flat glass lens.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_25.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_25.json
new file mode 100644
index 0000000..f2a289a
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_25.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Evolve EPAS (Avery Streetdreams)",
+ "Manufacturer": "GE Current",
+ "Description/Key_Features": "Decorative, 2.6k-9.3k lm, 27-85W, 76-116 LPW, CCT 3K/4K, LightGrid+ compatible, IP65.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top: 2.375\" to 3.5\" (60-89mm) OD vertical tenon",
+ "Image_URL": "(https://cdn.currentlighting.com/site/prodimage1200/EPAS_Main_Image_1_1200.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_26.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_26.json
new file mode 100644
index 0000000..8f87c5b
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_26.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Decorative (MLLG-YA-LED-PTD-120-CC)",
+ "Manufacturer": "LED Lighting Supply",
+ "Description/Key_Features": "80/100/120W adj, 9.6k-14.4k lm (120 lm/W), 3/4/5K CCT adj, decorative, frosted glass, Type 5 beam.",
+ "Dimensions (L x W x H or H x D)": "11.9\"W x 11.9\"D x 26\"H",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "3\" Pole Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_27.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_27.json
new file mode 100644
index 0000000..77a7b3e
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_27.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Decorative (TPG7)",
+ "Manufacturer": "Contractor Essentials / Light Bulb Surplus",
+ "Description/Key_Features": "Acorn style, 60/80/100W adj, 11k lm max, 3/4/5K CCT adj, black finish, clear acrylic lens, IP65.",
+ "Dimensions (L x W x H or H x D)": "33.01\"H x 18.10\"D",
+ "Weight": "18.74 lbs",
+ "Mounting_Details": "Fits 3.0\" Diameter Pole",
+ "Image_URL": "https://cdn11.bigcommerce.com/s-o7p3kkw0ib/images/stencil/1280x1280/products/88824/355179/decorative-black-led-street-light-post-top-fixture-100w80w60w__34369.1739117079.jpg?c=2",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_28.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_28.json
new file mode 100644
index 0000000..6241a7f
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_28.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Decorative (Lightmart DPT58)",
+ "Manufacturer": "Lightmart",
+ "Description/Key_Features": "Contemporary style, 58W, 4500lm (78 lm/W), CCT 3/4/5K, die-cast Al base, spun Al shade, acrylic lens, Type 5.",
+ "Dimensions (L x W x H or H x D)": "26\"H x 28\"W",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Mounts to 4\" OD tenon/pole",
+ "Image_URL": "https://cdn11.bigcommerce.com/s-h2h8t9woje/images/stencil/1280x1280/products/12212/80759/dpt58-gallery-main__82096.1622621013.jpg?c=2",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_29.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_29.json
new file mode 100644
index 0000000..c5dc85a
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_29.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "L Series (ZGSM)",
+ "Manufacturer": "ZGSM",
+ "Description/Key_Features": "European elements, multiple mounting options.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top, Pendant, Side Entry, Suspension",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_3.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_3.json
new file mode 100644
index 0000000..5e810a9
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_3.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "StreetView SVM",
+ "Manufacturer": "Signify",
+ "Description/Key_Features": "Medium intensity, dedicated optics, IP66, tool-free access, low EPA. 19-105W, 2.3k-12.2k lm.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Data Not Available",
+ "Image_URL": "([https://www.assets.signify.com/is/image/Signify/SVM_BSP?clipPathE=legacy_path&pnglarge](https://www.assets.signify.com/is/image/Signify/SVM_BSP?clipPathE=legacy_path&pnglarge))",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_30.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_30.json
new file mode 100644
index 0000000..c6b6a70
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_30.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Halo Series (ZGSM)",
+ "Manufacturer": "ZGSM",
+ "Description/Key_Features": "6 installation ways (Post Top, Side Entry, High Bay), versatile applications. Up to 21.7k lm, 150W, 135-150 lm/W.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top (single/double arm), Side Entry, Pendant, Wire Suspension, High Bay",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_31.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_31.json
new file mode 100644
index 0000000..8e35b12
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_31.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Affordable Decorative (Model 4001)",
+ "Manufacturer": "BudgetMailboxes / Venia Products (Implied)",
+ "Description/Key_Features": "Municipal quality, customizable pole (8-14ft), LED 12-54W (1.7k-7.6k lm), single-head lantern, PMMA lens, IP64.",
+ "Dimensions (L x W x H or H x D)": "Fixture: 9\"x9\"x17.5\". Pole: 8-14ft. Base: Standard/Wide.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Direct Wire, Pole Mount (Threaded, fits 4\" or 6\" pole depending on base)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_32.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_32.json
new file mode 100644
index 0000000..f51d849
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_32.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Premium Decorative (Model 4004)",
+ "Manufacturer": "BudgetMailboxes / Venia Products (Implied)",
+ "Description/Key_Features": "Acorn style fixture, Colonial guard, customizable pole/LEDs.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Direct Wire, Pole Mount (Threaded)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_33.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_33.json
new file mode 100644
index 0000000..21b1a97
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_33.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Dark Sky (Model 4007)",
+ "Manufacturer": "BudgetMailboxes / Venia Products (Implied)",
+ "Description/Key_Features": "Dark Sky compliant, elegant design, customizable pole/LEDs.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Direct Wire, Pole Mount (Threaded)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_34.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_34.json
new file mode 100644
index 0000000..416e97c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_34.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "Metal Halide / HPS / Incandescent / LED",
+ "Specific_Model/Example_Identifier": "CL8-PT-M8/9 + CL8 Base",
+ "Manufacturer": "Brandon Industries",
+ "Description/Key_Features": "Modern sweeping design, fits 3\", 4\", 5\" poles, decorative base, die-cast Al housing.",
+ "Dimensions (L x W x H or H x D)": "Fixture: 26.2\"H x 22.1\"W. Base: 19\"H x 17\"W.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top (Fits 3\", 4\", 5\" poles)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_35.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_35.json
new file mode 100644
index 0000000..0b0c6f5
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_35.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "Incandescent / MH / HPS / LED",
+ "Specific_Model/Example_Identifier": "CL8 Base + 4\" Fluted Post + AGA1A Luminaire",
+ "Manufacturer": "Raytech (Implied)",
+ "Description/Key_Features": "4\" fluted post, 9-14ft pole height (13'10\" - 17'10\" total), acrylic globe, various light tech options.",
+ "Dimensions (L x W x H or H x D)": "Base: 32\"H x 15.5\"W. Pole: 4\" OD.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top (4\" OD Holder)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_36.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_36.json
new file mode 100644
index 0000000..a11ab40
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_36.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "Incandescent / LED / MH / HPS",
+ "Specific_Model/Example_Identifier": "CL6 Base + 4\" Fluted Post + AGA2A Luminaire",
+ "Manufacturer": "Raytech (Implied)",
+ "Description/Key_Features": "4\" fluted post, 10-15ft pole height (12'4\" - 17'4\" total), acrylic globe, various light tech options.",
+ "Dimensions (L x W x H or H x D)": "Base: 32\"H x 15.5\"W. Pole: 4\" OD.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Post Top (4\" OD Holder)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_37.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_37.json
new file mode 100644
index 0000000..f7daa4c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_37.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "Incandescent / LED",
+ "Specific_Model/Example_Identifier": "Acorn Street Light (Model 1219)",
+ "Manufacturer": "LoveItLighting",
+ "Description/Key_Features": "Clear Polycarbonate Acorn, Al/Polycarb construction, E26 socket (1000W max incand.) or LED options (40/48/68W).",
+ "Dimensions (L x W x H or H x D)": "Fixture: 26\"H x 14\"W",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Fits 3\" diameter post",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_38.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_38.json
new file mode 100644
index 0000000..18229dc
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_38.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Post-Top",
+ "Technology": "Incandescent / LED",
+ "Specific_Model/Example_Identifier": "Large Acorn Street Light (Model 1221)",
+ "Manufacturer": "LoveItLighting",
+ "Description/Key_Features": "Clear Polycarbonate Acorn, Al/Polycarb construction, E26 socket (1000W max incand.) or LED options (40/48/68W).",
+ "Dimensions (L x W x H or H x D)": "Fixture: 30\"H x 16\"W",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Fits 3\" diameter post",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_39.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_39.json
new file mode 100644
index 0000000..60e1c22
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_39.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox/Area",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LEDMO 150W (ASIN B0B215MFZY)",
+ "Manufacturer": "LEDMO",
+ "Description/Key_Features": "150W, 13500lm (misprint? spec sheet says 130lm/W), 5000K, IP65, dusk-to-dawn photocell, adjustable slip fitter, Al housing.",
+ "Dimensions (L x W x H or H x D)": "16.1\"L x 11\"W x 4\"H",
+ "Weight": "9.79 lbs",
+ "Mounting_Details": "Straight rod mount, Wall Mount, Adjustable Slip Fitter (-90 to +90 deg)",
+ "Image_URL": "(https://m.media-amazon.com/images/I/617ObFs8G+L.AC_SX342_SY445.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_4.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_4.json
new file mode 100644
index 0000000..4203712
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_4.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "RoadFocus Plus RPM (Medium)",
+ "Manufacturer": "Signify",
+ "Description/Key_Features": "99-178W, 14k-27.7k lm, CCT 2700-4000K. Various optics (Type II, III, IV, V).",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available (IES/Revit files available)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_40.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_40.json
new file mode 100644
index 0000000..78c8b17
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_40.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox/Area",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Architectural 120W (ELEDLights)",
+ "Manufacturer": "ELEDLights",
+ "Description/Key_Features": "120W, 14400lm (120 lm/W), 5000K, replaces 250W MH, T3/T5 beam, IP66, Al Alloy housing.",
+ "Dimensions (L x W x H or H x D)": "19.6\"L x 12.6\"W x 4.2\"H",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Wired Fixture, Mounting Hardware separate (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_41.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_41.json
new file mode 100644
index 0000000..e84ba81
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_41.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox/Area",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Adjustable Wattage (BSBX120240-UK-DB-SF)",
+ "Manufacturer": "LEDLighting-Solutions",
+ "Description/Key_Features": "120/150/200/240W adj, 3/4/5K CCT adj, IP67, Dark Bronze Al housing.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "10 lbs",
+ "Mounting_Details": "Slip Fitter",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_42.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_42.json
new file mode 100644
index 0000000..e54694c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_42.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox/Area",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "D-Series (Size 0, 1, 2)",
+ "Manufacturer": "Lithonia Lighting (Acuity Brands)",
+ "Description/Key_Features": "Scalable lumens (Size 0: 2.6k-19.4k; Size 1: 3.9k-29k; Size 2: 10.7k-51.8k), replaces up to 1000W MH, high efficacy (up to 140lm/W), CCT 3/4/5K/Amber.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_43.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_43.json
new file mode 100644
index 0000000..3d9cf47
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_43.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Aluminium Solar Powered",
+ "Manufacturer": "BollardStreet",
+ "Description/Key_Features": "Solar powered, 12 Cree LEDs, ~100lm (630 Lux at source), Lithium battery, 360 deg light, Al construction, Polycarb diffuser, IP rated (not specified).",
+ "Dimensions (L x W x H or H x D)": "Small: 840mm H (above ground) x 150mm D. Large: 1040mm H x 150mm D. Top: 230mm D. Base: 215mm D.",
+ "Weight": "Small: 4.5 Kg. Large: 5 Kg.",
+ "Mounting_Details": "Ground Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_44.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_44.json
new file mode 100644
index 0000000..61ef739
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_44.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "25W Bollard (Brightway)",
+ "Manufacturer": "WELED POWER (Driver) / Brightway (Seller)",
+ "Description/Key_Features": "25W, 3360lm, 4000K/5000K, CRI >70, 141 deg angle, Lumileds source.",
+ "Dimensions (L x W x H or H x D)": "Standard height 30\"-48\" (Average 36\"). Fixture specific size N/A.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Ground Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_45.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_45.json
new file mode 100644
index 0000000..28713dd
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_45.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "R-9832",
+ "Manufacturer": "Reliance Foundry",
+ "Description/Key_Features": "10W AC LED, enhances pathway visibility, smaller size (2ft height), Al construction.",
+ "Dimensions (L x W x H or H x D)": "25.2\"H x 4.7\"D (Body & Base)",
+ "Weight": "4 lbs",
+ "Mounting_Details": "Ground Mount (Hardwired)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_46.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_46.json
new file mode 100644
index 0000000..ea7c845
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_46.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "3.5 ft Bollard (CLL MBL01)",
+ "Manufacturer": "CLL",
+ "Description/Key_Features": "26W max, 3100lm max (119 lm/W), Wattage & CCT (3/4/5K) Selectable, Dark Bronze, Diffused lens, IP rated (not specified).",
+ "Dimensions (L x W x H or H x D)": "42\"H x 9.28\"L x 5.5\"W",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Ground Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_47.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_47.json
new file mode 100644
index 0000000..52a7d44
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_47.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Danyon 15W",
+ "Manufacturer": "Eurofase",
+ "Description/Key_Features": "15W, 720lm, 3000K, adjustable circular disk top, die-cast Al body, powder-coated.",
+ "Dimensions (L x W x H or H x D)": "19.7\"H x 6.8\"W x 6.8\"D",
+ "Weight": "5.2 lbs",
+ "Mounting_Details": "Ground Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_48.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_48.json
new file mode 100644
index 0000000..ee20991
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_48.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Bollard",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Light Removable Bollard",
+ "Manufacturer": "MaxiForce",
+ "Description/Key_Features": "Light security, removable body (lift 8\"), 8\"x8\" top plate base matches pavers.",
+ "Dimensions (L x W x H or H x D)": "Base: 8\"x8\" top plate. Bollard height/diameter N/A.",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Removable from base",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_49.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_49.json
new file mode 100644
index 0000000..1169d10
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_49.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Catenary",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "YOA MIDI",
+ "Manufacturer": "Schr\u00e9der",
+ "Description/Key_Features": "Suspended via cable, refined design for urban areas, small EPA.",
+ "Dimensions (L x W x H or H x D)": "500x92x500 mm (19.7x3.6x19.7 in)",
+ "Weight": "13.0 kg (28.6 lbs)",
+ "Mounting_Details": "Catenary (Transversal or Axial)",
+ "Image_URL": "(https://www.schreder.com/sites/corporate/files/styles/carre_900x900_mobile/cdchub/2023-08/yoa-TP-01.png.webp?itok=bKZcyaK0)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_5.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_5.json
new file mode 100644
index 0000000..a2cbb7a
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_5.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LLS-STRL (Web ID 1956)",
+ "Manufacturer": "LED Lighting Supply",
+ "Description/Key_Features": "100/150W, 15k/22.7k lm, 5000K, Type 3 beam. Replaces 400W MH. IP65.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "10 lbs",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "https://www.ledlightingsupply.com/wp-content/uploads/2022/12/LED-Cobra-Head-Main-View-4.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_50.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_50.json
new file mode 100644
index 0000000..3e2b583
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_50.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Catenary",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "YOA MAXI",
+ "Manufacturer": "Schr\u00e9der",
+ "Description/Key_Features": "Larger version, suspended via cable, refined design.",
+ "Dimensions (L x W x H or H x D)": "650x92x650 mm (25.6x3.6x25.6 in)",
+ "Weight": "20.0 kg (44.0 lbs)",
+ "Mounting_Details": "Catenary (Implied, though spec only lists Side/Post-Top for MAXI)",
+ "Image_URL": "(https://www.schreder.com/sites/corporate/files/styles/carre_900x900_mobile/cdchub/2023-08/yoa-TP-01.png.webp?itok=bKZcyaK0)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_51.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_51.json
new file mode 100644
index 0000000..b4e59c8
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_51.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Catenary",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Generic Catenary (MK Lights SC Series)",
+ "Manufacturer": "MK Lights",
+ "Description/Key_Features": "27W example. European style, die-cast Al housing, toolless open, IP66, IK08.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Suspended (Wire Rope), Post-Top, Side Entry, Pendant options",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_52.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_52.json
new file mode 100644
index 0000000..f4332c4
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_52.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Catenary",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Generic Catenary (ZGSM Halo Series)",
+ "Manufacturer": "ZGSM",
+ "Description/Key_Features": "European design, smart control options (DALI, NEMA, Zhaga), IP66, IK10. Also mountable 5 other ways.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Wire Suspension (Catenary), Side Entry, Pendant, Post Top (single/double arm)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_53.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_53.json
new file mode 100644
index 0000000..41479d7
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_53.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Pendant",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Generic Pendant Mount",
+ "Manufacturer": "Various (e.g., ZGSM, Logos Lighting)",
+ "Description/Key_Features": "Fixtures hang from an arm or bracket, used in urban/pedestrian zones, historical districts.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pendant Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_54.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_54.json
new file mode 100644
index 0000000..fe2a4ff
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_54.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Flood Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Slipfitter Mount Flood Light",
+ "Manufacturer": "CommercialLEDLights (Seller)",
+ "Description/Key_Features": "Slips over existing square/round poles, clean installation.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Slipfitter Mount (Pole Top)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_55.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_55.json
new file mode 100644
index 0000000..c71ef49
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_55.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Flood Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Extruded Arm Mount Flood Light",
+ "Manufacturer": "CommercialLEDLights (Seller)",
+ "Description/Key_Features": "Attaches to poles/vertical surfaces at 90\u00b0, fixed angle, durable.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Extruded Arm Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_56.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_56.json
new file mode 100644
index 0000000..97030ef
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_56.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Flood Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Mountless LED Flood Light",
+ "Manufacturer": "CommercialLEDLights (Seller)",
+ "Description/Key_Features": "No mount included, for custom mounting solutions. Up to 400W, 51k+ lm.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Custom Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_57.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_57.json
new file mode 100644
index 0000000..1445769
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_57.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Incandescent",
+ "Technology": "Incandescent",
+ "Specific_Model/Example_Identifier": "Generic Incandescent Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Early electric lighting (post-1880s), low cost, warm light (CRI 100), very low efficacy (10-17 lm/W), short life. Used historically, nostalgic appeal.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available (Lamp example: 13\"x2\" )",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (various historical styles, e.g., 150ft masts ), Pendant",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_58.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_58.json
new file mode 100644
index 0000000..34aa80b
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_58.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Halogen",
+ "Technology": "Halogen",
+ "Specific_Model/Example_Identifier": "Generic Halogen Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Improved incandescent (brighter, longer life), crisp white light (CRI 100), efficacy 16-24 lm/W. Generates heat.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (Spot/Flood)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_59.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_59.json
new file mode 100644
index 0000000..52f5fde
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_59.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Fluorescent",
+ "Technology": "Fluorescent",
+ "Specific_Model/Example_Identifier": "Generic Fluorescent Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Uses mercury vapor/phosphor. More efficient (35-100 lm/W), longer life than incandescent. Contains mercury. Often used indoors/covered areas (e.g., garages).",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Ceiling/Wall/Pole (Covered areas)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_6.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_6.json
new file mode 100644
index 0000000..afab91b
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_6.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LLS-STRL (Web ID 2549)",
+ "Manufacturer": "LED Lighting Supply",
+ "Description/Key_Features": "30/50/70W, 4.8k-12k lm, 160 lm/W, CCT 3/4/5K, IP66, IK09, Type 3 std.",
+ "Dimensions (L x W x H or H x D)": "21\"L x 10\"W x 6.1\"H",
+ "Weight": "12.5 lbs",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "(https://www.ledlightingsupply.com/wp-content/uploads/2025/02/LLS-STRL-30_50_70-T3-800x800.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_60.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_60.json
new file mode 100644
index 0000000..fd3c4a3
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_60.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "CFL",
+ "Technology": "CFL",
+ "Specific_Model/Example_Identifier": "Generic CFL Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Compact fluorescent, fits standard sockets, energy-saving vs incandescent (50-70 lm/W), longer life. Contains mercury, harsh light potential. Used in small outdoor fixtures.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Porch/Yard Lights (Small fixtures)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_61.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_61.json
new file mode 100644
index 0000000..6898445
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_61.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "HPS",
+ "Technology": "HPS",
+ "Specific_Model/Example_Identifier": "Generic HPS Fixture (Non-Cobrahead)",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "High efficiency (50-150 lm/W), long life (24k hrs ). Distinct orange/yellow light, poor CRI (20-30). Common on highways/parking lots. Starts pink, turns orange.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (various styles)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_62.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_62.json
new file mode 100644
index 0000000..a294dc6
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_62.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "LPS",
+ "Technology": "LPS",
+ "Specific_Model/Example_Identifier": "Generic LPS Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Most efficient (80-180 lm/W), very long life (18k hrs ). Monochromatic yellow light (589nm ), worst CRI (-44). Used where color rendering irrelevant (roads, security, astronomy). Declining use. Must be in enclosed fixtures.",
+ "Dimensions (L x W x H or H x D)": "Lamp Dimensions (SOX): 18W: 8.5\"L x 2.13\"D; 35W: 12.19\"L x 2.13\"D; 55W: 16.75\"L x 2.13\"D; 90W: 20.75\"L x 2.68\"D (528mm L x 67mm D ); 135W: 30.5\"L x 2.68\"D (775mm L x 66mm D ); 180W: 44.13\"L x 2.68\"D. Fixture dimensions N/A (Example P123: 18.9\"L x 12.4\"W x 9.75\"H ).",
+ "Weight": "Lamp Weight (SOX 90W): 1.4lb. Fixture weight N/A.",
+ "Mounting_Details": "Pole Mount (various styles, e.g., side entry), requires ballast",
+ "Image_URL": "(https://glowobject.com/cdn/shop/products/SOX90W.jpg?v=1705449290)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_63.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_63.json
new file mode 100644
index 0000000..dc0d35f
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_63.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Metal Halide",
+ "Technology": "Metal Halide",
+ "Specific_Model/Example_Identifier": "Generic MH Fixture (Non-Cobrahead)",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Bright white light, good CRI (60-90), good efficacy (65-115 lm/W). Used for sports fields, large areas needing good color. Takes time to warm up.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (Flood/Area)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_64.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_64.json
new file mode 100644
index 0000000..c3a6b6b
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_64.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Induction",
+ "Technology": "Induction",
+ "Specific_Model/Example_Identifier": "Generic Induction Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Uses magnetic fields, very long lifespan (100k hrs), high efficiency (60-90 lm/W), good CRI (80-90). High initial cost, limited availability. Good for hard-to-reach places.",
+ "Dimensions (L x W x H or H x D)": "Highbay Example (TZ-HL-18): 540x540x545mm. Other types N/A.",
+ "Weight": "Highbay Example: 8KG. Other types N/A.",
+ "Mounting_Details": "Pole/Highbay Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_65.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_65.json
new file mode 100644
index 0000000..497c918
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_65.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Solar LED",
+ "Technology": "Solar LED",
+ "Specific_Model/Example_Identifier": "Generic Solar LED (All-in-One)",
+ "Manufacturer": "Various (e.g., ZGSM, eBay sellers)",
+ "Description/Key_Features": "Combines LED & Solar panel, grid-independent, long life (battery replacement needed), higher initial cost. Performance affected by weather/sunlight.",
+ "Dimensions (L x W x H or H x D)": "Varies greatly. Examples: 800W model: 600x50x240mm ; 100W model: 275x620x75mm.",
+ "Weight": "Varies greatly.",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_66.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_66.json
new file mode 100644
index 0000000..c7b5f3d
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_66.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Solar LED",
+ "Technology": "Solar LED",
+ "Specific_Model/Example_Identifier": "Generic Solar LED (Split System)",
+ "Manufacturer": "Various (e.g., Xuyida)",
+ "Description/Key_Features": "Solar panel separate from LED lamp fixture. Allows optimal panel placement.",
+ "Dimensions (L x W x H or H x D)": "Varies greatly by component. Pole dimensions provided based on height (e.g., 6m pole: 60/140mm D, 3mm thick).",
+ "Weight": "Varies greatly.",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_67.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_67.json
new file mode 100644
index 0000000..18aa34e
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_67.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "LED",
+ "Technology": "PCA LED",
+ "Specific_Model/Example_Identifier": "Generic PCA LED Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Phosphor-Converted Amber LED. Reduced blue light, good CRI (80-90), efficacy 70-150 lm/W. Good for wildlife/dark skies. Higher cost than standard LED.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (various styles)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_68.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_68.json
new file mode 100644
index 0000000..eb2d126
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_68.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "LED",
+ "Technology": "NBA LED",
+ "Specific_Model/Example_Identifier": "Generic NBA LED Fixture",
+ "Manufacturer": "N/A",
+ "Description/Key_Features": "Narrow-Band Amber LED. Pure amber light, minimal blue light, very wildlife-friendly. Moderate CRI (50-70), efficacy 60-140 lm/W. Higher cost.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (various styles)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_7.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_7.json
new file mode 100644
index 0000000..85d0323
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_7.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "LLS-STRL (Web ID 2551)",
+ "Manufacturer": "LED Lighting Supply",
+ "Description/Key_Features": "90/120W, 14.4k/19.2k lm, 160 lm/W, CCT 3/4/5K, IP66, IK09, Type 3 std.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "(https://www.ledlightingsupply.com/wp-content/uploads/2025/02/LLS-STRL-_-5-T3-1-800x800.jpg)",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_8.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_8.json
new file mode 100644
index 0000000..a37f2ef
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_8.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Slim Cobra Head (STL120)",
+ "Manufacturer": "Lightmart",
+ "Description/Key_Features": "120W, 18000lm, 150 lm/W, 5000K, replaces 250-400W HID, streamlined, non-corrosive, IP65.",
+ "Dimensions (L x W x H or H x D)": "28.5\"L x 11.8\"W x 5.6\"H",
+ "Weight": "15.41 lbs",
+ "Mounting_Details": "Fits 1.25\", 2\", or 2.375\" pipe",
+ "Image_URL": "https://cdn11.bigcommerce.com/s-h2h8t9woje/images/stencil/1280x1280/products/11526/78236/stl120__65631.1622622421.jpg?c=2",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_9.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_9.json
new file mode 100644
index 0000000..1f8155f
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/lamp_9.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Cobra Head",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "WSD 150W (Warehouse-Lighting)",
+ "Manufacturer": "WSD",
+ "Description/Key_Features": "150W, 22500lm, 5000K, CRI 70, Lumileds LED, Sosen Driver, IP65.",
+ "Dimensions (L x W x H or H x D)": "18.67\"L x 10.81\"W x 3.94\"H",
+ "Weight": "11 lbs",
+ "Mounting_Details": "Pole Mount (implied)",
+ "Image_URL": "Data Not Available",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_1.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_1.json
new file mode 100644
index 0000000..32c8993
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_1.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "HPS",
+ "Specific_Model/Example_Identifier": "LuxMaster (70W)",
+ "Manufacturer": "American Electric Lighting",
+ "Description/Key_Features": "70W High Pressure Sodium, die-cast aluminum housing, flat tempered glass lens, Type III distribution, pole mount, photocell control.",
+ "Dimensions (L x W x H or H x D)": "23\"W x 13.4\"D x 5.25\"H",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount",
+ "Image_URL": "2862105.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_2.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_2.json
new file mode 100644
index 0000000..9a512eb
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/legacy_hid_shoebox_fixtures_2.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "Metal Halide",
+ "Specific_Model/Example_Identifier": "16-inch Shoebox (16ALH)",
+ "Manufacturer": "DuraGuard",
+ "Description/Key_Features": "Accommodates 100-400W Pulse Start Metal Halide or High Pressure Sodium lamps. Site and decorative area light.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Arm, Tenon",
+ "Image_URL": "16ALH.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_1.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_1.json
new file mode 100644
index 0000000..c712e0d
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_1.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "D-Series Area Size 1 (DSX1)",
+ "Manufacturer": "Lithonia Lighting (Acuity Brands)",
+ "Description/Key_Features": "Replaces 250W-750W MH. Lumen packages from 7,000-35,000 lm. Features 15 optical distributions including advanced Backlight Control optics. nLight AIR wireless controls compatible. 20+ years expected service life.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Pole Mount (Arm), Wall Mount",
+ "Image_URL": "d-series-dsx1.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_2.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_2.json
new file mode 100644
index 0000000..abe990c
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_2.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "Ratio LED Area Light (RAR1-100-4K-3)",
+ "Manufacturer": "Hubbell Outdoor Lighting",
+ "Description/Key_Features": "100W LED, 12,000 lumens, 4000K CCT, 70 CRI, Type III distribution. Features Micro Strike Optics to maximize target illumination and reduce light trespass. Die-cast aluminum housing.",
+ "Dimensions (L x W x H or H x D)": "19\"L x 12\"W x 3.25\"H",
+ "Weight": "16 lbs",
+ "Mounting_Details": "Arm Mount",
+ "Image_URL": "hubbell-ratio-rar1.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_3.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_3.json
new file mode 100644
index 0000000..5e52303
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_3.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "OSQ Series - Medium",
+ "Manufacturer": "Cree Lighting",
+ "Description/Key_Features": "High-performance area light with up to 171 LPW efficacy. Lumen packages from 4,000-85,000 lm. CCT options from 1900K-5700K and CRI options of 50, 70, or 90+. DarkSky Approved. 10-year warranty.",
+ "Dimensions (L x W x H or H x D)": "Data Not Available",
+ "Weight": "Data Not Available",
+ "Mounting_Details": "Versatile Mounting Options (Adjustable Arm, Direct Arm, Horizontal Tenon, Yoke/Trunnion)",
+ "Image_URL": "cree-osq-series.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_4.json b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_4.json
new file mode 100644
index 0000000..4a48523
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/json_rag/modern_led_shoebox_fixtures_4.json
@@ -0,0 +1,12 @@
+{
+ "Fixture_Type": "Shoebox / Area Light",
+ "Technology": "LED",
+ "Specific_Model/Example_Identifier": "WSD Selectable Shoebox (300W model)",
+ "Manufacturer": "WSD LED Inc.",
+ "Description/Key_Features": "Wattage selectable (120W/180W/240W/300W). CCT selectable (4000K/5000K). High efficacy >145 lm/W. 0-10V dimming. Die-cast aluminum and PC construction. Wet location rated.",
+ "Dimensions (L x W x H or H x D)": "24.3\"L x 13.78\"W x 5.56\"H (612.2mm x 349.8mm x 115.8mm)",
+ "Weight": "16.01 lbs",
+ "Mounting_Details": "Slipfitter Mount, Wall Mount, Arm Mount (for square or round poles)",
+ "Image_URL": "wsd-selectable-shoebox.jpg",
+ "Source_Document_ID": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/o1_8db6de0ca7cd132513471b2d8c7fd44c_00250082.jpg b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/o1_8db6de0ca7cd132513471b2d8c7fd44c_00250082.jpg
new file mode 100644
index 0000000..0ea94b0
Binary files /dev/null and b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/o1_8db6de0ca7cd132513471b2d8c7fd44c_00250082.jpg differ
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/yoa-TP-01.png b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/yoa-TP-01.png
new file mode 100644
index 0000000..e85356c
Binary files /dev/null and b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/data/test_dataset/yoa-TP-01.png differ
diff --git a/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/utility_pole_analyze_lamp_model.ipynb b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/utility_pole_analyze_lamp_model.ipynb
new file mode 100644
index 0000000..5a26092
--- /dev/null
+++ b/street_view_insights/notebooks/Identify_lamp_make_model_from_RAG/utility_pole_analyze_lamp_model.ipynb
@@ -0,0 +1,709 @@
+{
+ "cells": [
+ {
+ "id": "a189c3d8",
+ "cell_type": "code",
+ "source": [
+ "# Copyright 2025 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# http://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "metadata": {
+ "id": "e6f2f438"
+ },
+ "outputs": [],
+ "execution_count": null
+ },
+ {
+ "id": "738e65e8",
+ "cell_type": "markdown",
+ "source": [
+ "
"
+ ],
+ "metadata": {}
+ },
+ {
+ "id": "733b62e5",
+ "cell_type": "markdown",
+ "source": [
+ "# Identify lamp make and model using Gemini 2.5 flash and a RAG\n",
+ "\n",
+ " This notebook demonstrates how to identify the make and model of a lamp using the Gemini 2.5 Flash model with a Retrieval Augmented Generation (RAG) approach.\n",
+ "\n",
+ " **Notebook Description:**\n",
+ "\n",
+ " The primary goal of this notebook is to leverage the advanced multimodal capabilities of Gemini 2.5 Flash to analyze images of lamps and extract specific information about their make and model. It employs a RAG strategy, which means it will likely involve:\n",
+ "\n",
+ " 1. **Image Input:** You'll provide images of lamps as input.\n",
+ " 2. **Information Retrieval (RAG):** The notebook will likely access an external knowledge base or a set of documents containing information about various lamp makes and models. This could be a local dataset, a cloud-hosted database, or even web search results.\n",
+ " 3. **Gemini 2.5 Flash Integration:** The Gemini 2.5 Flash model will process the input image and the retrieved information to identify the most probable make and model of the lamp.\n",
+ " 4. **Output:** The notebook will output the identified make and model, potentially with a confidence score or additional descriptive details.\n",
+ "\n",
+ " **Prerequisites for First-Time Users:**\n",
+ "\n",
+ " To successfully run this notebook, please ensure the following:\n",
+ "\n",
+ " 1. **Google Cloud Project:** You need an active Google Cloud project.\n",
+ " 2. **Enable APIs:**\n",
+ " * **Vertex AI API:** This is essential for accessing and using Gemini models. You can enable it through the Google Cloud Console under \"APIs & Services\" > \"Library\".\n",
+ " 3. **Authentication:**\n",
+ " * **Google Cloud Authentication:** Ensure your Colab environment is authenticated to your Google Cloud project. You can do this by running the following command in a code cell:\n",
+ " ```python\n",
+ " from google.colab import auth\n",
+ " auth.authenticate_user()\n",
+ " ```\n",
+ " Follow the prompts to log in with your Google account that has access to the project.\n",
+ " * **Service Account (Optional but Recommended for Production):** For more robust applications, consider setting up a service account with appropriate permissions (e.g., Vertex AI User role) and downloading its JSON key file. You can then authenticate using:\n",
+ " ```python\n",
+ " from google.colab import auth\n",
+ " from google.oauth2 import service_account\n",
+ "\n",
+ " # Replace 'path/to/your/service_account.json' with the actual path to your key file\n",
+ " credentials = service_account.Credentials.from_service_account_file('path/to/your/service_account.json')\n",
+ " auth.authenticate_user(credentials=credentials)\n",
+ " ```\n",
+ " 4. **Gemini API Key (if not using Vertex AI):** While this notebook likely uses Vertex AI, if it were to use a direct Gemini API, you would need to obtain an API key from Google AI Studio or Google Cloud Console.\n",
+ " 5. **Input Data:**\n",
+ " * **Lamp Images:** Prepare the images of the lamps you want to identify. These should be uploaded to your Colab environment or accessible from Google Cloud Storage.\n",
+ " * **RAG Data Source:** If the RAG component relies on a specific data source (e.g., a CSV file, a database, or a collection of documents), ensure this data is accessible and in the correct format. This might involve uploading files to Colab or configuring access to cloud storage.\n",
+ " 6. **Required Libraries:** The notebook will likely import several libraries. Ensure they are installed. Common ones include:\n",
+ " ```python\n",
+ " !pip install google-cloud-aiplatform google-cloud-storage Pillow\n",
+ " ```\n",
+ " (The specific libraries might vary based on the notebook's implementation.)\n",
+ "\n",
+ " By following these steps, you should be well-equipped to run this notebook and explore the capabilities of Gemini 2.5 Flash for lamp identification."
+ ],
+ "metadata": {
+ "id": "61d1bfb1"
+ }
+ },
+ {
+ "id": "e221b3e8",
+ "cell_type": "markdown",
+ "source": [
+ "## Install Required Libraries"
+ ],
+ "metadata": {
+ "id": "ab074d90"
+ }
+ },
+ {
+ "id": "73db7074",
+ "cell_type": "code",
+ "source": [
+ "!pip install --upgrade google-cloud-bigquery google-genai"
+ ],
+ "metadata": {
+ "id": "23f28877"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "3b155ba0",
+ "cell_type": "markdown",
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "**Important**: Replace the placeholder values below with your actual GCP Project ID and Region."
+ ],
+ "metadata": {
+ "id": "de710bd6"
+ }
+ },
+ {
+ "id": "123e099e",
+ "cell_type": "code",
+ "source": [
+ "PROJECT_ID = '' # @param {type:\"string\"}\n",
+ "REGION = 'us-central1' # @param {type:\"string\"}\n",
+ "BIGQUERY_DATASET = 'imagery_insights___preview___us' # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE = 'latest_observations' # @param {type:\"string\"}\n",
+ "ASSET_TYPE = 'ASSET_CLASS_UTILITY_POLE' # @param {type:\"string\"}\n",
+ "LIMIT = 100 # @param {type:\"integer\"}"
+ ],
+ "metadata": {
+ "id": "eefe0d49"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "b9cf87b3",
+ "cell_type": "code",
+ "source": [
+ "# Import necessary libraries\n",
+ "import vertexai\n",
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "from google.genai.types import Content, Part, Tool, Retrieval, VertexRagStore, VertexRagStoreRagResource\n",
+ "\n",
+ "# Initialize Vertex AI\n",
+ "vertexai.init(project=PROJECT_ID, location=REGION)\n",
+ "\n",
+ "print(\"Libraries imported and Vertex AI initialized.\")"
+ ],
+ "metadata": {
+ "id": "70c48cc9"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "b9bdd90b",
+ "cell_type": "markdown",
+ "source": [
+ "## Fetch Image URIs from BigQuery\n",
+ "\n",
+ "Next, we'll query a BigQuery table to get the GCS URIs of the images we want to classify."
+ ],
+ "metadata": {
+ "id": "ce2a0696"
+ }
+ },
+ {
+ "id": "44bfee4e",
+ "cell_type": "code",
+ "source": [
+ "# Updated SQL to explicitly select the required columns\n",
+ "BIGQUERY_SQL_QUERY = f\"\"\"\n",
+ "SELECT\n",
+ " asset_id,\n",
+ " observation_id,\n",
+ " gcs_uri\n",
+ "FROM\n",
+ " `{PROJECT_ID}.{BIGQUERY_DATASET}.{BIGQUERY_TABLE}`\n",
+ "WHERE\n",
+ " asset_type = \"{ASSET_TYPE}\"\n",
+ " AND gcs_uri IS NOT NULL\n",
+ "LIMIT {LIMIT};\n",
+ "\"\"\"\n",
+ "\n",
+ "# Execute BigQuery Query and store the full row data\n",
+ "try:\n",
+ " bigquery_client = bigquery.Client(project=PROJECT_ID)\n",
+ " query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)\n",
+ " # This new variable will hold all the data needed for the DataFrame\n",
+ " image_data_from_bq = [dict(row) for row in query_job]\n",
+ "\n",
+ " # For compatibility with the existing loop, we also extract the URIs\n",
+ " gcs_uris = [item.get(\"gcs_uri\") for item in image_data_from_bq if item.get(\"gcs_uri\")]\n",
+ "\n",
+ " print(f\"Successfully fetched {len(image_data_from_bq)} items from BigQuery:\")\n",
+ " for item in image_data_from_bq:\n",
+ " print(f\" - {item}\")\n",
+ "except Exception as e:\n",
+ " print(f\"An error occurred while querying BigQuery: {e}\")\n",
+ " image_data_from_bq = []\n",
+ " gcs_uris = []"
+ ],
+ "metadata": {
+ "id": "df6a38c6"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "3f6843ad",
+ "cell_type": "markdown",
+ "source": [
+ "## Define Image Classification Function\n",
+ "\n",
+ "This function takes a GCS URI and a prompt, then uses the Gemini 2.5 Flash model to generate a description of the image."
+ ],
+ "metadata": {
+ "id": "b05f2cff"
+ }
+ },
+ {
+ "id": "d0a61c2c",
+ "cell_type": "code",
+ "source": [
+ "def classify_image_with_gemini(gcs_uri: str, prompt: str) -> str:\n",
+ " \"\"\"\n",
+ " Classifies an image using the Gemini 2.5 Flash model by directly passing its GCS URI.\n",
+ " \"\"\"\n",
+ " MODEL = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "\n",
+ " try:\n",
+ " model = genai.GenerativeModel(MODEL)\n",
+ " image_part = Part.from_uri(uri=gcs_uri, mime_type=\"image/jpeg\")\n",
+ " responses = model.generate_content([image_part, prompt])\n",
+ " return responses.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error classifying image from URI {gcs_uri}: {e}\")\n",
+ " return \"Classification failed.\""
+ ],
+ "metadata": {
+ "id": "126856a8"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "473d8a74",
+ "cell_type": "markdown",
+ "source": [
+ "## Setup for RAG\n",
+ "\n",
+ "### Subtask:\n",
+ "Import the necessary libraries for Vertex AI Search and configure the RAG datastore."
+ ],
+ "metadata": {
+ "id": "1ae4daad"
+ }
+ },
+ {
+ "id": "e7c1ddd1",
+ "cell_type": "code",
+ "source": [
+ "# Define the path to the RAG Corpus\n",
+ "RAG_CORPUS_PATH = \"projects/sarthaks-lab/locations/us-east4/ragCorpora/6838716034162098176\" # @param {type:\"string\"}\n",
+ "\n",
+ "print(\"Configuration and imports updated for the new RAG method.\")"
+ ],
+ "metadata": {
+ "id": "85b3e0de"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "3c6efc05",
+ "cell_type": "markdown",
+ "source": [
+ "## Create a Lamp Post Check Function\n",
+ "\n",
+ "### Subtask:\n",
+ "Develop a function that takes an image URI and uses a simple prompt to quickly determine if the image contains a lamp post."
+ ],
+ "metadata": {
+ "id": "a3b4c5d6"
+ }
+ },
+ {
+ "id": "27e4ac89",
+ "cell_type": "code",
+ "source": [
+ "def is_lamp_post(gcs_uri: str) -> bool:\n",
+ " \"\"\"\n",
+ " Uses the Gemini model to quickly check if an image contains a lamp post.\n",
+ " \"\"\"\n",
+ " MODEL = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "\n",
+ " try:\n",
+ " model = genai.GenerativeModel(MODEL)\n",
+ " image_part = Part.from_uri(uri=gcs_uri, mime_type=\"image/jpeg\")\n",
+ " prompt = \"Does this image contain a lamp post or a street light? Answer with only 'yes' or 'no'.\"\n",
+ "\n",
+ " responses = model.generate_content([image_part, prompt])\n",
+ "\n",
+ " # Clean up the response and check for a 'yes'\n",
+ " return responses.text.strip().lower() == 'yes'\n",
+ " except Exception as e:\n",
+ " print(f\"Error checking image {gcs_uri}: {e}\")\n",
+ " return False\n",
+ "\n",
+ "# Example usage with a placeholder URI (will not work without a valid URI)\n",
+ "# print(is_lamp_post(\"gs://your-bucket/path/to/image.jpg\"))"
+ ],
+ "metadata": {
+ "id": "e7f8g9h0"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "12267ef0",
+ "cell_type": "markdown",
+ "source": [
+ "## Create a Detailed Description Function\n",
+ "\n",
+ "This cell defines a Python function `is_lamp_post` that takes a Google Cloud Storage (GCS) URI of an image as input. It utilizes the `gemini-2.5-flash` model from Vertex AI to determine if the image contains a lamp post or street light. The function sends the image and a specific prompt to the model and returns `True` if the model's response, after cleaning and converting to lowercase, is exactly 'yes', and `False` otherwise. It also includes basic error handling for the model interaction."
+ ],
+ "metadata": {
+ "id": "i1j2k3l4"
+ }
+ },
+ {
+ "id": "e74993f4",
+ "cell_type": "code",
+ "source": [
+ "def get_detailed_description(gcs_uri: str) -> str:\n",
+ " \"\"\"\n",
+ " Uses the Gemini model to generate a detailed description of a lamp post from an image.\n",
+ " \"\"\"\n",
+ " MODEL = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "\n",
+ " try:\n",
+ " model = genai.GenerativeModel(MODEL)\n",
+ " image_part = Part.from_uri(uri=gcs_uri, mime_type=\"image/jpeg\")\n",
+ " prompt = \"\"\"\n",
+ " Describe the lamp post in this image in detail. Focus on the following features:\n",
+ " - **Overall style**: (e.g., modern, vintage, ornate, simple)\n",
+ " - **Pole material and color**: (e.g., black metal, grey concrete, brown wood)\n",
+ " - **Lamp head shape and design**: (e.g., lantern-style, cobra head, globe, multi-light fixture)\n",
+ " - **Light source**: (e.g., LED, bulb type if visible)\n",
+ " - **Any distinctive features**: (e.g., decorative elements, banners, bases, arms)\n",
+ " Provide a concise, structured summary of these features.\n",
+ " \"\"\"\n",
+ "\n",
+ " responses = model.generate_content([image_part, prompt])\n",
+ " return responses.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error generating description for {gcs_uri}: {e}\")\n",
+ " return \"Description generation failed.\"\n",
+ "\n",
+ "# Example usage with a placeholder URI (will not work without a valid URI)\n",
+ "# print(get_detailed_description(\"gs://your-bucket/path/to/image.jpg\"))"
+ ],
+ "metadata": {
+ "id": "m5n6o7p8"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "9c89c9ae",
+ "cell_type": "markdown",
+ "source": [
+ "## Image Classification and Description with Gemini\n",
+ "\n",
+ "This section of the notebook focuses on leveraging the Gemini 2.5 Flash model for image analysis. It defines two key functions:\n",
+ "\n",
+ "1. `is_lamp_post`: This function quickly determines if an image contains a lamp post or street light by sending the image and a specific \"yes/no\" prompt to the Gemini model.\n",
+ "2. `get_detailed_description`: This function provides a more in-depth analysis, generating a structured and detailed description of a lamp post within an image, focusing on specific features like style, material, color, and design.\n",
+ "\n",
+ "These functions are designed to process images from GCS URIs and extract relevant information using advanced AI capabilities."
+ ],
+ "metadata": {
+ "id": "q9r1s2t3"
+ }
+ },
+ {
+ "id": "7e3070ee",
+ "cell_type": "code",
+ "source": [
+ "def get_make_and_model(client: genai.Client, description: str) -> str:\n",
+ " \"\"\"\n",
+ " Uses the RAG-grounded Gemini model to identify the make and model of a lamp post\n",
+ " based on its detailed description, using the google.genai SDK.\n",
+ " \"\"\"\n",
+ " try:\n",
+ " # The client is now passed as an argument to be reused.\n",
+ " prompt = f\"\"\" You are an expert asset inspector. Your task is to find the **closest possible match** for the lamp post described below using the provided dataset.\n",
+ " Do not give up easily. It is crucial that you find a match if one exists, even if it's not perfect.\n",
+ "\n",
+ " Description to analyze:\n",
+ " {description}\n",
+ "\n",
+ " Compare this description against the \"Description/Key_Features\" and \"Dimensions\" fields in the dataset. Focus on specific details like \\\"250W High Pressure Sodium\\\" or dimensions like \\\"31.5\\\"D x 14.75\\\"W x 14\\\"H\\\".\n",
+ "\n",
+ " Provide the answer in the format \"Make: [Make], Model: [Model]\".\n",
+ " **Only as a last resort**, if there is absolutely no resemblance to any entry, respond with \"Make: Unknown, Model: Unknown\".\n",
+ " \"\"\"\n",
+ "\n",
+ " # Construct the tool configuration with the RAG corpus\n",
+ " tools = [\n",
+ " Tool(\n",
+ " retrieval=Retrieval(\n",
+ " vertex_rag_store=VertexRagStore(\n",
+ " rag_resources=[\n",
+ " VertexRagStoreRagResource(\n",
+ " rag_corpus=RAG_CORPUS_PATH\n",
+ " )\n",
+ " ]\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " ]\n",
+ "\n",
+ " # As per your example, create a config object to hold the tools\n",
+ " generate_content_config = genai.types.GenerateContentConfig(\n",
+ " tools=tools\n",
+ " )\n",
+ " # Generate the content using the provided client and pass the tools via the config object\n",
+ " response = client.models.generate_content(\n",
+ " model=\"gemini-2.5-flash\",\n",
+ " contents=[prompt],\n",
+ " generation_config=generate_content_config,\n",
+ " )\n",
+ "\n",
+ " return response.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error identifying make and model: {e}\")\n",
+ " return \"Make and model identification failed.\""
+ ],
+ "metadata": {
+ "id": "u4v5w6x7"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "9801951b",
+ "cell_type": "markdown",
+ "source": [
+ "## Process Images for Lamp Post Detection and Description\n",
+ "\n",
+ "This section iterates through a list of image URIs. For each image, it first checks if a lamp post is present using the `is_lamp_post` function. If a lamp post is detected, it then proceeds to generate a detailed description of the lamp post using the `get_detailed_description` function. Finally, it attempts to identify the make and model of the lamp post based on the detailed description using the `get_make_and_model` function, leveraging a RAG-grounded Gemini model. The results of these steps (whether a lamp post was detected, its description, and its identified make/model) are then printed."
+ ],
+ "metadata": {
+ "id": "y8z9a1b2"
+ }
+ },
+ {
+ "id": "8f388876",
+ "cell_type": "code",
+ "source": [
+ "import json\n",
+ "\n",
+ "# Define Project and Region to ensure they are in scope\n",
+ "PROJECT_ID = 'sarthaks-lab'\n",
+ "REGION = 'us-central1'\n",
+ "\n",
+ "# Initialize the google.genai client once using the user-provided method\n",
+ "final_results = []\n",
+ "try:\n",
+ " # Per your instruction, initializing with project and location as direct arguments\n",
+ " genai_client = genai.Client(\n",
+ " vertexai=True, project=PROJECT_ID, location=REGION\n",
+ " )\n",
+ " print(\"google.genai client initialized successfully.\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error initializing google.genai client: {e}\")\n",
+ " genai_client = None\n",
+ "\n",
+ "# Main processing loop to analyze each image\n",
+ "if genai_client:\n",
+ " for uri in gcs_uris:\n",
+ " print(f\"Processing image: {uri}\")\n",
+ "\n",
+ " # Use the first function to check if it's a lamp post\n",
+ " if is_lamp_post(uri):\n",
+ " print(\" -> Lamp post detected. Generating detailed description...\")\n",
+ "\n",
+ " # If it is, get the detailed description\n",
+ " description = get_detailed_description(uri)\n",
+ " print(f\" -> Generated Description: {description.strip()}\")\n",
+ "\n",
+ " # Use the description to find the make and model with RAG\n",
+ " print(\" -> Identifying make and model using RAG...\")\n",
+ " make_and_model = get_make_and_model(genai_client, description)\n",
+ " print(f\" -> Identified Make and Model: {make_and_model.strip()}\")\n",
+ "\n",
+ " final_results.append({\n",
+ " \"uri\": uri,\n",
+ " \"is_lamp_post\": True,\n",
+ " \"description\": description,\n",
+ " \"make_and_model\": make_and_model\n",
+ " })\n",
+ " else:\n",
+ " print(\" -> Not a lamp post. Skipping analysis.\")\n",
+ " final_results.append({\n",
+ " \"uri\": uri,\n",
+ " \"is_lamp_post\": False,\n",
+ " \"description\": \"N/A\",\n",
+ " \"make_and_model\": \"N/A\"\n",
+ " })\n",
+ "\n",
+ " print(\"-\"*50)\n",
+ "\n",
+ " print(\"\\n--- Analysis Complete: Final Results ---\")\n",
+ " print(json.dumps(final_results, indent=2))\n",
+ "else:\n",
+ " print(\"google.genai client was not initialized. Cannot proceed with analysis.\")"
+ ],
+ "metadata": {
+ "id": "c3d4e5f6"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "b9acb4d4",
+ "cell_type": "markdown",
+ "source": [
+ "## Process Images and Create DataFrame\n",
+ "\n",
+ "This section runs the analysis loop, stores the results, and then displays them in a DataFrame."
+ ],
+ "metadata": {
+ "id": "g7h8i9j1"
+ }
+ },
+ {
+ "id": "3275e658",
+ "cell_type": "code",
+ "source": [
+ "import re\n",
+ "import pandas as pd\n",
+ "\n",
+ "# Define Project and Region to ensure they are in scope\n",
+ "PROJECT_ID = 'sarthaks-lab' # @param {type:\"string\"}\n",
+ "REGION = 'us-central1' # @param {type:\"string\"}\n",
+ "\n",
+ "# This list will hold the structured data for the final DataFrame\n",
+ "dataframe_results = []\n",
+ "\n",
+ "# Initialize the google.genai client\n",
+ "try:\n",
+ " genai_client = genai.Client(\n",
+ " vertexai=True, project=PROJECT_ID, location=REGION\n",
+ " )\n",
+ " print(\"google.genai client initialized successfully.\")\n",
+ "except Exception as e:\n",
+ " print(f\"Error initializing google.genai client: {e}\")\n",
+ " genai_client = None\n",
+ "\n",
+ "# Main processing loop\n",
+ "if 'genai_client' in locals() and genai_client:\n",
+ " # Iterate through the full data fetched from BigQuery\n",
+ " for item in image_data_from_bq:\n",
+ " uri = item.get(\"gcs_uri\")\n",
+ " asset_id = item.get(\"asset_id\")\n",
+ " observation_id = item.get(\"observation_id\")\n",
+ "\n",
+ " if not uri:\n",
+ " print(f\"Skipping item with missing gcs_uri: {item}\")\n",
+ " continue\n",
+ "\n",
+ " print(f\"Processing image for asset {asset_id}: {uri}\")\n",
+ "\n",
+ " if is_lamp_post(uri):\n",
+ " print(\" -> Lamp post detected. Generating detailed description...\")\n",
+ " description = get_detailed_description(uri)\n",
+ "\n",
+ " print(\" -> Identifying make and model using RAG...\")\n",
+ " make_and_model_str = get_make_and_model(genai_client, description)\n",
+ " print(f\" -> Identified: {make_and_model_str.strip()}\")\n",
+ "\n",
+ " # Use regex to parse the Make and Model from the response string\n",
+ " match = re.match(r\"Make:\\s*(.*?),?\\s*Model:\\s*(.*)\", make_and_model_str.strip(), re.IGNORECASE)\n",
+ "\n",
+ " if match:\n",
+ " make = match.group(1).strip()\n",
+ " model = match.group(2).strip()\n",
+ "\n",
+ " # Add to results list only if a specific make/model was found\n",
+ " if make.lower() not in [\"unknown\", \"n/a\"] and model.lower() not in [\"unknown\", \"n/a\", \"generic incandescent fixture\", \"generic mv cobra head\"]:\n",
+ " print(f\" -> SUCCESS: Found Make: {make}, Model: {model}\")\n",
+ " dataframe_results.append({\n",
+ " \"asset_id\": asset_id,\n",
+ " \"observation_id\": observation_id,\n",
+ " \"make\": make,\n",
+ " \"model\": model\n",
+ " })\n",
+ " else:\n",
+ " print(\" -> INFO: Generic or unknown make/model found. Skipping for DataFrame.\")\n",
+ " else:\n",
+ " print(\" -> INFO: Could not parse make and model from response. Skipping for DataFrame.\")\n",
+ " else:\n",
+ " print(\" -> Not a lamp post. Skipping analysis.\")\n",
+ " print(\"-\" * 50)\n",
+ "\n",
+ " print(\"\\n--- Analysis Complete --- \")\n",
+ " if dataframe_results:\n",
+ " results_df = pd.DataFrame(dataframe_results)\n",
+ " print(\"\\n--- Identified Lamp Posts --- \")\n",
+ " display(results_df)\n",
+ " else:\n",
+ " print(\"\\n--- No specific lamp post models were identified. ---\")\n",
+ "else:\n",
+ " print(\"google.genai client was not initialized. Cannot proceed with analysis.\")"
+ ],
+ "metadata": {
+ "id": "k1l2m3n4"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "id": "e7ca11be",
+ "cell_type": "markdown",
+ "source": [
+ "## Save the dataframe to BigQuery\n",
+ "\n",
+ "This cell initializes the google.genai client, which is used for interacting with Gemini models.\n",
+ "It takes the Google Cloud Project ID and Region as parameters.\n",
+ "The client is initialized with vertexai=True to use Vertex AI's backend.\n",
+ "Error handling is included in case the client initialization fails.\n",
+ "The initialized client is stored in the 'genai_client' variable."
+ ],
+ "metadata": {
+ "id": "o5p6q7r8"
+ }
+ },
+ {
+ "id": "bd859966",
+ "cell_type": "code",
+ "source": [
+ "def save_dataframe_to_bigquery(df, project_id, dataset_id, table_id):\n",
+ " \"\"\"\n",
+ " Saves a pandas DataFrame to a specified BigQuery table.\n",
+ "\n",
+ " Args:\n",
+ " df (pd.DataFrame): The DataFrame to save.\n",
+ " project_id (str): Your Google Cloud project ID.\n",
+ " dataset_id (str): The BigQuery dataset ID.\n",
+ " table_id (str): The BigQuery table ID to create or append to.\n",
+ " \"\"\"\n",
+ " if 'df' not in locals() or df.empty:\n",
+ " print(\"The DataFrame is empty or does not exist. Nothing to save to BigQuery.\")\n",
+ " return\n",
+ "\n",
+ " try:\n",
+ " table_ref = f\"{project_id}.{dataset_id}.{table_id}\"\n",
+ " print(f\"Attempting to save DataFrame to BigQuery table: {table_ref}\")\n",
+ " df.to_gbq(destination_table=table_ref, project_id=project_id, if_exists='append')\n",
+ " print(f\"Successfully saved DataFrame to BigQuery table: {table_ref}\")\n",
+ " except Exception as e:\n",
+ " print(f\"An error occurred while saving to BigQuery: {e}\")\n",
+ "\n",
+ "# --- Example Usage (edit and uncomment to run) ---\n",
+ "# if 'results_df' in locals() and not results_df.empty:\n",
+ "# BIGQUERY_DATASET = 'your_dataset' # @param {type:\"string\"}\n",
+ "# BIGQUERY_TABLE = 'identified_lamp_posts' # @param {type:\"string\"}\n",
+ "# save_dataframe_to_bigquery(results_df, PROJECT_ID, BIGQUERY_DATASET, BIGQUERY_TABLE)\n",
+ "# else:\n",
+ "# print(\"DataFrame 'results_df' not found or is empty. Skipping BigQuery upload.\")"
+ ],
+ "metadata": {
+ "id": "s9t1u2v3"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat_minor": 5,
+ "nbformat": 4
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Image_quality_analysis/Image_quality_inspector.ipynb b/street_view_insights/notebooks/Image_quality_analysis/Image_quality_inspector.ipynb
new file mode 100644
index 0000000..d2f2f3c
--- /dev/null
+++ b/street_view_insights/notebooks/Image_quality_analysis/Image_quality_inspector.ipynb
@@ -0,0 +1,444 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "KbtKyp2nPxOE"
+ },
+ "source": [
+ "# Image Quality Analysis using Gemini and code execution"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "RO4vwPqvPxOF"
+ },
+ "source": [
+ "This notebook uses the Gemini model to analyze various quality aspects of images stored in Google Cloud Storage. It fetches image URIs from a BigQuery table and then uses prompts to instruct the Gemini model to perform the following analyses:\n",
+ "\n",
+ "* **Black Blurb Percentage:** Calculates the percentage of black or near-black pixels.\n",
+ "* **Resolution:** Determines the width and height of the image.\n",
+ "* **Sharpness:** Calculates a sharpness score based on the variance of the Laplacian.\n",
+ "* **Brightness:** Calculates the average brightness of the image.\n",
+ "* **Distortion:** Provides a qualitative assessment of lens distortion.\n",
+ "\n",
+ "\n",
+ "### Sharpness Score:\n",
+ "\n",
+ "```\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "\n",
+ "Load the image\n",
+ "img_path = 'image.png'\n",
+ "image = cv2.imread(img_path)\n",
+ "\n",
+ " Convert to grayscale\n",
+ "gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ " Compute the Laplacian\n",
+ "laplacian = cv2.Laplacian(gray, cv2.CV_64F, ksize=3)\n",
+ "\n",
+ " Calculate variance\n",
+ "variance = laplacian.var()\n",
+ "\n",
+ " Normalize the score to 0-100\n",
+ " Assume a typical variance range from 0 to 1000.\n",
+ " Linearly scale the calculated variance to fit within the 0-100 range.\n",
+ " If variance > 1000, cap the score at 100.\n",
+ "\n",
+ "score = (variance / 1000) * 100\n",
+ "if score > 100:\n",
+ " score = 100\n",
+ "\n",
+ " Round to the nearest whole number\n",
+ "final_score = int(round(score))\n",
+ "\n",
+ "```\n",
+ "\n",
+ " Print the score\n",
+ "print(final_score)\n",
+ "\n",
+ "### Brightness:\n",
+ "\n",
+ "To calculate the average brightness of the provided image, I will first convert it to grayscale and then compute the mean pixel intensity.\n",
+ "\n",
+ "1. **Grayscale Conversion:** The image is converted from its original color format to a single-channel grayscale image.\n",
+ "2. **Mean Pixel Intensity Calculation:** All pixel values in the grayscale image are summed and then divided by the total number of pixels.\n",
+ "\n",
+ "Using image processing tools, the average brightness (mean pixel intensity) of the original image, after converting it to grayscale, is approximately **145.54**.\n",
+ "Distortion: Upon analyzing the provided image, the most prominent straight line is the utility pole."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9PC7zduxPxOG"
+ },
+ "source": [
+ "## Install required libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "DaIPz1XFPxOG"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install --upgrade google-cloud-bigquery google-cloud-aiplatform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7E2gLGvyPxOG"
+ },
+ "source": [
+ "## Configuration"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "9Yif6fUMPxOH"
+ },
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = '' # @param {type:\"string\"}\n",
+ "REGION = '' # @param {type:\"string\"}\n",
+ "MODEL_ID = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE = \"\" # @param {type:\"string\"}\n",
+ "ASSET_TYPE = \"ASSET_CLASS_UTILITY_POLE\" # @param {type:\"string\"}\n",
+ "LIMIT = 1 # @param {type:\"integer\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "cTExiX4YPxOH"
+ },
+ "source": [
+ "## Imports and Vertex AI Initialization"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GL_occQXPxOH",
+ "outputId": "6f0c925a-88a1-453b-baf9-870ec8dea62a"
+ },
+ "outputs": [],
+ "source": [
+ "import vertexai\n",
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "from google.genai.types import (\n",
+ " HttpOptions,\n",
+ " Content,\n",
+ " Part,\n",
+ " Tool,\n",
+ " ToolCodeExecution,\n",
+ " GenerateContentConfig,\n",
+ ")\n",
+ "import pandas as pd\n",
+ "import re\n",
+ "import json\n",
+ "\n",
+ "print(\"pandas, re, and json libraries have been successfully imported.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ghcWqqtwPxOH"
+ },
+ "source": [
+ "## Fetch Image URIs from BigQuery"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "0iVFV0DXPxOH"
+ },
+ "outputs": [],
+ "source": [
+ "BIGQUERY_SQL_QUERY = f\"\"\"\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " `{PROJECT_ID}.{BIGQUERY_TABLE}`\n",
+ " WHERE asset_type = \"{ASSET_TYPE}\"\n",
+ "LIMIT {LIMIT};\n",
+ "\"\"\"\n",
+ "\n",
+ "try:\n",
+ " bigquery_client = bigquery.Client(project=PROJECT_ID)\n",
+ " query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)\n",
+ " query_response_data = [dict(row) for row in query_job]\n",
+ " gcs_uris = [item.get(\"gcs_uri\") for item in query_response_data if item.get(\"gcs_uri\")]\n",
+ " print(f\"Successfully fetched {len(gcs_uris)} GCS URIs:\")\n",
+ " for uri in gcs_uris:\n",
+ " print(uri)\n",
+ "except Exception as e:\n",
+ " print(f\"An error occurred while querying BigQuery: {e}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qFCT7-lnPxOH"
+ },
+ "source": [
+ "## Define Analysis Prompts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "id": "GYvj4aq3PxOH"
+ },
+ "outputs": [],
+ "source": [
+ "PROMPT_BLACK_BLURB = \"\"\"Analyze the provided image and calculate the percentage of black or near-black pixels (pixels with an intensity less than 10 out of 255). Provide only the final percentage as a float.\"\"\"\n",
+ "PROMPT_RESOLUTION = \"\"\"Analyze the provided image and determine its resolution. Provide the output as a JSON object with 'width' and 'height' keys.\"\"\"\n",
+ "PROMPT_SHARPNESS = \"\"\"You will be provided with an image for analysis.\n",
+ "\n",
+ "Your task is to calculate a sharpness score for this image by writing and executing code. Follow these steps exactly:\n",
+ "\n",
+ "Load the Image: Access the provided image file.\n",
+ "Convert to Grayscale: Convert the color image into a single-channel grayscale image. This is a necessary preprocessing step for the Laplacian operator.\n",
+ "Compute the Laplacian: Apply the Laplacian operator to the grayscale image. Use a 3x3 kernel for this operation (e.g., cv2.Laplacian in OpenCV with ksize=3).\n",
+ "Calculate Variance: Compute the variance of the resulting Laplacian matrix. The variance value is the raw sharpness metric.\n",
+ "Normalize the Score: Map the calculated variance to a normalized score from 0 to 100.\n",
+ "Assume a typical variance range for images is from 0 (blurry) to 1000 (very sharp).\n",
+ "Linearly scale the calculated variance to fit within the 0-100 range. For example, a variance of 500 would map to a score of 50.\n",
+ "If the calculated variance is greater than 1000, the final score should be capped at 100.\n",
+ "Format the Output: Your final output must be ONLY the calculated sharpness score, rounded to the nearest whole number (integer). Do not include any other text, explanation, or code.\"\"\"\n",
+ "PROMPT_BRIGHTNESS = \"\"\"Analyze the provided image and calculate its average brightness. Convert the image to grayscale and find the mean pixel intensity. Provide the result as a float between 0 and 255.\"\"\"\n",
+ "PROMPT_DISTORTION = \"\"\"Analyze the provided image for lens distortion. Detect straight lines in the image and assess their curvature. Provide a qualitative assessment, such as 'Low distortion detected' or 'Potential distortion or lack of straight lines'.\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "80v8AW-wPxOI"
+ },
+ "source": [
+ "## Run Analysis"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "91973bfb"
+ },
+ "outputs": [],
+ "source": [
+ "# Initialize the genai Client and the code execution Tool\n",
+ "client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)\n",
+ "code_execution_tool = Tool(code_execution=ToolCodeExecution())\n",
+ "\n",
+ "def analyze_image(gcs_uri: str, prompt: str) -> str:\n",
+ " \"\"\"Analyzes an image from GCS using the Gemini model with code execution, returning None on error.\"\"\"\n",
+ " try:\n",
+ " contents = [\n",
+ " prompt,\n",
+ " Part(file_data={'file_uri': gcs_uri, 'mime_type': 'image/jpeg'})\n",
+ " ]\n",
+ " # Update the generate_content call to include the code execution tool\n",
+ " response = client.models.generate_content(\n",
+ " model=MODEL_ID,\n",
+ " contents=contents,\n",
+ " config=GenerateContentConfig(\n",
+ " tools=[code_execution_tool],\n",
+ " temperature=0,\n",
+ " )\n",
+ " )\n",
+ " return response.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error analyzing '{gcs_uri}': {e}\")\n",
+ " return None\n",
+ "\n",
+ "results = []\n",
+ "\n",
+ "if 'query_response_data' in locals() and query_response_data:\n",
+ " for item in query_response_data:\n",
+ " asset_id = item.get(\"asset_id\")\n",
+ " uri = item.get(\"gcs_uri\")\n",
+ "\n",
+ " if not uri or not asset_id:\n",
+ " continue\n",
+ "\n",
+ " print(f\"--- Analyzing {uri} ---\")\n",
+ "\n",
+ " # Analyze image with all prompts\n",
+ " black_blurb_response = analyze_image(uri, PROMPT_BLACK_BLURB)\n",
+ " resolution_response = analyze_image(uri, PROMPT_RESOLUTION)\n",
+ " sharpness_response = analyze_image(uri, PROMPT_SHARPNESS)\n",
+ " brightness_response = analyze_image(uri, PROMPT_BRIGHTNESS)\n",
+ " distortion_response = analyze_image(uri, PROMPT_DISTORTION)\n",
+ "\n",
+ " # Parse results, now robust to None responses from analyze_image\n",
+ " try:\n",
+ " black_blurb_percentage = float(re.search(r'[-+]?\\d*\\.?\\d+', black_blurb_response).group())\n",
+ " except (ValueError, AttributeError, TypeError):\n",
+ " black_blurb_percentage = None\n",
+ "\n",
+ " width, height = None, None\n",
+ " try:\n",
+ " json_match = re.search(r'```json\\s*(\\{.*?\\})\\s*```', resolution_response, re.DOTALL)\n",
+ " if json_match:\n",
+ " json_str = json_match.group(1)\n",
+ " else:\n",
+ " start_index = resolution_response.find('{')\n",
+ " end_index = resolution_response.rfind('}') + 1\n",
+ " if start_index != -1 and end_index != 0:\n",
+ " json_str = resolution_response[start_index:end_index]\n",
+ " else:\n",
+ " raise ValueError(\"No JSON found\")\n",
+ " resolution_data = json.loads(json_str)\n",
+ " width = int(resolution_data['width'])\n",
+ " height = int(resolution_data['height'])\n",
+ " except (json.JSONDecodeError, AttributeError, KeyError, TypeError, ValueError):\n",
+ " width, height = None, None\n",
+ "\n",
+ " try:\n",
+ " sharpness_score = int(float(re.search(r'[-+]?\\d*\\.?\\d+', sharpness_response).group()))\n",
+ " except (ValueError, AttributeError, TypeError):\n",
+ " sharpness_score = None\n",
+ "\n",
+ " try:\n",
+ " numbers = re.findall(r'[-+]?\\d*\\.?\\d+', brightness_response)\n",
+ " brightness = float(numbers[-1]) if numbers else None\n",
+ " except (ValueError, AttributeError, TypeError):\n",
+ " brightness = None\n",
+ "\n",
+ " distortion_assessment = distortion_response.strip() if distortion_response else None\n",
+ "\n",
+ " # Store results\n",
+ " result_item = {\n",
+ " \"asset_id\": asset_id,\n",
+ " \"black_blurb_percentage\": black_blurb_percentage,\n",
+ " \"width\": width,\n",
+ " \"height\": height,\n",
+ " \"sharpness_score\": sharpness_score,\n",
+ " \"brightness\": brightness,\n",
+ " \"distortion\": distortion_assessment\n",
+ " }\n",
+ " results.append(result_item)\n",
+ "\n",
+ " # Create and display DataFrame\n",
+ " if results:\n",
+ " df = pd.DataFrame(results)\n",
+ " df.set_index('asset_id', inplace=True)\n",
+ " print(\"\\n--- Analysis Results ---\")\n",
+ " display(df)\n",
+ " else:\n",
+ " print(\"No data to display.\")\n",
+ "\n",
+ "else:\n",
+ " print(\"No GCS URIs were found to analyze.\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 449
+ },
+ "id": "Sd3NWkkNrU85",
+ "outputId": "a133d90b-5188-4eb1-b8c0-5769eacceb69"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKi9JREFUeJzt3XlQlHeC//FPQ0N7BTqODQ0TgsELMSIadxksr42OF2sS1xonyKhj4RErZhMtHMOOKVE3mpo1E8tMRjc1MZoa/WXMYSZrZZyArCYqGi+8L4gGjSAbGWjwIALP7w/LnvR4Bhu78/X9qnqq6Od5up/vk29IvfP0043NsixLAAAAhgoJ9AAAAACaE7EDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMRO5Isy5LH4xFfOQQAgHmIHUk1NTWKjIxUTU1NoIcCAAD8jNgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGC2js5Obmymaz+SyJiYne7SUlJRo1apRcLpciIiI0ZswYnTt3zuc1KisrlZmZqYiICDmdTmVlZam2tvZenwoAAAhSAb+y061bN5WVlXmXLVu2SJIuXLigIUOGyGazqaCgQFu3btW3336rkSNHqrGx0fv8zMxMHTp0SHl5eVq/fr0+++wzTZkyJVCnAwAAgow94AOw2+V2u69bv3XrVp06dUp79+5VRESEJGnVqlV68MEHVVBQoMGDB+vIkSPasGGDdu7cqd69e0uSXn/9dY0YMUKLFy9WbGzsPT0XAAAQfAJ+ZefEiROKjY1VQkKCMjMzVVpaKkmqq6uTzWaTw+Hw7tuiRQuFhIR4r/4UFhbK6XR6Q0eSBg8erJCQEO3YseOmx6yrq5PH4/FZAACAmQIaO6mpqVq5cqU2bNigZcuW6eTJk+rXr59qamr0k5/8RK1bt9bs2bN18eJFXbhwQdnZ2WpoaFBZWZkkqby8XFFRUT6vabfb1bZtW5WXl9/0uIsWLVJkZKR3iYuLa9bzBAAAgRPQ2Bk+fLh+9rOfKTk5WUOHDtUnn3yiqqoqrV27Vi6XS++9957+53/+R23atFFkZKSqqqrUq1cvhYTc3bBzcnJUXV3tXU6fPu2nMwIAAMEm4PfsfJfT6VTnzp1VXFwsSRoyZIhKSkr0zTffyG63y+l0yu12KyEhQZLkdrtVUVHh8xr19fWqrKy84X1A1zgcDp+3xwAAgLkCfs/Od9XW1qqkpEQxMTE+69u1ayen06mCggJVVFToiSeekCSlpaWpqqpKu3fv9u5bUFCgxsZGpaam3tOxAwCA4BTQKzvZ2dkaOXKk4uPjdfbsWc2dO1ehoaHKyMiQJL399tvq2rWrXC6XCgsL9fzzz2vGjBnq0qWLJKlr164aNmyYJk+erOXLl+vKlSuaPn26nn76aT6JBQAAJAU4ds6cOaOMjAydP39eLpdLffv21fbt2+VyuSRJx44dU05OjiorK9W+fXv9+te/1owZM3xeY/Xq1Zo+fboGDRqkkJAQjR49WkuXLg3E6QAAgCBksyzLCvQgAs3j8SgyMlLV1dXe7/QBAABmCKp7dgAAAPyN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABgtoLGTm5srm83msyQmJnq3l5eXa9y4cXK73WrdurV69eqlDz74wOc1KisrlZmZqYiICDmdTmVlZam2tvZenwoAAAhS9kAPoFu3bsrPz/c+ttv/PqTx48erqqpKH3/8sdq1a6c1a9ZozJgx2rVrl3r27ClJyszMVFlZmfLy8nTlyhVNnDhRU6ZM0Zo1a+75uQAAgOAT8Lex7Ha73G63d2nXrp1327Zt2/Tcc8/pn//5n5WQkKA5c+bI6XRq9+7dkqQjR45ow4YN+sMf/qDU1FT17dtXr7/+ut59912dPXs2UKcEAACCSMBj58SJE4qNjVVCQoIyMzNVWlrq3danTx/96U9/UmVlpRobG/Xuu+/q8uXLGjhwoCSpsLBQTqdTvXv39j5n8ODBCgkJ0Y4dO256zLq6Onk8Hp8FAACYKaCxk5qaqpUrV2rDhg1atmyZTp48qX79+qmmpkaStHbtWl25ckU/+tGP5HA4NHXqVK1bt04dO3aUdPWenqioKJ/XtNvtatu2rcrLy2963EWLFikyMtK7xMXFNd9JAgCAgApo7AwfPlw/+9nPlJycrKFDh+qTTz5RVVWV1q5dK0l66aWXVFVVpfz8fO3atUszZ87UmDFjdODAgbs6bk5Ojqqrq73L6dOn/XE6AAAgCAX8BuXvcjqd6ty5s4qLi1VSUqLf/e53OnjwoLp16yZJ6tGjhz7//HO98cYbWr58udxutyoqKnxeo76+XpWVlXK73Tc9jsPhkMPhaNZzAQAAwSHg9+x8V21trUpKShQTE6OLFy9KkkJCfIcYGhqqxsZGSVJaWpqqqqq8NyxLUkFBgRobG5WamnrvBg4AAIJWQGMnOztbmzdv1qlTp7Rt2zaNGjVKoaGhysjIUGJiojp27KipU6fqiy++UElJiV599VXl5eXpqaeekiR17dpVw4YN0+TJk/XFF19o69atmj59up5++mnFxsYG8tQAAECQCOjbWGfOnFFGRobOnz8vl8ulvn37avv27XK5XJKkTz75RC+++KJGjhyp2tpadezYUatWrdKIESO8r7F69WpNnz5dgwYNUkhIiEaPHq2lS5cG6pQAAECQsVmWZQV6EIHm8XgUGRmp6upqRUREBHo4AADAj4Lqnh0AAAB/I3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGC2js5Obmymaz+SyJiYmSpFOnTl237dry3nvveV+jtLRU6enpatWqlaKiojRr1izV19cH6pQAAECQsQd6AN26dVN+fr73sd1+dUhxcXEqKyvz2ffNN9/Uf/3Xf2n48OGSpIaGBqWnp8vtdmvbtm0qKyvT+PHjFRYWpoULF967kwAAAEEr4LFjt9vldruvWx8aGnrd+nXr1mnMmDFq06aNJOnTTz/V4cOHlZ+fr+joaKWkpGjBggWaPXu2cnNzFR4efsNj1tXVqa6uzvvY4/H48YwAAEAwCfg9OydOnFBsbKwSEhKUmZmp0tLSG+63e/duFRUVKSsry7uusLBQ3bt3V3R0tHfd0KFD5fF4dOjQoZsec9GiRYqMjPQucXFx/jshAAAQVAIaO6mpqVq5cqU2bNigZcuW6eTJk+rXr59qamqu2/ett95S165d1adPH++68vJyn9CR5H1cXl5+0+Pm5OSourrau5w+fdpPZwQAAIJNQN/GunbvjSQlJycrNTVV8fHxWrt2rc8VnEuXLmnNmjV66aWX/HJch8Mhh8Phl9cCAADBLeBvY32X0+lU586dVVxc7LP+/fff18WLFzV+/Hif9W63W+fOnfNZd+3xje4DAgAA95+gip3a2lqVlJQoJibGZ/1bb72lJ554Qi6Xy2d9WlqaDhw4oIqKCu+6vLw8RUREKCkp6Z6MGQAABLeAxk52drY2b96sU6dOadu2bRo1apRCQ0OVkZHh3ae4uFifffaZJk2adN3zhwwZoqSkJI0bN0779u3TX//6V82ZM0fPPvssb1MBAABJAb5n58yZM8rIyND58+flcrnUt29fbd++3ecKzooVK/TQQw9pyJAh1z0/NDRU69ev17Rp05SWlqbWrVtrwoQJmj9//r08DQAAEMRslmVZgR5EoHk8HkVGRqq6uloRERGBHg4AAPCjoLpnBwAAwN+IHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGC0JsVOQkKCzp8/f936qqoqJSQk3PWgAAAA/KVJsXPq1Ck1NDRct76urk5ff/31XQ8KAADAX77XXz3/+OOPvT//9a9/VWRkpPdxQ0ODNm7cqPbt2/ttcAAAAHfre/3V85CQqxeCbDab/vFpYWFhat++vV599VX967/+q39H2cz4q+cAAJjre13ZaWxslCQ98sgj2rlzp9q1a9csgwIAAPCX7xU715w8edLf4wAAAGgWTYodSdq4caM2btyoiooK7xWfa1asWHHXAwMAAPCHJsXOvHnzNH/+fPXu3VsxMTGy2Wz+HhcAAIBfNCl2li9frpUrV2rcuHH+Hg8AAIBfNel7dr799lv16dPH32MBAADwuybFzqRJk7RmzRp/jwUAAMDv7vhtrJkzZ3p/bmxs1Jtvvqn8/HwlJycrLCzMZ9/f/va3/hshAADAXbjj2Nm7d6/P45SUFEnSwYMHfdZzszIAAAgm3+sblE3FNygD5rp8pUG1dfVq47CrRVhooIcDIACa/D07ABDM/q+mTn/cfkobDp7TpSsNahkWquGPuvWLtHi1a+MI9PAA3ENNurIzatSoG75dZbPZ1KJFC3Xs2FFjx45Vly5d/DLI5saVHcAs/1dTp+f+314VV9SohT1U4fYQfVvfqMv1DeoY9YB+N7YnwQPcR5r0aazIyEgVFBRoz549stlsstls2rt3rwoKClRfX68//elP6tGjh7Zu3erv8QLAbf1x+ykVV9TI1cahB1uHq7XDrgdbh8vVxqHiihr9sfCrQA8RwD3UpNhxu90aO3asvvzyS33wwQf64IMPVFJSol/84hfq0KGDjhw5ogkTJmj27Nn+Hi8A3NLlKw3acPCcWthDZQ/1/U+cPTREDnuo/nKoXJevNARohADutSbFzltvvaUXXnhBISF/f3pISIiee+45vfnmm7LZbJo+ffp1n9QCgOZWW1evS1caFG6/8X/eHPYQXfr26k3LAO4PTYqd+vp6HT169Lr1R48eVUPD1f9batGiBR9DB3DPtXHY1TIsVN/WN95we119o1qGh6qNg89nAPeLJv22jxs3TllZWfqP//gP/dM//ZMkaefOnVq4cKHGjx8vSdq8ebO6devmv5ECwB1oERaqYY9Ga/WOUtU3NPq8lVXf0Ki6+gb9rNtDfAwduI806dNYDQ0NeuWVV/S73/1O586dkyRFR0frueee0+zZsxUaGqrS0lKFhITooYce8vug/Y1PYwFm+aa2TtPXXP00lsMeKoc9RHX1V0OnU9QDep1PYwH3lbv+UkGPxyNJP+hIIHYA83xTW6c/Fn6lvxwq16VvG9QyPFTDu/E9O8D9iG9QFrEDmIxvUAZwx/fs9OrVSxs3btSDDz6onj173vLm4z179vhlcABwt1qEhRI5wH3ujmPnySeflMNx9dLvU0891VzjAQAA8CvexhJvYwEAYLImfc+OJFVVVekPf/iDcnJyVFlZKenq21dff/213wYHAABwt5r0PTv79+/X4MGDFRkZqVOnTmny5Mlq27atPvzwQ5WWluqdd97x9zgBAACapElXdmbOnKlf/vKXOnHihFq0aOFdP2LECH322Wd+GxwAAMDdalLs7Ny5U1OnTr1u/Y9//GOVl5ff9aAAAAD8pUmx43A4vF8m+F3Hjx+Xy+W660EBAAD4S5Ni54knntD8+fN15coVSZLNZlNpaalmz56t0aNH+3WAAAAAd6NJsfPqq6+qtrZWUVFRunTpkgYMGKCOHTuqTZs2evnll/09RgAAgCa7q+/Z2bp1q/bt26fa2lr16tVLgwcP9ufY7hm+ZwcAAHM1OXY2btyojRs3qqKiQo2NjT7bVqxY4ZfB3SvEDgAA5mrS9+zMmzdP8+fPV+/evRUTE3PLv5MFAAAQSE2KneXLl2vlypUaN26cv8cDAADgV026Qfnbb79Vnz597vrgubm5stlsPktiYqLPPoWFhXr88cfVunVrRUREqH///rp06ZJ3e2VlpTIzMxURESGn06msrCzV1tbe9dgAAIAZmhQ7kyZN0po1a/wygG7duqmsrMy7bNmyxbutsLBQw4YN05AhQ/TFF19o586dmj59ukJC/j7szMxMHTp0SHl5eVq/fr0+++wzTZkyxS9jAwAAP3x3fIPyzJkzvT83NjZq1apVSk5OVnJyssLCwnz2/e1vf3tHB8/NzdVHH32koqKiG27/yU9+op/+9KdasGDBDbcfOXJESUlJ2rlzp3r37i1J2rBhg0aMGKEzZ84oNjb2jsbBDcoAAJjrju/Z2bt3r8/jlJQUSdLBgwd91n/fm5VPnDih2NhYtWjRQmlpaVq0aJEefvhhVVRUaMeOHcrMzFSfPn1UUlKixMREvfzyy+rbt6+kq1d+nE6nN3QkafDgwQoJCdGOHTs0atSoGx6zrq5OdXV13sc3+jZoAABghjuOnf/93//1+8FTU1O1cuVKdenSRWVlZZo3b5769eungwcP6ssvv5R09erP4sWLlZKSonfeeUeDBg3SwYMH1alTJ5WXlysqKsrnNe12u9q2bXvLv9G1aNEizZs3z+/nAwAAgk+TPo3lL8OHD/f+nJycrNTUVMXHx2vt2rXq2rWrJGnq1KmaOHGiJKlnz57auHGjVqxYoUWLFjX5uDk5OT5vy3k8HsXFxTX59QAAQPAKaOz8I6fTqc6dO6u4uFiPP/64JCkpKclnn65du6q0tFSS5Ha7VVFR4bO9vr5elZWVcrvdNz2Ow+GQw+Hw8+gBAEAwatKnsZpLbW2tSkpKFBMTo/bt2ys2NlbHjh3z2ef48eOKj4+XJKWlpamqqkq7d+/2bi8oKFBjY6NSU1Pv6dgBAEBwCuiVnezsbI0cOVLx8fE6e/as5s6dq9DQUGVkZMhms2nWrFmaO3euevTooZSUFK1atUpHjx7V+++/L+nqVZ5hw4Zp8uTJWr58ua5cuaLp06fr6aefvuNPYgEAALMFNHbOnDmjjIwMnT9/Xi6XS3379tX27dvlcrkkSS+88IIuX76sGTNmqLKyUj169FBeXp46dOjgfY3Vq1dr+vTpGjRokEJCQjR69GgtXbo0UKcEAACCzF391XNT8D07AACYK6ju2QEAAPA3YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGC0gMZObm6ubDabz5KYmOjdPnDgwOu2P/PMMz6vUVpaqvT0dLVq1UpRUVGaNWuW6uvr7/WpAACAIGUP9AC6deum/Px872O73XdIkydP1vz5872PW7Vq5f25oaFB6enpcrvd2rZtm8rKyjR+/HiFhYVp4cKFzT94AAAQ9AIeO3a7XW63+6bbW7VqddPtn376qQ4fPqz8/HxFR0crJSVFCxYs0OzZs5Wbm6vw8PAbPq+urk51dXXexx6P5+5OAgAABK2A37Nz4sQJxcbGKiEhQZmZmSotLfXZvnr1arVr106PPvqocnJydPHiRe+2wsJCde/eXdHR0d51Q4cOlcfj0aFDh256zEWLFikyMtK7xMXF+f/EAABAUAjolZ3U1FStXLlSXbp0UVlZmebNm6d+/frp4MGDeuCBBzR27FjFx8crNjZW+/fv1+zZs3Xs2DF9+OGHkqTy8nKf0JHkfVxeXn7T4+bk5GjmzJnexx6Ph+ABAMBQAY2d4cOHe39OTk5Wamqq4uPjtXbtWmVlZWnKlCne7d27d1dMTIwGDRqkkpISdejQocnHdTgccjgcdzV2AADwwxDwt7G+y+l0qnPnziouLr7h9tTUVEnybne73Tp37pzPPtce3+o+IAAAcP8Iqtipra1VSUmJYmJibri9qKhIkrzb09LSdODAAVVUVHj3ycvLU0REhJKSkpp9vAAAIPjZLMuyAnXw7OxsjRw5UvHx8Tp79qzmzp2roqIiHT58WB6PR2vWrNGIESP0ox/9SPv379eMGTP00EMPafPmzZKufvQ8JSVFsbGx+s1vfqPy8nKNGzdOkyZN+l4fPfd4PIqMjFR1dbUiIiKa63QBAEAABPSenTNnzigjI0Pnz5+Xy+VS3759tX37drlcLl2+fFn5+flasmSJLly4oLi4OI0ePVpz5szxPj80NFTr16/XtGnTlJaWptatW2vChAk+38sDAADubwG9shMsuLIDAIC5guqeHQAAAH8jdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABgtoLGTm5srm83msyQmJl63n2VZGj58uGw2mz766COfbaWlpUpPT1erVq0UFRWlWbNmqb6+/h6dAQAACHb2QA+gW7duys/P9z62268f0pIlS2Sz2a5b39DQoPT0dLndbm3btk1lZWUaP368wsLCtHDhwmYdNwAA+GEIeOzY7Xa53e6bbi8qKtKrr76qXbt2KSYmxmfbp59+qsOHDys/P1/R0dFKSUnRggULNHv2bOXm5io8PLy5hw8AAIJcwO/ZOXHihGJjY5WQkKDMzEyVlpZ6t128eFFjx47VG2+8ccMgKiwsVPfu3RUdHe1dN3ToUHk8Hh06dOimx6yrq5PH4/FZAACAmQIaO6mpqVq5cqU2bNigZcuW6eTJk+rXr59qamokSTNmzFCfPn305JNP3vD55eXlPqEjyfu4vLz8psddtGiRIiMjvUtcXJyfzggAAASbgL6NNXz4cO/PycnJSk1NVXx8vNauXSuXy6WCggLt3bvX78fNycnRzJkzvY89Hg/BAwCAoQL+NtZ3OZ1Ode7cWcXFxSooKFBJSYmcTqfsdrv3xuXRo0dr4MCBkiS3261z5875vMa1x7e6D8jhcCgiIsJnAQAAZgqq2KmtrVVJSYliYmL04osvav/+/SoqKvIukvTaa6/p7bffliSlpaXpwIEDqqio8L5GXl6eIiIilJSUFIhTAAAAQSagb2NlZ2dr5MiRio+P19mzZzV37lyFhoYqIyNDLpfrhldnHn74YT3yyCOSpCFDhigpKUnjxo3Tb37zG5WXl2vOnDl69tln5XA47vXpAACAIBTQ2Dlz5owyMjJ0/vx5uVwu9e3bV9u3b5fL5bqj54eGhmr9+vWaNm2a0tLS1Lp1a02YMEHz589v5pEDAIAfCptlWVagBxFoHo9HkZGRqq6u5v4dAAAME1T37AAAAPgbsQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMBqxAwAAjEbsAAAAoxE7AADAaMQOAAAwGrEDAACMZg/0AIKBZVmSJI/HE+CRAACA7+uBBx6QzWa76XZiR1JNTY0kKS4uLsAjAQAA31d1dbUiIiJuut1mXbuscR9rbGzU2bNnb1uGwcDj8SguLk6nT5++5cTi3mJeghdzE5yYl+D1Q5wbruzcgZCQED300EOBHsb3EhER8YP5l/B+wrwEL+YmODEvwcukueEGZQAAYDRiBwAAGI3Y+YFxOByaO3euHA5HoIeC72BeghdzE5yYl+Bl4txwgzIAADAaV3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdoLMK6+8IpvNphdeeEGSVFlZqeeee05dunRRy5Yt9fDDD+vf//3fVV1d7fO80tJSpaenq1WrVoqKitKsWbNUX18fgDMw1z/OjSRNnTpVHTp0UMuWLeVyufTkk0/q6NGjPs9jbprXjeblGsuyNHz4cNlsNn300Uc+25iX5nejuRk4cKBsNpvP8swzz/g8j7lpXjf7nSksLNTjjz+u1q1bKyIiQv3799elS5e82ysrK5WZmamIiAg5nU5lZWWptrb2Ho++afgG5SCyc+dO/fd//7eSk5O9686ePauzZ89q8eLFSkpK0ldffaVnnnlGZ8+e1fvvvy9JamhoUHp6utxut7Zt26aysjKNHz9eYWFhWrhwYaBOxyg3mhtJeuyxx5SZmamHH35YlZWVys3N1ZAhQ3Ty5EmFhoYyN83sZvNyzZIlS274FfLMS/O71dxMnjxZ8+fP9z5u1aqV92fmpnndbF4KCws1bNgw5eTk6PXXX5fdbte+ffsUEvL3ayKZmZkqKytTXl6erly5ookTJ2rKlClas2bNvT6N789CUKipqbE6depk5eXlWQMGDLCef/75m+67du1aKzw83Lpy5YplWZb1ySefWCEhIVZ5ebl3n2XLllkRERFWXV1dcw/deN9nbvbt22dJsoqLiy3LYm6a0+3mZe/evdaPf/xjq6yszJJkrVu3zruNeWlet5qb2/0OMTfN51bzkpqaas2ZM+emzz18+LAlydq5c6d33V/+8hfLZrNZX3/9dXMO2y94GytIPPvss0pPT9fgwYNvu++1v+5qt1+9MFdYWKju3bsrOjrau8/QoUPl8Xh06NChZhvz/eJO5+bChQt6++239cgjjyguLk4Sc9OcbjUvFy9e1NixY/XGG2/I7XZft515aV63+51ZvXq12rVrp0cffVQ5OTm6ePGidxtz03xuNi8VFRXasWOHoqKi1KdPH0VHR2vAgAHasmWLd5/CwkI5nU717t3bu27w4MEKCQnRjh077tk5NBVvYwWBd999V3v27NHOnTtvu+8333yjBQsWaMqUKd515eXlPv9hkOR9XF5e7t/B3mfuZG5+//vf61e/+pUuXLigLl26KC8vT+Hh4ZKYm+Zyu3mZMWOG+vTpoyeffPKG25mX5nO7uRk7dqzi4+MVGxur/fv3a/bs2Tp27Jg+/PBDScxNc7nVvHz55ZeSpNzcXC1evFgpKSl65513NGjQIB08eFCdOnVSeXm5oqKifJ5nt9vVtm3bH8S8EDsBdvr0aT3//PPKy8tTixYtbrmvx+NRenq6kpKSlJube28GeB+707nJzMzUT3/6U5WVlWnx4sUaM2aMtm7detv5RNPcbl4+/vhjFRQUaO/evQEY3f3tTn5nvvs/at27d1dMTIwGDRqkkpISdejQ4V4N9b5yu3lpbGyUdPUDFxMnTpQk9ezZUxs3btSKFSu0aNGiezre5sDbWAG2e/duVVRUqFevXrLb7bLb7dq8ebOWLl0qu92uhoYGSVJNTY2GDRumBx54QOvWrVNYWJj3Ndxut86dO+fzutce3+gSPu7Mnc5NZGSkOnXqpP79++v999/X0aNHtW7dOknMTXO43bzk5eWppKRETqfTu12SRo8erYEDB0piXprLnf7OfFdqaqokqbi4WBJz0xxuNy/XrpwlJSX5PK9r164qLS2VdPWffUVFhc/2+vp6VVZW/iDmhSs7ATZo0CAdOHDAZ93EiROVmJio2bNnKzQ0VB6PR0OHDpXD4dDHH398XZmnpaXp5ZdfVkVFhfcyY15eniIiIq77lxd37k7m5h9ZliXLslRXVyeJuWkOt5uXdu3aaerUqT7bu3fvrtdee00jR46UxLw0l6b8zhQVFUmSYmJiJDE3zeF285KQkKDY2FgdO3bMZ5/jx49r+PDhkq7OS1VVlXbv3q3HHntMklRQUKDGxkZvsAa1QN8hjet99y756upqKzU11erevbtVXFxslZWVeZf6+nrLsiyrvr7eevTRR60hQ4ZYRUVF1oYNGyyXy2Xl5OQE8CzM9N25KSkpsRYuXGjt2rXL+uqrr6ytW7daI0eOtNq2bWudO3fOsizm5l653Sd89A+fxmJe7p3vzk1xcbE1f/58a9euXdbJkyetP//5z1ZCQoLVv39/7/7Mzb3xj78zr732mhUREWG999571okTJ6w5c+ZYLVq08H6y1LIsa9iwYVbPnj2tHTt2WFu2bLE6depkZWRkBGD03x9XdoLcnj17vHe6d+zY0WfbyZMn1b59e4WGhmr9+vWaNm2a0tLS1Lp1a02YMMHneyzgfy1atNDnn3+uJUuW6G9/+5uio6PVv39/bdu2zft/pMxNcGJeAiM8PFz5+flasmSJLly4oLi4OI0ePVpz5szx7sPcBMYLL7ygy5cva8aMGaqsrFSPHj2Ul5fncx/V6tWrNX36dA0aNEghISEaPXq0li5dGsBR3zmbZVlWoAcBAADQXLhBGQAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgfAD97KlSvldDpvuU9ubq5SUlJuuc+pU6dks9m8f68JgBmIHQA/eD//+c91/Pjx7/WcX/7yl3rqqaeaZ0AAggp/GwvAD17Lli3VsmXLQA8DQJDiyg6AoLR+/Xo5nU41NDRIkoqKimSz2fTiiy9695k0aZJ+8Ytf3PBtrFdeeUXR0dF64IEHlJWVpcuXL3u35ebmatWqVfrzn/8sm80mm82mTZs2ebd/+eWX+pd/+Re1atVKPXr0UGFhYbOeK4DmRewACEr9+vVTTU2N9u7dK0navHmz2rVr5xMlmzdv1sCBA6977tq1a5Wbm6uFCxdq165diomJ0e9//3vv9uzsbI0ZM0bDhg1TWVmZysrK1KdPH+/2X//618rOzlZRUZE6d+6sjIwM1dfXN9u5AmhexA6AoBQZGamUlBRv3GzatEkzZszQ3r17VVtbq6+//lrFxcUaMGDAdc9dsmSJsrKylJWVpS5duug///M/lZSU5N3epk0btWzZUg6HQ263W263W+Hh4d7t2dnZSk9PV+fOnTVv3jx99dVXKi4ubvZzBtA8iB0AQWvAgAHatGmTLMvS559/rn/7t39T165dtWXLFm3evFmxsbHq1KnTdc87cuSIUlNTfdalpaXd8XGTk5O9P8fExEiSKioqmngWAAKNG5QBBK2BAwdqxYoV2rdvn8LCwpSYmKiBAwdq06ZN+tvf/nbDqzr+EBYW5v3ZZrNJkhobG5vlWACaH1d2AASta/ftvPbaa96wuRY7mzZtuuH9OpLUtWtX7dixw2fd9u3bfR6Hh4d7b34GYDZiB0DQevDBB5WcnKzVq1d7w6Z///7as2ePjh8/ftMrO88//7xWrFiht99+W8ePH9fcuXN16NAhn33at2+v/fv369ixY/rmm2905cqV5j4dAAFC7AAIagMGDFBDQ4M3dtq2baukpCS53W516dLlhs/5+c9/rpdeekm/+tWv9Nhjj+mrr77StGnTfPaZPHmyunTpot69e8vlcmnr1q3NfSoAAsRmWZYV6EEAAAA0F67sAAAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAAwGjEDgAAMNr/B/SwPIXP9FShAAAAAElFTkSuQmCC",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from matplotlib import pyplot as plt\n",
+ "df.plot(kind='scatter', x='width', y='height', s=32, alpha=.8)\n",
+ "plt.gca().spines[['top', 'right',]].set_visible(False)"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "name": "Image_quality_inspector.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/street_view_insights/notebooks/Image_quality_analysis/README.md b/street_view_insights/notebooks/Image_quality_analysis/README.md
new file mode 100644
index 0000000..69b6761
--- /dev/null
+++ b/street_view_insights/notebooks/Image_quality_analysis/README.md
@@ -0,0 +1,44 @@
+# Image Quality Analysis using Gemini
+
+This notebook demonstrates how to use the Gemini model to perform various quality analyses on images stored in Google Cloud Storage.
+
+## Overview
+
+The notebook fetches image URIs from a BigQuery table and then uses the Gemini model to analyze the following quality aspects for each image:
+
+* **Black Blurb Percentage:** Calculates the percentage of black or near-black pixels.
+* **Resolution:** Determines the width and height of the image.
+* **Sharpness:** Calculates a sharpness score based on the variance of the Laplacian.
+* **Brightness:** Calculates the average brightness of the image.
+* **Distortion:** Provides a qualitative assessment of lens distortion.
+
+The results of the analysis are then compiled into a pandas DataFrame for easy viewing and further analysis.
+
+## Prerequisites
+
+Before running this notebook, ensure you have the following:
+
+* A Google Cloud Platform project with the Vertex AI API enabled.
+* A BigQuery table containing the GCS URIs of the images you want to analyze.
+* Authentication configured for your GCP project.
+
+## Installation
+
+The notebook requires the following Python libraries:
+
+```bash
+pip install --upgrade google-cloud-bigquery google-cloud-aiplatform pandas
+```
+
+## Usage
+
+1. **Configuration:**
+ * Set the `PROJECT_ID`, `REGION`, `MODEL_ID`, `BIGQUERY_TABLE`, `ASSET_TYPE`, and `LIMIT` variables in the "Configuration" section of the notebook.
+
+2. **Run the Notebook:**
+ * Execute the cells in the notebook sequentially.
+
+The notebook will then:
+1. Fetch the image URIs from your BigQuery table.
+2. Analyze each image using the specified prompts and the Gemini model.
+3. Display the analysis results in a pandas DataFrame.
diff --git a/street_view_insights/notebooks/Lean_angle_detection_of_pole/README.md b/street_view_insights/notebooks/Lean_angle_detection_of_pole/README.md
new file mode 100644
index 0000000..88b4dab
--- /dev/null
+++ b/street_view_insights/notebooks/Lean_angle_detection_of_pole/README.md
@@ -0,0 +1,32 @@
+# Utility Pole Lean Angle Detection
+
+This notebook demonstrates how to use the Gemini 1.5 Flash model with code execution to determine the lean angle of utility poles from images.
+
+## Description
+
+The notebook automates the process of analyzing utility pole images to detect their lean angle. It performs the following steps:
+
+1. **Fetch Image URIs**: It queries a BigQuery table to get the Google Cloud Storage (GCS) URIs of the utility pole images to be analyzed.
+2. **Image Analysis with Gemini**: For each image, it uses the Gemini 1.5 Flash model. The model is given a prompt that instructs it to use code execution to perform a series of image processing tasks.
+3. **Computer Vision Techniques**: The prompt guides the model to perform Canny edge detection and Hough line transforms to identify the pole within the image and calculate its angle relative to the vertical axis.
+4. **Display Results**: The final output is a pandas DataFrame that lists each asset's ID along with its calculated lean angle.
+
+## Configuration
+
+Before running the notebook, you must update the variables in the "Configuration" section with your own settings:
+
+* `PROJECT_ID`: Your Google Cloud Project ID.
+* `REGION`: The Google Cloud region for your project.
+* `MODEL_ID`: The Gemini model to be used (e.g., "gemini-1.5-flash-001").
+* `BIGQUERY_DATASET_ID`: The ID of the BigQuery dataset containing the image data.
+* `BIGQUERY_TABLE`: The ID of the BigQuery table with the image URIs.
+* `ASSET_TYPE`: The asset type to filter for in the BigQuery table (e.g., "ASSET_CLASS_UTILITY_POLE").
+* `LIMIT`: The maximum number of images to process.
+
+## Usage
+
+1. Open the `utility_pole_lean_angle_detection.ipynb` notebook.
+2. Fill in your project-specific details in the "Configuration" section.
+3. Execute the cells of the notebook in order.
+
+The notebook will then connect to BigQuery, process the images using the Gemini model, and display a table of the results.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Lean_angle_detection_of_pole/Utility_pole_lean_angle_detection.ipynb b/street_view_insights/notebooks/Lean_angle_detection_of_pole/Utility_pole_lean_angle_detection.ipynb
new file mode 100644
index 0000000..b2a927b
--- /dev/null
+++ b/street_view_insights/notebooks/Lean_angle_detection_of_pole/Utility_pole_lean_angle_detection.ipynb
@@ -0,0 +1,1238 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "id": "fndJV2bY2J7v"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "KbtKyp2nPxOE"
+ },
+ "source": [
+ "# Calculate lean angle of a pole using code execution"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "RO4vwPqvPxOF"
+ },
+ "source": [
+ "This notebook uses the Gemini model to analyze lean angle of a pole. It fetches image URIs from a BigQuery table and then uses prompts to instruct the Gemini model to perform the following analyses:\n",
+ "- Detect the pole\n",
+ "- Run canny Edge detection model\n",
+ "- Run Hough line detection algorithm\n",
+ "- Output the angle as an integer\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9PC7zduxPxOG"
+ },
+ "source": [
+ "## Install required libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "DaIPz1XFPxOG",
+ "outputId": "acfec2d4-0068-499d-ff92-f715cb6b5b20"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install --upgrade google-cloud-bigquery\n",
+ "!pip install --upgrade google-genai"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7E2gLGvyPxOG"
+ },
+ "source": [
+ "## Configuration"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "9Yif6fUMPxOH"
+ },
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = '' # @param {type:\"string\"}\n",
+ "REGION = '' # @param {type:\"string\"}\n",
+ "MODEL_ID = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "BIGQUERY_DATASET_ID = '' # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE = \"latest_observations\" # @param {type:\"string\"}\n",
+ "ASSET_TYPE = \"ASSET_CLASS_UTILITY_POLE\" # @param {type:\"string\"}\n",
+ "LIMIT = 5 # @param {type:\"integer\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "cTExiX4YPxOH"
+ },
+ "source": [
+ "## Imports and Vertex AI Initialization"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "id": "GL_occQXPxOH"
+ },
+ "outputs": [],
+ "source": [
+ "import vertexai\n",
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "from google.genai.types import (\n",
+ " GenerateContentConfig,\n",
+ " HarmBlockThreshold,\n",
+ " HarmCategory,\n",
+ " HttpOptions,\n",
+ " Part,\n",
+ " Tool,\n",
+ " ToolCodeExecution,\n",
+ " SafetySetting,\n",
+ ")\n",
+ "import pandas as pd\n",
+ "import re\n",
+ "import json\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "jQWPio2j_Nmc"
+ },
+ "source": [
+ "## Initialize the vertex AI SDK"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2ssFuxoL_Mqn",
+ "outputId": "a041251b-d821-463f-da93-c320192c7e69"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "pandas, re, and json libraries have been successfully imported and Vertex AI initialized.\n"
+ ]
+ }
+ ],
+ "source": [
+ "vertexai.init(project=PROJECT_ID, location=REGION)\n",
+ "print(\"pandas, re, and json libraries have been successfully imported and Vertex AI initialized.\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ghcWqqtwPxOH"
+ },
+ "source": [
+ "## Fetch Image URIs from BigQuery"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0iVFV0DXPxOH",
+ "outputId": "36b4ac5d-11c1-4bdc-d0bb-04fdfeaaf24a"
+ },
+ "outputs": [],
+ "source": [
+ "BIGQUERY_SQL_QUERY = f\"\"\"\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " `{PROJECT_ID}.{BIGQUERY_DATASET_ID}.{BIGQUERY_TABLE}`\n",
+ " WHERE asset_type = \"{ASSET_TYPE}\"\n",
+ "LIMIT {LIMIT};\n",
+ "\"\"\"\n",
+ "\n",
+ "try:\n",
+ " bigquery_client = bigquery.Client(project=PROJECT_ID)\n",
+ " query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)\n",
+ " query_response_data = [dict(row) for row in query_job]\n",
+ " gcs_uris = [item.get(\"gcs_uri\") for item in query_response_data if item.get(\"gcs_uri\")]\n",
+ " print(f\"Successfully fetched {len(gcs_uris)} GCS URIs:\")\n",
+ " for uri in gcs_uris:\n",
+ " print(uri)\n",
+ "except Exception as e:\n",
+ " print(f\"An error occurred while querying BigQuery: {e}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qFCT7-lnPxOH"
+ },
+ "source": [
+ "## Define Analysis Prompts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "id": "a937d0e0"
+ },
+ "outputs": [],
+ "source": [
+ "PROMPT = \"\"\"You will be provided with an image for analysis.\n",
+ "\n",
+ "Your task is to perform Canny edge detection and Hough angle calculations to determine the angle of a pole in the image. Follow these steps exactly:\n",
+ "\n",
+ "1. Load the Image: Access the provided image file.\n",
+ "2. Convert to Grayscale: Convert the color image into a single-channel grayscale image.\n",
+ "3. Apply Gaussian Blur: Apply a Gaussian blur to smooth the image and reduce noise.\n",
+ "4. Filter for Vertical/Near-Vertical Lines: Identify lines that are likely to represent a pole. These are typically near-vertical lines.\n",
+ "5. Perform Canny Edge Detection: Apply the Canny edge detection algorithm to find edges in the image. Use appropriate thresholds.\n",
+ "6. Perform Hough Line Transform: Apply the Probabilistic Hough Line Transform to detect straight lines in the Canny edge-detected image.\n",
+ "7. Calculate Pole Angle: From the detected pole lines, calculate the average angle of the pole relative to the vertical axis.\n",
+ "8. Format the Output: Your final output must be ONLY the calculated angle, rounded to the nearest whole number (integer). Do not include any other text, explanation, or code.\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7Db6nfAL_j9d"
+ },
+ "source": [
+ "## Create vertex client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "tr_UnRzMAkTD"
+ },
+ "outputs": [],
+ "source": [
+ "client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "80v8AW-wPxOI"
+ },
+ "source": [
+ "## Run Analysis"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "91973bfb",
+ "outputId": "e9cf30bf-0b3b-491f-dc67-3f0aa4ff7619"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "--- Analyzing gs://geoai_published_ba3433e0-d709-4622-9577-66ab23587729__us/e8761cd3-c872-43cd-90aa-3ee99378090f/v0/o1:566314da74215735b48631b99f3b8429:00250082.jpg ---\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:google_genai.types:Warning: there are non-text parts in the response: ['executable_code', 'code_execution_result'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "# Code:\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "import math\n",
+ "\n",
+ "# Image file name\n",
+ "image_path = \"f_geoai_published_ba3433e0_d709_4622_9577_66ab23587729__us_e8761cd3_c872_43cd_90aa_3ee99378090f_v0_o1_566314da74215735b48631b99f3b8429_00250082.jpg\"\n",
+ "\n",
+ "# 1. Load the Image\n",
+ "image = cv2.imread(image_path)\n",
+ "\n",
+ "if image is None:\n",
+ " raise FileNotFoundError(f\"Could not load image at {image_path}\")\n",
+ "\n",
+ "# 2. Convert to Grayscale\n",
+ "gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ "# 3. Apply Gaussian Blur\n",
+ "# Kernel size (5, 5) and standard deviation 0\n",
+ "blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)\n",
+ "\n",
+ "# 5. Perform Canny Edge Detection\n",
+ "# Adjust thresholds based on image characteristics.\n",
+ "# Lower threshold for weak edges, higher for strong edges.\n",
+ "# A common ratio is 1:2 or 1:3.\n",
+ "low_threshold = 50\n",
+ "high_threshold = 150\n",
+ "edges = cv2.Canny(blurred_image, low_threshold, high_threshold)\n",
+ "\n",
+ "# 6. Perform Hough Line Transform\n",
+ "# Parameters for Probabilistic Hough Line Transform\n",
+ "# rho: Distance resolution of the accumulator in pixels.\n",
+ "# theta: Angle resolution of the accumulator in radians.\n",
+ "# threshold: Accumulator threshold parameter. Only lines with enough votes are returned.\n",
+ "# minLineLength: Minimum line length. Line segments shorter than this are rejected.\n",
+ "# maxLineGap: Maximum allowed gap between line segments to treat them as a single line.\n",
+ "rho = 1\n",
+ "theta = np.pi / 180 # 1 degree\n",
+ "threshold = 100\n",
+ "min_line_length = 100\n",
+ "max_line_gap = 10\n",
+ "\n",
+ "lines = cv2.HoughLinesP(edges, rho, theta, threshold, minLineLength=min_line_length, maxLineGap=max_line_gap)\n",
+ "\n",
+ "# 7. Calculate Pole Angle\n",
+ "angles = []\n",
+ "if lines is not None:\n",
+ " for line in lines:\n",
+ " x1, y1, x2, y2 = line[0]\n",
+ " # Calculate angle in radians\n",
+ " # atan2(y2-y1, x2-x1) gives angle with x-axis.\n",
+ " # We want angle with vertical axis.\n",
+ " # Vertical line has angle pi/2 (90 degrees) with x-axis.\n",
+ " # So, angle_with_vertical = abs(angle_with_x_axis - pi/2)\n",
+ " \n",
+ " # Avoid division by zero for perfectly vertical lines\n",
+ " if x2 - x1 == 0:\n",
+ " angle_rad = np.pi / 2\n",
+ " else:\n",
+ " angle_rad = np.arctan2(y2 - y1, x2 - x1)\n",
+ " \n",
+ " # Convert to degrees\n",
+ " angle_deg = np.degrees(angle_rad)\n",
+ " \n",
+ " # We are interested in lines that are close to vertical (90 degrees or -90 degrees with x-axis)\n",
+ " # or 0 degrees with y-axis.\n",
+ " # Let's normalize angles to be between 0 and 180 degrees.\n",
+ " if angle_deg < 0:\n",
+ " angle_deg += 180\n",
+ " \n",
+ " # Filter for near-vertical lines.\n",
+ " # A perfectly vertical line would have an angle of 90 degrees with the x-axis.\n",
+ " # We want the deviation from the vertical.\n",
+ " # So, if angle_deg is 90, deviation is 0.\n",
+ " # If angle_deg is 85 or 95, deviation is 5.\n",
+ " deviation_from_vertical = abs(angle_deg - 90)\n",
+ " \n",
+ " # Consider lines that are within a certain range of vertical (e.g., +/- 10 degrees)\n",
+ " # The pole is clearly visible and straight, so we can be strict.\n",
+ " if deviation_from_vertical < 10: # Adjust this threshold if needed\n",
+ " angles.append(deviation_from_vertical)\n",
+ "\n",
+ "# Calculate the average angle\n",
+ "if angles:\n",
+ " average_angle = np.mean(angles)\n",
+ "else:\n",
+ " # If no suitable lines are found, return a default or indicate an error.\n",
+ " # For this problem, we expect to find lines.\n",
+ " average_angle = 0 # Or raise an error, depending on requirements.\n",
+ "\n",
+ "# 8. Format the Output\n",
+ "# Round to the nearest whole number\n",
+ "final_angle = round(average_angle)\n",
+ "\n",
+ "print(final_angle)\n",
+ "# Outcome:\n",
+ "5\n",
+ "\n",
+ "--- Analyzing gs://geoai_published_ba3433e0-d709-4622-9577-66ab23587729__us/e8761cd3-c872-43cd-90aa-3ee99378090f/v0/o1:01cdba18fbed09262fba4f92e67ddb00:00250082.jpg ---\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:google_genai.types:Warning: there are non-text parts in the response: ['executable_code', 'code_execution_result'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "# Code:\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "import math\n",
+ "\n",
+ "# 1. Load the Image\n",
+ "image_path = \"f_geoai_published_ba3433e0_d709_4622_9577_66ab23587729__us_e8761cd3_c872_43cd_90aa_3ee99378090f_v0_o1_01cdba18fbed09262fba4f92e67ddb00_00250082.jpg\"\n",
+ "image = cv2.imread(image_path)\n",
+ "\n",
+ "if image is None:\n",
+ " raise FileNotFoundError(f\"Image not found at {image_path}\")\n",
+ "\n",
+ "# 2. Convert to Grayscale\n",
+ "gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ "# 3. Apply Gaussian Blur\n",
+ "# Kernel size (5, 5) and standard deviation 0 are common starting points.\n",
+ "blurred = cv2.GaussianBlur(gray, (5, 5), 0)\n",
+ "\n",
+ "# 4. Perform Canny Edge Detection\n",
+ "# Adjust thresholds as needed. Lower threshold for weak edges, higher for strong edges.\n",
+ "# A common heuristic is to use a 1:2 or 1:3 ratio for low:high thresholds.\n",
+ "edges = cv2.Canny(blurred, 50, 150)\n",
+ "\n",
+ "# 5. Perform Hough Line Transform\n",
+ "# Parameters for HoughLinesP:\n",
+ "# rho: Distance resolution of the accumulator in pixels.\n",
+ "# theta: Angle resolution of the accumulator in radians.\n",
+ "# threshold: Accumulator threshold parameter. Only lines with enough votes are returned.\n",
+ "# minLineLength: Minimum line length. Line segments shorter than this are rejected.\n",
+ "# maxLineGap: Maximum allowed gap between line segments to treat them as a single line.\n",
+ "lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=50, maxLineGap=10)\n",
+ "\n",
+ "# 6. Filter for Vertical/Near-Vertical Lines and Calculate Pole Angle\n",
+ "pole_angles = []\n",
+ "if lines is not None:\n",
+ " for line in lines:\n",
+ " x1, y1, x2, y2 = line[0]\n",
+ " # Calculate angle in radians\n",
+ " angle_rad = math.atan2(y2 - y1, x2 - x1)\n",
+ " # Convert to degrees\n",
+ " angle_deg = math.degrees(angle_rad)\n",
+ "\n",
+ " # Normalize angle to be between 0 and 180 degrees\n",
+ " if angle_deg < 0:\n",
+ " angle_deg += 180\n",
+ "\n",
+ " # We are looking for vertical lines.\n",
+ " # A perfectly vertical line would have an angle of 90 degrees.\n",
+ " # An angle of 0 or 180 degrees is horizontal.\n",
+ " # We want the angle relative to the vertical axis.\n",
+ " # So, if the line is 90 degrees, its angle relative to vertical is 0.\n",
+ " # If the line is 80 degrees, its angle relative to vertical is 10.\n",
+ " # If the line is 100 degrees, its angle relative to vertical is 10.\n",
+ " angle_from_vertical = abs(angle_deg - 90)\n",
+ "\n",
+ " # Consider lines that are close to vertical (e.g., within 30 degrees of vertical)\n",
+ " # The pole in the image appears quite straight, so a tighter range might be better.\n",
+ " # Let's try a range of 0 to 15 degrees from vertical.\n",
+ " if angle_from_vertical < 15: # This threshold might need adjustment\n",
+ " pole_angles.append(angle_from_vertical)\n",
+ "\n",
+ "# Calculate the average angle\n",
+ "if pole_angles:\n",
+ " average_angle = np.mean(pole_angles)\n",
+ "else:\n",
+ " average_angle = 0 # Default if no suitable lines are found\n",
+ "\n",
+ "# 7. Format the Output: Round to the nearest whole number\n",
+ "final_angle = round(average_angle)\n",
+ "\n",
+ "print(final_angle)\n",
+ "# Outcome:\n",
+ "1\n",
+ "\n",
+ "--- Analyzing gs://geoai_published_ba3433e0-d709-4622-9577-66ab23587729__us/e8761cd3-c872-43cd-90aa-3ee99378090f/v0/o1:b83b2016a26a802b1ccb71c27753d65c:00250082.jpg ---\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:google_genai.types:Warning: there are non-text parts in the response: ['executable_code', 'code_execution_result'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "# Code:\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "import math\n",
+ "\n",
+ "# 1. Load the Image\n",
+ "image_path = \"f_geoai_published_ba3433e0_d709_4622_9577_66ab23587729__us_e8761cd3_c872_43cd_90aa_3ee99378090f_v0_o1_b83b2016a26a802b1ccb71c27753d65c_00250082.jpg\"\n",
+ "image = cv2.imread(image_path)\n",
+ "\n",
+ "if image is None:\n",
+ " raise FileNotFoundError(f\"Could not load image at {image_path}\")\n",
+ "\n",
+ "# 2. Convert to Grayscale\n",
+ "gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ "# 3. Apply Gaussian Blur\n",
+ "# Kernel size (5, 5) and standard deviation 0 are common starting points.\n",
+ "blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)\n",
+ "\n",
+ "# 5. Perform Canny Edge Detection\n",
+ "# Adjust thresholds as needed. Lower threshold for weak edges, higher for strong edges.\n",
+ "# A common ratio for Canny thresholds is 1:2 or 1:3.\n",
+ "edges = cv2.Canny(blurred_image, 50, 150)\n",
+ "\n",
+ "# 6. Perform Hough Line Transform\n",
+ "# Parameters:\n",
+ "# image: Output of the Canny detector.\n",
+ "# rho: Distance resolution of the accumulator in pixels.\n",
+ "# theta: Angle resolution of the accumulator in radians.\n",
+ "# threshold: Minimum number of votes (intersections in the accumulator) to detect a line.\n",
+ "# minLineLength: Minimum line length. Line segments shorter than this are rejected.\n",
+ "# maxLineGap: Maximum allowed gap between line segments to treat them as a single line.\n",
+ "lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)\n",
+ "\n",
+ "# 7. Calculate Pole Angle\n",
+ "# Filter for vertical/near-vertical lines and calculate their angles.\n",
+ "vertical_angles = []\n",
+ "\n",
+ "if lines is not None:\n",
+ " for line in lines:\n",
+ " x1, y1, x2, y2 = line[0]\n",
+ "\n",
+ " # Calculate the angle of the line in radians\n",
+ " # Avoid division by zero if x1 == x2 (perfectly vertical line)\n",
+ " if x2 - x1 == 0:\n",
+ " angle_rad = np.pi / 2 # 90 degrees\n",
+ " else:\n",
+ " angle_rad = np.arctan2(y2 - y1, x2 - x1)\n",
+ "\n",
+ " # Convert angle to degrees\n",
+ " angle_deg = np.degrees(angle_rad)\n",
+ "\n",
+ " # Normalize angle to be between 0 and 180 degrees for line orientation\n",
+ " # A line from (0,0) to (1,1) is 45 deg. A line from (0,0) to (-1,-1) is -135 deg, which is 45 deg orientation.\n",
+ " # A line from (0,0) to (1,-1) is -45 deg. A line from (0,0) to (-1,1) is 135 deg, which is -45 deg orientation.\n",
+ " # We want the angle relative to the vertical axis.\n",
+ " # A vertical line has an angle of 90 degrees with the x-axis.\n",
+ " # We are interested in lines that are close to 90 degrees.\n",
+ "\n",
+ " # Adjust angle to be between 0 and 180 degrees\n",
+ " if angle_deg < 0:\n",
+ " angle_deg += 180\n",
+ "\n",
+ " # Angle relative to the vertical axis (90 degrees)\n",
+ " # If the line is 90 degrees, the relative angle is 0.\n",
+ " # If the line is 80 degrees or 100 degrees, the relative angle is 10.\n",
+ " angle_to_vertical = abs(90 - angle_deg)\n",
+ "\n",
+ " # Filter for lines that are near-vertical (e.g., within 15 degrees of vertical)\n",
+ " # This helps to identify the pole and exclude horizontal or highly diagonal lines.\n",
+ " if angle_to_vertical < 15: # Adjust this threshold as needed\n",
+ " vertical_angles.append(angle_to_vertical)\n",
+ "\n",
+ "# Calculate the average angle\n",
+ "if vertical_angles:\n",
+ " average_angle = np.mean(vertical_angles)\n",
+ "else:\n",
+ " average_angle = 0 # Default if no vertical lines are found\n",
+ "\n",
+ "# 8. Format the Output\n",
+ "final_angle = round(average_angle)\n",
+ "print(final_angle)\n",
+ "# Outcome:\n",
+ "4\n",
+ "\n",
+ "--- Analyzing gs://geoai_published_ba3433e0-d709-4622-9577-66ab23587729__us/e8761cd3-c872-43cd-90aa-3ee99378090f/v0/o1:cdc94564ab743089849f02decc3970f3:00250082.jpg ---\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:google_genai.types:Warning: there are non-text parts in the response: ['executable_code', 'code_execution_result'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "# Code:\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "import math\n",
+ "\n",
+ "# 1. Load the Image\n",
+ "image_path = \"f_geoai_published_ba3433e0_d709_4622_9577_66ab23587729__us_e8761cd3_c872_43cd_90aa_3ee99378090f_v0_o1_cdc94564ab743089849f02decc3970f3_00250082.jpg\"\n",
+ "image = cv2.imread(image_path)\n",
+ "\n",
+ "if image is None:\n",
+ " raise FileNotFoundError(f\"Image not found at {image_path}\")\n",
+ "\n",
+ "# 2. Convert to Grayscale\n",
+ "gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ "# 3. Apply Gaussian Blur\n",
+ "# Kernel size (5,5) and sigmaX=0 are common starting points.\n",
+ "blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)\n",
+ "\n",
+ "# 5. Perform Canny Edge Detection\n",
+ "# Adjust thresholds as needed. Lower threshold for weak edges, higher for strong.\n",
+ "# A common heuristic is to use a 1:2 or 1:3 ratio for low:high thresholds.\n",
+ "# Let's try 50 and 150.\n",
+ "edges = cv2.Canny(blurred_image, 50, 150)\n",
+ "\n",
+ "# 6. Perform Probabilistic Hough Line Transform\n",
+ "# Parameters:\n",
+ "# edges: Output of the Canny detector.\n",
+ "# rho: Distance resolution of the accumulator in pixels.\n",
+ "# theta: Angle resolution of the accumulator in radians.\n",
+ "# threshold: Minimum number of votes (intersections in accumulator cell) to detect a line.\n",
+ "# minLineLength: Minimum line length. Line segments shorter than this are rejected.\n",
+ "# maxLineGap: Maximum allowed gap between line segments to treat them as a single line.\n",
+ "lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)\n",
+ "\n",
+ "# 7. Calculate Pole Angle\n",
+ "pole_angles = []\n",
+ "\n",
+ "if lines is not None:\n",
+ " for line in lines:\n",
+ " x1, y1, x2, y2 = line[0]\n",
+ "\n",
+ " # Calculate the angle of the line with the vertical axis\n",
+ " # atan2(dx, dy) gives angle with positive y-axis (vertical)\n",
+ " # A perfectly vertical line has dx=0, dy!=0, atan2(0, dy) = 0 or pi (depending on dy sign)\n",
+ " # Let's ensure dy is not zero to avoid division by zero if we were to use tan.\n",
+ " # atan2 handles this correctly.\n",
+ " \n",
+ " # Angle in radians relative to the vertical axis (0 for perfectly vertical)\n",
+ " angle_rad = math.atan2(x2 - x1, y2 - y1)\n",
+ " \n",
+ " # Convert to degrees\n",
+ " angle_deg = math.degrees(angle_rad)\n",
+ " \n",
+ " # We are interested in the absolute deviation from vertical.\n",
+ " # atan2(dx, dy) gives angles from -180 to 180.\n",
+ " # 0 degrees means perfectly vertical.\n",
+ " # We want to filter for lines that are close to vertical.\n",
+ " # Let's consider lines within +/- 15 degrees of vertical (0 degrees from vertical axis).\n",
+ " if abs(angle_deg) < 15: # This threshold might need adjustment\n",
+ " pole_angles.append(abs(angle_deg)) # Store absolute angle\n",
+ "\n",
+ "# Calculate the average angle\n",
+ "if pole_angles:\n",
+ " average_pole_angle = np.mean(pole_angles)\n",
+ "else:\n",
+ " # If no vertical lines are found, we might need to adjust parameters or handle this case.\n",
+ " # For now, let's assume some lines will be found.\n",
+ " average_pole_angle = 0 # Default if no lines found, though problem implies a pole exists.\n",
+ "\n",
+ "# 8. Format the Output\n",
+ "final_angle = round(average_pole_angle)\n",
+ "\n",
+ "print(final_angle)\n",
+ "# Outcome:\n",
+ "6\n",
+ "\n",
+ "--- Analyzing gs://geoai_published_ba3433e0-d709-4622-9577-66ab23587729__us/e8761cd3-c872-43cd-90aa-3ee99378090f/v0/o1:80870297e7eb2fcc52aef93c52364d6c:00250082.jpg ---\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:google_genai.types:Warning: there are non-text parts in the response: ['executable_code', 'code_execution_result'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "# Code:\n",
+ "import cv2\n",
+ "import numpy as np\n",
+ "\n",
+ "# Load the image\n",
+ "image_path = \"f_geoai_published_ba3433e0_d709_4622_9577_66ab23587729__us_e8761cd3_c872_43cd_90aa_3ee99378090f_v0_o1_80870297e7eb2fcc52aef93c52364d6c_00250082.jpg\"\n",
+ "image = cv2.imread(image_path)\n",
+ "\n",
+ "# Check if image loaded successfully\n",
+ "if image is None:\n",
+ " raise FileNotFoundError(f\"Could not load image from {image_path}\")\n",
+ "\n",
+ "# Convert to grayscale\n",
+ "gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)\n",
+ "\n",
+ "# Apply Gaussian blur\n",
+ "blurred = cv2.GaussianBlur(gray, (5, 5), 0)\n",
+ "\n",
+ "# Perform Canny edge detection\n",
+ "# Adjusting thresholds based on common practices and potential image characteristics\n",
+ "edges = cv2.Canny(blurred, 50, 150)\n",
+ "\n",
+ "# Perform Probabilistic Hough Line Transform\n",
+ "# Parameters: image, rho, theta, threshold, minLineLength, maxLineGap\n",
+ "# rho: Distance resolution of the accumulator in pixels.\n",
+ "# theta: Angle resolution of the accumulator in radians.\n",
+ "# threshold: Accumulator threshold parameter. Only lines that get enough votes (>threshold) are returned.\n",
+ "# minLineLength: Minimum line length. Line segments shorter than this are rejected.\n",
+ "# maxLineGap: Maximum allowed gap between line segments to treat them as a single line.\n",
+ "lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)\n",
+ "\n",
+ "# Calculate pole angle\n",
+ "angles = []\n",
+ "if lines is not None:\n",
+ " for line in lines:\n",
+ " x1, y1, x2, y2 = line[0]\n",
+ " # Calculate angle in radians\n",
+ " angle_rad = np.arctan2(y2 - y1, x2 - x1)\n",
+ " # Convert to degrees\n",
+ " angle_deg = np.degrees(angle_rad)\n",
+ "\n",
+ " # We are looking for vertical lines.\n",
+ " # A perfectly vertical line has an angle of 90 degrees or -90 degrees (or 270 degrees).\n",
+ " # A horizontal line has an angle of 0 or 180 degrees.\n",
+ " # We want the angle relative to the vertical axis.\n",
+ " # If the line is close to vertical, its angle_deg will be close to 90 or -90.\n",
+ " # Let's normalize angles to be between 0 and 180 for easier comparison with vertical.\n",
+ " # Or, more simply, calculate the deviation from 90 degrees.\n",
+ "\n",
+ " # Normalize angle to be between 0 and 180 degrees\n",
+ " if angle_deg < 0:\n",
+ " angle_deg += 180\n",
+ "\n",
+ " # Calculate the absolute difference from 90 degrees (vertical)\n",
+ " # We are interested in lines that are close to vertical.\n",
+ " # Let's consider lines with an angle between 70 and 110 degrees (relative to horizontal)\n",
+ " # or between -20 and 20 degrees relative to vertical.\n",
+ " \n",
+ " # The problem asks for the angle of the pole relative to the vertical axis.\n",
+ " # If a line is perfectly vertical, its angle with the x-axis is 90 degrees.\n",
+ " # Its angle with the y-axis (vertical) is 0 degrees.\n",
+ " # So, we want to find `abs(90 - angle_deg)` for lines that are close to vertical.\n",
+ "\n",
+ " # Filter for near-vertical lines (e.g., within 20 degrees of vertical)\n",
+ " if (angle_deg > 70 and angle_deg < 110):\n",
+ " # Calculate angle relative to vertical (0 degrees for perfectly vertical)\n",
+ " angle_relative_to_vertical = abs(90 - angle_deg)\n",
+ " angles.append(angle_relative_to_vertical)\n",
+ "\n",
+ "# Calculate the average angle\n",
+ "if angles:\n",
+ " average_angle = np.mean(angles)\n",
+ " # Round to the nearest whole number\n",
+ " final_angle = round(average_angle)\n",
+ " print(int(final_angle))\n",
+ "else:\n",
+ " # If no lines are detected, or no vertical lines are detected,\n",
+ " # we might need to adjust parameters or handle this case.\n",
+ " # For now, let's print a default or raise an error.\n",
+ " # Given the problem statement, it expects an integer output, so let's assume lines will be found.\n",
+ " # If no lines are found, it implies the pole is perfectly vertical or not detectable.\n",
+ " # Let's try to refine the Hough parameters if this happens.\n",
+ " # For now, if no angles are found, it means no lines were detected within the vertical range.\n",
+ " # This could mean the pole is very tilted or the parameters are too strict.\n",
+ " # Let's try to be more lenient with the angle filtering first.\n",
+ " # If still no lines, I'll re-evaluate Hough parameters.\n",
+ " print(\"No suitable pole lines detected. Re-evaluating parameters or logic.\")\n",
+ "\n",
+ "\n",
+ "# Outcome:\n",
+ "6\n",
+ "\n",
+ "\n",
+ "--- Analysis Results ---\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "summary": "{\n \"name\": \"df\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"asset_id\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"t1:6a21e109b0fc28eda5d7887a9686d922:ffff01ee\",\n \"t1:cf1461018d092a5ac91876364629fd62:ffff01ee\",\n \"t1:000c345da88196b1502312ade92f5ca8:ffff01ee\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pole_angle\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2,\n \"min\": 1,\n \"max\": 6,\n \"num_unique_values\": 4,\n \"samples\": [\n 1,\n 6,\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
+ "type": "dataframe",
+ "variable_name": "df"
+ },
+ "text/html": [
+ "\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " pole_angle\n",
+ "asset_id \n",
+ "t1:3bb60629975471a4966e3bd59aed5f31:ffff01ee 5\n",
+ "t1:6a21e109b0fc28eda5d7887a9686d922:ffff01ee 1\n",
+ "t1:000c345da88196b1502312ade92f5ca8:ffff01ee 4\n",
+ "t1:917054809f5e4de720fa89cb771fe202:ffff01ee 6\n",
+ "t1:cf1461018d092a5ac91876364629fd62:ffff01ee 6"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Initialize the genai Client and the code execution Tool\n",
+ "\n",
+ "code_execution_tool = Tool(code_execution=ToolCodeExecution())\n",
+ "\n",
+ "def analyze_image(gcs_uri: str, prompt: str) -> str:\n",
+ " \"\"\"Analyzes an image from GCS using the Gemini model with code execution, returning None on error.\"\"\"\n",
+ " try:\n",
+ " contents = [\n",
+ " prompt,\n",
+ " Part(file_data={'file_uri': gcs_uri, 'mime_type': 'image/jpeg'})\n",
+ " ]\n",
+ " # Update the generate_content call to include the code execution tool\n",
+ " response = client.models.generate_content(\n",
+ " model=MODEL_ID,\n",
+ " contents=contents,\n",
+ " config=GenerateContentConfig(\n",
+ " tools=[code_execution_tool],\n",
+ " temperature=0,\n",
+ " )\n",
+ " )\n",
+ " print(\"# Code:\")\n",
+ " print(response.executable_code)\n",
+ " print(\"# Outcome:\")\n",
+ " print(response.code_execution_result)\n",
+ " return response.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error analyzing '{gcs_uri}': {e}\")\n",
+ " return None\n",
+ "\n",
+ "results = []\n",
+ "\n",
+ "if 'query_response_data' in locals() and query_response_data:\n",
+ " for item in query_response_data:\n",
+ " asset_id = item.get(\"asset_id\")\n",
+ " uri = item.get(\"gcs_uri\")\n",
+ "\n",
+ " if not uri or not asset_id:\n",
+ " continue\n",
+ "\n",
+ " print(f\"--- Analyzing {uri} ---\")\n",
+ "\n",
+ " # Analyze image with the new prompt for pole angle\n",
+ " pole_angle_response = analyze_image(uri, PROMPT)\n",
+ "\n",
+ " # Parse pole angle result\n",
+ " pole_angle = None\n",
+ " try:\n",
+ " if pole_angle_response:\n",
+ " pole_angle = int(float(re.search(r'[-+]?\\d*\\.?\\d+', pole_angle_response).group()))\n",
+ " except (ValueError, AttributeError, TypeError):\n",
+ " pole_angle = None\n",
+ "\n",
+ " # Store results\n",
+ " result_item = {\n",
+ " \"asset_id\": asset_id,\n",
+ " \"pole_angle\": pole_angle\n",
+ " }\n",
+ " results.append(result_item)\n",
+ "\n",
+ " # Create and display DataFrame\n",
+ " if results:\n",
+ " df = pd.DataFrame(results)\n",
+ " df.set_index('asset_id', inplace=True)\n",
+ " print(\"\\n--- Analysis Results ---\")\n",
+ " display(df)\n",
+ " else:\n",
+ " print(\"No data to display.\")\n",
+ "\n",
+ "else:\n",
+ " print(\"No GCS URIs were found to analyze.\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "name": "utility_pole_lean_angle_detection.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/street_view_insights/notebooks/Object_detection_with_few_shot_learning/README.md b/street_view_insights/notebooks/Object_detection_with_few_shot_learning/README.md
new file mode 100644
index 0000000..c4ada76
--- /dev/null
+++ b/street_view_insights/notebooks/Object_detection_with_few_shot_learning/README.md
@@ -0,0 +1,53 @@
+# Object Detection with Few-Shot Learning for Utility Pole Analysis
+
+This notebook demonstrates how to use the Gemini 1.0 Pro model with a few-shot learning approach to detect transformers on utility poles from images stored in Google Cloud Storage. The image URIs are fetched from a BigQuery table, and the model provides a JSON output with the count of detected transformers.
+
+## Prerequisites
+
+Before running this notebook, ensure you have the following:
+
+* A Google Cloud Platform (GCP) project.
+* The Vertex AI and BigQuery APIs enabled in your GCP project.
+* A BigQuery dataset and table containing the GCS URIs of the images to be analyzed.
+* The following Python libraries installed:
+ * `google-cloud-bigquery`
+ * `google-genai`
+
+You can install the required libraries by running the following command:
+
+```bash
+pip install --upgrade google-cloud-bigquery google-genai
+```
+
+## Configuration
+
+The following variables in the notebook need to be configured with your specific GCP project details:
+
+* `PROJECT_ID`: Your GCP Project ID.
+* `REGION`: The GCP region where your resources are located (e.g., `us-central1`).
+* `MODEL_ID`: The ID of the Gemini model to use (e.g., `gemini-1.0-pro`).
+* `BIGQUERY_DATASET_ID`: The ID of your BigQuery dataset.
+* `BIGQUERY_TABLE`: The name of your BigQuery table containing the image URIs.
+* `ASSET_TYPE`: The asset type to filter for in the BigQuery table (e.g., `ASSET_CLASS_UTILITY_POLE`).
+* `LIMIT`: The maximum number of images to process.
+
+## Running the Notebook
+
+1. **Install Libraries:** Run the first cell to install the necessary Python libraries.
+2. **Configure Variables:** In the "Configuration" section, replace the placeholder values with your GCP project details.
+3. **Initialize Vertex AI:** Run the cell to initialize the Vertex AI SDK.
+4. **Fetch Image URIs:** Execute the BigQuery query to fetch the GCS URIs of the images.
+5. **Define Classification Function:** Run the cell that defines the `classify_image_with_gemini` function.
+6. **Classify Images:** Run the final cell to classify the images and see the JSON output from the model.
+
+## Example Output
+
+The model will provide a JSON output for each image, similar to the following:
+
+```json
+{
+ "type": "utility pole",
+ "transformers": 1,
+ "telephone_or_junction_boxes": 0,
+ "additional_notes": ""
+}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Object_detection_with_few_shot_learning/utility_pole_analysis_with_few_Shot_learning.ipynb b/street_view_insights/notebooks/Object_detection_with_few_shot_learning/utility_pole_analysis_with_few_Shot_learning.ipynb
new file mode 100644
index 0000000..18ef0d2
--- /dev/null
+++ b/street_view_insights/notebooks/Object_detection_with_few_shot_learning/utility_pole_analysis_with_few_Shot_learning.ipynb
@@ -0,0 +1,438 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "946de5e8",
+ "metadata": {
+ "id": "946de5e8"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "w11hv_ICCuXp"
+ },
+ "source": [
+ "# Detect if a lamp is an acquity brand lamp using Supervised fine tuned Gemini"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "lfFyoRlrGMl9"
+ },
+ "source": [
+ "## Overview\n",
+ "\n",
+ "This codelab walks you through the process of building a simple image classification system using a pre-trained and then fine-tuned Gemini model. The goal is to accurately identify whether a given lamp image belongs to the \"Acquity\" brand.\n",
+ "\n",
+ "The process involves:\n",
+ "\n",
+ "1. **Loading the pre-trained Gemini model:** We start by initializing the generative AI model.\n",
+ "2. **Preparing the dataset:** You'll need a dataset of lamp images, labeled as either \"Acquity\" or \"Not Acquity\". This dataset will be used for fine-tuning.\n",
+ "3. **Fine-tuning the model:** The codelab will guide you through the steps of fine-tuning the Gemini model on your specific dataset. This process adapts the model's knowledge to better recognize Acquity lamps.\n",
+ "4. **Evaluating the model:** After fine-tuning, we'll test the model's performance on unseen data to assess its accuracy.\n",
+ "5. **Making predictions:** Finally, you'll learn how to use the fine-tuned model to predict whether a new lamp image is an Acquity brand lamp.\n",
+ "\n",
+ "By the end of this codelab, you will have a working example of how to leverage the power of large language models for specific image classification tasks through supervised fine-tuning.\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "**Important**: Replace the placeholder values below with your actual GCP Project ID and Region."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "12IeQCoDQQ-F"
+ },
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = '' # @param {type:\"string\"}\n",
+ "REGION = '' # @param {type:\"string\"}\n",
+ "\n",
+ "# BigQuery Configuration\n",
+ "BIGQUERY_DATASET_ID = '' # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE_ID = '' # @param {type:\"string\"}\n",
+ "QUERY_LIMIT = 10 # @param {type:\"integer\"}\n",
+ "ASSET_TYPE = \"ASSET_CLASS_UTILITY_POLE\" # @param {type:\"string\"}\n",
+ "MODEL = \"gemini-2.5-pro\" # @param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "bucket-config"
+ },
+ "outputs": [],
+ "source": [
+ "# Provide a bucket name\n",
+ "BUCKET_NAME = \"[your-bucket-name]\" # @param {type:\"string\"}\n",
+ "BUCKET_URI = f\"gs://{BUCKET_NAME}\"\n",
+ "\n",
+ "# Create the bucket if it doesn't exist\n",
+ "!gcloud storage ls --buckets {BUCKET_URI} || gcloud storage buckets create --location {LOCATION} --project {PROJECT_ID} {BUCKET_URI}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "data-upload"
+ },
+ "outputs": [],
+ "source": [
+ "# Upload the training data to your bucket\n",
+ "!gcloud storage cp \"/Users/sarthakgy/Desktop/insights-samples/imagery_insights/notebooks/Supervised fine tuning/data/acquity_detector_negative_examples_v2.jsonl\" {BUCKET_URI}/data/"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "YzcKxfEusxltri1ik4Vsm3vK"
+ },
+ "outputs": [],
+ "source": [
+ "# Install the necessary library\n",
+ "!pip install --upgrade --user --quiet google-genai google-cloud-aiplatform\n",
+ "\n",
+ "# Import the library\n",
+ "import google.cloud.aiplatform as aiplatform\n",
+ "from google import genai\n",
+ "from google.genai import types\n",
+ "import time\n",
+ "\n",
+ "# Initialize the Vertex AI SDK and Gen AI Client\n",
+ "aiplatform.init(project=PROJECT_ID, location=LOCATION)\n",
+ "client = genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION)\n",
+ "\n",
+ "# Define the dataset URI and model name\n",
+ "dataset_uri = f\"{BUCKET_URI}/data/acquity_detector_negative_examples_v2.jsonl\"\n",
+ "tuned_model_display_name = \"Aquity_model_detector_fine_tuned\"\n",
+ "base_model = \"gemini-2.5-flash\"\n",
+ "\n",
+ "training_dataset = {\n",
+ " \"gcs_uri\": dataset_uri,\n",
+ "}\n",
+ "\n",
+ "# Tune a model using `tune` method.\n",
+ "sft_tuning_job = client.tunings.tune(\n",
+ " base_model=base_model,\n",
+ " training_dataset=training_dataset,\n",
+ " config=types.CreateTuningJobConfig(\n",
+ " tuned_model_display_name=tuned_model_display_name,\n",
+ " ),\n",
+ ")\n",
+ "\n",
+ "# Get the tuning job info.\n",
+ "tuning_job = client.tunings.get(name=sft_tuning_job.name)\n",
+ "\n",
+ "# Status Check\n",
+ "print(\"Tuning job created. Waiting for completion...\")\n",
+ "# Wait for job completion\n",
+ "running_states = [\n",
+ " \"JOB_STATE_PENDING\",\n",
+ " \"JOB_STATE_RUNNING\",\n",
+ "]\n",
+ "\n",
+ "while tuning_job.state.name in running_states:\n",
+ " print(\".\", end=\"\")\n",
+ " tuning_job = client.tunings.get(name=tuning_job.name)\n",
+ " time.sleep(60) # Check every minute\n",
+ "\n",
+ "print()\n",
+ "\n",
+ "if tuning_job.state.name == \"JOB_STATE_SUCCEEDED\":\n",
+ " MODEL_ENDPOINT = tuning_job.tuned_model.endpoint\n",
+ " print(f\"Model deployed to endpoint: {MODEL_ENDPOINT}\")\n",
+ "else:\n",
+ " print(f\"Tuning job failed with state: {tuning_job.state.name}\")\n",
+ " if hasattr(tuning_job, 'error') and tuning_job.error:\n",
+ " print(f\"Error: {tuning_job.error}\")\n",
+ " # Fallback to backup endpoint from later in the notebook\n",
+ " MODEL_ENDPOINT = \"projects/635092392839/locations/us-central1/endpoints/3000095541712388096\"\n",
+ " print(f\"Using backup endpoint: {MODEL_ENDPOINT}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "1-2-3-4-5"
+ },
+ "source": [
+ "## Setup\n",
+ "Enable APIs and Set Permissions\n",
+ "Enable the Vertex AI API\n",
+ "\n",
+ "Make sure you have been granted the roles for the GCP project you'll access from this notebook:\n",
+ "\n",
+ "roles/aiplatform.user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "6-7-8-9-0"
+ },
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "import vertexai\n",
+ "from vertexai.generative_models import GenerativeModel, Part\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "a-b-c-d-e"
+ },
+ "outputs": [],
+ "source": [
+ "# Updated query to group by asset_id and aggregate all image URIs\n",
+ "BIGQUERY_QUERY = \"\"\"\n",
+ " SELECT\n",
+ " asset_id,\n",
+ " ARRAY_AGG(gcs_uris[SAFE_OFFSET(0)]) AS gcs_uris\n",
+ " FROM\n",
+ " `sarthaks-lab.imagery_insights_analysis.utility_pole_evaluations`\n",
+ " WHERE\n",
+ " type='Street light'\n",
+ " AND ARRAY_LENGTH(gcs_uris) > 0\n",
+ " GROUP BY\n",
+ " asset_id\n",
+ " LIMIT 1000\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "f-g-h-i-j"
+ },
+ "outputs": [],
+ "source": [
+ "MODEL_ENDPOINT = \"projects/635092392839/locations/us-central1/endpoints/3000095541712388096\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "k-l-m-n-o"
+ },
+ "outputs": [],
+ "source": [
+ "# Updated prompt to be more lenient and ask for model number\n",
+ "PROMPT = '''Follow these rules precisely to generate your answer:\n",
+ "\n",
+ "1. **Analyze the Input:** Carefully examine the provided Lamp Input. Compare its specific features, design elements, markings, and any visible model numbers against the information in the Acuity Brand Identification Guide.\n",
+ "\n",
+ "2. **Generate a Confidence Score:** Based on your analysis, internally generate a confidence score from 0.0 to 1.0 that represents your certainty that the lamp is an Acuity brand product.\n",
+ "\n",
+ "3. **Apply Strict Classification Logic:** Use your confidence score to determine your answer according to the following thresholds:\n",
+ " * **If the score is greater than 0.5:** Your answer is \"Yes\". This indicates a high degree of confidence, requiring a direct match of multiple key features, design language, or a model number consistent with the guide.\n",
+ " * **If the score is between 0.25 and 0.5 (inclusive):** Your answer is \"Maybe\". This indicates some features align with the guide, but there is not enough evidence for a confident \"Yes\" or \"No\".\n",
+ " * **If the score is less than 0.25:** Your answer is \"No\". This indicates the lamp has features that contradict the guide, is identifiable as a different brand, or lacks any resemblance to an Acuity product.\n",
+ "\n",
+ "4. **Format Your Output:** Your response must strictly follow one of the formats below, based on the answer you determined in the previous step. Do not add any extra text, explanations, or apologies.\n",
+ " * **For a \"Yes\" answer:**\n",
+ " * If a model number is visible or mentioned in the Lamp Input, respond with: `Yes. Model Number: [model number]`\n",
+ " * If no model number is available, respond with: `Yes.`\n",
+ "\n",
+ " * **For a \"Maybe\" answer:**\n",
+ " * Respond with: `Maybe.`\n",
+ "\n",
+ " * **For a \"No\" answer:**\n",
+ " * Respond with: `No.`'''"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "p-q-r-s-t"
+ },
+ "outputs": [],
+ "source": [
+ "NUM_ROWS_TO_PROCESS = 1000"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "u-v-w-x-y"
+ },
+ "outputs": [],
+ "source": [
+ "# ------------ 1. Fetch data from BigQuery ------------\n",
+ "# Create a BigQuery client\n",
+ "client = bigquery.Client(project=PROJECT_ID)\n",
+ "\n",
+ "# Execute the query and load the results into a pandas DataFrame\n",
+ "df = client.query(BIGQUERY_QUERY).to_dataframe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "z-a-b-c-d"
+ },
+ "outputs": [],
+ "source": [
+ "# ------------ 2. Initialize Vertex AI and Load Model ------------\n",
+ "# Initialize Vertex AI\n",
+ "vertexai.init(project=PROJECT_ID, location=LOCATION)\n",
+ "\n",
+ "# Load the generative model\n",
+ "model = GenerativeModel(MODEL_ENDPOINT)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "e-f-g-h-i"
+ },
+ "outputs": [],
+ "source": [
+ "# ------------ 3. Analyze Images ------------\n",
+ "# Create an empty list to store the analysis results\n",
+ "analysis_results = []\n",
+ "\n",
+ "# Create a subset of the DataFrame to process\n",
+ "df_to_process = df.head(NUM_ROWS_TO_PROCESS)\n",
+ "for index, row in df_to_process.iterrows():\n",
+ " # Get the list of GCS URIs for the asset\n",
+ " image_uris = row['gcs_uris']\n",
+ " asset_id = row['asset_id']\n",
+ " print(f\"Processing asset: {asset_id}\")\n",
+ "\n",
+ " if image_uris is not None and len(image_uris) > 0:\n",
+ " try:\n",
+ " # Prepare the content for the model: prompt + all images\n",
+ " content_parts = [PROMPT]\n",
+ " for uri in image_uris:\n",
+ " if uri: # Ensure URI is not None\n",
+ " content_parts.append(Part.from_uri(uri, mime_type='image/jpeg'))\n",
+ "\n",
+ " # Generate content with all images and the prompt\n",
+ " response = model.generate_content(content_parts)\n",
+ " result_text = response.text.strip()\n",
+ " print(f\" -> Result: {result_text}\")\n",
+ " analysis_results.append(result_text)\n",
+ "\n",
+ " except Exception as e:\n",
+ " error_message = f\"Error processing asset: {e}\"\n",
+ " print(f\" -> {error_message}\")\n",
+ " analysis_results.append(error_message)\n",
+ " else:\n",
+ " no_uri_message = \"No GCS URIs found for this asset.\"\n",
+ " print(f\" -> {no_uri_message}\")\n",
+ " analysis_results.append(no_uri_message)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "j-k-l-m-n"
+ },
+ "outputs": [],
+ "source": [
+ "# ------------ 4. Display All Results ------------\n",
+ "# Create a new DataFrame with only asset_id and analysis_result\n",
+ "results_df = pd.DataFrame({\n",
+ " 'asset_id': df_to_process['asset_id'],\n",
+ " 'analysis_result': analysis_results\n",
+ "})\n",
+ "\n",
+ "# Display the full DataFrame without filtering\n",
+ "print(\"\\n--- Final Results --- Succeeded\")\n",
+ "display(results_df)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "y-z-a-b-c"
+ },
+ "source": [
+ "## Generate Summary of Analysis Results\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "d-e-f-g-h"
+ },
+ "outputs": [],
+ "source": [
+ "try:\n",
+ " def categorize_result(result):\n",
+ " if not isinstance(result, str):\n",
+ " return 'Error'\n",
+ " if result.startswith('Yes'):\n",
+ " return 'Yes'\n",
+ " elif result == 'Maybe.':\n",
+ " return 'Maybe'\n",
+ " elif result == 'No.':\n",
+ " return 'No'\n",
+ " else:\n",
+ " return 'Error'\n",
+ "\n",
+ " results_df['category'] = results_df['analysis_result'].apply(categorize_result)\n",
+ "\n",
+ " summary_df = results_df.groupby('category').agg(\n",
+ " count=('asset_id', 'size'),\n",
+ " sample_assets=('asset_id', lambda x: list(x.head(3)))\n",
+ " ).reset_index()\n",
+ "\n",
+ " print(\"\\n--- Analysis Summary ---\")\n",
+ " display(summary_df)\n",
+ "\n",
+ "except NameError:\n",
+ " print(\"Error: The 'results_df' DataFrame is not defined. Please ensure the previous cell has been executed successfully.\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "collapsed_sections": [],
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.18"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/street_view_insights/notebooks/Supervised fine tuning/data/acquity_detector_negative_examples_v2.jsonl b/street_view_insights/notebooks/Supervised fine tuning/data/acquity_detector_negative_examples_v2.jsonl
new file mode 100644
index 0000000..36c243e
--- /dev/null
+++ b/street_view_insights/notebooks/Supervised fine tuning/data/acquity_detector_negative_examples_v2.jsonl
@@ -0,0 +1,36 @@
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/autobahnatb0_ael_atb0_angle1_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_day_20150615_0649_thm.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_night_20150616_8731_thm.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/img_8875hi-res_thm.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_day_20150615_0649_thm.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-vc-graphite-univarcharm---hero_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-graphite-verttenon---hero_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-vc-graphite-controls-overunder_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-graphite---utility-door_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-graphite---single-optic_vert-tenon-tilt-hero_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-ag-vh-bksd---twins-gv-parking-03_mid.jpg"}}, {"text": "Context: Street lamp on parking lot. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-nr-vh-bksd---gv-parking-01_mid.jpg"}}, {"text": "Context: Lamp near tree. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-nr-vh-bksd---gv-parking-04_mid.jpg"}}, {"text": "Context: Lamps on street side. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4g-grsd_hero-right_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4-grsd_hero-right_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4g-bzsd_hero-left_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/holo-r_ledg2_p7_gh_topangle_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/holo-ra-323-0001v1_mid.jpg"}}, {"text": "Context: Street lamp near a parking lot. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/american-revolution-247_large_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/img_8200-247_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/247muni_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_glass-frosted_hero_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_glass_hero_mid.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_noglass_bp_hero_thm.png"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/226676/seriesavpl2-valiantled_avpl2-led_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series AVPL2 - Valiant LED"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/226676/avpl-app1_mid.jpg"}}, {"text": "Context: General view of potential street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series AVPL2 - Valiant LED"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://orbismfg.com/wp-content/uploads/2022/05/utility-pole-blue-sky.jpg"}}, {"text": "Context: Image of a utility pole. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.hbjinyong.com/wp-content/uploads/2020/12/Wooden-Utility-Pole.jpg"}}, {"text": "Context: Image of a utility pole. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://polesaver.com/wp-content/uploads/2019/07/Pole-standing-up.jpg"}}, {"text": "Context: Image of a utility pole. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.americantimberandsteel.com/clientuploads/product-lines/poles-pilings/utility-poles/UtilityPoleWeb.jpg"}}, {"text": "Context: Image of a utility pole. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.hbcrownwealth.com/wp-content/uploads/wooden-utility-pole-241126.jpg"}}, {"text": "Context: Image of a utility pole. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://m.media-amazon.com/images/I/718J9aNr8eL._AC_SX679_.jpg"}}, {"text": "Context: Image of a Green Light Depot street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://m.media-amazon.com/images/I/714yidiv0WL._AC_SX679_.jpg"}}, {"text": "Context: Image of a Green Light Depot street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://m.media-amazon.com/images/I/61nsC5B76XL._AC_SX679_.jpg"}}, {"text": "Context: Image of a Green Light Depot street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.lighting-gallery.net/gallery/albums/userpics/13416/normal_P1020902.JPG"}}, {"text": "Context: Image of a SolarMax SMX-WiE street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.lighting-gallery.net/gallery/albums/userpics/13416/normal_P1020903.JPG"}}, {"text": "Context: Image of a SolarMax SMX-WiE street light. Task: Is this an Acuity Brands street lamp? If yes, provide its make/brand and model/series. If no, or if it's not a street lamp, state 'No Acuity Brands street lamp identifiable.'"}]}, {"role": "model", "parts": [{"text": "No Acuity Brands street lamp identifiable."}]}]}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Supervised fine tuning/data/acuity_brands_detector.jsonl b/street_view_insights/notebooks/Supervised fine tuning/data/acuity_brands_detector.jsonl
new file mode 100644
index 0000000..892d4ad
--- /dev/null
+++ b/street_view_insights/notebooks/Supervised fine tuning/data/acuity_brands_detector.jsonl
@@ -0,0 +1,22 @@
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/autobahnatb0_ael_atb0_angle1_mid.jpg?abl_version=05%2f07%2f2025+15%3a03%3a13"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_day_20150615_0649_thm.jpg?abl_version=05%2f07%2f2025+15%3a03%3a14"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_night_20150616_8731_thm.jpg?abl_version=05%2f07%2f2025+15%3a03%3a14"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/img_8875hi-res_thm.jpg?abl_version=05%2f07%2f2025+15%3a03%3a13"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/122046/ael_atb0_westrichland_day_20150615_0649_thm.jpg?abl_version=05%2f07%2f2025+15%3a03%3a14"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Autobahn Series (e.g., ATB2, ATB0)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-vc-graphite-univarcharm---hero_mid.png?abl_version=03%2f21%2f2025+09%3a21%3a01"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-graphite-verttenon---hero_mid.png?abl_version=03%2f21%2f2025+09%3a21%3a02"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-vc-graphite-controls-overunder_mid.png?abl_version=03%2f21%2f2025+09%3a21%3a06"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledmed-graphite---utility-door_mid.png?abl_version=03%2f21%2f2025+09%3a21%3a02"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm-graphite---single-optic_vert-tenon-tilt-hero_mid.png?abl_version=03%2f21%2f2025+09%3a21%3a06"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Mongoose LED Series (e.g., MGLED, MGLEDM)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4g-grsd_hero-right_mid.png?abl_version=08%2f15%2f2024+12%3a10%3a05"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4-grsd_hero-right_mid.png?abl_version=08%2f15%2f2024+12%3a10%3a05"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/ledg2-l4g-bzsd_hero-left_mid.png?abl_version=08%2f15%2f2024+12%3a10%3a04"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1312409/holo-r_ledg2_p7_gh_topangle_mid.png?abl_version=08%2f15%2f2024+12%3a10%3a04"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: LEDGend Series (Cobrahead)"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/american-revolution-247_large_mid.jpg?abl_version=05%2f13%2f2025+14%3a35%3a42"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/img_8200-247_mid.jpg?abl_version=05%2f13%2f2025+14%3a35%3a43"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/208614/247muni_mid.jpg?abl_version=05%2f13%2f2025+14%3a35%3a43"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series 247L LED - American Revolution"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_glass-frosted_hero_mid.png?abl_version=11%2f26%2f2024+05%3a02%3a16"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_glass_hero_mid.png?abl_version=11%2f26%2f2024+05%3a02%3a16"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/1815270/wfcl3_noglass_bp_hero_thm.png?abl_version=11%2f26%2f2024+05%3a02%3a16"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: Holophane, Model/Series: Washington LED Post-Top Full Cutoff Lantern"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/226676/seriesavpl2-valiantled_avpl2-led_mid.jpg?abl_version=05%2f13%2f2025+15%3a26%3a34"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series AVPL2 - Valiant LED"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://img.acuitybrands.com/public-assets/catalog/226676/avpl-app1_mid.jpg?abl_version=05%2f13%2f2025+15%3a26%3a35"}}, {"text": "Identify the specific make and model of the street light in this image. Manufacturer is Acuity Brands."}]}, {"role": "model", "parts": [{"text": "Make/Brand: American Electric Lighting, Model/Series: Series AVPL2 - Valiant LED"}]}]}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Supervised fine tuning/data/street_lamp_make_manufacturer.csv b/street_view_insights/notebooks/Supervised fine tuning/data/street_lamp_make_manufacturer.csv
new file mode 100644
index 0000000..2475425
--- /dev/null
+++ b/street_view_insights/notebooks/Supervised fine tuning/data/street_lamp_make_manufacturer.csv
@@ -0,0 +1,26 @@
+Manufacturer,Make/Brand,Model/Series
+Acuity Brands,American Electric Lighting,"Autobahn Series (e.g., ATB2, ATB0)"
+Acuity Brands,Holophane,"Mongoose LED Series (e.g., MGLED, MGLEDM)"
+Acuity Brands,Holophane,LEDGend Series (Cobrahead)
+Acuity Brands,LEOTEK,"GreenCobra LED Series (e.g., GCJ, GCL, GC1, GC2)"
+Current (formerly GE Current),Evolve (GE brand),"ERL Series LED Cobrahead (e.g., ERL2, ERLC)"
+Current (formerly GE Current),Evolve (GE brand),ERX LED Series (Architectural Area/Roadway)
+Current (formerly GE Current),Beacon Products,Viper Series (Area/Site/Roadway)
+Current (formerly GE Current),Kim Lighting,Altitude 2.0 LED Series (Area/Roadway)
+Cooper Lighting Solutions (Eaton),Streetworks,"Archeon LED Series (Area/Roadway, e.g., ARCH-MD)"
+Cooper Lighting Solutions (Eaton),Streetworks,Navion LED Roadway Luminaire
+Cree Lighting,Cree Lighting,Guideway Series LED Street Light
+Cree Lighting,Cree Lighting,RSW Series LED Street Light
+Dialight,Dialight,ProSite LED Streetlight
+Signify,Philips,"Luma gen2 LED Roadway Luminaire (e.g., BGP722/723/724)"
+Signify,Philips,"RoadFocus LED Cobrahead (US models, e.g., BRP39x series)"
+Signify,Gardco,Form Ten LED (Area/Post Top)
+Signify,Lumec,RoadFocus LED Series (often shares technology with Philips RoadFocus)
+Fonroche Lighting America,Fonroche,"SmartLight Solar Street Light Series (e.g., RFS models)"
+SEPCO (Solar Electric Power Company),SEPCO,SolarViper LED Solar Lighting System
+General Electric (Historical),GE,"M400 Cobrahead (various HPS/MV versions, e.g., M400A)"
+General Electric (Historical),GE,"M250 Cobrahead (various HPS/MV versions, e.g., M250R, M250A)"
+Westinghouse Electric Corporation (Historical),Westinghouse,"OV-25 ""Silverliner"" Cobrahead (Mercury Vapor/HPS)"
+Westinghouse Electric Corporation (Historical),Westinghouse,"OV-15 ""Silverliner"" (Smaller cobrahead)"
+Acuity Brands (Historical Lineage / American Electric Lighting),American Electric Lighting,"Model 13 ""Flatbottom"" or ""Shoebox"" (common HPS/MV area/roadway) - *Often referred to by its shape/style if exact model numbers varied.*"
+Cooper Industries (Historical Lineage),McGraw-Edison / Cooper,"OVZ / OVF ""Cutoff Cobrahead"" or ""Shoebox"" (common HPS/MV)"
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Supervised fine tuning/data/street_lamps_us_db.csv b/street_view_insights/notebooks/Supervised fine tuning/data/street_lamps_us_db.csv
new file mode 100644
index 0000000..5c7f797
--- /dev/null
+++ b/street_view_insights/notebooks/Supervised fine tuning/data/street_lamps_us_db.csv
@@ -0,0 +1,63 @@
+Make,Model/Series,Manufacturer,Specification PDF URL,Image URL
+Holophane,Mongoose® LED (MGLED/MGLEDM),Acuity Brands,https://www.stouchlighting.com/holophane-led-area-lighting-our-led-manufacturers [1],https://www.stouchlighting.com/holophane-led-area-lighting-our-led-manufacturers [1]
+Holophane,LEDgend™ LED (LEDG2),Acuity Brands,https://www.stouchlighting.com/holophane-led-area-lighting-our-led-manufacturers [1],https://www.stouchlighting.com/holophane-led-area-lighting-our-led-manufacturers [1]
+Holophane,"Arlington®, Jefferson®, Taft®, Washington® LED Post-Top Lanterns",Acuity Brands,https://holophane.acuitybrands.com/products/family/holophane-led-lantern-lights [2],https://holophane.acuitybrands.com/products/family/holophane-led-lantern-lights [2]
+American Electric Lighting (AEL),"Autobahn™ (ATB0, ATB2, ATBM, ATBS, ATBL)",Acuity Brands,https://americanelectriclighting.acuitybrands.com/products/detail/122047/american-electric-lighting/autobahn-atb2/autobahn-led-cobra-head [3] | https://americanelectriclighting.acuitybrands.com/products/detail/122046/american-electric-lighting/autobahn-atb0/autobahn-led-cobra-head [4],https://americanelectriclighting.acuitybrands.com/products/detail/122047/american-electric-lighting/autobahn-atb2/autobahn-led-cobra-head [3] | https://americanelectriclighting.acuitybrands.com/products/detail/122046/american-electric-lighting/autobahn-atb0/autobahn-led-cobra-head [4]
+American Electric Lighting (AEL),"247L, ARDL, AVPL2, Contempo, Valiant LED Post-Top Lanterns",Acuity Brands,https://americanelectriclighting.acuitybrands.com/products/family/lanterns [5],https://americanelectriclighting.acuitybrands.com/products/family/lanterns [5]
+Cyclone,"Lupa, Mochi, Tribeca, Trika",Acuity Brands,https://www.acuitybrands.com/resources/industries/municipal-lighting/street-roadway-lighting/commercial-street-lighting [6],https://www.acuitybrands.com/resources/industries/municipal-lighting/street-roadway-lighting/commercial-street-lighting [6]
+GE / Current,"Evolve® (ERL1, ERL2, ERLH)",Current,https://www.usesi.com/media/product-media/specification-sheets/USESI_769444_specification_sheets.pdf [7],https://www.led.com/outdoor-lighting/led-roadway-street-lights [8]
+GE / Current,"Evolve® (ERNC, ERNM, ERLS, E2SD, E2SC, ERL6, ERLC, ERHM03, EPDU, EPPE)",Current,https://www.led.com/outdoor-lighting/led-roadway-street-lights [8],https://www.led.com/outdoor-lighting/led-roadway-street-lights [8]
+Beacon,Viper (Area Size 1-4),Current,https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9],https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9]
+Beacon,Ratio (RAR1, RAR2, RAR3),Current,https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9],https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9]
+Beacon,Urban Micro Strike,Current,https://www.currentlighting.com/beacon [10],https://www.currentlighting.com/beacon [10]
+Kim Lighting,Altitude® 2.0,Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,"Ouro (Arm Mount, Post Top, Edge-Lit)",Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,The Entablature®,Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,Bounce®,Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,"Era® (Acorn AE, Bell BE, Lantern LE, RA)",Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,Solitaire,Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Kim Lighting,Prevent Linear,Current,https://www.currentlighting.com/kimlighting [11],https://www.currentlighting.com/kimlighting [11]
+Architectural Area Lighting (AAL),KicK™ (Small, Medium),Current,https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9],https://www.currentlighting.com/outdoor-lighting/area-site-roadway [9]
+Streetworks,"Archeon (Nano, Small, Medium, Large, Contemporary)",Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/7c583a5aa06741a0b8a5ad400149c0cc/Streetworks-Roadway-Area-Site-Product-Selection-Guide.pdf [12],https://www.cooperlighting.com/global/outdoor/roadway [13]
+Streetworks,Navion,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/7c583a5aa06741a0b8a5ad400149c0cc/Streetworks-Roadway-Area-Site-Product-Selection-Guide.pdf [12],https://www.cooperlighting.com/global/outdoor/roadway [13]
+Streetworks,Verdeon,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/7c583a5aa06741a0b8a5ad400149c0cc/Streetworks-Roadway-Area-Site-Product-Selection-Guide.pdf [12],https://www.cooperlighting.com/global/outdoor/roadway [13]
+Streetworks,Caretaker,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/7c583a5aa06741a0b8a5ad400149c0cc/Streetworks-Roadway-Area-Site-Product-Selection-Guide.pdf [12],https://www.cooperlighting.com/global/outdoor/roadway [13]
+Streetworks,Fairfax,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/streetworks-lighting-solutions-brochure-v2/Streetworks-LED-Lighting-Solutions-Brochure.pdf [14],https://www.cooperlighting.com/global/brands/streetworks [15]
+Streetworks,Epic,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/streetworks-lighting-solutions-brochure-v2/Streetworks-LED-Lighting-Solutions-Brochure.pdf [14],https://www.cooperlighting.com/global/brands/streetworks [15]
+Streetworks,Avenaire,Cooper Lighting Solutions (Eaton),https://www.cooperlighting.com/api/assets/v1/file/CLS/content/streetworks-lighting-solutions-brochure-v2/Streetworks-LED-Lighting-Solutions-Brochure.pdf [14],https://www.cooperlighting.com/global/ [16]
+Cree Lighting,Guideway® Series,Cree Lighting,https://www.creelighting.com/products/outdoor/area/guideway-series/ [17],https://www.creelighting.com/products/outdoor/area/guideway-series/ [17]
+Cree Lighting,Traveyo® Series,Cree Lighting,https://www.creelighting.com/products/outdoor/street-and-roadway/traveyo-series-street/ [18],https://www.creelighting.com/products/outdoor/street-and-roadway/traveyo-series-street/ [18]
+Cree Lighting,RUL Series,Cree Lighting,https://www.creelighting.com/products/outdoor/street-and-roadway/rul-series/,https://www.creelighting.com/products/outdoor/street-and-roadway/rul-series/
+Cree Lighting,RSW Series,Cree Lighting,https://www.creelighting.com/products/outdoor/street-and-roadway/rsw-series/ [19],https://www.creelighting.com/products/outdoor/street-and-roadway/rsw-series/ [19]
+Cree Lighting,THE EDGE® Transportation Mount,Cree Lighting,https://www.creelighting.com/products/outdoor/street-and-roadway/the-edge-transportation-mount/,https://www.creelighting.com/products/outdoor/street-and-roadway/the-edge-transportation-mount/
+Cree Lighting,OSQ Series C,Cree Lighting,https://www.creelighting.com/products/outdoor/area/osq-series-c/,https://www.creelighting.com/products/outdoor/area/osq-series-c/
+Philips / Signify,"Luma gen2, UniStreet gen2, etc. (Global)",Signify,https://www.lighting.philips.com/prof/outdoor-luminaires/road-and-street/NROADLUM_CA/category [20],https://www.lighting.philips.com/prof/outdoor-luminaires/road-and-street/NROADLUM_CA/category [20]
+Lumec,RoadFocus,Signify,https://www.signify.com/en-us/brands/lumec/products/roadway/roadfocus,https://www.signify.com/en-us/brands/lumec/products/roadway/roadfocus
+Gardco,"Form Ten (Post Top/Area)",Signify,https://www.signify.com/en-us/products [21],https://www.signify.com/en-us/products [21]
+Gardco,OptiForm LED,Signify,https://www.signify.com/en-us/products [21],https://www.signify.com/en-us/products [21]
+Gardco,PureForm Wall Sconce,Signify,https://www.signify.com/en-us/products [21],https://www.signify.com/en-us/products [21]
+LEOTEK,"GreenCobra® (GCJ, GCM, GCL, GC1, GC2)",LEOTEK,https://leotek.com/wp-content/uploads/2024/05/GCM_J-Series_Specification-Sheet_2_2024.pdf [22] | https://leotek.com/wp-content/uploads/2024/05/GreenCobra_Overview_Brochure_1-25-2023.pdf [23],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,"Arieta® (AR13, AR18, AR13-CG)",LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,"VersaTEK™ (VTLSA, VTLFL, VTLOR)",LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,ComfortView™ (CV1),LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,Post Top Colonial Lantern,LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,ECOridge Ecological Light,LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,"Eseta LED Wall Sconce (ES1, ES2)",LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,"SafeGuard™ Utility Grade Light (UTL1, UTL2)",LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+LEOTEK,"Tangem Intelligent Street Light (TM1, TM2)",LEOTEK,https://leotek.com/product-category/lighting/street-roadway/ [24],https://leotek.com/product-category/lighting/street-roadway/ [24]
+Dialight,ProSite Streetlight,Dialight,https://www.dialight.com/wp-content/uploads/2025/01/Dialight_LED_ProSite_Streetlight_Tech_Spec_Sheet_Americas_January2025_01072025_editable.pdf [25],https://www.dialight.com/product/products-solutions/street-lights/prosite-streetlight/ [26]
+CLL,RL02 Series,CLL (Commercial LED Lights),https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27]
+CLL,DD05 Series (Barn Light),CLL (Commercial LED Lights),https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27]
+Venas,H2-Series,Venas,https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27]
+Atlas Lighting Products,Atlas Roadway Light,Atlas Lighting Products,https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/ [27]
+Fonroche,SmartLight System (RFS models),Fonroche Lighting America,https://coalinga.novusagenda.com/AgendaPublic/AttachmentViewer.ashx?AttachmentID=6185&ItemID=4521 [28],https://coalinga.novusagenda.com/AgendaPublic/AttachmentViewer.ashx?AttachmentID=6185&ItemID=4521 [28]
+Fonroche,SmartLight System (CK models),Fonroche Lighting America,https://www.townofzebulon.org/sites/default/files/uploads/planning/datasheet-smartlight-single-ck-g6652.pdf [29],https://www.townofzebulon.org/sites/default/files/uploads/planning/datasheet-smartlight-single-ck-g6652.pdf [29]
+SEPCO,"SolarViper, SolarRatio, SolarASL, SolarUrban, SolarLondon, etc.",SEPCO (Solar Electric Power Company),https://www.sepco-solarlighting.com/solar-lighting-systems [30],https://www.sepco-solarlighting.com/solar-lighting-systems [30]
+SLI,Stealth II (All-In-One),Solar Lighting International,https://www.solarlightingitl.com/solar-street-lighting/ [31],https://www.solarlightingitl.com/solar-street-lighting/ [31]
+SLI,X-35-LED,Solar Lighting International,https://www.solarlightingitl.com/solar-street-lighting/ [31],https://www.solarlightingitl.com/solar-street-lighting/ [31]
+Solar Street Lights USA,Engineered Systems (Specific models not named),Solar Street Lights USA,,https://solarstreetlightsusa.com/ [32]
+Solar Max Tech,"SMX-134WiE, LST-P2120-4",Solar Max Tech,,
+ILF,"ILLS, LAR, ILLF, IL-SSC, LASB, ILSX, LXR",ILF (Induction Lighting Fixtures),https://inductionlightingfixtures.com/catalog/solar-lighting/all-in-one-solar-fixtures/ [33],https://inductionlightingfixtures.com/catalog/solar-lighting/all-in-one-solar-fixtures/ [33]
+LED Living,"(Various Solar Models)",LED Living,https://commercialledlights.com/outdoor-lighting/street-roadway-lights/solar-street-lights/ [34],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/solar-street-lights/ [34]
+Solera Solar Lights,"(Various Solar Models)",Solera Solar Lights,https://commercialledlights.com/outdoor-lighting/street-roadway-lights/solar-street-lights/ [34],https://commercialledlights.com/outdoor-lighting/street-roadway-lights/solar-street-lights/ [34]
+WYWNA,"(Various Solar Models)",WYWNA,https://www.amazon.com/5200W-Solar-Street-Lights-Outdoor/dp/B0D4DDTNC3 [35],https://www.amazon.com/5200W-Solar-Street-Lights-Outdoor/dp/B0D4DDTNC3 [35]
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Supervised fine tuning/data/us_street_lamps.jsonl b/street_view_insights/notebooks/Supervised fine tuning/data/us_street_lamps.jsonl
new file mode 100644
index 0000000..ccb5124
--- /dev/null
+++ b/street_view_insights/notebooks/Supervised fine tuning/data/us_street_lamps.jsonl
@@ -0,0 +1,10 @@
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/images/family-renderings/holophane/mgledm/0a6f6f732992407698f5ad40014aa676.png?width=700&height=430&mode=crop&scale=both&quality=80"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Acuity Brands, under the make/brand Holophane. The model is Mongoose Medium LED Roadway and Area Light (MGLEDM). You can find the product specification PDF at: https://img.acuitybrands.com/public-assets/catalog/1312852/mgledm.pdf?abl_version=05%2f19%2f2025+23%3a53%3a45&DOC_Type=SPEC_SHEET"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/png", "fileUri": "https://img.acuitybrands.com/public-assets/images/family-renderings/american-electric-lighting/autobahn-atb2/atb2-family-angle.png?width=700&height=430&mode=crop&scale=both&quality=80"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Acuity Brands, under the make/brand American Electric Lighting. The model is Autobahn ATB2 LED Cobra Head. You can find the product specification PDF at: https://img.acuitybrands.com/public-assets/catalog/122047/atb2.pdf?abl_version=05%2f19%2f2025+23%3a53%3a46&DOC_Type=SPEC_SHEET"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://media.currentlighting.com/gec/images/Evolve-ERL2-Cobrahead-right-facing-hero.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Current, under the make/brand Evolve (formerly GE). The model is ERL2 LED Roadway Cobrahead. You can find the product specification PDF at: https://media.currentlighting.com/gec/specs/GE_Evolve_LED_Roadway_ERL2_Cobrahead_SpecSheet_GES1001.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.cooperlighting.com/content/dam/cooper-lighting/brands/streetworks/products/archeon-medium/archeon-medium-site-area-hero-1000x750.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Cooper Lighting Solutions, under the make/brand Streetworks. The model is Archeon Medium LED Area/Site Luminaire (ARCH-MD). You can find the product specification PDF at: https://www.cooperlighting.com/api/assets/v1/file/CLS/content/7d50e030b31445869f5aad40014c6128/Archeon-Medium-Site-Area-Spec-Sheet.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.creelighting.com/media/catalog/product/cache/926507dc7f93631a094422215b778fe0/g/u/guideway_series_product_hero_1.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Cree Lighting, under the make/brand Cree Lighting. The model is Guideway Series LED Street Light (Example: GWY-M-A-17L-40K7-3M-UL-GY-N). You can find the product specification PDF at: https://www.creelighting.com/media/document/file/s/p/spec_cree_lighting_guideway_series_area_site_roadway_luminaire.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://leotek.com/wp-content/uploads/2023/01/GreenCobra-GCJ-prodimg-angle-web-scaled.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by LEOTEK (an Acuity Brands company), under the make/brand LEOTEK. The model is GreenCobra GCJ LED Streetlight (J-Series). You can find the product specification PDF at: https://leotek.com/wp-content/uploads/2024/05/GCJ_J-Series_Specification-Sheet_2_2024.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.dialight.com/wp-content/uploads/2022/09/ProSite-Streetlight-Banner.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Dialight, under the make/brand Dialight. The model is ProSite LED Streetlight (Example: S1ENPB2BSTNVGN - 12k lm, Type II Medium, 5000K). You can find the product specification PDF at: https://www.dialight.com/wp-content/uploads/2024/03/Dialight_LED_ProSite_Streetlight_Tech_Spec_Sheet_Americas_March2024_03202024.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://media.currentlighting.com/kim/product-images/kim-lighting-altitude-2-zero-uplight-dark-sky-outdoor-area-lighting-luminaire-hero.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Current, under the make/brand Kim Lighting. The model is Altitude 2.0 LED Area Light (ALT2). You can find the product specification PDF at: https://media.currentlighting.com/kim/spec-sheets/kim-altitude-2-spec.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.assets.signify.com/is/image/Signify/Product%20portfolio%20relaunch%202024/philips-luma-gen2-road-lighting-BGP722-packshot-professional-na-global?wid=800&hei=800&qlt=82"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Signify, under the make/brand Philips. The model is Luma gen2 (BGP722 - representative for series - US specific sheet can vary). You can find the product specification PDF at: https://www.assets.signify.com/is/content/Signify/Assets/philips-lighting/united-states/20221020-luma-gen2-spec-sheet.pdf"}]}]}
+{"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://www.fonroche-lighting.com/wp-content/uploads/2020/09/smartlight-eclairage-solaire-fonroche.jpg"}}, {"text": "This image shows a street light. Provide details about its manufacturer, make/brand, model, and a link to its specification sheet."}]}, {"role": "model", "parts": [{"text": "This street light is manufactured by Fonroche Lighting America, under the make/brand Fonroche. The model is SmartLight Solar Street Light (General Series - RFS example). You can find the product specification PDF at: https://www.fonroche-lighting.com/wp-content/uploads/2022/07/FT-Smartlight-EN.pdf"}]}]}
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Understand_your_dataset/README.md b/street_view_insights/notebooks/Understand_your_dataset/README.md
new file mode 100644
index 0000000..376e595
--- /dev/null
+++ b/street_view_insights/notebooks/Understand_your_dataset/README.md
@@ -0,0 +1,35 @@
+# Analyze Imagery Insights Dataset
+
+This notebook is designed to analyze asset and observation data from Imagery Insights.
+
+## Prerequisites
+
+- A Google Cloud Platform (GCP) project.
+- A BigQuery dataset containing `all_assets` and `all_observations` tables.
+- The following Python libraries installed:
+ - `pandas-gbq`
+ - `matplotlib`
+
+You can install them by running:
+```bash
+pip install pandas-gbq matplotlib
+```
+
+## Configuration
+
+Before running the notebook, you need to configure your GCP `project_id` and `dataset_id` in the second cell of the notebook.
+
+## How to Use
+
+1. **Set up your environment**: Make sure you have the necessary libraries installed and have authenticated with your GCP account.
+2. **Configure the notebook**: Open the notebook and replace the placeholder values for `project_id` and `dataset_id` with your actual GCP project ID and dataset ID.
+3. **Run the notebook**: Execute the cells in the notebook sequentially.
+
+## What the Notebook Does
+
+1. **Data Retrieval**: Connects to a specified BigQuery project and dataset to fetch `all_assets` and `all_observations` tables.
+2. **SQL Query Construction**: Formulates a SQL query to join the asset and observation data, count unique observations per asset and snapshot, and create geographical points from location coordinates.
+3. **Data Processing**: Reads the query results into a pandas DataFrame for in-memory analysis.
+4. **Statistical Calculation**: Computes overall statistics, including the total number of unique assets, observations, and snapshots. It also determines the distribution of observations per asset.
+5. **Data Visualization**: Generates a pie chart to visually represent the distribution of assets based on their number of observations.
+6. **Tabular Output**: Formats and displays key statistics and data samples in a clear, tabular format.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Understand_your_dataset/Understand_your_dataset.ipynb b/street_view_insights/notebooks/Understand_your_dataset/Understand_your_dataset.ipynb
new file mode 100644
index 0000000..d8c773f
--- /dev/null
+++ b/street_view_insights/notebooks/Understand_your_dataset/Understand_your_dataset.ipynb
@@ -0,0 +1,3941 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "d8aaae3e",
+ "metadata": {
+ "id": "d8aaae3e"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "styled_table = spot_check_sample[['year', 'observation_id', 'asset_id']].style.set_caption(\"Spot-Checking Sample of Observations per Year\")\n",
+ "display(styled_table)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b7d9a28e",
+ "metadata": {
+ "id": "b7d9a28e"
+ },
+ "source": [
+ "### Build query to fetch Observation timestamps\n",
+ "This cell constructs the SQL query required to fetch temporal data from the all_observations table. It defines an f-string variable named temporal_sql_query that selects the asset_id, capture_time, and detection_time. The query dynamically uses the project_id and dataset_id variables to target the correct table. Finally, the cell prints the complete query for verification.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "1932fd3b",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "1932fd3b",
+ "outputId": "75ad03d2-5612-4428-b03a-36270b5e3fcb"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "SELECT\n",
+ " asset_id,\n",
+ " capture_time,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `imagery-insights-d1xs9z`.`imagery_insights___preview___us`.`all_observations`\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "temporal_sql_query = f\"\"\"\n",
+ "SELECT\n",
+ " asset_id,\n",
+ " capture_time,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `{project_id}`.`{dataset_id}`.`all_observations`\n",
+ "\"\"\"\n",
+ "\n",
+ "print(temporal_sql_query)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cebdd30c",
+ "metadata": {
+ "id": "cebdd30c"
+ },
+ "source": [
+ "### Process timestamps and aggregate observations by year\n",
+ "\n",
+ "This cell handles data loading and initial time-based analysis. The process is as follows:\n",
+ "\n",
+ "* Data loading: It runs the temporal_sql_query against BigQuery and loads the dataset into the comparison_df DataFrame.\n",
+ "* Timestamp conversion: It standardizes the capture_time and detection_time columns by converting them into timezone-aware (UTC) datetime objects.\n",
+ "* Year extraction: It creates two new columns, capture_year and detection_year, by extracting the year from the respective timestamp columns.\n",
+ "* Aggregation & output: It calculates the total number of observations for each year based on both capture and detection times and prints the results."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "d1811486",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "d1811486",
+ "outputId": "116270b9-ca5d-4bd4-dd85-9e5b3ee18fe1"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Downloading: 100%|\u001b[32m\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u001b[0m|\n",
+ "--- Observations per Capture Year ---\n",
+ "capture_year\n",
+ "2015 5945\n",
+ "2016 4201\n",
+ "2017 11977\n",
+ "2018 3419\n",
+ "2019 19972\n",
+ "2020 11366\n",
+ "2021 28173\n",
+ "2022 47086\n",
+ "2023 27432\n",
+ "2024 28705\n",
+ "2025 292344\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "--- Observations per Detection Year ---\n",
+ "detection_year\n",
+ "2011 23\n",
+ "2012 3\n",
+ "2013 8\n",
+ "2014 26\n",
+ "2015 2860\n",
+ "2016 1716\n",
+ "2017 4825\n",
+ "2018 2955\n",
+ "2019 9417\n",
+ "2020 4606\n",
+ "2021 12560\n",
+ "2022 29028\n",
+ "2023 20593\n",
+ "2024 17441\n",
+ "2025 374559\n",
+ "Name: count, dtype: int64\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import pandas_gbq\n",
+ "\n",
+ "# Read the data from BigQuery into a new DataFrame\n",
+ "comparison_df = pandas_gbq.read_gbq(temporal_sql_query, project_id=project_id)\n",
+ "\n",
+ "# Convert timestamp columns to datetime objects\n",
+ "comparison_df['capture_time'] = pd.to_datetime(comparison_df['capture_time'], utc=True)\n",
+ "comparison_df['detection_time'] = pd.to_datetime(comparison_df['detection_time'], utc=True)\n",
+ "\n",
+ "# Extract the year from each timestamp\n",
+ "comparison_df['capture_year'] = comparison_df['capture_time'].dt.year\n",
+ "comparison_df['detection_year'] = comparison_df['detection_time'].dt.year\n",
+ "\n",
+ "# Calculate observations per year for both timestamps\n",
+ "observations_per_capture_year = comparison_df['capture_year'].value_counts().sort_index()\n",
+ "observations_per_detection_year = comparison_df['detection_year'].value_counts().sort_index()\n",
+ "\n",
+ "print(\"--- Observations per Capture Year ---\")\n",
+ "print(observations_per_capture_year)\n",
+ "\n",
+ "print(\"\\n--- Observations per Detection Year ---\")\n",
+ "print(observations_per_detection_year)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "93c4424e",
+ "metadata": {
+ "id": "93c4424e"
+ },
+ "source": [
+ "### Grouped Bar Chart of Observations per Year\n",
+ "\n",
+ "This cell generates a grouped bar chart to visually compare the number of observations per year. Using the previously calculated counts, it plots the total observations for each year with separate bars for \"Capture Time\" and \"Detection Time,\" allowing for a clear, side-by-side comparison.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "48997b81",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 633
+ },
+ "id": "48997b81",
+ "outputId": "53aab2f6-86b4-4766-c30e-b41f117bd64c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABv4AAAMWCAYAAAA53PFgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA0htJREFUeJzs3Xd4FNX+x/HPpvcECCT00CEKoQWlSJcmKB0iUu0EQUEUG+VeEfQqipqL93rpepXfVbAhqCCgiEoLoFJECFjoJQmdkJzfH7hjlmRTlsCG5f16Hp6HPXNm5nvmnJnd7HfPjM0YYwQAAAAAAAAAAADgmubl7gAAAAAAAAAAAAAAXD4SfwAAAAAAAAAAAIAHIPEHAAAAAAAAAAAAeAASfwAAAAAAAAAAAIAHIPEHAAAAAAAAAAAAeAASfwAAAAAAAAAAAIAHIPEHAAAAAAAAAAAAeAASfwAAAAAAAAAAAIAHIPEHAAAAAAAAAAAAeAASfwAA4LJ98cUXGjp0qGrWrKmwsDD5+/urbNmyuvXWW/Xyyy/r8OHD7g7xmrJnzx7ZbDbFxMS4O5RiYc2aNerQoYNKliwpLy8v2Ww2zZkzp1DbWLp0qQYMGKAqVaooKChIYWFhio2N1YgRI/TTTz85XW/OnDmy2WwaMmTI5TUCkhjb7nTgwAFFRkbKZrNpwYIFedZdsGCBbDabSpcurQMHDlylCK+e77//Xg8++KBuuOEGRUREyM/PT2XKlFGrVq307LPP6tdff3V3iB5h5cqVstlshf43ceJESbJeo+hNnDgxx3EPCAhQmTJlFBcXpyFDhujtt9/W2bNn3R2qWxXnzwD22Ar7b86cObwXAwBwHfBxdwAAAODadeTIESUkJGjZsmWSpJiYGLVp00bBwcE6cOCA1qxZo2XLlmn8+PFatmyZbrrpJjdHjGvNvn37dNtttyktLU0tWrRQTEyMvLy8VL169QKtn56erjvvvFOLFy+WJN1www3q2rWrMjIytH79eiUlJWnGjBkaN26cnn32Wb5kvkwxMTHau3evUlJS+EKxmImOjtaMGTPUt29fDR8+XC1btlTZsmVz1Nu/f7+GDx8uSZoxY4aio6OvdqhXzOnTp3XPPffonXfekXTxmLRo0ULh4eE6cuSI1q5dq6+++kp///vftWDBAnXv3t0tcU6cOFGTJk3ShAkTrCTYtSg6OlqDBw/OUb5p0yZt3rxZUVFR6tSpU47l9evXvwrRQZJDH2RmZiotLU3bt2/X3LlzNXfuXD388MN67bXX1L9//yLbZ+vWrbVq1SqtWLFCrVu3LrLtFtaePXtUpUoVVa5cWXv27HFbHK6qXr16rufX6tWrtWvXLlWrVk0tWrTIdT0AAOD5SPwBAACX2BMxO3bsUO3atfXvf/9bt9xyi0Odc+fOae7cuZowYYL279/vpkivPeXLl9e2bdvk6+vr7lDc7vPPP1dqaqruvPNOvf3224Va9/z58+rQoYO+//57ValSRfPnz1fz5s2t5cYYvfXWW3rggQf03HPP6cyZM5o2bVpRNwHZMLbdq0+fPkpISNA777yju+++W59++mmOOvfee6+OHTumO++8U71793ZDlFdGRkaGOnbsqNWrV6ts2bJ64403dPvttzvUuXDhghYtWqQnn3zymkwEFDe1a9fOdXb2xIkTtXnzZqfL7bZt23blgoMk5320a9cuTZw4UW+99ZYSEhJ07Ngx6wcB15MePXro5ptvVnh4uLtDyaFFixa5JvaGDBmiXbt2qUWLFk7Pr4yMDN6LAQDwcNzqEwAAuOShhx7Sjh07FBMTo2+++SZH0k+S/P39dd9992nTpk2qU6eOG6K8Nvn6+qp27dqqVq2au0NxO/st92rUqFHodSdNmqTvv/9eERERWrFihUPST7p4G7mBAwdatz18+eWXrdmruDIY2+6XlJSkcuXKacmSJfr3v//tsGzmzJlavHixypcvr9dff91NEV4Zf//737V69WpFRETom2++yZH0kyQfHx/16dNHycnJatWqlRuiRHa1a9dW7dq13R3GdalatWqaP3++xo4dK0kaNWqUdu/e7eaorr7w8HDVrl0719nR1zLeiwEA8Hwk/gAAQKHt3r1b//3vfyVJ06ZNU8mSJfOsHxUVpVq1auUof/fdd9WuXTuVLFlS/v7+qly5soYNG6aff/451+3ExMTIZrNpz549WrJkiVq3bq3w8HCVKFFCXbt21Q8//GDV/e9//6umTZsqNDRUERER6tmzp3bt2pVjm/ZnELVu3VqnT5/Wk08+qerVqysgIEDlypXT3XffrT/++CPXeJYtW6aHHnpI9evXV2RkpPz9/VWhQgX169dP69aty3Ud+3N1Jk6cqF9//VV33323KlasKF9fX+sZMnk9e2Xnzp0aNmyYqlSpIn9/f4WEhKhy5cq67bbbNHv27Fz3+dlnn6lr164qU6aM/Pz8VK5cOfXr10/r16/PtX7r1q1ls9m0cuVKbdq0ST179rTaFxsbq5deeknGmFzXzU9B+9z+7JoJEyZIupjEsz+fpiC3kDxx4oSVuHjmmWdUuXJlp3W7du1qJQEmT57stN7Ro0eVmJioSpUqWbE/8sgjOn78eK71ly1bpm7duikqKkq+vr4qUaKEatSoobvuuktfffVVrussX75cPXv2VNmyZa3njvXo0UPffvttrvWzPwNr9uzZatq0qcLDw2Wz2bRr1y5VqFBBNptN3333ndN2Pfroo7LZbHrkkUesssOHD+vVV19Vly5dVKVKFQUGBiosLEyNGzfW888/n+O5T/b+2rt3rySpSpUqDs8UWrlypaT8n/H3+++/66GHHlKNGjUUEBCg8PBwNW/eXP/617+UmZmZo3725y+dOnVKTzzxhKpXry5/f3/rNoN5nb+F7Z/cZD+n9+7dq0GDBqls2bIKCAhQzZo1NXHiRJ05c8bp+j///LPuv/9+VatWzWpzy5Yt9dZbb+VaP/v5+fXXX6tbt24qXbq0vLy8CvTsyxIlSmjmzJmSpDFjxlhf5u/du9caAzNnzlSJEiWsdQo7LteuXavHHntMTZo0UXR0tPz8/BQVFaVu3bo5Ta5n78tjx47p4YcfVrVq1eTv73/ZtwM8ceKEpk+fLkkaP368qlSpkmf9kJAQNWjQwHqdkZGht956SwMGDFDt2rUVFhamwMBA1apVSyNHjtS+ffty3U72vlq1apX1rNKgoCA1adJE8+fPz7GOzWbTpEmTJDle9y59zlh+z7/Lvm9n5XmNnzNnzuill17SzTffrIiICAUEBKhWrVp67LHHdPTo0TyPX1Fx1sYr8VnAbt++fRo9erTq1KmjoKAghYaGKj4+Xq+//rouXLhQ4NgTEhJks9k0depUp3U++eQT2Ww2h7EmSf/73//Uvn17lSpVSr6+vipVqpRiY2N17733asuWLQWOoShMnjxZ5cqV04ULF/Tyyy/nWmfDhg0aMGCA9d5YsmRJdezYMceMYvvnrVWrVkmS2rRpk+PZc9kdP35cEyZMUP369RUaGqqgoCDVrVtXzz77rE6fPu005g0bNmjw4MGqUqWKAgICVLJkScXFxWns2LHWe9SQIUOs68DevXtzPAfPLr9n/K1du1Z9+/ZVuXLlrGtjt27d9MUXX+Raf8iQIVZbU1JSNHDgQEVHR8vf31/VqlXT008/rXPnzjltW1HJ6704+zF466231KRJE4WEhKh06dJKSEiwfpBljNHrr7+u+vXrKzg4WJGRkRoyZIgOHTrkdL+Ffb8DAACXwQAAABTS9OnTjSQTERFhLly4UOj1s7KyzKBBg4wk4+PjY9q2bWv69+9vatasaSSZoKAgs2TJkhzrVa5c2Ugy48aNMzabzTRv3tz07dvXWi8iIsL88ssvZuzYsdZ2e/fubSpWrGgkmXLlypljx445bHPFihVGkmnatKm5+eabTVBQkOnSpYvp06ePKVu2rJFkoqOjzc8//5wjnmrVqhk/Pz/ToEEDc/vtt5uePXua2NhYq13vvfdejnUmTJhgJJk777zTlCxZ0kRHR5tevXqZnj17mjFjxhhjjElJSTGSTOXKlR3W/eGHH0xYWJiRZGrVqmV69uxp+vTpY5o2bWpCQkJMXFxcjv09/fTTRpJ1vBISEkz9+vWNJOPt7W1mzpyZY51WrVpZx9nPz8/UqVPH9O/f37Rq1cp4e3sbSWbUqFF59HBOhe3zr7/+2gwePNjExcUZSSYuLs4MHjzYDB482DpOefnggw+MJCPJHDp0KN/67733npFkvLy8TGpqqlU+e/ZsI8ncfvvtplq1aiYiIsJ0797d9OjRw5QoUcLqi0v3MWfOHGOz2YzNZjM33XST6devn7n99ttNw4YNjbe3d67Hb8yYMVYMTZo0MX369DE33XSTsdlsxtvb28yaNSvHOvY2jhgxwnh5eZkWLVqYhIQEc9NNN5k9e/aYJ554wkgy999/f67tzsjIMFFRUUaS2bJli1U+f/58I8mUL1/etGrVyvTv39+0a9fOhISEWOfL2bNnrfr2/goODjaSTK9evaz+Gjx4sNm2bZsxxvnYNsaYtWvXmpIlSxpJplKlSqZfv36mU6dOJiAgwEgyHTt2NOfOnXNYx94/3bt3N/Xq1TMRERGmW7du5o477jBlypSx9pW9T13tH2fs5/SgQYNMqVKlTFRUlOnTp4/p2rWrdTyaN29uzpw5k2Pd//u//7PaV7t2bdOjRw/Ttm1ba72hQ4fmWMd+fg4fPtx4eXmZ2NhY079/f9OhQwfz3//+t8Bx33///UaSadGihcnIyDBt2rQxkswDDzzgUM+VcdmuXTvj5eVl6tata11PGzZsaI3XV155Jcc69r687bbbTJUqVUyJEiXM7bffbvr06WMGDBhg1bO/D8yePbvAbf3www+t6+CRI0cKvJ7db7/9ZiSZ8PBwc/PNN5s+ffqYLl26mHLlyhlJpnTp0mbnzp051rP31ciRIx36qmXLlsbLy8tIMqNHj3ZYx9l1b/DgwebNN9+06tmPpTP2fa9YsSLX8rzGzx9//GHq1q1rJJmSJUua9u3bmx49eljHPiYmxuzZs6fQx9HOfs60atUqz3rO2nglPgsYY8yqVaus63pMTIy5/fbbTceOHa2yDh06mPPnzxeojZ999pl1XjvTs2dPI8m8+uqrVtmkSZOs98mWLVuahIQE06VLF3PjjTcam81mXn755QLtPz8F7QNjjHnkkUes97pLvfLKK9ZYrl+/vundu7dp0aKF8fPzM5LMpEmTrLrbtm0zgwcPtt5zOnbs6DC+v/76a6vuTz/9ZPVX2bJlTadOnUy3bt2sdevXr5/jum6MMS+88IIVT82aNU3fvn1Nt27dTJ06dRyuG2+++abp1auXkWSCg4Md4hg8eLC1Pft1KXuZ3b///W9rXw0aNDAJCQmmWbNm1ridOHFijnUGDx5sfYYKCwszlStXNn379jXt27c3gYGB1vvZ5bDvI7eY7fJ6L7bHP27cOIfzp1KlSkaSqVixojl27Jjp27evCQgIMJ06dTI9evSw3nPr1auX473aGNfe7wAAgOtI/AEAgEIbOHCgkWTatm3r0vozZswwkkxkZKRJTk62yrOysqwvoyIiInIkU+xf9vn7+5tly5ZZ5RcuXDB9+vQxksyNN95oSpUqZTZt2mQtP3XqlPVlzLPPPuuwTXviT5KpXr262bt3r7XszJkz1hdDN998c452LFq0KNcvDxctWmR8fHxMqVKlzOnTpx2W2dsnydx1110OyRM7Z1/IDB06NNc2GGPM6dOnzapVqxzKlixZYiSZgIAA8/nnnzss+89//mMkGV9fX/Pjjz86LLN/MSzJvPHGGw7Lli9fbn3h/9tvv+WIwxlX+9y+bMKECQXelzHGPPPMM0aSqVKlSoHq792712rzl19+aZXbv/Szj4GjR49ay44fP26Nq/79+ztsr0qVKkaSwxeZdgcPHjQbN250KPv3v/9tjcHNmzc7LFu1apUJDQ01fn5+ORLQ9tjCwsLMt99+m2NfP//8s3Vsc0s82RMijRo1cijfunVrrts7duyY6dChg5FkXnjhhRzL7edoSkpKjmXGOB/bZ8+etdZ94IEHHL5c37Vrl4mJiTGSzJNPPumwXvb+6dixo0lLS3OI1Z7kfu655xzWK2z/5CX7OX3HHXc4nPO//fablYwYN26cw3pbtmwx/v7+JiAgwLz//vsOy/bs2WMlXubOneuwLPv5mZSUVOA4L3XixAlTtWpVI8kax9WqVTMnT5606rg6Lj/99FOzb9++HPtcs2aNCQsLM76+vub33393WJa9L9u1a+fQl9m5kvizXw+qVq1a4HWyS09PNx9++GGOL7PPnz9vJde7dOmSY73sfXXpGFy5cqX1Rf/SpUsdlhXkune5iT9n4ycrK8s0b97cSDJ33323SU9Pt5ZlZGRYieA2bdo43Xd+iirxV5SfBfbv329KlSplbDab+ec//2kyMzOtZUeOHDFt27bNkcjKS2ZmppUoye1aevjwYePr62v8/PysZPTZs2dNYGCgCQkJMdu3b8+xzp49e6wfUVyuwiT+3nrrLasvMjIyrPKlS5cam81mIiMjc3z+2LJli6lQoYKRZFauXOmwzNnYtDt9+rSpVq2akWSefvpph/Pu1KlTJiEhIddEkf39LCAgwCxYsCDHdn/66SezdetW63VeyS87Z4m/LVu2GB8fH2Oz2cy8efMcln366adW4vPSz172pJwk89RTTzn8eO6HH36wkmBr1qxxGlN+iirxd+n5c/r0adOiRQsjydStW9dUq1bN4QcAhw8fNtWrVzeSzFtvveWwTVff7wAAgOtI/AEAgELr1KlTrsmOgrJ/oZP9V+52WVlZpl69ekaSmTx5ssMy+5d9Y8eOzbHexo0b8/wy8/3338/1y8rsib8PPvggx3oHDx40QUFBRpL55ptvCtxG+xdTixcvdii3f9lWsmTJXH+tbozzL2S6dOliJBU4KdGuXTsj5ZxRYte1a1cjydx7770O5fYv5Xr27Jnrevb+v/TLrry42ueuJv4eeOABpwnb3Jw9e9YaB9m/MMyejMiesLTbsmWLsdlsxsvLyyERGhQUZMLDwwu078zMTGvm0Pr163Ot88ILLxhJOWY72mP729/+5nT7t9xyi5GU62yw7t27G0nm9ddfL1CsxhizY8cOI8nEx8fnWOZq4s8+w7BcuXK5JsPtMzJDQ0MdEpj2/gkODs410fTuu+8aKeePFArTP/mxj9HAwECzf//+HMs//vhjKzmbPfZ+/foZSebFF1/Mdbtr167NNSlrPz9d/eFFdl9//bU1Y8XLy8usXr3aWnY54zIv9kTZpddpe1/6+vqaXbt2OV2/bdu2platWmbhwoUF3mdhrweFVa5cOePl5eWQJDPmr75q0KBBruvZk2i33nqrQ/nVSPw5Gz/2H4zUr1/fIcljl5mZaW688UYjyfzwww9O95+Xokr8FeVngccff9xIF2dP5+b33383vr6+pnTp0iYrKyvPuO3sCef77rsvx7JXXnnFSDK9e/e2yg4dOmSkizOmrrTCJP6WLl1qHdODBw9a5TfddJORlOvdDYy5OMNLujgDPLv8En/2Hwp17do11+UnTpwwZcqUMT4+Pg4/vrL/0OOll17Kt03GXF7i7+67787zc9KIESNyPbftSblGjRrlOo7s16q83tPzU1SJv9zOn4ULF1rLL/18a4wxL730Uq5JWVff7wAAgOt4xh8AALiqfv/9d+v5OoMHD86x3GazaejQoZKkFStW5LqNLl265CirUaNGgZY7exZTRESE9Zy37MqUKaNOnTpJUo5nJdm39+abb2rMmDG65557NGTIEA0ZMkQ//fSTJGnHjh257q99+/YKDw/PdZkzTZo0kSQ9+OCD+uyzz3I8Zy27Cxcu6JtvvpEkp8+mufvuuyU5P87dunXLtbxOnTqS5PTZaZcqij6/0kw+zyyMi4tT/fr1c5TXrVtXDRo0UFZWlsNz4Zo0aaK0tDQNGjRIGzZsUFZWltNtJycna9++fapWrZoaNWqUax37M87WrFmT6/LevXs73b792F76/KTDhw9r8eLF8vf315133pljvczMTC1fvlx///vfNXz4cA0dOlRDhgyxnoPobGy7wn5u9e/fX/7+/jmW9+zZUyVKlNCJEye0YcOGHMsbN26ssmXL5ih3NlYL0z8F1aFDB0VHR+co79q1q0qVKqX09HRt3LhRkpSVlaUlS5ZIkvr165fr9ho3bqyQkBAlJyfneq7n1ecF1aJFC/Xo0UOS1KNHDzVv3txadrnj8ujRo5o3b54ee+wx3Xvvvda10f58L2fjp0GDBqpatarTmJcvX67t27dbcV9Nmzdv1rRp0/TQQw9p2LBhVpsuXLigrKws/fLLL7muN2jQoFzL7dfD1atX5/oMyyvJ2fhZvHixJKlXr17y8fHJsdzLy0stW7aU5Px6dLUU5WcBe7udnY/ly5dXjRo1dPjwYe3cubNA8dmf57ZgwYIcz/m0P5N32LBhVlnp0qUVExOjLVu2aMyYMdq6dWuB9nOlZb8+2p/9duTIEa1du1aBgYFOPyvk977lTH59ERISosaNG+vChQvW85QPHDigTZs2ycvLy/pscyXZ37Py+3z19ddf53pud+3aNdfnVxb289WVlNf54+Pjow4dOjhdnv38Kor3OwAAUHg5P8kDAADko3Tp0pKkQ4cOFXpd+5cZpUqVUlhYWK51qlWr5lD3UpUqVcpRFhISkufy0NBQSXL6hUJMTEyuX8JIUpUqVSRdTGBlN2nSJE2ePFkZGRm5ridJ6enpTvdXWGPHjtXq1au1bNkyderUSb6+voqLi1PLli3Vv39/xcfHW3WPHj1qtdUe/6VcOc6SrH4r6JczRdHnhRUZGSlJOnjwYIHqZx/L9vGdnbNjaF+2ceNGh/Hxz3/+U127dtX8+fM1f/58hYaGKj4+Xm3bttXAgQMdju3u3bslSbt27XI6Bu0OHz6ca3le46lv374aOXKkli1bpt9//10VKlSQJL311lvKyMhQv379VKJECYd1du7cqR49elgJ7Nw4G9uusPe7s+Nss9lUpUoVHT9+PNcxUtixWpj+Kai8xkhMTIyOHj1qjZGjR49ax69ixYr5bvvo0aMqX758jm0WBfu1M/s1VLq8cfnmm2/qkUce0alTp5yuU5TXxvxcznuWJJ06dUoDBw7UokWL8qznrE3Oxoa9/MyZMzp69KjKlCnjUnyucHac7f3+zDPP6JlnnslzG86uR1dLUX4WsLf7lltuyXe/hw8fVs2aNfOtV7VqVbVq1UorV67UokWLrB9YJCcna/PmzSpXrlyO5Mm8efPUu3dvTZs2TdOmTVPJkiV100036dZbb9XAgQOt97ar6ciRI5IuXoft7xUpKSkyxujMmTO5/lgju8KOE3tfDBw4UAMHDizQtn/99VdJUtmyZQv9oypX5PeeZf9Mc/bs2VzP7aL6fHUl5XV+lS1bNtcfBuR2fhXF+x0AACg8En8AAKDQGjVqpPnz52vjxo3KzMyUt7f3Vd2/l1feNy3Ib7mrss8KW7hwoSZOnKiQkBC9/vrratu2rcqVK6fAwEDZbDY9+eSTmjJlitOZZIGBgYXef1BQkL744gutW7dOS5cu1Zo1a7RmzRqtX79e06ZN0/Dhw5WUlORy+y51pY7j1WCfoZSSkqLDhw/nmszLbu3atZIutrlBgwYu7TN7X9epU0c7duzQ559/ri+//FJr1qzR119/rS+//FJ/+9vfNHPmTN11112S/ppNER0drY4dO+a5D2df+uY1noKDg9W3b1/NmjVL8+bN05NPPinprxmA9hmB2fXu3Vs//fSTunbtqscee0yxsbEKCwuTr6+vzp8/n+8XvVdbYcdqYfqnKNnHSPYZNLnNgr1UbsfblWtIYbg6Ljds2KD7779f3t7eev7559WtWzdVqlRJQUFBstls+ve//63777+/SK+N+cl+PTh69KhKlSpVqPWfeOIJLVq0SLVr19bUqVMVHx+vyMhI+fn5SZKaNWumb7/9Nt+Zw3m5nHVzk98sVmfH2b5eixYtrOSFMzfccINrwRWRovwsYG937969FRwcnGfdwoyfYcOGaeXKlZozZ46V+LPP9hs0aFCOz0+33HKL9uzZo8WLF2vVqlVas2aNPvvsMy1ZskQTJkzQokWL1K5duwLvvyjYZyrXrl3bSvbYj1dISIh69epVpPuzb7tTp06KiorKs27lypWLdN9Xy7Xw+SqvGF05tyTX3+8AAEDhkfgDAACF1rVrV40ePVqpqan66KOPCnXLNfuveO2/AM5tBpj9195X8xe/e/bsyXeZfaaUJP3f//2fJGny5Mm67777cqxT0FuBuSI+Pt6a3XfhwgV98MEHGjRokP75z3+qd+/eatOmjUqVKiV/f3+dO3dOu3fvVr169XJs52odZ3f0edu2bRUaGqoTJ05o3rx5GjNmTJ71582bJ+nil64RERE5lqekpDhdN7fxIV28FVaXLl2s22Wlp6dr2rRpmjRpku6//3716NFDwcHB1i/gS5UqleN2nEVl6NChmjVrlubMmaMnn3xSGzdu1JYtW1ShQgXdeuutDnW3b9+uLVu2qEyZMlq0aFGOX/VfibFt73f7OMiNvQ+KaowUtH8KqjBjJDIyUoGBgTpz5oxefPFFt8ziyY+r4/J///ufjDF66KGH9Nhjj+VYfiWvjc60adPG4XrwyCOPFGp9+/V+wYIFuV5L82uTs7FhHxcBAQGFTkb6+voqIyNDJ06csGbZZLd3795Cbc/O3u933HGHHn30UZe2cS2qWLGidu7cqccff1yNGzcusu326tVLI0aM0PLly/Xbb78pKipK//3vfyXl/qML6WJStnfv3tbtWA8fPqynn35a//73vzVs2DCX+9YVGRkZ1vjPPjvRPk5sNptmzZpVpImsihUravv27br77rsLfEtj++y0/fv3Ky0t7YrP+itfvrx27dql3bt368Ybb8yx3P5eFhAQoJIlS17RWIq7a+H9DgAAT1T8f2YEAACKnWrVqikhIUGSNGbMGB07dizP+ocOHbKe51ShQgVrFkFuXyYbY6zyNm3aFF3Q+UhNTdXHH3+co/zw4cNaunSppL+eVyPJanNuvzY/dOiQvvjiiysT6CV8fHzUu3dva0bOpk2brPIWLVpIyv04S9KsWbMkXfnj7I4+DwsLU2JioiTp2WefzfOL0k8++cTqe/tsuEtt2bJFW7ZsyVH+008/aePGjQ7PvcorpokTJyoiIkKnT5/Wzz//LEnW7KGtW7fmeWvNy9GiRQvVrFlTO3fu1DfffGPNOBk8eHCOL2ztY7tcuXK53srrrbfecrof+wyoCxcuFCo++7m1YMGCXG9xtmjRIh0/flyhoaFOnzd3uZz1T0F9/vnnud5K8tNPP9XRo0cdYvf29rYSrvYv1YsbV8dlXtfGs2fP6v333y+yGAsqLCxMI0eOlCT97W9/yzNJK0knT55UcnKy9TqvNn322WfWrRCdcXbO2H9w0KJFC4dzrSDnkT0Bvm3bthzLtmzZot9++y3PmJzp3LmzpL8SuNcLe7uL+nwMCgpSv379lJWVpXnz5unjjz/W0aNH1bx58wLdLlS6eKvaF154QdLFW1oeP368SGPMy1NPPaV9+/bJ19fXIWFerlw51atXTydOnLA+IxVUfuPblb6Ijo5WXFycsrKyrM82lxtHXuzvWfl9vrrllltyfR+9nlwL73cAAHgiEn8AAMAlr732mqpXr66UlBS1aNFCq1evzlHn/PnzmjVrlho0aODw5aR9FsHf//53bd682So3xujZZ5/Vpk2bFBERoXvvvffKNySbMWPGODyn7dy5c0pMTNSpU6fUpEkTNW/e3FpWp04dSdK///1vnT9/3ipPS0vT4MGDlZaWVuTx/fOf/7QSqNkdOHBA69evl+T4xbR9ltuMGTO0fPlyh3XmzJmjjz76SL6+vho1alSRx3opd/T5xIkT1bhxY6WmpqpNmzZas2aNw3JjjN566y3169dPkvTQQw/leN5S9roPPvigwxeuaWlpevDBB2WMUa9evawZEKdPn9a0adNyfa7R119/rdTUVHl7e1uzv3x9fTVhwgQZY9SjR49cz6XMzEx9+eWX+u6771w7GPprdskbb7xhzTgZMmRIjno1a9aUt7e3fvjhB61cudJh2ccff6yXX37Z6T7sbSpsArNPnz6qVKmS9u3bp9GjRzt8EZuSkmKN5YceekgBAQGF2valCts/BXXmzBk9+OCDOnPmjFW2b98+K/YHHnjAIfYJEybIz89PY8eO1dy5c3O9NeOPP/6ohQsXFiqOouLquLRfG+fOnasTJ05Y5WfPntXw4cPzTbrlp127dqpdu3a+z9u71Pjx49WsWTOlpqaqRYsWuf7QIzMzU4sWLVKjRo20atUqq9zeptdee82h/o4dO/TAAw/ku+8NGzZYiRu71atXW7dmvnQGYkHOo/bt20u6+KzZc+fOWeV79uzR4MGDXU7a3XHHHYqPj9fatWs1dOjQXM+T48eP64033nApYVJcjR07VhEREZo2bZpeeuklh/d1u5SUlDx/+ODMsGHDJF1837UnhHKb7bd371795z//yfVZkfbxWqJECYdZ8/Zb0Bb17T93796tQYMG6R//+Ick6fXXX8+R+H722WclXWxLbueTMUbff/+9Pv/8c4fy/Mb3fffdp8qVK+t///ufHn/8cYfriN2BAwf05ptvOpRNmDBB0sVkZW4/MNi6davDZ9HSpUvLz89PBw4cyPcHbJcaNWqUfHx89MEHH+QYE59//rn+9a9/SdJ1NWs2L8X9/Q4AAI9kAAAAXHTw4EHTunVrI8lIMlWqVDF33HGHSUhIMG3btjUhISFGkgkLCzPff/+9tV5WVpYZOHCgkWR8fHxMu3btTEJCgqlVq5aRZAIDA82nn36aY3+VK1c2kkxKSkqu8djjyE1KSoqRZCpXruxQvmLFCiPJNG3a1Nx0000mKCjIdO3a1fTt29eUK1fOSDJlypQx27dvd1hv9+7dJiIiwkgy5cuXN7169TK33367CQ8PN2XLljXDhg0zksyECRMc1pswYUKu5QWJNS4uzjrO3bp1MwMGDDAdOnQwgYGBRpJp27atycjIcFjn6aefNpKMzWYzLVq0MHfeeadp2LChkWS8vb3NzJkzc+y/VatWRpJZsWJFrvEVpA2XcrXPXdlXdqmpqaZTp07W2Khbt67p27ev6dGjh6lQoYKRZLy8vMxjjz1msrKycqw/e/ZsI8ncfvvtpmrVqiYiIsL06NHD9OzZ05QsWdJIMjVq1DAHDx601jl+/Li13bi4ONO7d2+TkJBgmjZtamw2m5Fkxo8fn2NfY8eOteK84YYbzB133GH69+9vWrdubY21GTNmOKyT15i/1B9//GG8vb2tdVq2bOm07qhRo6w2tGrVyiQkJFjjxj6mctvv66+/biSZkJAQ07NnT3P33Xebu+++2zp/nI1tY4xZu3atdUwrV65s+vXrZ7p06WICAgKMJNOxY0dz7tw5h3Xs/TN48OBc25Hb/lztH2fsY3TQoEGmZMmSJjo62vTp08d069bNBAcHW9eX06dP51j3//7v/0xQUJCRZCpUqGA6dOhgBgwYYDp37myNz379+jmsk9/5WViDBw/O8xgWdlweP37culaXKlXKdO/e3fTq1cuUKVPGhIaGWmPr0v3l15d29m3Pnj270G09ceKE6du3r9WesmXLmq5du5o777zTdOzY0Rp//v7+5oMPPrDWe//9962xUbduXdO/f3/Ttm1b4+vra9q2bWuaNWuWa5/Y+2rkyJHGy8vL3HDDDSYhIcG0atXKeHl5GUlm1KhROeI8cOCANXaaN29uhgwZYu6++24za9Ysq07296BKlSqZXr16mZYtW5rAwEDTvn37fGPKa/z88ccfpn79+kaSCQ4ONs2aNTP9+/c3PXv2NPXr17euI2fOnCl0Hxjz1znTqlWrPOs5u85cic8CxhizatUqExkZab3vt23b1gwYMMB07drVVKtWzUgyN910U37Ny1WdOnWsuIKDg82JEydy1ElOTjaSjK+vr4mPjzd9+/Y1ffv2NQ0aNLDex//zn/84rGM/b3JrT17sfRAVFWUGDx5sBg8ebAYOHGhuv/12U7NmTWu8ly5d2ixYsMDpdqZPn258fHyMJFO9enVz2223mTvvvNPceuutpkyZMkaSefzxxx3W+eSTT4wk4+fnZ7p27WqGDRtm7r77bvPNN99YdX788UcTExNjJJmIiAjTsmVLc+edd5ru3bub2NhYY7PZTFRUVI54Jk+ebMVeu3Zt069fP3P77beb2NjYXK8bvXv3NpJMxYoVTUJCgvWedenxze269K9//cs6jxs2bGjuvPNO07x5c2v/EydOzLGO/Xrr7PpV0OtgXvK7phuT93ng6vljzF+fqXM7t115vwMAAK4j8QcAAC7bkiVLzKBBg0z16tVNSEiI8fX1NdHR0ebWW281r7zyijl69Giu6/33v/+1vjz29fU1FStWNEOGDMmRZLO7kom/Vq1amZMnT5qxY8eaKlWqGD8/PxMVFWWGDBlifv31V6fbHDBggKlUqZLx9/c3lStXNg888IA5cOCA04TV5ST+PvnkE/Pggw+aBg0amNKlSxs/Pz9ToUIF07p1azN37lxz/vz5XLe3ZMkS06VLF1OqVCnj4+NjJSayJ2OzuxKJP7vC9vnlJv7sFi9ebPr3728qVapkAgICTEhIiKlVq5Z58MEHzZYtW5yul/1LuEOHDpn777/fVKhQwfj5+ZmKFSuakSNH5hjfGRkZ5o033jAJCQmmdu3aJjw83AQGBppq1aqZXr16meXLlzvd3zfffGMGDBhgKleubPz9/U1oaKipWbOm6d69u/nPf/5jjh075lC/MIk/Y4zp0qWLtU5eiZOsrCwzc+ZM06hRIxMSEmLCw8NNixYtzLvvvpvnfjMzM82UKVPMDTfcYCXsso+l/L40/PXXX01iYqKpWrWq8fPzM6GhoaZp06ZmxowZOZLaxriW+Luc/slN9jG6e/duk5CQYKKiooyfn5+pXr26GT9+vDl16pTT9VNSUswjjzxibrzxRhMcHGwCAgJM5cqVTevWrc3UqVPNL7/84lD/aif+jCn8uDx8+LAZPny4qVatmvH39zflypUzd911l9m5c6fTPrsaiT+7b7/91tx3332mTp06JiwszPj4+JjIyEjTsmVLM3nyZPP777/nWOerr74y7dq1M5GRkSYoKMjceOONZvLkyebcuXNO+yR7+fLly027du2s8da4cWMzZ84cpzF+9dVXpn379qZEiRJWcuHSY7N161bTs2dPU6JECePv729q1aplnn32WXP+/PkCxZSXs2fPmjfeeMO0adPGeu8oU6aMqV+/vklMTDSfffZZnuvnpbgm/oy5+IOmZ555xjRs2NCEhoZa77PNmjUzEyZMyPP9Ii8vvPCCFZezMZ6enm5eeeUV06NHD1OjRg0TEhJigoODTc2aNc2gQYPM+vXrc6xzuYm/7P/8/PxMZGSkqVevnhk0aJB5++23C5Tc/eGHH8x9991natSoYQICAkxQUJCpWrWq6dixo3n11VfNH3/8kWOdN9980zRs2NBKBOV2Tqenp5sXXnjBNG3a1PrMULZsWRMfH2/Gjh1r1qxZk2s83377rUlISDDly5c3vr6+pmTJkiYuLs489thjZu/evQ51jx49au6//35TqVIl4+vrm2Ps5Hdd+u6770zv3r1NdHS08fHxMaVKlTK33Xab+fzzz3Otfz0n/uzrF+b9DgAAuM5mzHV0434AAIBLrFy5Um3atFGrVq1y3NYQAPIzceJETZo0SRMmTNDEiRPdHQ6KkdatW2vVqlVasWKFwzNiAQAAAOBK4hl/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAfgGX8AAAAAAAAAAACAB2DGHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHsDH3QEUN1lZWdq3b59CQ0Nls9ncHQ4AAAAAAAAAAACuY8YYnThxQuXKlZOXV95z+kj8XWLfvn2qWLGiu8MAAAAAAAAAAAAALL/99psqVKiQZx0Sf5cIDQ2VdPHghYWFuTkaAAAAAAAAAAAAXM/S09NVsWJFK4eVFxJ/l7Df3jMsLIzEHwAAAAAAAAAAAIqFgjyiLu8bgQIAAAAAAAAAAAC4JpD4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA/CMvz8lJSUpKSlJmZmZ+dbNysrS+fPnr0JUuF75+fnJy4u8PAAAAAAAAAAAKDibMca4O4jiJD09XeHh4UpLS1NYWFiO5efPn1dKSoqysrLcEB2uF15eXqpSpYr8/PzcHQoAAAAAAAAAAHCj/HJX2THjrxCMMdq/f7+8vb1VsWJFZmThisjKytK+ffu0f/9+VapUSTabzd0hAQAAAAAAAACAawCJv0K4cOGCTp8+rXLlyikoKMjd4cCDlS5dWvv27dOFCxfk6+vr7nAAAAAAAAAAAMA1gClrhWB//h+3X8SVZh9jBXnmJAAAAAAAAAAAgETizyXcehFXGmMMAAAAAAAAAAAUFok/AAAAAAAAAAAAwAOQ+LtGDBkyRN27d3d3GAAAAAAAAAAAACimSPwVAzabLc9/EydO1PTp0zVnzhy3xlnck48FOY4AAAAAAAAAAACeysfdAUDav3+/9f8FCxZo/Pjx2rFjh1UWEhKikJAQd4R2TSnIcQQAAAAAAAAAAPBUzPj7U1JSkmJjYxUfH3/V9x0dHW39Cw8Pl81mcygLCQnJMduudevWeuihh/Twww+rRIkSioqK0ptvvqlTp05p6NChCg0NVfXq1bVkyRKHff3444/q3LmzQkJCFBUVpYEDB+rIkSPW8vfee09169ZVYGCgSpUqpfbt2+vUqVOaOHGi5s6dqw8//NCaQbdy5UpJ0uOPP66aNWsqKChIVatW1TPPPKOMjAxrmxMnTlT9+vU1a9YsVapUSSEhIRo+fLgyMzP1wgsvKDo6WmXKlNHkyZMdYrXZbJoxY4Y6d+6swMBAVa1aVe+9916hj2NoaKhq1qyppUuXOtT/4IMPFBwcrBMnTmjPnj2y2Wx699131axZMwUEBOjGG2/UqlWrCnX8AAAAAAAAAAAA3IXE358SExO1detWrVu3zt2hFNjcuXMVGRmptWvX6qGHHtKDDz6oPn36qFmzZtq4caM6dOiggQMH6vTp05Kk1NRUtW3bVg0aNND69eu1dOlSHTx4UH379pV0ccZcQkKChg0bpm3btmnlypXq2bOnjDF69NFH1bdvX3Xq1En79+/X/v371axZM0lSaGio5syZo61bt2r69Ol688039fLLLzvEumvXLi1ZskRLly7VO++8o5kzZ+q2227T77//rlWrVun555/X008/re+//95hvWeeeUa9evXS5s2bNWDAAPXv31/btm0r1HEKDg5W//79NXv2bIfy2bNnq3fv3goNDbXKxo4dqzFjxig5OVlNmzZVt27ddPTo0QIdPwAAAAAAAAAAAHfiVp/XsLi4OD399NOSpCeeeEJTp05VZGSk7r33XknS+PHjNWPGDG3ZskU333yzXn/9dTVo0EDPPfectY1Zs2apYsWK+vnnn3Xy5ElduHBBPXv2VOXKlSVJdevWteoGBgbq3Llzio6OdojDHoMkxcTE6NFHH9W7776rxx57zCrPysrSrFmzFBoaqtjYWLVp00Y7duzQp59+Ki8vL9WqVUvPP/+8VqxYoZtuuslar0+fPrrnnnskSX//+9/1xRdf6LXXXtM///nPQh2re+65R82aNdP+/ftVtmxZHTp0SJ9++qmWLVvmUG/EiBHq1auXJGnGjBlaunSpZs6cqcceeyzf41ezZs1CxQQAAAAAAAAAAFCUSPxdw+rVq2f939vbW6VKlXJI1EVFRUmSDh06JEnavHmzVqxYkeuz7nbt2qUOHTqoXbt2qlu3rjp27KgOHTqod+/eKlGiRJ5xLFiwQK+++qp27dplJQ/DwsIc6sTExDjMrIuKipK3t7e8vLwcyuyx2jVt2jTH602bNuUZT26aNGmiG264QXPnztW4ceP01ltvqXLlymrZsqXT/fn4+Khx48bWDMP8jh+JPwAAAAAAAAAA4E7c6vMa5uvr6/DaZrM5lNlsNkkXZ9tJ0smTJ9WtWzdt2rTJ4d/OnTvVsmVLeXt764svvtCSJUsUGxur1157TbVq1VJKSorTGL799lsNGDBAXbp00SeffKLk5GQ99dRTOn/+fKFitZfZY70S7rnnHs2ZM0fSxdt8Dh061DpGBZHf8QMAAAAAAAAAAHAnEn/XkYYNG+qnn35STEyMqlev7vAvODhY0sXkW/PmzTVp0iQlJyfLz89PixYtkiT5+fkpMzPTYZtr1qxR5cqV9dRTT6lx48aqUaOG9u7dW2Qxf/fddzle16lTx6Vt3XXXXdq7d69effVVbd26VYMHD85zfxcuXNCGDRus/RXk+AEAAAAAAAAAALgLib/rSGJioo4dO6aEhAStW7dOu3bt0meffaahQ4cqMzNT33//vZ577jmtX79ev/76qxYuXKjDhw9bia+YmBht2bJFO3bs0JEjR5SRkaEaNWro119/1bvvvqtdu3bp1VdftRKFReF///ufZs2apZ9//lkTJkzQ2rVrNWLECJe2VaJECfXs2VNjx45Vhw4dVKFChRx1kpKStGjRIm3fvl2JiYk6fvy4hg0bJin/4wcAAAAAAAAAAOBOJP6uI+XKldM333yjzMxMdejQQXXr1tXDDz+siIgIeXl5KSwsTF999ZW6dOmimjVr6umnn9ZLL72kzp07S5Luvfde1apVS40bN1bp0qX1zTff6Pbbb9cjjzyiESNGqH79+lqzZo2eeeaZIot50qRJevfdd1WvXj3NmzdP77zzjmJjY13e3t13363z589bybxLTZ06VVOnTlVcXJxWr16tjz76SJGRkZLyP34AAAAAAAAAAADuZDPGGHcHUZykp6crPDxcaWlpCgsLc1h29uxZpaSkqEqVKgoICHBThNcPm82mRYsWqXv37kW2zfnz5+uRRx7Rvn375OfnZ5Xv2bNHVapUUXJysurXr19k+3MVYw0AAAAAAAAAAEh5564u5XOVYgLc6vTp09q/f7+mTp2q+++/3yHpBwAAAAAAAAAA4Am4PyGuCy+88IJq166t6OhoPfHEE+4OBwAAAAAAAAAAoMhxq89LcKtPFAeMNQAAAAAAAAAAIBXuVp/M+PtTUlKSYmNjFR8f7+5QAAAAAAAAAAAAgEIj8fenxMREbd26VevWrXN3KAAAAAAAAAAAAEChkfgDAAAAAAAAAAAAPICPuwMAAAAAAAAAAADA9Wv68enuDqHQRpUY5e4QcsWMPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJP1x3WrdurYcfftjdYQAAAAAAAAAAABQpnvFXBKYmH7mq+xvXILLQ6xw4cECTJ0/W4sWL9ccff6hMmTKqX7++Hn74YbVr167IYps4caI++OADbdq0qci2WVB79uxRlSpV8qwze/ZsLVy4UL6+vlcpKgAAAAAAAAAAgKuDxN91YM+ePWrevLkiIiL0j3/8Q3Xr1lVGRoY+++wzJSYmavv27e4OMQdjjDIzM+XjU/AhWrFiRe3fv996/eKLL2rp0qVatmyZVRYeHq7AwMAijRUAAAAAAAAAAKA44Faf14Hhw4fLZrNp7dq16tWrl2rWrKkbbrhBo0eP1nfffWfVmzZtmurWravg4GBVrFhRw4cP18mTJ63lc+bMUUREhD744APVqFFDAQEB6tixo3777Tdr+aRJk7R582bZbDbZbDbNmTNHe/bskc1mc5gFmJqaKpvNppUrV0qSVq5cKZvNpiVLlqhRo0by9/fX6tWrlZWVpSlTpqhKlSoKDAxUXFyc3nvvvVzb6e3trejoaOtfSEiIfHx8HMoCAwNz3OozJiZGzz77rAYNGqSQkBBVrlxZH330kQ4fPqw77rhDISEhqlevntavX++wv9WrV+uWW25RYGCgKlasqJEjR+rUqVOX2VsAAAAAAAAAAACuIfHn4Y4dO6alS5cqMTFRwcHBOZZHRERY//fy8tKrr76qn376SXPnztWXX36pxx57zKH+6dOnNXnyZM2bN0/ffPONUlNT1b9/f0lSv379NGbMGN1www3av3+/9u/fr379+hUq3nHjxmnq1Knatm2b6tWrpylTpmjevHl644039NNPP+mRRx7RXXfdpVWrVhX+YOTh5ZdfVvPmzZWcnKzbbrtNAwcO1KBBg3TXXXdp48aNqlatmgYNGiRjjCRp165d6tSpk3r16qUtW7ZowYIFWr16tUaMGFGkcQEAAAAAAAAAABQUt/r0cL/88ouMMapdu3a+dXObBffAAw/on//8p1WekZGh119/XTfddJMkae7cuapTp47Wrl2rJk2aOMyyc8Xf/vY33XrrrZKkc+fO6bnnntOyZcvUtGlTSVLVqlW1evVq/etf/1KrVq1c2kduunTpovvvv1+SNH78eM2YMUPx8fHq06ePJOnxxx9X06ZNdfDgQUVHR2vKlCkaMGCAdcxq1KihV199Va1atdKMGTMUEBBQZLEBAAAAAAAAAAAUBIk/D2efoVYQy5Yt05QpU7R9+3alp6frwoULOnv2rE6fPq2goCBJko+Pj+Lj4611ateurYiICG3btk1NmjS57HgbN25s/f+XX37R6dOnrUSg3fnz59WgQYPL3ld29erVs/4fFRUlSapbt26OskOHDik6OlqbN2/Wli1b9Pbbb1t1jDHKyspSSkqK6tSpU6TxAQAAAAAAAAAA5IfEn4erUaOGbDabtm/fnme9PXv2qGvXrnrwwQc1efJklSxZUqtXr9bdd9+t8+fPW4k/V3h5XbyjbPYkZEZGRq51s9+O1P58wcWLF6t8+fIO9fz9/V2OJze+vr7W/202m9OyrKwsK7b7779fI0eOzLGtSpUqFWlsAAAAAAAAAAAABUHiz8OVLFlSHTt2VFJSkkaOHJnjOX+pqamKiIjQhg0blJWVpZdeeslK1P3f//1fju1duHBB69evt2b37dixQ6mpqdYMNz8/P2VmZjqsU7p0aUnS/v37rZl6mzZtyjf22NhY+fv769dffy3S23oWhYYNG2rr1q2qXr26u0MBAAAAAAAAAACQJHm5O4DiIikpSbGxsQ63sfQUSUlJyszMVJMmTfT+++9r586d2rZtm1599VXr2XnVq1dXRkaGXnvtNe3evVvz58/XG2+8kWNbvr6+euihh/T9999rw4YNGjJkiG6++WYrERgTE6OUlBRt2rRJR44c0blz5xQYGKibb75ZU6dO1bZt27Rq1So9/fTT+cYdGhqqRx99VI888ojmzp2rXbt2aePGjXrttdc0d+7coj1IhfT4449rzZo1GjFihDZt2qSdO3fqww8/1IgRI9waFwAAAAAAAAAAuH4x4+9PiYmJSkxMVHp6usLDw90dTpGqWrWqNm7cqMmTJ2vMmDHav3+/SpcurUaNGmnGjBmSpLi4OE2bNk3PP/+8nnjiCbVs2VJTpkzRoEGDHLYVFBSkxx9/XHfeeaf++OMP3XLLLZo5c6a1vFevXlq4cKHatGmj1NRUzZ49W0OGDNGsWbN09913q1GjRqpVq5ZeeOEFdejQId/Y//73v6t06dKaMmWKdu/erYiICDVs2FBPPvlk0R6kQqpXr55WrVqlp556SrfccouMMapWrZr69evn1rgAAAAAAAAAAJiafMTdIRRKYIy7I/AcNpP9wWuwEn9paWkKCwtzWHb27FmlpKSoSpUqCggIcFOE7jNnzhw9/PDDSk1NdXcoHu96H2sAAAAAAAAAANdde4m/t90dQqGNKjHqqu0rr9zVpbjVJwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwpsyJAh3OYTAAAAAAAAAACgmCLxBwAAAAAAAAAAAHgAEn8AAAAAAAAAAACAByDxBwAAAAAAAAAAAHgAEn8AAAAAAAAAAACAByDxBwAAAAAAAAAAAHgAEn8AAAAAAAAAAACAByDxh2Jrzpw5ioiIcHcYat26tR5++GF3hwEAAAAAAAAAAJAnH3cH4AmmH59+Vfc3qsSoQtUfMmSI5s6dK0ny8fFRyZIlVa9ePSUkJGjIkCHy8ip4/nfixIn64IMPtGnTpkLFkJ+YmBg9/PDDDgm2fv36qUuXLkW6n+z27NmjKlWq5Fln9uzZWrhwoXx9fa9YHAAAAAAAAAAAAEWBxN91olOnTpo9e7YyMzN18OBBLV26VKNGjdJ7772njz76SD4+xW8oBAYGKjAw8Iptv2LFitq/f7/1+sUXX9TSpUu1bNkyqyw8PPyKxgAAAAAAAAAAAFBUuNXndcLf31/R0dEqX768GjZsqCeffFIffvihlixZojlz5lj1UlNTdc8996h06dIKCwtT27ZttXnzZkkXb705adIkbd68WTabTTabzVo3r/XsPv74Y8XHxysgIECRkZHq0aOHpIu30ty7d68eeeQRa7v2/V16q88ZM2aoWrVq8vPzU61atTR//nyH5TabTf/5z3/Uo0cPBQUFqUaNGvroo49yPSbe3t6Kjo62/oWEhMjHx8ehLDAwMMetPmNiYvTss89q0KBBCgkJUeXKlfXRRx/p8OHDuuOOOxQSEqJ69epp/fr1DvtbvXq1brnlFgUGBqpixYoaOXKkTp06VaD+AwAAAAAAAAAAyA+Jv+tY27ZtFRcXp4ULF1plffr00aFDh7RkyRJt2LBBDRs2VLt27XTs2DH169dPY8aM0Q033KD9+/dr//796tevX77rSdLixYvVo0cPdenSRcnJyVq+fLmaNGkiSVq4cKEqVKigv/3tb9Z2c7No0SKNGjVKY8aM0Y8//qj7779fQ4cO1YoVKxzqTZo0SX379tWWLVvUpUsXDRgwwIqjqLz88stq3ry5kpOTddttt2ngwIEaNGiQ7rrrLm3cuFHVqlXToEGDZIyRJO3atUudOnVSr169tGXLFi1YsECrV6/WiBEjijQuAAAAAAAAAABw/SLxd52rXbu29uzZI+nijLS1a9fqf//7nxo3bqwaNWroxRdfVEREhN577z0FBgbmmBUXGBiY73qSNHnyZPXv31+TJk1SnTp1FBcXpyeeeEKSVLJkSXl7eys0NNTabm5efPFFDRkyRMOHD1fNmjU1evRo9ezZUy+++KJDvSFDhighIUHVq1fXc889p5MnT2rt2rVFety6dOmi+++/XzVq1ND48eOVnp6u+Ph49enTRzVr1tTjjz+ubdu26eDBg5KkKVOmaMCAAXr44YdVo0YNNWvWTK+++qrmzZuns2fPFmlsAAAAAAAAAADg+kTi7zpnjLFurbl582adPHlSpUqVUkhIiPUvJSVFu3btcrqNgqy3adMmtWvX7rJi3bZtm5o3b+5Q1rx5c23bts2hrF69etb/g4ODFRYWpkOHDl3Wvi+VfR9RUVGSpLp16+Yos+938+bNmjNnjsPx6dixo7KyspSSklKksQEAAAAAAAAAgOuTj7sDgHtt27ZNVapUkSSdPHlSZcuW1cqVK3PUu/RZe9kVZL3AwMAiiLZgfH19HV7bbDZlZWVdsX3YE6e5ldn3e/LkSd1///0aOXJkjm1VqlSpSGMDAAAAAAAAAADXJxJ/17Evv/xSP/zwgx555BFJUsOGDXXgwAH5+PgoJiYm13X8/PyUmZnpUFaQ9erVq6fly5dr6NChBd7uperUqaNvvvlGgwcPtsq++eYbxcbG5rlecdCwYUNt3bpV1atXd3coAAAAAAAAAADAQ3Grzz8lJSUpNjZW8fHx7g7lijh37pwOHDigP/74Qxs3btRzzz2nO+64Q127dtWgQYMkSe3bt1fTpk3VvXt3ff7559qzZ4/WrFmjp556SuvXr5ckxcTEKCUlRZs2bdKRI0d07ty5Aq03YcIEvfPOO5owYYK2bdumH374Qc8//7wVX0xMjL766iv98ccfOnLkSK5tGDt2rObMmaMZM2Zo586dmjZtmhYuXKhHH330Ch+9y/f4449rzZo1GjFihDZt2qSdO3fqww8/1IgRI9wdGgAAAAAAAAAA8BAk/v6UmJiorVu3at26de4O5YpYunSpypYtq5iYGHXq1EkrVqzQq6++qg8//FDe3t6SLt6e8tNPP1XLli01dOhQ1axZU/3799fevXutZ9b16tVLnTp1Ups2bVS6dGm98847BVqvdevW+t///qePPvpI9evXV9u2bbV27Vorvr/97W/as2ePqlWrptKlS+fahu7du2v69Ol68cUXdcMNN+hf//qXZs+erdatW1/Zg1cE6tWrp1WrVunnn3/WLbfcogYNGmj8+PEqV66cu0MDAAAAAAAAAAAewmaMMe4OojhJT09XeHi40tLSFBYW5rDs7NmzSklJUZUqVRQQEOCmCHE9YKwBAAAAAAAAAFw1NTn3O+sVV4Exb7s7hEIbVWLUVdtXXrmrSzHjDwAAAAAAAAAAAPAAJP4AAAAAAAAAAAAAD0DiDwAAAAAAAAAAAPAAJP4AAAAAAAAAAAAAD0DizwXGGHeHAA/HGAMAAAAAAAAAAIVF4q8QvL29JUnnz593cyTwdPYxZh9zAAAAAAAAAAAA+fFxdwDXEh8fHwUFBenw4cPy9fWVlxd5UxS9rKwsHT58WEFBQfLx4RQFAAAAAAAAAAAFQ1ahEGw2m8qWLauUlBTt3bvX3eHAg3l5ealSpUqy2WzuDgUAAAAAAAAAAFwjSPwVkp+fn2rUqMHtPnFF+fn5MaMUAAAAAAAAAAAUCok/F3h5eSkgIMDdYQAAAAAAAAAAAAAWphQBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHoDEHwAAAAAAAAAAAOABSPwBAAAAAAAAAAAAHsDH3QFcCTExMQoLC5OXl5dKlCihFStWuDskAAAAAAAAAAAA4IryyMSfJK1Zs0YhISHuDgMAAAAAAAAAAAC4KrjVJwAAAAAAAAAAAOABil3i76uvvlK3bt1Urlw52Ww2ffDBBznqJCUlKSYmRgEBAbrpppu0du1ah+U2m02tWrVSfHy83n777asUOQAAAAAAAAAAAOA+xS7xd+rUKcXFxSkpKSnX5QsWLNDo0aM1YcIEbdy4UXFxcerYsaMOHTpk1Vm9erU2bNigjz76SM8995y2bNlytcIHAAAAAAAAAAAA3KLYPeOvc+fO6ty5s9Pl06ZN07333quhQ4dKkt544w0tXrxYs2bN0rhx4yRJ5cuXlySVLVtWXbp00caNG1WvXr1ct3fu3DmdO3fOep2eni5JunDhgi5cuCBJ8vLykpeXl7KyspSVlWXVtZdnZmbKGJNvube3t2w2m7Xd7OWSlJmZWaByHx8fGWMcym02m7y9vXPE6KycNtEm2kSbaBNtok20iTbRJtpEm2gTbaJNtIk20SbaRJtoE22iTZ7ZJpksyeYlmSzZssVobDbJ5iWbyZIcyr0km815eZZjjMZ2cV6ZzWQVrNzLWzLGsdxmu1jfGNkybdnKJeNlpCzJZv4qNzZzcTqbk3Jblk36K/SL27DlUZ59n/Zy/Vm/AOWSrtrYu3RM5aXYJf7ycv78eW3YsEFPPPGEVebl5aX27dvr22+/lXRxxmBWVpZCQ0N18uRJffnll+rbt6/TbU6ZMkWTJk3KUZ6cnKzg4GBJUunSpVWtWjWlpKTo8OHDVp0KFSqoQoUK+vnnn5WWlmaVV61aVWXKlNGPP/6oM2fOWOW1a9dWRESEkpOTHQZCvXr15Ofnp/Xr1zvE0LhxY50/f95hxqK3t7fi4+OVlpam7du3W+WBgYGKi4vTkSNHtHv3bqs8PDxcderU0b59+/T7779b5bSJNtEm2kSbaBNtok20iTbRJtpEm2gTbaJNtIk20SbaRJtoE23yzDaVOB+k46HlVOLkAQWfSbXK04NLKz24tEql/aaA86es8uOhZXUqsISijqfI58Jfk6WORFTSWb8QlTu2U7ZsiakDJasp08tH5Y/scGjTH5G15J11QdHHdlllxstLf0TWVkDGKUWm/mqVX/Dx14GS1RR8NlWR20pb5edDzis1JlXBR4IVfCjYKj9T4oxOlD+h0P2hCjweaJWfKnNKp8qcUviv4fI76fdXW8ul62zJsyqxq4R8zv2VDkutnKrzoecVuSPSIZl3tPpRZflmqXS2WCTpcJ3D8srwUqlfSmVrk5EiddXG3qlTf/VVfmwmezq6mLHZbFq0aJG6d+8uSdq3b5/Kly+vNWvWqGnTpla9xx57TKtWrdL333+v3bt3q0ePHpIuZsnvvfdejRo1yuk+cpvxV7FiRR09elRhYWGSPDPbT5toE22iTbSJNtEm2kSbaBNtok20iTbRJtpEm2gTbaJNtIk20SbPbNOLW45dUzP+giq9k6382pjxNzJy5FUbe+np6SpVqpTS0tKs3JUzHpf4u1zp6ekKDw8v0MEDAAAAAAAAAAAobqYmH3F3CIUSGPO2u0MotFElnE86K2qFyV15XaWYikRkZKS8vb118OBBh/KDBw8qOjraTVEBAAAAAAAAAAAA7ndNJf78/PzUqFEjLV++3CrLysrS8uXLHWYAAgAAAAAAAAAAANcbn/yrXF0nT57UL7/8Yr1OSUnRpk2bVLJkSVWqVEmjR4/W4MGD1bhxYzVp0kSvvPKKTp06paFDh7oxagAAAAAAAAAAAMC9il3ib/369WrTpo31evTo0ZKkwYMHa86cOerXr58OHz6s8ePH68CBA6pfv76WLl2qqKioy9pvUlKSkpKScjxEEwAAAAAAAAAAALgW2Iwxxt1BFCeFeUAiAAAAAAAAAABAcTM1+Yi7QyiUwJi33R1CoY0qMeqq7aswuatr6hl/AAAAAAAAAAAAAHJH4g8AAAAAAAAAAADwACT+AAAAAAAAAAAAAA9A4g8AAAAAAAAAAADwACT+/pSUlKTY2FjFx8e7OxQAAAAAAAAAAACg0Ej8/SkxMVFbt27VunXr3B0KAAAAAAAAAAAAUGgk/gAAAAAAAAAAAAAPQOIPAAAAAAAAAAAA8AAk/gAAAAAAAAAAAAAPQOIPAAAAAAAAAAAA8AAk/gAAAAAAAAAAAAAPQOLvT0lJSYqNjVV8fLy7QwEAAAAAAAAAAAAKjcTfnxITE7V161atW7fO3aEAAAAAAAAAAAAAhUbiDwAAAAAAAAAAAPAAJP4AAAAAAAAAAAAAD0DiDwAAAAAAAAAAAPAAJP4AAAAAAAAAAAAAD0DiDwAAAAAAAAAAAPAAJP4AAAAAAAAAAAAAD0Di709JSUmKjY1VfHy8u0MBAAAAAAAAAAAACo3E358SExO1detWrVu3zt2hAAAAAAAAAAAAAIVG4g8AAAAAAAAAAADwACT+AAAAAAAAAAAAAA9A4g8AAAAAAAAAAADwACT+AAAAAAAAAAAAAA9A4g8AAAAAAAAAAADwACT+AAAAAAAAAAAAAA9A4g8AAAAAAAAAAADwACT+AAAAAAAAAAAAAA9A4u9PSUlJio2NVXx8vLtDAQAAAAAAAAAAAAqNxN+fEhMTtXXrVq1bt87doQAAAAAAAAAAAACFRuIPAAAAAAAAAAAA8AA+7g4AAAAAAAAAAHIzNfmIu0MotHENIt0dAgDgOsaMPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJvz8lJSUpNjZW8fHx7g4FAAAAAAAAAAAAKDQSf39KTEzU1q1btW7dOneHAgAAAAAAAAAAABQaiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4AwAAAAAAAAAAADwAiT8AAAAAAAAAAADAA5D4+1NSUpJiY2MVHx/v7lAAAAAAAAAAAACAQvNxdwDFRWJiohITE5Wenq7w8HB3hwMAAAAAAADgGjT9+HR3h1Aoo0qMcncIAIAiROIPAAAAAAAAAAA4mJp8xN0hFMq4BpHuDgEoFkj8AQAAAAAAwGNda19cS3x5DQAAXEfiDwAAAAAAAABQ5Ei8A8DV5+XuAAAAAAAAAAAAAABcPhJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAcg8QcAAAAAAAAAAAB4ABJ/AAAAAAAAAAAAgAfwcXcAAAAAAAAAAAAUB9OPT3d3CIUyqsQod4cAoJhhxh8AAAAAAAAAAADgAZjx96ekpCQlJSUpMzPT3aEAAAAAADzM1OQj7g6h0MY1iHR3CAAAAAAKiRl/f0pMTNTWrVu1bt06d4cCAAAAAAAAAAAAFBqJPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPACJPwAAAAAAAAAAAMADkPgDAAAAAAAAAAAAPICPqytu3bpVW7du1ZEjR2Sz2RQZGak6deooNja2KOMDAAAAAAAAAAAAUACFSvytXLlSc+bM0ccff6zU1FQZYxyW22w2hYeHq1u3bho6dKhat25dlLECAAAAAAAAAADkMP34dHeHUGijSoxydwjwQAVK/C1dulTPPPOMNmzYoBtvvFFDhgxRo0aNVLVqVZUoUULGGB0/flwpKSnasGGDvvjiC82fP18NGzbU5MmT1bFjxyvdDgAAAAAAAAAAAOC6VqDEX+/evXXPPfdo/vz5ql27ttN6TZs21Z133ilJ2r59u9544w316dNH6enpRRMtAAAAAAAAAAAAgFwVKPH366+/qmTJkoXacO3atfXKK69o/PjxLgUGAAAAAAAAAAAAoOC8ClKpsEm/oloXAAAAAAAAAAAAQMEUaMafM3/88Ye++uorHTp0SL169VKFChWUmZmptLQ0hYeHy9vbu6jiBAAAAAAAAAAAAJCHAs34u5QxRqNHj1aVKlU0YMAAjR49Wj///LMk6eTJk4qJidFrr71WpIECAAAAAAAAAAAAcM6lxN8//vEPTZ8+XY8++qi++OILGWOsZeHh4erZs6fef//9IgsSAAAAAAAAAAAAQN5cSvy9+eabGjRokJ577jnVr18/x/J69epZMwABAAAAAAAAAAAAXHkuJf5+++03NWvWzOny4OBgpaenuxwUAAAAAAAAAAAAgMJxKfFXpkwZ/fbbb06Xb9iwQZUqVXI5KAAAAAAAAAAAAACF41Lir2fPnnrjjTe0e/duq8xms0mSPv/8c82ZM0d9+vQpmggBAAAAAAAAAAAA5MulxN+kSZNUtmxZ1a9fX4MGDZLNZtPzzz+vFi1aqHPnzqpXr56efPLJoo4VAAAAAAAAAAAAgBMuJf7Cw8P13Xff6bHHHtMff/yhgIAArVq1SqmpqZowYYK+/vprBQUFFXWsAAAAAAAAAAAAAJzwcXXFwMBAPf3003r66aeLMh4AAAAAAAAAAAAALnBpxh8AAAAAAAAAAACA4qVAM/6GDRtW6A3bbDbNnDmz0OsBAAAAAAAAAAAAKLwCJf6+/PJL2Wy2Qm24sPUBAAAAAAAASNOPT3d3CIU2qsQod4cAAABUwMTfnj17rnAYAAAAAAAAAAAAAC4Hz/gDAAAAAAAAAAAAPECBZvwBAAAA8AxTk4+4O4RCGdcg0t0hAAAAAABwzXB5xt+SJUt06623qlSpUvLx8ZG3t3eOfwAAAAAAAAAAAACuDpcSf++//766du2qgwcPqn///srKylJCQoL69++vwMBA1atXT+PHjy/qWAEAAAAAAAAAAAA44dKtPqdMmaImTZpo9erVOn78uGbMmKFhw4apbdu22rNnj26++WZVqVKlqGMtlNOnT6tOnTrq06ePXnzxRbfGAgAAAAAArl3X2m2SJW6VDAAAcL1yacbf1q1b1b9/f3l7e8vH52LuMCMjQ5IUExOj4cOH6/nnny+6KF0wefJk3XzzzW6NAQAAAAAAAAAAALhaXEr8BQUFyc/PT5IUEREhf39/7d+/31oeFRWllJSUoonQBTt37tT27dvVuXNnt8UAAAAAAAAAAAAAXE0uJf5q1aqlrVu3Wq/r16+v+fPn68KFCzp79qz++9//qlKlSi4F9NVXX6lbt24qV66cbDabPvjggxx1kpKSFBMTo4CAAN10001au3atw/JHH31UU6ZMcWn/AAAAAAAAAAAAwLXIpcRfjx499OGHH+rcuXOSpKeeekorV65URESESpcura+//lrjxo1zKaBTp04pLi5OSUlJuS5fsGCBRo8erQkTJmjjxo2Ki4tTx44ddejQIUnShx9+qJo1a6pmzZou7R8AAAAAAAAAAAC4Fvm4stKjjz6qRx991HrdtWtXrVy5UgsXLpS3t7duu+02tWnTxqWAOnfunOctOqdNm6Z7771XQ4cOlSS98cYbWrx4sWbNmqVx48bpu+++07vvvqv//e9/OnnypDIyMhQWFqbx48fnur1z585ZCUxJSk9PlyRduHBBFy5ckCR5eXnJy8tLWVlZysrKsurayzMzM2WMybfc29tbNpvN2m72cknKzMwsULmPj4+MMQ7lNptN3t7eOWJ0Vk6baBNtok20iTbRJtpEm67PNslkSTYv2UyWlC12Y/OSbDbn5VmOMRrbxd8Q2kxWwcq9vCVjHMtttov1nZZnORzL66mfaJPntcmWlen288nmcG7bpDzKbU7OP0/vJ2dtsvpPxa+fnF3Ls8d/vfSTs9jz7D8395Oz91xbpi1bjPbryF9leZZ7G8lcUm77s76z8izJZrLt02YuThdwUm7Lskl/hW7FciWuEbaszGLbT9llH2MF6j939ZMtl3Jjrtw1wmQV235yVu7Qf8Wpn+zlmZeMJfPX+ZddkVzLrf4rfv3kUG6/RmQW435ydi1w0n9F8Z5r/9uv2PWTs2t5bv1XXPrJSbmkq/bZ6NJrdF5cSvzl5pZbbtEtt9xSVJvL1fnz57VhwwY98cQTVpmXl5fat2+vb7/9VpI0ZcoU6zafc+bM0Y8//ug06WevP2nSpBzlycnJCg4OliSVLl1a1apVU0pKig4fPmzVqVChgipUqKCff/5ZaWlpVnnVqlVVpkwZ/fjjjzpz5oxVXrt2bUVERCg5OdlhINSrV09+fn5av369QwyNGzfW+fPntWXLFqvM29tb8fHxSktL0/bt263ywMBAxcXF6ciRI9q9e7dVHh4erjp16mjfvn36/fffrXLaRJtoE22iTbSJNtEm2nR9tinsQrjSg0urVNpvCjh/yio/HlpWpwJLKOp4inwu/PXDuCMRlXTWL0Tlju2ULdsfIQdKVlOml4/KH9nh0KY/ImvJO+uCoo/tssqMl5f+iKytgIxTikz91Sq/4OOvAyWrKfhsqkqc+OuZ4Wf9gnUkorLCTh/V+vV/tfV66ifa5HltKp923u3nU9ipv2I/FRih46HlVOLkAQWfSbXK04NLW9eI7Off9dJPztpUPu18se0nZ9fy7P13vfSTszaVTztfbPvJ2Xuuz+nSVvnR6keV5Zul0tv+KpOkw3UOyyvDS6V+KZWtTUaHYw/L76SfIvZG/NUm/ws6VuOYAo4HKGxfmFV+PuS8UmNSFXwkWMGHgq3yMyXO6ET5EwrdH6rA44F/tbXMKZ0qc0rhv4bL76TfX20tly6V1BW5RpQ7caHY9pOza7l3tv4rbv10tuRZldhVQj7n/vpaOK1u2hW7RkSdshXbfsou+zXC3n/FrZ9SK6fqfOh5Re6IdEg+nGl05opdy0ud8S22/WSX/Vqe/TpZ3PrJ2bU8s2nmFXvPLXE+qFj2k7NreWS2Y1Pc+snZtVyRumqfjU6d+quv8mMz2X+GU0ApKSn68ccf1a1bt1yXf/zxx6pbt65iYmIKu2nH4Gw2LVq0SN27d5ck7du3T+XLl9eaNWvUtGlTq95jjz2mVatW6fvvv3dY3574e/HFF53uI7cZfxUrVtTRo0cVFnbxgsAvVmkTbaJNtIk20SbaRJtok6e06cUtx4rnrzud/AL80Xol822TJ/YTbfK8Nr20+ajbz6fC/lJ/TC7nn6f3k7M2Wf2n4tdPzq7l2fvveuknZ7Hn2X/FdCZZYOUF2WK8Nmb8jSo56opcI17afLTY9lN22cdYgfqvGM0ke6jUQ1fsGvHSlmPFtp+clTv0XzHqJ2czlB4q9ZCkK3Mt/6v/il8/OZT/eY0IqvTOX4XFrJ+cXQuc9V9RvOfa//Yrbv3k7Fqea/8Vk35yVj4ycuRV+2yUnp6uUqVKKS0tzcpdOePyrT7T09OdJv6SkpIUERGhd99915XNF5khQ4bkW8ff31/+/v45yn18fOTj43h47Af6UvaLaEHLL92uK+U2my3XcmcxFracNtEmZ+W0iTZJtMlZjIUtp020SaJNzmIsbDltKkT5n3+EXfzjLWcsTsu9cm+rsRWi3GYrZLlXoY6BR/XTn2iT57Qp+znkrvPJ5HJuOys3Ts4/T+8nZzE69F8x6ydn1/LcjqWn95Oz8nz7z4395Ow913jn/J1+bmVOy22FLPeSjApebv8C9FJX4hph9V8x7KfcGFsh+s9N/XRpuc12sYFX4hphTwAUx35yVp7j2BeTfrLKvS+//wp6Lf+r/4pfP+WMxVas+8lZeV79d9nvufn0X7H7m7AY91Ne5Vfrs5Gzczw3LiX+vv32Wz388MNOl7dr106vvPKKK5vOU2RkpLy9vXXw4EGH8oMHDyo6OrrI9wcAAAAAwPVq+vHp7g6h0EaVGOXuEAAAAAC3ypk+LIDjx48rNDTU6fKQkBAdPXrU5aCc8fPzU6NGjbR8+XKrLCsrS8uXL3e49ScAAAAAAAAAAABwvXEp8VepUiV98803Tpd//fXXqlChgksBnTx5Ups2bdKmTZskXXye4KZNm/Trr79KkkaPHq0333xTc+fO1bZt2/Tggw/q1KlTGjp0qEv7AwAAAAAAAAAAADyBS7f6TEhI0N///nc1adJEI0aMsO47mpmZqddff10LFizQU0895VJA69evV5s2bazXo0ePliQNHjxYc+bMUb9+/XT48GGNHz9eBw4cUP369bV06VJFRUW5tD+7pKQkJSUl5XiIJgAAAAAAAAAAAHAtcCnx98QTT2j16tV6+OGHNXnyZNWqVUuStGPHDh0+fFitW7d2OfHXunVrGZP7gxPtRowYoREjRri0fWcSExOVmJio9PR0hYeHF+m2AQAAAAAAAAAAgCvNpVt9+vv76/PPP9fMmTPVpEkTHTlyREeOHFGTJk00a9YsLVu2TP7+/kUdKwAAAAAAAAAAAAAnXJrxJ0leXl4aOnQoz9YDAAAAAAAAAAAAigGXE3/ZnT9/Xt9//73279+vWrVqKS4urig2CwAAAAAAAAAAAKCACnyrz88++0zDhg3TkSNHHMq3b9+uG2+8Ua1bt1ZCQoIaNmyo3r1768KFC0UeLAAAAAAAAAAAAIDcFTjxN2vWLG3evFmRkZEO5QMGDNAvv/yiQYMG6dVXX1WnTp20aNEivfbaa0Ue7JWUlJSk2NhYxcfHuzsUAAAAAAAAAAAAoNAKnPhbv3692rdv71CWnJys5ORkDRgwQLNnz1ZiYqIWL16sFi1a6O233y7yYK+kxMREbd26VevWrXN3KAAAAAAAAAAAAEChFTjxd+DAAVWvXt2hbOnSpbLZbBoyZIhDeffu3bVjx44iCRAAAAAAAAAAAABA/gqc+AsJCdHp06cdylavXi0vLy/ddNNNDuURERHKzMwsmggBAAAAAAAAAAAA5KvAib86deroww8/tF4fP35cX331lZo1a6aQkBCHur/99puio6OLLkoAAAAAAAAAAAAAefIpaMUxY8bojjvuUOfOndWsWTN9/PHHOn36tIYPH56j7tKlS9WgQYMiDRQAAAAAAAAAAACAcwWe8detWze98MIL+vbbbzVhwgT99NNPeuaZZ9SvXz+Het99952+++473XbbbUUeLAAAAAAAAAAAAIDcFXjGnyQ9+uijeuSRR3TkyBGVKVNGNpstR524uDgdPnxYERERRRXjVZGUlKSkpCSeTQgAAAAAAAAAAIBrUoFn/Nl5e3srKioq16SfJAUGBqpUqVLy9va+7OCupsTERG3dulXr1q1zdygAAAAAAAAAAABAoRU68QcAAAAAAAAAAACg+CHxBwAAAAAAAAAAAHgAEn8AAAAAAAAAAACAByDxBwAAAAAAAAAAAHgAEn8AAAAAAAAAAACAByDxBwAAAAAAAAAAAHgAlxJ/Xl5e8vb2zvNfcHCwatWqpQceeEC7du0q6riLXFJSkmJjYxUfH+/uUAAAAAAAAAAAAIBC83FlpfHjx+vDDz/UTz/9pM6dO6t69eqSpJ07d2rp0qWqW7eu2rZtq19++UWzZ8/WO++8o6+++kpxcXFFGnxRSkxMVGJiotLT0xUeHu7ucAAA8GhTk4+4O4RCG9cg0t0hAAAAAAAAAHlyKfFXrlw5HTlyRNu3b1fVqlUdlv3yyy9q3bq1YmNj9Y9//EM7d+5U06ZN9eSTT2rx4sVFEjQAAAAAAAAAAAAARy7d6vMf//iHEhMTcyT9JKl69epKTEzUlClTJEk1atTQAw88oDVr1lxepAAAAAAAAAAAAACccinx9/vvv8vHx/lkQR8fH/3222/W65iYGJ07d86VXQEAAAAAAAAAAAAoAJcSfzfccINmzJihgwcP5lh24MABzZgxQzfccINVtnv3bkVHR7seJQAAAAAAAAAAAIA8ufSMvxdffFGdO3dW9erV1b17d1WvXl3Sxef7ffDBB8rIyNCsWbMkSWfPntWcOXPUuXPnoosaAAAAAAAAAAAAgAOXEn+tW7fWmjVrNGHCBC1cuFBnzpyRJAUEBKh9+/aaOHGiGjZsaJXt27ev6CIGAAAAAAAAAAAAkINLiT9JatCggT766CNlZWXp0KFDkqQyZcrIy8ulu4cCAAAAAAAAAAAAuAwuJ/7svLy8FB4ebv0fAAAAAAAAAAAAwNXncqbu119/1dChQxUVFaWQkBCFhIQoKipKw4YN0969e4syxqsiKSlJsbGxio+Pd3coAAAAAAAAAAAAQKG5NONv+/btatGihVJTU3XrrbeqTp06Vvm8efP08ccfa/Xq1apVq1aRBnslJSYmKjExUenp6dYMRgAAAAAAAAAAAOBa4VLib9y4cfLy8lJycrLq1q3rsOzHH39Uu3btNG7cOC1atKhIggQAAABwfZp+fLq7Qyi0USVGuTsEAAAAAMB1yqVbfa5atUojR47MkfSTpBtvvFEjRozQypUrLzc2AAAAAAAAAAAAAAXk0oy/jIwMBQYGOl0eFBSkjIwMl4MCAAAAAACA65gxDQAAcH1yacZfgwYN9J///EdpaWk5lqWnp2vmzJlq2LDhZQcHAAAAAAAAAAAAoGBcmvE3adIkderUSbVr19bQoUNVs2ZNSdKOHTs0d+5cHT16VElJSUUaKAAAAAAAAAAAAADnXEr8tW3bVp9++qnGjh2rqVOnOiyrX7++5s+frzZt2hRJgAAAAAAAAAAAAADy51LiT5Lat2+v5ORkHThwQHv37pUkVa5cWdHR0UUWHAAAAAAAAAAAAICCcTnxZxcdHZ0j2TdlyhRNnDhR586du9zNAwAAoJiZmnzE3SEU2rgGke4OAQAAAAAA4IrzuhIbzcrK0oULF67EpgEAAAAAAAAAAADk4ook/q5FSUlJio2NVXx8vLtDAQAAAAAAAAAAAAqNxN+fEhMTtXXrVq1bt87doQAAAAAAAAAAAACFRuIPAAAAAAAAAAAA8AA+Ba147NixAm/09OnTLgUDAAAAAAAAAAAAwDUFTvxFRkbKZrMVqK4xpsB1AQAAAAAAAAAAAFy+Aif+xo8fTzIPAAAAAAAAAAAAKKYKnPibOHHiFQwDAAAAAAAAAAAAwOXwcncAAAAAAAAAAAAAAC5fgRJ/77zzjowxhd64MUbvvPNOodcDAAAAAAAAAAAAUDgFutXnww8/rPHjx+vee+9Vnz59VKVKlTzr//LLL/q///s/zZw5U6dOnVJCQkKRBAsAAAAA17OpyUfcHUKhjGsQ6e4QAAAAAOC6UqDE3+7du/XKK6/opZde0hNPPKGYmBg1bNhQVapUUYkSJWSM0fHjx5WSkqL169frt99+U6lSpTRy5Eg98sgjV7oNAAAAAAAAAAAAwHWvQIm/4OBgPfXUU3r88cf18ccf68MPP9SaNWu0cOFC6xagNptN1apVU6tWrXTHHXeoW7du8vX1vaLBAwAAAAAAAAAAALioQIk/q7KPj3r06KEePXpIkjIzM3Xs2DFJUsmSJeXt7V30EQIAAAAAAAAAAADIV6ESf5fy9vZW6dKliyoWAAAAAAAAAAAAAC7ycncAAAAAAAAAAAAAAC4fiT8AAAAAAAAAAADAA1zWrT49SVJSkpKSkpSZmenuUAAAAADAI0w/Pt3dIRTaqBKj3B0CAAAAALiMGX9/SkxM1NatW7Vu3Tp3hwIAAAAAAAAAAAAUGjP+AAAACuBam7XCjBUAAAAAAIDrT5El/owxWrFihc6dO6cWLVooNDS0qDYNAAAAAAAAAAAAIB8u3erzqaeeUps2bazXxhh16NBBt956q2677TbVrVtXu3btKrIgAQAAAAAAAAAAAOTNpcTf+++/ryZNmliv33vvPS1fvlzPPvusPvnkE2VmZmrixIlFFSMAAAAAAAAAAACAfLh0q88//vhD1atXt14vXLhQsbGxeuKJJyRJDz74oGbMmFE0EQIAAAAAAAAAAADIl0sz/nx8fHTu3DlJF2/zuXz5cnXq1MlaHhUVpSNHjhRNhAAAAAAAAAAAAADy5VLi78Ybb9Rbb72l48ePa/bs2Tp69Khuu+02a/nevXsVGRlZZEECAAAAAAAAAAAAyJtLt/ocP368unXrZiX3mjdvrjZt2ljLFy9erPj4+KKJEAAAAAAAAAAAAEC+XEr83Xrrrdq4caO++OILRUREqF+/ftay48ePq2XLlrr99tuLLEgAAAAAAAAAAAAAeXMp8SdJsbGxio2NzVFeokQJvfzyy5cVFAAAAAAAAAAAAIDCcTnxZ3fy5EkdP35cxpgcyypVqnS5mwcAAAAAAAAAAABQAC4l/s6ePatJkyZp5syZOnr0qNN6mZmZLgcGAAAAAAAAAAAAoOBcSvwNHz5cc+fOVffu3XXLLbeoRIkSRR0XAAAAAAAAAAAAgEJwKfG3cOFC3XPPPfrXv/5V1PEAAAAAAAAAAAAAcIGXKyvZbDY1bNiwqGMBAAAAAAAAAAAA4CKXEn933HGHli1bVtSxAAAAAAAAAAAAAHCRS4m/Z555Rrt379Z9992nDRs26PDhwzp27FiOfwAAAAAAAAAAAACuDpee8VejRg1JUnJysmbOnOm0XmZmpmtRAQAAAAAAAAAAACgUlxJ/48ePl81mK+pYAAAAAAAAAAAAALjIpcTfxIkTizgM90tKSlJSUhKzFAEAAAAAAAAAAHBNcukZf5c6c+aMzpw5UxSbcpvExERt3bpV69atc3coAAAAAAAAAAAAQKG5nPj79ddfNXToUEVFRSkkJEQhISGKiorSsGHDtHfv3qKMEQAAAAAAAAAAAEA+XLrV5/bt29WiRQulpqbq1ltvVZ06dazyefPm6eOPP9bq1atVq1atIg0WAAAAAAAAAAAAQO5cSvyNGzdOXl5eSk5OVt26dR2W/fjjj2rXrp3GjRunRYsWFUmQAAAAAAAAAAAAAPLm0q0+V61apZEjR+ZI+knSjTfeqBEjRmjlypWXGxsAAAAAAAAAAACAAnIp8ZeRkaHAwECny4OCgpSRkeFyUAAAAAAAAAAAAAAKx6XEX4MGDfSf//xHaWlpOZalp6dr5syZatiw4WUHBwAAAAAAAAAAAKBgXHrG36RJk9SpUyfVrl1bQ4cOVc2aNSVJO3bs0Ny5c3X06FElJSUVaaAAAACAq6Yfn+7uEAplVIlR7g4BAAAAAABcg1xK/LVt21affvqpxo4dq6lTpzosq1+/vubPn682bdoUSYAAAAAAAAAAAAAA8udS4k+S2rdvr+TkZB04cEB79+6VJFWuXFnR0dFFFhwAAAAAAAAAAACAgnE58WcXHR1Nsg8AAAAAAAAAAABwswIl/ubNmydJGjhwoGw2m/U6P4MGDXI9MgAAAAAAAAAAAAAFVqDE35AhQ2Sz2dS/f3/5+flpyJAh+a5js9lI/AEAAAAAAAAAAABXSYESfykpKZIkPz8/h9cAAAAAAAAAAAAAiocCJf4qV66c52sAAAAAAAAAAAAA7uXlykpVq1bVRx995HT5J598oqpVq7ocFAAAAAAAAAAAAIDCcSnxt2fPHp08edLp8pMnT2rv3r0uBwUAAAAAAAAAAACgcFxK/EmSzWZzumzdunWKiIhwddMAAAAAAAAAAAAACqlAz/iTpOnTp2v69OmSLib9Hn74YT311FM56qWlpSk1NVV33nln0UUJAAAAAAAAAAAAIE8FTvyVKVNGN9xwg6SLt/osX768ypcv71DHZrMpODhYjRo10vDhw4s2UgAAAAAAAAAAAABOFTjxl5CQoISEBElSmzZt9PTTT6tdu3ZXLDAAAAAAAAAAAAAABVfgxF92K1asKOo4AAAAAAAAAAAAAFwGlxJ/dhkZGdq+fbvS0tKUlZWVY3nLli0vZ/MAAAAAAAAAAAAACsilxF9WVpaeeOIJ/fOf/9Tp06ed1svMzHQ5MAAAAAAAAAAAAAAF5+XKSs8995z+8Y9/6K677tK8efNkjNHUqVP1xhtvqF69eoqLi9Nnn31W1LECAAAAAAAAAAAAcMKlxN+cOXPUt29fzZgxQ506dZIkNWrUSPfee6++//572Ww2ffnll0UaKAAAAAAAAAAAAADnXEr8/f7772rbtq0kyd/fX5J09uxZSZKfn5/uuusuzZ8/v4hCBAAAAAAAAAAAAJAflxJ/pUqV0smTJyVJISEhCgsL0+7dux3qHD9+/PKjAwAAAAAAAAAAAFAgPq6s1KBBA61bt8563aZNG73yyitq0KCBsrKy9OqrryouLq7IggQAAAAAAAAAAACQN5dm/N133306d+6czp07J0maPHmyUlNT1bJlS7Vq1Urp6el66aWXijTQgkpNTVXjxo1Vv3593XjjjXrzzTfdEgcAAAAAAAAAAABwNbk04+/222/X7bffbr2OjY3Vrl27tHLlSnl7e6tZs2YqWbJkkQVZGKGhofrqq68UFBSkU6dO6cYbb1TPnj1VqlQpt8QDAAAAAAAAAAAAXA0uJf6MMbLZbA5l4eHhuuOOO4okqMvh7e2toKAgSdK5c+dkjJExxs1RAQAAAAAAAAAAAFeWS7f6LF++vEaNGqU1a9YUdTz66quv1K1bN5UrV042m00ffPBBjjpJSUmKiYlRQECAbrrpJq1du9ZheWpqquLi4lShQgWNHTtWkZGRRR4nAAAAAAAAAAAAUJy4lPhr1aqVZs2apVtuuUWVKlXSo48+miP55qpTp04pLi5OSUlJuS5fsGCBRo8erQkTJmjjxo2Ki4tTx44ddejQIatORESENm/erJSUFP33v//VwYMHiyQ2AAAAAAAAAAAAoLhy6Vaf77zzjs6cOaNPPvlECxYs0IwZM/Tyyy8rJiZG/fr1U9++fVW/fn2XAurcubM6d+7sdPm0adN07733aujQoZKkN954Q4sXL9asWbM0btw4h7pRUVGKi4vT119/rd69e+e6vXPnzuncuXPW6/T0dEnShQsXdOHCBUmSl5eXvLy8lJWVpaysLKuuvTwzM9PhdqLOyr29vWWz2aztZi+XpMzMzAKV+/j4yBjjUG6z2eTt7Z0jRmfltIk20SbaRJtok1vbZLJkbF6SyZItWyzGZpPyKLeZLMmh3Euy2ZyXZznGaGxe1v4LVO7lLRkjm8mSLfPP25zbJONlJCPZsrLd+txeniXZzF/lxmYu/tTKSbktyyZluyu58TKSLY/yTMfbrRuvi5UcYpGsPr4SY08mq9j2U7bg/xxjTvqvuPSTk3JJV+waYe+/4thPOcuzHI5lcesn4537tUDSFbuWy5ji2U/OruW59F9x6Sdn13IpZ/8VxXuuLSuz+PaTk2u5Q/8Vs35yei2X8/67nM9GVv+p+PWTs2t5rv1XXPrJ2bVcuiKfYfPsPzf3k7NreY7+UzHqJ2fXcuXsv6L4W8OWlVls+ym77GOsQP3nrn7K7Vr+52OdrsjfhNbffsWvn5yVO/RfceonZ9dyJ3/7XZd/u2cW437ib/f8r+W59V9x6Sc3/O1+6WegS6/ReXEp8SdJgYGB6tOnj/r06aNTp07po48+0oIFC/Tyyy/r+eefV40aNbR9+3ZXN5+r8+fPa8OGDXriiSesMi8vL7Vv317ffvutJOngwYMKCgpSaGio0tLS9NVXX+nBBx90us0pU6Zo0qRJOcqTk5MVHBwsSSpdurSqVaumlJQUHT582KpToUIFVahQQT///LPS0tKs8qpVq6pMmTL68ccfdebMGau8du3aioiIUHJyssNAqFevnvz8/LR+/XqHGBo3bqzz589ry5YtVpm3t7fi4+OVlpbmcHwDAwMVFxenI0eO6P/bu/P4uOp6f/zvSdqmC90XlrKVFinBLkgLsshyBVn1ssr1XqCACkighVoREYoIsiggqEE2kR9eWRQvoBcuXxSVRRBaoC0QlgIVaKGle9rQLcn5/UE7TdpMm6RJZ87wfD4ePqSfOZm8z7wynzmfec85884772THe/bsGbvuumt88MEHMXPmzOy4fbJP9sk+2Sf7lM996rusY8zrtUP0+Hh+9KhZW3tNl16xsPs20Xvp7Oi2bFF2vLpb/6ju1j/6Ln4/Oq+syY4v7L511HTpHVsunBEdatd+kGder+1jeactYpsF0yPT4KBpdp/BUVfSIQbOe6PRPs3qt0uU1tfGVgvezo4lJSUxq9/Q6LyqJvotei9KP+4fERG1ZbWxYOcF0Xlh5+jxQY/s9iu3WBmLdlwU3eZ1i24fdcuOL+u9LJYMXBLdP+weXRZ2WbuvA2qiZkBN9HyvZ3Ra2mntvm5THcv7LI/eb/eODivWHqot2mFRrOy+Mvq90a/Rgeb8IfOjvmN99H+tf6N9qtu7rt3+9nqv7FqwOa1R26EsZvcZHN2WL4reSz7M5ldoOc3ddW6UrCqJvm/1bbBPSUS/aLc5okdtz4LNaY3lnbpl54jeDR6zQstpbvnc6LS0U/R6t9fafSqrjegb7TaXd6vvW5A55ZrLezR4LAstp1xzefSNdnnNHbh4ZcHmlGsu79bgMS60nHLN5dE32uXYaODilQWbU665vKxm7WNfaDnlmsujb7TLMezAxSsLNqdcc3mHj9dmUmg55ZrLo0+0y1pjmyW1BZtTrrm8tEF+hZZTU3P54mGL221NuGVNpmBzaqjhHLEmv0LLKddcvmyPZdbuq+eIhvNkoeVk7b7x19x+DR6bQsspH2v3dY9ha2rWZrUxmaTRx0c3zdKlS+POO++M73//+7F06dL1utQtlclk4oEHHoijjz46Ij5ZfA0cODCeeeaZ2HvvvbPbXXDBBfHEE0/Ec889F88//3ycccYZkSRJJEkSFRUVceaZZ+b8HU2d8bfddtvF/Pnzo0ePTyaEVJ9RUYxnidgn+2Sf7JN9Sv0+XTdtQbo+NZjUR5cd7lu9U+n41OC5fc+NiPb527t22oKCzalB8Y0+WbxefgWSU67xsf3GttscsSa/Qsxp/fH66Lr9vQ3uu7ByyvUJ8LF9x7bbXH7ttIUFmVOuubyp/Aolp1xzeVP5tcVr7nVT5xdsTrnm8i4N8yuwnHLN5eP6jmuXY6NsflF4OeWay5vMr0ByyjWXj+s7rl2OYTeYX4GeSZY9donCyynXXD6uz/r5tcVa47qp8ws2p4Ya/o01K78COpPs3L7nttuacO3ar/ByyjXeKL8CyinXXJ5r7fdpXLt33f6etYMFlpO1+8Zfc5vMr0Byysfafd1joOrq6ujbt28sXrw427vKpdVn/K3x8ccfxx//+Mf43e9+F48++misWLEiBg8eHGPHjt3Uu26VPffcM6ZMmdLs7cvKyqKsrGy98Q4dOkSHDo0fnjUP9LrWTKLNHV/3flsznslkmhzPVWNLx+2Tfco1bp/sU4R9ylVjS8c/zfu05iAwMiWRZNbbPOf4JwebLRgvaXpfk0wLxjOZSDKlnyz4Go3H+mMRESURSTR/fM3BY7PHm/qdTYxnMp88IO3yt7eR/PKZU67x9R63AslpQ+PtNkeszq8Qc1p/vKRFz7N85JRrLmi3uXz1c7vgcso1lzfx2BRSTm2VX3NecxtmU3A55ZgLWpRfHnLKNRe0x7FRo/wKLKdcc3mT+RVQTrnG2+MYdqP55TGnXHP5JufXzjnlmgvaY62Rza8Ac2pKk8eeUVg5rTu+obVDS8fXPYZdu/YrvJxyjTd77Vcga8LW5Fe0a/cCzinXuLV7g/ECzmlD45vr/b1cz/GmtKrxt3z58nj44Yfjvvvui0ceeSQ+/vjj2HHHHWPs2LFx4oknxu67796au92ofv36RWlpacyZM6fR+Jw5c2KrrbZql98JAAAAAAAAadCqxl///v3j448/jm222SbOOOOMOPHEE2OvvfZq69rW06lTp9hjjz3i8ccfz17+s76+Ph5//PE455xz2v33AwAAAAAAQKFqVePv1FNPjRNPPDH222+/tq4nli5dGm+99Vb23zNmzIgpU6ZEnz59Yvvtt4/x48fHmDFjYtSoUbHnnnvGDTfcEDU1NXHaaae1eS0AAAAAAACQFi1u/H388ccxa9asePfdd9ul8Td58uQ46KCDsv8eP358RESMGTMm7rzzzjjxxBNj7ty5MXHixJg9e3aMHDkyHn300dhyyy036fdWVlZGZWXlel+iCQAAAAAAAGnQ4sZf165d4y9/+Uscfvjh7VFPHHjggZEkTX9x4hrnnHNOm1/as6KiIioqKqK6ujp69uzZpvcNAAAAAAAA7a2kNT+03377xbPPPtvWtQAAAAAAAACt1KrG3y9+8Yt46qmn4uKLL46ZM2e2dU0AAAAAAABAC7Wq8TdixIiYOXNmXHXVVbHDDjtEWVlZ9OjRo9H/XC4TAAAAAAAANp8Wf8dfRMRxxx0XmUymrWsBAAAAAAAAWqlVjb8777yzjcvIv8rKyqisrIy6urp8lwIAAAAAAAAt1qpLfRajioqKqKqqikmTJuW7FAAAAAAAAGixVjf+3nvvvTjrrLNil112id69e8eTTz4ZERHz5s2LsWPHxksvvdRmRQIAAAAAAAAb1qpLfVZVVcUXvvCFqK+vj7322iveeuutqK2tjYiIfv36xdNPPx01NTXxq1/9qk2LBQAAAAAAAJrWqsbfBRdcEL169Yp//vOfkclkYsCAAY1uP/LII+O+++5rkwIBAAAAAACAjWvVpT6ffPLJ+Na3vhX9+/ePTCaz3u3bb799zJo1a5OLAwAAAAAAAJqnVY2/+vr66Nq1a87b586dG2VlZa0uCgAAAAAAAGiZVjX+Pve5z8XDDz/c5G21tbVx7733xuc///lNKmxzq6ysjPLy8hg9enS+SwEAAAAAAIAWa1Xj73vf+148+uij8a1vfSteeeWViIiYM2dO/OUvf4kvfelL8dprr8WFF17YpoW2t4qKiqiqqopJkybluxQAAAAAAABosQ6t+aHDDz887rzzzhg3blzceuutERFx0kknRZIk0aNHj7jrrrti//33b9NCAQAAAAAAgNxa1fiLiDj55JPj2GOPjT//+c8xffr0qK+vj8GDB8ehhx4a3bt3b8saAQAAAAAAgI1odeMvIqJbt25x9NFHt1EpAAAAAAAAQGu16jv+3nvvvXj66acbjU2dOjVOOeWUOPHEE+PBBx9si9oAAAAAAACAZmrVGX9jx46NpUuXxl/+8peIiJgzZ04cdNBBsXLlyujevXvcf//98fvf/z6OPfbYNi0WAAAAAAAAaFqrzvh7/vnn45BDDsn++6677oply5bF1KlTY9asWfHFL34xrr322jYrEgAAAAAAANiwVjX+FixYEAMGDMj++3//93/jgAMOiMGDB0dJSUkce+yx8frrr7dZkZtDZWVllJeXx+jRo/NdCgAAAAAAALRYqxp//fv3j3fffTciIhYtWhT//Oc/49BDD83eXltbG7W1tW1T4WZSUVERVVVVMWnSpHyXAgAAAAAAAC3Wqu/4O/jgg+NnP/tZ9OjRI/7+979HfX19HH300dnbq6qqYrvttmurGgEAAAAAAICNaFXj7+qrr44333wzJkyYEJ06dYprr702Bg0aFBERK1asiN/97nfxn//5n21aKAAAAAAAAJBbqxp/W265ZfzjH/+IxYsXR5cuXaJTp07Z2+rr6+Pxxx93xh8AAAAAAABsRq1q/K3Rs2fP9ca6dOkSI0aM2JS7BQAAAAAAAFqopLU/OHfu3JgwYUKUl5dH165do2vXrlFeXh4TJkyIOXPmtGWNAAAAAAAAwEa0qvH36quvxrBhw+L666+Pnj17xgknnBAnnHBC9OzZM66//voYPnx4vPLKK21dKwAAAAAAAJBDqy71WVFREXV1dfHcc8/F6NGjG932/PPPxxFHHBHnnntu/O1vf2uTIgEAAAAAAIANa9UZf88//3yMGzduvaZfRMSee+4Z48aNi+eee26TiwMAAAAAAACap1WNvwEDBkTnzp1z3t65c+cYMGBAq4vKh8rKyigvL2+ymQkAAAAAAACFrlWNv/POOy9++ctfxuzZs9e77YMPPohf/vKXcd55521qbZtVRUVFVFVVxaRJk/JdCgAAAAAAALRYs77j7/rrr19vbIsttoghQ4bEMcccE0OGDImIiOnTp8eDDz4YQ4YMiSRJ2rZSAAAAAAAAIKdmNf4mTJiQ87bf/va3641NmzYtJkyYEOeff37rKwMAAAAAAACarVmNvxkzZrR3HQAAAAAAAMAmaFbjb4cddmjvOgAAAAAAAIBN0KzG37pWrFgR//jHP+K1116L6urq6N69e5SXl8e+++4bZWVlbV0jAAAAAAAAsBEtavwlSRLXXnttXHPNNbFw4cJIkiR7WyaTid69e8d3v/vdmDBhQmQymTYvFgAAAAAAAGhaixp///Vf/xX33ntv7LzzznHuuefGiBEjonv37rFkyZKYOnVq3H333XHhhRfGlClT4re//W171QwAAAAAAACso9mNv9/85jdx7733xoQJE+Kqq66K0tLSRrcfffTRcckll8RFF10UP/nJT+Lwww+Pk046qc0LBgAAAAAAANZX0twNb7vttjjggAPixz/+8XpNv+ydlZTE1VdfHQcccEDceuutbVYkAAAAAAAAsGHNbvxNmzYtjjvuuGZte+yxx8a0adNaXVQ+VFZWRnl5eYwePTrfpQAAAAAAAECLNbvxt2rVqujcuXOzti0rK4va2tpWF5UPFRUVUVVVFZMmTcp3KQAAAAAAANBizW78DRkyJJ588slmbfvUU0/FTjvt1OqiAAAAAAAAgJZpduPv+OOPj3vuuScefvjhDW738MMPxz333BMnnHDCJhcHAAAAAAAANE+zG3/f/va3Y5dddomjjz46zjjjjHjqqaeiuro6kiSJ6urqePrpp+OMM86Io48+OnbZZZf49re/3Z51AwAAAAAAAA10aO6GXbt2jb/+9a9xyimnxO233x6/+tWv1tsmSZI4+OCD46677oquXbu2aaEAAAAAAABAbs1u/EVEDBgwIB599NF47rnn4k9/+lNUVVXFkiVLonv37rHrrrvGUUcdFXvvvXd71QoAAAAAAADk0KLG3xp77bVX7LXXXm1dCwAAAAAAANBKzf6OPwAAAAAAAKBwafwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFoFmNv5/97Gfx5ptvtnctAAAAAAAAQCs1q/F3/vnnx+TJk7P/Li0tjbvvvrvdigIAAAAAAABaplmNv969e8ecOXOy/06SpN0KAgAAAAAAAFquQ3M2OvDAA+MHP/hBTJkyJXr27BkREXfddVf885//zPkzmUwmbrzxxrapcjOorKyMysrKqKury3cpAAAAAAAA0GLNavzddNNNcd5558Vjjz0WH330UWQymXjsscfisccey/kzaWv8VVRUREVFRVRXV2ebmwAAAAAAAJAWzbrU54ABA+Luu++ODz/8MOrq6iJJkvjv//7vqK+vz/k/Z84BAAAAAADA5tOsxt+6fv3rX8c+++zT1rUAAAAAAAAArdSsS32ua8yYMdn/rqqqinfffTciInbYYYcoLy9vm8oAAAAAAACAZmtV4y8i4qGHHorx48fHv/71r0bjgwYNiuuvvz6+8pWvbGptAAAAAAAAQDO16lKfjzzySBx33HEREXHllVfGAw88EA888EBceeWVkSRJHHvssfHoo4+2aaEAAAAAAABAbq064+/yyy+P4cOHx1NPPRXdunXLjn/lK1+Jc845J/bbb7+47LLL4rDDDmuzQgEAAAAAAIDcWnXG37Rp02LMmDGNmn5rdOvWLU499dSYNm3aJhcHAAAAAAAANE+rGn+dO3eOBQsW5Lx9wYIF0blz51YXBQAAAAAAALRMqxp///Zv/xY33nhjPPvss+vd9txzz8XPfvazOPjggze5OAAAAAAAAKB5WvUdfz/+8Y9j7733jv322y/23HPP2GWXXSIi4o033ojnn38+BgwYENdcc02bFgoAAAAAAADk1qoz/gYNGhTTpk2LsWPHxsKFC+O+++6L++67LxYuXBjjxo2LqVOnxo477tjGpQIAAAAAAAC5tOqMv4iIAQMGxE9/+tP46U9/2pb1AAAAAAAAAK3QqjP+AAAAAAAAgMKi8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAi1u/H388cexxx57xM0339we9QAAAAAAAACt0OLGX9euXWPGjBmRyWTaox4AAAAAAACgFVp1qc/DDjss/t//+39tXQsAAAAAAADQSq1q/F1yySXx5ptvxsknnxxPP/10zJo1KxYsWLDe/9KksrIyysvLY/To0fkuBQAAAAAAAFqsQ2t+aLfddouIiKqqqrj77rtzbldXV9e6qvKgoqIiKioqorq6Onr27JnvcgAAAAAAAKBFWtX4mzhxou/4AwAAAAAAgALSqsbfD37wgzYuAwAAAAAAANgUrfqOv3UtXrw4VZf1BAAAAAAAgGLT6sbf5MmT47DDDouuXbtG375944knnoiIiHnz5sW///u/x9///ve2qhEAAAAAAADYiFY1/p555pnYb7/9Yvr06XHSSSdFfX199rZ+/frF4sWL45ZbbmmzIgEAAAAAAIANa1Xj76KLLopdd901qqqq4sorr1zv9oMOOiiee+65TS4OAAAAAAAAaJ5WNf4mTZoUp512WpSVlUUmk1nv9oEDB8bs2bM3uTgAAAAAAACgeVrV+OvYsWOjy3uua9asWbHFFlu0uigAAAAAAACgZVrV+Pv85z8f999/f5O31dTUxK9//es44IADNqkwAAAAAAAAoPla1fi77LLLYvLkyXHkkUfG//3f/0VExNSpU+P222+PPfbYI+bOnRuXXHJJmxYKAAAAAAAA5NahNT+01157xSOPPBLf+ta34pRTTomIiG9/+9sRETF48OB45JFHYvjw4W1XJQAAAAAAALBBrWr8RUT827/9W7zxxhvx0ksvxVtvvRX19fUxePDg2GOPPSKTybRljQAAAAAAAMBGtLrxt8buu+8eu+++e1vUAgAAAAAAALRSqxt/K1asiNtuuy0eeeSR+Ne//hURETvuuGMcccQR8Y1vfCM6d+7cVjUCAAAAAAAAG1HSmh+aOXNmjBw5MsaOHRtTp06N/v37R//+/WPq1KkxduzYGDlyZMycObOtawUAAAAAAAByaFXjr6KiIt5999343e9+F7NmzYonnnginnjiiZg1a1bcd9998d5770VFRUVb1woAAAAAAADk0KpLfT7++ONx/vnnx/HHH7/ebSeccEK8+OKL8fOf/3yTiwMAAAAAAACap1Vn/HXv3j0GDBiQ8/atttoqunfv3uqiAAAAAAAAgJZpVePvtNNOizvvvDM+/vjj9W5bunRp/PrXv46vf/3rm1wcAAAAAAAA0DzNutTn//zP/zT69+677x4PP/xwDB06NMaMGRNDhgyJiIjp06fHXXfdFX369Inhw4e3fbUAAAAAAABAk5rV+Dv++OMjk8lEkiQREY3++0c/+tF628+cOTO+9rWvxVe/+tU2LBUAAAAAAADIpVmNv7/97W/tXQcAAAAAAACwCZrV+DvggAPauw4AAAAAAABgE5TkuwAAAAAAAABg0zXrjL+mPP3003HHHXfEO++8EwsXLsx+598amUwmpk6duskFAgAAAAAAABvXqsbf9ddfH9/5zneic+fOscsuu0SfPn3aui4AAAAAAACgBVrV+PvJT34S++67b/zpT3+Knj17tnVNAAAAAAAAQAu16jv+Pv744/iv//ovTT8AAAAAAAAoEK1q/B100EHx8ssvt3UtbeL999+PAw88MMrLy2P48OHx+9//Pt8lAQAAAAAAQLtrVePv5z//eTz++ONx7bXXxoIFC9q6pk3SoUOHuOGGG6Kqqioee+yxOO+886KmpibfZQEAAAAAAEC7alXjb7vttoszzzwzLrzwwujfv39069YtevTo0eh/+boM6NZbbx0jR46MiIitttoq+vXrV3DNSQAAAAAAAGhrHVrzQxMnTowf/ehHMXDgwBg1alSbNvmefPLJ+MlPfhIvvPBCfPjhh/HAAw/E0Ucf3WibysrK+MlPfhKzZ8+OESNGxM9//vPYc88917uvF154Ierq6mK77bZrs/oAAAAAAACgELWq8XfzzTfHkUceGQ8++GCUlLTqpMGcampqYsSIEXH66afHscceu97t9913X4wfPz5uvvnm2GuvveKGG26IQw89NN54440YMGBAdrsFCxbEKaecErfddlub1gcAAAAAAACFqFWNv5UrV8aRRx7Z5k2/iIjDDz88Dj/88Jy3X3/99fHNb34zTjvttIj4pAn58MMPxx133BEXXnhhRESsWLEijj766Ljwwgtjn3322eDvW7FiRaxYsSL77+rq6oiIqK2tjdra2oiIKCkpiZKSkqivr4/6+vrstmvG6+rqIkmSjY6XlpZGJpPJ3m/D8YiIurq6Zo136NAhkiRpNJ7JZKK0tHS9GnON2yf7ZJ/sk32yT3ndp6Q+kkxJRFIfmQa1JJlMxAbGM0l9RKPxkohMJvd4feMak0xJ9vc3a7ykNCJJIpPUR6Yus7r4iKQkiUgiMvWZtRuvGa+PyCRrx5NM8snF1XOMZ+ozEWtL/+Q+MhsYr2vwO9eMxzq1RGQzbo+/vUjqCzanBsWv/hvLkV+h5JRjPCLabY5Yk18h5rT+eH2jx7LQckpKm54LIqLd5vJIksLMKddc3kR+hZJTrrk8Yv382uI1N1NfV7g55ZjLG+VXYDnlnMsjd36bcmyUzS8KL6dcc3mT+RVKTrnm8oh2OYbdYH55zinXXL5eflFAOeWay2P9/NpirZGpryvYnBpq+DfWrPzylVNTc3mStN+aMLv2K7ycco03yq+Qcso1l+dY+30q1+51BZyTtfvG5/Km8iuUnPKwdl/3GGjdOXpDWtX4O+qoo+Kpp56KM888szU/3morV66MF154Ib73ve9lx0pKSuLggw+OZ599NiI+eZBPPfXU+Ld/+7c4+eSTN3qfV111VVx22WXrjb/00kvRrVu3iIjo379/DB48OGbMmBFz587NbrPtttvGtttuG2+++WYsXrw4O77TTjvFgAED4pVXXolly5Zlx4cOHRq9evWKl156qdEfwvDhw6NTp04xefLkRjWMGjUqVq5cGdOmTcuOlZaWxujRo2Px4sXx+uuvZ8e7dOkSI0aMiHnz5sU777yTHe/Zs2fsuuuu8cEHH8TMmTOz4/bJPtkn+2Sf7FM+96nvso4xr9cO0ePj+dGjZm3tNV16xcLu20TvpbOj27JF2fHqbv2julv/6Lv4/ei8siY7vrD71lHTpXdsuXBGdKhd+0Geeb22j+WdtohtFkyPTIODptl9BkddSYcYOO+NRvs0q98uUVpfG1steDs7lpSUxKx+Q6Pzqprot+i9KP24f0RE1JbVxoKdF0TnhZ2jxwc9stuv3GJlLNpxUXSb1y26fdQtO76s97JYMnBJdP+we3RZ2GXtvg6oiZoBNdHzvZ7RaWmntfu6TXUs77M8er/dOzqsWHuotmiHRbGy+8ro90a/Rgea84fMj/qO9dH/tf6N9qlu77p2+9vrvbJrwea0Rm2HspjdZ3B0W74oei/5MJtfoeU0d9e5UbKqJPq+1bfBPiUR/aLd5ogetT0LNqc1lnfqlp0jejd4zAotp7nlc6PT0k7R691ea/eprDaib7TbXN6tvm9B5pRrLu/R4LEstJxyzeXRN9rlNXfg4pUFm1Ouubxbg8e40HLKNZdH32iXY6OBi1cWbE655vKymrWPfaHllGsuj77RLsewAxevLNiccs3lHT5em0mh5ZRrLo8+0S5rjW2W1BZsTrnm8tIG+RVaTk3N5YuHLW63NeGWNZmCzamhhnPEmvwKLadcc/myPZZZu6+eIxrOk4WWk7X7xl9z+zV4bAotp3ys3dc9hq2pWZvVxmSSRh8fbZ7p06fHiSeeGJ///Ofj61//emy//fbZTxA01KdPn5bedePiMplG3/H3wQcfxMCBA+OZZ56JvffeO7vdBRdcEE888UQ899xz8fTTT8f+++8fw4cPz97+m9/8JoYNG9bk72jqjL/tttsu5s+fHz16fDIhpPqMimI8S8Q+2Sf7ZJ/sU+r36bppC9L1qcGkPrrscN/qnUrHpwbP7XtuRLTP39610xYUbE4Nim/0yeL18iuQnHKNj+03tt3miDX5FWJO64/XR9ft721w34WVU65PgI/tO7bd5vJrpy0syJxyzeVN5VcoOeWay5vKry1ec6+bOr9gc8o1l3dpmF+B5ZRrLh/Xd1y7HBtl84vCyynXXN5kfgWSU665fFzfce1yDLvB/Ar0TLLssUsUXk655vJxfdbPry3WGtdNnV+wOTXU8G+sWfkV0Jlk5/Y9t93WhGvXfoWXU67xRvkVUE655vJca79P49q96/b3rB0ssJys3Tf+mttkfgWSUz7W7useA1VXV0ffvn1j8eLF2d5VLq0642+XXXaJiIgpU6bELbfcknO7df9YN4f99tuv8emsG1FWVhZlZWXrjXfo0CE6dGj88Kx5oNfVVNNzQ+Pr3m9rxjOZTJPjuWps6bh9sk+5xu2TfYqwT7lqbOn4p3mf1hwERqYkksx6m+cc/+RgswXjJU3va5JpwXgmE0mm9JMFX6PxWH8sIqIkIonmj685eGz2eFO/s4nxTOaTB6Rd/vY2kl8+c8o1vt7jViA5bWi83eaI1fkVYk7rj5e06HmWj5xyzQXtNpevfm4XXE655vImHptCyqmt8mvOa27DbAoupxxzQYvyy0NOueaC9jg2apRfgeWUay5vMr8CyinXeHscw240vzzmlGsu3+T82jmnXHNBe6w1svkVYE5NafLYMworp3XHN7R2aOn4usewa9d+hZdTrvFmr/0KZE3YmvyKdu1ewDnlGrd2bzBewDltaHxzvb+X6znelFY1/iZOnJj9g9yc+vXrF6WlpTFnzpxG43PmzImtttpqs9cDAAAAAAAAhaJVjb8f/OAHbVxG83Tq1Cn22GOPePzxx7OX/6yvr4/HH388zjnnnLzUBAAAAAAAAIWgVY2/9rR06dJ46623sv+eMWNGTJkyJfr06RPbb799jB8/PsaMGROjRo2KPffcM2644YaoqamJ0047LY9VAwAAAAAAQH61qvH3wx/+cKPbZDKZuOSSS1p835MnT46DDjoo++/x48dHRMSYMWPizjvvjBNPPDHmzp0bEydOjNmzZ8fIkSPj0UcfjS233LLFv6uhysrKqKyszMv3EgIAAAAAAMCmavNLfWYymUiSpNWNvwMPPDCSpOkvTlzjnHPOafNLe1ZUVERFRUVUV1dHz5492/S+AQAAAAAAoL2VtOaH6uvr1/tfbW1tvP3223H++efHqFGj4qOPPmrrWgEAAAAAAIAcWtX4a/KOSkpi0KBBce2118bOO+8c5557blvdNQAAAAAAALARbdb4a2j//fePRx55pD3uGgAAAAAAAGhCuzT+Jk+eHCUl7XLXAAAAAAAAQBM6tOaH7rrrribHFy1aFE8++WT8z//8T3zjG9/YpMI2t8rKyqisrIy6urp8lwIAAAAAAAAt1qrG36mnnprztn79+sWFF14YEydObG1NeVFRUREVFRVRXV0dPXv2zHc5AAAAAAAA0CKtavzNmDFjvbFMJhO9e/eO7t27b3JRAAAAAAAAQMu0qvG3ww47tHUdAAAAAAAAwCYoyXcBAAAAAAAAwKZr9hl/w4cPb9EdZzKZmDp1aosLAgAAAAAAAFqu2Y2/Pn36RCaT2eh2s2fPjjfeeKNZ2wIAAAAAAABto9mNv7///e8bvH327NlxzTXXxC233BKlpaVx8sknb2ptm1VlZWVUVlZGXV1dvksBAAAAAACAFtvk7/ibM2dOnH/++TF48OCorKyM//iP/4jXX3897rjjjraob7OpqKiIqqqqmDRpUr5LAQAAAAAAgBZr9hl/61pzht+tt94aq1atipNOOikuvvji2GmnndqyPgAAAAAAAKAZWtz4mz17dlx99dVx2223xapVq+Lkk0+Oiy++OAYNGtQe9QEAAAAAAADN0OzG34cffpht+NXW1sYpp5wS3//+9zX8AAAAAAAAoAA0u/E3ePDgWLFiRYwcOTIuuuiiGDRoUCxcuDAWLlyY82c+97nPtUmRAAAAAAAAwIY1u/G3fPnyiIh46aWX4qtf/eoGt02SJDKZTNTV1W1adQAAAAAAAECzNLvx9+tf/7o96wAAAAAAAAA2QbMbf2PGjGnPOvKusrIyKisrnaUIAAAAAABAKpXku4BCUVFREVVVVTFp0qR8lwIAAAAAAAAtpvEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+FutsrIyysvLY/To0fkuBQAAAAAAAFpM42+1ioqKqKqqikmTJuW7FAAAAAAAAGgxjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/larrKyM8vLyGD16dL5LAQAAAAAAgBbT+FutoqIiqqqqYtKkSfkuBQAAAAAAAFpM4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/K1WWVkZ5eXlMXr06HyXAgAAAAAAAC2m8bdaRUVFVFVVxaRJk/JdCgAAAAAAALSYxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAi0CHfBQDAp8WNC2/MdwktNq73uHyXAAAAAAA0kzP+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKQId8F0D63LjwxnyX0GLjeo/LdwkAAAAAAADtyhl/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjb/VKisro7y8PEaPHp3vUgAAAAAAAKDFNP5Wq6ioiKqqqpg0aVK+SwEAAAAAAIAW0/gDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFIGibPwdc8wx0bt37zj++OPzXQoAAAAAAABsFkXZ+Bs3blzcdddd+S4DAAAAAAAANpuibPwdeOCB0b1793yXAQAAAAAAAJtNwTX+nnzyyfjyl78c22yzTWQymXjwwQfX26aysjJ23HHH6Ny5c+y1117x/PPPb/5CAQAAAAAAoIAUXOOvpqYmRowYEZWVlU3eft9998X48ePj0ksvjRdffDFGjBgRhx56aHz00UebuVIAAAAAAAAoHB3yXcC6Dj/88Dj88MNz3n799dfHN7/5zTjttNMiIuLmm2+Ohx9+OO6444648MILW/z7VqxYEStWrMj+u7q6OiIiamtro7a2NiIiSkpKoqSkJOrr66O+vj677Zrxurq6SJJko+OlpaWRyWSy99twPCKirq6uWeMdOnSIJEkajWcymSgtLV2vxlzjm7JPmbpMdjwpSSIy0WgsOx4RmfpmjpcmEck645nV2+car4/IJA1qySSftLKbGl/9OH6acrJP9sk+Fd4+NZo/23veK1l9H2tLXztn5xpvYi5f93Hf0L62KKekPpJMSURSH5kGj2+SyURsYDyT1Ec0Gi+JyGRyj9c3rjHJlGR/f7PGS0ojkiQySf3ax6cAc4po4rU1Wfv611BbPJ8iqS/YnBoUv/pvLEd+hZJTjvGIaLd5b01+hZjT+uP1jefOAssp11weEe32+hRJUpg55ZrLm8ivUHLKNZdHrJ9fWxxHZOrrCjenHHN5k2u/Askp51weufPblOO9bH5ReDnlmsut3Ru8hm4ovzznlGsuXy+/KKCccs3lsX5+bbEmzNTXFWxODTX8G2tWfoW0JkyS9lu7Z9d+hZdTrvHUrd1zrP0+lWv3ugLOydp943N5U/kVSk55WLuvewy07hy9IQXX+NuQlStXxgsvvBDf+973smMlJSVx8MEHx7PPPtuq+7zqqqvisssuW2/8pZdeim7dukVERP/+/WPw4MExY8aMmDt3bnabbbfdNrbddtt48803Y/HixdnxnXbaKQYMGBCvvPJKLFu2LDs+dOjQ6NWrV7z00kuN/hCGDx8enTp1ismTJzeqYdSoUbFy5cqYNm1adqy0tDRGjx4dixcvjtdffz073qVLlxgxYkTMmzcv3nnnnex4z549Y9ddd40PPvggZs6cmR3flH3qX90/O75oh0WxsvvK6PdGv0Z/9POHzI/6jvXR/7W120ZEzN11bpSsKom+b/XNjiUlScwtnxudlnaKXu/2yo7XltXGgp0XROeFnaPHBz2y4yu3WBmLdlwU3eZ1i24fdcuOL+u9LJYMXBLdP+weXRZ2yY7XDKiJ6Bufupzsk32yT4W3T/1XfTInbo55r2ZATfR8r2d0WtopO169TXUs77M8er/dOzqsWHsIsKG5vK6url1y6rusY8zrtUP0+Hh+9KhZm0dNl16xsPs20Xvp7Oi2bNHa2rv1j+pu/aPv4vej88qa7PjC7ltHTZfeseXCGdGhdu0Heeb12j6Wd9oitlkwPTINDppm9xkcdSUdYuC8Nxrt06x+u0RpfW1steDt7FhSUhKz+g2Nzqtqot+i96L040/yK8ScmnrNrdu7rt2eT71Xdi3YnNao7VAWs/sMjm7LF0XvJR9m8yu0nHIdG0W/aLd5r0dtz4LNaY3lnbpl54jeDR6zQssp11wefaPdXp+61fctyJxyzeU9GjyWhZZTrrk8+ka7HEcMXLyyYHPKNZd3a/AYF1pOueby6Bvtcrw3cPHKgs0p11xeVmPtvsbAxSsLNqdcc3mHj9dmUmg55ZrLo0+0y5pwmyW1BZtTrrm8tEF+hZZTU3P54mGL223tvmVNpmBzaqjhHLEmv0LLKddcvmyPZe32Hkva1u4N58lCy8nafeOvuf0aPDaFllM+1u7rHsPW1KzNamMySaOPjxaWTCYTDzzwQBx99NER8cnia+DAgfHMM8/E3nvvnd3uggsuiCeeeCKee+65iIg4+OCDY+rUqVFTUxN9+vSJ3//+9422b6ipM/622267mD9/fvTo8cmEUAhniTSU7zNfKheuvQxrWj41OK7vuE9dTvbJPtmnwtunmxbdlB1PxacGS5IY23tsu+R03bQF6frUYFIfXXa4b/VOFV5OEeu/tp7b99yIaJ/n07XTFhRsTg2Kb/TJ4vXyK5Ccco2P7Te23ea9NfkVYk7rj9dH1+3vbXDfhZVTrrl8bN+x7fb6dO20hQWZU665vKn8CiWnXHN5U/m1xXHEdVPnF2xOuebyLg3zK7Cccs3l4/qOa5fjvWx+UXg55ZrLm8yvQHLa3Gv3DeZXoGeSZY9dovByyjWXj+uzfn5tsSa8bur8gs2poYZ/Y83Kr4DWhOf2Pbfd1u5r136Fl1Ou8Ub5FVBOuebyXGu/T+Pavev296wdLLCcrN03/prbZH4FklM+1u7rHgNVV1dH3759Y/HixdneVS6pOuOvuf7yl780e9uysrIoKytbb7xDhw7RoUPjh2fNA72uNZNoc8fXvd/WjGcymSbHc9XY0vEN7VNSmqw33tRYi8czLRwviUii+eOftpyaW2NLx+2TfYqwT7lq3Nj4enNZO897aw5Kmj3exO/M9bhHbFpOaw4CI1MSSWa9zXOOf3Kw2YLxkqbzSzItGM9kIsk08fpXQDk1NZ7JfPKAtMvzaSP55TOnXOPrPW4FktOGxttt3ludXyHmtP54SYueZ/nIKddc0G6vT6uf2wWXU665vKm1QwHl1Fb5Nec4omE2BZdTjrmgRfkV0JqwPY73GuVXYDnlmsut3VuQXx5zyjWXb3J+eVprtMeaMJtfAebUlCaPPaOwclp3fENrh5aOr3sMu3btV3g55RpP29q9NfkV7dq9gHPKNW7t3mC8gHPa0Pjmes8y13O8KevfSwHr169flJaWxpw5cxqNz5kzJ7baaqs8VQUAAAAAAAD5l6rGX6dOnWKPPfaIxx9/PDtWX18fjz/+eM5LeQIAAAAAAMCnQcFd6nPp0qXx1ltvZf89Y8aMmDJlSvTp0ye23377GD9+fIwZMyZGjRoVe+65Z9xwww1RU1MTp5122ib93srKyqisrFzvWroAAAAAAACQBgXX+Js8eXIcdNBB2X+PHz8+IiLGjBkTd955Z5x44okxd+7cmDhxYsyePTtGjhwZjz76aGy55Zab9HsrKiqioqIiqquro2fPnpt0XwAAAAAAALC5FVzj78ADD4wkafqLE9c455xz4pxzztlMFQEAAAAAAEDhS9V3/AEAAAAAAABN0/gDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKQId8F1AoKisro7KyMurq6vJdCkBONy68Md8ltNi43uPyXQIAAAAAwKeCM/5Wq6ioiKqqqpg0aVK+SwEAAAAAAIAW0/gDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn+rVVZWRnl5eYwePTrfpQAAAAAAAECLafytVlFREVVVVTFp0qR8lwIAAAAAAAAtpvEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8rVZZWRnl5eUxevTofJcCAAAAAAAALabxt1pFRUVUVVXFpEmT8l0KAAAAAAAAtJjGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQONvtcrKyigvL4/Ro0fnuxQAAAAAAABoMY2/1SoqKqKqqiomTZqU71IAAAAAAACgxTT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PhbrbKyMsrLy2P06NH5LgUAAAAAAABaTONvtYqKiqiqqopJkybluxQAAAAAAABoMY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAi0CHfBRSKysrKqKysjLq6unyXAu3qxoU35ruEFhvXe1y+SwAAAAAAgILnjL/VKioqoqqqKiZNmpTvUgAAAAAAAKDFNP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPG3WmVlZZSXl8fo0aPzXQoAAAAAAAC0mMbfahUVFVFVVRWTJk3KdykAAAAAAADQYhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABSBDvkuoNAkSRIREdXV1XmupHAtr16e7xJarLpUnmvIL93kl27yW2v50iXtcr/tKZOy/NrzuSe/9ie/tdKWXYT8GpLfWmnLLkJ+Dclv85DfWvJbS37tz7FLY/JbK235pS27CPk1JL+N/K7VPas1PawNySTN2epTZObMmbHddtvluwwAAAAAAADIev/992Pbbbfd4DYaf+uor6+PDz74ILp37x6ZTCbf5RSc6urq2G677eL999+PHj165LscWkh+6Sa/dJNfuskv3eSXXrJLN/mlm/zSTX7pJr90k1+6yS+9ZJdu8tu4JEliyZIlsc0220RJyYa/xc+lPtdRUlKy0W4pET169PAETDH5pZv80k1+6Sa/dJNfesku3eSXbvJLN/mlm/zSTX7pJr/0kl26yW/Devbs2aztNtwWBAAAAAAAAFJB4w8AAAAAAACKgMYfLVJWVhaXXnpplJWV5bsUWkF+6Sa/dJNfuskv3eSXXrJLN/mlm/zSTX7pJr90k1+6yS+9ZJdu8mtbmSRJknwXAQAAAAAAAGwaZ/wBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGH0CRSJIk3yWwCerq6vJdAnwq1dfX57sENsHy5csjQo5p5xgmvWQHwKeN1750s25IN8+/5tP4o815AsLmtXLlyoiIWLFiRUR4DqbN7NmzIyKitLRU8y+Fpk+fHlOmTMl3GbTS22+/Hb/4xS9i7ty5+S6FVqiqqoqhQ4fG1KlTo6TEsiZtqqurY+HChTF79uzIZDLehEmZ2traiFh73Cm/9Fh3rWDtANA8a9br5s10mjdvXkRElJSUeO8lhd5+++1YuHBhZDKZfJeSGlbItImZM2fGCy+8EBHhCZhCb731Vlx55ZUxZsyYuP322+Nf//pXvkuimV5//fU488wz49BDD40zzzwzXnnlFc/BFHn77bdjm222iSOOOCIiNP/SZurUqbHLLrvEs88+m+9SaIVp06bFXnvtFe+++252EeiN6/SYMmVKfOELX4j33nsv/vznP0eE/NLk1VdfjaOOOiq++MUvxvDhw+Oxxx7TvE2R1157LcaOHRsnnHBCnH/++fHss8/KLyXeeOONuPTSS+PUU0+N22+/PV5//XWN9xSZM2dOvPnmm/kug1aaMWNG3HzzzTF+/Pj485//nD3+JB3efPPNmDBhQhx33HFxxRVXxIwZM/JdEi3w5ptvxk477RRnnHFGRHjvJW2mTp0aO++8czzwwAP5LiVVHJ2zyd54440YNWpUfOtb34qnn3463+XQQq+88krss88+MXXq1Jg+fXrceuutcc0110RNTU2+S2MjXn755dhnn32irKwsBg8eHHPmzInrr78+Vq1a5RNoKfHRRx/FtttuG2+99VYcdthhEfHJAag3Xwrf1KlTY5999okLLrggvvWtb+W7HFroww8/jGOPPTbGjBkT1113Xey6664RsfbMaQrb1KlTY++9947zzjsvxo0bFzfffHPU1tZGSUmJ178UeP311+OAAw6Iz3/+8/Gd73wnjjnmmDjnnHOiuro6InyKvtC9+uqrse+++0aSJNG/f/+YM2dO7L///nH77bdbPxS4qqqq2GuvvaKqqiqmT58et99+exxyyCHx+OOPmz9T4LXXXos999wzLrnkknj11VfzXQ4t9PLLL8d+++0Xf/zjH+N///d/49xzz4077rgj6uvrPfdSYM17LwsXLoz6+vr4v//7v7jnnnsiSRL5pURVVVV06dIlXn755TjzzDMjwnsvaTF16tTYd99944ILLojTTz893+WkisYfm2T27Nlx1llnxZAhQ6Jfv35x+eWXx1NPPZXvsmim999/P0488cT4+te/Hvfdd18888wzceqpp8Zjjz0Wixcvznd5bMCMGTPimGOOibPPPjtuvvnmuOmmm2LvvfeOTCYTHTt2jI8//jginP1QyJIkiUwmE1tssUVcdtllMWPGjDjyyCMj4pNLT3zwwQd5rpBcXn/99Rg1alSMHTs2rr766kiSJP7nf/4nrrrqqrj33nt9EjsFpk2bFltuuWVcd911UV9fH2PHjo2jjjoqDjjggPjNb36T/d44Cs+UKVNi1KhRcf7558cll1wS48aNi5UrV8ZPf/rTiHDliUJXW1sbV111VRx55JHx4x//OL72ta/FCSecEMOGDYu6urqYOXOmDAvYihUr4tJLL42TTjopfvnLX8ZNN90UP/3pT2PIkCFRUVERt9xyS0Ro3haiurq6uOqqq+Koo46K+++/P/7xj3/EzTffHIceemgceuih8fDDDzvzr4B98MEH8Y1vfCN69+4d//rXv+KnP/1pvPLKK/kui2Z6991347jjjotTTz01HnrooXjzzTfjmGOOidtuuy1Wrlzpda/AvfPOO/HlL385zjrrrLjzzjvjgQceiN122y3mzJkTmUzGWWMpUVZWFr169Yqjjz46nn322TjrrLMi4pP3XpYuXZrn6shlzXsv3/3ud+Pqq6+O+vr6+Otf/xq33nprPPPMMzFr1qx8l1jQNP7YJDNnzozS0tL48Y9/HGPHjo3S0tK44oorNP9SIEmS+Nvf/haf+cxn4qyzzsou8r7+9a9HxCefhqFwTZo0Kfbdd98YO3Zsdqy6ujomT54ce+21Vxx22GHx//7f//Pp3QKWyWRi+PDhUV5eHgcccEBcc8018eabb8axxx4bp59+etx6663ZBi6F5Yknnoi6urrYb7/9or6+Pg466KC4+uqr4+abb44rr7wyjjjiCJf/LHDz58+PDh06RETEgQceGNOnT48RI0bEXnvtFWPGjImrr746Irx5XWiWLFkSF198cUyYMCGuvPLKiIjo27dvjBw5Mv72t7/luTqao7a2NmbMmBE77bRTduzpp5+Ov/3tb7H//vvHZz/72bjsssucfVugVq1aFdOnT4/ddtstIj7Jc+utt4599903Dj744JgwYUK2gURhqa+vj/fffz+222677NjIkSPjqquuijPOOCOOP/74+Oc//+mSrQXq9ddfj+7du8f/9//9f3H22WfHSy+9FDfccIPmXwrU1dXFQw89FLvvvnuce+652efYeeedFytXrozp06fnuUI2pK6uLv785z/HF7/4xfj2t7+dXRt06dIlXnnllTjwwAPjtNNOi2eeeSbPlbIxw4YNiz322CO+8Y1vxGmnnRbPPvtsfPvb347TTz89fvvb38aqVavyXSLrqK+vj9/97ndRV1cXxx9/fEREHHLIITF+/Pi44IIL4pRTTokxY8bEtGnT8lxp4eqQ7wJIt1GjRsV1110XI0aMiIhPnpS/+MUv4oorrojvf//7sf/++2fHS0pKsv9P/mUymejXr18cdthhscMOO0TEJ29wrlq1KlasWBGLFi3Kb4Fs0Je+9KUYMWJEDBgwICIifvKTn8RNN90UV199dXTu3DmmTp0aX/nKV2Ly5MkxbNiwPFdLLqWlpfHOO+/ESy+9FEcffXT07Nkzjj322Fi8eHFMnTo1unbtGrW1tdkGBYXhzDPPjNmzZ8e///u/x4477hgjR46MK6+8MgYPHhwvvvhi/OQnP4mxY8fGww8/nH2OUlj69OkTzz//fNx1113Rv3//+OUvf5nNas8994wxY8bEIYccEvvuu2+eK6Wh7t27x/XXXx+f+cxnIuKT48vu3bvHd7/73fjCF74Qf/jDH+K4447Lc5VsSOfOnWP33XeP6667Lvr37x9VVVVxxx13xB133BFDhw6NqqqqOOmkk2L48OFxzDHH5Ltc1lFWVhY77LBDTJo0Kb72ta9Fjx494t13342HHnoo7r777hgwYEBcddVVcdBBB0XXrl3zXS4NdOzYMT772c/GE088EQsXLozevXtHRET//v3je9/7Xnz00Udx+eWXxz333BM9evTIc7Wsa5999olLL700RowYESNGjMi+73LDDTfEuHHjsuu9NVcUoXCUlpZGz549Y999942tttoqO57JZKK6ujrmz5+fx+rYmNLS0vjSl74U++23X3be/OEPfxi33357TJw4MZYvXx5vvPFGnHzyyfGXv/wlBg0alOeKyaVPnz7x6quvxvvvvx9nnnlmbLHFFvG9730vFixYEOeff3507Ngx6urqorS0NN+lslpJSUmceeaZMWvWrNh9991j5513js985jNx/fXXR3l5efzv//5v3HzzzXHFFVfEHXfcEVtssUW+Sy44OjC0SsNLgKxp+kVEHHHEEdlPMV155ZXZM//Gjx8fzz33nKZfgVhzKYIjjjgie23rhpcd3GqrraJTp07Z7e+66y6XrisQa7Lr1atX7LLLLhER2U8K/vGPf4xx48bFmWeeGd/5zneiX79+MWXKlDxWy7oazp1JkkRZWVkMHz48++my2267LUpKSmK77baLiRMnRkRo+hWQhpdxufTSS+Oyyy6Lrl27xsUXXxyf+cxnorS0NEaPHh1f/epXY8aMGTFnzpw8Vsu6Gj7/vvSlL8XRRx8dP/jBD+K1116Lbt26RV1dXdTX18fJJ58cI0eOjOeffz6P1bKuNfPkmqZfRGTPah8+fHh8+ctfjoceeiiWLVvmUnUFqGEm48aNi1NOOSWeffbZePbZZ+OHP/xh/Md//EeMHDky/vM//zP22WefeOyxx/JYLetak1/Hjh3ji1/8Yrz66qtx1FFHxUUXXRS77bZbHH/88XHIIYfEoYceGrNmzfKp+QK1//77x/Lly+PXv/51LFmyJDu+3XbbxZe//OWYMmWKr3soUJ07d47Pf/7z2X+fdtppMXbs2HjppZfixhtvzJ75d/nllzvzoQCNGTMme6WeNWeM9ejRI7baaqtGH5L44x//GO+//35eaiS3QYMGRXl5eUR8csnr5557Lu6///743ve+F5dddlmcc845sXTp0njrrbfyXCm5rFq1KsrKymKrrbaKpUuXRteuXePxxx+PVatWxZAhQ+L222+PiND0K0BbbrllXHHFFfH1r389OnfuHFdccUWMGDEiOnbsGMccc0wcfvjh8dRTTzl+ycG7ibTIokWLolevXk2evbemcXT44YdHJpOJn/3sZ3HllVdG586d46GHHooxY8bksXIi1uZXWlq63llEDT8Z2PDykN///vfj5z//ebzwwgubvV7Waphdw08hJUkSnTp1iptvvrnR8zKTycTWW2/d6HI+5E9Tc+ea59xuu+0WU6ZMifvvvz/+9re/xSOPPBLz58+Pk08+OU488cS477778lw9uZ5/3//+9+PII4+MoUOHRsTas9u32Wab6N+/v7MdCkRTz7+SkpI49thj44033ojXXnst3n777Rg+fHhEfJLjFltskf1UL/m1Jr+OHTs2eeWITCYT3bt3j4MPPji+973vxcSJE2PIkCHOeigQDZ9/a+bPnXbaKX7xi1/E8uXL44ADDsieAVFXV5f9UIxPzBeGhvmtWTuMGzcuevfuHX/961/jzTffjB/96Ecxbty4iPjkjEBnixWGDz74IF588cVYuXJlbL/99jFq1Kj46le/Gn//+9/jtttuiy5dusSJJ54Yffr0iYiI0aNHR9euXRs1BMmfhvntsMMOsccee0Qmk4kkSSJJkigpKcm+v/Kzn/0sbrzxxqiuro77778/ezk08qep519ENFpHrDkeXXOsctFFF8Wvf/3reO655/JWN5/I9fyrq6uLsrKy+NOf/tRoXdGnT5/Ycssts/Mp+dUwvx133DE+97nPRceOHSMiYo899oi33norbr311njyySfjT3/6U7z88stx9dVXR4cOHeK6667Lc/U0NX/2798/Lr744nj33Xdj8ODBEbF2Ph0yZEj07t270ckrNJBAM1VVVSWDBg1KLrnkkuxYXV1do23q6+uz//2nP/0p6d27d9KrV69kypQpm61Omtac/JIkSZYtW5bstNNOyQMPPJBcffXVSefOnZPJkydvzlJZR0ufe0mSJBdddFEyYsSI5MMPP9wsNZLbxvK7/fbbk0wmk+y8887JCy+8kCRJkixfvjx5+OGHk+nTp2/2emmsqfxqa2s3+DPf/va3k3322SdZuHBhO1fHxjSV36pVq7L//Zvf/CbZZZddkh49eiQPPvhg8pe//CW5+OKLk2233TZ555138lEyDbTk9a++vj7ZZ599kpNPPjlZuXLlZq2TpjVn/vz617+eHHnkkcmMGTOSefPmJZdeemkycOBAr38FoKn8VqxY0WibdZ9rZ511VvKlL30p+fjjjzdLjTRt2rRpyU477ZTsueeeSb9+/ZJRo0Yl99xzT/b2U089NRk2bFhy3nnnJW+99VYyd+7c5IILLkg+85nPJPPmzctj5SRJ0/n9/ve/b7RNw9fCX/3qV0nHjh2Tnj17Ji+99NJmrpZ1NSe/JEmShQsXJv3790/+8Y9/JJdffnnSuXPnZNKkSXmomIaak9+6771ceOGFyejRo5O5c+duzlJpwsby+8EPfpBkMplk0KBB2fdeFi5cmNx0003J22+/na+yWa2p/H73u99lb1/3uZckSTJu3LjkkEMOSZYuXbo5S00NjT+a5b333ktGjhyZ7LzzzslnP/vZ5LLLLsve1tQbMHV1dcl5552XdO/ePXn55Zc3d7msoyX51dXVJfvtt1+y2267JV27dnXwmWctyS5JkuT1119Pzj///KR3794a7gVgQ/k1fPPzu9/9rgZ7AWpufmu89tpryXnnnZf07t07mTp16uYslSZsKL+Gb14/9dRTyZgxY5ItttgiKS8vT4YPH568+OKL+SiZBlr6+pckSfLNb34z2WuvvSz8CkBz8/vv//7v5IADDkg6deqUfP7zn0+23357z78CsKH8Gn54Ys0bMP/4xz+SioqKpEePHl7/8uytt95Ktt122+SCCy5IFi1alEyePDkZM2ZMcvrppyfLly/PbnfZZZclX/jCF5JMJpPsscceyVZbbeW5VwA2lF9tbW2jNz3r6+uT2traZOzYsUnv3r2TV155JY+VkyQty2/JkiXJ7rvvnhx44IE+bF0gWpJfkiTJu+++m3znO9+x9isQG8pvzbHLqlWrkrPPPjt5/vnnkyRZexyTa23B5tOa59+ECROSPn36JNOmTctT1YVP44+Nqq+vT6655prkiCOOSB577LHk0ksvTYYOHbrBN0CnTZuWDBw40MFLAWhpfqtWrUr22WcfBy8FoKXZvfLKK9lPm8ku/5qT37Jly/JYIRvS0ufftGnTkvPPPz8ZNmyYpnsBaE5+6565Mn369GT27NnJ/PnzN3e5rKM1x55JkiSLFy/2ad0C0Jz8Gp4p9vLLLye/+tWvkj/84Q/Ju+++m4+SaaClz7+6urrkoYceSvbee2+vf3m2YsWKZPz48clXv/rVRq9xv/rVr5K+ffuudzbfvHnzkv/7v/9Lnn766eT999/f3OWyjpbmlyRJ8vzzzyeZTMaHdQtAS/NbtGhRssMOOyR9+vQxdxaAluY3adKk5Oyzz05GjBghvwLQmvmTwtHS/J577rnk9NNPT4YOHepM943wHX9sVCaTiVNOOSW23HLLOOSQQ2LEiBEREXHPPfdEkiRx6aWXRmlpaaPvXRk2bFhUVVX5jocC0NL8OnToEN/4xjfiC1/4QgwZMiTP1X+6tTS73XbbLU466aQ4//zzY8CAAXmunubk17lz50bf9UDhaOnzb9iwYXHKKafEBRdckP2+KvKnOfl16tSp0ffdDh482HfCFYjWHHvW1tZGjx49HHsWgObk17Fjx1i1alV07NgxPvvZz8ZnP/vZPFfNGi19/pWUlMRXvvKVOOigg6J79+55rv7Trb6+PrbddtvYddddo1OnTtnvOt1nn31iiy22iFWrVmW3Kykpib59+8Zhhx2W56pZo7n5NTR69OhYsGBB9OrVa/MXTCMtza9nz57xzW9+M4477rjs94WTPy3Nb9SoUbFs2bK4+OKLY+utt85T1azRmvmzqe8OJz9amt+ee+4ZS5YsiR/+8IcxcODAPFWdEnloNlIEPvjgg+ynP3/wgx9kxx988MHsJ3ibuvYuhSFXfn/4wx/yWBXNIbt029Dc6fIShc/zL908/9JNfumWK78HHnhgo9+bSv7JLz0afj/tmvX4hx9+mAwZMiR57733sre5rGdhak1+3ncpHM3Nzxmaham5+bmyWWHy+pdunn/twxl/NOnDDz+M999/PxYuXBgHH3xw9myU+vr6yGQysfXWW8cZZ5wRERH33ntvJEkSixcvjhtvvDFmzpwZ22yzjU/N51Fb5Ed+yC7d5Jdu8ks3+aWb/NJNfukmv/Rak92CBQviS1/6UgwaNCgiotEVJRYvXhwLFy7M/szEiRPjF7/4RUyfPj369Olj3Z5H8ks3+aWb/NJNfukmv80kby1HCtbUqVOTHXbYIfnMZz6T9OzZMxk6dGhy9913Z7/zpq6uLtt9/+CDD5KJEycmmUwm6d27t857AZBfesku3eSXbvJLN/mlm/zSTX7pJr/02lh2a3J74403kv79+ycLFixILr/88qRLly6yKwDySzf5pZv80k1+6Sa/zUfjj0Y++uijZOjQoclFF12UvP3228msWbOSE088Mdl1112TSy+9NPnoo4+SJGl8OYmTTz456dGjR/Lqq6/mq2xWk196yS7d5Jdu8ks3+aWb/NJNfukmv/RqbnZJkiRz5sxJdt999+TEE09MOnXq5E2zAiC/dJNfuskv3eSXbvLbvDT+aOTVV19Ndtxxx/WeTN/97neTYcOGJT/+8Y+Tmpqa7Pjtt9+e9OrVyzWSC4T80kt26Sa/dJNfuskv3eSXbvJLN/mlV0uyq6qqSjKZTNKlS5fkpZdeykO1rEt+6Sa/dJNfuskv3eS3eZXk+1KjFJZVq1ZFbW1tfPzxxxERsWzZsoiIuPrqq+Oggw6KX/7yl/HWW29ltz/qqKPixRdfjN133z0v9dKY/NJLdukmv3STX7rJL93kl27ySzf5pVdLsuvdu3ecffbZ8eKLL8bIkSPzVTINyC/d5Jdu8ks3+aWb/DavTJIkSb6LoLDsueeescUWW8Rf//rXiIhYsWJFlJWVRUTE6NGjY8iQIXHPPfc0+sJNCof80kt26Sa/dJNfuskv3eSXbvJLN/mlV3Ozi4hYvnx5dO7cOW+1sj75pZv80k1+6Sa/dJPf5uOMv0+5mpqaWLJkSVRXV2fHbrnllnj11VfjP//zPyMioqysLGprayMiYv/994+ampqICAu/AiC/9JJduskv3eSXbvJLN/mlm/zSTX7ptSnZRYQ3zfJMfukmv3STX7rJL93kl18af59iVVVVceyxx8YBBxwQu+66a/z2t7+NiIhdd901brzxxvjzn/8cJ5xwQqxatSpKSj75U/noo4+iW7duUVtbG04WzS/5pZfs0k1+6Sa/dJNfuskv3eSXbvJLL9mlm/zSTX7pJr90k1+6yS//OuS7APKjqqoq9t9//zjllFNi1KhR8cILL8Rpp50W5eXlsfvuu8dXvvKV6NatW5x99tkxfPjwGDp0aHTq1Ckefvjh+Oc//xkdOvjTySf5pZfs0k1+6Sa/dJNfuskv3eSXbvJLL9mlm/zSTX7pJr90k1+6ya8w+I6/T6EFCxbE1772tRg6dGjceOON2fGDDjoohg0bFj/72c+yY0uWLIkrrrgiFixYEJ07d45vfetbUV5eno+yWU1+6SW7dJNfuskv3eSXbvJLN/mlm/zSS3bpJr90k1+6yS/d5Jdu8isc2qefQqtWrYpFixbF8ccfHxER9fX1UVJSEoMGDYoFCxZERESSJJEkSXTv3j2uueaaRtuRX/JLL9mlm/zSTX7pJr90k1+6yS/d5Jdesks3+aWb/NJNfukmv3STX+HwaH4KbbnllvHf//3f8YUvfCEiIurq6iIiYuDAgdknWCaTiZKSkkZfvpnJZDZ/saxHfuklu3STX7rJL93kl27ySzf5pZv80kt26Sa/dJNfuskv3eSXbvIrHBp/n1I777xzRHzSTe/YsWNEfNJt/+ijj7LbXHXVVXH77bdHbW1tRHgCFhL5pZfs0k1+6Sa/dJNfuskv3eSXbvJLL9mlm/zSTX7pJr90k1+6ya8wuNTnp1xJSUkkSZJ9cq3pvE+cODGuuOKKeOmll3yhZgGTX3rJLt3kl27ySzf5pZv80k1+6Sa/9JJduskv3eSXbvJLN/mlm/zyyxl/RJIkERHRoUOH2G677eLaa6+NH//4xzF58uQYMWJEnqtjY+SXXrJLN/mlm/zSTX7pJr90k1+6yS+9ZJdu8ks3+aWb/NJNfukmv/zRUiXbbe/YsWPcdttt0aNHj3j66afjc5/7XJ4roznkl16ySzf5pZv80k1+6Sa/dJNfuskvvWSXbvJLN/mlm/zSTX7pJr/8ccYfWYceemhERDzzzDMxatSoPFdDS8kvvWSXbvJLN/mlm/zSTX7pJr90k196yS7d5Jdu8ks3+aWb/NJNfptfJllzviVERE1NTXTr1i3fZdBK8ksv2aWb/NJNfukmv3STX7rJL93kl16ySzf5pZv80k1+6Sa/dJPf5qXxBwAAAAAAAEXApT4BAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAADTp8MMPj969e8ecOXPWu23x4sWx9dZbx1577RX19fV5qA4AAIB1afwBAADQpJtuuilWrlwZ559//nq3XXTRRTFv3ry49dZbo6TE0hIAAKAQWJ0BAADQpEGDBsWll14a99xzTzz22GPZ8UmTJsXNN98c48ePjxEjRrRrDcuXL3dGIQAAQDNp/AEAAJDT+PHjY/jw4XH22WfH8uXLo66uLs4666zYYYcd4tJLL43XX389jj/++OjTp0907tw5Ro0aFX/84x8b3ceCBQtiwoQJMWzYsNhiiy2iR48ecfjhh8fUqVMbbff3v/89MplM3HvvvXHxxRfHwIEDo2vXrlFdXb05dxkAACC1OuS7AAAAAApXhw4d4tZbb4199tknLr/88hgwYEC8+OKL8eijj8aMGTNi3333jYEDB8aFF14Y3bp1i9/97ndx9NFHxx/+8Ic45phjIiLinXfeiQcffDBOOOGEGDRoUMyZMyduueWWOOCAA6Kqqiq22WabRr/z8ssvj06dOsWECRNixYoV0alTp3zsOgAAQOpkkiRJ8l0EAAAAhe3cc8+NW265JcrKyuLLX/5y3H333XHwwQfHRx99FJMmTYqysrKIiEiSJPbbb7+YO3duvPnmmxERsWLFiujYsWOj7wL817/+FUOHDo3vf//7cckll0TEJ2f8HXTQQbHTTjvFK6+8El26dNn8OwoAAJBiLvUJAADARv3oRz+Kvn37RklJSfz0pz+NBQsWxF//+tf46le/GkuWLIl58+bFvHnzYv78+XHooYfG9OnTY9asWRERUVZWlm361dXVxfz582OLLbaIXXbZJV588cX1fteYMWM0/QAAAFrBpT4BAADYqB49esQuu+wS8+bNiy233DKef/75SJIkLrnkkuwZe+v66KOPYuDAgVFfXx833nhj3HTTTTFjxoyoq6vLbtO3b9/1fm7QoEHtth8AAADFTOMPAACAFquvr4+IiAkTJsShhx7a5DZDhgyJiIgrr7wyLrnkkjj99NPj8ssvjz59+kRJSUmcd9552ftpyNl+AAAAraPxBwAAQIvttNNOERHRsWPHOPjggze47f333x8HHXRQ/OpXv2o0vmjRoujXr1+71QgAAPBp4zv+AAAAaLEBAwbEgQceGLfcckt8+OGH690+d+7c7H+XlpZGkiSNbv/973+f/Q5AAAAA2oYz/gAAAGiVysrK2G+//WLYsGHxzW9+M3baaaeYM2dOPPvsszFz5syYOnVqREQcddRR8cMf/jBOO+202GeffeLll1+O3/72t9mzBgEAAGgbGn8AAAC0Snl5eUyePDkuu+yyuPPOO2P+/PkxYMCA2H333WPixInZ7S666KKoqamJu+++O+6777743Oc+Fw8//HBceOGFeaweAACg+GSSda+3AgAAAAAAAKSO7/gDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgC/z9rQRuQd6e6yQAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Combine the two series into a single DataFrame for plotting\n",
+ "comparison_plot_df = pd.DataFrame({\n",
+ " 'Capture Time': observations_per_capture_year,\n",
+ " 'Detection Time': observations_per_detection_year\n",
+ "}).fillna(0).astype(int)\n",
+ "\n",
+ "# Create the grouped bar chart\n",
+ "ax = comparison_plot_df.plot(kind='bar', figsize=(18, 8), width=0.8, color=['skyblue', 'lightgreen'])\n",
+ "\n",
+ "# Set the title and labels\n",
+ "plt.title('Comparison of Observations per Year: Capture Time vs. Detection Time', fontsize=16)\n",
+ "plt.xlabel('Year', fontsize=12)\n",
+ "plt.ylabel('Number of Observations (Log Scale)', fontsize=12)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.legend(title='Timestamp Type')\n",
+ "plt.grid(axis='y', linestyle='--', alpha=0.7)\n",
+ "plt.yscale('log') # Use a logarithmic scale for better visibility\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e5a818b9",
+ "metadata": {
+ "id": "e5a818b9"
+ },
+ "source": [
+ "### Asset distribution by year\n",
+ "\n",
+ "This cell performs an analysis and visualization to compare asset distribution by year. First, it filters the comparison_df to isolate assets associated with only one unique capture_year and, separately, those with only one unique detection_year. It then counts the number of these \"single-year\" assets for each year and plots the results on a bar chart for comparison."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "ea7d3cc6",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 633
+ },
+ "id": "ea7d3cc6",
+ "outputId": "019bac18-170c-4a8b-9058-b014a4183e60"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABv4AAAMWCAYAAAA53PFgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA1OJJREFUeJzs3Xd0VNXax/HfTEJ6JaGXBOlRCC1UlSpNQWkCijTb1aAgiGID8VVBrw004rVAwIqN4qWoIEVA6UUvIIIBFAIEJAmEEpLZ7x+YMUMyIRMSJozfz1qsRfZpz3P2mT2TebLPsRhjjAAAAAAAAAAAAABc0azuDgAAAAAAAAAAAADApaPwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAASq1vv/1Ww4YNU506dRQSEiJfX19VqlRJN9xwg1599VWlpKS4O8Qryt69e2WxWBQdHe3uUEqFNWvWqHPnzipbtqysVqssFosSExMLtW1ycrLGjRunRo0aKTg4WD4+PqpcubIaN26su+++W4mJicrOznbYZujQoS4do6SU9HXw5JNPymKxKDY2VpmZmU7Xy8zMVGxsrCwWi5588skSieVy+PLLL2WxWGSxWDRmzBh3h+MxMjIyNHXqVHXt2lWVK1eWr6+vgoKCVLduXQ0aNEjz5s2TzWZzd5geoV27dvZr2JV/kvT000/LYrHo6aefdm8SHurCc261WhUaGqqoqCh16dJFTz75pLZv3+7uMN0uOjpaFotFe/fudXcoeeTE5sq/nPfn0vK5AQAAXHm83R0AAADAhY4ePaqBAwdqyZIlks5/adK+fXsFBgbq0KFDWrNmjZYsWaLx48dryZIlatGihZsjxpXm4MGDuvHGG5WWlqZrr71W0dHRslqtqlWr1kW3XbNmjW688UalpqYqKChIzZs3V4UKFXTy5En99NNPevfdd/Xuu++qb9++CgoKugzZlC4TJkzQggULtGXLFk2YMEGTJk3Kd72nn35a27ZtU6NGjTRhwoTLHGXxee+99+z//+CDDzR58mSVKVPGjRG5Zvny5Wrfvr3atm2r5cuXuzscSdI333yjQYMGKSUlRd7e3mratKmuu+46ZWVlac+ePfrwww/14YcfKi4uTuvWrXNbnDnFL2OM22IoDl27ds33DwFmzpwpSerSpYsqVqx4maNCbrn7ICMjQ0eOHNGaNWv0zTff6LnnnlPv3r01bdo0lS9fvliOV5rGhaFDh2rmzJmaMWOGhg4d6tZYiqJv3746evSoQ9vJkyf1xRdfSJL69OmT57NCZGTkZYsPAAB4Jou50n9LAQAAHiUtLU0tWrTQL7/8onr16untt9/Wdddd57DO2bNnNXPmTE2YMEHTpk3TLbfc4p5grzDnzp3Tnj17VKZMGdWsWdPd4bhVYmKihg0bpttuu00ffvhhobc7e/asatasqQMHDui2227TtGnTFBIS4rDOzp07NX36dE2cOFH+/v729uTkZKWlpalSpUoKDQ0ttlxctXfvXtWoUUNRUVElNjvip59+UrNmzZSdna2VK1eqdevWDst//PFHXXvttfL29taGDRt0zTXXlEgcJe3AgQOKioqSJJUrV06HDh3SF198od69e7s5ssIrTV/wS9KCBQt08803Kzs7W8OHD9ekSZPyFDP279+v559/Xp9++qn+/PNPN0XqOYU/Z3LyW7Zsmdq1a5fvOkePHtXRo0cVGRlJsaIEFNQHWVlZ+vTTTzV69GgdPnxY9erV05o1axQeHn7Jxy1N40JhCn979uzRuXPnVLNmzSviDy9y3oclKSkpyekM/NLyuQEAAFx5uNUnAAAoVR544AH98ssvio6O1urVq/MU/STJ19dX99xzj7Zs2aL69eu7IcorU5kyZVSvXr1/fNFPOl84kKTatWu7tN2qVat04MABeXt76+23385T9JOkevXq6cUXX3Qo+klSpUqVVK9evX/El3cNGjTQM888o+zsbA0ZMkSnTp2yLzt9+rSGDBmi7OxsPfPMM1ds0U+S/ZaunTt31r/+9S9JjjMA4Zpjx45p0KBBys7O1oMPPqj33nsv3xlM1atX11tvvaW5c+de/iDhIDIyUvXq1aPo5wbe3t667bbbtG7dOkVGRmrnzp16+OGH3R2WW9SsWVP16tW7Iop+rvgnfW4AAADFi8IfAAAoNX777Td99NFHkqRXXnlFZcuWLXD9ChUqqG7dunnaP/nkE3Xs2FFly5aVr6+voqKiNHz4cO3atSvf/eR+NsyiRYvUrl07hYaGKjw8XDfddJN++ukn+7offfSRWrVqpeDgYIWFhal3797as2dPnn0uX75cFotF7dq106lTp/T444+rVq1a8vPzU+XKlXXnnXfqwIED+cazZMkSPfDAA2rUqJEiIyPl6+urqlWrqn///lq/fn2+2+R+ztL+/ft15513qlq1aipTpoz9L+QLerbbr7/+quHDh6tGjRr2Z2lFRUXpxhtv1IwZM/I95tdff62bbrpJ5cuXtz/jrn///tqwYUO+6+c8R2r58uXasmWLevfubc8vJiZGL7/8cpFnzhS2zxMTE2WxWOy3lpw4cWKeZ+oU5PDhw5KkoKAgBQYGuhSjs2f15O67lJQUxcfHq1q1avLx8VG1atX0wAMPKDU1Nd99GmM0ffp0NWvWTAEBAYqIiFC3bt20Zs0ah2vQFadPn9bLL7+sli1bKiwsTH5+fqpbt64eeeQRHTt2rND7GTt2rNq0aaPdu3c7fBn96KOPateuXbr22msd2o8fP64JEybYn5sYEBCgBg0a6Nlnn3UoHOY4ceKE3nnnHfXu3Vu1a9dWYGCgAgMD1aBBAz3xxBNOz1nu1/u8efPUoUMHlS1b1n5tFlbOuZekO++8U8OGDZPVatXXX3/t9LUtnX999+jRQxUqVFCZMmUUHh6u2rVra9CgQVq5cqXDumfPntW///1vNW3a1P4syYoVKyouLk6PPPJIvrPdXOm/du3aqX379pKkFStW5PuMqaLGURRvvPGGUlNTVb58eb344osXXf/66693+Hn79u2aMGGC2rRpoypVqsjHx0cRERHq1KmTPv3003z3UZSxOuc1m+PC53PlzKS92PPvnL1GL4xp/Pjxql+/vgICAvKMUxs3btTtt9+u6tWry9fXV2XLllWXLl20cOHCi56/4uAsx5yxdujQoUpLS9Po0aMVHR0tPz8/1a5dWy+88IL9GY0HDhzQvffeq2rVqsnX11d169bV66+/XuBxP//8c3Xt2lXlypWTj4+PqlSpokGDBrn0vLudO3fKYrEoPDxcZ86ccbpes2bNZLFYNG/ePHtbcnKyRo4cqTp16sjPz08BAQGqVq2aOnbsqJdeeqnQMRSH6tWra+LEiZKkWbNm2d+nciuJcSHH0qVL1bt3b1WqVEk+Pj4qX768evXqpR9++MFpzKdOndJrr72ma6+9VuHh4fb37R49etg/B+Z8Zsm55eywYcMcYsl9zRX0jL9Tp05p8uTJatKkif295eqrr9aTTz6p48eP51k/92clY4zefvttNW3aVIGBgQoNDVXnzp0LzK04FeZzw8GDB3XXXXepcuXK8vf31zXXXOPwByg7d+7UbbfdpooVK8rPz0+xsbGaPXu202NmZWXp3XffVbt27eyfqWrUqKH77rtPv//+e0mlCgAAipsBAAAoJaZMmWIkmbCwMJOVleXy9jabzQwePNhIMt7e3qZDhw5mwIABpk6dOkaSCQgIMIsWLcqzXVRUlJFkxo0bZywWi2nTpo259dZb7duFhYWZ3bt3m7Fjx9r327dvX1OtWjUjyVSuXNn8+eefDvtctmyZkWRatWplWrZsaQICAkz37t1Nv379TKVKlYwkU7FiRbNr16488dSsWdP4+PiYxo0bm549e5revXubmJgYe16ff/55nm0mTJhgJJnbbrvNlC1b1lSsWNH06dPH9O7d24wZM8YYY0xSUpKRZKKiohy2/emnn0xISIiRZOrWrWt69+5t+vXrZ1q1amWCgoJMbGxsnuM9+eSTRpL9fA0cONA0atTISDJeXl7mvffey7NN27Zt7efZx8fH1K9f3wwYMMC0bdvWeHl5GUlm5MiRBfRwXq72+ffff2+GDBliYmNjjSQTGxtrhgwZYoYMGWI/TwX5/vvvjSQjycyYMcOlWIcMGZLvdjl9N3z4cFO1alVToUIF07t3b9O9e3cTGhpqJJm4uDiTmZmZZ5/33XefkWSsVqtp27atGTBggLn66quNl5eXGTNmjJFk2rZt67CNs+vAGGMOHDhgGjRoYCSZsmXLmk6dOplevXrZXyPR0dFm7969hc559+7dJjAw0EgyX3/9tfnuu++MxWIxgYGBZvfu3fb1/ve//9lfT5UqVTJdu3Y1PXr0MBUqVDCSTKNGjUxqaqrDvnP6oly5cubaa681/fv3N507dzYRERFGkqlVq5Y5evRonphychkxYoSRZJo1a2YGDhxo2rZta1auXFno3JYuXWokmcjISHvf3HDDDUaSee655/LdJjEx0VgsFmOxWEyLFi1M//79Tc+ePU2TJk2Ml5eXw/WfnZ1tOnbsaCSZkJAQ061bNzNw4EDTqVMnew6bN2922L+r/Tdp0iTTpUsXI8lUqFDB/lrI/XooShwzZsxweo0VpHHjxkaSeeCBB1zaLsedd95pJJl69eqZLl26mP79+5tWrVoZq9VqJJmHHnoozzZFGavnzJljfz1LcjhvQ4YMMSkpKcaYv1/bEyZMyDfenGNf+BrNaW/RooWJi4szgYGBplu3bqZ///6mU6dO9vVee+01e26NGjUyffv2Nddee63x8fExkszEiROLdB5z5OS3bNkyp+s4yzHnGrj55ptN/fr1Tfny5U2fPn1M586djb+/v/01uHv3blOxYkVTrVo1c+utt5r27dvb3w8mT56c53jnzp0zt956q5FkfH19TevWrU2/fv3sY7q/v3++7/POtGrVykgyH3/8cb7Lt23bZn99nDt3zhhjTHJysqlcubKRZKpXr25uvvlm079/f3PdddeZsmXLmtDQ0EIf/2IK0wfGGHP8+HFjsVjyzaUkxoUcOe8zVqvVNG/e3PTr18+0aNHCWCwW4+XlZaZPn54n1v3799s/0wQEBJgbbrjBDBgwwFx33XUmNDTUPm6kpKSYIUOGmJo1axpJpk2bNg6xzJkzx77PnFySkpIcjnXs2DH7Z5OQkBDTs2dP06dPHxMZGWkkmRo1auTZJvd75JAhQ0yZMmVMhw4dHD4X+vr6mh9//LHAPilIzjHyizm3i31uGDZsmKlYsaKpXr16ntfPSy+9ZH744QcTHBxs6tatawYMGGC/3iWZTz75JM/x0tPTTbt27YwkExQUZNq2bWv69u1r6tataySZiIgIs2nTpiLnDQAALh8KfwAAoNS44447jCTToUOHIm0/bdo0+xfxub+Ittls9i9JwsLCzJEjRxy2y/nCyNfX1yxZssTenpWVZfr162ckmWuuucZERESYLVu22JdnZGSY1q1bG0nm2Wefddhnzhe3OQWIffv22ZedPn3a9OnTx0gyLVu2zJPHnDlz8hQSc9q9vb1NRESEOXXqlMOynPwkmUGDBpkzZ87k2d5ZwWfYsGH55mCMMadOnTIrVqxwaFu0aJGRZPz8/Mw333zjsOzdd981kkyZMmXMzz//7LAsp/Anybz11lsOy5YuXWr/ovD333/PE4czRe3zi30h70x2dra9OJFTkHviiSfMnDlzLhr3xb7Ak2SGDh3q0Hf79+83VapUMZLMRx995LDdvHnz7F/OrV692mHZyy+/bN9nYQt/NpvNtGnTxkgyd955p0lPT7cvO3funP0L3vbt21/kLDl68803jSRTpUoV+2tt2rRp9uWnTp2yf7H75JNPmrNnz9qXZWRkmIEDB9q/4Mzt999/N0uWLDHZ2dkO7RkZGfZi8P33358nnpwYvLy8zLx581zKJbfbbrvNSDKjRo2yt3388cdGkqlZs6ax2Wx5tqlRo4aRZL7//vs8yw4fPuzwheqKFSuMJNO4cWOHvsixfv16h8JmUfvPWfGpqHEYU7TC37lz5+xFrFmzZhV6u9yWL19u9uzZk6d9586dpmrVqkaSWbt2rcOySxmrc7Zz5lILf5JMw4YNTXJycp5tFy9ebCwWi4mMjMwzRm/bts2e7/Lly53GdzHFUfiTZHr06GEyMjLsyzZu3Gi8vb2N1Wo1MTEx5l//+pe9qGaMMXPnzrUXanJvZ4wxjz/+uL0o+ttvvzks++yzz4yXl5cJDw83x48fL1SO77zzjpFkunTpku/yhx56yEhyKHhNnDjRSDL33HNPntd5Zmamw+eIS1XYwp8xxtSqVcs+juYoqXHBGGPefvtt++tm69atDstWrFhhgoODjY+Pj0PRPDs72zRr1sxIMp07d87z3nz69GmzYMEChzZn7525OSv89e/f33695B6nTpw4Ybp162YkmdatWztsk7soFxUVZX755Rf7sqysLDN8+HB7/EVVXIU/SXleP/PnzzeSTHBwsImKijLPPvusw3X62muv2fvtQjnvazfddJM5fPiww7JXX33VSDK1a9cu0h/nAQCAy4vCHwAAKDW6du1qJJkBAwYUafuc4sHUqVPzLLPZbKZhw4ZGyjsbJ+cLo7Fjx+bZbtOmTfYvVxISEvIs/+KLLwr80kySmTt3bp7tDh8+bAICAoykPEWbguQUQS78YiznS6CyZcvmmRmVw1nBp3v37kZSof+KO2f2z+jRo/NdftNNNxlJ5u6773Zozyn89e7dO9/tcvrflS/9i9rnRS38GWPMwYMH7V8YXvivTp06ZvLkyXkKs8Zc/Au8qlWr5vmS2xhjJk+ebKTzMwJz69Chg5FkHnvssXzjjIuLc6nwl1PQbdSokcOXiDmys7PNNddcYySZn376Kd9jOtO5c2f7ObrwC/ac4u1NN92U77YnTpww5cuXN97e3vkWxPOTkZFhvL29Tbly5fIsy3m9X3g+XXH8+HHj5+eX51ycOXPGlC1b1ukX9QEBAYWeDfTpp58aSebBBx8s1PpF7b+LfcHvahzGGPPll1+aunXruvRHHIcOHbJfI4sXLy70doX1n//8J99x/lLG6stR+HM2C7VFixZGUr4zwI35u9/69OnjNL6LKY7CX1BQUJ4CgjHG9OzZ00jnZ8ydPn06z/KcGWq5i5rHjh0z/v7+xs/Pz/zxxx/5xnP//fcbSeb1118vVI7p6ekmICDAWK3WPPvMzMw05cqVM5Ic/pAl5xhffvlloY5xKVwp/LVs2dJIMvfdd5+9raTGhezsbPusxw0bNuS7zosvvpinaJpT1K1UqZI5ceLERXMypuiFv3379hmr1WosFkuewqQxxvzxxx/2cTz3azt3UW7+/Pl5tktOTjbS+T8Wy28mfmEUV+HP2esn57NP8+bN8xSnz507Z3+fyv2HDtu3bzcWi8VUrlw53z/yMObvz4tfffVV4ZMFAABuwTP+AACAR/jjjz/sz9obMmRInuUWi0XDhg2TJC1btizffXTv3j1PW+3atQu1/ODBg/nuMywsTD179szTXr58eXXt2lWS8n2u2MGDB/XOO+9ozJgxuuuuuzR06FANHTpU//vf/yRJv/zyS77H69Spk0JDQ/Nd5kzz5s0lSffdd5++/vrrAp91lJWVpdWrV0uS/dmBF7rzzjslOT/PPXr0yLe9fv36klTg89FyK44+L4pKlSpp4cKF+vnnn/X888+rR48eqlKliiRp165dGjdunFq1auX0GXPOdOzYUQEBAXna8zsvWVlZWrNmjSTp9ttvz3d/t912m0vHX7BggSSpT58+8vb2zrPcarXan6mWc+zCevnll+3/v/D5VznH7d+/f77bBgUFqVmzZsrKysr3GZdr1qzRCy+8oPj4eA0bNkxDhw7V/fffLx8fH6WkpOT7DCdJ6tu3r0s55PbBBx/ozJkziouL0zXXXGNv9/X1tZ/33M9YytG8eXOlpaVp8ODB2rhxo/0ZZ/lp0qSJvLy8NH36dCUkJCg5ObnAmEqq/1yNQ5J69eqlnTt3aunSpYU+TnE5efKkPvvsMz3++OO655577GPnF198Icn52FnUsboklS9fXtddd12e9qNHj2rdunXy9/d3Op7mPDfQ1ddqcWvatKnKly+fpz3nvbN9+/by8/Nzujz3e+uyZct0+vRp+zMc8+Nq3sHBwerbt69sNptmzZrlsGzBggVKSUlR8+bNdfXVV9vbc94zx40bpy+//FInT54s1LFKWs54kvv5kyU1LmzevFkHDx5UzZo11bRp03zXya8vFi9eLOn8+1NQUFChj1cUK1eulM1mU+PGjdWwYcM8y6tUqaIuXbpIyv8zgre3t/21n1vFihUVHh6us2fPuvTc25JwsddPt27dHK4H6XxeOc9qzP36WrhwoYwx6tatm4KDg/M9XmkZVwAAwMXl/eQHAADgJuXKlZMkHTlyxOVtc4oiERERCgkJyXedmjVrOqx7oerVq+dpy/3FVH7Lc74ccVYsi46OzvOlS44aNWpIOl/Aym3ixIl67rnndO7cuXy3k6T09HSnx3PV2LFjtWrVKi1ZskRdu3ZVmTJlFBsbq+uvv14DBgxQXFycfd1jx47Zc82J/0JFOc+S7P1WUOExt+Lo80tx9dVXO3wZvGPHDr355ptKSEjQ1q1b9cQTTyghIaHQ+3PlvBw9etT+s7M+d/Va+O233yRJTz31lJ566qkC101JSZEk7dy5U5MnT86z/Nprr9Vdd91l/zn36+jCL3tzjnvHHXfojjvuKNRxpfPjRJ8+fbRq1aoCt0lPT1d4eHie9qK8VnLkFPWGDx+eZ9nw4cP1xhtv6IsvvtAbb7zhUIh/8803ddNNN+n999/X+++/r+DgYMXFxalDhw664447HK6BmjVr6tVXX9XYsWM1YsQIjRgxQlFRUWrVqpVuuukm9evXTz4+Pvb1i9J/heFqHEUVEREhq9Uqm81WpPcASfrqq680bNiwAr+ML2jsdHWsLmnOrtGkpCQZY3T69Gn5+voWuA9X+rokOBvXcsYBZ8vze2/NucaXLl3qtK9yuJL38OHDNWvWLCUmJuqxxx6zt8+YMUOS7H9AkuOOO+7Qt99+qw8//FB9+vSRl5eXYmJidO2116pv377q0KFDoY9dnI4ePSpJKlu2rL2tpMaFnP3u2bPHpb7Yt2+fJKlevXqFPlZR5bzvO/usIhX8GaFSpUoqU6ZMvtuFhITo+PHjhf68UlJK4vX13nvv5fuHK7m5e1wBAAAXR+EPAACUGk2bNtX777+vTZs2KTs7W15eXpf1+FZrwTdDuNjyojLG2P//5Zdf6umnn1ZQUJDeeOMNdejQQZUrV5a/v78sFosef/xxTZo0yWGb3Pz9/V0+fkBAgL799lutX79eixcv1po1a7RmzRpt2LBBr7zyiu6//36XClgXU1Ln0d3q16+v119/XVarVVOnTtXcuXNdOm/FfV4u9mXshXJmi1x77bX2L0OdySl4Hjp0SDNnzsx3ndyFv8Ict2vXrqpQoUKB60ZFRTnsf9WqVWrVqpUmTpyo2NhYhYeH27+orVy5spKTk4v1tSJJmzZt0pYtWyRJb7/9tj744IM861itVp0+fVoff/yx/vWvf9nb69evr19++UXffPONvvvuO61Zs0bff/+9vvvuOz3zzDN67733NGjQIPv6DzzwgG699VbNnz9fq1at0qpVq/TJJ5/ok08+0YQJE/T999+rUqVKkorWf4XlShxF5e3trYYNG2rLli1av379RYvAFzpw4ID69++v06dP65FHHtHtt9+u6OhoBQUFyWq16ptvvlGXLl2cXg+FcSnb5qegGZ+S82s0Z7ugoCD16dOnWGMqbsX5vpqTd61atdSmTZsC13WlsHT99derZs2a2rVrl9asWaPWrVvryJEjWrhwofz8/DRgwIA8MX/wwQd6/PHHtWDBAq1evVqrV6/WtGnTNG3aNPXo0UNz5sy5rJ9hjh8/rqSkJElSgwYN7O0lNS7k7LdixYr2WXPOREZGFnq/pcmV8FmlJF5fjRo1UmxsbIHrtmjRotD7BQAA7kHhDwAAlBo33XSTRo8erdTUVM2fP1+9evUq9LY5t/06duyY0tPT850BlvPXzM5uEVYS9u7de9FlVatWtbd9+umnkqTnnntO99xzT55tfv3112KNL7e4uDj77L6srCzNnTtXgwcP1ptvvqm+ffuqffv2ioiIkK+vr86ePavffvst39tnXa7zXFr7vHPnzpo6dap99kVJyN0P+/btU0xMTJ51Crr28lOtWjVJ0s0336yHH364UNu0a9fukosh1apV086dO3XnnXcW+vabGRkZWrhwoaxWqxYuXKiwsLA8yw8dOnRJcTmTeybE5s2bL7pu7sKfdL7A1b17d/utg9PT0/XKK69o4sSJuvfee9WrVy8FBgba169QoYLuvvtu3X333ZLOz7IcPny4fvjhB40bN85eeC1K/7misHFciptvvllbtmzR7Nmz9e9///uis9ly++qrr3T69Gn16tVLL7zwQp7lFxs7XR2rCyNnJuSJEyfyXZ4z+8lVOX1tsVg0ffr0K6JAURxy8q5bt64SExOLbb8Wi0VDhw7VU089pRkzZqh169b64IMPlJWVpVtvvTXP+JIjJiZGMTExGjt2rIwx+u6773Tbbbfpq6++0qxZs/LMFCxJH330kYwxKlOmjNq3b29vL6lxIWe/ERERLvVFzgy0nTt3FlsszuS87+d8DsiPOz4jlFY5fdqmTRu98cYbbo4GAABcqn/GbwgAAOCKULNmTQ0cOFCSNGbMGP35558Frn/kyBH785qqVq1q/2v2/L6EMsbY23N/KVbSUlNT9dVXX+VpT0lJsT/rJueZKZLsOeee2ZTjyJEj+vbbb0sm0At4e3urb9++9r/kz5nh5O3trWuvvVZS/udZkqZPny6p5M+zO/q8MEWu/fv32+MrKWXKlFGrVq0knf/CNz8ff/yxS/vs1q2bJOmzzz4r9plNhTluTtG7MNLS0pSdna2QkJB8v5T/4IMPSiSH06dP28/3okWLZIzJ99/x48fl6+urDRs2aNu2bQXuMyQkRE8//bTCwsJ06tQp7dq1q8D169Wrp0cffVTS369Lqej9l1OcysrKKvQ2BcVxKR544AGFhobqyJEj9n0X5Pvvv7f/v6Cx0xjj9HWSw9WxWpJ9dqmzc5dTTNixY0e+y3Oev+aqypUrq2HDhjpx4oQ9tn+Cjh07ysfHR8uXLy/y7WCdGTp0qKxWqz799FOdOnXK6W0+nbFYLOrYsaP9GZ/F9ZoojP379+vpp5+WdD6PnNumSyU3LsTFxSkyMlLbt2+3P3u4MHKemffxxx8rIyOjWGJx5vrrr5fVatWWLVu0devWPMuTk5Ptr5/L+bmwtMq5VubPn+/2W5gCAIBLR+EPAACUKq+//rpq1aqlpKQkXXvttfk+vyszM1PTp09X48aNHb5Qzflr9v/7v/9z+JLHGKNnn31WW7ZsUVhYmH3GyuUyZswYh2dDnT17VvHx8crIyFDz5s0dbllWv359SedvIZiZmWlvT0tL05AhQ5SWllbs8b355pv2Ampuhw4d0oYNGyQ5fpk+ZswYSdK0adO0dOlSh20SExM1f/58lSlTRiNHjiz2WC90ufv8q6++0i233KJvv/1W2dnZeZYvX77c/gXshbeHK24PPvigJGnq1Kn68ccfHZZNmTJFa9eudWl/N998s+Li4rRu3ToNGzYs32f4HD9+XG+99ZbLX8AW5J577lFUVJQ+++wzPfroo/nOjjp06JDeeecd+88VKlRQeHi4UlNT9f777zus++OPPzo8p6s4ffHFF0pNTVWlSpV0ww03OF0vLCxMPXr0kPR3IfzUqVN65ZVX8j2v33//vVJTU+Xl5WUvGH/33XdauHBhnmd9GmP03//+V5Lj67Ko/ZdzvF9//TXf54q6GockzZkzR/Xq1VPHjh3zOz1ORUREaNasWbJarZoyZYruuuuufAs8Bw4c0IgRI3TLLbfY23LGzs8//1zJycn29uzsbI0fP15r1qy56PFdGaulv8+ds8JHhw4dZLVa9fXXX2vFihX2dmOMpk6dqi+++OKiMTnz7LPPSjpfmMqvYGmM0dq1a/XNN98U+RilTYUKFfTAAw8oIyNDPXr00E8//ZRnnbNnz2r+/PkuzyirWrWqbrjhBqWnp+vxxx/Xzz//rOrVq+f7vL5Zs2Zp48aNedpPnDih5cuXS8r7mujYsaPq1aunOXPmuBRXQbKysvTxxx+rRYsWOnr0qGJiYvTiiy86rFNS40KZMmU0YcIEGWPUq1evfD+rZWdn67vvvnN4f+rZs6caN26sgwcPql+/fnmex3nmzBktWrTIoe1irzNnqlevrn79+skYo3vvvdfhWBkZGbrnnnt05swZtW7dWq1bt3Zp356ocePG6tOnj37//Xf17t0731nQGRkZ+vDDD3X48OHLHyAAAHAJt/oEAAClSnh4uFavXq3+/ftr+fLluu6661SjRg01bNhQAQEBOnz4sNatW6eTJ08qJCRElStXtm977733as2aNXr//ffVrFkztW3bVuXLl9emTZv0yy+/yN/fXx999JHDX8OXtFatWslms6lu3brq0KGDAgICtGrVKh08eFDly5fXrFmzHNYfNWqUZs2apYULF+qqq65Sy5Ytde7cOa1YsUIBAQEaPny4vZBQXN5++23Fx8erRo0auuaaaxQSEqKUlBR9//33On36tDp06KCePXva1+/WrZuefPJJPfvss7rhhhvUpk0bVa9eXTt37tSmTZvk5eWlt956y+XniBXF5e5zm82mefPmad68eQoNDVWTJk1UsWJFZWRkaNeuXfYvmzt16qQnnniiWI7pTK9evXTPPffo7bff1rXXXqvrrrtOlSpV0k8//aQdO3booYce0quvvmqfLXExVqtVc+fO1Y033qiZM2fq888/V2xsrKpXr67MzEz99ttv+umnn5Sdna2hQ4fK27t4fpUIDAzUggULdNNNN+nFF1/U22+/rYYNG6pq1ar2GXA7duxQ+fLl7QVcLy8vjR8/Xg899JAGDx6shIQEXXXVVdq/f7/WrFmjQYMGaeXKlUW+laIzObf5HDRo0EWf3zV48GB9/vnn+uCDD/Tiiy8qMzNTY8aM0dixY9WgQQPVrl1bZcqU0d69e+1fjD/xxBP2a3Xbtm166KGHFBISoiZNmqhy5co6ffq0Nm3apH379ik0NFTPPPOM/XhF7b/q1aurWbNm2rBhgxo0aKBmzZrJz89PkZGRmjx5sstxSOf/UOGXX34p0qyRnj176r///a8GDx6s9957TzNnzlSzZs0UFRWlrKws7dmzR1u3bpUxRi1btrRv16NHDzVt2lQbN25UnTp11LZtWwUGBmrt2rU6ePCgHn300XxvAZrD1bFakvr06aOXXnpJnTp1UocOHRQcHCxJeuGFFxQREaFq1arpgQce0JQpU9SxY0ddd911Klu2rLZu3ar9+/dr3Lhxmjx5ssvnKCffKVOmaMyYMerZs6dq1aqlunXrKjQ0VCkpKdq6dat95mTnzp2LdIzSaPLkyUpOTtZHH31kfxbZVVddJW9vb/3xxx/asmWLMjIytGjRIpee8yedL6J+/fXXmjJliqS/ZwFe6Msvv9SQIUNUuXJlNWrUSOHh4Tp+/LhWr16ttLQ0XXPNNXn+2GTPnj3at29fkf94Z/LkyfYZ7KdPn9bhw4e1adMm+x9K9O3bV2+++WaeGdAlNS5I0ogRI7R//379+9//1nXXXaerr75atWrVkr+/vw4dOqQtW7YoNTVV06ZNs79WrVar5syZoy5dumjRokWqXr26rr32WkVEROjAgQPaunWrwsLCHIpOt9xyiyZOnKipU6fq559/VrVq1WS1WtWzZ0+Hzyb5SUhI0M6dO7V27VrVrFlT7du3l7e3t1asWKGUlBTVqFFDH374YZH6xBPNmDFDqampWrRokerWravY2FjVqFFDxhjt3btXW7duVWZmpnbs2HHRZ/ICAAA3MwAAAKXUokWLzODBg02tWrVMUFCQKVOmjKlYsaK54YYbzGuvvWaOHTuW73YfffSRadeunQkLCzNlypQx1apVM0OHDjU7d+7Md/2oqCgjySQlJeW7XJJx9rEpKSnJSDJRUVEO7cuWLTOSTNu2bc3JkyfN2LFjTY0aNYyPj4+pUKGCGTp0qNm/f7/Tfd5+++2mevXqxtfX10RFRZl//etf5tChQ2bChAlGkpkwYYLDNs7aCxPrf//7X3PfffeZxo0bm3LlyhkfHx9TtWpV065dOzNz5kyTmZmZ7/4WLVpkunfvbiIiIoy3t7epWLGi6devn1m7dm2+67dt29ZIMsuWLct3eWFycMbVPi/qsU6fPm2+/vpr88gjj5g2bdqYqKgo4+fnZ/z8/Ez16tXNLbfcYmbPnm1sNluebYcMGWIkmRkzZrgUS+5r6UI2m8288847pkmTJsbPz8+EhYWZzp07m5UrV5pZs2YZSWbgwIEO2zi7DnKcOXPGvPXWW6Z9+/b2vi1fvrxp1KiRiY+PN19//XVhTlW+xyzodZaenm5efPFF06pVK3s/VqpUycTFxZmxY8eaNWvW5Nlm7ty5pnXr1iYsLMwEBQWZZs2amTfffNPYbDanr+uLvd6d2b17t7FYLEaS+fnnny+6/rlz50y5cuWMJDN79mxz7tw589Zbb5mBAweaevXqmdDQUOPv729q1qxp+vTpY5YuXZrneE8//bTp2LGjqV69uvHz8zPh4eGmYcOGZty4ceb333/P97hF6b99+/aZ2267zVSqVMl4e3s7XB9FiWPGjBkFXmOFceLECfPqq6+aG264wVSsWNH4+PiYgIAAU6dOHTNo0CDz3//+N8/r7MSJE+bxxx83devWNX5+fqZ8+fLmlltuMRs2bHD6OrqUsfr06dPmkUceMbVq1TI+Pj75XuM2m828/PLLpn79+sbHx8eULVvW9OjRw2zcuLFQMV3MTz/9ZO655x5Tu3Zt4+fnZwICAsxVV11lunTpYqZOnWoOHDhQmNOdr5x8nI3Zxjgfv3KugSFDhri0XQ5n42WOhQsXmt69e5sqVaqYMmXKmLCwMFO/fn0zYMAA89FHH5mMjIyLJ3iBM2fOmLJlyxpJxmKxmN9++y3f9VauXGlGjRplmjdvbr82K1asaFq1amVef/11c/LkyTzb5Iw7zvJxJqcPcv5ZLBYTHBxsqlWrZjp37myefPJJs3379kLlVpzjQm6rV682t99+u4mKijK+vr4mODjY1KlTx9xyyy3m3XffNX/++WeebU6cOGFeeOEFExcXZ4KDg+2fdXr27Gk++eSTPOvPmTPHtGnTxgQHB9vH4dzXTkHjekZGhpk0aZJp1KiRCQgIMH5+fqZ+/frm8ccfzze2i71HXux4hVGY90Rjiv654WKvn4I+j2VnZ5uPPvrIdO/e3VSoUMGUKVPGREREmGuuucYMGzbMzJkzx+nnQgAAUHpYjLmMD/AAAAD4h1i+fLnat2+vtm3b2m/9BVxOw4cP14wZM/Tyyy9r9OjR7g4HKJUYqwEAAAB4Gp7xBwAAAFyh/ve//ykjI8OhzWaz6Z133lFiYqL8/Pw0cOBAN0UHAAAAAAAuN57xBwAAAFyh/v3vf+vTTz9V48aNVaVKFWVkZGj79u3au3evvLy89Oabb6pSpUruDhMAAAAAAFwmFP4AAACAK1T//v2Vnp6ujRs3asuWLcrKylL58uXVv39/jRo1Si1btnR3iAAAAAAA4DLiGX8AAAAAAAAAAACAB+AZfwAAAAAAAAAAAIAHoPAHAAAAAAAAAAAAeACe8XcBm82mgwcPKjg4WBaLxd3hAAAAAAAAAAAA4B/MGKMTJ06ocuXKsloLntNH4e8CBw8eVLVq1dwdBgAAAAAAAAAAAGD3+++/q2rVqgWuQ+HvAsHBwZLOn7yQkBA3RwMAAAAAAAAAAIB/svT0dFWrVs1ewyoIhb8L5NzeMyQkhMIfAAAAAAAAAAAASoXCPKKu4BuBAgAAAAAAAAAAALgiUPgDAAAAAAAAAAAAPACFPwAAAAAAAAAAAMAD8Iy/IrDZbMrMzHR3GPBgPj4+slqpywMAAAAAAAAAgMKj8OeizMxMJSUlyWazuTsUeDCr1aoaNWrIx8fH3aEAAAAAAAAAAIArBIU/FxhjlJycLC8vL1WrVo0ZWSgRNptNBw8eVHJysqpXry6LxeLukAAAAAAAAAAAwBWAwp8LsrKydOrUKVWuXFkBAQHuDgcerFy5cjp48KCysrJUpkwZd4cDAAAAAAAAAACuAExZc0F2drYkcftFlLicayznmgMAAAAAAAAAALgYCn9FwK0XUdK4xgAAAAAAAAAAgKso/AEAAAAAAAAAAAAegMLfFWLo0KG65ZZb3B0GAAAAAAAAAAAASikKf6WAxWIp8N/TTz+tKVOmKDEx0a1xlvbiY2HOIwAAAAAAAAAAgKfydncAkJKTk+3/nz17tsaPH69ffvnF3hYUFKSgoCB3hHZFKcx5BAAAAAAAAAAA8FTM+CsFKlasaP8XGhoqi8Xi0BYUFJRntl27du30wAMPaNSoUQoPD1eFChX0zjvvKCMjQ8OGDVNwcLBq1aqlRYsWORzr559/Vrdu3RQUFKQKFSrojjvu0NGjR+3LP//8czVo0ED+/v6KiIhQp06dlJGRoaefflozZ87UvHnz7DPoli9fLkl69NFHVadOHQUEBOiqq67SU089pXPnztn3+fTTT6tRo0aaPn26qlevrqCgIN1///3Kzs7Wiy++qIoVK6p8+fJ67rnnHGK1WCyaNm2aunXrJn9/f1111VX6/PPPXT6PwcHBqlOnjhYvXuyw/ty5cxUYGKgTJ05o7969slgs+uSTT9S6dWv5+fnpmmuu0YoVK1w6fwAAAAAAAAAAAO5C4e8KNnPmTEVGRmrdunV64IEHdN9996lfv35q3bq1Nm3apM6dO+uOO+7QqVOnJEmpqanq0KGDGjdurA0bNmjx4sU6fPiwbr31VknnZ8wNHDhQw4cP144dO7R8+XL17t1bxhg9/PDDuvXWW9W1a1clJycrOTlZrVu3liQFBwcrMTFR27dv15QpU/TOO+/o1VdfdYh1z549WrRokRYvXqyPP/5Y7733nm688Ub98ccfWrFihV544QU9+eSTWrt2rcN2Tz31lPr06aOtW7fq9ttv14ABA7Rjxw6XzlNgYKAGDBigGTNmOLTPmDFDffv2VXBwsL1t7NixGjNmjDZv3qxWrVqpR48eOnbsWKHOHwAAAAAAAAAAgDtxq88rWGxsrJ588klJ0mOPPabJkycrMjJSd999tyRp/PjxmjZtmrZt26aWLVvqjTfeUOPGjfX888/b9zF9+nRVq1ZNu3bt0smTJ5WVlaXevXsrKipKktSgQQP7uv7+/jp79qwqVqzoEEdODJIUHR2thx9+WJ988okeeeQRe7vNZtP06dMVHBysmJgYtW/fXr/88osWLlwoq9WqunXr6oUXXtCyZcvUokUL+3b9+vXTXXfdJUn6v//7P3377bd6/fXX9eabb7p0ru666y61bt1aycnJqlSpko4cOaKFCxdqyZIlDuuNGDFCffr0kSRNmzZNixcv1nvvvadHHnnkouevTp06LsUEAAAAAAAAAABQnJjx95eEhATFxMQoLi7O3aEUWsOGDe3/9/LyUkREhEOhrkKFCpKkI0eOSJK2bt2qZcuW2Z8ZGBQUpHr16kk6PyMvNjZWHTt2VIMGDdSvXz+98847On78+EXjmD17ttq0aWO/LemTTz6p/fv3O6wTHR3tMLOuQoUKiomJkdVqdWjLiTVHq1at8vzs6ow/SWrevLmuvvpqzZw5U5L0wQcfKCoqStdff73T43l7e6tZs2b2413s/AEAAAAAAAAAALgThb+/xMfHa/v27Vq/fr27Qym0MmXKOPxssVgc2iwWi6Tzs+0k6eTJk+rRo4e2bNni8O/XX3/V9ddfLy8vL3377bdatGiRYmJi9Prrr6tu3bpKSkpyGsMPP/yg22+/Xd27d9d///tfbd68WU888YQyMzNdijWnLSfWknDXXXcpMTFR0vnbfA4bNsx+jgrjYucPAAAAAAAAAADAnSj8/YM0adJE//vf/xQdHa1atWo5/AsMDJR0vvjWpk0bTZw4UZs3b5aPj4/mzJkjSfLx8VF2drbDPtesWaOoqCg98cQTatasmWrXrq19+/YVW8w//vhjnp/r169fpH0NGjRI+/bt09SpU7V9+3YNGTKkwONlZWVp48aN9uMV5vwBAAAAAAAAAAC4C4W/f5D4+Hj9+eefGjhwoNavX689e/bo66+/1rBhw5Sdna21a9fq+eef14YNG7R//359+eWXSklJsRe+oqOjtW3bNv3yyy86evSozp07p9q1a2v//v365JNPtGfPHk2dOtVeKCwOn332maZPn65du3ZpwoQJWrdunUaMGFGkfYWHh6t3794aO3asOnfurKpVq+ZZJyEhQXPmzNHOnTsVHx+v48ePa/jw4ZIufv4AAAAAAAAAAADcicLfP0jlypW1evVqZWdnq3PnzmrQoIFGjRqlsLAwWa1WhYSEaOXKlerevbvq1KmjJ598Ui+//LK6desmSbr77rtVt25dNWvWTOXKldPq1avVs2dPPfTQQxoxYoQaNWqkNWvW6Kmnniq2mCdOnKhPPvlEDRs21KxZs/Txxx8rJiamyPu78847lZmZaS/mXWjy5MmaPHmyYmNjtWrVKs2fP1+RkZGSLn7+AAAAAAAAAAAA3MlijDHuDqI0SU9PV2hoqNLS0hQSEuKw7MyZM0pKSlKNGjXk5+fnpgj/OSwWi+bMmaNbbrml2Pb5/vvv66GHHtLBgwfl4+Njb9+7d69q1KihzZs3q1GjRsV2vKLiWgMAAAAAAAAAAFLBtasLeV+mmAC3OnXqlJKTkzV58mTde++9DkU/AAAAAAAAAAAAT8D9CfGP8OKLL6pevXqqWLGiHnvsMXeHAwAAAAAAAAAAUOy41ecFuNUnSgOuNQAAAAAAAAAAILl2q09m/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAewNvdAQAAAAAAAAAAAOCfa8rxKe4OwWUjw0e6O4R8MeMPAAAAAAAAAAAA8AAU/gAAAAAAAAAAAAAPQOEP/zjt2rXTqFGj3B0GAAAAAAAAAABAseIZf8Vg8uajl/V44xpHurzNoUOH9Nxzz2nBggU6cOCAypcvr0aNGmnUqFHq2LFjscX29NNPa+7cudqyZUux7bOw9u7dqxo1ahS4zowZM/Tll1+qTJkylykqAAAAAAAAAACAy4PC3z/A3r171aZNG4WFhenf//63GjRooHPnzunrr79WfHy8du7c6e4Q8zDGKDs7W97ehb9Eq1WrpuTkZPvPL730khYvXqwlS5bY20JDQ+Xv71+ssQIAAAAAAAAAAJQG3OrzH+D++++XxWLRunXr1KdPH9WpU0dXX321Ro8erR9//NG+3iuvvKIGDRooMDBQ1apV0/3336+TJ0/alycmJiosLExz585V7dq15efnpy5duuj333+3L584caK2bt0qi8Uii8WixMRE7d27VxaLxWEWYGpqqiwWi5YvXy5JWr58uSwWixYtWqSmTZvK19dXq1atks1m06RJk1SjRg35+/srNjZWn3/+eb55enl5qWLFivZ/QUFB8vb2dmjz9/fPc6vP6OhoPfvssxo8eLCCgoIUFRWl+fPnKyUlRTfffLOCgoLUsGFDbdiwweF4q1at0nXXXSd/f39Vq1ZNDz74oDIyMi6xtwAAAAAAAAAAAIqGwp+H+/PPP7V48WLFx8crMDAwz/KwsDD7/61Wq6ZOnar//e9/mjlzpr777js98sgjDuufOnVKzz33nGbNmqXVq1crNTVVAwYMkCT1799fY8aM0dVXX63k5GQlJyerf//+LsU7btw4TZ48WTt27FDDhg01adIkzZo1S2+99Zb+97//6aGHHtKgQYO0YsUK109GAV599VW1adNGmzdv1o033qg77rhDgwcP1qBBg7Rp0ybVrFlTgwcPljFGkrRnzx517dpVffr00bZt2zR79mytWrVKI0aMKNa4AAAAAAAAAAAACotbfXq43bt3yxijevXqXXTd/GbB/etf/9Kbb75pbz937pzeeOMNtWjRQpI0c+ZM1a9fX+vWrVPz5s0dZtkVxTPPPKMbbrhBknT27Fk9//zzWrJkiVq1aiVJuuqqq7Rq1Sr95z//Udu2bYt0jPx0795d9957ryRp/PjxmjZtmuLi4tSvXz9J0qOPPqpWrVrp8OHDqlixoiZNmqTbb7/dfs5q166tqVOnqm3btpo2bZr8/PyKLTYAAAAAAAAAAIDCoPDn4XJmqBXGkiVLNGnSJO3cuVPp6enKysrSmTNndOrUKQUEBEiSvL29FRcXZ9+mXr16CgsL044dO9S8efNLjrdZs2b2/+/evVunTp2yFwJzZGZmqnHjxpd8rNwaNmxo/3+FChUkSQ0aNMjTduTIEVWsWFFbt27Vtm3b9OGHH9rXMcbIZrMpKSlJ9evXL9b4AAAAAAAAAAAALobCn4erXbu2LBaLdu7cWeB6e/fu1U033aT77rtPzz33nMqWLatVq1bpzjvvVGZmpr3wVxRW6/k7yuYuQp47dy7fdXPfjjTn+YILFixQlSpVHNbz9fUtcjz5KVOmjP3/FovFaZvNZrPHdu+99+rBBx/Ms6/q1asXa2wAAAAAAAAAAACFQeHPw5UtW1ZdunRRQkKCHnzwwTzP+UtNTVVYWJg2btwom82ml19+2V6o+/TTT/PsLysrSxs2bLDP7vvll1+Umppqn+Hm4+Oj7Oxsh23KlSsnSUpOTrbP1NuyZctFY4+JiZGvr6/2799frLf1LA5NmjTR9u3bVatWLXeHAgAAAAAAAAAAIEmyujsAlLyEhARlZ2erefPm+uKLL/Trr79qx44dmjp1qv3ZebVq1dK5c+f0+uuv67ffftP777+vt956K8++ypQpowceeEBr167Vxo0bNXToULVs2dJeCIyOjlZSUpK2bNmio0eP6uzZs/L391fLli01efJk7dixQytWrNCTTz550biDg4P18MMP66GHHtLMmTO1Z88ebdq0Sa+//rpmzpxZvCfJRY8++qjWrFmjESNGaMuWLfr11181b948jRgxwq1xAQAAAAAAAACAfy4Kf/8AV111lTZt2qT27dtrzJgxuuaaa3TDDTdo6dKlmjZtmiQpNjZWr7zyil544QVdc801+vDDDzVp0qQ8+woICNCjjz6q2267TW3atFFQUJBmz55tX96nTx917dpV7du3V7ly5fTxxx9LkqZPn66srCw1bdpUo0aN0rPPPluo2P/v//5PTz31lCZNmqT69eura9euWrBggWrUqFEMZ6boGjZsqBUrVmjXrl267rrr1LhxY40fP16VK1d2a1wAAAAAAAAAAOCfy2JyP3gNSk9PV2hoqNLS0hQSEuKw7MyZM0pKSlKNGjXk5+fnpgjdJzExUaNGjVJqaqq7Q/F4//RrDQAAAAAAAADwzzHl+BR3h+CykeEjL9uxCqpdXYgZfwAAAAAAAAAAAIAHoPAHAAAAAAAAAAAAeAAKfyi0oUOHcptPAAAAAAAAAACAUsrb3QGUhOjoaIWEhMhqtSo8PFzLli1zd0gAAAAAAAAAAABAifLIwp8krVmzRkFBQe4OAwAAAAAAAAAA4LKavPmou0NwiX+0uyPwHNzqEwAAAAAAAAAAAPAApa7wt3LlSvXo0UOVK1eWxWLR3Llz86yTkJCg6Oho+fn5qUWLFlq3bp3DcovForZt2youLk4ffvjhZYocAAAAAAAAAAAAcJ9SV/jLyMhQbGysEhIS8l0+e/ZsjR49WhMmTNCmTZsUGxurLl266MiRI/Z1Vq1apY0bN2r+/Pl6/vnntW3btssVPgAAAAAAAAAAAOAWpe4Zf926dVO3bt2cLn/llVd09913a9iwYZKkt956SwsWLND06dM1btw4SVKVKlUkSZUqVVL37t21adMmNWzYMN/9nT17VmfPnrX/nJ6eLknKyspSVlaWJMlqtcpqtcpms8kYY/8nnZ9dmPP/3Fxtd0VxHbOk211R2mJ3d04515jNZpMk2Ww2+/+lv6/J7Oxsh305a/fy8pLFYrFf07nbJSk7O7tQ7d7e3jLGOLRbLBZ5eXnlidFZe+7XEzmREzmREzmREzmREzmREzmREzmREzmREzmREzmREzkVf04yNslilYxNllwxGotFslhlMTbJod0qWSzO222OMRrL+XllFmMrXLvVSzLGsd1iOb++MbJkW3K1S8ZqJJtkMX+3G4s5P53NSbvFZpFyffVurEayFNCe+5g57fpr/UK0S7ps196F11RBSl3hryCZmZnauHGjHnvsMXub1WpVp06d9MMPP0g6P2PQZrMpODhYJ0+e1Hfffadbb73V6T4nTZqkiRMn5mnfvHmzAgMDJUnlypVTzZo19ccffygzM1OnTp1Sdna2fHx85OPjozNnzjh0rK+vr8qUKaPTp087dJSfn5+8vb116tQph8HA399fVqtVGRkZDjEEBgbKZrPp9OnT9jaLxaLAwEBlZ2frzJkzDuchICBAWVlZDoVMLy8v+fv769y5c8rMzLS3e3t7y8/PT2fPnnW4YEpTTh9++KEeffRRpaSkuDWnbt26qWHDhpo6depl66ezZ88qMzNTf/zxh+rUqaOkpCSlpKTY169ataqqVq2qXbt2KS0tzd5+1VVXqXz58vr5558d4qlXr57CwsK0efNmh3PQsGFD+fj4aMOGDQ45NWvWTJmZmQ6zZb28vBQXF6e0tDTt3LnT3u7v76/Y2FgdPXpUv/32m709NDRU9evX18GDB/XHH3/Y23NeT+RETuRETuRETuRETuRETuRETuRETuRETuRETuRETuRUMjmFZwboeHBlhZ88pMDTqfb29MBySg8sp4i03+WX+fd33ceDKynDP1wVjifJO+vv766PhlXXGZ8gVf7zV1lyfY9+qGxNZVu9VeXoLw45HYisKy9blir+ucfeZqxWHYisJ79zGYpM3W9vz/L21aGyNRV4JlWRO8rZ2zODMpUanarAo4EKPBJobz8dflonqpxQcHKw/I/729szymcoo3yGQveHyuekz9+5Vk7XmbJnFL4nXN5n/y6HpUalKjM4U5G/RDoU847VOiZbGZvK5YpFklLqp8h6zqqI3RG5cjJSpC7btXdhXaIgFnOp05pKkMVi0Zw5c3TLLbdIkg4ePKgqVapozZo1atWqlX29Rx55RCtWrNDatWv122+/qVevXpLOV8nvvvtujRw50ukx8pvxV61aNR07dkwhISGS/q6snjp1Snv37lWNGjXk5+dnj3HK8SnFnXqBRoaPdGkm2bBhwzRz5kxJ54tjZcuWVcOGDTVw4EANGTJEVqu1UPuxWCyaMGGC5s2bp82bN190fVfUqFFDI0eO1KhRo+xtp0+f1smTJ1WuXLk86xfHDL69e/fqqquuKjCu6dOnq2fPnipTpoyCg4MLmc2lx3jmzBklJSUpOjpaAQEBHvWXJp741zPkRE7kRE7kRE7kRE7kRE7kRE7kRE7kRE7kRE7kRE6lKaeXtv15Rc34C6j+ca72K2PG34ORD162ay89PV0RERFKS0uz166cuaJm/BXGVVddpa1btxZ6fV9fX/n6+uZp9/b2lre34+mxWq2yWCz2f+7k7PjO2rt27aoZM2YoOztbhw8f1uLFizVy5Eh9/vnnmj9/fp5cL7b/C5cXx/m48LwGBAQoICCgwPUvpb169epKTk62//zSSy9p8eLFWrJkib0tNDRU/v7+KqqixphzLqzW84Nkzov8QjlvDIVtv7Cfi9JusVjybXcWo6vt5EROztrJiZwkcnIWo6vt5EROEjk5i9HVdnIiJ4mcnMXoajs5kZNETs5idLWdnMhJIidnMbraTk7kJF2hOf1VgJPFKpPP19HnC3outFvzz9VYXGi3WJy3e+UzucgqGRW+PadAV+j2/I7pYvvluvacXTv5ybuXUiwyMlJeXl46fPiwQ/vhw4dVsWJFN0V1ZfD19VXFihVVpUoVNWnSRI8//rjmzZunRYsWKTEx0b5eamqq7rrrLpUrV04hISHq0KGDvZCamJioiRMnauvWrfbCVM62BW2X46uvvlJcXJz8/PwUGRlpn5nZrl077du3Tw899JBD8S8xMVFhYWEO+5g2bZpq1qwpHx8f1a1bV++//77DcovFonfffVe9evVSQECAateurfnz5+d7Try8vFSxYkX7v6CgIHl7ezu0+fv7q127dg4zEaOjo/Xss89q8ODBCgoKUlRUlObPn6+UlBTdfPPNCgoKUsOGDfNM2161apWuu+46+fv7q1q1anrwwQddmp4LAAAAAAAAAABQkCuq8Ofj46OmTZtq6dKl9jabzaalS5c63PoThdOhQwfFxsbqyy+/tLf169dPR44c0aJFi7Rx40Y1adJEHTt21J9//qn+/ftrzJgxuvrqq5WcnKzk5GT179//ottJ0oIFC9SrVy91795dmzdv1tKlS9W8eXNJ0pdffqmqVavqmWeese83P3PmzNHIkSM1ZswY/fzzz7r33ns1bNgwLVu2zGG9iRMn6tZbb9W2bdvUvXt33X777fY4isurr76qNm3aaPPmzbrxxht1xx13aPDgwRo0aJA2bdqkmjVravDgwfZp3nv27FHXrl3Vp08fbdu2TbNnz9aqVas0YsSIYo0LAAAAAAAAAAD8c5W6W32ePHlSu3fvtv+clJSkLVu2qGzZsqpevbpGjx6tIUOGqFmzZmrevLlee+01ZWRkaNiwYZd03ISEBCUkJOS5l66nq1evnv3BoatWrdK6det05MgR++1PX3rpJc2dO1eff/657rnnHodZcTkKs91zzz2nAQMGaOLEifbtYmNjJUlly5aVl5eXgoODC5y5+dJLL2no0KG6//77JUmjR4/Wjz/+qJdeeknt27e3rzd06FANHDhQkvT8889r6tSpWrdunbp27Vocp0yS1L17d917772SpPHjx2vatGmKi4tTv379JEmPPvqoWrVqZZ+NOmnSJN1+++32mYO1a9fW1KlT1bZtW02bNs3+zEgAAAAAAAAAAICiKnWFvw0bNjgUcUaPHi1JGjJkiBITE9W/f3+lpKRo/PjxOnTokBo1aqTFixerQoUKl3Tc+Ph4xcfHKz09XaGhoZe0ryuJMcZ+a82tW7fq5MmTioiIcFjn9OnT2rNnj9N9FGa7LVu26O67776kWHfs2KF77rnHoa1NmzaaMmWKQ1vDhg3t/w8MDFRISIiOHDlySce+UO5j5Fx7DRo0yNN25MgRVaxYUVu3btW2bdv04Ycf2tcxxshmsykpKUn169cv1vgAAAAAAAAAAMA/T6kr/LVr185+e0RnRowYwS0Si8mOHTtUo0YNSednW1aqVEnLly/Ps96Fz9rLrTDb+fv7F0O0hVOmTBmHny0Wi2w2W4kdI6dwml9bznFPnjype++9Vw8++GCefVWvXr1YYwMAAAAAAAAAAP9Mpa7wh8vnu+++008//aSHHnpIktSkSRMdOnRI3t7eio6OzncbHx+fPLdDLcx2DRs21NKlS53ekjW//V6ofv36Wr16tYYMGWJvW716tWJiYgrcrjRo0qSJtm/frlq1ark7FAAAAAAAAAAA4KGs7g4Al8fZs2d16NAhHThwQJs2bdLzzz+vm2++WTfddJMGDx4sSerUqZNatWqlW265Rd9884327t2rNWvW6IknntCGDRskSdHR0fbnLh49elRnz54t1HYTJkzQxx9/rAkTJmjHjh366aef9MILL9jji46O1sqVK3XgwAEdPXo03xzGjh2rxMRETZs2Tb/++qteeeUVffnll3r44YdL+OxdukcffVRr1qzRiBEjtGXLFv3666+aN28eM1cBAAAAAAAAAECxofD3D7F48WJVqlRJ0dHR6tq1q5YtW6apU6dq3rx58vLyknT+9pQLFy7U9ddfr2HDhqlOnToaMGCA9u3bZ39mXZ8+fdS1a1e1b99e5cqV08cff1yo7dq1a6fPPvtM8+fPV6NGjdShQwetW7fOHt8zzzyjvXv3qmbNmipXrly+Odxyyy2aMmWKXnrpJV199dX6z3/+oxkzZqhdu3Yle/KKQcOGDbVixQrt2rVL1113nRo3bqzx48ercuXK7g4NAAAAAAAAAAB4CIu52AP1/iESEhKUkJCg7Oxs7dq1S2lpaQoJCXFY58yZM0pKSlKNGjXk5+fnpkjxT8C1BgAAAAAAAAAoqsmb87+zXmnlH/2hu0Nw2cjwkZftWOnp6QoNDc23dnUhZvz9JT4+Xtu3b9f69evdHQoAAAAAAAAAAADgMgp/AAAAAAAAAAAAgAeg8AcAAAAAAAAAAAB4AAp/AAAAAAAAAAAAgAeg8FcExhh3hwAPxzUGAAAAAAAAAABcReHPBV5eXpKkzMxMN0cCT5dzjeVccwAAAAAAAAAAABfj7e4ASouEhAQlJCQoOzvb6Tre3t4KCAhQSkqKypQpI6uVuimKn81mU0pKigICAuTtzUsUAAAAAAAAAAAUDlWFv8THxys+Pl7p6ekKDQ3Ndx2LxaJKlSopKSlJ+/btu8wR4p/EarWqevXqslgs7g4FAAAAAAAAAABcISj8ucjHx0e1a9fmdp8oUT4+PswoBQAAAAAAAAAALqHwVwRWq1V+fn7uDgMAAAAAAAAAAACwY0oRAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMLfXxISEhQTE6O4uDh3hwIAAAAAAAAAAAC4jMLfX+Lj47V9+3atX7/e3aEAAAAAAAAAAAAALqPwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn9/SUhIUExMjOLi4twdCgAAAAAAAAAAAOAyCn9/iY+P1/bt27V+/Xp3hwIAAAAAAAAAAAC4jMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMLfXxISEhQTE6O4uDh3hwIAAAAAAAAAAAC4jMLfX+Lj47V9+3atX7/e3aEAAAAAAAAAAAAALqPwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn9/SUhIUExMjOLi4twdCgAAAAAAAAAAAOAyCn9/iY+P1/bt27V+/Xp3hwIAAAAAAAAAAAC4jMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/P0lISFBMTExiouLc3coAAAAAAAAAAAAgMso/P0lPj5e27dv1/r1690dCgAAAAAAAAAAAOAyCn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB/B2dwAAAAAAAAAAkJ/Jm4+6OwSX+Ud/6O4QXDIyfKS7QwAAFCNm/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAewGMLf6dOnVJUVJQefvhhd4cCAAAAAAAAAAAAlDiPLfw999xzatmypbvDAAAAAAAAAAAAAC4Ljyz8/frrr9q5c6e6devm7lAAAAAAAAAAAACAy6LUFf5WrlypHj16qHLlyrJYLJo7d26edRISEhQdHS0/Pz+1aNFC69atc1j+8MMPa9KkSZcpYgAAAAAAAAAAAMD9Sl3hLyMjQ7GxsUpISMh3+ezZszV69GhNmDBBmzZtUmxsrLp06aIjR45IkubNm6c6deqoTp06lzNsAAAAAAAAAAAAwK283R3Ahbp161bgLTpfeeUV3X333Ro2bJgk6a233tKCBQs0ffp0jRs3Tj/++KM++eQTffbZZzp58qTOnTunkJAQjR8/Pt/9nT17VmfPnrX/nJ6eLknKyspSVlaWJMlqtcpqtcpms8lms9nXzWnPzs6WMeai7V5eXrJYLPb95m6XpOzs7EK1e3t7yxjj0G6xWOTl5ZUnRmft5ERO5ERO5ERO5ERO5ERO5ERO5ERO5ERO5EROpT0niy1bxuolGSOL+TsWWSwyFmsB7TZZcsViLBapgHaLsUkO7VbJYnHebnOM3VjOz6+wGJss2Za/263mrzwsjut7Gclc0G75a31n7TbJYnLt22LOT+tw0m6xWaS/Qz+/D0s+7cZw7ZETOXlgTjK2yzbuFar9YmN59mUc93Lasy8Ym52N2U7aJV22a+/Ca6ogpa7wV5DMzExt3LhRjz32mL3NarWqU6dO+uGHHyRJkyZNst/mMzExUT///LPTol/O+hMnTszTvnnzZgUGBkqSypUrp5o1ayopKUkpKSn2dapWraqqVatq165dSktLs7dfddVVKl++vH7++WedPn3a3l6vXj2FhYVp8+bNDhdCw4YN5ePjow0bNjjE0KxZM2VmZmrbtm32Ni8vL8XFxSktLU07d+60t/v7+ys2NlZHjx7Vb7/9Zm8PDQ1V/fr1dfDgQf3xxx/2dnIiJ3IiJ3IiJ3IiJ3IiJ3IiJ3IiJ3IiJ3Iip9KeU+UTWToQWU9+5zIUmbrf3p7l7atDZWsq8Eyqwk8k29vP+ATqaFiUQk4dU0jG37Fn+IfpeHBlhZ88pMDTqfb29MBySg8sp4i03+WXmWFvPx5cSRn+4apwPEneWX9PGjgaVl1nfIJU+c9fZcn1Be2hsjWVbfVWlaO/yOtUOXt7Sv0UWc9ZFbE7wt5mrEYpMSnyOemjsH1hf+fkm6U/a/8pv+N+CjkYYm/PDMpUanSqAo8GKvBIoL39dPhpnahyQsHJwfI/7v93ruUzlFE+Q6H7Q+Vz0ufvXCun60zZMwrfEy7vs39/LZzWII1rj5zIyQNzCs8MuGzjXm4HIuvKy5alin/usbcZq/WiY3nkjr/HzpIe91KjUpUZnKnIXyIdinnHah2TrYxN5XLFIjkfyxWpy3btZWT83VcXYzG5y9GljMVi0Zw5c3TLLbdIkg4ePKgqVapozZo1atWqlX29Rx55RCtWrNDatWsdts8p/L300ktOj5HfjL9q1arp2LFjCgk5/wbridV+ciInciInciInciInciInciInciInciInciKn0p7Ty1uPXXEz/vyjZv/dfgXM+Hsg4gGuPXIiJw/M6aVtf15RM/4Cqn+cq/3KmPH3YOSDl+3aS09PV0REhNLS0uy1K2c8uvBXFOnp6QoNDS3UyQMAAAAAAEDpNnnzUXeH4LJxjSPdHUKpcSX2n3/0h+4OwSUjw0e6O4RSZcrxKe4OwSX0H5y50sbPK23slC7v68+V2pX1MsVULCIjI+Xl5aXDhw87tB8+fFgVK1Z0U1QAAAAAAAAAAACA+11RhT8fHx81bdpUS5cutbfZbDYtXbrUYQYgAAAAAAAAAAAA8E/jffFVLq+TJ09q9+7d9p+TkpK0ZcsWlS1bVtWrV9fo0aM1ZMgQNWvWTM2bN9drr72mjIwMDRs2zI1RAwAAAAAAAAAAAO5V6gp/GzZsUPv27e0/jx49WpI0ZMgQJSYmqn///kpJSdH48eN16NAhNWrUSIsXL1aFChUu6bgJCQlKSEjI8xBNAAAAAAAAAAAA4EpQ6gp/7dq1kzGmwHVGjBihESNGFOtx4+PjFR8fb39AIgAAAAAAAAAA/1STNx91dwguGdc40t0hAKXCFfWMPwAAAAAAAAAAAAD5o/AHAAAAAAAAAAAAeAAKfwAAAAAAAAAAAIAHoPAHAAAAAAAAAAAAeAAKf39JSEhQTEyM4uLi3B0KAAAAAAAAAAAA4DIKf3+Jj4/X9u3btX79eneHAgAAAAAAAAAAALiMwh8AAAAAAAAAAADgAbzdHQAAAAAAAAAAAMClmHJ8irtDcNnI8JHuDgEeiBl/AAAAAAAAAAAAgAdgxh8AAAAAAAAAoNhN3nzU3SG4zD/a3REAwKVhxh8AAAAAAAAAAADgASj8/SUhIUExMTGKi4tzdygAAAAAAAAAAACAyyj8/SU+Pl7bt2/X+vXr3R0KAAAAAAAAAAAA4DIKfwAAAAAAAAAAAIAH8HZ3AAAAAAAAeLrJm4+6OwSXjWsc6e4QAAAAALiIGX8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgAbvUJAAAAAAAAlCJTjk9xdwguGxk+0t0hAAAAMeMPAAAAAAAAAAAA8AgU/v6SkJCgmJgYxcXFuTsUAAAAAAAAAAAAwGUU/v4SHx+v7du3a/369e4OBQAAAAAAAAAAAHAZhT8AAAAAAAAAAADAA1D4AwAAAAAAAAAAADwAhT8AAAAAAAAAAADAA1D4AwAAAAAAAAAAADwAhT8AAAAAAAAAAADAA1D4AwAAAAAAAAAAADwAhT8AAAAAAAAAAADAA1D4+0tCQoJiYmIUFxfn7lAAAAAAAAAAAAAAl1H4+0t8fLy2b9+u9evXuzsUAAAAAAAAAAAAwGUU/gAAAAAAAAAAAAAP4O3uAAAAAABcPpM3H3V3CC4Z1zjS3SEAAAAAAHDFYMYfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAegMIfAAAAAAAAAAAA4AEo/AEAAAAAAAAAAAAewNvdAQAAAAAAgNJnyvEp7g7BZSPDR7o7BAAAAMCtmPEHAAAAAAAAAAAAeACXZ/zt3btX8+bN0+rVq7V9+3YdPXpUFotFkZGRql+/vtq0aaOePXuqRo0aJREvAAAAAAAAAAAAgHwUesbff//7X7Vr1061atXS6NGjtWXLFlWtWlXt27dX27ZtVblyZW3ZskWjR49WrVq11LZtW/33v/8tydiLVUJCgmJiYhQXF+fuUAAAAAAAAAAAAACXFWrGX8uWLbV161bdfPPN+vTTT9WpUyeFhITku256erq+/fZbff7557r11lsVGxurH374oViDLgnx8fGKj49Xenq6QkND3R0OAAAAAAAAAAAA4JJCFf7at2+vefPmqUKFChddNyQkRH369FGfPn106NAhTZly5T0MHAAAAAAAAAAAALjSFKrwN2nSpCLtvGLFikXeFgAAAAAAAAAAAEDhFfoZfwAAAAAAAAAAAABKryIX/vbv369//etfqlu3rsqWLauVK1dKko4ePaoHH3xQmzdvLrYgAQAAAAAAAAAAABSsULf6vND27dt13XXXyWazqUWLFtq9e7eysrIkSZGRkVq1apUyMjL03nvvFWuwAAAAAAAAAAAAAPJXpMLfI488orCwMP3444+yWCwqX768w/Ibb7xRs2fPLpYAAQAAAAAAAAAAAFxckW71uXLlSt13330qV66cLBZLnuXVq1fXgQMHLjk4AAAAAAAAAAAAAIVTpMKfzWZTQECA0+UpKSny9fUtclAAAAAAAAAAAAAAXFOkwl+TJk20YMGCfJdlZWXpk08+UcuWLS8pMAAAAAAAAAAAAACFV6TC32OPPabFixfrvvvu088//yxJOnz4sJYsWaLOnTtrx44dGjduXLEGCgAAAAAAAAAAAMA576Js1K1bNyUmJmrkyJF6++23JUmDBg2SMUYhISGaNWuWrr/++mINFAAAAAAAAAAAAIBzRSr8SdIdd9yh3r1765tvvtHu3btls9lUs2ZNdenSRcHBwcUZIwAAAAAAAAAAAICLKHLhT5ICAwPVq1ev4ooFAAAAAAAAAAAAQBEVqvC3f//+Iu28evXqRdrOHRISEpSQkKDs7Gx3hwIAAAAAAEqRyZuPujsEl41rHOnuEAAAAOAGhSr8RUdHy2KxuLzzK6mIFh8fr/j4eKWnpys0NNTd4QAAAAAAAAAAAAAuKVThb/r06UUq/AEAAAAAAAAAAAC4PApV+Bs6dGgJhwEAAAAAAAAAAADgUljdHQAAAAAAAAAAAACAS1eoGX/OrF69Wps2bVJaWppsNpvDMovFoqeeeuqSggMAAAAAAAAAAABQOEUq/P3555+68cYbtW7dOhljZLFYZIyRJPv/KfwBAAAAAAAAAAAAl0+RbvU5duxYbdu2TR999JF+++03GWP09ddfa9euXfrXv/6lRo0a6eDBg8UdKwAAAAAAAAAAAAAnijTjb+HChbr33nvVv39/HTt2TJJktVpVq1YtJSQkqHfv3ho1apQ+/vjjYg0WAAAAwD/LlONT3B2Cy0aGj3R3CAAAAACAf6gizfhLTU3V1VdfLUkKCgqSJJ08edK+vHPnzvr666+LITwAAAAAAAAAAAAAhVGkwl/lypV16NAhSZKvr6/Kly+vrVu32pcfOHBAFouleCIEAAAAAAAAAAAAcFFFutXn9ddfr2+//VZPPPGEJKl///568cUX5eXlJZvNptdee01dunQp1kABAIDnmLz5qLtDcNm4xpHuDgEAAAAAAAAoUJEKf6NHj9a3336rs2fPytfXV08//bT+97//6amnnpJ0vjD4+uuvF2ugAAAAAAAAAAAAAJwrUuGvQYMGatCggf3n8PBwLVmyRKmpqfLy8lJwcHCxBQgAAAAAAAAAAADg4opU+HMmLCysOHcHAAAAAAAAAAAAoJCsRdlo6tSpBT7Dr1u3bpo2bVqRgwIAAAAAAAAAAADgmiIV/t577z3FxMQ4XR4TE6O33367yEEBAAAAAAAAAAAAcE2RCn979uxR/fr1nS6vV6+e9uzZU+SgAAAAAAAAAAAAALimSIU/Hx8fHTp0yOny5ORkWa1F2jUAAAAAAAAAAACAIihSda5ly5ZKTEzUiRMn8ixLS0vTjBkz1LJly0sODgAAAAAAAAAAAEDheBdlowkTJqht27Zq1KiRRo0apauvvlqS9PPPP+u1115TcnKyPvroo2INFAAAAAAAAIUz5fgUd4fgspHhI90dAgAAwBWvSIW/Fi1a6KuvvtK9996rkSNHymKxSJKMMapRo4bmz5+vVq1aFWugJS0hIUEJCQnKzs52dygAAAAAAAAAAACAy4pU+JOkG264Qbt379bmzZu1Z88eSVLNmjXVpEkTeyHwShIfH6/4+Hilp6crNDTU3eEAAAAAAAAAAAAALily4U+SrFarmjZtqqZNmxZXPAAAAAAAAAAAAACKwFrYFU+dOqX9+/crMzMzz7Lp06erY8eOiomJUe/evbV+/fpiDRIAAAAAAAAAAABAwQpd+HvmmWfUsGHDPIW/Z599VnfffbdWrFihlJQUzZ07V+3atdPWrVuLPVgAAAAAAAAAAAAA+St04W/ZsmW66aabFBQUZG9LT0/Xs88+qypVqujXX39VSkqKfvzxR/n4+Gjy5MklEjAAAAAAAAAAAACAvApd+Nu7d68aNmzo0LZw4UJlZmbq0UcfVY0aNSRJzZs317Bhw/T9998Xb6QAAAAAAAAAAAAAnPIu7IonTpxQRESEQ9vKlStlsVjUpUsXh/aYmBilpKQUT4QAAAAoVSZvPuruEFw2rnGku0MA/pGmHJ/i7hBcNjJ8pLtDAAAAAIAiK/SMv6ioKO3cudOhbfny5apQoYJq1arl0J6ZmamQkJDiiRAAAAAAAAAAAADARRW68Ne5c2dNnz5da9eulSTNmjVLO3fuVK9evfKsu3HjRkVHRxdbkAAAAAAAAAAAAAAKVujC31NPPaWgoCC1bt1aPj4+Gjp0qMqVK6fx48c7rHfq1CnNmTNHHTt2LPZgAQAAAAAAAAAAAOSv0M/4i4yM1JYtW/Tuu+/qt99+U1RUlIYPH67y5cs7rPfzzz/r9ttv1x133FHswQIAAAAAAAAAAADIX6ELf5IUHh6usWPHFrhO8+bN1bx580sKCgAAAAAAAAAAAIBrCn2rTwAAAAAAAAAAAAClF4U/AAAAAAAAAAAAwANQ+AMAAAAAAAAAAAA8AIU/AAAAAAAAAAAAwANQ+AMAAAAAAAAAAAA8AIU/AAAAAAAAAAAAwAN4F2WjZ555psDlFotFfn5+qlq1qq6//npVqVKlSMEBAAAAAP42efNRd4fgEv9od0cAAAAAAP8sRSr8Pf3007JYLJIkY4zDsgvbvby8dPfdd+uNN96Q1coEQwAAAAAAAAAAAKAkFKkS98cff6hhw4YaMmSINm7cqLS0NKWlpWnDhg0aPHiwGjVqpF27dmnTpk26/fbb9Z///EfPP/98cccOAAAAAAAAAAAA4C9FKvzdf//9qlevnqZPn67GjRsrODhYwcHBatKkiWbMmKHatWtr3LhxatSokRITE9WlSxfNmjWruGMHAAAAAAAAAAAA8Jci3erzu+++04svvuh0edu2bTVu3Dj7z927d9fDDz9clEMBAACUClOOT3F3CC4ZGT7S3SEAAAAAAADgMivSjD9fX1+tXbvW6fIff/xRPj4+9p+zsrIUFBRUlEMBAAAAAAAAAAAAKIQiFf4GDhyoWbNm6eGHH9aePXtks9lks9m0Z88ejRkzRh988IEGDhxoX3/ZsmWKiYkptqABAAAAAAAAAAAAOCrSrT5ffPFFHT58WK+88opeffVVWa3n64c2m03GGPXp08d+K9AzZ86oadOmat26dfFFDQAAAAAAAAAAAMBBkQp/fn5+mj17tsaNG6dFixZp//79kqSoqCh16dJFTZo0cVh3/PjxxRMtAAAAAAAAAAAAgHwVqfCXo3HjxmrcuHFxxQIAAAAAAAAAAACgiC6p8JeUlKRFixZp3759kqTo6Gh17dpVNWrUKJbgAAAAAAAAAAAAABROkQt/Y8aM0ZQpU2Sz2RzarVarRo0apZdeeumSgyuK1NRUderUSVlZWcrKytLIkSN19913uyUWAAAAAAAAAAAA4HKxFmWjl19+Wa+++qp69+6tH374QampqUpNTdUPP/ygvn376tVXX9Wrr75a3LEWSnBwsFauXKktW7Zo7dq1ev7553Xs2DG3xAIAAAAAAAAAAABcLkWa8ffOO++oZ8+e+vTTTx3aW7RooU8++URnzpzRf/7zHz300EPFEqQrvLy8FBAQIEk6e/asjDEyxlz2OAAAAAAAAAAAAIDLqUgz/vbu3asuXbo4Xd6lSxft3bu3SAGtXLlSPXr0UOXKlWWxWDR37tw86yQkJCg6Olp+fn5q0aKF1q1b57A8NTVVsbGxqlq1qsaOHavIyMgixQIAAAAAAAAAAABcKYpU+Ctfvry2bt3qdPnWrVtVrly5IgWUkZGh2NhYJSQk5Lt89uzZGj16tCZMmKBNmzYpNjZWXbp00ZEjR+zrhIWFaevWrUpKStJHH32kw4cPFykWAAAAAAAAAAAA4EpRpFt99uvXT1OmTFF0dLQeeOABBQYGSjpftHvjjTf07rvvatSoUUUKqFu3burWrZvT5a+88oruvvtuDRs2TJL01ltvacGCBZo+fbrGjRvnsG6FChUUGxur77//Xn379s13f2fPntXZs2ftP6enp0uSsrKylJWVJUmyWq2yWq2y2Wyy2Wz2dXPas7OzHW4n6qzdy8tLFovFvt/c7ZKUnZ1dqHZvb28ZYxzaLRaLvLy88sTorJ2cyImcyImcyMmtORmbjMUqGZssuWIxFotUQLvF2CSHdqtksThvtznGaCxW+/EL1W71koyRxdhkybb8FbxkrEYyksVm+XvlnHabZDF/txuLOf+nVk7aLTaLlOuu5MZqJEsB7dm5jpnTrgtikex9XBLXnoyt1PZTruD/usbOt+dc3x75enIxp5z+K439lLfd5nDNu+315KzdK/+xQFKJjeUypnT2k7OxPJ/+Ky395Gwsl/L2X3GMERZbduntJydjuUP/lbJ+cvqeK+f9dyljub3/VPr6ydlYnm//lZZ+cjaWSyXynltg/7m5n5yN5Xn6T6Won5yN5crbf8Xx2chiyy61/ZRb7musUP3nrn7Kbyw3puQ+w9p/9yt9/eSs3aH/SlM/ORvLnfzu94/83T27FPcTv7tffCzPr/9KSz85aZd02b7fu3CMLkiRCn//93//py1btujxxx/X+PHjVblyZUnSwYMHlZWVpfbt2+uZZ54pyq4LlJmZqY0bN+qxxx6zt1mtVnXq1Ek//PCDJOnw4cMKCAhQcHCw0tLStHLlSt13331O9zlp0iRNnDgxT/vmzZvtBc1y5cqpZs2aSkpKUkpKin2dqlWrqmrVqtq1a5fS0tLs7VdddZXKly+vn3/+WadPn7a316tXT2FhYdq8ebPDhdCwYUP5+Phow4YNDjE0a9ZMmZmZ2rZtm73Ny8tLcXFxSktL086dO+3t/v7+io2N1dGjR/Xbb7/Z20NDQ1W/fn0dPHhQf/zxh72dnMiJnMiJnMjJnTlFnC6jo2FRCjl1TCEZf8ee4R+m48GVFX7ykAJPp9rb0wPLKT2wnCLSfpdfZoa9/XhwJWX4h6vC8SR5Z/39hzxHw6rrjE+QKv/5qyy5PjQdKltT2VZvVTn6i0NOByLrysuWpYp/7rG3GatVByLrye9chiJT98vr1Pm7GWT5ZunP2n/K77ifQg6G2NfPDMpUanSqAo8GKvBIoL39dPhpnahyQsHJwfI/7v93ruUzlFE+Q6H7Q+Vz0ufvXCun60zZMwrfEy7vs39/VEuNSlVmcKYif4l0+KB5rNYx2crYVG6H490Wsltll9i1F54ZUGr7KUeWt68Ola2pwDOpCj+RrA0bfArM6Up+PbmaU0hWaKntpxxnfALtY0R4rmvbXa+nlPopsp6zKmJ3RK6cjFJiUuRz0kdh+8L+zsk3S4pQiY3lgbaIUtlPzsbykFznsrT1k7OxXBEqkTGiSlpmqe0nZ2N5YK5zXNr6ydl7riJUImN5lbTMUttPzsZy34y/z31p6ydnY7kiVCLvuVXSMkttPzkby71P/d0npa2fnI3lKqsS+WxU+URWqe0nZ2O5V67+K239lN9YntYgrcQ+w1bIsJTafsot9xiR03+lrZ+cjeWnm57md/e/xojc42Rp6yd+d7/4e25krnNT2vrJ2ViuSF227/cyMv7uq4uxGIc/H3XNvHnztGjRIu3bt0+SFBUVpe7du6tHjx6yWPJWPl1lsVg0Z84c3XLLLZLO//JVpUoVrVmzRq1atbKv98gjj2jFihVau3at1q1bp3vuuUfGGBljFB8fr3vvvdfpMfKb8VetWjUdO3ZMISHnB4R/0l+AkxM5kRM5kRM5XY6cXt7255X1V4PGJv+o2X8ldWX81eADEQ9IKplr76Vtf5bafsoVvMNfFo+JjSgwpyv59eRqTjn9Vxr7KW+7TQHVP8m179L1153O/gL8wYgHS2wsf2nb8VLZT87G8vz6r7T0k7OxPL/+K44x4uWtx0ptPzkby/1z918p6ydn77kjI0aWyFhu7z+Vvn5yNpbn23+lpJ+cjeUjI0aWyHtugf1XSmeS2T97qvT1k7OxfGTZvP1XHJ+NXt56rNT2U265r7FC9V8pmkn2QMQDJfYZ9u/f/UpfPzlrd+i/UtRPzsZyZ7/7/RN/dw+o/vHfjaWsn/jd/eLvufn2XynpJ2ftD0Y+eNm+30tPT1dERITS0tLstStnijTjL8fNN9+sm2++OU/7mjVrtHz5cj3++OOXsvsiad68ubZs2VLo9X19feXr65un3dvbW97ejqcn50RfKGcQLWz7hfstSrvFYsm33VmMrraTEzk5aycncpLIyVmMrrb/k3PK+RAoi1XGkmd1p+3nP2y60G7NP1djcaHdYpGxeJ3/hc+hXXnbJMkqGRW+PefDY6Hb8ztmPu05f4RVItfeRfrPnf3krL2wn+uuxNeTy+1/9V9p7Ke87VaXXmcl9XoqsN3JWFBiY/lfr+1S10/OxvJ8zk1p6qfi6r/CjBG5+6bU9ZOTscCl/nNDPzkbC0piLHfov1LWT87G8nz7rxT1k7P2knjPvWj/ubGfnI3ll9x/JdxPzsaCkvhsZO+/UthP+cn3dweVrn66sL2g3x1cbb/wM+zfv/uVvn5y1l7o3/1Kye+ERek/j/3dvRT3k7N2fnfP1V6K+6mg9sv1/Z6z13h+8u6lGCxbtkxPPfVUse83MjJSXl5eOnz4sEP74cOHVbFixWI/HgAAAAAAAAAAAHClKJHCX0nx8fFR06ZNtXTpUnubzWbT0qVLHW79CQAAAAAAAAAAAPzTXNKtPkvCyZMntXv3bvvPSUlJ2rJli8qWLavq1atr9OjRGjJkiJo1a6bmzZvrtddeU0ZGhoYNG3ZJx01ISFBCQkKee+kCAAAAAAAAAAAAV4JSV/jbsGGD2rdvb/959OjRkqQhQ4YoMTFR/fv3V0pKisaPH69Dhw6pUaNGWrx4sSpUqHBJx42Pj1d8fLzS09MVGhp6SfsCAAAAAAAAAAAALrdSV/hr166djMn/wYk5RowYoREjRlymiAAAAAAAAAAAAIDSr9CFvwcffLDQO92wYUORggEAAAAAAAAAAABQNIUu/L3xxhsu7dhisbgcDAAAAAAAAAAAAICiKXThz2azlWQcAAAAAAAAAAAAAC6B1d0BlBYJCQmKiYlRXFycu0MBAAAAAAAAAAAAXEbh7y/x8fHavn271q9f7+5QAAAAAAAAAAAAAJcV6lafMTExGjdunAYMGCAfH59C7fjs2bP66KOP9O9//1vbt2+/pCABAACASzHl+BR3h+CSkeEj3R0CAAAAAAC4AhWq8Dd06FCNHj1aI0eOVM+ePdWpUyc1adJENWrUUEBAgCQpIyNDSUlJ2rBhg5YsWaKvvvpKPj4+Gjt2bIkmAAAAAAAAAAAAAKCQhb9HHnlE9913n9577z0lJibq/fffl8ViOb8D7/O7yMrKkiQZY3TNNddo4sSJGj58uEJCQkoodAAAAAAAAAAAAAA5ClX4k6Tg4GCNGjVKo0aN0t69e7VmzRrt3LlTx44dkyRFRESoXr16atWqlWrUqFFiAQMAAAAAAAAAAADIq9CFv9yio6MVHR1dzKEAAAAAAAAAAAAAKCqruwMoLRISEhQTE6O4uDh3hwIAAAAAAAAAAAC4jMLfX+Lj47V9+3atX7/e3aEAAAAAAAAAAAAALqPwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAB6DwBwAAAAAAAAAAAHgACn8AAAAAAAAAAACAByhS4W/Lli36+OOPHdq+/vprXX/99WrRooWmTJlSLMEBAAAAAAAAAAAAKJwiFf4eeeQRzZ492/5zUlKSevXqpaSkJEnS6NGj9fbbbxdPhAAAAAAAAAAAAAAuqkiFv61bt+raa6+1/zxr1ix5eXlp8+bNWrt2rfr27au33nqr2IK8HBISEhQTE6O4uDh3hwIAAAAAAAAAAAC4rEiFv7S0NEVERNh/XrhwoW644QZFRkZKkm644Qbt3r27eCK8TOLj47V9+3atX7/e3aEAAAAAAAAAAAAALitS4a9SpUrasWOHJCk5OVkbN25U586d7ctPnjwpq7VIuwYAAAAAAAAAAABQBN5F2ejmm2/W66+/rjNnzmjt2rXy9fVVr1697Mu3bt2qq666qtiCBAAAAAAAAAAAAFCwIhX+nn32WaWkpOj9999XWFiYEhMTVaFCBUlSenq6Pv/8c8XHxxdroAAAAAAAAAAAAACcK1LhLygoSB9++KHTZX/88YcCAwMvKTAAAAAAAAAAAAAAhVekB/ENHz5ca9euzX+HVqt++eUX3XPPPZcUGAAAAAAAAAAAAIDCK1LhLzExUXv27HG6PCkpSTNnzixyUAAAAAAAAAAAAABcU6TC38UcPHhQ/v7+JbFrAAAAAAAAAAAAAPko9DP+5s2bp3nz5tl/fvvtt7VkyZI866WmpmrJkiWKi4srnggvk4SEBCUkJCg7O9vdoQAAAAAAAAAAAAAuK3Thb/v27frss88kSRaLRWvXrtXGjRsd1rFYLAoMDNT111+vV155pXgjLWHx8fGKj49Xenq6QkND3R0OAAAAAAAAAAAA4JJCF/4ee+wxPfbYY5Ikq9Wq9957T7fddluJBQYAAAAAAAAAAACg8Apd+MvNZrMVdxwAAAAAAAAAAAAALkGRCn85fvzxRy1btkxHjhzR/fffr9q1a+vUqVPauXOn6tSpo6CgoOKKEwAAAAAAAAAAAEABrEXZKDMzU71791abNm30xBNP/H979x4n53z3j/89uzmKnE+IIAfEahIqoUKR+3Y+lTp93T8ErVJLQqqKklDq0Lsot9VQxd27pVot2rpvt96qB6UkRIKtCFJ1yvmwsTnvXr8/JJPdZCfZ3exm5hrP5+PRR+1nJrPva157feb6zHuua+LOO++M999//9MHLCmJww8/PO64444WLRQAAAAAAADIrVmNv2uuuSZ+97vfxQ9/+MOYMWNGJEmSva1Dhw5xyimnxBNPPNFiRQIAAAAAAACb1qzG38MPPxxf//rX42tf+1r06NFjo9v32GOPePfdd7e4OAAAAAAAAKBxmtX4mzt3bgwdOjTn7aWlpbFs2bJmFwUAAAAAAAA0TbMaf/37948333wz5+1//etfY/Dgwc0uCgAAAAAAAGiaZjX+/u3f/i3uueeeeOGFF7JjmUwmIiJ+9KMfxS9+8Ys466yzWqZCAAAAAAAAYLPaNOcfffvb346//e1vcdBBB8Uee+wRmUwmLr300li4cGF88MEHcfTRR8ell17a0rUCAAAAAAAAOTTrjL927drFU089FQ888EAMHDgwhgwZEitXroxhw4bFgw8+GL/97W+jtLS0pWttVRUVFVFWVhYjR47MdykAAAAAAADQZM064y/i00t7nnHGGXHGGWe0ZD15U15eHuXl5VFVVRVdu3bNdzkAAAAAAADQJM1u/G0oSZJ49tlnY+XKlXHggQdG586dW+qhAQAAAAAAgM1o1qU+v/3tb8fo0aOzPydJEocffngcdthhccwxx8TQoUPjnXfeabEiAQAAAAAAgE1rVuPvV7/6Vey7777Znx999NF45pln4oYbbojf/e53UVNTE9dee21L1QgAAAAAAABsRrMu9fnhhx/G4MGDsz//+te/jrKysrjyyisjIuLrX/96/PCHP2yZCgEAAAAAAIDNatYZf23atImVK1dGxKeX+XzmmWfiyCOPzN7et2/fmD9/fstUCAAAAAAAAGxWsxp/n/vc5+KnP/1pLFq0KB544IFYsGBBHHPMMdnb33vvvejVq1eLFQkAAAAAAABsWrMu9TlhwoQ47rjjss29Aw44IEaPHp29/cknn4yRI0e2TIUAAAAAAADAZjWr8XfYYYfFK6+8Er///e+jW7ducdppp2VvW7RoURx00EHxpS99qcWKBAAAAAAAADatWY2/iIiysrIoKyvbaLx79+5x++23b1FRAAAAAAAAQNM0q/G3dOnSWLx4cfTv3z879tFHH8WkSZNi5cqVcfLJJ7vUJwAAAAAAAGxFzWr8fe1rX4tZs2bF3/72t4iIqKqqii984QvxwQcfRElJSdxxxx3x1FNPxSGHHNKStQIAAAAAAAA5lDTnHz333HNx7LHHZn/+6U9/Gh999FE8//zzsWjRohg2bFjccMMNLVYkAAAAAAAAsGnNavzNnz8/+vXrl/35N7/5TRx44IHxhS98ITp37hxnnXVWTJs2rcWKBAAAAAAAADatWY2/bt26xezZsyMiYvny5fGXv/wlDj/88Oztbdq0iWXLlrVMhVtJRUVFlJWV+W5CAAAAAAAAUqlZ3/E3atSouPvuu2PIkCHx1FNPxYoVK+JLX/pS9va33nqr3hmBaVBeXh7l5eVRVVUVXbt2zXc5AAAAAAAA0CTNavzdcsstcfjhh8dJJ50UERHf+MY3Ys8994yIiJqamvjlL38ZRx55ZMtVCQAAAAAAAGxSsxp/gwcPjhkzZkRlZWV07do1dtlll+xty5Yti7vuuiv22muvFioRAAAAAAAA2JxmfcdfRETbtm1j+PDh9Zp+ERGdO3eOAw44IH77299uaW0AAAAAAABAIzW78behZcuWxUMPPRTHHHNM9OvXL8aNG9dSDw0AAAAAAABsRrMu9blObW1t/O///m/87Gc/iyeeeCKWLVsWgwcPjrFjx8Zxxx3XUjUCAAAAAAAAm9Gsxt/f/va3+NnPfha/+MUvYv78+bHzzjvHsmXL4t57742vfOUrLV0jAAAAAAAAsBmNbvzNmDEjfvazn8VDDz0U7777bgwaNCjOO++8OP3006N9+/ax2267Rffu3VuzVgAAAAAAACCHRjf+ysrKYrvttovTTz89TjvttBg5cmT2tnfeeadVigMAAAAAAAAap6Sxd2zbtm0sWrQo3nvvvXj//fdj5cqVrVkXAAAAAAAA0ASNbvzNmTMn7rzzzpg3b16ccsop0adPnzjrrLPiqaeeitWrV7dmjQAAAAAAAMBmNLrx17Vr1/jqV78af/zjH+Mf//hHXHXVVTFt2rQ4+uijY999941MJhNvvvlmrFq1qjXrBQAAAAAAABrQ6MZfXf37949vfetbMW3atHj11VfjggsuiH79+sXVV18dvXr1ipNOOin+8z//s6VrBQAAAAAAAHJoVuOvrmHDhsX3vve9+Oc//xl/+MMf4tRTT41nn302zj333JaoDwAAAAAAAGiELW781XXIIYfEfffdF7Nnz45HH320JR8aAAAAAAAA2IQWbfyt065duzjxxBNb46EBAAAAAACABrRK4w8AAAAAAADYujT+AAAAAAAAoAho/AEAAAAAAEARaFTj784774y33nqrtWsBAAAAAAAAmqlRjb9LL700pkyZkv25tLQ0HnrooVYrKh8qKiqirKwsRo4cme9SAAAAAAAAoMka1fjr3r17zJkzJ/tzkiStVlC+lJeXR2VlZUyePDnfpQAAAAAAAECTtWnMnQ455JC49tpr49VXX42uXbtGRMRPfvKT+Nvf/pbz32QymbjjjjtapkoAAAAAAABgkxrV+Lv77rvjkksuiaeffjrmzp0bmUwmnn766Xj66adz/huNPwAAAAAAANh6GnWpzz59+sRDDz0UH3/8cdTU1ESSJPHTn/40amtrc/6vpqamtWsHAAAAAAAA1mpU429DDzzwQIwaNaqlawEAAAAAAACaqVGX+tzQmDFjsv9dWVkZ7733XkRE7LzzzlFWVtYylQEAAAAAAACN1qzGX0TEE088EePHj49//OMf9cYHDBgQt912Wxx//PFbWhsAAAAAAADQSM261Od///d/x0knnRQRETfeeGM89thj8dhjj8WNN94YSZLEl7/85XjqqadatFAAAAAAAAAgt2ad8Xf99dfHsGHD4i9/+Ut06tQpO3788cfHRRddFAceeGBcd911ceSRR7ZYoQAAAAAAAEBuzTrjb/r06TFmzJh6Tb91OnXqFGeffXZMnz59i4sDAAAAAAAAGqdZjb8OHTrEwoULc96+cOHC6NChQ7OLAgAAAAAAAJqmWY2/f/mXf4k77rgjXnjhhY1ue/HFF+POO++MQw89dIuLAwAAAAAAABqnWd/x973vfS/233//OPDAA2PfffeN3XffPSIiZsyYES+99FL06dMnbrnllhYtFAAAAAAAAMitWWf8DRgwIKZPnx5jx46NRYsWxSOPPBKPPPJILFq0KMaNGxfTpk2LXXbZpYVLBQAAAAAAAHJp1hl/ERF9+vSJ22+/PW6//faWrAcAAAAAAABohmad8QcAAAAAAAAUFo0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBFocuNv2bJlsc8++8SkSZNaox4AAAAAAACgGZrc+Ntmm21i1qxZkclkWqMeAAAAAAAAoBmadanPI488Mv73f/+3pWsBAAAAAAAAmqlZjb9rrrkm3nrrrTjzzDPjueeeiw8//DAWLly40f8AAAAAAACAraNNc/7RnnvuGRERlZWV8dBDD+W8X01NTfOqAgAAAAAAAJqkWY2/CRMm+I4/AAAAAAAAKCDNavxde+21LVwGAAAAAAAAsCWa9R1/G1qyZInLegIAAAAAAEAeNbvxN2XKlDjyyCNjm222iZ49e8af/vSniIiYP39+fOlLX4o//vGPLVVjk7z//vtxyCGHRFlZWQwbNix++ctf5qUOAAAAAAAA2Jqa1fh7/vnn48ADD4yZM2fGGWecEbW1tdnbevXqFUuWLIl77rmnxYpsijZt2sQPfvCDqKysjKeffjouueSSqK6uzkstAAAAAAAAsLU0q/F31VVXxR577BGVlZVx4403bnT76NGj48UXX9zi4ppj++23j7322isiIrbbbrvo1atXLFy4MC+1AAAAAAAAwNbSrMbf5MmT45xzzon27dtHJpPZ6PZ+/frF7Nmzm1XQn//85zjuuONihx12iEwmE48//vhG96moqIhddtklOnToEPvtt1+89NJLDT7Wyy+/HDU1NdG/f/9m1QIAAAAAAABp0azGX9u2betd3nNDH374YWy77bbNKqi6ujqGDx8eFRUVDd7+yCOPxPjx42PixInxyiuvxPDhw+OII46IuXPn1rvfwoUL46yzzop77723WXUAAAAAAABAmrRpzj/6whe+EI8++mhccsklG91WXV0dDzzwQBx88MHNKuioo46Ko446Kuftt912W5x33nlxzjnnRETEpEmT4sknn4z7778/rrjiioiIWLlyZZxwwglxxRVXxKhRozb5+1auXBkrV67M/lxVVRUREWvWrIk1a9ZERERJSUmUlJREbW1tvYbnuvGamppIkmSz46WlpZHJZLKPW3c8IqKmpqZR423atIkkSeqNZzKZKC0t3ajGXOO2yTbZJttkm2xTXrcpqY0kUxKR1EamTi1JJhOxifFMUhtRb7wkIpPJPV5bv8YkU5L9/Y0aLymNSJLIJLWRqVl7lYNMRFKSRCQRmdo6Vz5YN14bkUnWjyeZ5NOPWuUYz9RmItaX/uljZDYxXlP/agtJyad3qldLRDbj1vjbi6S2YHOqU/zav7Ec+RVKTjnGI6LV5oh1+RViThuP19Z7Lgstp6S04bkgIlptLo8kKcyccs3lDeRXKDnlmssjNs6vJV5zM7U1hZtTjrm8Xn4FllPOuTxy57clx0bZ/KLwcso1lzeYX6HklGsuj2iVY9hN5pfnnHLN5RvlFwWUU665PDbOryXWGpnamoLNqa66f2ONyi9fOTU0lydJ660Js2u/wssp13i9/Aopp1xzeY6132dy7V5TwDlZu29+Lm8ov0LJKQ9r9w2PgTacozelWY2/6667Lg4++OA45phj4vTTT4+IiGnTpsW7774b3//+92PevHlxzTXXNOehN2nVqlXx8ssvx5VXXpkdKykpiUMPPTReeOGFiPj0ST777LPjX/7lX+LMM8/c7GPedNNNcd111200PnXq1OjUqVNERPTu3TsGDRoUs2bNinnz5mXvs+OOO8aOO+4Yb731VixZsiQ7PnDgwOjTp0+8/vrrsXz58uz4kCFDolu3bjF16tR6fwjDhg2Ldu3axZQpU+rVMGLEiFi1alVMnz49O1ZaWhojR46MJUuWxJtvvpkd79ixYwwfPjzmz58f7777bna8a9eusccee8RHH30UH3zwQXbcNtkm22SbbJNtyuc29VzeNuZ32zm6LFsQXarX117dsVss6rxDdP9kdnRavjg7XtWpd1R16h09l7wfHVZVZ8cXdd4+qjt2j76LZkWbNes/yDO/206xot22scPCmZGpc9A0u8egqClpE/3mz6i3TR/22j1Ka9fEdgvfyY4lJSXxYa8h0WF1dfRa/M8oXdY7IiLWtF8TC3ddGB0WdYguH3XJ3n/Vtqti8S6Lo9P8TtFpbqfs+PLuy2Npv6XR+ePO0XFRx/Xb2qc6qvtUR9d/do12n7Rbv607VMWKHiui+zvdo83K9Ydqi3deHKs6r4peM3rVO9BcMHhB1Latjd5/711vm2r2r2m1v73uq7Yp2JzWWdOmfczuMSg6rVgc3Zd+nM2v0HKat8e8KFldEj3f7llnm5KIXtFqc0SXNV0LNqd1VrTrlJ0jutd5zgotp3ll86LdJ+2i23vd1m9T+zURPaPV5vJOtT0LMqdcc3mXOs9loeWUay6PntEqr7n9lqwq2JxyzeWd6jzHhZZTrrk8ekarHBv1W7KqYHPKNZe3r17/3BdaTrnm8ugZrXIM22/JqoLNKddc3mbZ+kwKLadcc3n0iFZZa+ywdE3B5pRrLi+tk1+h5dTQXL5k6JJWWxP2rc4UbE511Z0j1uVXaDnlmsuX77Pc2n3tHFF3niy0nKzdN/+a26vOc1NoOeVj7b7hMWx19fqsNieT1Pv4aOP94Q9/iK9//esxc+bMeuODBg2K++67r9ln/NUrLpOJxx57LE444YSI+HTx1a9fv3j++edj//33z97v8ssvjz/96U/x4osvxnPPPRcHHXRQDBs2LHv7f/3Xf8XQoUMb/B0NnfHXv3//WLBgQXTp8umEkOozKorxLBHbZJtsk22yTanfplunL0zXpwaT2ui48yNrNyodnxq8uOfFEdE6f3vfn76wYHOqU3y9TxZvlF+B5JRrfGyvsa02R6zLrxBz2ni8NrbZ6ed1Hruwcsr1CfCxPce22lz+/emLCjKnXHN5Q/kVSk655vKG8muJ19xbpy0o2JxyzeUd6+ZXYDnlmsvH9RzXKsdG2fyi8HLKNZc3mF+B5JRrLh/Xc1yrHMNuMr8CPZMse+wShZdTrrl8XI+N82uJtcat0xYUbE511f0ba1R+BXQm2cU9L261NeH6tV/h5ZRrvF5+BZRTrrk819rvs7h232anh9cPFlhO1u6bf81tML8CySkfa/cNj4GqqqqiZ8+esWTJkmzvKpdmnfEXEfEv//IvMWPGjJg6dWq8/fbbUVtbG4MGDYp99tknMpnM5h+glRx44IH1T2fdjPbt20f79u03Gm/Tpk20aVP/6Vn3RG9o3STa2PENH7c545lMpsHxXDU2ddw22aZc47bJNkXYplw1NnX8s7xN6w4CI1MSSUOHDTnGPz3YbMJ4ScPbmmSaMJ7JRJIp/XTBV288Nh6LiCiJSKLx4+sOHhs93tDvbGB83fFYq/ztbSa/fOaUa3yj561ActrUeKvNEWvzK8ScNh4vadJ+lo+ccs0FrTaXr923Cy6nXHN5A89NIeXUUvk15jW3bjYFl1OOuaBJ+eUhp1xzQWscG9XLr8ByyjWXN5hfAeWUa7w1jmE3m18ec8o1l29xfq2cU665oDXWGtn8CjCnhjR47BmFldOG45taOzR1fMNj2PVrv8LLKdd4o9d+BbImbE5+Rbt2L+Ccco1bu9cZL+CcNjW+td7fy7WPN6TZjb919t5779h777239GEapVevXlFaWhpz5sypNz5nzpzYbrvttkoNAAAAAAAAUIg2bh820sqVK+Ouu+6Ko48+OsrKyqKsrCyOPvrouOuuu2LFihUtWWNWu3btYp999olnnnkmO1ZbWxvPPPNMvUt/AgAAAAAAwGdNs874++CDD+Kwww6LGTNmxPbbbx+DBw+OiIhp06bFU089FXfddVf83//9X+y4445NfuxPPvkk3n777ezPs2bNildffTV69OgRO+20U4wfPz7GjBkTI0aMiH333Td+8IMfRHV1dZxzzjnN2RQAAAAAAAAoCs1q/JWXl8d7770Xv/jFL+Lkk0+ud9svf/nLGDNmTJSXl8cTTzzR5MeeMmVKjB49Ovvz+PHjIyJizJgx8eCDD8Zpp50W8+bNiwkTJsTs2bNjr732iqeeeir69u3bnE3JqqioiIqKio2+RBMAAAAAAADSoFmNv2eeeSYuvfTSjZp+ERGnnHJKvPLKK/Ef//EfzSrokEMOiSRp+IsT17nooovioosuatbj51JeXh7l5eVRVVUVXbt2bdHHBgAAAAAAgNbWrO/469y5c/Tp0yfn7dttt1107ty52UUBAAAAAAAATdOsxt8555wTDz74YCxbtmyj2z755JN44IEH4itf+coWFwcAAAAAAAA0TqMu9fnrX/+63s977713PPnkkzFkyJAYM2ZMDB48OCIiZs6cGT/5yU+iR48eMWzYsJavFgAAAAAAAGhQoxp/J598cmQymex379X97+9+97sb3f+DDz6I008/PU499dQWLBUAAAAAAADIpVGNv2effba168i7ioqKqKioiJqamnyXAgAAAAAAAE3WqMbfwQcf3Np15F15eXmUl5dHVVVVdO3aNd/lAAAAAAAAQJOU5LsAAAAAAAAAYMs16oy/hjz33HNx//33x7vvvhuLFi3KfuffOplMJqZNm7bFBQIAAAAAAACb16zG32233Rbf/OY3o0OHDrH77rtHjx49WrouAAAAAAAAoAma1fj793//9zjggAPit7/9re/DAwAAAAAAgALQrO/4W7ZsWfx//9//p+kHAAAAAAAABaJZjb/Ro0fHa6+91tK15FVFRUWUlZXFyJEj810KAAAAAAAANFmzGn//8R//Ec8880x8//vfj4ULF7Z0TXlRXl4elZWVMXny5HyXAgAAAAAAAE3WrMZf//794/zzz48rrrgievfuHZ06dYouXbrU+5/LgAIAAAAAAMDW06Y5/2jChAnx3e9+N/r16xcjRozQ5AMAAAAAAIA8a1bjb9KkSXHMMcfE448/HiUlzTppEAAAAAAAAGhBzerarVq1Ko455hhNPwAAAAAAACgQzercHXvssfGXv/ylpWsBAAAAAAAAmqlZjb+JEydGZWVlXHjhhfHyyy/HvHnzYuHChRv9L00qKiqirKwsRo4cme9SAAAAAAAAoMma9R1/u+++e0REvPrqq3HPPffkvF9NTU3zqsqD8vLyKC8vj6qqqujatWu+ywEAAAAAAIAmaVbjb8KECZHJZFq6FgAAAAAAAKCZmtX4u/baa1u4DAAAAAAAAGBLNOs7/gAAAAAAAIDC0qwz/r7zne9s9j6ZTCauueaa5jw8AAAAAAAA0EQtfqnPTCYTSZJo/AEAAAAAAMBW1KxLfdbW1m70vzVr1sQ777wTl156aYwYMSLmzp3b0rUCAAAAAAAAObTYd/yVlJTEgAED4vvf/37suuuucfHFF7fUQwMAAAAAAACb0WKNv7oOOuig+O///u/WeGgAAAAAAACgAa3S+JsyZUqUlLTKQ7eaioqKKCsri5EjR+a7FAAAAAAAAGiyNs35Rz/5yU8aHF+8eHH8+c9/jl//+tfx1a9+dYsK29rKy8ujvLw8qqqqomvXrvkuBwAAAAAAAJqkWY2/s88+O+dtvXr1iiuuuCImTJjQ3JoAAAAAAACAJmpW42/WrFkbjWUymejevXt07tx5i4sCAAAAAAAAmqZZjb+dd965pesAAAAAAAAAtkBJvgsAAAAAAAAAtlyjz/gbNmxYkx44k8nEtGnTmlwQAAAAAAAA0HSNbvz16NEjMpnMZu83e/bsmDFjRqPuCwAAAAAAALSMRjf+/vjHP27y9tmzZ8ctt9wS99xzT5SWlsaZZ565pbUBAAAAAAAAjdToxl8uc+bMiZtvvjnuvffeWL16dZxxxhnx7W9/OwYNGtQS9QEAAAAAAACN0OzG37oz/Oo2/K6++uoYOHBgS9YHAAAAAAAANEKTG3+zZ8+Om2++OX70ox/F6tWr48wzz4yrr746BgwY0Br1bTUVFRVRUVERNTU1+S4FAAAAAAAAmqyksXf8+OOPY9y4cTFw4MC4++674/TTT48ZM2bEj3/849Q3/SIiysvLo7KyMiZPnpzvUgAAAAAAAKDJGn3G36BBg2LlypWx1157xVVXXRUDBgyIRYsWxaJFi3L+m89//vMtUiQAAAAAAACwaY1u/K1YsSIiIqZOnRqnnnrqJu+bJElkMhmXzQQAAAAAAICtpNGNvwceeKA16wAAAAAAAAC2QKMbf2PGjGnNOgAAAAAAAIAtUJLvAgAAAAAAAIAtp/EHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPG3VkVFRZSVlcXIkSPzXQoAAAAAAAA0mcbfWuXl5VFZWRmTJ0/OdykAAAAAAADQZBp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4W6uioiLKyspi5MiR+S4FAAAAAAAAmkzjb63y8vKorKyMyZMn57sUAAAAAAAAaDKNPwAAAAAAACgCbfJdAAB8Vtyx6I58l9Bk47qPy3cJAAAAAEAjOeMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEWiT7wJInzsW3ZHvEppsXPdx+S4BAAAAAACgVTnjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUgaJs/J144onRvXv3OPnkk/NdCgAAAAAAAGwVRdn4GzduXPzkJz/JdxkAAAAAAACw1RRl4++QQw6Jzp0757sMAAAAAAAA2GoKrvH35z//OY477rjYYYcdIpPJxOOPP77RfSoqKmKXXXaJDh06xH777RcvvfTS1i8UAAAAAAAACkjBNf6qq6tj+PDhUVFR0eDtjzzySIwfPz4mTpwYr7zySgwfPjyOOOKImDt37lauFAAAAAAAAApHwTX+jjrqqLjhhhvixBNPbPD22267Lc4777w455xzoqysLCZNmhTbbLNN3H///Vu5UgAAAAAAACgcbfJdQFOsWrUqXn755bjyyiuzYyUlJXHooYfGCy+80KzHXLlyZaxcuTL7c1VVVURErFmzJtasWZP9HSUlJVFbWxu1tbX1fndJSUnU1NREkiSbHS8tLY1MJpN93LrjERE1NTWNGm/Tpk0kSVJvPJPJRGlp6UY15hrfkm3K1GSy40lJEpGJemPZ8YjI1DZyvDSJSDYYz6y9f67x2ohMUqeWTPJpK7uh8bXP42cpJ9tkm2xT4W1Tvfmztee9krWPsb709XN2rvEG5vINn/dNbWuTckpqI8mURCS1kanz/CaZTMQmxjNJbUS98ZKITCb3eG39GpNMSfb3N2q8pDQiSSKT1K5/fgowp4gGXluT9a9/dbXE/hRJbcHmVKf4tX9jOfIrlJxyjEdEq8176/IrxJw2Hq+tP3cWWE655vKIaLXXp0iSwswp11zeQH6FklOuuTxi4/xa4jgiU1tTuDnlmMsbXPsVSE455/LInd+WHO9l84vCyynXXG7tXuc1dFP55TmnXHP5RvlFAeWUay6PjfNriTVhpramYHOqq+7fWKPyK6Q1YZK03to9u/YrvJxyjadu7Z5j7feZXLvXFHBO1u6bn8sbyq9QcsrD2n3DY6AN5+hNSVXjb/78+VFTUxN9+/atN963b9948803sz8feuihMW3atKiuro4dd9wxfvnLX8b+++/f4GPedNNNcd111200PnXq1OjUqVNERPTu3TsGDRoUs2bNinnz5mXvs+OOO8aOO+4Yb731VixZsiQ7PnDgwOjTp0+8/vrrsXz58uz4kCFDolu3bjF16tR6fwjDhg2Ldu3axZQpU+rVMGLEiFi1alVMnz49O1ZaWhojR46MJUuW1Nvmjh07xvDhw2P+/Pnx7rvvZse7du0ae+yxR3z00UfxwQcfZMe3ZJt6V/XOji/eeXGs6rwqes3oVe+PfsHgBVHbtjZ6/339fSMi5u0xL0pWl0TPt3tmx5KSJOaVzYt2n7SLbu91y46vab8mFu66MDos6hBdPuqSHV+17apYvMvi6DS/U3Sa2yk7vrz78ljab2l0/rhzdFzUMTte3ac6omd85nKyTbbJNhXeNvVe/emcuDXmveo+1dH1n12j3SftsuNVO1TFih4rovs73aPNyvWHAJuay2tqalolp57L28b8bjtHl2ULokv1+jyqO3aLRZ13iO6fzI5Oyxevr71T76jq1Dt6Lnk/Oqyqzo4v6rx9VHfsHn0XzYo2a9Z/kGd+t51iRbttY4eFMyNT56Bpdo9BUVPSJvrNn1Fvmz7stXuU1q6J7Ra+kx1LSkriw15DosPq6ui1+J9RuuzT/Aoxp4Zec2v2r2m1/an7qm0KNqd11rRpH7N7DIpOKxZH96UfZ/MrtJxyHRtFr2i1ea/Lmq4Fm9M6K9p1ys4R3es8Z4WWU665PHpGq70+dartWZA55ZrLu9R5Lgstp1xzefSMVjmO6LdkVcHmlGsu71TnOS60nHLN5dEzWuV4r9+SVQWbU665vH21tfs6/ZasKticcs3lbZatz6TQcso1l0ePaJU14Q5L1xRsTrnm8tI6+RVaTg3N5UuGLmm1tXvf6kzB5lRX3TliXX6FllOuuXz5Pstb7T2WtK3d686ThZaTtfvmX3N71XluCi2nfKzdNzyGra5en9XmZJJ6Hx8tLJlMJh577LE44YQTIuLTxVe/fv3i+eefr9fIu/zyy+NPf/pTvPjii03+HQ2d8de/f/9YsGBBdOny6YRQCGeJ1JXvM18qFq3//sW0fGpwXM9xn7mcbJNtsk2Ft013L747O56KTw2WJDG2+9hWyenW6QvT9anBpDY67vzI2o0qvJwiNn5tvbjnxRHROvvT96cvLNic6hRf75PFG+VXIDnlGh/ba2yrzXvr8ivEnDYer41tdvp5nccurJxyzeVje45ttden709fVJA55ZrLG8qvUHLKNZc3lF9LHEfcOm1BweaUay7vWDe/Assp11w+rue4Vjney+YXhZdTrrm8wfwKJKetvXbfZH4FeiZZ9tglCi+nXHP5uB4b59cSa8Jbpy0o2Jzqqvs31qj8CmhNeHHPi1tt7b5+7Vd4OeUar5dfAeWUay7Ptfb7LK7dt9np4fWDBZaTtfvmX3MbzK9AcsrH2n3DY6Cqqqro2bNnLFmyJNu7yiVVZ/z16tUrSktLY86cOfXG58yZE9ttt12zHrN9+/bRvn37jcbbtGkTbdrUf3rWPdEbWjeJNnZ8w8dtzngmk2lwPFeNTR3f1DYlpclG4w2NNXk808TxkogkGj/+WcupsTU2ddw22aYI25Srxs2NbzSXtfK8t+6gpNHjDfzOXM97xJbltO4gMDIlkWQ2unvO8U8PNpswXtJwfkmmCeOZTCSZBl7/CiinhsYzmU+fkFbZnzaTXz5zyjW+0fNWIDltarzV5r21+RViThuPlzRpP8tHTrnmglZ7fVq7bxdcTrnm8obWDgWUU0vl15jjiLrZFFxOOeaCJuVXQGvC1jjeq5dfgeWUay63dm9CfnnMKddcvsX55Wmt0Rprwmx+BZhTQxo89ozCymnD8U2tHZo6vuEx7Pq1X+HllGs8bWv35uRXtGv3As4p17i1e53xAs5pU+Nb6z3LXPt4QzZ+lALWrl272GeffeKZZ57JjtXW1sYzzzyT81KeAAAAAAAA8FlQcGf8ffLJJ/H2229nf541a1a8+uqr0aNHj9hpp51i/PjxMWbMmBgxYkTsu+++8YMf/CCqq6vjnHPOyWPVAAAAAAAAkF8F1/ibMmVKjB49Ovvz+PHjIyJizJgx8eCDD8Zpp50W8+bNiwkTJsTs2bNjr732iqeeeir69u27Rb+3oqIiKioqNrqWLgAAAAAAAKRBwTX+DjnkkHpfAtyQiy66KC666KIW/b3l5eVRXl4eVVVV0bVr1xZ9bAAAAAAAAGhtqfqOPwAAAAAAAKBhGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0Phbq6KiIsrKymLkyJH5LgUAAAAAAACaTONvrfLy8qisrIzJkyfnuxQAAAAAAABoMo0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPG3VkVFRZSVlcXIkSPzXQoAAAAAAAA0mcbfWuXl5VFZWRmTJ0/OdykAAAAAAADQZBp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDG31oVFRVRVlYWI0eOzHcpAAAAAAAA0GQaf2uVl5dHZWVlTJ48Od+lAAAAAAAAQJNp/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+1qqoqIiysrIYOXJkvksBAAAAAACAJtP4W6u8vDwqKytj8uTJ+S4FAAAAAAAAmkzjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY2/tSoqKqKsrCxGjhyZ71IAAAAAAACgyTT+1iovL4/KysqYPHlyvksBAAAAAACAJtP4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAm3yXUChqKioiIqKiqipqcl3KQA53bHojnyX0GTjuo/LdwkAAAAAAJ8Jzvhbq7y8PCorK2Py5Mn5LgUAAAAAAACaTOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAAAAAAUAQ0/gAAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjb+1KioqoqysLEaOHJnvUgAAAAAAAKDJNP7WKi8vj8rKypg8eXK+SwEAAAAAAIAm0/gDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/AEAAAAAAEAR0PgDAAAAAACAIqDxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFIGibPz97ne/i9133z123XXXuO+++/JdDgAAAAAAALS6NvkuoKWtWbMmxo8fH88++2x07do19tlnnzjxxBOjZ8+e+S4NAAAAAAAAWk3RnfH30ksvxZ577hn9+vWLbbfdNo466qh4+umn810WAAAAAAAAtKqCa/z9+c9/juOOOy522GGHyGQy8fjjj290n4qKithll12iQ4cOsd9++8VLL72Uve2jjz6Kfv36ZX/u169ffPjhh1ujdAAAAAAAAMibgmv8VVdXx/Dhw6OioqLB2x955JEYP358TJw4MV555ZUYPnx4HHHEETF37tytXCkAAAAAAAAUjoL7jr+jjjoqjjrqqJy333bbbXHeeefFOeecExERkyZNiieffDLuv//+uOKKK2KHHXaod4bfhx9+GPvuu2/Ox1u5cmWsXLky+3NVVVVEfPpdgWvWrImIiJKSkigpKYna2tqora3N3nfdeE1NTSRJstnx0tLSyGQy2cetOx4RUVNT06jxNm3aRJIk9cYzmUyUlpZuVGOu8S3ZpkxNJjuelCQRmag3lh2PiExtI8dLk4hkg/HM2vvnGq+NyCR1askkn7ayGxpf+zx+lnKyTcW5TRvtf5GH/alk7WOsL339XNDQeMRnLqdc4/XyK7SccszlGz7vm9rWJuWU1EaSKYlIaiNT5/lNMpmITYxnktqIeuMlEZlM7vHa+jUmmZLs72/UeElpRJJEJqld//wUYE4RDcwFyfrXv7paYn+KpLZgc6pT/Nq/sRz5FUpOOcYjotXmvXX5FWJOG4/X1p87CyynXHN5RLTa61MkSWHmlGsubyC/Qskp11wesXF+LXEckamtKdyccszlDa79CiSnnHN55M5vS473svlF4eWUay63dq/zGrqp/PKcU665vFFrv0JbE8bG+bXE2j1TW1OwOdVV928sdWv3JGm991iya7/CyynXeOrW7jnWfp/JtXtNAedk7b75ubyh/Aolpzys3Tc8Btpwjt6Ugmv8bcqqVavi5ZdfjiuvvDI7VlJSEoceemi88MILERGx7777xuuvvx4ffvhhdO3aNf7nf/4nrrnmmpyPedNNN8V111230fjUqVOjU6dOERHRu3fvGDRoUMyaNSvmzZuXvc+OO+4YO+64Y7z11luxZMmS7PjAgQOjT58+8frrr8fy5cuz40OGDIlu3brF1KlT6/0hDBs2LNq1axdTpkypV8OIESNi1apVMX369OxYaWlpjBw5MpYsWRJvvvlmdrxjx44xfPjwmD9/frz77rvZ8a5du8Yee+wRH330UXzwwQfZ8S3Zpt5VvbPji3deHKs6r4peM3rV+6NfMHhB1Latjd5/X3/fiIh5e8yLktUl0fPtntmxpCSJeWXzot0n7aLbe92y42var4mFuy6MDos6RJePumTHV227Khbvsjg6ze8UneZ2yo4v7748lvZbGp0/7hwdF3XMjlf3qY7oGZ+5nHJt09sr3s6ONyunpTlyWpgjp7k5cvpw45yq+1RHt390i3aftMuOV+1QFecPOv8zl1Oubeq9en1W+dqfqvtUR9d/dt0opxU9VkT3d7pHm5XrX1oW77w4okd85nLKtU3r8ivEnHLN5TU1Na2SU8/lbWN+t52jy7IF0aV6fR7VHbvFos47RPdPZken5YvX196pd1R16h09l7wfHVZVZ8cXdd4+qjt2j76LZkWbNes/yDO/206xot22scPCmZGpc9A0u8egqClpE/3mz6i3TR/22j1Ka9fEdgvfyY4lJSXxYa8h0WF1dfRa/M8oXfZpfoWYU0Nzec3+Na22P3VftU3B5rTOmjbtY3aPQdFpxeLovvTjbH6FllOuuTx6RavNe13WdC3YnNZZ0a5Tdo7oXuc5K7Sccs3l0TNa7fWpU23Pgswp11zepc5zWWg55ZrLo2e0ynFEvyWrCjanXHN5pzrPcaHllGsuj57RKsd7/ZasKticcs3l7aut3dfpt2RVweaUay5vs2x9JoWWU665PHpEq6zdd1i6pmBzyjWXly5L19p9ydAlrfYeS9/qTMHmVFfdOWJdfoWWU665fPk+y1vtPZa0rd3rzpOFlpO1++Zfc3vVeW4KLad8rN03PIatrl6f1eZkknofHy0smUwmHnvssTjhhBMiYv339z3//POx//77Z+93+eWXx5/+9Kd48cUXIyLiN7/5TVx22WVRW1sbl19+eXzta1/L+TsaOuOvf//+sWDBgujS5dMJoRDOEqkr32e+VCxafxnWtHxqcFzPcZ+5nHJt092L717/3BRYTrk+lTGux8b5FXtOuWpvVH4F9mm0cT3GfeZyyjVeL78CyynXXD62+9hWyenW6QvT9anBpDY67vzI2o0qvJwiNp4LLu55cUS0zv70/ekLCzanOsXX+2TxRvkVSE65xsf2Gttq8966/Aoxp43Ha2ObnX5e57ELK6dcc/nYnmNb7fXp+9MXFWROuebyhvIrlJxyzeUN5dcSxxG3TltQsDnlmss71s2vwHLKNZeP6zmuVY73svlF4eWUay5vML8CyWlrr903mV+BnkmWPXaJwstpa6/db522oGBzqqvu31ij8iugNeHFPS9utfdY1q/9Ci+nXOP18iugnHLN5bnWfp/Ftfs2Oz28frDAcrJ23/xrboP5FUhO+Vi7b3gMVFVVFT179owlS5Zke1e5pOqMv8Y6/vjj4/jjj2/Ufdu3bx/t27ffaLxNmzbRpk39p2fdE72hdZNoY8c3fNzmjGcymQbHc9XY1PFNbVNSmmw03tBYk8czTRwviUii8eOftZxy1bjF+bVyTusm0Q191nLKNd7o/PKUU67xz1pOucY3eu4LLKeGfmeu5z1iy3JadxAYmZJIMhvdPef4pwebTRgvaTi/JNOE8UwmkkwDr38FlFND45nMp09Iq+xPm8kvnznlGt/oeSuQnDY13mrz3tr8CjGnjcdLmrSf5SOnXHNBq70+rd23Cy6nXHN5Q8cuBZRTS+XXmOOIutkUXE455oIm5VdAa8LWON6rl1+B5ZRrLrd2b0J+ecwp11xu7d5AfgWYU0MaPPaMwsppw/FNrR2aOr7hMez6tV/h5ZRrPG1r9+bkV7Rr9wLOKde4tXud8QLOaVPjW+s9y1z7eEM2fpQC1qtXrygtLY05c+bUG58zZ05st912eaoKAAAAAAAA8i9Vjb927drFPvvsE88880x2rLa2Np555pl6l/4EAAAAAACAz5qCu9TnJ598Em+//Xb251mzZsWrr74aPXr0iJ122inGjx8fY8aMiREjRsS+++4bP/jBD6K6ujrOOeecPFYNAAAAAAAA+VVwjb8pU6bE6NGjsz+PHz8+IiLGjBkTDz74YJx22mkxb968mDBhQsyePTv22muveOqpp6Jv375b9HsrKiqioqJioy/RBAAAAAAAgDQouMbfIYccEknS8BcnrnPRRRfFRRdd1KK/t7y8PMrLy6Oqqiq6du3aoo8NAAAAAAAArS1V3/EHAAAAAAAANEzjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIaf2tVVFREWVlZjBw5Mt+lAAAAAAAAQJNp/K1VXl4elZWVMXny5HyXAgAAAAAAAE2m8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/a1VUVERZWVmMHDky36UAAAAAAABAk2n8rVVeXh6VlZUxefLkfJcCAAAAAAAATabxBwAAAAAAAEVA4w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AAAAAAAAoAho/K1VUVERZWVlMXLkyHyXAgAAAAAAAE2m8bdWeXl5VFZWxuTJk/NdCgAAAAAAADSZxh8AAAAAAAAUAY0/AAAAAAAAKAJt8l1AoUmSJCIiqqqq8lxJ4VpRtSLfJTRZVak815Ffuskv3eS33opPlrbK47amTMrya819T36tT37rpS27CPnVJb/10pZdhPzqkt/WIb/15Lee/FqfY5f65Lde2vJLW3YR8qtLfpv5XWt7Vut6WJuSSRpzr8+QDz74IPr375/vMgAAAAAAACDr/fffjx133HGT99H420BtbW189NFH0blz58hkMvkup+BUVVVF//794/33348uXbrkuxyaSH7pJr90k1+6yS/d5Jdesks3+aWb/NJNfukmv3STX7rJL71kl27y27wkSWLp0qWxww47REnJpr/Fz6U+N1BSUrLZbikRXbp0sQOmmPzSTX7pJr90k1+6yS+9ZJdu8ks3+aWb/NJNfukmv3STX3rJLt3kt2ldu3Zt1P023RYEAAAAAAAAUkHjDwAAAAAAAIqAxh9N0r59+5g4cWK0b98+36XQDPJLN/mlm/zSTX7pJr/0kl26yS/d5Jdu8ks3+aWb/NJNfuklu3STX8vKJEmS5LsIAAAAAAAAYMs44w8AAAAAAACKgMYfAAAAAAAAFAGNPwAAAAAAACgCGn8AAAAAAABQBDT+AIpEkiT5LoEtUFNTk+8S4DOptrY23yWwBVasWBERckw7xzDpJTsAPmu89qWbdUO62f8aT+OPFmcHhK1r1apVERGxcuXKiLAPps3s2bMjIqK0tFTzL4VmzpwZr776ar7LoJneeeeduOuuu2LevHn5LoVmqKysjCFDhsS0adOipMSyJm2qqqpi0aJFMXv27MhkMt6ESZk1a9ZExPrjTvmlx4ZrBWsHgMZZt143b6bT/PnzIyKipKTEey8p9M4778SiRYsik8nku5TUsEKmRXzwwQfx8ssvR0TYAVPo7bffjhtvvDHGjBkT9913X/zjH//Id0k00ptvvhnnn39+HHHEEXH++efH66+/bh9MkXfeeSd22GGHOProoyNC8y9tpk2bFrvvvnu88MIL+S6FZpg+fXrst99+8d5772UXgd64To9XX301vvjFL8Y///nP+P3vfx8R8kuTN954I4499tj413/91xg2bFg8/fTTmrcp8ve//z3Gjh0bp5xySlx66aXxwgsvyC8lZsyYERMnToyzzz477rvvvnjzzTc13lNkzpw58dZbb+W7DJpp1qxZMWnSpBg/fnz8/ve/zx5/kg5vvfVWXHbZZXHSSSfFDTfcELNmzcp3STTBW2+9FQMHDoyvfe1rEeG9l7SZNm1a7LrrrvHYY4/lu5RUcXTOFpsxY0aMGDEivv71r8dzzz2X73Jootdffz1GjRoV06ZNi5kzZ8a9994bt9xyS1RXV+e7NDbjtddei1GjRkX79u1j0KBBMWfOnLjtttti9erVPoGWEnPnzo0dd9wx3n777TjyyCMj4tMDUG++FL5p06bFqFGj4vLLL4+vf/3r+S6HJvr444/jy1/+cowZMyZuvfXW2GOPPSJi/ZnTFLZp06bF/vvvH5dcckmMGzcuJk2aFGvWrImSkhKvfynw5ptvxsEHHxxf+MIX4pvf/GaceOKJcdFFF0VVVVVE+BR9oXvjjTfigAMOiCRJonfv3jFnzpw46KCD4r777rN+KHCVlZWx3377RWVlZcycOTPuu+++OOyww+KZZ54xf6bA3//+99h3333jmmuuiTfeeCPf5dBEr732Whx44IHxm9/8Jn73u9/FxRdfHPfff3/U1tba91Jg3XsvixYtitra2vif//mfePjhhyNJEvmlRGVlZXTs2DFee+21OP/88yPCey9pMW3atDjggAPi8ssvj3PPPTff5aSKxh9bZPbs2XHBBRfE4MGDo1evXnH99dfHX/7yl3yXRSO9//77cdppp8VXvvKVeOSRR+L555+Ps88+O55++ulYsmRJvstjE2bNmhUnnnhiXHjhhTFp0qS4++67Y//9949MJhNt27aNZcuWRYSzHwpZkiSRyWRi2223jeuuuy5mzZoVxxxzTER8eumJjz76KM8Vksubb74ZI0aMiLFjx8bNN98cSZLEr3/967jpppvi5z//uU9ip8D06dOjb9++ceutt0ZtbW2MHTs2jj322Dj44IPjv/7rv7LfG0fhefXVV2PEiBFx6aWXxjXXXBPjxo2LVatWxe233x4RrjxR6NasWRM33XRTHHPMMfG9730vTj/99DjllFNi6NChUVNTEx988IEMC9jKlStj4sSJccYZZ8QPf/jDuPvuu+P222+PwYMHR3l5edxzzz0RoXlbiGpqauKmm26KY489Nh599NH461//GpMmTYojjjgijjjiiHjyySed+VfAPvroo/jqV78a3bt3j3/84x9x++23x+uvv57vsmik9957L0466aQ4++yz44knnoi33norTjzxxPjRj34Uq1at8rpX4N5999047rjj4oILLogHH3wwHnvssdhzzz1jzpw5kclknDWWEu3bt49u3brFCSecEC+88EJccMEFEfHpey+ffPJJnqsjl3XvvXzrW9+Km2++OWpra+MPf/hD3HvvvfH888/Hhx9+mO8SC5rGH1vkgw8+iNLS0vje974XY8eOjdLS0rjhhhs0/1IgSZJ49tlnY7fddosLLrggu8j7yle+EhGffhqGwjV58uQ44IADYuzYsdmxqqqqmDJlSuy3335x5JFHxv/+7//69G4By2QyMWzYsCgrK4uDDz44brnllnjrrbfiy1/+cpx77rlx7733Zhu4FJY//elPUVNTEwceeGDU1tbG6NGj4+abb45JkybFjTfeGEcffbTLfxa4BQsWRJs2bSIi4pBDDomZM2fG8OHDY7/99osxY8bEzTffHBHevC40S5cujauvvjouu+yyuPHGGyMiomfPnrHXXnvFs88+m+fqaIw1a9bErFmzYuDAgdmx5557Lp599tk46KCD4nOf+1xcd911zr4tUKtXr46ZM2fGnnvuGRGf5rn99tvHAQccEIceemhcdtll2QYShaW2tjbef//96N+/f3Zsr732iptuuim+9rWvxcknnxx/+9vfXLK1QL355pvRuXPn+M///M+48MILY+rUqfGDH/xA8y8Fampq4oknnoi99947Lr744uw+dskll8SqVati5syZea6QTampqYnf//738a//+q/xjW98I7s26NixY7z++utxyCGHxDnnnBPPP/98nitlc4YOHRr77LNPfPWrX41zzjknXnjhhfjGN74R5557bvzsZz+L1atX57tENlBbWxu/+MUvoqamJk4++eSIiDjssMNi/Pjxcfnll8dZZ50VY8aMienTp+e50sLVJt8FkG4jRoyIW2+9NYYPHx4Rn+6Ud911V9xwww3x7W9/Ow466KDseElJSfb/yb9MJhO9evWKI488MnbeeeeI+PQNztWrV8fKlStj8eLF+S2QTTr88MNj+PDh0adPn4iI+Pd///e4++674+abb44OHTrEtGnT4vjjj48pU6bE0KFD81wtuZSWlsa7774bU6dOjRNOOCG6du0aX/7yl2PJkiUxbdq02GabbWLNmjXZBgWF4fzzz4/Zs2fHl770pdhll11ir732ihtvvDEGDRoUr7zySvz7v/97jB07Np588snsPkph6dGjR7z00kvxk5/8JHr37h0//OEPs1ntu+++MWbMmDjssMPigAMOyHOl1NW5c+e47bbbYrfddouIT48vO3fuHN/61rfii1/8YvzqV7+Kk046Kc9VsikdOnSIvffeO2699dbo3bt3VFZWxv333x/3339/DBkyJCorK+OMM86IYcOGxYknnpjvctlA+/btY+edd47JkyfH6aefHl26dIn33nsvnnjiiXjooYeiT58+cdNNN8Xo0aNjm222yXe51NG2bdv43Oc+F3/6059i0aJF0b1794iI6N27d1x55ZUxd+7cuP766+Phhx+OLl265LlaNjRq1KiYOHFiDB8+PIYPH5593+UHP/hBjBs3LrveW3dFEQpHaWlpdO3aNQ444IDYbrvtsuOZTCaqqqpiwYIFeayOzSktLY3DDz88DjzwwOy8+Z3vfCfuu+++mDBhQqxYsSJmzJgRZ555Zvzf//1fDBgwIM8Vk0uPHj3ijTfeiPfffz/OP//82HbbbePKK6+MhQsXxqWXXhpt27aNmpqaKC0tzXeprFVSUhLnn39+fPjhh7H33nvHrrvuGrvttlvcdtttUVZWFr/73e9i0qRJccMNN8T9998f2267bb5LLjg6MDRL3UuArGv6RUQcffTR2U8x3Xjjjdkz/8aPHx8vvviipl+BWHcpgqOPPjp7beu6lx3cbrvtol27dtn7/+QnP3HpugKxLrtu3brF7rvvHhGR/aTgb37zmxg3blycf/758c1vfjN69eoVr776ah6rZUN1584kSaJ9+/YxbNiw7KfLfvSjH0VJSUn0798/JkyYEBGh6VdA6l7GZeLEiXHdddfFNttsE1dffXXstttuUVpaGiNHjoxTTz01Zs2aFXPmzMljtWyo7v53+OGHxwknnBDXXntt/P3vf49OnTpFTU1N1NbWxplnnhl77bVXvPTSS3mslg2tmyfXNf0iIntW+7Bhw+K4446LJ554IpYvX+5SdQWobibjxo2Ls846K1544YV44YUX4jvf+U78v//3/2KvvfaKf/u3f4tRo0bF008/ncdq2dC6/Nq2bRv/+q//Gm+88UYce+yxcdVVV8Wee+4ZJ598chx22GFxxBFHxIcffuhT8wXqoIMOihUrVsQDDzwQS5cuzY73798/jjvuuHj11Vd93UOB6tChQ3zhC1/I/nzOOefE2LFjY+rUqXHHHXdkz/y7/vrrnflQgMaMGZO9Us+6M8a6dOkS2223Xb0PSfzmN7+J999/Py81ktuAAQOirKwsIj695PWLL74Yjz76aFx55ZVx3XXXxUUXXRSffPJJvP3223mulFxWr14d7du3j+222y4++eST2GabbeKZZ56J1atXx+DBg+O+++6LiND0K0B9+/aNG264Ib7yla9Ehw4d4oYbbojhw4dH27Zt48QTT4yjjjoq/vKXvzh+ycG7iTTJ4sWLo1u3bg2evbeucXTUUUdFJpOJO++8M2688cbo0KFDPPHEEzFmzJg8Vk7E+vxKS0s3Oouo7icD614e8tvf/nb8x3/8R7z88stbvV7Wq5td3U8hJUkS7dq1i0mTJtXbLzOZTGy//fb1LudD/jQ0d67b5/bcc8949dVX49FHH41nn302/vu//zsWLFgQZ555Zpx22mnxyCOP5Ll6cu1/3/72t+OYY46JIUOGRMT6s9t32GGH6N27t7MdCkRD+19JSUl8+ctfjhkzZsTf//73eOedd2LYsGER8WmO2267bfZTveTXuvzatm3b4JUjMplMdO7cOQ499NC48sorY8KECTF48GBnPRSIuvvfuvlz4MCBcdddd8WKFSvi4IMPzp4BUVNTk/1QjE/MF4a6+a1bO4wbNy66d+8ef/jDH+Ktt96K7373uzFu3LiI+PSMQGeLFYaPPvooXnnllVi1alXstNNOMWLEiDj11FPjj3/8Y/zoRz+Kjh07xmmnnRY9evSIiIiRI0fGNttsU68hSP7UzW/nnXeOffbZJzKZTCRJEkmSRElJSfb9lTvvvDPuuOOOqKqqikcffTR7OTTyp6H9LyLqrSPWHY+uO1a56qqr4oEHHogXX3wxb3XzqVz7X01NTbRv3z5++9vf1ltX9OjRI/r27ZudT8mvuvntsssu8fnPfz7atm0bERH77LNPvP3223HvvffGn//85/jtb38br732Wtx8883Rpk2buPXWW/NcPQ3Nn717946rr7463nvvvRg0aFBErJ9PBw8eHN27d6938gp1JNBIlZWVyYABA5JrrrkmO1ZTU1PvPrW1tdn//u1vf5t079496datW/Lqq69utTppWGPyS5IkWb58eTJw4MDkscceS26++eakQ4cOyZQpU7ZmqWygqftekiTJVVddlQwfPjz5+OOPt0qN5La5/O67774kk8kku+66a/Lyyy8nSZIkK1asSJ588slk5syZW71e6msovzVr1mzy33zjG99IRo0alSxatKiVq2NzGspv9erV2f/+r//6r2T33XdPunTpkjz++OPJ//3f/yVXX311suOOOybvvvtuPkqmjqa8/tXW1iajRo1KzjzzzGTVqlVbtU4a1pj58ytf+UpyzDHHJLNmzUrmz5+fTJw4MenXr5/XvwLQUH4rV66sd58N97ULLrggOfzww5Nly5ZtlRpp2PTp05OBAwcm++67b9KrV69kxIgRycMPP5y9/eyzz06GDh2aXHLJJcnbb7+dzJs3L7n88suT3XbbLZk/f34eKydJGs7vl7/8Zb371H0t/PGPf5y0bds26dq1azJ16tStXC0bakx+SZIkixYtSnr37p389a9/Ta6//vqkQ4cOyeTJk/NQMXU1Jr8N33u54oorkpEjRybz5s3bmqXSgM3ld+211yaZTCYZMGBA9r2XRYsWJXfffXfyzjvv5Kts1moov1/84hfZ2zfc95IkScaNG5ccdthhySeffLI1S00NjT8a5Z///Gey1157Jbvuumvyuc99LrnuuuuytzX0BkxNTU1yySWXJJ07d05ee+21rV0uG2hKfjU1NcmBBx6Y7Lnnnsk222zj4DPPmpJdkiTJm2++mVx66aVJ9+7dNdwLwKbyq/vm57e+9S0N9gLU2PzW+fvf/55ccsklSffu3ZNp06ZtzVJpwKbyq/vm9V/+8pdkzJgxybbbbpuUlZUlw4YNS1555ZV8lEwdTX39S5IkOe+885L99tvPwq8ANDa/n/70p8nBBx+ctGvXLvnCF76Q7LTTTva/ArCp/Op+eGLdGzB//etfk/Ly8qRLly5e//Ls7bffTnbcccfk8ssvTxYvXpxMmTIlGTNmTHLuuecmK1asyN7vuuuuS774xS8mmUwm2WeffZLtttvOvlcANpXfmjVr6r3pWVtbm6xZsyYZO3Zs0r179+T111/PY+UkSdPyW7p0abL33nsnhxxyiA9bF4im5JckSfLee+8l3/zmN639CsSm8lt37LJ69erkwgsvTF566aUkSdYfx+RaW7D1NGf/u+yyy5IePXok06dPz1PVhU/jj82qra1NbrnlluToo49Onn766WTixInJkCFDNvkG6PTp05N+/fo5eCkATc1v9erVyahRoxy8FICmZvf6669nP20mu/xrTH7Lly/PY4VsSlP3v+nTpyeXXnppMnToUE33AtCY/DY8c2XmzJnJ7NmzkwULFmztctlAc449kyRJlixZ4tO6BaAx+dU9U+y1115LfvzjHye/+tWvkvfeey8fJVNHU/e/mpqa5Iknnkj2339/r395tnLlymT8+PHJqaeeWu817sc//nHSs2fPjc7mmz9/fvI///M/yXPPPZe8//77W7tcNtDU/JIkSV566aUkk8n4sG4BaGp+ixcvTnbeeeekR48e5s4C0NT8Jk+enFx44YXJ8OHD5VcAmjN/Ujiamt+LL76YnHvuucmQIUOc6b4ZvuOPzcpkMnHWWWdF375947DDDovhw4dHRMTDDz8cSZLExIkTo7S0tN73rgwdOjQqKyt9x0MBaGp+bdq0ia9+9avxxS9+MQYPHpzn6j/bmprdnnvuGWeccUZceuml0adPnzxXT2Py69ChQ73veqBwNHX/Gzp0aJx11llx+eWXZ7+vivxpTH7t2rWr9323gwYN8p1wBaI5x55r1qyJLl26OPYsAI3Jr23btrF69epo27ZtfO5zn4vPfe5zea6adZq6/5WUlMTxxx8fo0ePjs6dO+e5+s+22tra2HHHHWOPPfaIdu3aZb/rdNSoUbHtttvG6tWrs/crKSmJnj17xpFHHpnnqlmnsfnVNXLkyFi4cGF069Zt6xdMPU3Nr2vXrnHeeefFSSedlP2+cPKnqfmNGDEili9fHldffXVsv/32eaqadZozfzb03eHkR1Pz23fffWPp0qXxne98J/r165enqlMiD81GisBHH32U/fTntddemx1//PHHs5/gbejauxSGXPn96le/ymNVNIbs0m1Tc6fLSxQ++1+62f/STX7pliu/xx57bLPfm0r+yS896n4/7br1+Mcff5wMHjw4+ec//5m9zWU9C1Nz8vO+S+FobH7O0CxMjc3Plc0Kk9e/dLP/tQ5n/NGgjz/+ON5///1YtGhRHHroodmzUWprayOTycT2228fX/va1yIi4uc//3kkSRJLliyJO+64Iz744IPYYYcdfGo+j1oiP/JDdukmv3STX7rJL93kl27ySzf5pde67BYuXBiHH354DBgwICKi3hUllixZEosWLcr+mwkTJsRdd90VM2fOjB49eli355H80k1+6Sa/dJNfuslvK8lby5GCNW3atGTnnXdOdtttt6Rr167JkCFDkoceeij7nTc1NTXZ7vtHH32UTJgwIclkMkn37t113guA/NJLdukmv3STX7rJL93kl27ySzf5pdfmsluX24wZM5LevXsnCxcuTK6//vqkY8eOsisA8ks3+aWb/NJNfukmv61H44965s6dmwwZMiS56qqrknfeeSf58MMPk9NOOy3ZY489kokTJyZz585NkqT+5STOPPPMpEuXLskbb7yRr7JZS37pJbt0k1+6yS/d5Jdu8ks3+aWb/NKrsdklSZLMmTMn2XvvvZPTTjstadeunTfNCoD80k1+6Sa/dJNfuslv69L4o5433ngj2WWXXTbamb71rW8lQ4cOTb73ve8l1dXV2fH77rsv6datm2skFwj5pZfs0k1+6Sa/dJNfuskv3eSXbvJLr6ZkV1lZmWQymaRjx47J1KlT81AtG5Jfuskv3eSXbvJLN/ltXSX5vtQohWX16tWxZs2aWLZsWURELF++PCIibr755hg9enT88Ic/jLfffjt7/2OPPTZeeeWV2HvvvfNSL/XJL71kl27ySzf5pZv80k1+6Sa/dJNfejUlu+7du8eFF14Yr7zySuy11175Kpk65Jdu8ks3+aWb/NJNfltXJkmSJN9FUFj23Xff2HbbbeMPf/hDRESsXLky2rdvHxERI0eOjMGDB8fDDz9c7ws3KRzySy/ZpZv80k1+6Sa/dJNfuskv3eSXXo3NLiJixYoV0aFDh7zVysbkl27ySzf5pZv80k1+W48z/j7jqqurY+nSpVFVVZUdu+eee+KNN96If/u3f4uIiPbt28eaNWsiIuKggw6K6urqiAgLvwIgv/SSXbrJL93kl27ySzf5pZv80k1+6bUl2UWEN83yTH7pJr90k1+6yS/d5JdfGn+fYZWVlfHlL385Dj744Nhjjz3iZz/7WURE7LHHHnHHHXfE73//+zjllFNi9erVUVLy6Z/K3Llzo1OnTrFmzZpwsmh+yS+9ZJdu8ks3+aWb/NJNfukmv3STX3rJLt3kl27ySzf5pZv80k1++dcm3wWQH5WVlXHQQQfFWWedFSNGjIiXX345zjnnnCgrK4u99947jj/++OjUqVNceOGFMWzYsBgyZEi0a9cunnzyyfjb3/4Wbdr408kn+aWX7NJNfukmv3STX7rJL93kl27ySy/ZpZv80k1+6Sa/dJNfusmvMPiOv8+ghQsXxumnnx5DhgyJO+64Izs+evToGDp0aNx5553ZsaVLl8YNN9wQCxcujA4dOsTXv/71KCsry0fZrCW/9JJduskv3eSXbvJLN/mlm/zSTX7pJbt0k1+6yS/d5Jdu8ks3+RUO7dPPoNWrV8fixYvj5JNPjoiI2traKCkpiQEDBsTChQsjIiJJkkiSJDp37hy33HJLvfuRX/JLL9mlm/zSTX7pJr90k1+6yS/d5Jdesks3+aWb/NJNfukmv3STX+HwbH4G9e3bN37605/GF7/4xYiIqKmpiYiIfv36ZXewTCYTJSUl9b58M5PJbP1i2Yj80kt26Sa/dJNfuskv3eSXbvJLN/mll+zSTX7pJr90k1+6yS/d5Fc4NP4+o3bdddeI+LSb3rZt24j4tNs+d+7c7H1uuummuO+++2LNmjURYQcsJPJLL9mlm/zSTX7pJr90k1+6yS/d5Jdesks3+aWb/NJNfukmv3STX2Fwqc/PuJKSkkiSJLtzreu8T5gwIW644YaYOnWqL9QsYPJLL9mlm/zSTX7pJr90k1+6yS/d5Jdesks3+aWb/NJNfukmv3STX345449IkiQiItq0aRP9+/eP73//+/G9730vpkyZEsOHD89zdWyO/NJLdukmv3STX7rJL93kl27ySzf5pZfs0k1+6Sa/dJNfuskv3eSXP1qqZLvtbdu2jR/96EfRpUuXeO655+Lzn/98niujMeSXXrJLN/mlm/zSTX7pJr90k1+6yS+9ZJdu8ks3+aWb/NJNfukmv/xxxh9ZRxxxREREPP/88zFixIg8V0NTyS+9ZJdu8ks3+aWb/NJNfukmv3STX3rJLt3kl27ySzf5pZv80k1+W18mWXe+JUREdXV1dOrUKd9l0EzySy/ZpZv80k1+6Sa/dJNfuskv3eSXXrJLN/mlm/zSTX7pJr90k9/WpfEHAAAAAAAARcClPgEAAAAAAKAIaPwBAAAAAABAEdD4AwAAAAAAgCKg8QcAAAAAAABFQOMPAAAAAAAAioDGHwAAAAAAABQBjT8AAAAAAAAoAhp/AAAANOioo46K7t27x5w5cza6bcmSJbH99tvHfvvtF7W1tXmoDgAAgA1p/AEAANCgu+++O1atWhWXXnrpRrddddVVMX/+/Lj33nujpMTSEgAAoBBYnQEAANCgAQMGxMSJE+Phhx+Op59+Ojs+efLkmDRpUowfPz6GDx/eqjWsWLHCGYUAAACNpPEHAABATuPHj49hw4bFhRdeGCtWrIiampq44IILYuedd46JEyfGm2++GSeffHL06NEjOnToECNGjIjf/OY39R5j4cKFcdlll8XQoUNj2223jS5dusRRRx0V06ZNq3e/P/7xj5HJZOLnP/95XH311dGvX7/YZpttoqqqamtuMgAAQGq1yXcBAAAAFK42bdrEvffeG6NGjYrrr78++vTpE6+88ko89dRTMWvWrDjggAOiX79+ccUVV0SnTp3iF7/4RZxwwgnxq1/9Kk488cSIiHj33Xfj8ccfj1NOOSUGDBgQc+bMiXvuuScOPvjgqKysjB122KHe77z++uujXbt2cdlll8XKlSujXbt2+dh0AACA1MkkSZLkuwgAAAAK28UXXxz33HNPtG/fPo477rh46KGH4tBDD425c+fG5MmTo3379hERkSRJHHjggTFv3rx46623IiJi5cqV0bZt23rfBfiPf/wjhgwZEt/+9rfjmmuuiYhPz/gbPXp0DBw4MF5//fXo2LHj1t9QAACAFHOpTwAAADbru9/9bvTs2TNKSkri9ttvj4ULF8Yf/vCHOPXUU2Pp0qUxf/78mD9/fixYsCCOOOKImDlzZnz44YcREdG+ffts06+mpiYWLFgQ2267bey+++7xyiuvbPS7xowZo+kHAADQDC71CQAAwGZ16dIldt9995g/f3707ds3XnrppUiSJK655prsGXsbmjt3bvTr1y9qa2vjjjvuiLvvvjtmzZoVNTU12fv07Nlzo383YMCAVtsOAACAYqbxBwAAQJPV1tZGRMRll10WRxxxRIP3GTx4cERE3HjjjXHNNdfEueeeG9dff3306NEjSkpK4pJLLsk+Tl3O9gMAAGgejT8AAACabODAgRER0bZt2zj00EM3ed9HH300Ro8eHT/+8Y/rjS9evDh69erVajUCAAB81viOPwAAAJqsT58+ccghh8Q999wTH3/88Ua3z5s3L/vfpaWlkSRJvdt/+ctfZr8DEAAAgJbhjD8AAACapaKiIg488MAYOnRonHfeeTFw4MCYM2dOvPDCC/HBBx/EtGnTIiLi2GOPje985ztxzjnnxKhRo+K1116Ln/3sZ9mzBgEAAGgZGn8AAAA0S1lZWUyZMiWuu+66ePDBB2PBggXRp0+f2HvvvWPChAnZ+1111VVRXV0dDz30UDzyyCPx+c9/Pp588sm44oor8lg9AABA8ckkG15vBQAAAAAAAEgd3/EHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAENP4AAAAAAACgCGj8AQAAAAAAQBHQ+AMAAAAAAIAioPEHAAAAAAAARUDjDwAAAAAAAIqAxh8AAAAAAAAUAY0/AAAAAAAAKAIafwAAAAAAAFAE/n80eJNyGncR6QAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import pandas as pd\n",
+ "\n",
+ "# --- Analysis for Capture Year ---\n",
+ "asset_capture_years = comparison_df.groupby('asset_id')['capture_year'].nunique()\n",
+ "single_capture_year_assets = asset_capture_years[asset_capture_years == 1].index\n",
+ "single_capture_year_df = comparison_df[comparison_df['asset_id'].isin(single_capture_year_assets)]\n",
+ "assets_in_single_capture_year = single_capture_year_df.drop_duplicates(subset='asset_id')['capture_year'].value_counts().sort_index()\n",
+ "\n",
+ "# --- Analysis for Detection Year ---\n",
+ "asset_detection_years = comparison_df.groupby('asset_id')['detection_year'].nunique()\n",
+ "single_detection_year_assets = asset_detection_years[asset_detection_years == 1].index\n",
+ "single_detection_year_df = comparison_df[comparison_df['asset_id'].isin(single_detection_year_assets)]\n",
+ "assets_in_single_detection_year = single_detection_year_df.drop_duplicates(subset='asset_id')['detection_year'].value_counts().sort_index()\n",
+ "\n",
+ "# --- Plotting ---\n",
+ "asset_comparison_plot_df = pd.DataFrame({\n",
+ " 'Capture Time': assets_in_single_capture_year,\n",
+ " 'Detection Time': assets_in_single_detection_year\n",
+ "}).fillna(0).astype(int)\n",
+ "\n",
+ "ax = asset_comparison_plot_df.plot(kind='bar', figsize=(18, 8), width=0.8, color=['skyblue', 'lightgreen'])\n",
+ "\n",
+ "plt.title('Comparison of Single-Year Assets: Capture Time vs. Detection Time', fontsize=16)\n",
+ "plt.xlabel('Year', fontsize=12)\n",
+ "plt.ylabel('Number of Assets (Log Scale)', fontsize=12)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.legend(title='Timestamp Type')\n",
+ "plt.grid(axis='y', linestyle='--', alpha=0.7)\n",
+ "plt.yscale('log')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3908ef42",
+ "metadata": {
+ "id": "3908ef42"
+ },
+ "source": [
+ "### Generate interactive grouped bar chart\n",
+ "This cell generates an interactive grouped bar chart to visualize the comparison data. It performs the following steps:\n",
+ "\n",
+ "Reshapes the comparison_plot_df DataFrame from a wide to a long format.\n",
+ "Creates a grouped bar chart using px.bar with barmode='group'.\n",
+ "Sets the y-axis to a logarithmic scale to better display data with a wide range of values.\n",
+ "Adds a descriptive title to the chart.\n",
+ "Displays the interactive plot.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "28ba7d86",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 542
+ },
+ "id": "28ba7d86",
+ "outputId": "cf752a60-15a0-48a4-8cdf-d4ce57c245e8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ "\n",
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import plotly.express as px\n",
+ "import pandas as pd\n",
+ "\n",
+ "# Reshape the DataFrame from wide to long format for Plotly\n",
+ "long_comparison_df = pd.melt(\n",
+ " comparison_plot_df.reset_index(),\n",
+ " id_vars='index',\n",
+ " value_vars=['Capture Time', 'Detection Time'],\n",
+ " var_name='Timestamp Type',\n",
+ " value_name='Number of Observations'\n",
+ ").rename(columns={'index': 'Year'})\n",
+ "\n",
+ "# Create the interactive grouped bar chart\n",
+ "fig = px.bar(\n",
+ " long_comparison_df,\n",
+ " x='Year',\n",
+ " y='Number of Observations',\n",
+ " color='Timestamp Type',\n",
+ " barmode='group',\n",
+ " title='Interactive Comparison of Observations per Year',\n",
+ " log_y=True\n",
+ ")\n",
+ "\n",
+ "# Update layout for better readability\n",
+ "fig.update_layout(\n",
+ " xaxis_title='Year',\n",
+ " yaxis_title='Number of Observations (Log Scale)',\n",
+ " legend_title='Timestamp Type'\n",
+ ")\n",
+ "\n",
+ "# Display the interactive chart\n",
+ "fig.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e4d89ba8",
+ "metadata": {
+ "id": "e4d89ba8"
+ },
+ "source": [
+ "### Query to fetch the date elements\n",
+ "\n",
+ " This query will select `asset_type`, `capture_time`, and `detection_time` from the `latest_observations` table, filtering for 'ASSET_CLASS_ROAD_SIGN' and 'ASSET_CLASS_UTILITY_POLE', and then print the query to verify its structure.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "6b40cc98",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "6b40cc98",
+ "outputId": "4eee9742-2ced-49d3-c1fa-fecdc18ffaef"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "SELECT\n",
+ " asset_type,\n",
+ " capture_time,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `imagery-insights-d1xs9z`.`imagery_insights___preview___us`.`latest_observations`\n",
+ "WHERE\n",
+ " asset_type IN ('ASSET_CLASS_ROAD_SIGN', 'ASSET_CLASS_UTILITY_POLE')\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "asset_type_sql_query = f\"\"\"\n",
+ "SELECT\n",
+ " asset_type,\n",
+ " capture_time,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `{project_id}`.`{dataset_id}`.`latest_observations`\n",
+ "WHERE\n",
+ " asset_type IN ('ASSET_CLASS_ROAD_SIGN', 'ASSET_CLASS_UTILITY_POLE')\n",
+ "\"\"\"\n",
+ "\n",
+ "print(asset_type_sql_query)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b43dd065",
+ "metadata": {
+ "id": "b43dd065"
+ },
+ "source": [
+ "**Execute query and load data in dataframe**:\n",
+ "Now that the SQL query for asset type analysis has been successfully defined, the next step is to execute this query, load the data into a DataFrame, and process the timestamp columns to prepare for aggregation and visualization.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "f8a17b3d",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 241
+ },
+ "id": "f8a17b3d",
+ "outputId": "96d00785-8996-4473-f2ff-8290d9cc3652"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Downloading: 100%|\u001b[32m\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u001b[0m|\n",
+ "Data loaded and processed successfully. Displaying the first 5 rows:\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "dataframe",
+ "variable_name": "asset_type_df"
+ },
+ "text/html": [
+ "\n",
+ "
\n",
+ "\n",
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import plotly.express as px\n",
+ "import pandas as pd\n",
+ "\n",
+ "# --- Data Preparation ---\n",
+ "plot_df = asset_class_distribution_df.copy()\n",
+ "\n",
+ "# Clean up asset type labels for better readability\n",
+ "plot_df['asset_type'] = plot_df['asset_type'].str.replace('ASSET_CLASS_', '').str.replace('_', ' ').str.title()\n",
+ "\n",
+ "# Create a more descriptive label for the observation count for the chart path\n",
+ "plot_df['Observation Category'] = plot_df['observation_count'].apply(\n",
+ " lambda x: 'No Observations' if x == 0 else f'{x} Observation(s)'\n",
+ ")\n",
+ "\n",
+ "# --- Create the Treemap ---\n",
+ "fig = px.treemap(\n",
+ " plot_df,\n",
+ " path=[px.Constant(\"All Asset Classes\"), 'asset_type', 'Observation Category'],\n",
+ " values='asset_count',\n",
+ " color='observation_count',\n",
+ " title='Asset Distribution by Class and Observation Count',\n",
+ " hover_data={'asset_count':':,d'},\n",
+ ")\n",
+ "\n",
+ "# Improve layout and hover information\n",
+ "fig.update_layout(margin=dict(t=50, l=25, r=25, b=25))\n",
+ "fig.update_traces(\n",
+ " hovertemplate='%{label} Number of Assets: %{value:,}'\n",
+ ")\n",
+ "\n",
+ "fig.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f8cf6d70",
+ "metadata": {
+ "id": "f8cf6d70"
+ },
+ "source": [
+ "## Temporal Analysis\n",
+ "Perform a temporal analysis on the data from the `sarthaks-lab.imagery_insights___preview___us.all_observations` table. First, count the total number of observations per year based on the `detection_time`. Then, analyze the distribution of assets across years by counting the number of assets with observations in a single year (grouped by year) and the number of assets with observations in multiple years (showing the year combinations). Visualize these trends with bar charts to identify if any years are skewing the overall results."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "db5265cf",
+ "metadata": {
+ "id": "db5265cf"
+ },
+ "source": [
+ "## Formulate SQL Query for Temporal Analysis\n",
+ "\n",
+ "Create a new SQL query to select asset_id and detection_time from the all_observations table. This is the necessary data to analyze the temporal distribution of observations and assets.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "7e81b4ff",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7e81b4ff",
+ "outputId": "a470d6e6-9cfd-482c-9c62-5617710618c3"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "SELECT\n",
+ " asset_id,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `imagery-insights-d1xs9z`.`imagery_insights___preview___us`.`all_observations`\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "temporal_sql_query = f\"\"\"\n",
+ "SELECT\n",
+ " asset_id,\n",
+ " detection_time\n",
+ "FROM\n",
+ " `{project_id}`.`{dataset_id}`.`all_observations`\n",
+ "\"\"\"\n",
+ "\n",
+ "print(temporal_sql_query)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "66724e28",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "66724e28",
+ "outputId": "4689c915-48eb-4789-94a6-f52eb7b4565e"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Downloading: 100%|\u001b[32m\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u001b[0m|\n",
+ "--- Total Observations per Year ---\n",
+ "year\n",
+ "2011 23\n",
+ "2012 3\n",
+ "2013 8\n",
+ "2014 26\n",
+ "2015 2860\n",
+ "2016 1716\n",
+ "2017 4825\n",
+ "2018 2955\n",
+ "2019 9417\n",
+ "2020 4606\n",
+ "2021 12560\n",
+ "2022 29028\n",
+ "2023 20593\n",
+ "2024 17441\n",
+ "2025 374559\n",
+ "Name: count, dtype: int64\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAKyCAYAAACuWPzHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkCRJREFUeJzs3Xl8HXW9P/7XSUv3Nm3pAm0pS1FK1C5AQRDZRDZFkUVwoxS/ohhERcSiAvJT2URENFfcERfEDRDx4sKV7bK1UIrYy17ZW1q6BAq0NJnfH9LQ0IQmp2lz0jyfj0cfD/KZOXPe7/lMJpNXhjmloiiKAAAAAABQEao6uwAAAAAAAF4ltAUAAAAAqCBCWwAAAACACiK0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQlsAAAAAgAoitAUAAAAAqCBCWwAAAACACiK0BQA2eqVSqd3/9tprr84uu8lWW22VUqmUf//732W9fs6cOfnUpz6VN73pTamurk7fvn2z1VZb5YMf/GD++7//u9XX/fvf/06pVMpWW21VXuGsYV3nkvI0NjZmjz32SKlUyvHHH/+66z788MMZMGBAqqqq8re//W0DVQgA0FzPzi4AAGB9mzp16hpj8+bNy1/+8pdWl48fP75d73H99ddn7733zp577pnrr7++rDo7WlEUOe2003LOOeekoaEho0aNyt57753evXvn//7v/3LZZZflsssuy0EHHZTLLrssgwYN6uySu7RjjjkmP/vZz/LTn/40xxxzTGeXw2qqqqpyySWXZOLEibn44otzyCGHZP/9919jvcbGxhxzzDFZtmxZamtr8853vrMTqgUAENoCAN3AJZdcssbY9ddf3xTatrR8Y3DSSSflwgsvTJ8+ffLDH/4wxxxzTEqlUtPy2267LR/+8Ifz5z//Ofvtt19uvPHG9OrVqxMr3vhdd911efnllzN69OjOLqXb2WabbfLNb34zH//4x3Psscfm3nvvzZAhQ5qt881vfjM333xztt1225x33nmdVCkAgMcjAABslP72t7/lwgsvTJL8+te/zrRp05oFtkny1re+Nf/4xz8yZMiQ3H777fnqV7/aCZV2L+PGjcv48eOzySabdHYp3dJxxx2XAw88ME899VRqa2ubLfvXv/6V0047LT169Mill16afv36dVKVAABCWwCAFj3xxBP51Kc+lTe84Q3p06dPqqur87a3vS3f//7309DQ0GzdvfbaK3vvvXeS5IYbbmj2bNzVnwe7YMGCXHTRRTnooIOy9dZbp2/fvhk0aFB22mmnnHvuuXnppZc6rP6zzjorSXLwwQfnve99b6vrbbHFFjnttNOSJBdddFGee+65FtdbuXJlzjvvvLzpTW9K3759M2zYsLz//e/Pfffd1+L6Dz74YI499thsvfXW6d27dwYMGJAtt9wy73rXu/LTn/60xdc88MAD+fjHP55x48Y17fM99tgjv/jFL1pcf6+99kqpVMr111+fm266KQcffHCGDx/e9L/Cf+ADH0ipVMo555zTav9/+tOfUiqVMnny5Kaxl19+Ob/4xS/yoQ99KOPHj8+gQYPSt2/fbLfddjnxxBPz1FNPNdvGqmf//uxnP0uSpoB81b+vfOUrTeu+3jNtX3jhhZxzzjnZYYcdMnDgwPTr1y9vetOb8uUvfzmLFy9eY/3VnzlcFEV+8IMfZMcdd0z//v1TXV2d/fbbL7feemuLfZczPy25/vrrm54B/cILL+SLX/xitt122/Tp0yejRo3KRz/60Tz55JOtvn7x4sU544wzMmnSpKae3/KWt+RrX/taXnjhhTXW/8pXvtK0Tx977LF89KMfzRZbbJFNNtmkzY+k+PGPf5yhQ4fmsssuy29/+9sk/zm+jz766CxfvjynnHJKdt1116b123tcPvroozn33HOzzz77ZOzYsendu3cGDx6c3XffPd///vfT2Ni4xmtWn8uGhoZccMEFmTx5cgYMGLDGH1sAgG6iAADohv7xj38USYqWLofuuOOOYujQoUWSYuzYscWRRx5ZHHDAAUWfPn2KJMX+++9fLF++vGn9s88+u9h///2LJMXIkSOLqVOnNv373Oc+17Tez3/+8yJJMXr06GLPPfcsjjrqqOId73hHMWDAgCJJseuuuxYvvfTSGvVsueWWRZJi7ty5bept0aJFRVVVVZGk+O1vf7vW9RcsWNC0L/74xz82jc+dO7dIUmy55ZbFoYceWmyyySbFvvvuWxx11FHFNttsUyQpBgwYUNxyyy3NtvfPf/6zGDRoUJGk2G677YpDDz20OOKII4pdd921GDBgQDFx4sQ1avjNb37TtH/Hjx9fvO997yv22Wefon///kWSYtq0aWu8Zs899yySFJ/85CeLqqqqoqampjjqqKOK/fbbr/jVr35V/OUvf2naXmsOPfTQIklx0UUXNY09/vjjRZKiurq6eOtb31occcQRxUEHHVSMGjWqSFIMHz68ePDBB5vtv6lTpxbjxo0rkhRve9vbmh0DV1xxRdO6rc3ls88+W0yaNKlIUgwaNKh4z3veUxx22GHFsGHDiiTF1ltvvcZrVp+fqVOnFptsskmxzz77FO9///uLN77xjUWSonfv3sVtt922zvPTmlXfR7vuumvx1re+tejXr19x0EEHFUcccUSx+eabF0mKzTbbrHjggQfWeO2//vWvYosttiiSFJtvvnlxwAEHFAcffHAxcuTIIkkxadKkYsmSJc1ec8YZZxRJig9+8IPF0KFDi80226w47LDDikMPPbTZ99raXHbZZUWSYtNNNy2efvrppu1OmDCh2fd2OcflV7/61aY5e8c73lEcddRRxZ577ln06tWrSFIceuihRWNjY7PXrJrLsWPHFu95z3uKXr16Fe94xzuKD3zgA8WECRPa3BcAsPEQ2gIA3VJroe1LL73UFKx94hOfKFasWNG07OGHHy622mqrIknxxS9+scXt7bnnnq2+55w5c4pbb711jfFFixYV++23X5GkOO+889ZY3t7Q9rrrrmvq7dFHH23Ta7beeusiSXH66ac3ja0KkpIUw4YNK2bPnt20bOXKlcWnPvWpptBw9bB52rRpRZLia1/72hrv88ILLxQ33HBDs7F77rmn6N27d9GnT5/i97//fbNl//73v4u3vOUtRZLiZz/7WbNlq0LbJEVdXd0a79XQ0FCMHTu2SNLifl+wYEGxySabFL169SoWLlzYNF5fX19cddVVzcK7oiiKFStWFKeeemqRpDjooIPW2N7UqVOLJMVPf/rTNZat0tpcHnnkkUWSYpdddmlWy3PPPVcceOCBRZJit912a/aa1ednyy23LO6///6mZStXriyOPfbYIkmx3377NXtde+fn9az+fbTttts2O95efPHF4rDDDiuSFG9961vXeJ9VIfeXv/zlZvt62bJlxQc+8IEWQ9FV4WqS4sMf/nCLf+Roq/e///1FkmLKlClFz549i169ehV333130/Jyj8s77rij+Oc//7nG+z355JPFxIkTiyTFb37zm2bLVp/LMWPGNJtLAKB7EtoCAN1Sa6HtqrthR40a1WIg9Lvf/a5IUgwcOLB48cUX19je64W2r+f+++9vCpBeq72h7a9//eum3toaar31rW8tkhTHH39809jqQdKFF164xmteeumlYvTo0UWS4pe//GXT+EEHHVQkKe666642vfeqwPL8889vcfkdd9xRJCl23HHHZuOrQtt99tmn1W2fdtppRZLiuOOOW2PZhRdeWCQpDj/88DbVucqoUaOKqqqqor6+vtl4uaHto48+WlRVVRWlUqlZML7KE0880XS35//+7/82ja8+P6vfIb3K008/3XS37ep/fGjv/Lye1b+PrrzyyjWWz58/v+jXr98atX/ve98rkhTvfve7W9zuc889V4wYMaLo2bNnsWjRoqbxVaHt0KFD17gLt70WLlxYbLbZZk31n3XWWc2Wl3tcvp5Vd38fccQRzcZXn8tLL720/c0AABsdz7QFAFjN9ddfnyQ56qij0rt37zWWH3rooRkyZEiee+653Hnnne3efkNDQ6677rp89atfzSc/+clMmzYtxxxzTL7+9a8nSe6///51qr9cRVG87vKpU6euMda7d+8ceeSRSV7db0my8847J0mOP/74/OUvf3ndZ/U2Njbmv//7v5OkaVuvtdNOO2XAgAGZNWtWi9s6/PDDW93+Mccck1KplMsvvzwvvvhis2Wrnt167LHHtvja2bNn54ILLsinPvWpHHvssTnmmGNyzDHHZOXKlWlsbMxDDz3U6vu2x4033pjGxsZMnjw5EyZMWGP56NGjs//++ydJ/vGPf6yxvGfPnjnggAPWGN9ss80yZMiQLF++PM8++2zTeHvmp60GDx6c97znPWuMjxgxoqm21Y+Ra665Jknrcz5gwIDstNNOWblyZWbMmLHG8n333TfV1dXrVPOmm26aL33pS011nnLKKU3L1vW4XL58ea6++uqcfvrp+cQnPtH0ff79738/yet/nx922GHr1BcAsHHo2dkFAABUklUfmrT11lu3uLxUKmXrrbfO4sWLX/cDllry4IMP5n3ve1/+9a9/tbpOfX19u7bZkmHDhjX99/z58zN27Ni1vuaZZ55JkgwfPnyNZYMHD87gwYNbfN2q/fTEE080jX3+85/PzTffnL///e854IADsskmm2TixInZY489ctRRR2XKlClN6z777LNNPW+xxRZrrfPZZ5/N6NGjm42t/mFvr7XNNttkzz33zPXXX58rrrgiH/zgB5Mks2bNyuzZszNq1Kjst99+zV6zbNmyfOQjH8kVV1zxurV0xFwlaz/mkmTcuHHN1l3d5ptvnk022aTF1w0aNCiLFy9uFiq2Z37aatUHrLWkpWPkkUceSZJ85CMfyUc+8pHX3faCBQtafL+OMGDAgCRJ375906NHj6bxdTkub7vtthx55JF57LHHWl2/tWNnxIgR6devX5vrBwA2XkJbAIAN5PDDD8+//vWvvPvd784pp5ySmpqaDBo0KJtssklWrFjR4p295Zg8eXJKpVKKosjtt9++1tB2wYIFmTt3bpJkxx13LOs9V79Tt1+/fvnb3/6WGTNm5Nprr80tt9ySW265JTNnzswFF1yQT37yk6mrq0vynzsaV2npbt7Xamkf9e3b93Vfc+yxx+b666/PJZdc0hTarrrL9uijj24W1iXJqaeemiuuuCLjx4/POeeckylTpmTYsGHp1atXkmS33XbLrbfeuta7kzeUqqr2/c9z7ZmfjrT6/lo17wcccEBGjhz5uq/bcsst1xhb25yvq3KPyxdeeCGHHHJI5s+fn2nTpuX444/Ptttum0GDBqVHjx554IEHst1227V67KzvvgCArkNoCwCwmlV3y626E7AlqwLO197x+Xruu+++3HPPPRkxYkSuuOKK9OzZ/DLswQcfLKPalg0dOjRvf/vbc+ONN+bSSy/NEUcc8brr//znP0+SDBw4MHvttdcay5csWZIlS5a0eLftv//97yTJmDFj1lg2ZcqUprs2V65cmSuvvDJHH310/uu//iuHH3549t577wwbNix9+/bNiy++mPPPP7/ZXcId5bDDDssJJ5yQ6667Lo8//nhGjhyZX/3qV0mSadOmrbH+b37zmyTJ5Zdf3uLjCjpyrpK2HXOrlrXnmFubtsxPW606Dl5v2erHyBZbbJH77rsvH/3oR1/38Radpdzj8sYbb8z8+fOzww475Cc/+ckayzv62AEANl6eaQsAsJpVoeXll1/e4rM+r7jiiixevDgDBw5sdlfqqrswV65c2eJ2Fy1alCQZNWrUGoFtkvziF79Y19Kb+eIXv5gk+dOf/pSrrrqq1fUef/zxfO1rX0uSnHDCCRk0aFCL660Kdle3YsWKXH755UnSYti7up49e+bwww9vejbr3XffnSTp0aNH3vnOdyZ5NSztaP369cuRRx6ZxsbGXHrppbn66qvz7LPP5m1ve1ve+MY3rrH+qrlq6Q7Pv/zlL1m4cGGL77O2Y6A1e+yxR6qqqnL33Xdn9uzZayx/+umnc+211yZJu4LU9mhtftpqyZIlufrqq9cYX7BgQVPtqx8jBx54YJL1N+frqtzjctWx09rd7R39fQ4AbLyEtgAAqzniiCMyduzYPPXUUznppJOaBXBz587N5z73uSTJpz71qfTp06dp2aq7CB988MG8/PLLa2z3jW98Y3r06JF//vOfzT6QKUmuvvrqfOtb3+rQPvbff/986lOfSpJ84AMfyCWXXLLG/5J9++23Z++9987ixYuz00475Ywzzmh1e1/96ldz7733Nn3d2NiYL3zhC3niiSeyxRZbNPvwpP/6r/9q8YOW5s2bl5kzZyZpHoieccYZ6dWrVz7/+c/nZz/7WbP/NX2Ve++9N3/4wx/a2P2aVn3Y2CWXXNJ0B2RLd9kmyfbbb58k+c53vtNs/P77788nPvGJVt9j1THwes8sbsnYsWNzxBFHpCiKfPzjH2/2oWHLli3Lcccdl5deeim77bZbdtttt3ZtuyXtnZ+2+tznPtfsubXLly9PbW1tli1blp133jlve9vbmpYdd9xx2XLLLfPb3/42X/jCF/Lcc8+1WM8Pf/jDdtfRUco5LlcdO9ddd13mzJnTbN0f/OAHTX/kAABYqwIAoBv6xz/+USQpWrocuuOOO4qhQ4cWSYott9yyOPLII4uDDjqo6NOnT5Gk2H///Yvly5ev8bqddtqpSFJst912xYc+9KHiox/9aPGFL3yhafmnP/3pIklRVVVV7LnnnsUHPvCBYocddiiSFF/+8pdbrWfLLbcskhRz585tV4+NjY3FF77whaKqqqpIUowePbo45JBDiiOPPLKYMGFC0/vtv//+xZIlS9Z4/dy5c4skxdixY4v3ve99xSabbFK8853vLI466qhi3LhxRZKif//+xU033dTsdRMnTiySFFtvvXVx8MEHFx/60IeK/fbbr+jbt2+RpNhnn32Kl19+udlrfvOb3xT9+vUrkhRjxowp9ttvv+JDH/pQceCBBxZjxowpkhRHHnlks9fsueeeRZLiH//4R5v2x/bbb9/Uc//+/YvnnnuuxfV+//vfF6VSqUhSvOUtbymOOuqoYp999ik22WSTYp999il22223Ft939uzZRVVVVVFVVVXsu+++xbRp04qPfvSjxVVXXdW0TmtzuXDhwqb9Vl1dXRxyyCHF4YcfXgwfPrxpX772NavmZ8stt2y155ber5z5ac2q76Ndd9212GWXXYp+/foV7373u4v3v//9xahRo4okxYgRI4r77rtvjdfee++9xVZbbVUkKQYPHlzssccexQc/+MHikEMOKWpqaopSqVSMHDmy2WvOOOOMIklxxhlntKm+tfnpT3/6uvuwnOPyve99b5Gk6NWrV7HffvsVRx11VDF+/PiiVCoVX/rSl1p8v7bMJQDQvQhtAYBu6fVC26Ioiscee6yora0tttlmm6JXr17FwIEDi1133bX43ve+12qg9eijjxYf/OAHi80337zo2bPnGiFMY2Nj8eMf/7jYcccdiwEDBhTV1dXF7rvvXvz6178uiqLo8NB2lXvvvbeora0txo8fXwwYMKDo3bt3scUWWxRHHnlk8ac//anV160eJL388svF17/+9WL8+PFF7969i6FDhxaHHXZY8a9//WuN1/3pT38qjj/++GLy5MnF8OHDi169ehVjxowp9tprr+JnP/tZsWLFilbf77Of/Wzx5je/uejfv3/Rp0+fYssttyz22muv4pxzzikeeuihZuu3N7Q977zzmvbx1KlTX3fdG2+8sXjHO95RDBs2rOjXr1/x5je/ufj6179eLF++/HXf94orrije9ra3FQMHDmwKflcPGF9vLpctW1acffbZxaRJk4p+/foVffr0Kbbffvvii1/8YrFo0aI11i83tC13flqy6vtozz33LJ5//vni85//fLH11lsXvXr1KkaOHFkcc8wxxWOPPdbq6+vr64vzzjuv2HXXXYvBgwcXm2yySbH55psXU6ZMKT7/+c8Xt9xyS7P1N3RoWxTtPy5XrFhRfOMb3yje8pa3FP369SuGDh1a7LfffsVf//rXVudMaAsAvFapKCrkY28BAIAu5frrr8/ee++dPffcc43HfgAAUD7PtAUAAAAAqCBCWwAAAACACiK0BQAAAACoIJ5pCwAAAABQQdxpCwAAAABQQYS2AAAAAAAVpGdnF1BpGhsb89RTT2XgwIEplUqdXQ4AAAAAsJEoiiLPPfdcRo0alaqq1u+nFdq+xlNPPZUtttiis8sAAAAAADZSjz/+eMaMGdPqcqHtawwcODDJf3bcoEGDOrkaAAAAAGBjUV9fny222KIpg2yN0PY1Vj0SYdCgQUJbAAAAAKDDre2xrD6IDAAAAACggghtAQAAAAAqiNAWAAAAAKCCCG1fUVdXl5qamkyZMqWzSwEAAAAAurFSURRFZxdRSerr61NdXZ2lS5f6IDIAAAAAoMO0NXt0py0AAAAAQAUR2gIAAAAAVBChLQAAAABABRHaAgAAAABUEKEtAAAAAEAFEdoCAAAAAFQQoe0r6urqUlNTkylTpnR2KQAAAABAN1YqiqLo7CIqSX19faqrq7N06dIMGjSos8sBAAAAADYSbc0e3WkLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaPuKurq61NTUZMqUKZ1dCgAAAADQjZWKoig6u4hKUl9fn+rq6ixdujSDBg3q7HIAAAAAgI1EW7NHd9oCAAAAAFSQnp1dAAAAAACw8Ttn1sLOLqFdpk8e1mnv7U5bAAAAAIAKIrQFAAAAAKggQlsAAAAAgAoitAUAAAAAqCBCWwAAAACACiK0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQlsAAAAAgAoitH1FXV1dampqMmXKlM4uBQAAAADoxoS2r6itrc2cOXMyY8aMzi4FAAAAAOjGhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2r6irq0tNTU2mTJnS2aUAAAAAAN2Y0PYVtbW1mTNnTmbMmNHZpQAAAAAA3ZjQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACpIz84uYH3YaqutMmjQoFRVVWXIkCH5xz/+0dklAQAAAAC0yUYZ2ibJLbfckgEDBnR2GQAAAAAA7eLxCAAAAAAAFaTiQtsbb7wxBx98cEaNGpVSqZQrr7xyjXXq6uqy1VZbpU+fPtlll11yxx13NFteKpWy5557ZsqUKfnlL3+5gSoHAAAAAFh3FRfaLlu2LBMnTkxdXV2Lyy+//PKcdNJJOeOMM3LXXXdl4sSJ2X///fPMM880rXPzzTfnzjvvzB//+MecddZZueeeezZU+QAAAAAA66TiQtsDDzwwX/va1/K+972vxeUXXHBBPvaxj2XatGmpqanJxRdfnH79+uUnP/lJ0zqjR49Okmy++eY56KCDctddd22Q2gEAAAAA1lWX+iCyFStW5M4778ypp57aNFZVVZV99903t956a5L/3Knb2NiYgQMH5vnnn8///M//5P3vf3+r21y+fHmWL1/e9HV9fX2SZOXKlVm5cmXTe1RVVaWxsTGNjY3N3ruqqioNDQ0pimKt4z169EipVGra7urjSdLQ0NCm8Z49e6YoimbjpVIpPXr0WKPG1sb1pCc96UlPetKTnvSkJz3pSU960pOe9KSnDdlTqfE/NRWl/9xHWipe3fbrjlf1SIqi+Xip9J/1Wx1vTGm1WopSKXmd8VLRmDQbr2ravx05T699XWu6VGi7cOHCNDQ0ZOTIkc3GR44cmfvuuy9JMn/+/Ka7dBsaGvKxj30sU6ZMaXWbZ599ds4888w1xmfNmpX+/fsnSYYPH55x48Zl7ty5WbBgQdM6Y8aMyZgxY/LAAw9k6dKlTePbbLNNRowYkXvvvTcvvvhi0/j48eMzePDgzJo1q9kETpgwIb169crMmTOb1bDTTjtlxYoVzR7v0KNHj0yZMiVLly5t6jlJ+vbtm4kTJ2bhwoV55JFHmsarq6uz/fbb56mnnsoTTzzRNK4nPelJT3rSk570pCc96UlPetKTnvSkJz1tyJ5GL12RJJk3dFwaqnpm9ML7m/X05LDt0qNxZTZb9HDTWFFVlSeHjU+fl5dl2JLHmsZX9uydeUPHpf9LSzLkuaebxl/q1T8LB2+ZQS88m0HLXq19Wd/BWTxwVIY8Py/9X1zSNF7ff3jq+w/PpksfT58Vy5rGFw/cPMnwDp+nZcuWpS1KxepRcYUplUq54oorcsghhyRJnnrqqYwePTq33HJLdt1116b1TjnllNxwww25/fbb2/0eLd1pu8UWW+TZZ5/NoEGDkviLiZ70pCc96UlPetKTnvSkJz3pSU960pOe9LSuPX1z9rNJus6dttN3GN7h81RfX59NN900S5cubcoeW9KlQtsVK1akX79++d3vftc0liRTp07NkiVLctVVV63ze9bX16e6unqtOw4AAAAAaLtzZi3s7BLaZfrkYR2+zbZmjxX3QWSvp1evXtlxxx1z3XXXNY01Njbmuuuua3bnLQAAAABAV1Vxz7R9/vnn89BDDzV9PXfu3Nx9990ZOnRoxo4dm5NOOilTp07NTjvtlJ133jkXXnhhli1blmnTpq3T+9bV1aWurm6NW5gBAAAAADakins8wvXXX5+99957jfGpU6fmkksuSZJ897vfzTe+8Y3MmzcvkyZNykUXXZRddtmlQ97f4xEAAAAAoON5PELbs8eKC207m9AWAAAAADqe0HYjfaYtAAAAAMDGTmgLAAAAAFBBhLYAAAAAABVEaPuKurq61NTUZMqUKZ1dCgAAAADQjQltX1FbW5s5c+ZkxowZnV0KAAAAANCNCW0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtX1FXV5eamppMmTKls0sBAAAAALoxoe0ramtrM2fOnMyYMaOzSwEAAAAAujGhLQAAAABABRHaAgAAAABUEKEtAAAAAEAFEdoCAAAAAFQQoS0AAAAAQAUR2r6irq4uNTU1mTJlSmeXAgAAAAB0Y0LbV9TW1mbOnDmZMWNGZ5cCAAAAAHRjQlsAAAAAgAoitAUAAAAAqCBCWwAAAACACiK0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQttX1NXVpaamJlOmTOnsUgAAAACAbkxo+4ra2trMmTMnM2bM6OxSAAAAAIBuTGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaPuKurq61NTUZMqUKZ1dCgAAAADQjQltX1FbW5s5c+ZkxowZnV0KAAAAANCNCW0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiND2FXV1dampqcmUKVM6uxQAAAAAoBvrWe4L58yZkzlz5mThwoUplUoZNmxYtt9++9TU1HRkfRtMbW1tamtrU19fn+rq6s4uBwAAALq0c2Yt7OwS2mX65GGdXQJAk3aFttdff30uueSSXH311VmyZEmKomi2vFQqpbq6OgcffHCmTZuWvfbaqyNrBQAAAADY6LUptL322mtz2mmn5c4778yb3/zmHHPMMdlxxx2zzTbbZMiQISmKIosXL87cuXNz55135m9/+1t+/vOfZ4cddsjXv/717L///uu7DwAAAACAjUKbQtvDDz88/+///b/8/Oc/z/jx41tdb9ddd80HP/jBJMl9992Xiy++OEcccUTq6+s7ploAAAAAgI1cm0Lbxx57LEOHDm3XhsePH58LL7wwp59+elmFAQAAAAB0R1VtWam9gW1HvRYAAAAAoLtp1weRvdaTTz6ZG2+8Mc8880wOO+ywjBkzJg0NDVm6dGmqq6vTo0ePjqoTAAAAAKBbaNOdtq9VFEVOOumkbL311vnQhz6Uk046KQ888ECS5Pnnn89WW22V73znOx1aKAAAAABAd1BWaPuNb3wj3/72t3PyySfnb3/7W4qiaFpWXV2dQw89NL///e87rEgAAAAAgO6irND2hz/8YY4++uicddZZmTRp0hrLJ0yY0HTnLQAAAAAAbVdWaPv4449nt912a3V5//79U19fX3ZRAAAAAADdVVmh7YgRI/L444+3uvzOO+/M2LFjyy4KAAAAAKC7Kiu0PfTQQ3PxxRfnkUceaRorlUpJkr/+9a+55JJLcsQRR3RMhQAAAAAA3UhZoe2ZZ56ZzTffPJMmTcrRRx+dUqmUc889N7vvvnsOPPDATJgwIV/84hc7ulYAAAAAgI1eWaFtdXV1brvttpxyyil58skn06dPn9xwww1ZsmRJzjjjjNx0003p169fR9cKAAAAALDR61nuC/v27Zsvf/nL+fKXv9yR9QAAAACwFufMWtjZJbTZ9MnDOrsE6HLKutMWAAAAAID1o0132h577LHt3nCpVMqPf/zjdr+us9TV1aWuri4NDQ2dXQoAAAAA0I21KbT9n//5n5RKpXZtuL3rd7ba2trU1tamvr4+1dXVnV0OAAAAANBNtSm0/fe//72eywAAAAAAIPFMWwAAAACAiiK0BQAAAACoIGWHtv/93/+dd77zndl0003Ts2fP9OjRY41/AAAAAAC0T5ueaftav//97/P+978/b3rTm3LUUUfle9/7Xj74wQ+mKIpcddVVecMb3pBDDjmkg0sFAAAAgPXrnFkLO7uEdpk+eVhnl8B6UNadtmeffXZ23nnnzJo1K2eeeWaS5Nhjj80vf/nL3HvvvXn66aez9dZbd2ihAAAAAADdQVmh7Zw5c3LUUUelR48e6dnzPzfrvvzyy0mSrbbaKp/85Cdz7rnndlyVAAAAAADdRFmhbb9+/dKrV68kyeDBg9O7d+88/fTTTctHjhyZuXPndkyFAAAAAADdSFmh7XbbbZc5c+Y0fT1p0qT8/Oc/z8qVK/PSSy/lV7/6VcaOHdthRQIAAAAAdBdlhbbve9/7ctVVV2X58uVJki996Uu5/vrrM3jw4AwfPjw33XRTpk+f3qGFAgAAAAB0Bz3LedHJJ5+ck08+uenrd7/73bn++uvzhz/8IT169Mi73vWu7L333h1WJAAAAABAd1FWaNuSt7/97Xn729/eUZsDAAAAAOiWyno8wty5c3P11Ve3uvzqq6/Ov//973JrAgAAAADotsp+PEJ9fX0OPvjgFpfX1dVl8ODB+fWvf71OxQEAAAAAdDdl3Wl766235p3vfGery9/xjnfkpptuKrsoAAAAAIDuqqzQdvHixRk4cGCrywcMGJBnn3227KIAAAAAALqrskLbsWPH5n//939bXX7TTTdlzJgxZRcFAAAAANBdlRXafuADH8hll12Wiy66KI2NjU3jDQ0N+fa3v53LL788H/zgBzusSAAAAACA7qKsDyI79dRTc/PNN+czn/lMvv71r2e77bZLktx///1ZsGBB9tprr3zpS1/q0EIBAAAAALqDskLb3r17569//Wt+9rOf5Q9/+EMefvjhJMnOO++cww47LEcffXSqqsq6iRcAAAA2mHNmLezsEtps+uRhnV0CABtIWaFtklRVVWXatGmZNm1aR9YDAAAAANCtlR3arm7FihW5/fbb8/TTT2e77bbLxIkTO2KzAAAAAADdTpufYfCXv/wlxx57bBYubP6/jtx3331585vfnL322isf+MAHssMOO+Twww/PypUrO7zY9njhhRey5ZZb5uSTT+7UOgAAAAAA2qPNoe1PfvKTzJ49O8OGNX+Gzoc+9KE89NBDOfroo3PRRRflgAMOyBVXXJHvfOc7HV5se3z961/PW9/61k6tAQAAAACgvdoc2s6cOTP77rtvs7FZs2Zl1qxZ+dCHPpSf/vSnqa2tzTXXXJPdd989v/zlLzu82LZ68MEHc9999+XAAw/stBoAAAAAAMrR5tB23rx52XbbbZuNXXvttSmVSjnmmGOajR9yyCG5//77yyroxhtvzMEHH5xRo0alVCrlyiuvXGOdurq6bLXVVunTp0922WWX3HHHHc2Wn3zyyTn77LPLen8AAAAAgM7U5tB2wIABeeGFF5qN3Xzzzamqqsouu+zSbHzw4MFpaGgoq6Bly5Zl4sSJqaura3H55ZdfnpNOOilnnHFG7rrrrkycODH7779/nnnmmSTJVVddlTe+8Y154xvfWNb7AwAAAAB0pp5tXXH77bfPVVddlU9/+tNJksWLF+fGG2/MbrvtlgEDBjRb9/HHH89mm21WVkEHHnjg6z7W4IILLsjHPvaxTJs2LUly8cUX55prrslPfvKTTJ8+Pbfddlt+/etf57e//W2ef/75vPzyyxk0aFBOP/30suoBAAAAANiQ2hzafu5zn8t73/veHHjggdltt91y9dVX54UXXsgnP/nJNda99tprM3ny5A4tNElWrFiRO++8M6eeemrTWFVVVfbdd9/ceuutSZKzzz676dEIl1xySe69997XDWyXL1+e5cuXN31dX1+fJFm5cmVWrlzZ9B5VVVVpbGxMY2Njs/euqqpKQ0NDiqJY63iPHj1SKpWatrv6eJI17k5ubbxnz54piqLZeKlUSo8ePdaosbVxPelJT3rSk570pCc96UlPetJTY0qNq61fKqUoVSVFY0qr1VKUSsnrjJeKxqTZeFVSKrU+3ti8xqL0n/8JtlQ0vu74qn3RZeapKNbaU9N4VQvrN81Ha+MdO0+reugq309N+3EDHHtN42XO0+r7skucI4rGDXrsrTHeznl67T6o5HPEqt421LG3zvOUdPix99rXtabNoe3BBx+c8847L1/72tfyl7/8JX379s1pp52WI488stl6t912W2677bb86Ec/auum22zhwoVpaGjIyJEjm42PHDky9913X1nbPPvss3PmmWeuMT5r1qz0798/STJ8+PCMGzcuc+fOzYIFC5rWGTNmTMaMGZMHHnggS5cubRrfZpttMmLEiNx777158cUXm8bHjx+fwYMHZ9asWc0mcMKECenVq1dmzpzZrIaddtopK1asyD333NM01qNHj0yZMiVLly5t1nPfvn0zceLELFy4MI888kjTeHV1dbbffvs89dRTeeKJJ5rG9aQnPelJT3rSk570pCc96UlPCzN64aufx/JSr/5ZOHjLDHrh2Qxa9mrty/oOzuKBozLk+Xnp/+KSpvH6/sNT3394Nl36ePqsWNY0vnjg5lnWd0hGLp6bnitfvUlo4eCxeanXgIxa9GBKq4Ug84aOS0NVz2a1JMmTw7ZLj8aV2WzRw0mSmTN7dal5KhWNa+0pSYqqqjw5bHz6vLwsw5Y81jS+smfvzBs6Lv1fWpIhzz3dNL6+5mnmzF5r7amSvp+SPhvs2EvWbZ5mzny1165wjhi5rLRBj71Vyp2n1Xut9HPE6KUr2tRTpZwjkuEdfuwtW7YsbVEqVo+K26ChoSELFy7MiBEjUiqV1lj+4osv5oUXXsjgwYObkuRylUqlXHHFFTnkkEOSJE899VRGjx6dW265JbvuumvTeqecckpuuOGG3H777e1+j5butN1iiy3y7LPPZtCgQUm6yF+BKuQvJnrSk570pCc96UlPetKTnvTUlXr6xqxXf6Gv1LvoVo1/buKmbeqpUubp3FkLK/8uutXmadX+7SrfT+fNXtRl7rQ9ecLQNvVUKeeIb96zqEvdaXvyhCFr7alSzhHfnP1sm3qqlHPE9B2Gd/ixV19fn0033TRLly5tyh5b0uY7bVd/o9fe6bq6vn37pm/fvu3dbJsMGzYsPXr0yPz585uNz58/v+xn6Pbu3Tu9e/deY7xnz57p2bP57ll1AL5Wa+F0a+Ov3W4546VSqcXx1mps77ie9NTauJ70lOiptRrbO64nPSV6aq3G9o7rqfN7OmfWwhaXV6rpk4d1y3lqy3h366moauF9S1Up1rxHqdXx/wQt7Rhv6T2TFKXXH1+9hy4xT6XSWntq0/qtjnfsPL22h67w/bShjr1mypin9uyDSjhHrAoON9Sxt8Z4O+epK53LX9tbVzhHdPSx19ry11pzr1ewXr16Zccdd8x1113XNNbY2Jjrrruu2Z23AAAAAABdVbvvtF3fnn/++Tz00ENNX8+dOzd33313hg4dmrFjx+akk07K1KlTs9NOO2XnnXfOhRdemGXLlmXatGnr9L51dXWpq6tb4xZmAAAAAIANqeJC25kzZ2bvvfdu+vqkk05KkkydOjWXXHJJjjzyyCxYsCCnn3565s2bl0mTJuXaa6993Uc2tEVtbW1qa2tTX1+f6urqddoWAAAAAEC5Ki603WuvvZo93LclJ5xwQk444YQNVBEAAAAAwIbTpZ5pCwAAAACwsRPaAgAAAABUkLJC26qqqvTo0eN1//Xv3z/bbbddPvGJT+Thhx/u6LoBAAAAADZKZT3T9vTTT89VV12Vf/3rXznwwAOz7bbbJkkefPDBXHvttXnLW96SffbZJw899FB++tOf5rLLLsuNN96YiRMndmjxHamuri51dXVpaGjo7FIAAAAAgG6srNB21KhRWbhwYe67775ss802zZY99NBD2WuvvVJTU5NvfOMbefDBB7Prrrvmi1/8Yq655poOKXp9qK2tTW1tberr61NdXd3Z5QAAAAAA3VRZj0f4xje+kdra2jUC2yTZdtttU1tbm7PPPjtJ8oY3vCGf+MQncsstt6xbpQAAAAAA3UBZoe0TTzyRnj1bv0m3Z8+eefzxx5u+3mqrrbJ8+fJy3goAAAAAoFspK7R905velO9973uZP3/+GsvmzZuX733ve3nTm97UNPbII49ks802K79KAAAAAIBuoqxn2p5//vlNH0B2yCGHNH0Q2UMPPZQrr7wyL7/8cn7yk58kSV566aVccsklOfDAAzuuagAAAACAjVRZoe1ee+2VW265JWeccUb+8Ic/5MUXX0yS9OnTJ/vuu2++8pWvZIcddmgae+qppzqu4vWkrq4udXV1aWho6OxSAAAAAIBurKzQNkkmT56cP/7xj2lsbMwzzzyTJBkxYkSqqsp64kKnq62tTW1tberr61NdXd3Z5QAAAAAA3VTZoe0qVVVVTSFnVw1sAQAAAAAqRdkp62OPPZZp06Zl5MiRGTBgQAYMGJCRI0fm2GOPzaOPPtqRNQIAAAAAdBtl3Wl73333Zffdd8+SJUvyzne+M9tvv33T+KWXXpqrr746N998c7bbbrsOLRYAAAAAYGNXVmg7ffr0VFVVZdasWXnLW97SbNm9996bd7zjHZk+fXquuOKKDikSAAAAAKC7KOvxCDfccENOPPHENQLbJHnzm9+cE044Iddff/261gYAAAAA0O2UFdq+/PLL6du3b6vL+/Xrl5dffrnsojpDXV1dampqMmXKlM4uBQAAAADoxsoKbSdPnpwf/ehHWbp06RrL6uvr8+Mf/zg77LDDOhe3IdXW1mbOnDmZMWNGZ5cCAAAAAHRjZT3T9swzz8wBBxyQ8ePHZ9q0aXnjG9+YJLn//vvzs5/9LM8++2zq6uo6tFAAAAAAgO6grNB2n332yZ///Od8/vOfzznnnNNs2aRJk/Lzn/88e++9d4cUCAAAAADQnZQV2ibJvvvum1mzZmXevHl59NFHkyRbbrllNttssw4rDgAAAACguynrmbar22yzzbLLLrtkl112aQpszz777PTu3XudiwMAAAAA6G7WObRtSWNjY1auXLk+Ng0AAAAAsFFbL6EtAAAAAADlEdq+oq6uLjU1NZkyZUpnlwIAAAAAdGNlfxDZxqa2tja1tbWpr69PdXV1Z5cDAHRT58xa2NkltMv0ycM6uwQAANjotDm0XbRoUZs3+sILL5RVDAAAAABAd9fm0HbYsGEplUptWrcoijavCwAAQOvcgQ8A3U+bQ9vTTz9dEAsAAAAAsJ61ObT9yle+sh7LAAAAAAAgSao6uwAAAAAAAF7VptD2sssuS1EU7d54URS57LLL2v06AAAAAIDuqk2h7Wc+85m88Y1vzHnnnZe5c+eudf2HHnooZ511Vrbddtt89rOfXeciAQAAAAC6izY90/aRRx7JhRdemG9+85s59dRTs9VWW2WHHXbI1ltvnSFDhqQoiixevDhz587NzJkz8/jjj2fTTTfNiSeeKLQFAAAAAGiHNoW2/fv3z5e+9KV84QtfyNVXX52rrroqt9xyS/7whz80PTahVCpl3Lhx2XPPPfPe9743Bx98cDbZZJP1WnxHqqurS11dXRoaGjq7FAAAAACgG2tTaNu0cs+eed/73pf3ve99SZKGhoYsWrQoSTJ06ND06NGj4yvcQGpra1NbW5v6+vpUV1d3djkAAAAAQDfVrtD2tXr06JHhw4d3VC0AAAAAAN1emz6IDAAAAACADUNoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABWkZ0dtqCiK/OMf/8jy5cuz++67Z+DAgR21aQAAAACAbqOsO22/9KUvZe+99276uiiK7LfffnnnO9+Zd73rXXnLW96Shx9+uMOKBAAAAADoLsoKbX//+99n5513bvr6d7/7Xa677rp87Wtfy5/+9Kc0NDTkK1/5SkfVCAAAAADQbZT1eIQnn3wy2267bdPXf/jDH1JTU5NTTz01SXL88cfne9/7XsdUCAAAAADQjZR1p23Pnj2zfPnyJP95NMJ1112XAw44oGn5yJEjs3Dhwo6pEAAAAACgGynrTts3v/nN+cUvfpEPfehDueKKK/Lss8/mXe96V9PyRx99NMOGDeuwIjeEurq61NXVpaGhobNLAQBgPThnVte6qWD65K51PQ0AQMcpK7Q9/fTTc/DBBzcFs29729uafTDZNddckylTpnRMhRtIbW1tamtrU19fn+rq6s4uBwAAAADopsoKbd/5znfmrrvuyt/+9rcMHjw4Rx55ZNOyxYsXZ4899sh73vOeDisSANrLHXUAAAB0VWWFtklSU1OTmpqaNcaHDBmSb33rW+tUFAAAAABAd1V2aLvK888/n8WLF6coijWWjR07dl03DwAAAADQrZQV2r700ks588wz8+Mf/zjPPvtsq+v5UC8AAAAAgPYpK7T95Cc/mZ/97Gc55JBD8va3vz1Dhgzp6LoAAAAAALqlskLbP/zhD/l//+//5fvf/35H1wMAAAAA0K1VlfOiUqmUHXbYoaNrAQAAAADo9soKbd/73vfm73//e0fXAgAAAADQ7ZUV2p522ml55JFHctxxx+XOO+/MggULsmjRojX+AQAAAADQPmU90/YNb3hDkmTWrFn58Y9/3Op6DQ0N5VUFAAAAANBNlRXann766SmVSh1dCwAAAABAt1dWaPuVr3ylg8sAAAAAACAp85m2r/Xiiy/mxRdf7IhNAQAAAAB0a2WHto899limTZuWkSNHZsCAARkwYEBGjhyZY489No8++mhH1ggAAAAA0G2U9XiE++67L7vvvnuWLFmSd77zndl+++2bxi+99NJcffXVufnmm7Pddtt1aLEAAAAAABu7skLb6dOnp6qqKrNmzcpb3vKWZsvuvffevOMd78j06dNzxRVXdEiRAAAAAADdRVmPR7jhhhty4oknrhHYJsmb3/zmnHDCCbn++uvXtbYNqq6uLjU1NZkyZUpnlwIAAAAAdGNlhbYvv/xy+vbt2+ryfv365eWXXy67qM5QW1ubOXPmZMaMGZ1dCgAAAADQjZUV2k6ePDk/+tGPsnTp0jWW1dfX58c//nF22GGHdS4OAAAAAKC7KeuZtmeeeWYOOOCAjB8/PtOmTcsb3/jGJMn999+fn/3sZ3n22WdTV1fXoYUCAAAAAHQHZYW2++yzT/785z/n85//fM4555xmyyZNmpSf//zn2XvvvTukQAAAAACA7qSs0DZJ9t1338yaNSvz5s3Lo48+miTZcssts9lmm3VYcQAAAAAA3U3Zoe0qm222maAWAAAAAKCDtCm0vfTSS5MkH/nIR1IqlZq+Xpujjz66/MoAgIp1zqyFnV1Cm02fPKyzSwAAAGiXNoW2xxxzTEqlUo466qj06tUrxxxzzFpfUyqVhLYAAAAAAO3UptB27ty5SZJevXo1+xoAAAAAgI7VptB2yy23fN2vAQAAAADoGFXlvGibbbbJH//4x1aX/+lPf8o222xTdlEAAAAAAN1VWaHtv//97zz//POtLn/++efz6KOPll0UAAAAAEB3VVZom/zng8ZaM2PGjAwePLjcTQMAAAAAdFtteqZtknz729/Ot7/97ST/CWw/85nP5Etf+tIa6y1dujRLlizJBz/4wY6rEgAAAACgm2hzaDtixIi86U1vSvKfxyOMHj06o0ePbrZOqVRK//79s+OOO+aTn/xkx1YKAAAAANANtDm0/cAHPpAPfOADSZK99947X/7yl/OOd7xjvRUGAAAAANAdtTm0Xd0//vGPjq4DAAAAAICUGdqu8vLLL+e+++7L0qVL09jYuMbyPfbYY102DwAAAADQ7ZQV2jY2NubUU0/Nf/3Xf+WFF15odb2GhoayCwMAAAAA6I6qynnRWWedlW984xv58Ic/nEsvvTRFUeScc87JxRdfnAkTJmTixIn5y1/+0tG1AgAAAABs9MoKbS+55JK8//3vz/e+970ccMABSZIdd9wxH/vYx3L77benVCrlf/7nfzq0UAAAAACA7qCs0PaJJ57IPvvskyTp3bt3kuSll15KkvTq1Ssf/vCH8/Of/7yDSgQAAAAA6D7KCm033XTTPP/880mSAQMGZNCgQXnkkUearbN48eJ1rw4AAAAAoJsp64PIJk+enBkzZjR9vffee+fCCy/M5MmT09jYmIsuuigTJ07ssCIBAAAAALqLsu60Pe6447J8+fIsX748SfL1r389S5YsyR577JE999wz9fX1+eY3v9mhhbbVkiVLstNOO2XSpEl585vfnB/+8IedUgcAAAAAQDnKutP2Pe95T97znvc0fV1TU5OHH344119/fXr06JHddtstQ4cO7bAi22PgwIG58cYb069fvyxbtixvfvObc+ihh2bTTTftlHoAAAAAANqjrNC2KIqUSqVmY9XV1Xnve9/bIUWtix49eqRfv35JkuXLl6coihRF0clVAQAAAAC0TVmPRxg9enQ+/elP55ZbbunoenLjjTfm4IMPzqhRo1IqlXLllVeusU5dXV222mqr9OnTJ7vsskvuuOOOZsuXLFmSiRMnZsyYMfn85z+fYcOGdXidAAAAAADrQ1mh7Z577pmf/OQnefvb356xY8fm5JNPXiM4LdeyZcsyceLE1NXVtbj88ssvz0knnZQzzjgjd911VyZOnJj9998/zzzzTNM6gwcPzuzZszN37tz86le/yvz58zukNgAAAACA9a2sxyNcdtllefHFF/OnP/0pl19+eb73ve/lW9/6VrbaaqsceeSRef/7359JkyaVVdCBBx6YAw88sNXlF1xwQT72sY9l2rRpSZKLL74411xzTX7yk59k+vTpzdYdOXJkJk6cmJtuuimHH354i9tb/QPVkqS+vj5JsnLlyqxcuTJJUlVVlaqqqjQ2NqaxsbFp3VXjDQ0NzR7B0Np4jx49UiqVmra7+niSNDQ0tGm8Z8+eKYqi2XipVEqPHj3WqLG1cT3pSU962th7StGY0mq1FKVSUqpqdbxUNCbNxquSUqn18cbmNRal//wdtFQ0tm28qkdSFE3jK1eu7FrztFrtrfX0SvH/2Qetjq//eVq9r67w/ZSi2KDH3ivFlz1Pq+/fSj9HlBobNuixt7py5qmrnctX9byhjr11nqeky/zMXf142tA/n14pvl3z1NjY2KWuI5rtswo/R6zaF13meq+l64UKPkes6qGrXJc37cdOvIZ9pfi1zlNL1wsVfY4oGjv9GnZ1a5un1+6DSj5HrPV6odLOEUmHH3uvfV1rygptk6Rv37454ogjcsQRR2TZsmX54x//mMsvvzzf+ta3cu655+YNb3hD7rvvvnI336IVK1bkzjvvzKmnnto0VlVVlX333Te33nprkmT+/Pnp169fBg4cmKVLl+bGG2/M8ccf3+o2zz777Jx55plrjM+aNSv9+/dPkgwfPjzjxo3L3Llzs2DBgqZ1xowZkzFjxuSBBx7I0qVLm8a32WabjBgxIvfee29efPHFpvHx48dn8ODBmTVrVrMJnDBhQnr16pWZM2c2q2GnnXbKihUrcs899zSN9ejRI1OmTMnSpUub7d++fftm4sSJWbhwYR555JGm8erq6my//fZ56qmn8sQTTzSN60lPetLTxt7ToBeezaBlr9a+rO/gLB44KkOen5f+Ly5pGq/vPzz1/Ydn06WPp8+KZU3jiwdunmV9h2Tk4rnpufLVP+4tHDw2L/UakFGLHkxptYuXeUPHpaGqZ0YvvL9ZT08O2y49Gldms0UPN40VVVV5ctj49Hl5WYYteSxJMnNmry41Tz0bVqy1pyRZ2bN35g0dl/4vLcmQ555uGn+pV/8sHLzlBpmnmTPntqmnSvl+6t+46QY99pJ1m6eZM1/dB5V+jhi9dMUGPfbWdZ662rl89NIVa+2pks4RyfAu8zN39MJXxzf0z6ek/fM0d+7zXeo6YvV9U+nniJkze3Wp671S0dhpP5/KmaeZM3uttadKOkckfTr9GjZp2zytfr3QFX7XGLms1OnXsO2Zp9V7rfRzxKrrhc6+hm3rPCXDO/zYW7ZsWdqiVHTgp3Q9//zzueSSS/KlL30pzz///BrJcnuVSqVcccUVOeSQQ5IkTz31VEaPHp1bbrklu+66a9N6p5xySm644YbcfvvtueOOO3Lcccc1fQBZbW1tPv7xj7f6Hi3dabvFFlvk2WefzaBBg5J0kb8CVchfTPSkJz3pqVJ6OueuZyrqr99r+0vx5yZu2qXm6dxZCyvnr99rmafPTdy0TT21NN4Z30/n37O4Iu+QaW2eTp4wdK09Vco54puzn63YO2RamqcvTNq0S53Lvzn72bX2VEnniOk7DO8yP3PPv3thm3qqlHPE5ycP71LXEd+Y9eov9JV+jlj1M62rXO+1eL1QweeIVfu3q1yXnzd7Uadfw75S/FrnqaXrhUo+R3zznkWdfg27urXN08kThqy1p0o5R6z1eqHCzhHTdxje4cdefX19Nt100yxdurQpe2xJ2XfarvLCCy/kj3/8Y37zm9/k2muvzfLlyzNu3LiceOKJ67rpsuy88865++6727x+796907t37zXGe/bsmZ49m++eVQfga63a+W0df+12yxkvlUotjrdWY3vH9aSn1sb1pKeka/SUUlWKUgsbb2X8PxdI7RivarnXotSO8VKpaXz13rrEPK1W+7qNr/95aqn+iv5+Kv2nkQ117LVtvPV5amnfVOo5otm+6wLniK52Ln9tz13hHNFVfua2dDxV8jliVR9d5TqixX1WoeeI1XvoEueI1o6ZVOY54rU9dIVzRGdfw7ZtvOXrhUo+R6wKDjvzGrYlrc1TRVzDrmW8XdcLrY130jmio4+91pavsX6b1nqNl156Kddcc00uv/zy/PnPf84LL7yQrbbaKieeeGKOPPLITJ48uZzNrtWwYcPSo0ePNT5YbP78+dlss83Wy3sCAAAAAGxIZYW2w4cPzwsvvJBRo0bluOOOy5FHHplddtmlo2tbQ69evbLjjjvmuuuua3pkQmNjY6677rqccMIJ67Tturq61NXVrfMjHQAAAAAA1kVZoe0xxxyTI488MrvvvntH15Pnn38+Dz30UNPXc+fOzd13352hQ4dm7NixOemkkzJ16tTstNNO2XnnnXPhhRdm2bJlmTZt2jq9b21tbWpra1NfX5/q6up1bQMAAAAAoCztDm1feOGFPPnkk3n00UfXS2g7c+bM7L333k1fn3TSSUmSqVOn5pJLLsmRRx6ZBQsW5PTTT8+8efMyadKkXHvttRk5cmSH1wIAAAAAsKG1O7Tt169f/v73v+fAAw9cH/Vkr732avaJbC054YQT1vlxCAAAAAAAlaiFj9teu9133z233nprR9cCAAAAANDtlRXafve7381NN92UL3/5y3niiSc6uiYAAAAAgG6rrNB24sSJeeKJJ3L22Wdnyy23TO/evTNo0KBm/7rah3nV1dWlpqYmU6ZM6exSAAAAAIBurN3PtE2Sww47LKVSqaNr6VS1tbWpra1NfX19lwucAQAAAICNR1mh7SWXXNLBZQAAAAAAkJT5eAQAAAAAANaPskPbxx57LJ/4xCey3XbbZciQIbnxxhuTJAsXLsyJJ56YWbNmdViRAAAAAADdRVmPR5gzZ07e/va3p7GxMbvsskseeuihrFy5MkkybNiw3HzzzVm2bFl+/OMfd2ixAAAAAAAbu7JC21NOOSWDBw/ObbfdllKplBEjRjRb/q53vSuXX355hxS4odTV1aWuri4NDQ2dXQoAAAAA0I2V9XiEG2+8Mccff3yGDx+eUqm0xvKxY8fmySefXOfiNqTa2trMmTMnM2bM6OxSAAAAAIBurKzQtrGxMf369Wt1+YIFC9K7d++yiwIAAAAA6K7KCm132GGHXHPNNS0uW7lyZX7961/nrW996zoVBgAAAADQHZUV2p566qm59tprc/zxx+fee+9NksyfPz9///vfs99+++X//u//Mn369A4tFAAAAACgOyjrg8gOPPDAXHLJJfn0pz+dH/zgB0mSD3/4wymKIoMGDcqll16aPfbYo0MLBQAAAADoDsoKbZPkIx/5SA499ND87W9/y4MPPpjGxsaMGzcu+++/fwYOHNiRNQIAAAAAdBtlh7ZJ0r9//xxyyCEdVErnqqurS11dXRoaGjq7FAAAAACgGyvrmbaPPfZYbr755mZjs2fPztFHH50jjzwyV155ZUfUtkHV1tZmzpw5mTFjRmeXAgAAAAB0Y2XdaXviiSfm+eefz9///vck//kQsr333jsrVqzIwIED87vf/S6//e1vc+ihh3ZosQAAAAAAG7uy7rS944478s53vrPp60svvTQvvvhiZs+enSeffDLveMc7cv7553dYkQAAAAAA3UVZoe2iRYsyYsSIpq//9Kc/Zc8998y4ceNSVVWVQw89NPfdd1+HFQkAAAAA0F2UFdoOHz48jz76aJJkyZIlue2227L//vs3LV+5cmVWrlzZMRUCAAAAAHQjZT3Tdt99981FF12UQYMG5frrr09jY2MOOeSQpuVz5szJFlts0VE1AgAAAAB0G2WFtuecc04eeOCBnHzyyenVq1fOP//8bL311kmS5cuX5ze/+U0++MEPdmihAAAAAADdQVmh7ciRI/O///u/Wbp0afr27ZtevXo1LWtsbMx1113X5e60raurS11dXRoaGjq7FAAAAACgGyvrmbarVFdXNwtsk6Rv376ZOHFihg4duk6FbWi1tbWZM2dOZsyY0dmlAAAAAADdWNmh7YIFC3LyySenpqYm/fr1S79+/VJTU5OTTz458+fP78gaAQAAAAC6jbJC23/96195y1vekgsuuCDV1dU54ogjcsQRR6S6ujoXXHBBJkyYkHvvvbejawUAAAAA2OiV9Uzb2traNDQ05Pbbb8+UKVOaLbvjjjty0EEH5VOf+lT+8Y9/dEiRAAAAAADdRVl32t5xxx359Kc/vUZgmyQ777xzPv3pT+f2229f5+IAAAAAALqbskLbESNGpE+fPq0u79OnT0aMGFF2UQAAAAAA3VVZoe1nPvOZfO9738u8efPWWPbUU0/le9/7Xj7zmc+sa20AAAAAAN1Om55pe8EFF6wxNmDAgGy77bZ53/vel2233TZJ8uCDD+bKK6/Mtttum6IoOrZSAAAAAIBuoE2h7cknn9zqsl/+8pdrjN1zzz05+eST89nPfrb8ygAAAAAAuqE2hbZz585d33V0urq6utTV1aWhoaGzSwEAAAAAurE2hbZbbrnl+q6j09XW1qa2tjb19fWprq7u7HIAAAAAgG6qTaHtay1fvjz/+7//m//7v/9LfX19Bg4cmJqamrztbW9L7969O7pGAAAAAIBuo12hbVEUOf/883Puuedm8eLFzT5srFQqZciQIfnCF76Qk08+OaVSqcOLBQAAAADY2LUrtP3Qhz6UX//613nDG96QT33qU5k4cWIGDhyY5557LrNnz86vfvWrTJ8+PXfffXeLH1AGAAAAAMDra3No+/Of/zy//vWvc/LJJ+fss89Ojx49mi0/5JBDctppp+WLX/xivvGNb+TAAw/Mhz/84Q4vGAAAAABgY1bV1hV/+MMfZs8998x55523RmDbtLGqqpxzzjnZc88984Mf/KDDigQAAAAA6C7aHNrec889Oeyww9q07qGHHpp77rmn7KIAAAAAALqrNoe2L7/8cvr06dOmdXv37p2VK1eWXRQAAAAAQHfV5tB22223zY033timdW+66aZss802ZRcFAAAAANBdtTm0Pfzww3PZZZflmmuued31rrnmmlx22WU54ogj1rk4AAAAAIDups2h7ec+97lst912OeSQQ3LcccflpptuSn19fYqiSH19fW6++eYcd9xxOeSQQ7Lddtvlc5/73PqsGwAAAABgo9SzrSv269cv//M//5Ojjz46P/rRj/LjH/94jXWKosi+++6bSy+9NP369evQQgEAAAAAuoM2h7ZJMmLEiFx77bW5/fbbc/XVV2fOnDl57rnnMnDgwGy//fZ597vfnV133XV91bpe1dXVpa6uLg0NDZ1dCgAAAADQjbUrtF1ll112yS677NLRtXSq2tra1NbWpr6+PtXV1Z1dDgAAAADQTbX5mbYAAAAAAKx/QlsAAAAAgAoitAUAAAAAqCBCWwAAAACACtKm0Paiiy7KAw88sL5rAQAAAADo9toU2n72s5/NzJkzm77u0aNHfvWrX623ogAAAAAAuqs2hbZDhgzJ/Pnzm74uimK9FQQAAAAA0J31bMtKe+21V77yla/k7rvvTnV1dZLk0ksvzW233dbqa0qlUr797W93TJUAAAAAAN1Em0Lb//qv/8pnPvOZ/PWvf80zzzyTUqmUv/71r/nrX//a6muEtgAAAAAA7demxyOMGDEiv/rVr/L000+noaEhRVHkF7/4RRobG1v919DQsL5rBwAAAADY6LQptH2tn/70p9ltt906uhYAAAAAgG6vTY9HeK2pU6c2/fecOXPy6KOPJkm23HLL1NTUdExlAAAAAADdUFmhbZJcddVVOemkk/Lvf/+72fjWW2+dCy64IO95z3vWtTYAAAAAgG6nrMcj/PnPf85hhx2WJDnrrLNyxRVX5IorrshZZ52Voihy6KGH5tprr+3QQgEAAAAAuoOy7rT96le/mgkTJuSmm25K//79m8bf85735IQTTsjuu++eM888MwcccECHFQoAAAAA0B2UdaftPffck6lTpzYLbFfp379/jjnmmNxzzz3rXBwAAAAAQHdTVmjbp0+fLFq0qNXlixYtSp8+fcouqjPU1dWlpqYmU6ZM6exSAAAAAIBurKzQdp999sm3v/3t3HrrrWssu/3223PRRRdl3333XefiNqTa2trMmTMnM2bM6OxSAAAAAIBurKxn2p533nnZdddds/vuu2fnnXfOdtttlyS5//77c8cdd2TEiBE599xzO7RQAAAAAIDuoKw7bbfeeuvcc889OfHEE7N48eJcfvnlufzyy7N48eJ8+tOfzuzZs7PVVlt1cKkAAAAAABu/su60TZIRI0bkW9/6Vr71rW91ZD0AAAAAAN1aWXfaAgAAAACwfghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIK0O7R94YUXsuOOO+biiy9eH/UAAAAAAHRr7Q5t+/Xrl7lz56ZUKq2PegAAAAAAurWyHo9wwAEH5C9/+UtH1wIAAAAA0O2VFdqedtppeeCBB/KRj3wkN998c5588sksWrRojX8AAAAAALRPz3Je9KY3vSlJMmfOnPzqV79qdb2GhobyqgIAAAAA6KbKCm1PP/10z7QFAAAAAFgPygptv/KVr3RwGQAAAAAAJGU+0/a1li5d6lEIAAAAAAAdoOzQdubMmTnggAPSr1+/bLrpprnhhhuSJAsXLsx73/veXH/99R1VIwAAAABAt1FWaHvLLbdk9913z4MPPpgPf/jDaWxsbFo2bNiwLF26NN///vc7rEgAAAAAgO6irND2i1/8YrbffvvMmTMnZ5111hrL995779x+++3rXBwAAAAAQHdTVmg7Y8aMTJs2Lb17906pVFpj+ejRozNv3rx1Lg4AAAAAoLspK7TdZJNNmj0S4bWefPLJDBgwoOyiAAAAAAC6q7JC27e+9a353e9+1+KyZcuW5ac//Wn23HPPdSoMAAAAAKA7Kiu0PfPMMzNz5sy8613vyn//938nSWbPnp0f/ehH2XHHHbNgwYKcdtppHVooAAAAAEB3UFZou8suu+TPf/5zHnrooRx99NFJks997nM57rjj0tDQkD//+c+ZMGFChxbaVo8//nj22muv1NTUZMKECfntb3/bKXUAAAAAAJSjZ7kv3GeffXL//fdn1qxZeeihh9LY2Jhx48Zlxx13bPHDyTaUnj175sILL8ykSZMyb9687LjjjjnooIPSv3//TqsJAAAAAKCtyg5tV5k8eXImT57cEbV0iM033zybb755kmSzzTbLsGHDsmjRIqEtAAAAANAllPV4hCRZvnx5vvvd7+aggw5KTU1NampqctBBB+W73/1uXnrppbILuvHGG3PwwQdn1KhRKZVKufLKK9dYp66uLltttVX69OmTXXbZJXfccUeL27rzzjvT0NCQLbbYoux6AAAAAAA2pLJC2yeeeCKTJk3KiSeemNmzZ2f48OEZPnx4Zs+enRNPPDGTJk3KE088UVZBy5Yty8SJE1NXV9fi8ssvvzwnnXRSzjjjjNx1112ZOHFi9t9//zzzzDPN1lu0aFGOPvro/OAHPyirDgAAAACAzlDW4xFqa2vz6KOP5je/+U0OP/zwZst++9vfZurUqamtrc1VV13V7m0feOCBOfDAA1tdfsEFF+RjH/tYpk2bliS5+OKLc8011+QnP/lJpk+fnuQ/dwEfcsghmT59enbbbbfXfb/ly5dn+fLlTV/X19cnSVauXJmVK1cmSaqqqlJVVZXGxsY0NjY2rbtqvKGhIUVRrHW8R48eKZVKTdtdfTxJGhoa2jTes2fPFEXRbLxUKqVHjx5r1NjauJ70pCc9bew9pWhMabVailIpKVW1Ol4qGpNm41VJqdT6eGPzGovSf/4OWioa2zZe1SMpiqbxlStXdq15Wq321np6pfj/7INWx9f/PK3eV1f4fkpRbNBj75Xiy56n1fdvpZ8jSo0NG/TYW10589TVzuWret5Qx946z1PSZX7mrn48beifT68U3655amxs7FLXEc32WYWfI1btiy5zvdfS9UIFnyNW9dBVrsub9mMnXsO+Uvxa56ml64WKPkcUjZ1+Dbu6tc3Ta/dBJZ8j1nq9UGnniKTDj73Xvq41ZYW21113XT772c+uEdgmyRFHHJG77ror3/nOd8rZ9OtasWJF7rzzzpx66qlNY1VVVdl3331z6623JkmKosgxxxyTffbZJx/5yEfWus2zzz47Z5555hrjs2bNanoO7vDhwzNu3LjMnTs3CxYsaFpnzJgxGTNmTB544IEsXbq0aXybbbbJiBEjcu+99+bFF19sGh8/fnwGDx6cWbNmNZvACRMmpFevXpk5c2azGnbaaaesWLEi99xzT9NYjx49MmXKlCxdujT33Xdf03jfvn0zceLELFy4MI888kjTeHV1dbbffvs89dRTze5+1pOe9KSnjb2nQS88m0HLXq19Wd/BWTxwVIY8Py/9X1zSNF7ff3jq+w/PpksfT58Vy5rGFw/cPMv6DsnIxXPTc+Wrf9xbOHhsXuo1IKMWPZjSahcv84aOS0NVz4xeeH+znp4ctl16NK7MZosebhorqqry5LDx6fPysgxb8liSZObMXl1qnno2rFhrT0mysmfvzBs6Lv1fWpIhzz3dNP5Sr/5ZOHjLDTJPM2fObVNPlfL91L9x0w167CXrNk8zZ766Dyr9HDF66YoNeuyt6zx1tXP56KUr1tpTJZ0jkuFd5mfu6IWvjm/on09J++dp7tznu9R1xOr7ptLPETNn9upS13ulorHTfj6VM08zZ/Zaa0+VdI5I+nT6NWzStnla/XqhK/yuMXJZqdOvYdszT6v3WunniFXXC519DdvWeUqGd/ixt2zZsrRFqWh2a0fbbL755pk+fXo+/elPt7j829/+ds4555w8/fTTLS5vq1KplCuuuCKHHHJIkuSpp57K6NGjc8stt2TXXXdtWu+UU07JDTfckNtvvz0333xz9thjj0yYMKFp+c9//vO85S1vafE9WrrTdosttsizzz6bQYMGJekifwWqkL+Y6ElPetJTpfR0zl3PVNRfv9f2l+LPTdy0S83TubMWVs5fv9cyT5+buGmbemppvDO+n86/Z3FF3iHT2jydPGHoWnuqlHPEN2c/W7F3yLQ0T1+YtGmXOpd/c/aza+2pks4R03cY3mV+5p5/98I29VQp54jPTx7epa4jvjHr1V/oK/0csepnWle53mvxeqGCzxGr9m9XuS4/b/aiTr+GfaX4tc5TS9cLlXyO+OY9izr9GnZ1a5unkycMWWtPlXKOWOv1QoWdI6bvMLzDj736+vpsuummWbp0aVP22JKy7rSdNm1aLrnkknzsYx9Lv379mi17/vnn89Of/jQf/ehHy9n0Ott9992bHUxr07t37/Tu3XuN8Z49e6Znz+a7Z9UB+Fqrdn5bx1+73XLGS6VSi+Ot1djecT3pqbVxPekp6Ro9pVSVotTCxlsZ/88FUjvGq1rutSi1Y7xUahpfvbcuMU+r1b5u4+t/nlqqv6K/n0r/aWRDHXttG299nlraN5V6jmi277rAOaKrnctf23NXOEd0lZ+5LR1PlXyOWNVHV7mOaHGfVeg5YvUeusQ5orVjJpV5jnhtD13hHNHZ17BtG2/5eqGSzxGrgsPOvIZtSWvzVBHXsGsZb9f1QmvjnXSO6Ohjr7Xla6zflpX+8Ic/NPt68uTJueaaazJ+/PhMnTo12267bZLkwQcfzKWXXpqhQ4c2u9O1owwbNiw9evTI/Pnzm43Pnz8/m222WYe/HwAAAADAhtam0Pbwww9PqVRquhV49f/++te/vsb6TzzxRD7wgQ/k/e9/fweWmvTq1Ss77rhjrrvuuqZHJjQ2Nua6667LCSecsE7brqurS11d3Rq3MAMAAAAAbEhtCm3/8Y9/rO86mjz//PN56KGHmr6eO3du7r777gwdOjRjx47NSSedlKlTp2annXbKzjvvnAsvvDDLli3LtGnT1ul9a2trU1tbm/r6+lRXV69rGwAAAAAAZWlTaLvnnnuu7zqazJw5M3vvvXfT1yeddFKSZOrUqbnkkkty5JFHZsGCBTn99NMzb968TJo0Kddee21Gjhy5wWoEAAAAAFhfyvogsvVpr732avaJbC054YQT1vlxCAAAAAAAlajs0Pbmm2/OT37ykzzyyCNZvHjxGkFrqVTK7Nmz17lAAAAAAIDupKzQ9oILLsjnP//59OnTJ9ttt12GDh3a0XUBAAAAAHRLZYW23/jGN/K2t70tV1999UbzoV11dXWpq6tLQ0NDZ5cCAAAAAHRjVeW86IUXXsiHPvShjSawTZLa2trMmTMnM2bM6OxSAAAAAIBurKzQdu+9984///nPjq4FAAAAAKDbKyu0/c53vpPrrrsu559/fhYtWtTRNQEAAAAAdFtlhbZbbLFFPv7xj2f69OkZPnx4+vfvn0GDBjX7tzE9OgEAAAAAYEMp64PITj/99Hz961/P6NGjs9NOOwloAQAAAAA6SFmh7cUXX5x3vetdufLKK1NVVdbNuhWnrq4udXV1aWho6OxSAAAAAIBurKzEdcWKFXnXu9610QS2SVJbW5s5c+ZkxowZnV0KAAAAANCNlZW6vvvd785NN93U0bUAAAAAAHR7ZYW2Z5xxRubMmZNPfvKTufPOO7NgwYIsWrRojX8AAAAAALRPWc+03W677ZIkd999d77//e+3up7nwwIAAAAAtE9Zoe3pp5+eUqnU0bUAAAAAAHR7ZYW2X/nKVzq4DAAAAAAAkjKfabsxqqurS01NTaZMmdLZpQAAAAAA3VhZd9r+f//f/7fWdUqlUk477bRyNt8pamtrU1tbm/r6+lRXV3d2OQAAAABAN9Xhj0colUopiqLLhbYAAAAAAJWgrMcjNDY2rvFv5cqVefjhh/PZz342O+20U5555pmOrhUAAAAAYKPXYc+0raqqytZbb53zzz8/b3jDG/KpT32qozYNAAAAANBtrJcPIttjjz3y5z//eX1sGgAAAABgo7ZeQtuZM2emqmq9bBoAAAAAYKNW1geRXXrppS2OL1myJDfeeGP+8Ic/5P/9v/+3ToUBAAAAAHRHZYW2xxxzTKvLhg0blunTp+f0008vt6ZOUVdXl7q6ujQ0NHR2KQAAAABAN1ZWaDt37tw1xkqlUoYMGZKBAweuc1Gdoba2NrW1tamvr091dXVnlwMAAAAAdFNlhbZbbrllR9cBAAAAAEDW0weRAQAAAABQnjbfaTthwoR2bbhUKmX27NntLggAAAAAoDtrc2g7dOjQlEqlta43b9683H///W1aFwAAAACA5toc2l5//fWvu3zevHk599xz8/3vfz89evTIRz7ykXWtDQAAAACg2ynrg8hWN3/+/Jxzzjn5wQ9+kJdffjkf/vCH86UvfSnjxo3riPoAAAAAALqVskPbVXfWrh7WfvnLX84222zTkfUBAAAAAHQr7Q5t582bl3POOSc//OEP8/LLL+cjH/lIvvzlL2frrbdeH/UBAAAAAHQrbQ5tn3766aawduXKlTn66KPzpS99aaMJa+vq6lJXV5eGhobOLgUAAAAA6MbaHNqOGzcuy5cvz6RJk/LFL34xW2+9dRYvXpzFixe3+poddtihQ4rcEGpra1NbW5v6+vpUV1d3djkAAAAAQDfV5tD2pZdeSpLMmjUr73//+1933aIoUiqV3LUKAAAAANBObQ5tf/rTn67POgAAAAAASDtC26lTp67POgAAAAAASFLV2QUAAAAAAPAqoS0AAAAAQAUR2gIAAAAAVBChLQAAAABABRHaAgAAAABUEKEtAAAAAEAFEdoCAAAAAFQQoS0AAAAAQAUR2r6irq4uNTU1mTJlSmeXAgAAAAB0Y0LbV9TW1mbOnDmZMWNGZ5cCAAAAAHRjQlsAAAAAgAoitAUAAAAAqCBCWwAAAACACiK0BQAAAACoID07uwCA7uycWQs7u4Q2mz55WGeXAAAAAN2CO20BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqSM/OLqC76EqfEJ/4lHgAAAAA6CzutAUAAAAAqCBCWwAAAACACiK0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQttX1NXVpaamJlOmTOnsUgAAAACAbkxo+4ra2trMmTMnM2bM6OxSAAAAAIBuTGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQTbK0PZ973tfhgwZksMPP7yzSwEAAAAAaJeNMrT99Kc/nUsvvbSzywAAAAAAaLeNMrTda6+9MnDgwM4uAwAAAACg3SoutL3xxhtz8MEHZ9SoUSmVSrnyyivXWKeuri5bbbVV+vTpk1122SV33HHHhi8UAAAAAGA9qLjQdtmyZZk4cWLq6upaXH755ZfnpJNOyhlnnJG77rorEydOzP77759nnnlmA1cKAAAAANDxenZ2Aa914IEH5sADD2x1+QUXXJCPfexjmTZtWpLk4osvzjXXXJOf/OQnmT59ervfb/ny5Vm+fHnT1/X19UmSlStXZuXKlUmSqqqqVFVVpbGxMY2NjU3rrhpvaGhIURSvO15qbEhRqkpKpZQaG5rVUJT+k52Xisa2jVf1SIqi+Xip9J/1Wx1vTGm1GotSKXmd8bb0lCQ9evRIqVRq2lerjydJQ0NDm8Z79uyZoiiajZdKpfTo0WON/d7aeEfMk570tKF7Wv18UOnniJUrV3apeWrvea9UNCbNxl+Zj9bGO3ieVq5c2bW+n157LLXQ0yvFd+jPp3LmafW+usI5IkWxQY+9V4ove55W37+Vfo4oNTZs0GNvdeXMU1f7mbuq5868hm3XPCVd5jqixeuFCj5HNDY2dqnrvWb7rMLPEav2RWdfw7Z5nlq6Xqjgc8SqHrrK7xpN+7ETr2FfKX6t89TS9UJFnyOKxk6/hl3d2ubptfugks8Ra71eqLRzRNLhx95rX9eaigttX8+KFSty55135tRTT20aq6qqyr777ptbb721rG2effbZOfPMM9cYnzVrVvr3758kGT58eMaNG5e5c+dmwYIFTeuMGTMmY8aMyQMPPJClS5c2jW+zzTYZMWJE7r333rz44otJktFLV2Th4LF5qdeAjFr0YEqrHfDzho5LQ1XPjF54f7Manhy2XXo0rsxmix5uGiuqqvLksPHp8/KyDFvyWNP4yp69M2/ouPR/aUmGPPd00/hLvfpn4eAtM+iFZzNo2au1L+s7OIsHjsqQ5+el/4tLmsbr+w9Pff/hbeopScaPH5/Bgwdn1qxZzQ7KCRMmpFevXpk5c2aznnbaaaesWLEi99xzT9NYjx49MmXKlCxdujT33Xdf03jfvn0zceLELFy4MI888kjTeHV1dbbffvs89dRTeeKJJ5rGO2Ke9KSnDd3T6IWvjlf6OWLmzF5dap7ae97bdOnj6bNiWdP44oGbZ1nfIRm5eG56rnz1j3vra55mzuzVpb6fejas6JSfT+XM08yZc9vUU6WcI/o3brpBj71k3eZp5sxX90GlnyNGL12xQY+9dZ2nrvYzd/TSFWvtqZLOEcnwLnMdMXrhq+Mb+udT0v55mjv3+S51vbf6vqn0c8TMmb0q4hq2rfNUKho7/Ro2afs8zZzZa609VdI5IunT6dewSdvmafXrha7wO+HIZaVOv4Ztzzyt3mulnyNWXS909jVsW+cpGd7hx96yZcvSFqWi2a0dlaVUKuWKK67IIYcckiR56qmnMnr06Nxyyy3Zddddm9Y75ZRTcsMNN+T2229Pkuy7776ZPXt2li1blqFDh+a3v/1ts/VX19KdtltssUWeffbZDBo0KEnH/HXhm7Of7fS/bLXnrwufnzCk8/+yVSF/BdKTntZnT+ffvbBpvNLPEZ+buGmXmqdz7nqmov76vbZ5+tzETbvU99O5sxZWzl+/1zJPn5u4aZt6amm8M84R59+zuCLvkGltnk6eMHStPVXKOeKbs5+t2DtkWpqnL0zatEv9zP3m7GfX2lMlnSOm7zC8y1xHtHi9UMHniM9PHt6lrve+MevVX+gr/Ryx6mdaZ1/DtnWeWrxeqOBzxKr921V+1zhv9qJOv4Z9pfi1zlNL1wuVfI745j2LOv0adnVrm6eTJwxZa0+Vco5Y6/VChZ0jpu8wvMOPvfr6+my66aZZunRpU/bYki51p21b/f3vf2/zur17907v3r3XGO/Zs2d69my+e1YdgK+1aue/3nhR1fJ/r64otWO8VGrneFWKUgsbb2W8LT2t7rX7qpzxUqnU4nhr+72943rSU2vjndlTS+eDSj1HrL6PusI8tfe8958LpHaMd/A8rd5bl/h+avcx1jE/n8qZp5bqr+hzROk/jWyoY69t463PU0v7plLPEc32XRc4R3S1n7mv7bkrnCO6ynVEi9cLFXyOWNVHV7nea3GfVeg5YvUeusQ5orVjJpV5jnhtD13hHNHZ17BtG2/5eqGSzxGrgsPOvIZtSWvzVBHXsGsZb9f1QmvjnXSO6Ohjr7Xlr9XCb7mVa9iwYenRo0fmz5/fbHz+/PnZbLPNOqkqAAAAAICO06VC2169emXHHXfMdddd1zTW2NiY6667rtXHH7RVXV1dampqMmXKlHUtEwAAAACgbBX3eITnn38+Dz30UNPXc+fOzd13352hQ4dm7NixOemkkzJ16tTstNNO2XnnnXPhhRdm2bJlmTZt2jq9b21tbWpra1NfX5/q6up1bQMAAAAAoCwVF9rOnDkze++9d9PXJ510UpJk6tSpueSSS3LkkUdmwYIFOf300zNv3rxMmjQp1157bUaOHNlZJQMAAAAAdJiKC2332muvZp/I1pITTjghJ5xwwgaqCAAAAABgw+lSz7QFAAAAANjYCW0BAAAAACpIxT0eobPU1dWlrq4uDQ0NnV0KVJRzZi3s7BLaZfrkYZ1dAgAAAMA6caftK2prazNnzpzMmDGjs0sBAAAAALoxoS0AAAAAQAUR2gIAAAAAVBChLQAAAABABRHaAgAAAABUEKHtK+rq6lJTU5MpU6Z0dikAAAAAQDcmtH1FbW1t5syZkxkzZnR2KQAAAABANya0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQlsAAAAAgAoitAUAAAAAqCBC21fU1dWlpqYmU6ZM6exSAAAAAIBuTGj7itra2syZMyczZszo7FIAAAAAgG5MaAsAAAAAUEGEtgAAAAAAFURoCwAAAABQQYS2AAAAAAAVRGgLAAAAAFBBhLYAAAAAABVEaPuKurq61NTUZMqUKZ1dCgAAAADQjQltX1FbW5s5c+ZkxowZnV0KAAAAANCNCW0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbV9RV1eXmpqaTJkypbNLAQAAAAC6MaHtK2prazNnzpzMmDGjs0sBAAAAALoxoS0AAAAAQAUR2gIAAAAAVBChLQAAAABABRHaAgAAAABUEKEtAAAAAEAFEdoCAAAAAFQQoS0AAAAAQAUR2gIAAAAAVBChLQAAAABABRHaAgAAAABUEKEtAAAAAEAF6dnZBVSKurq61NXVpaGhobNLoQznzFrY2SW0y/TJwzq7BAAAAAAqlDttX1FbW5s5c+ZkxowZnV0KAAAAANCNCW0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtAQAAAAAqiNAWAAAAAKCCCG0BAAAAACqI0BYAAAAAoIIIbQEAAAAAKojQFgAAAACggghtX1FXV5eamppMmTKls0sBAAAAALoxoe0ramtrM2fOnMyYMaOzSwEAAAAAujGhLQAAAABABRHaAgAAAABUEKEtAAAAAEAFEdoCAAAAAFQQoS0AAAAAQAXp2dkFVJqiKJIk9fX1Hbrdl55/rkO3t77V1/fq7BLaxf5df+zb9asr7V/7dv2yf9cf+3b96kr7175dv+zf9ce+Xb+60v61b9cv+3f9sW/Xr660f+3bVzPHVRlka0rF2tboZp544olsscUWnV0GAAAAALCRevzxxzNmzJhWlwttX6OxsTFPPfVUBg4cmFKp1NnlvK76+vpsscUWefzxxzNo0KDOLmejY/+uP/bt+mX/rj/27fpj365f9u/6Y9+uX/bv+mPfrl/27/pj364/9u36Zf+uP11t3xZFkeeeey6jRo1KVVXrT671eITXqKqqet2UuxINGjSoSxyUXZX9u/7Yt+uX/bv+2Lfrj327ftm/6499u37Zv+uPfbt+2b/rj327/ti365f9u/50pX1bXV291nV8EBkAAAAAQAUR2gIAAAAAVBChbRfWu3fvnHHGGendu3dnl7JRsn/XH/t2/bJ/1x/7dv2xb9cv+3f9sW/XL/t3/bFv1y/7d/2xb9cf+3b9sn/Xn4113/ogMgAAAACACuJOWwAAAACACiK0BQAAAACoIEJbAAAAAIAKIrQFAAAAAKggQlugIvmMxPWnoaGhs0uAdmtsbOzsEjZaL730UhL7eH3zc239sF8BNizn3fXHtdj61RWPXaHtRq4rHpR0bytWrEiSLF++PIljuCPNmzcvSdKjRw/BbQd78MEHc/fdd3d2GRuthx9+ON/97nezYMGCzi5lozNnzpyMHz8+s2fPTlWVy8KOVl9fn8WLF2fevHkplUp+GetAK1euTPLqdYJ927Fee/3legxY9fuD80HHW7hwYZKkqqrK72nrwcMPP5zFixenVCp1dint5up8I/TEE0/kzjvvTJIueVBWsoceeihnnXVWpk6dmh/96Ef597//3dklbVTuu+++fPzjH8/++++fj3/847n33nsdwx3k4YcfzqhRo3LQQQclEdx2pNmzZ2e77bbLrbfe2tmlbJTuueee7LLLLnn00UebLmiFMx3j7rvvztvf/vY89thj+dvf/pbEvu1I//rXv/Lud78773jHOzJhwoT89a9/FYx3kP/7v//LiSeemCOOOCKf/exnc+utt9q3Hej+++/PGWeckWOOOSY/+tGPct999/mjQweZP39+Hnjggc4uY6M0d+7cXHzxxTnppJPyt7/9remagY7xwAMP5OSTT85hhx2Wr33ta5k7d25nl7TReOCBB7LNNtvkuOOOS+L3tI42e/bsvOENb8gVV1zR2aWUxdXNRub+++/PTjvtlOOPPz4333xzZ5ezUbn33nuz2267Zfbs2XnwwQfzgx/8IOeee26WLVvW2aVtFP75z39mt912S+/evTNu3LjMnz8/F1xwQV5++WV/ze0AzzzzTMaMGZOHHnooBxxwQJL/XBD4BWzdzJ49O7vttltOOeWUHH/88Z1dzkbn6aefzv/f3p3Hx3Tvfxx/z2QnIos9WpIGsQQhKEF4XPv2sDa391Fiv2n8xFpVRaqUcK9rua2G0ktbYmtVW+29ei9t7fseSyy1FIkIkoYsM/P5/ZGbuRkSmYRvzky8n/+UyWg/Xj2PkzPfOfNN//79ERERgYULF6J+/foA/ncnPpXciRMn0Lp1a4wfPx7jxo1DXFwcDAYD9Ho9z7nPwblz5xAWFoZXX30Vb731Fvr164f/+7//Q1paGgDepfQszpw5g9DQUIgIKleujKSkJLRv3x4rV67kNdlzkJCQgFatWiEhIQGJiYlYuXIlOnfujP/85z88Pzyjs2fPomXLlpgxYwbOnDmj9ThlyqlTp9C2bVt88803+O677zB27Fh8+umnMJlMPGafg7zXaffu3YPJZMIPP/yA+Ph4iAj7PgcJCQlwc3PDqVOn8Oc//xkAX6c9LydOnEBoaCimTJmC4cOHaz1OiXDRtgy5ffs2IiMjERAQgEqVKmH27NnYtWuX1mOVCdevX0d4eDhGjBiBDRs2YO/evRg6dCi2b9+OBw8eaD2e3bty5Qr69euHqKgoxMXFYdmyZWjdujV0Oh2cnJzw8OFDALwDrKREBDqdDu7u7pg1axauXLmCnj17Asj9CM7Nmzc1ntA+nTt3DiEhIYiOjkZsbCxEBF999RXmzZuH9evX806a5+DkyZOoWrUqFi5cCJPJhOjoaPTq1QthYWH4/PPPzXuxUvEcP34cISEhmDBhAmbMmIFx48YhOzsbixYtAsBP6Twrg8GAefPmoWfPnliwYAFef/11DBo0CEFBQTAajbhx4wYbl1BWVhZiYmLwxhtv4OOPP8ayZcuwaNEiBAQEYMyYMVi+fDkALoqXlNFoxLx589CrVy9s3rwZe/bsQVxcHLp27YquXbti27ZtvOO2hG7evImRI0fCy8sLv/76KxYtWoTTp09rPVaZcPXqVQwYMABDhw7F1q1bceHCBfTr1w+ffPIJsrOzeb59RpcvX0bv3r0RGRmJ1atXY8uWLWjYsCGSkpKg0+l4R+hz4OLiAk9PT/Tt2xf79u1DZGQkgNzXab///rvG09mvvNdqb7/9NmJjY2EymbBjxw6sWLECe/fuxW+//ab1iFbhom0ZcuPGDTg4OGDBggWIjo6Gg4MD5syZw4XbZyQi2LlzJ+rWrYvIyEjzheqIESMA5L4zRs/m0KFDCA0NRXR0tPmxtLQ0HD58GK1atUK3bt3wr3/9i3d4lJBOp0Pjxo3RoEEDhIWFYf78+bhw4QL69++P4cOHY8WKFeaFcbLezz//DKPRiLZt28JkMqFjx46IjY1FXFwc5s6dix49enDLhGd09+5dODo6AgA6dOiAxMRENGnSBK1atUJERARiY2MBcIGmONLT0zF9+nRMnjwZc+fOBQD4+PigadOm2Llzp8bTlQ0GgwFXrlyBv7+/+bHdu3dj586daN++PRo1aoRZs2bxjvESyMnJQWJiIho2bAggt3X16tURGhqKTp06YfLkyeaFRSo+k8mE69ev46WXXjI/1rRpU8ybNw+jR4/GwIEDsX//fm5FUQLnzp1DhQoVsGbNGkRFReHYsWNYvHgxF26fkdFoxNatWxEcHIyxY8eaj83x48cjOzsbiYmJGk9o34xGI3788Uf84Q9/wKRJk8zXW25ubjh9+jQ6dOiAYcOGYe/evRpPat+CgoLQvHlzjBw5EsOGDcO+ffswadIkDB8+HGvXrkVOTo7WI9odk8mEjRs3wmg0YuDAgQCAzp07Y+LEiZgyZQqGDBmCiIgInDx5UuNJrSBUphw/ftz8623btkn37t2lS5cu8vPPP5sfNxqNFv+kom3btk3i4uLMvzeZTJKeni6+vr6yadMmDScrG+7duyfnzp0z/37BggXi6uoqixcvlri4OHnzzTfF2dlZTp48qeGU9i0zM1OCg4Plu+++ExGRHTt2iKenp+h0OnPXnJwcLUe0S++99544ODjIK6+8IgMGDJDz58+LwWCQgwcPyqBBgyQkJESSkpK0HtNu/fDDD+Lq6ipr1qyR/v37W7T87LPPRKfTye7duzWc0D6dP3/e/Ou8a4Hdu3eLTqeTzZs3azVWmRIdHS0VKlSQjz76SMaMGSNubm4SHx8vx44dk7Vr14pOp5OvvvpK6zHtTnZ2tvTu3VtGjBghDx48EBGRX3/9VSpVqiTbt2+XoUOHSmhoqGRkZGg8qf0aM2aMtG7dWlJTUy0ev3btmgwYMEB69Ohhbk/We/Tokezdu9f8+08//VSaNWsmI0aMsLi+NZlMWoxn11avXi1LliyxeCwpKUk8PT1l586d2gxVhly+fFlOnz5t/v2sWbPE1dVV5s6dKzNnzpTw8HDx9/eXy5cvazilfcvIyJDGjRvLsWPHJCMjQ1asWCE+Pj4Wr9MMBoPGU9qf27dvy+jRo8XFxUUaNWok/fv3l+PHj0t2drZ89dVX0qVLFxk0aJCkp6drPepTcdG2DHja4uv3338v3bp1k65du8ovv/wiIiLjxo2T/fv3l9Z4dq2gk2P+i6nmzZvL1q1bzb9fs2aNxYtherqC+mZlZcmoUaNk+/bt5scuX74sNWrUkM8++6w0x7Nr+c8LecdsRESEbNmyRUREXn/9dfH29paXX35Z+vbtq8WIduvx43bOnDkSFBQkx44ds3h806ZN4uPjwzcbiin/sWs0GuWPf/yj+Pn5Sf369eX3338Xg8Fgfk5wcLD87W9/02pUu5OdnV3g4yaTSdLS0qRPnz4yePBgefjwId/YLYH8zS5duiRjxoyRN954Q5o1ayZ/+ctfLJ4bGhoqkZGRpT2i3crfdvHixfLqq69Ku3bt5J133pHy5cubW8bHx0vt2rXl/v37Wo1q9zZs2CDBwcGycOFCSUtLs/ja6tWrpUaNGnLt2jWNprNvjy/Irl692rxwe+rUKRHJXRA7ceKEFuOVCXmNHz16JIGBgXLgwAHz17Zu3cpjt4TyumZmZkqPHj3MN4GIiOzatUuqVKli8dqNrJednS0Gg0G6dOkiu3btEhGR8PBw8fDwkDp16kh0dLTGE9q35ORkiYqKkpCQEElISLD42qJFi6RatWpy48YNjaazjqPWd/pSyd2/fx+enp7Q6/UwmUwWH1WS/+5h2b17d+h0OixduhRz586Fq6srtm7dioiICA0nt315bR0cHGAwGMwfzwUs9/rL/3H9d999F3//+99x5MiRUp/X3uTvazQa4eDgACD3uHV2dkZcXJzFca3T6VC9enWLj+tRwQo6L+Qdsw0bNsTx48exefNm7Ny5E99//z3u3r2LwYMHIzw8HBs2bNB4ettW2HH77rvvomfPnggMDAQAc/caNWqgcuXKKFeunJZj242Cjl29Xo/+/fvj/PnzOHv2LC5duoTGjRsDyO3s7u4OLy8vjSe3fXltnZycnrheAHK/r1WoUAGdOnXCO++8g5kzZyIgIMB8LUFPl//YzTs3+Pv748MPP0RmZibCwsJQrVo1ALkfNRURuLi4wM/PT+PJbV/+tnnXY+PGjYOXlxd27NiBCxcu4IMPPsC4ceMA5O4L6OHhofHU9uPmzZs4evQosrOz8fLLLyMkJASvvfYafvrpJ3zyySdwc3NDeHg4vL29AQAtWrRAuXLlkJ6ervHkti9/21q1aqF58+bQ6XTmH9yk1+vNr8eWLl2KJUuWIC0tDZs3bzZ/lJcKVtBxC8Di2izvGiLve9i0adPwj3/8AwcOHNBsbntR2LFrNBrh4uKCb7/91uJazdvbG1WrVjWfJ6hw+dvWrl0bzZo1g5OTEwCgefPmuHjxIlasWIFffvkF3377LU6dOoXY2Fg4Ojpi4cKFGk9v+wo6N1SuXBnTp0/H1atX8corrwD437kiICAAXl5ecHZ21njyImi4YEzPICEhQfz8/GTGjBnmxx6/Kyb/u7nffvuteHl5iaenp8UWCvQka9qK5L6D6+/vL1u2bJHY2FhxdXWVw4cPl+aodqm4x66IyLRp06RJkyZy69atUpnRXhXVduXKlaLT6aROnTpy5MgREcl9x3zbtm2SmJhY6vPak4LaFvUxpUmTJkmbNm3k3r17iqezfwX1zb9dx+effy716tUTDw8P+frrr+Xf//63TJ8+XWrWrMmP4xWhOOdck8kkbdq0kcGDBxd6Vy5ZsubcMGLECOnZs6dcuXJFUlJSJCYmRnx9fXneLUJBbbOysiye8/hxGhkZKV26dJGHDx+Wyoz27OTJk+Lv7y8tW7aUSpUqSUhIiMTHx5u/PnToUAkKCpLx48fLxYsX5c6dOzJlyhSpW7eupKSkaDi57Suo7ePbqeU/D69atUqcnJykYsWKT3xqhyxZ01Ykd+u1ypUry549e2T27Nni6uoqhw4d0mBi+2JN38dfp02dOlVatGghd+7cKc1R7U5Rbd977z3R6XTi5+dnfp127949WbZsmVy6dEmrse1GQX03btxo/npBW8+MGzdOOnfuLL///ntpjlpsXLS1Q9euXZOmTZtKnTp1pFGjRjJr1izz1wp6IWY0GmX8+PFSoUIF80dvqGDFaWs0GqVt27bSsGFDKVeuHC8ErFCcviIi586dkwkTJoiXlxffbCjC09rmX0B4++23+eZCMVnbNs/Zs2dl/Pjx4uXlxY84WuFpffMv0OzatUsiIiLE3d1dGjRoII0bN5ajR49qMbLdKO45V0Rk1KhR0qpVK5u/gLUF1vb94osvJCwsTJydneXVV1+Vl19+mcduEZ7WNv8bOnkvwvbs2SNjxowRDw8PnnetcPHiRalZs6ZMmTJF7t+/L4cPH5aIiAgZPny4ZGZmmp83a9Ysadeuneh0OmnevLlUq1aNx24RntbWYDBYLByYTCYxGAwSHR0tXl5eFvuG0pOK0zY9PV2Cg4OlQ4cOvLHGSsXpKyJy9epVeeutt3i9a4Wntc37npaTkyNRUVFy8OBBEfnf9zduV1W0khy7kydPFm9vb7vYxo6LtnbGZDLJ/PnzpUePHrJ9+3aJiYmRwMDApy4inDx5Unx9ffnNqgjFbZuTkyNt2rThNyorFbfv6dOnze/csu/TWdP20aNHGk5ov4p73J48eVImTJggQUFBfKPBCtb0ffzOusTERLl9+7bcvXu3tMe1KyW5XhARefDgAe/osII1ffPfBXrq1ClZtWqVfPnll3L16lUtRrYbxT12jUajbN26VVq3bs3zrhWysrJk4sSJ8tprr1mcX1etWiU+Pj5P3EWbkpIiP/zwg+zevVuuX79e2uPaleK2FRE5ePCg6HQ63vxRhOK2vX//vtSqVUu8vb15XrBCcfseOnRIoqKipEmTJuxbhJKcF8h6xe174MABGT58uAQGBtrNJxu4p62d0el0GDJkCKpWrYrOnTujSZMmAID4+HiICGJiYuDg4GCxZ11QUBASEhK4x1cRitvW0dERI0eORLt27RAQEKDx9LavuH0bNmyIN954AxMmTECVKlU0nt62WdPW1dXVYq8vsk5xj9ugoCAMGTIEU6ZMMe9hSYWzpq+zs7PF3uKvvPIK91m1QkmuFwwGAzw8PHi9YAVr+jo5OSEnJwdOTk5o1KgRGjVqpPHU9qG4x65er0efPn3QsWNHVKhQQePpbZ/JZELNmjVRv359ODs7m/eubtOmDdzd3ZGTk2N+nl6vh4+PD7p166bx1PbB2rb5tWjRAqmpqfD09Cz9ge1IcdtWrFgRo0aNwoABA8w/c4AKV9y+ISEhePToEaZPn47q1atrNLV9KMl5oaCfP0AFK27fli1bIj09He+//z58fX01mrqYNFgopufs5s2b5rsQ3nvvPfPjX3/9tfkuj4L28KCiFdb2yy+/1HCqsoN91XnaeYEfs3k2PG7V4rGrDtuqVVjfLVu2FLkHNj0d2z5f+fcCz3uNcOvWLQkICJBr166Zv8atEIqvJG35Os061rblXcslY21ffnq3+HjOVausH7u809YO3Lp1C9evX8e9e/fQqVMn851yJpMJOp0O1atXx+jRowEA69evh4jgwYMHWLJkCW7cuIEaNWrwrqRCPI+2VDj2VYdt1WFbtdhXHbZVi33VYVu18vqmpqaiS5cu8PPzAwCLT+A8ePAA9+7dM/+ZmTNn4sMPP0RiYiK8vb35WqIQbKsO26rFvuqwrVovXF/NlovJKidOnJBatWpJ3bp1pWLFihIYGCjr1q0z7+VnNBrN7ybcvHlTZs6cKTqdTry8vOz2nYTSwrZqsa86bKsO26rFvuqwrVrsqw7bqlVU37y258+fl8qVK0tqaqrMnj1b3Nzc2LcIbKsO26rFvuqwrVovYl8u2tqw5ORkCQwMlGnTpsmlS5fkt99+k/DwcKlfv77ExMRIcnKyiFh+pGbw4MHi4eEhZ86c0Wpsu8C2arGvOmyrDtuqxb7qsK1a7KsO26plbV8RkaSkJAkODpbw8HBxdna22xe3pYVt1WFbtdhXHbZV60Xty0VbG3bmzBmpXbv2EwfY22+/LUFBQbJgwQLJyMgwP75y5Urx9PTkXihWYFu12FcdtlWHbdViX3XYVi32VYdt1SpO34SEBNHpdOLm5mY3P1FbS2yrDtuqxb7qsK1aL2pf/kg6G5aTkwODwYCHDx8CAB49egQAiI2NRceOHfHxxx/j4sWL5uf36tULR48eRXBwsCbz2hO2VYt91WFbddhWLfZVh23VYl912Fat4vT18vJCVFQUjh49iqZNm2o1st1gW3XYVi32VYdt1XpR++pERLQeggrXsmVLuLu7Y8eOHQCArKwsuLi4AABatGiBgIAAxMfHW2y6TNZhW7XYVx22VYdt1WJfddhWLfZVh23VsrYvAGRmZsLV1VWzWe0N26rDtmqxrzpsq9aL2Jd32tqQjIwMpKenIy0tzfzY8uXLcebMGfzpT38CALi4uMBgMAAA2rdvj4yMDADgRWwR2FYt9lWHbdVhW7XYVx22VYt91WFbtZ6lL4Ay8eJWFbZVh23VYl912FYt9s3FRVsbkZCQgP79+yMsLAz169fH2rVrAQD169fHkiVL8OOPP2LQoEHIycmBXp/7vy05ORnly5eHwWAAb5guHNuqxb7qsK06bKsW+6rDtmqxrzpsqxb7qsO26rCtWuyrDtuqxb7/46j1AJR7QLZv3x5DhgxBSEgIjhw5gmHDhqFBgwYIDg5Gnz59UL58eURFRaFx48YIDAyEs7Mztm3bhv3798PRkf8bC8O2arGvOmyrDtuqxb7qsK1a7KsO26rFvuqwrTpsqxb7qsO2arGvJe5pq7HU1FS8/vrrCAwMxJIlS8yPd+zYEUFBQVi6dKn5sfT0dMyZMwepqalwdXXFm2++iQYNGmgxtl1gW7XYVx22VYdt1WJfddhWLfZVh23VYl912FYdtlWLfdVhW7XY90llawnaDuXk5OD+/fsYOHAgAMBkMkGv18PPzw+pqakAABGBiKBChQqYP3++xfOocGyrFvuqw7bqsK1a7KsO26rFvuqwrVrsqw7bqsO2arGvOmyrFvs+qWz+rexI1apV8cUXX6Bdu3YAAKPRCADw9fU1H3Q6nQ56vd5iA2adTlf6w9oZtlWLfdVhW3XYVi32VYdt1WJfddhWLfZVh23VYVu12FcdtlWLfZ/ERVsbUKdOHQC57w44OTkByH33IDk52fycefPmYeXKleafjFeWD8rniW3VYl912FYdtlWLfdVhW7XYVx22VYt91WFbddhWLfZVh23VYl9L3B7Bhuj1eoiI+YDLeydh5syZmDNnDo4dO1bmNlUuLWyrFvuqw7bqsK1a7KsO26rFvuqwrVrsqw7bqsO2arGvOmyrFvvm4p22Nibv58I5OjripZdewl//+lcsWLAAhw8fRpMmTTSezr6xrVrsqw7bqsO2arGvOmyrFvuqw7Zqsa86bKsO26rFvuqwrVrsyzttbU7euwdOTk745JNP4OHhgd27d6NZs2YaT2b/2FYt9lWHbdVhW7XYVx22VYt91WFbtdhXHbZVh23VYl912FYt9uWdtjara9euAIC9e/ciJCRE42nKFrZVi33VYVt12FYt9lWHbdViX3XYVi32VYdt1WFbtdhXHbZV60Xuq5O8+43J5mRkZKB8+fJaj1Emsa1a7KsO26rDtmqxrzpsqxb7qsO2arGvOmyrDtuqxb7qsK1aL2pfLtoSERERERERERER2RBuj0BERERERERERERkQ7hoS0RERERERERERGRDuGhLREREREREREREZEO4aEtERERERERERERkQ7hoS0RERERERERERGRDuGhLREREREREREREZEO4aEtERERERERERERkQ7hoS0REREQvtO7du8PLywtJSUlPfO3BgweoXr06WrVqBZPJpMF0RERERPQi4qItEREREb3Qli1bhuzsbEyYMOGJr02bNg0pKSlYsWIF9HpeOhMRERFR6eCVJxERERG90Pz8/BATE4P4+Hhs377d/PihQ4cQFxeHiRMnokmTJkpnyMzM5J28RERERGTGRVsiIiIieuFNnDgRjRs3RlRUFDIzM2E0GhEZGYlatWohJiYG586dw8CBA+Ht7Q1XV1eEhITgm2++sfh3pKamYvLkyQgKCoK7uzs8PDzQvXt3nDhxwuJ5P/30E3Q6HdavX4/p06fD19cX5cqVQ1paWmn+lYmIiIjIhjlqPQARERERkdYcHR2xYsUKtGnTBrNnz0aVKlVw9OhR/POf/8SVK1cQGhoKX19fTJ06FeXLl8fGjRvRt29ffPnll+jXrx8A4PLly/j6668xaNAg+Pn5ISkpCcuXL0dYWBgSEhJQo0YNi//m7Nmz4ezsjMmTJyMrKwvOzs5a/NWJiIiIyAbpRES0HoKIiIiIyBaMHTsWy5cvh4uLC3r37o1169ahU6dOSE5OxqFDh+Di4gIAEBG0bdsWd+7cwYULFwAAWVlZcHJystj79tdff0VgYCDeffddzJgxA0DunbYdO3aEv78/Tp8+DTc3t9L/ixIRERGRTeP2CERERERE//XBBx/Ax8cHer0eixYtQmpqKnbs2IHXXnsN6enpSElJQUpKCu7evYuuXbsiMTERv/32GwDAxcXFvGBrNBpx9+5duLu7o169ejh69OgT/62IiAgu2BIRERFRgbg9AhERERHRf3l4eKBevXpISUlB1apVcfDgQYgIZsyYYb5T9nHJycnw9fWFyWTCkiVLsGzZMly5cgVGo9H8HB8fnyf+nJ+fn7K/BxERERHZNy7aEhEREREVwmQyAQAmT56Mrl27FvicgIAAAMDcuXMxY8YMDB8+HLNnz4a3tzf0ej3Gjx9v/vfkx7tsiYiIiKgwXLQlIiIiIiqEv78/AMDJyQmdOnV66nM3b96Mjh07YtWqVRaP379/H5UqVVI2IxERERGVPdzTloiIiIioEFWqVEGHDh2wfPly3Lp164mv37lzx/xrBwcHPP4zfjdt2mTe85aIiIiIyFq805aIiIiI6Ck++ugjtG3bFkFBQRg1ahT8/f2RlJSEffv24caNGzhx4gQAoFevXnj//fcxbNgwtGnTBqdOncLatWvNd+sSEREREVmLi7ZERERERE/RoEEDHD58GLNmzcLq1atx9+5dVKlSBcHBwZg5c6b5edOmTUNGRgbWrVuHDRs2oFmzZti2bRumTp2q4fREREREZI908vhnuIiIiIiIiIiIiIhIM9zTloiIiIiIiIiIiMiGcNGWiIiIiIiIiIiIyIZw0ZaIiIiIiIiIiIjIhnDRloiIiIiIiIiIiMiGcNGWiIiIiIiIiIiIyIZw0ZaIiIiIiIiIiIjIhnDRloiIiIiIiIiIiMiGcNGWiIiIiIiIiIiIyIZw0ZaIiIiIiIiIiIjIhnDRloiIiIiIiIiIiMiGcNGWiIiIiIiIiIiIyIZw0ZaIiIiIiIiIiIjIhnDRloiIiIiIiIiIiMiG/D/fNH60y7GLOAAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import pandas_gbq\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Execute the query and load the data\n",
+ "temporal_df = pandas_gbq.read_gbq(temporal_sql_query, project_id=project_id)\n",
+ "\n",
+ "# Process the data\n",
+ "temporal_df['detection_time'] = pd.to_datetime(temporal_df['detection_time'], utc=True)\n",
+ "temporal_df['year'] = temporal_df['detection_time'].dt.year\n",
+ "\n",
+ "# Calculate observations per year\n",
+ "observations_per_year = temporal_df['year'].value_counts().sort_index()\n",
+ "\n",
+ "# Print the results\n",
+ "print(\"--- Total Observations per Year ---\")\n",
+ "print(observations_per_year)\n",
+ "\n",
+ "# Create the bar chart\n",
+ "plt.figure(figsize=(14, 7))\n",
+ "observations_per_year.plot(kind='bar', color='skyblue')\n",
+ "plt.title('Total Observations per Year', fontsize=16)\n",
+ "plt.xlabel('Year', fontsize=12)\n",
+ "plt.ylabel('Number of Observations (Log Scale)', fontsize=12)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.yscale('log')\n",
+ "plt.grid(axis='y', linestyle='--', alpha=0.7)\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "dd4a52c6",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "dd4a52c6",
+ "outputId": "84a81c14-8a78-4966-f22a-051e13d642e7"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "--- Asset Distribution Analysis ---\n",
+ "\n",
+ "--- Assets with Observations in a Single Year ---\n",
+ "year\n",
+ "2011 14\n",
+ "2012 1\n",
+ "2013 3\n",
+ "2014 19\n",
+ "2015 1287\n",
+ "2016 769\n",
+ "2017 2576\n",
+ "2018 1746\n",
+ "2019 4313\n",
+ "2020 2023\n",
+ "2021 6242\n",
+ "2022 13131\n",
+ "2023 9707\n",
+ "2024 7480\n",
+ "2025 158515\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "Total assets with observations in only one year: 207,826\n",
+ "\n",
+ "--- Assets with Observations in Multiple Years ---\n",
+ "Total assets with observations in multiple years: 0\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABW4AAAKyCAYAAABFb0fEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAApyNJREFUeJzs3Xd4FOXax/HfJiEJJQktAelNhShFIRThUBRpinQRW0BfVFgkihULoMcjtoOirl2a5Rx7wYIeOQgqAglS9EREJBZ6aAkESEjyvH/ALlmym2w2G3bCfj/XxXWRZ8re9zwzz0zunczYjDFGAAAAAAAAAADLCAt2AAAAAAAAAAAAdxRuAQAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4B4DTWrFkz2Ww22Ww2vfvuu17n69u3r2w2m+bNm3fqgvND7969ZbPZ9PXXXwc7lAq3cOFC/e1vf1NsbKyrD/3Ju3379rLZbIqKitKePXsCH+hpas+ePXrwwQfVtWtX1a1bV1FRUTrjjDM0YMAAvfTSSzp69KjXZZ3H3e+//37qAj5NzZs3TzabTWPHjvV5md9//102m03NmjWrsLhOhV9//VWTJk1SYmKiqlevrujoaDVq1EhJSUmaNGmS3nvvvWLLWGWM/Prrr2Wz2dS7d+8K+4wdO3aobt26stlseuutt0qc96233pLNZlN8fLx27NhRYTFVlDVr1ig8PFw333yz13kOHz6s559/XoMHD1bjxo1VrVo1Va1aVY0aNVL//v31yCOPaPPmzacw6tOHP8fV2LFjg3pddejQIZ111lmy2Wx69NFHS5x3+fLlCg8PV3R0tP73v/+doghLl5WVpTp16qhLly4yxgQ7HAAIGgq3ABAi7r33XuXn5wc7DPhg7dq1GjFihL7//nt17dpV1157rZKTk1W/fv0yrSc1NVXr16+XJOXl5en111+viHArVDAKUe+//75atGih6dOn63//+586deqkESNGqFWrVlq8eLFuvPFGnXPOOfr5559PWUwILe+//77atm0rh8OhXbt2qXv37hoxYoTatWunrVu3yuFw6MYbbwx2mEFVv359Pf/885KkiRMnavv27R7n2759uyZOnChJev7558s8jlrBzTffrKpVq+r+++/3OP0///mPmjdvrokTJ+qzzz5TQkKCBg4cqKFDh+rMM8/Ud999p6lTp+qss87SrFmzTnH0CIZq1app/vz5Cg8P17Rp0/Tjjz96nO/QoUNKTk5WYWGhHnroIZ1zzjmnOFLv4uLiNHXqVK1atUoLFiwIdjgAEDQUbgEgBFSrVk0bN27UK6+8EuxQ4IMPP/xQR48e1V133aUvv/xS8+fP17x589S6desyrefVV1+VJDVs2NDtZ3j3wQcfaNSoUcrOztYtt9yinTt3atGiRXrzzTf1zTff6Pfff1f//v3166+/qkePHtxVa0ENGzbUzz//rMWLFwc7FL/s3LlTycnJys3N1W233aYtW7boyy+/1BtvvKHPPvtM27ZtU1pamsaPH19s2QULFujnn39W586dgxD5qTdq1CiNGTNGe/fu1fXXX+9xnvHjx2vv3r268sorNXLkyFMcYfm9++67+u677zRx4kQlJCQUm/7JJ59o4MCB2rlzp8aNG6e//vpLq1ev1nvvvad//etfWrJkifbt26d3331X7du318aNG4OQBYKhW7duuvPOO5WXl6drrrlGeXl5xea54447tGnTJvXo0UNTpkwJQpQlmzRpkuLj4zV16lTl5uYGOxwACAoKtwAQAlJSUiRJDz74oA4dOhTkaFCaP//8U5J05pln+r2OQ4cO6V//+pck6bXXXlONGjX0448/KjU1NSAxno52796tcePGqbCwULfeequefPJJVatWzW2ehg0b6uOPP9YFF1ygvXv36pprrglStPCmSpUqat26tVq2bBnsUPzyySef6ODBg2rQoIGeeOIJRUdHF5unY8eOmjlzZrH2Jk2aqHXr1sX229OZw+FQgwYN9Pnnn+ull15ym/bqq6/q008/VcOGDfXss88GKcLyefLJJyXJY2F6z549uvrqq1VQUKBbb71Vc+bMUYMGDYrNV6VKFY0YMUKrVq3yWPDH6WvGjBlq37691q1bpxkzZrhN++qrr/T888+rRo0amj9/vsLCrFcaiI6O1pVXXqnt27eX+kgUADhdWW90BgAE3KBBg9SrVy9t377d9UugL0p7Rpu3508Wbc/KytKUKVPUrFkzRUdH68wzz9Sjjz6qwsJCSdLWrVt14403qnHjxoqKitLZZ5+tZ555ptTYli5dqn79+ql27dqqVq2aOnfurNdee63EZRYvXqzhw4frjDPOUGRkpBISEjRs2DB9//33Hud3PltWkubOnatu3bopLi6uTM8vzc/P1wsvvKALLrhAcXFxrm0wefJkbd261W3eGTNmyGazae7cuZKkcePGuWIo67Mi33nnHWVnZ+vcc89Vnz59NHr0aEkl33WblZWl++67T23btlX16tUVFRWlBg0aqHv37po2bVqx57quXr1ao0ePVqNGjRQZGanY2Fi1aNFCI0aM0EcffeTxM1avXq2rrrpKTZo0UVRUlGrXrq3+/fvrs88+c5vP+YzMpUuXSpL69Onj2hYn75P+xOGJw+FQVlaW4uPj9fDDD3udLzIy0lUE+vbbb10xevLBBx+oR48eio2NVUxMjHr37l0sV6eybn9J2rdvn6ZPn64OHTooJiZG1apVU9u2bfXQQw95/JLGuY/NmDFDf/75p66//no1btxYVapU0dixY/Xiiy/KZrNpwIABXnPas2ePoqKiFBkZqczMzHLFIx07Rp566im1bdtW0dHRio+P14gRI7z+aW9pSnrGbdFj+r333nP1TfXq1dW9e3evfVOSP/74Q48++qguvPBC135ds2ZN9ejRQy+++KJrrPPVzp07JUnx8fFljsXbo0WKjuUZGRm65pprVL9+fUVFRally5a67777vN7Nlp+fr3/+858699xzFR0drYSEBI0aNUrp6el+PYNY8m8/8aZWrVquce22225zPcf1jz/+0K233irp2LhXq1Yt1zJlPResWrVKd955pzp37qz69esrMjJS9erV0+DBg/XVV195XKbottm7d69uueUWtWzZUlFRUT6P52vWrNHy5cvVtWtXnX322cWmP/PMM8rKylL9+vX1yCOPlLq+8PBwdezY0a2t6PFSUFCgWbNm6bzzzlONGjVcx4rTF198oUsvvVQJCQmKjIxUgwYNNHr0aKWlpXn8vNKe9+3tGqNo+7p16zR8+HDFx8eratWqateunWbPnq2CggKvefp6ninqr7/+0nXXXaczzjjDdZ6+9957dfjwYa/L+MrXHJKTk2Wz2Tx+KeP09ttvy2az+XxXfWRkpBYsWKDIyEg99thjrn08KytL1113nYwx+uc//6kWLVq4linr9ktPT9f06dPVvXt3NWzYUJGRkapTp4769u2rt99+2+MyRZ+DfejQIU2bNk1t2rRRtWrVio3dzvHF4XD4lDMAnHYMAOC01bRpUyPJfPPNN2bFihVGkomNjTW7d+92m++iiy4ykszcuXPd2pOTkz22O82dO9dIMsnJyR7bhwwZYtq0aWMSEhLMiBEjTL9+/UzVqlWNJDNp0iSzadMmU79+fdO4cWNz+eWXmz59+pjw8HAjyTzyyCPFPq9Xr15Gkpk8ebIJCwsziYmJ5oorrjA9e/Y0YWFhRpKZMmWKx1hvu+02I8mEhYWZzp07m1GjRpkuXboYm81mwsPDzZw5c4otI8kVa1hYmOnRo4cZM2aM6dKli/n999+9b/jjjhw5Yvr27WskmejoaDNw4EAzevRo07hxYyPJ1K1b16xevdo1/wcffGCSk5NNy5YtjSTTvXt3k5ycbJKTk83MmTNL/byi/va3vxlJZtasWcYYY7777jsjycTFxZlDhw4Vmz8nJ8ece+65RpKJj483gwcPNldccYXp3bu3qV+/vpFk9u3b55r/q6++MlWqVDGSTPv27c3IkSPNsGHDTOfOnU1UVJQZMmRIsc946qmnXP3UoUMHM3LkSNOjRw8TGRlpJJkHHnjANe/PP/9skpOTTb169Ywk079/f9e2SE5ONt98843fcXjToUMHI8nY7Xaf5ndur5P3Oedxd+uttxpJplOnTmbMmDGmc+fOrn3q6aefdlumrNvfGGP+97//ufalM844wwwYMMAMHjzYtc06dOhg9u/f77bM9OnTjSRz5ZVXmtq1a5v69eubESNGmOHDh5vbbrvN7N+/31StWtWEhYWZLVu2eMz76aefNpLM8OHDyx1PQUGBGTp0qJFkIiMjTb9+/czo0aNNs2bNTHR0tJk4caLHMaYkGRkZRpJp2rRpsWnO7T9t2jRjs9lM9+7dzejRo0379u2NJGOz2cz777/v82cZY8zf//53I8k0b97cXHTRReaKK64wvXr1cu3Xw4cPN4WFhT6v77XXXjOSTHh4uPnqq6/KFItzjFyyZIlbu3MsT0lJMbGxsaZp06bm8ssvN3379nWNyUOHDi22voKCAnPppZcW658WLVqYatWqmUmTJnnsnyVLlhhJplevXsXW6c9+4osbb7zRSDI9evQwR48eNX369DGSzE033eQ2nz/ngosuusiEhYWZtm3bmkGDBplRo0aZ888/37U/PfXUU8WWcZ4HL7nkEtO8eXNTq1Ytc9lll5lRo0aZq666yqecpk2bZiSZ++67z+N055g1efJkn9bnifN4adKkibnssstMZGSkueiii8yYMWNMu3btXPPdd999rmOke/fuZsyYMa7PDw8PN6+++mqxdTvHwoyMDI+f7e0aw9k+YcIEEx0dbZo1a2ZGjx5t+vXr5zquRo4c6fG4Kst5xunnn382CQkJrn1y1KhRZtCgQaZq1aqmW7duplu3bh6Pq5L4k8Pq1atdfZGfn+9xvT179jSSzPz5832OxRhjZs6caSSZVq1amZycHFd8AwcOdJvPn+13/fXXG0mmdevWpn///mb06NGmW7durvXceuutxZZxjhFdunQxSUlJpnr16q5rpL59+xabPz4+3kgy27ZtK1PeAHA6oHALAKexooVbY4wZPny4x4voiircSjKDBw82OTk5rmmrV682ERERrsLrTTfdZI4ePeqa/uGHH7oKzEWXM+ZEUUKSefjhh92mff31164CxKJFi9ymvfTSS65fWNatW+c2benSpSYmJsZERkaajRs3uk1zflZsbKz5/vvvPW6Dktx1111GkmnZsqXbL655eXmuX3SaN29ucnNz3ZYrbbuX5pdffjGSTJUqVcyuXbtc7a1btzaSzIIFC4otM3/+fNcvcXl5eW7TCgoKzNdff+0Wp7Mo8vrrrxdb1/79+4ttr0WLFhmbzWbq1q1rli5d6jZt/fr1plGjRkaS+frrr92meStE+RuHN3l5ea5fMn39hXjcuHFGkunZs6dbu/O4s9lsxeL697//bWw2m4mIiDA//vijq72s2//QoUOuAv99993nNi0nJ8eMGTPGSDLjxo1zW5ezcCvJXH311ebIkSPF8rrqqquMJK9fFpx33nlGklm4cGG543n22WeNJFOvXj2Tnp7uaj969KiZMGGCK9ZAF25r1qxpVqxY4TbNuW3OOussnz/LGGNWrVrl1pdOW7dudRWE3377bZ/Xd+DAAdOwYUPXPtS7d2/z97//3Xz66adux7MnpRVuJZl7773XrSj0448/murVqxtJZvny5W7LzZ4921XM2rBhg6s9Pz/fpKSkeO0fb4Vbf/cTXxw4cMC0aNHCSDIXXHCBa+w9ePCgax5/zwWfffaZx4LR8uXLTWxsrKlSpUqxLzqKngcvuugik5WVVeacevToYSSZTz/9tNi0o0ePusas1157rczrdnIeL5JMo0aNzC+//FJsns8//9xIx76A/PLLL92mvfLKK67zzU8//eQ2rbyFW0lm4sSJbtcIP/30k6uI98ILL7gt5+95JikpyUgyl19+uTl8+LCr/Y8//nDtr/4WbsuaQ/fu3Y0kj18g/fjjj0Y69uWep7G7JPn5+a4CtPP4qFWrltm6datrHn+339dff21+++23Yp+5YcMG1zIrV650m+YcIySZdu3ame3bt5cY/2WXXVbufR0AKisKtwBwGju5cLthwwYTERFhoqKi3O4YrajCbY0aNczOnTuLLee8AG/SpInbL0lObdu2NZKK/eLgLEqcd955HuNx3kl18cUXu9oKCgpMgwYNjCSTlpbmcbnHHnvMSDK33XabW7vzl4oHH3zQ43IlOXz4sKlRo4aRZD7++ONi03Nyclx3mL3xxhtu08pbuHUWjEeMGOHW7szT011wzmnOO3RLk5iYaCSZvXv3+jR/ly5djCTz7rvvepz+9ttve4y5tMJtWePwZseOHa7+Prnw783dd99tJJk2bdq4tTuPO093MBpjzIgRI4wkM378eFdbWbf/888/bySZSy+91OP0AwcOmISEBBMREeG2bZzFydq1a3u9q3Hx4sVGkjn77LOLTVu7dq2RZOrXr+9WiPA3nlatWhlJ5vnnny+2zOHDh113Gwe6cHvyHc/GHLtDPi4uzkgyf/75p8+fV5IvvvjCSDKjRo0q03IbNmxwHTMn/+vQoYN5/vnnPd6RV1rhtmPHjh7vUrzppps8jnXOQuiLL75YbJnc3FxXgdnXwq2/+4mvvvnmG1cxMywszHz77beuaeU5F5Rk6tSpRpJxOBxu7c7zYJUqVTwWtXzhLKhv3ry52LSdO3eWOmY9++yzbn+p4PxXVNHCracv9Yw5cY3g7S9anHdlFx3TjCl/4faMM87weI3wzDPPGEnmzDPPdGv35zzz7bffGkmmevXqxf4ayZhjfwlTnsJtWXNwxnjRRRcVW8Z5V/nUqVN9jqOoX3/91VSrVs2Vz5tvvuk23d/zdElefPFFI8nccccdbu1FC7fLli0rdT3O48zT3bsAcLrjGbcAEELOPvtsXXfddcrNzdX9999f4Z/XsWNHj2/Bdr50q0+fPh5fvOOcvm3bNo/rvfbaaz22JycnSzr23FHns+PWrFmjbdu2qWXLlsWe7efkfN7g8uXLPU73503kaWlpOnjwoGrXrq3BgwcXm16tWjVdccUVkqQlS5aUef3e5Ofna/78+ZKk6667zm3atddeq4iICC1btky//fab27SkpCRJ0mOPPaYFCxZo7969JX6O8/l6V111lb799lvl5+d7nXf37t1atWqVqlat6nFbSKX3QSDiCDRjTInTnfujt/aizyEt6/b/9NNPJcn17OKT1ahRQ506dVJ+fr7HF9L17dtXcXFxHpft06ePmjVrpl9++aXYMz+dz1927kvliWfr1q3atGmTJOnqq68utkx0dLQuv/xyj+srL0/7YVRUlOs5jyc/f7o0ubm5WrhwoaZNm6abbrpJ48aNcz0zWJJ++eWXMq3v7LPP1ooVK7Ry5UpNmzZN/fv3dz3zdu3atZowYYIGDBjg8S3xJbn00kuLPbdUktq0aSPJPe8tW7a4nhd75ZVXFlsmMjKyzGNjeffb0vTo0UPDhg2TJA0bNkzdu3d3TSvvuWDPnj1asGCB7rzzTo0fP15jx47V2LFjXc+49tbH5513ntvzQ32Vk5OjnJwcSVKdOnXKvLx07Nwyf/78Yv+8GTFiRLG2/Px8fffdd5Lk9VnGzhenBfJcJkmXX365x2sE5xj666+/uq4T/D3POMfhAQMGeNzOQ4YM8TpWBjoH6dh+27hxYy1evFgbNmxwtWdlZen1119XeHi4JkyY4FcsrVq1ci3bsWNHjRkzxjWtvOfpgwcP6p133tE999yjG264wXV8vPfee5K8Hx8JCQn629/+Vmrszr5xPgMcAEJJROmzAABOJzNmzNDrr7+uN954Q7fffrvatWtXYZ/VpEkTj+01atQocXpMTIwk6ciRIx6nN2/evMT2w4cPa8+ePUpISHAVHn777TePBYuiTn7RkpOnlxyVxlkA8RarJNdb78taJCrJp59+qh07dqhhw4bq37+/27R69epp0KBB+vjjjzVnzhz94x//cE3r3bu37rrrLj3++OOuF6SceeaZ6t69u4YMGaLBgwe7vXF65syZWr9+vT7//HN9/vnnqlq1qs4//3z17t1bV111lasQJEkZGRkyxujw4cOKiooqMX5vfeBNWeIoSe3atRUWFqbCwkKffzHctWuXJO8vkSptP92yZYurrazb37lfX3PNNbrmmmtKjNPTNi1pn3a+UGnGjBmul/JJ0tGjR/XGG29IOvbivKL8iceZf926dV1jwslKOn7Kw9vYExsbK8n72OPJihUrNHr0aP35559e58nOzi5bgMd17tzZ9eWEMUZr1qzR448/rn//+9/66quvNHv2bN1xxx0+r68sefvSP2UdG8u73/rCGevJMZfnXPDyyy/r1ltvdRVSPfHWx/6cP6RjhTon5zmxqNq1a8tms8kY43Vbvfvuu67/b9myRY0bN/b6eQkJCapWrVqx9j179rj2C2/HY0Wcy0r6vJiYGNWpU0d79uzRli1b1KBBA7/PM8793NtnOV/ctm7dugrPQZIiIiI0ceJETZ06Vc8++6zrRZjz589XTk6Oq7DrL2/HR3nO0wsXLtS4ceO0Z88er8uU9/hwjlH79u3zaX4AOJ1QuAWAEHPGGWcoJSVFM2fO1NSpU113QPmjtLelFy00+TO9PJx3QzpjrF+/frFC5snq1q3rsb1q1aqBDa4COd+ufuTIEfXq1avYdOcv1vPmzdODDz6o8PBw17RHHnlEN910kxYuXKhvv/1W3333nebOnau5c+cqKSlJS5YsUfXq1SUd255paWlaunSpvvrqK3333XdauXKlvvvuOz388MOaOXOm7rrrLkkn+qBGjRoe7+gqj7LEUZIqVaqobdu2WrdunVauXOn1ru6iVq1aJUle794rzcl37JZl+zu36YABA1SvXr0SP6dp06bF2krbp8eOHasHHnhAb7/9tmbPnq2qVatq4cKF2r17t7p27arWrVu7zV/eeE61QI09hw4d0tChQ7Vz506NGzdOEyZMUKtWrRQbG6vw8HBt3LhRZ599dql3Z/vCZrPp/PPP17/+9S8dOnRIH3/8sT788MMyFW79ybukImdpBdCTBXM/8fdcsHr1at14440KDw/Xo48+qsGDB6tJkyaqVq2abDabXnrpJd14441e+9jf80fNmjVd/z9w4ICrcOUUERGhdu3aad26dUpLS/N413pZBOM8V9o1hC9OPtdXxHmmop2874wfP14PPvigFixYoJkzZ6pGjRp67rnnJEmTJk2qkBj83X5bt27V6NGjdfjwYd1555266qqr1KxZM9WoUUNhYWH68ssv1b9//3IfH84vMmrVquVzbABwuqBwCwAh6K677tJLL72kzz77TMuWLfM6X2RkpKRjvzR68scff1RIfKXJyMjw2P77779LOvYn1s4/q3PemVKnTh3NmzfvVIQnSWrYsKEk77FKJ+4Ac85bXtu3b9dnn30m6dhdUs4/b/Vk27ZtWrRokS655BK39mbNmunmm2/WzTffLElKTU3V1VdfrdTUVD322GN64IEHXPPabDb17t3b9eeTR44c0bx582S323XPPfdo5MiRatmypasPbDab5syZE/CCva9xlGbIkCFat26d3nnnHf3zn//0+OetTj/88IP+97//SZIuu+wyj/NkZGSoffv2xdqd+2mjRo2KTfN1+zdu3FgbNmzQ9ddf79ejPErTtGlTXXjhhVq8eLHef/99XXXVVa7j5+RHcPgbj3O/3717tw4ePOjxrk7ntrKqZcuWaefOnTr//PM1Z86cYtN//fXXCvncfv366eOPP9bu3bsrZP3Sif7JzMxUTk6O60uDosraPxW935b22VLZzwXvvPOOjDG6+eabdeeddxabXlF9XK1aNVWvXl05OTnas2dPscKtdGzsWbdund5++209/vjjqlKlSsDjqFOnjqKiopSbm6vNmzd7/Csdb+ey8l5DeDt/HjhwwHV3p3Mc9fc844y5pH25PNc6ZcnBqU6dOrrqqqv0yiuvaMGCBTrrrLP0yy+/KDExURdeeKHfsZTE3+23cOFCHT58WMOGDdOjjz5abHqgjg/ntirtCx8AOB3xjFsACEFxcXG65557JMnjL6JOzl9ofv7552LTjDH6/PPPKybAUrz++use2xcsWCDp2HMOnc/fTEpKUt26dZWenu4qtJ0KnTp1Uo0aNbR37159/PHHxaYfPnxY//73vyUde6ZoIMybN08FBQXq0qWLzLEXkHr85+xz5925JUlKStLEiRMlHXu2Zkmio6N10003qV27diosLNT69eslSQ0aNFC7du104MABLVq0qEw5OX/xL8uza73FUZpJkyYpNjZWmZmZmjp1qtf58vLyXIXVbt26uQrGJ3vttdc8tjv3U2/LFeVt+w8cOFCS9Pbbb5e6Dn85C7Tz5s3Tzp07XY+i8PR8Un/iadSokevZn2+++Wax6bm5uXrnnXf8Cf2UcT6L2NsjCLyNVSXx5e5c52MZPBX/A6Vx48auP2P+17/+VWx6Xl6e6/mVvjoV+603/p4LnH3s6Q7gI0eOlHkblMX5558vSUpPT/c4ffLkyYqNjdX27dt17733VkgMERER6tGjhyR5LXg7v7Q4+VxW0jXEjh079MMPP5T42e+8845yc3OLtTvH1latWrk+w9/zjPMvUxYtWuTx2eIff/yx9u/f7/P6TlaWHIqaPHmyJMnhcLgel2C32/2OozT+br+Sjg9jjMex3R8//fSTJP//wgUAKjMKtwAQoux2u5o0aaKVK1cWewGRU9++fSUd+wWj6C+OR48e1V133eXXy2MCYfXq1Xrsscfc2r799ls5HA5J0q233upqr1KliqZPny5jjIYNG6Zvv/222PoKCgr03//+VytWrAhYjNHR0a5fsm677Ta3O3aOHj2qlJQU7dixQ82bNw/YnWfOX569vRTLyfkYgE8++cT1rLoPPvhAy5YtK/anq0ePHnX9Elf0F7MnnnjC4zM9N2zY4LrDpuj8Dz30kKRjz0ZduHBhseWMMVq5cqW+/PJLt3ZnYcpboaWscZQkPj5er776qmw2m5566ilNmTJFhw4dcptn69atuuyyy7R8+XLVrFnTa3FWOrZNncV5p3fffVfvvfeeIiIiXMVf57xl2f433HCDmjZtqnfeeUd33XWXxzvaduzYoZdfftmn3D0ZPny4atasqf/+97/6xz/+ofz8fI0YMcLjnX/+xnPLLbdIOvbs7aIv4ikoKNDtt9/u9QWFVuF8hvLixYuLFddeeuklvfXWW2Ve53PPPafk5GSPLwAyxuj99993FXKcLzisKM7i0fTp07Vx40ZXe2FhoaZOnaq//vqrTOs7FfutN/6eC5x9PH/+fLd4jxw5ookTJ5b4VxXl5SyEejtH161bVwsWLFBYWJgef/xxjR8/Xtu3by82nzGmxL/AKM1tt90mSXr++ee1ePFit2nz5s3Txx9/rCpVqiglJcVtmvMa4tFHH3UrfmZmZuraa6/VwYMHS/zcbdu26fbbb3e9bFQ6VgR+8MEHJbmf6yX/zjN/+9vfdP755+vgwYOy2+1uRda//vpLt99+e4kxlqasOTi1bdtWF154oX7++Wd9/PHHio2N9ekRPuXhz/ZzHh/vvvuu275XUFCgadOmlfmFo944j4GKuuMYACzNAABOW02bNjWSzDfffONx+rx584wk17+5c+cWm2fIkCFGkqlataq5+OKLzWWXXWYaNWpkYmNjTUpKipFkkpOT3ZaZO3eux3an6dOnG0lm+vTpHqcnJyd7jKdXr15Gkpk8ebIJCwsz55xzjhkzZozp1auXCQsLM5JMSkqKx3XecccdrjzPOeccM2TIEHPFFVeY3r17m5o1axpJ5vnnn3dbxjm/v44cOWIuuugi1/YbNGiQGT16tGnSpImRZOrUqWPS0tJ8zr8kX3/9tZFkoqKizN69e0ud//zzzzeSzBNPPGGMMa6+rFu3rrn44ovNVVddZS677DKTkJBgJJmGDRuav/76y7V8XFyckWRat25thg0bZq688krTu3dvExERYSSZa6+9tthnzp492zW9VatW5pJLLjFXXnmlufjii12fc9ddd7kt88knnxhJJjIy0lx66aXmuuuuM9dff7357rvv/I6jNG+//baJiYkxkkxMTIwZMGCAGTNmjOnZs6drvS1btjQ//vijx+Wdx90tt9xiJJmkpCRz5ZVXmi5durj2qVmzZrktU9btb4wxP/30k2nWrJmRZGrWrGl69uxprrzySjN06FCTmJhobDabqVevntsypR17J7vpppvcxoj//ve/Xuf1J56CggIzePBgVx/379/fXHHFFaZ58+YmOjraTJgwocSxxJOMjAwjyTRt2rTYtNKOaecYs2TJEp8/zzlGRkZGmn79+pkrrrjCtG7d2thsNnPvvfd6jcWbJ5980hVnfHy86devn7nyyivNoEGDXNtXkrn66qtNQUGBT/GXNqZ4G7Pz8/PNwIEDXWPLgAEDzBVXXGFatmxpqlataiZOnGgkmfHjx7stt2TJEiPJ9OrVq9hn+bOflIUzV2/7TFnPBfv27XMd03Xq1DFDhw41I0aMMAkJCSYmJsbv86AvfvjhByPJdO7cucT5Pv/8cxMfH28kmfDwcNOxY0czYsQIc/XVV5uBAwea+vXrG0kmLCys2JhY0vFS1H333WckGZvNZnr06GGuvPJK13kkPDzcvPrqq8WWKbrtEhISzJAhQ0zfvn1NXFycadu2rRk6dKjH/dLZhzfddJOJjo42zZs3N1dccYXp37+/iYyMNJLMsGHDTGFhYbHP9Oc887///c+1/Ro0aGAuv/xyc+mll5pq1aqZrl27mm7dupV5XChPDk4ffviha1+9+eabff7skjjPAZ6OTWPKvv2OHj1qOnbsaCSZGjVqmEsuucRcfvnlpmnTpqZKlSrmrrvu8vh5JY0RJ/P1OACA0xWFWwA4jZVWuC0oKDBt27YtsXB75MgRc99995kWLVqYKlWqmISEBDNmzBizadMmr7+YVnThdsmSJWbx4sXmoosuMnFxcaZq1aqmU6dOZt68eSVuj++++85cddVVpmnTpiYqKsrExMSYs846ywwdOtS88sorxQqe5S3cGnPsl5rnnnvOdO3a1cTExJjIyEjTsmVLc/PNN5stW7aUKf+SXHPNNUaSGTlypE/zP/XUU0aSadOmjTHGmDVr1pi7777b9OjRwzRs2NBERkaa+Ph407FjR/Pwww+b3bt3uy3/+uuvm3Hjxplzzz3X1K5d20RFRZmmTZuagQMHmg8++MDrL6M//vijueGGG8yZZ55poqOjTbVq1UyLFi1M//79zdNPP222bt1abJmXX37ZnH/++aZatWrF9lV/4yhNZmammTFjhuncubOpXbu2a9+/+OKLzfPPP29yc3O9Lus87jIyMszbb79tunXrZmrUqGGqV69u/va3v5mFCxcWW6as298pOzvbPPbYY6Zbt26mZs2apkqVKuaMM84wSUlJ5o477jDLly93m7+shdtVq1a5tnmzZs1K3Z5ljceYY8fIP//5T5OYmGiioqJMnTp1zJAhQ8zatWv9Kn6d6sJtXl6eefzxx03btm1NtWrVTO3atU2/fv3Ml19+6XNRrKjs7Gzz4Ycfmptvvtl07tzZNGrUyFSpUsVUrVrVtGzZ0owZM8Z8/vnnZYrf38KtM7/HHnvM1T9169Y1w4YNMz/++KN58MEHjSQzdepUt2VKK8r4s5/4qrTCrTFlPxdkZmaaiRMnmpYtW5qoqCjToEEDc/XVV5tff/3V7/Ogry644AIjyaSnp5c438GDB82zzz5rBg0aZBo2bGiio6Ndsfbt29f8/e9/N7/99lux5cqyj37++edm0KBBpk6dOiYiIsLUr1/fjBo1yqxcudLrMlu2bDHXXnutSUhIMJGRkaZ58+bmjjvuMAcOHPC6XxZt/+GHH8zgwYNNnTp1TFRUlDnnnHPMrFmzzNGjR71+pj/nmT/++MOMHTvW1KtXz0RGRpoWLVqYu+66y+Tk5Pg1LpQ3B2OMOXDggAkPDzc2m81s2LDB588uSWmFW2PKvv0OHDhg7rnnHnP22Web6Ohok5CQYIYOHWrS0tK8jgVlKdxOnjzZSDLz58/3I2MAqPxsxgTgNbcAAAAAQsqFF16oJUuW6L333tPw4cODHc5p6d1339WoUaM0ZcoU/fOf/wx2OKfE2LFjNX/+fM2dO1djx44NdjhB88orr2j8+PHq16+fvvjii2CHExRHjhxR48aNVaVKFWVkZCgqKirYIQHAKcczbgEAAAB4tHbtWuXl5bm15eXlacaMGVqyZIkSEhI0aNCgIEV3+hs5cqS6d++uF198UTt37gx2ODhFcnJyNHPmTEknnjEcip555hnt3r1bM2fOpGgLIGRFBDsAAAAAANZ0yy23aO3atWrfvr3OOOMM7du3Tz/++KO2b9+u6OhozZ8/X9HR0cEO87T2zDPPqFOnTvr73//uejEdTk+PP/64fvrpJ3377bfavHmzBgwYoH79+gU7rKDIysrSI488os6dO1f4i9kAwMoo3AIAAADwaPz48XrjjTe0fv16rVq1SsYYNWjQQNddd51uu+02JSYmBjvE0955552ngoKCYIeBU+DTTz/V0qVLVbduXY0dO1azZs0KdkhBExcXpz179gQ7DAAIOp5xCwAAAAAAAAAWwzNuAQAAAAAAAMBiKNwCAAAAAAAAgMXwjNuTFBYWatu2bYqJiZHNZgt2OAAAAAAAAABOE8YYHThwQA0aNFBYWMn31FK4Pcm2bdvUuHHjYIcBAAAAAAAA4DT1119/qVGjRiXOQ+H2JDExMZKObbzY2NggRwMAAAAAAADgdJGdna3GjRu7apAloXB7EufjEWJjYyncAgAAAAAAAAg4Xx7RysvJAAAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbC7XEOh0OJiYlKSkoKdigAAAAAAAAAQpzNGGOCHYSVZGdnKy4uTllZWYqNjQ12OAAAAAAAAABOE2WpPXLHLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcAgAAAAAAAIDFULgFAAAAAAAAAIuhcAsAAAAAAAAAFkPhFgAAAAAAAAAshsItAAAAAAAAAFhMRLADAAAAAAAAAHD6m71vdrBDKJOUWilB/XzuuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALCYiGAHUBGaNWum2NhYhYWFqVatWlqyZEmwQwIAAAAAAAAAn52WhVtJWr58uWrUqBHsMAAAAAAAAACgzHhUAgAAAAAAAABYjOUKt8uWLdPgwYPVoEED2Ww2ffjhh8XmcTgcatasmaKjo9WlSxetWrXKbbrNZlOvXr2UlJSkN9544xRFDgAAAAAAAACBYbnCbU5Ojtq3by+Hw+Fx+ltvvaUpU6Zo+vTp+uGHH9S+fXv1799fu3btcs3z7bffavXq1fr444/18MMPa/369acqfAAAAAAAAAAoN8s943bgwIEaOHCg1+mzZs3S+PHjNW7cOEnSCy+8oE8//VRz5szR3XffLUlq2LChJOmMM87QoEGD9MMPP6hdu3Ye15ebm6vc3FzXz9nZ2ZKk/Px85efnS5LCwsIUFhamwsJCFRYWuuZ1thcUFMgYU2p7eHi4bDaba71F2yWpoKDAp/aIiAgZY9zabTabwsPDi8XorZ2cyImcyImcyImcyImcyImcyImcyImcyImcyOlU5mQrsEmSTNixeWyFNrfYvbaHG8mc1G47Pr+39kLJZk60G5s5dgurl3ZboU06EborlkD308nLlcRyhduS5OXlafXq1Zo6daqrLSwsTH379tX3338v6dgdu4WFhYqJidHBgwf13//+V5dffrnXdc6cOVMPPPBAsfY1a9aoevXqkqT4+Hi1bNlSGRkZyszMdM3TqFEjNWrUSBs3blRWVparvUWLFkpISNBPP/2kw4cPu9pbt26tmjVras2aNW6d2K5dO0VGRiotLc0thk6dOikvL8/tjuHw8HAlJSUpKytLGzZscLVXrVpV7du31+7du7V582ZXe1xcnNq0aaNt27Zpy5YtrnZyIidyIidyIidyIidyIidyIidyIidyIidyIqdTmVP80XhJ0p5We1RYpVDxP8e75ZTZJlNhR8NUZ1MdV5sJM8pMzFTkwUjV/KOmqz0/Kl97z9yr6H3Rit0W62rPq5Gn/c32q/ru6qq+q7qr/XCtwzrQ8IBitseo6r6qrvachBzlJOQo7s84RR6MdLVnN8iWaivg/ZSTkyNf2UzRkrHF2Gw2ffDBBxo6dKgkadu2bWrYsKGWL1+ubt26uea78847tXTpUq1cuVKbN2/WsGHDJB2rZI8fP14pKSleP8PTHbeNGzfWnj17FBt7rNP55oScyImcyImcyImcyImcyImcyImcyImcyImcyKl8OT23/zlJleeO25TaKQHvp+zsbNWpU0dZWVmu2qM3p13htryys7MVFxfn08YDAAAAAAAA4JvZ+2YHO4QySanl/WZQf5Wl9mi5l5OVpG7dugoPD9fOnTvd2nfu3Kn69esHKSoAAAAAAAAACKxKVbiNjIxUx44dtXjxYldbYWGhFi9e7HYHrj8cDocSExOVlJRU3jABAAAAAAAAoFws93KygwcPatOmTa6fMzIytHbtWtWuXVtNmjTRlClTlJycrE6dOqlz58566qmnlJOTo3HjxpXrc+12u+x2u+t2ZQAAAAAAAAAIFssVbtPS0tSnTx/Xz1OmTJEkJScna968eRo9erQyMzM1bdo07dixQx06dNCiRYtUr169YIUMAAAAAAAAAAFl6ZeTBQMvJwMAAAAAAAACj5eTncYvJwMAAAAAAACAUEDhFgAAAAAAAAAshsLtcQ6HQ4mJiUpKSgp2KAAAAAAAAABCHIXb4+x2u9LT05WamhrsUAAAAAAAAACEOAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4PY6XkwEAAAAAAACwCgq3x/FyMgAAAAAAAABWQeEWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3B7ncDiUmJiopKSkYIcCAAAAAAAAIMRRuD3ObrcrPT1dqampwQ4FAAAAAAAAQIijcAsAAAAAAAAAFkPhFgAAAAAAAAAshsItAAAAAAAAAFgMhVsAAAAAAAAAsBgKtwAAAAAAAABgMRRuAQAAAAAAAMBiKNwe53A4lJiYqKSkpGCHAgAAAAAAACDEUbg9zm63Kz09XampqcEOBQAAAAAAAECIo3ALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcAgAAAAAAAIDFULgFAAAAAAAAAIuhcHucw+FQYmKikpKSgh0KAAAAAAAAgBBH4fY4u92u9PR0paamBjsUAAAAAAAAACGOwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbo9zOBxKTExUUlJSsEMBAAAAAAAAEOIo3B5nt9uVnp6u1NTUYIcCAAAAAAAAIMRRuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcHudwOJSYmKikpKRghwIAAAAAAAAgxFG4Pc5utys9PV2pqanBDgUAAAAAAABAiKNwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcAgAAAAAAAIDFULgFAAAAAAAAAIuhcAsAAAAAAAAAFhMR7AAAAAAAAMDpZ/a+2cEOoUxSaqUEOwQAcMMdtwAAAAAAAABgMRRuAQAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWc9oWbg8dOqSmTZvq9ttvD3YoAAAAAAAAAFAmp23h9h//+Ie6du0a7DAAAAAAAAAAoMxOy8Ltr7/+qg0bNmjgwIHBDgUAAAAAAAAAysxyhdtly5Zp8ODBatCggWw2mz788MNi8zgcDjVr1kzR0dHq0qWLVq1a5Tb99ttv18yZM09RxAAAAAAAAAAQWJYr3Obk5Kh9+/ZyOBwep7/11luaMmWKpk+frh9++EHt27dX//79tWvXLknSRx99pLPOOktnnXXWqQwbAAAAAAAAAAImItgBnGzgwIElPuJg1qxZGj9+vMaNGydJeuGFF/Tpp59qzpw5uvvuu7VixQr9+9//1jvvvKODBw/q6NGjio2N1bRp0zyuLzc3V7m5ua6fs7OzJUn5+fnKz8+XJIWFhSksLEyFhYUqLCx0zetsLygokDGm1Pbw8HDZbDbXeou2S1JBQYFP7RERETLGuLXbbDaFh4cXi9FbOzmREzmREzmREzmREzmREzmREzmRU4XmZCRboc2t3YQdW7ZYe7gpPr/t+Pze2gslmznRbmzm2O1pXtpthTbpROjH1mE70e7MIeT6iZzI6RTmZCs4dmx6HQusNkZIAe+nk5crieUKtyXJy8vT6tWrNXXqVFdbWFiY+vbtq++//16SNHPmTNdjEubNm6effvrJa9HWOf8DDzxQrH3NmjWqXr26JCk+Pl4tW7ZURkaGMjMzXfM0atRIjRo10saNG5WVleVqb9GihRISEvTTTz/p8OHDrvbWrVurZs2aWrNmjVsntmvXTpGRkUpLS3OLoVOnTsrLy9P69etdbeHh4UpKSlJWVpY2bNjgaq9atarat2+v3bt3a/Pmza72uLg4tWnTRtu2bdOWLVtc7eRETuRETuRETuRETuRETuRETuREThWZk63Qpvif491yymyTqbCjYaqzqY6rzYQZZSZmKvJgpGr+UdPVnh+Vr71n7lX0vmjFbot1tefVyNP+ZvtVfXd1Vd9V3dV+uNZhHWh4QDHbY1R1X1VXe05CjnISchT3Z5wiD0a62rMbZOtI7SOq9VstReRGKK1KWqk5nY79RE7kdCpzij96bEzY02qPCqsUWn6MUG0FvJ9ycnLkK5spWjK2GJvNpg8++EBDhw6VJG3btk0NGzbU8uXL1a1bN9d8d955p5YuXaqVK1e6Le8s3D7xxBNeP8PTHbeNGzfWnj17FBt7rNP55oScyImcyImcyImcyImcyImcyImcyKlsOT2972nr301X5I7biTUnlpqTZJ1+eibrmVJzKtZe4GN/BLif7HF2n3LieDr9c3pu/3OSKs8dtym1UwLeT9nZ2apTp46ysrJctUdvKtUdt2U1duzYUueJiopSVFRUsfaIiAhFRLhvHudOeDJnB/jafvJ6/Wm32Wwe273FWNZ2ciInb+3kRE4SOXmLsazt5EROEjl5i7Gs7eREThI5eYuxrO3kRE5SgHKyHS+2eOCx3dv83trDJCPf250FIW/tJ+dQGfqptJyKtZelP7y1+9FPZdkGHE+nd04n7yOVYYwIdD95m+6J5V5OVpK6desqPDxcO3fudGvfuXOn6tevH6SoAAAAAAAAACCwKlXhNjIyUh07dtTixYtdbYWFhVq8eLHboxP84XA4lJiYqKSkpPKGCQAAAAAAAADlYrlHJRw8eFCbNm1y/ZyRkaG1a9eqdu3aatKkiaZMmaLk5GR16tRJnTt31lNPPaWcnByNGzeuXJ9rt9tlt9uVnZ2tuLi48qYBAAAAAAAAAH6zXOE2LS1Nffr0cf08ZcoUSVJycrLmzZun0aNHKzMzU9OmTdOOHTvUoUMHLVq0SPXq1QtWyAAAAAAAAAAQUJYr3Pbu3dvtTW2eTJo0SZMmTTpFEQEAAAAAAADAqVWpnnELAAAAAAAAAKGAwi0AAAAAAAAAWAyF2+McDocSExOVlJQU7FAAAAAAAAAAhDgKt8fZ7Xalp6crNTU12KEAAAAAAAAACHGWezkZAAAAAAAAECyz980OdghlklIrJdghoIJwxy0AAAAAAAAAWAyFWwAAAAAAAACwGAq3x/FyMgAAAAAAAABWQeH2OF5OBgAAAAAAAMAqKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWExHsAAAAAAAACJbZ+2YHOwSfpdRKCXYIAIBTqMyF299//10fffSRvvvuO6Wnp2v37t2y2WyqW7eu2rRpo+7du+uyyy5T8+bNKyJeAAAAAAAAADjt+fyohE8++US9e/dWq1atNGXKFK1du1aNGjVSnz591KtXLzVo0EBr167VlClT1KpVK/Xq1UuffPJJRcYeUA6HQ4mJiUpKSgp2KAAAAAAAAABCnE933Hbt2lXr1q3TkCFD9Pbbb6tv376KjY31OG92drb+85//6N1339Xll1+u9u3b6/vvvw9o0BXBbrfLbrcrOztbcXFxwQ4HAAAAAAAAQAjzqXDbp08fffTRR6pXr16p88bGxmrEiBEaMWKEduzYodmzK8/zggAAAAAAAADACnwq3M6cOdOvldevX9/vZQEAAAAAAAAgVPn8jFsAAAAAAAAAwKnhd+H2zz//1E033aSzzz5btWvX1rJlyyRJu3fv1uTJk7VmzZqABQkAAAAAAAAAocSnRyWcLD09XX/7299UWFioLl26aNOmTcrPz5ck1a1bV99++61ycnL06quvBjRYAAAAAAAAAAgFfhVu77zzTtWsWVMrVqyQzWZTQkKC2/RLLrlEb731VkACBAAAAAAAAIBQ49ejEpYtW6YJEyYoPj5eNput2PQmTZpo69at5Q7uVHI4HEpMTFRSUlKwQwEAAAAAAAAQ4vwq3BYWFqpatWpep2dmZioqKsrvoILBbrcrPT1dqampwQ4FAAAAAAAAQIjzq3B7/vnn69NPP/U4LT8/X//+97/VtWvXcgUGAAAAAAAAAKHKr8Lt1KlTtWjRIk2YMEE//fSTJGnnzp366quv1K9fP/3888+6++67AxooAAAAAAAAAIQKv15ONnDgQM2bN08pKSl66aWXJElXX321jDGKjY3VggUL1LNnz4AGCgAAAAAAAAChwq/CrSRdc801Gj58uL788ktt2rRJhYWFatmypfr376+YmJhAxggAAAAAAAAAIcXvwq0kVa9eXcOGDQtULAAAAAAAAAAA+Vi4/fPPP/1aeZMmTfxaDgAAAEDlMnvf7GCHUCYptVKCHQIAAECJfCrcNmvWTDabrcwrLygoKPMyAAAAAAAAABDqfCrczpkzx6/CLQAAAAAAAACg7Hwq3I4dO7aCwwg+h8Mhh8PBXcIAAAAAAAAAgi4s2AFYhd1uV3p6ulJTU4MdCgAAAAAAAIAQ59Mdt9589913+uGHH5SVlaXCwkK3aTabTffff3+5ggMAAAAAAACAUORX4Xbv3r265JJLtGrVKhljZLPZZIyRJNf/KdwCAAAAAAAAgH/8elTCHXfcofXr1+vNN9/U5s2bZYzRF198oY0bN+qmm25Shw4dtG3btkDHCgAAAAAAAAAhwa/C7WeffaYbb7xRo0ePVkxMzLEVhYWpVatWcjgcatasmW655ZZAxgkAAAAAAAAAIcOvwu3+/ft1zjnnSJJq1KghSTp48KBrer9+/fTFF18EIDwAAAAAAAAACD1+FW4bNGigHTt2SJKioqKUkJCgdevWuaZv3bpVNpstMBECAAAAAAAAQIjx6+VkPXv21H/+8x/de++9kqTRo0frscceU3h4uAoLC/XUU0+pf//+AQ0UAAAAAAAAAEKFX4XbKVOm6D//+Y9yc3MVFRWlGTNm6H//+5/uv/9+SccKu88880xAAwUAAAAAAACAUOFX4bZt27Zq27at6+datWrpq6++0v79+xUeHu56YRkAAAAAAAAAoOz8Ktx6U7NmzUCuDgAAAAAAAABCkl8vJ3v66adLfIbtwIED9fzzz/sdFAAAAAAAAACEMr8Kt6+++qoSExO9Tk9MTNRLL73kd1DB4HA4lJiYqKSkpGCHAgAAAAAAACDE+VW4/e2339SmTRuv01u3bq3ffvvN76CCwW63Kz09XampqcEOBQAAAAAAAECI86twGxkZqR07dnidvn37doWF+bVqAAAAAAAAAAh5flVXu3btqnnz5unAgQPFpmVlZWnu3Lnq2rVruYMDAAAAAAAAgFAU4c9C06dPV69evdShQwfdcsstOueccyRJP/30k5566ilt375db775ZkADBQAAAAAAAIBQ4VfhtkuXLlq4cKFuvPFGpaSkyGazSZKMMWrevLk+/vhjdevWLaCBAgAAAAAAAECo8KtwK0kXX3yxNm3apDVr1rheRNayZUudf/75rkIuAAAAymb2vtnBDqFMUmqlBDsEAAAA4LTkd+FWksLCwtSxY0d17NgxUPEAAAAAAAAAQMjz+eVkhw4d0p9//qm8vLxi0+bMmaOLLrpIiYmJGj58uFJTUwMaJAAAAAAAAACEEp8Ltw8++KDatWtXrHD70EMPafz48Vq6dKkyMzP14Ycfqnfv3lq3bl3AgwUAAAAAAACAUOBz4XbJkiW69NJLVaNGDVdbdna2HnroITVs2FC//vqrMjMztWLFCkVGRuqRRx6pkIABAAAAAAAA4HTnc+H2999/V7t27dzaPvvsM+Xl5emuu+5S8+bNJUmdO3fWuHHj9M033wQ2UgAAAAAAAAAIET4Xbg8cOKA6deq4tS1btkw2m039+/d3a09MTFRmZmZgIgQAAAAAAACAEONz4bZp06basGGDW9vXX3+tevXqqVWrVm7teXl5io2NDUyEAAAAAAAAABBifC7c9uvXT3PmzNHKlSslSQsWLNCGDRs0bNiwYvOuXr1azZo1C1iQAAAAAAAAABBKfC7c3n///apRo4YuuOACRUZGauzYsYqPj9e0adPc5jt06JA++OADXXTRRQEPFgAAAAAAAABCQYSvM9atW1dr167VK6+8os2bN6tp06a67rrrlJCQ4DbfTz/9pKuuukrXXHNNwIMFAAAAAAAAgFDgc+FWkmrVqqU77rijxHk6d+6szp07lyuoYHA4HHI4HCooKAh2KAAAAADgMnvf7GCHUCYptVKCHQIAAKcFnx+VcLqz2+1KT09XampqsEMBAAAAAAAAEOIo3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALCYi2AEAAAAAp8LsfbODHUKZpNRKCXYIAAAACCK/CrcPPvhgidNtNpuio6PVqFEj9ezZUw0bNvQrOAAAAAAAAAAIRX4VbmfMmCGbzSZJMsa4TTu5PTw8XOPHj9ezzz6rsDCezAAAAAAAAAAApfGrkrplyxa1a9dOycnJWr16tbKyspSVlaW0tDRde+216tChgzZu3KgffvhBV111lV588UU9/PDDgY4dAAAAAAAAAE5LfhVuJ06cqNatW2vOnDk677zzFBMTo5iYGJ1//vmaO3euzjzzTN19993q0KGD5s2bp/79+2vBggWBjh0AAAAAAAAATkt+FW7/+9//qlevXl6n9+rVS//5z39cPw8aNEh//vmnPx8FAAAAAAAAACHHr8JtVFSUVq5c6XX6ihUrFBkZ6fo5Pz9fNWrU8OejAAAAAAAAACDk+FW4HTNmjBYsWKDbb79dv/32mwoLC1VYWKjffvtNt912m15//XWNGTPGNf+SJUuUmJgYsKABAAAAAAAA4HQW4c9Cjz32mHbu3KlZs2bpySefVFjYsfpvYWGhjDEaMWKEHnvsMUnSkSNH1LFjR11wwQWBixoAAAAAAAAATmN+FW6jo6P11ltv6e6779bnn3/uen5t06ZN1b9/f51//vlu806bNi0w0QIAAAAAAABACPCrcOt03nnn6bzzzgtULAAAAAAAAAAAlbNwm5GRoc8//1x//PGHJKlZs2YaMGCAmjdvHpDgAAAAAAAAACAU+V24ve222zR79mwVFha6tYeFhemWW27RE088Ue7gAAAAAAAAACAUhfmz0D//+U89+eSTGj58uL7//nvt379f+/fv1/fff6+RI0fqySef1JNPPhnoWAEAAAAAAAAgJPh1x+3LL7+syy67TG+//bZbe5cuXfTvf/9bR44c0Ysvvqhbb701IEECAFBWs/fNDnYIZZJSKyXYIQAAAAAALMSvO25///139e/f3+v0/v376/fff/c3JgAAAAAAAAAIaX4VbhMSErRu3Tqv09etW6f4+Hi/gwIAAAAAAACAUOZX4XbUqFF65ZVX9MgjjygnJ8fVnpOTo0cffVSvvPKKRo8eHbAgAQAAAAAAACCU+PWM27///e9au3at7rnnHk2bNk0NGjSQJG3btk35+fnq06ePHnzwwYAGCgAAAAAAAAChwq/CbbVq1bR48WJ99NFH+vzzz/XHH39IkgYMGKBBgwZp8ODBstlsAQ3UV/v371ffvn2Vn5+v/Px8paSkaPz48UGJBQAAAAAAAAD84Vfh1mnIkCEaMmRIsfbly5fr66+/1j333FOe1fslJiZGy5YtU7Vq1ZSTk6Nzzz1Xw4cPV506dU55LAAAAAAAAADgD7+ecVuaJUuW6P7776+IVZcqPDxc1apVkyTl5ubKGCNjTFBiAQAAAAAAAAB/VEjhtjyWLVumwYMHq0GDBrLZbPrwww+LzeNwONSsWTNFR0erS5cuWrVqldv0/fv3q3379mrUqJHuuOMO1a1b9xRFDwAAAAAAAADlZ7nCbU5Ojtq3by+Hw+Fx+ltvvaUpU6Zo+vTp+uGHH9S+fXv1799fu3btcs1Ts2ZNrVu3ThkZGXrzzTe1c+fOUxU+AAAAAAAAAJRbuZ5xWxEGDhyogQMHep0+a9YsjR8/XuPGjZMkvfDCC/r00081Z84c3X333W7z1qtXT+3bt9c333yjkSNHelxfbm6ucnNzXT9nZ2dLkuvlZpIUFhamsLAwFRYWqrCw0DWvs72goMDtcQze2sPDw2Wz2VzrLdouSQUFBT61R0REyBjj1m6z2RQeHl4sRm/t5ERO5EROp3tOKpRs5sSLMo3NHPu60ku7rdAmFXmyjgkzkq2E9gL3l3CasGMz2Qp9bA83kjnRnp+fH5L9RE7FY5fRKd33js10fH5v7SUcT0W3sdX7yVZg8yknq4wRle14cuZ8qva9cveTVGnGiKL706k+Px2bqWz9VFhYWKnGcrdtZvExwrktKs059+R9pqRcLTBGOHOoLNcRru0YxGvYYzOV3k+erhcsPUYU2oJ3fvKjn07eBlYeI0q9XrDaGCEFfN87ebmSWK5wW5K8vDytXr1aU6dOdbWFhYWpb9+++v777yVJO3fuVLVq1RQTE6OsrCwtW7ZMEyZM8LrOmTNn6oEHHijWvmbNGlWvXl2SFB8fr5YtWyojI0OZmZmueRo1aqRGjRpp48aNysrKcrW3aNFCCQkJ+umnn3T48GFXe+vWrVWzZk2tWbPGrRPbtWunyMhIpaWlucXQqVMn5eXlaf369a628PBwJSUlKSsrSxs2bHC1V61aVe3bt9fu3bu1efNmV3tcXJzatGmjbdu2acuWLa52ciInciKn0z2n6rurq/qu6q72w7UO60DDA4rZHqOq+6q62nMScpSTkKO4P+MUeTDS1Z7dIFtHah9Rrd9qKSL3xOlyf9P9yovJU91f6rpdHOxptUeFVQoV/3O8W06ZbTIVdjRMdTadeEmmCTPKTMxU5MFI1fyjpiQprUpaSPYTORXPKTo++pTue5KUH5WvvWfuVfS+aMVui3W159XI0/5m+0s8ntJ+PbEtrd5P8UfjfcrJKmNEZTue4o/Gl5pTIPe98vaTaqvSjBHxu0/sN6f6/CSVvZ8yGmRUqrE8/pcT28bqY0RalbRKdc61FdqCdn7yp5/SqqSVmpOVxghVV9CvYSXf+qno9UJluN6rFVYraOcnf/qpaK5WHyOc1wvBvob1tZ9UWwHf93JycuQrm/HxzV2TJ0/2eaVpaWlauXJlsQpzWdlsNn3wwQcaOnSoJGnbtm1q2LChli9frm7durnmu/POO7V06VKtXLlSq1at0g033OB6KZndbteNN97o9TM83XHbuHFj7dmzR7Gxxzq9UnwbZJFvTsiJnMiJnKyS0+w9sy31LXhp3xhPrDkxJPuJnIrH7sh2WPJOGW/Hkz3OXmpOVumn5/Y/Z9k7ZTz10+SakyvV8fTc/udKzSnYd9MVbU+pnVJpxgjHvhOPkbPq3XRF+2NS7UmVaix/du+zpeZklTFiYs2JPuVklTHi6X1PW/9uuiL95Ny+leU64pmsZ4J+DXtsptL7ydP1gpXHiOeynqtUd9zaY+1u7VYeI0q9XrDYGJFSOyXg+152drbq1KmjrKwsV+3RG5/vuH322WdLn6kIm81W+kwVoHPnzlq7dq3P80dFRSkqKqpYe0REhCIi3DePcyc8mbMDfG0/eb3+tNtsNo/t3mIsazs5kZO3dnIiJ6ly5KQwyRQ965bS7rxA8Lk9PADtthPtRXMLpX4iJw+xH7+EOlX7nk/tJRxPnraNVfvJLbdKMEZUtuPp5Bwqet8LRD9VljHC07ax8hjhzKOyjOXB2Pf87aeiOVSKMcLbPiNrjhEn51AZxohgX8P61O7lesHKY4Rr+wXp/FTWfrLENWwp7WW6XvDWHqQxItD7nrfpHpfxdcai1fVgqVu3rsLDw4u9bGznzp2qX79+kKICAAAAAAAAgMDycIuSdUVGRqpjx45avHixq62wsFCLFy92e3SCPxwOhxITE5WUlFTeMAEAAAAAAACgXCz3crKDBw9q06ZNrp8zMjK0du1a1a5dW02aNNGUKVOUnJysTp06qXPnznrqqaeUk5OjcePGletz7Xa77Ha7srOzFRcXV940AAAAAAAAAMBvPt1xm5iYqAULFigvL8/nFefm5mru3LlKTEwsU0BpaWk677zzdN5550mSpkyZovPOO0/Tpk2TJI0ePVpPPPGEpk2bpg4dOmjt2rVatGiR6tWrV6bPAQAAAAAAAACr8umO27Fjx2rKlClKSUnRZZddpr59++r8889X8+bNVa1aNUlSTk6OMjIylJaWpq+++koLFy5UZGSk7rjjjjIF1Lt3b7c3tXkyadIkTZo0qUzrBQAAAAAAAIDKwqfC7Z133qkJEybo1Vdf1bx58/Taa6/JZjv2ymPnm9Dy8/MlScYYnXvuuXrggQd03XXXKTY2toJCBwAAAAAAAIDTk8/PuI2JidEtt9yiW265Rb///ruWL1+uDRs2aM+ePZKkOnXqqHXr1urWrZuaN29eYQEDAAAAAAAAwOnOr5eTNWvWTM2aNQtwKMHlcDjkcDhUUFAQ7FAAAAAAAAAAhDi/CrenI7vdLrvdruzsbMXFxQU7HAAALG32vtnBDsFnKbVSgh0CAAAAAJRZWLADAAAAAAAAAAC4o3ALAAAAAAAAABZD4RYAAAAAAAAALIbC7XEOh0OJiYlKSkoKdigAAAAAAAAAQhyF2+PsdrvS09OVmpoa7FAAAAAAAAAAhDi/Crdr167Vv/71L7e2L774Qj179lSXLl00e3bledM0AAAAAAAAAFiNX4XbO++8U2+99Zbr54yMDA0bNkwZGRmSpClTpuill14KTIQAAAAAAAAAEGL8KtyuW7dOPXr0cP28YMEChYeHa82aNVq5cqVGjhypF154IWBBAgAAAAAAAEAo8atwm5WVpTp16rh+/uyzz3TxxRerbt26kqSLL75YmzZtCkyEAAAAAAAAABBi/CrcnnHGGfr5558lSdu3b9fq1avVr18/1/SDBw8qLIz3ngEAAAAAAACAPyL8WWjIkCF65plndOTIEa1cuVJRUVEaNmyYa/q6devUokWLgAV5KjgcDjkcDhUUFAQ7FAAAAAAAAAAhzq/bYh966CENHz5cr732mnbt2qV58+apXr16kqTs7Gy9++67bnfgVgZ2u13p6elKTU0NdigAAAAAAAAAQpxfd9zWqFFDb7zxhtdpW7ZsUfXq1csVGAAAAAAAAACEKr/uuL3uuuu0cuVKzysMC9Mvv/yiG264oVyBAQAAAAAAAECo8qtwO2/ePP32229ep2dkZGj+/Pl+BwUAAAAAAAAAocyvwm1ptm3bpqpVq1bEqgEAAAAAAADgtOfzM24/+ugjffTRR66fX3rpJX311VfF5tu/f7+++uorJSUlBSZCAAAAAAAAAAgxPhdu09PT9c4770iSbDabVq5cqdWrV7vNY7PZVL16dfXs2VOzZs0KbKQAAAAAAAAAECJ8LtxOnTpVU6dOlXTsBWSvvvqqrrzyygoL7FRzOBxyOBwqKCgIdigAAAAAAAAAQpzPhduiCgsLAx1H0NntdtntdmVnZysuLi7Y4QAAAAAAAAAIYX4Vbp1WrFihJUuWaNeuXZo4caLOPPNMHTp0SBs2bNBZZ52lGjVqBCpOAAAAAAAAAAgZYf4slJeXp+HDh6t79+6699579fTTT+uvv/46tsKwMPXr10+zZ88OaKAAAAAAAAAAECr8Ktzef//9+uSTT/T888/rl19+kTHGNS06OlqjRo3SRx99FLAgAQAAAAAAACCU+FW4/de//qUJEybohhtuUO3atYtNb9OmjTZv3lzu4AAAAAAAAAAgFPlVuN21a5fatm3rdXp4eLgOHTrkd1AAAAAAAAAAEMr8Ktw2btxYGzZs8Dr9u+++U6tWrfwOCgAAAAAAAABCmV+F2yuvvFIvvviivv/+e1ebzWaTJL388st6++23de211wYmQgAAAAAAAAAIMRH+LHTvvfdqxYoV6tmzp9q0aSObzaZbb71Ve/fu1ZYtWzRo0CDdeuutgY4VAAAAAAAAAEKCX3fcRkZGatGiRZo7d65atGih1q1bKzc3V+3atdO8efO0cOFChYeHBzrWCuVwOJSYmKikpKRghwIAAAAAAAAgxPl1x6107NEIV199ta6++upAxhM0drtddrtd2dnZiouLC3Y4AAAAAAAAAEKY34XbkxljtGTJEuXm5qpHjx6KiYkJ1KoBAAAAAAAAIKT49aiEe++9V3369HH9bIxRv379dPHFF+uSSy5R27Zt9dtvvwUsSAAAAAAAAAAIJX4Vbt977z117tzZ9fO7776rxYsX66GHHtInn3yigoICzZgxI1AxAgAAAAAAAEBI8etRCVu3blWrVq1cP7///vtKTEzU1KlTJUkTJkzQ888/H5gIAQAAAAAAACDE+HXHbUREhHJzcyUde0zC4sWLNWDAANf0evXqaffu3YGJEAAAAAAAAABCjF+F23PPPVevv/669u3bp7lz52rPnj265JJLXNP/+OMP1a1bN2BBAgAAAAAAAEAo8etRCdOmTdPgwYNdxdnu3bu7vazs008/VVJSUmAiBAAAAAAAAIAQ41fh9uKLL9YPP/yg//znP6pZs6ZGjx7tmrZv3z717NlTQ4YMCViQAAAAAAAAABBK/CrcSlJiYqISExOLtdeqVUtPPvlkuYICAAAAAAAAgFDmV+H2wIED2r9/vxo3buxq27Ztm1544QXl5uZq5MiRPCoBAAAAAAAAAPzkV+H2hhtuUEZGhlasWCFJys7OVteuXbVlyxaFhYVp9uzZWrRokXr37h3IWAEAAAAAAAAgJIT5s9C3336rSy+91PXz66+/rm3btmn58uXat2+f2rVrp4ceeihgQZ4KDodDiYmJ3CkMAAAAAAAAIOj8Ktzu3r1bDRs2dP388ccfq0ePHuratatiYmJ07bXXat26dQEL8lSw2+1KT09XampqsEMBAAAAAAAAEOL8KtzWrFlTO3bskCQdPnxY33zzjfr16+eaHhERoUOHDgUmQgAAAAAAAAAIMX494/aCCy7Qc889p9atW2vRokU6cuSIhgwZ4pq+ceNGtztyAQAAAAAAAAC+86tw++ijj6pfv34aMWKEJOm2227TOeecI0kqKCjQO++8owEDBgQuSgAAAAAAAAAIIX4Vblu1aqVffvlF6enpiouLU7NmzVzTDh06pGeffVYdOnQIUIgAAAAAAAAAEFr8esatJFWpUkXt27d3K9pKUkxMjLp3766FCxeWNzYAAAAAAAAACEl+F25PdujQIb355pu65JJL1LBhQ6WkpARq1QAAAAAAAAAQUvx6VIJTYWGhvvjiC73xxhv66KOPdOjQIbVq1UqTJ0/W4MGDAxUjAAAAAAAAAIQUvwq3K1as0BtvvKG3335bu3fvVtOmTXXo0CG99NJLuv766wMdIwAAAAAAAACEFJ8Lt7/88oveeOMNvfnmm9q8ebNatmyp8ePHa8yYMYqKitJZZ52lWrVqVWSsAAAAAAAAABASfC7cJiYmqn79+hozZoxGjx6tpKQk17TffvutQoIDAAAAAAAAgFDk88vJqlSpon379umPP/7QX3/9pdzc3IqMCwAAAAAAAABCls+F2507d+rpp59WZmamRo0apYSEBF177bVatGiRjh49WpExAgAAAAAAAEBI8blwGxcXp//7v//T119/rd9//1333HOP1q1bp0GDBqlz586y2WzasGGD8vLyKjJeAAAAAAAAADjt+Vy4Lapx48a66667tG7dOq1du1Y33XSTGjZsqPvuu09169bViBEjNH/+/EDHCgAAAAAAAAAhwa/CbVHt2rXTY489pj///FP//e9/dfnll2vJkiW67rrrAhEfAAAAAAAAAIScchdui+rdu7deeeUV7dixQ++++24gV13hHA6HEhMTlZSUFOxQAAAAAAAAAIS4gBZunSIjIzVs2LCKWHWFsdvtSk9PV2pqarBDAQAAAAAAABDiKqRwCwAAAAAAAADwH4VbAAAAAAAAALAYCrcAAAAAAAAAYDE+FW6ffvppbdy4saJjAQAAAAAAAADIx8LtrbfeqrS0NNfP4eHhevPNNyssKAAAAAAAAAAIZT4VbmvVqqWdO3e6fjbGVFhAAAAAAAAAABDqInyZqXfv3poxY4bWrl2ruLg4SdKCBQu0YsUKr8vYbDbNnj07MFECAAAAAAAAQAjxqXD73HPP6ZZbbtGXX36pXbt2yWaz6csvv9SXX37pdRkKtwAAAAAAAADgH58elZCQkKA333xT27dvV0FBgYwxev3111VYWOj1X0FBQUXHDgAAAAAAAACnJZ8KtyebO3euLrjggkDHAgAAAAAAAACQj49KOFlycrLr/+np6frjjz8kSU2bNlViYmJgIgMAAAAAAACAEOVX4VaSPvroI02ZMkW///67W3vz5s01a9YsXXbZZeWNDQAAAAAAAABCkl+PSvjss880YsQISdLDDz+sDz74QB988IEefvhhGWM0fPhwLVq0KKCBAgAAAAAAAECo8OuO27///e9q166dvvnmG1WvXt3Vftlll2nSpEnq0aOHHnjgAQ0YMCBggQIAAAAAAABAqPDrjtv169crOTnZrWjrVL16dY0dO1br168vd3AAAAAAAAAAEIr8KtxGR0dr7969Xqfv3btX0dHRfgcFAAAAAAAAAKHMr8LthRdeqNmzZ+v7778vNm3lypV6+umn1bdv33IHBwAAAAAAAAChyK9n3D722GPq1q2bevTooc6dO+vss8+WJP3yyy9atWqVEhIS9OijjwY0UAAAAAAAAAAIFX7dcdu8eXOtX79ekydP1r59+/TWW2/prbfe0r59+5SSkqJ169apWbNmAQ4VAAAAAAAAAEKDX3fcSlJCQoKefPJJPfnkk4GMBwAAAAAAAABCnl933AIAAAAAAAAAKg6FWwAAAAAAAACwGAq3AAAAAAAAAGAxp13h9q+//lLv3r2VmJiodu3a6Z133gl2SAAAAAAAAABQJn6/nMyqIiIi9NRTT6lDhw7asWOHOnbsqEGDBql69erBDg0AAAAAAAAAfFLmO24PHTqkjh076oUXXqiIeMrtjDPOUIcOHSRJ9evXV926dbV3797gBgUAAAAAAAAAZVDmwm21atWUkZEhm81WEfFo2bJlGjx4sBo0aCCbzaYPP/yw2DwOh0PNmjVTdHS0unTpolWrVnlc1+rVq1VQUKDGjRtXSKwAAAAAAAAAUBH8esbtgAED9MUXXwQ6FklSTk6O2rdvL4fD4XH6W2+9pSlTpmj69On64Ycf1L59e/Xv31+7du1ym2/v3r269tpr9dJLL1VInAAAAAAAAABQUfx6xu3999+vUaNG6ZprrtGNN96o5s2bq2rVqsXmq127dpnXPXDgQA0cONDr9FmzZmn8+PEaN26cJOmFF17Qp59+qjlz5ujuu++WJOXm5mro0KG6++67dcEFF5T4ebm5ucrNzXX9nJ2dLUnKz89Xfn6+JCksLExhYWEqLCxUYWGha15ne0FBgYwxpbaHh4fLZrO51lu0XZIKCgp8ao+IiJAxxq3dZrMpPDy8WIze2smJnMiJnE73nFQo2cyJvw4xNnPs60ov7bZCm3QidJkwI9lKaC9w/8sTE3ZsJluhj+3hRjIn2vPz8ytXP5nSczoW/PFt4K39FPRT0bwqw/Eko1O67x2byf9+Krp9rT5G2Apsp3TfK8qffqpsY7kz51O175W7n6RKc84tuj+d6vPTsZnK1k+FhYWV6jrCbZtZfIxwbotKc73n6XrBwmOEM4fKcl3u2o5BvIY9NlPp/eTpesHSY0ShLejXsEWV1k8nbwMrjxGlXi9YbYyQAr7vnbxcSfwq3J5zzjmSpPT0dL355pte5zs50PLKy8vT6tWrNXXqVFdbWFiY+vbtq++//16SZIzR2LFjdeGFF+qaa64pdZ0zZ87UAw88UKx9zZo1rheaxcfHq2XLlsrIyFBmZqZrnkaNGqlRo0bauHGjsrKyXO0tWrRQQkKCfvrpJx0+fNjV3rp1a9WsWVNr1qxx2zbt2rVTZGSk0tLS3GLo1KmT8vLytH79eldbeHi4kpKSlJWVpQ0bNrjaq1atqvbt22v37t3avHmzqz0uLk5t2rTRtm3btGXLFlc7OZETOZHT6Z5T9d3VVX3XiRdTHq51WAcaHlDM9hhV3Xfiy8achBzlJOQo7s84RR6MdLVnN8jWkdpHVOu3WorIPXG63N90v/Ji8lT3l7puFwd7Wu1RYZVCxf8c75ZTZptMhR0NU51NdVxtJswoMzFTkQcjVfOPmpKktCpplaqfwnPDS81JkvKj8rX3zL2K3het2G2xrva8Gnna32z/KemntPAT8VeG4yk6PvqU7ntS+fop7dcT29LqY0T80fhTuu+Vt58q21gefzS+1JysNEaotirNOTd+94n95lSfn6Sy91NGg4xKdR0R/8uJbWP1MSKtSlqlut6zFdqCdn7yp5/SqqSVmpOVxghVV9CvYSXf+qno9UJl+F2jVlitoF/DlqWfiuZq9THCeb0Q7GtYX/tJtRXwfS8nJ0e+shm3Wzx8M2PGDJ+ecTt9+vSyrtqNzWbTBx98oKFDh0qStm3bpoYNG2r58uXq1q2ba74777xTS5cu1cqVK/Xtt9+qZ8+eateunWv6a6+9prZt23r8DE933DZu3Fh79uxRbOyxTq8U3wZZ5JsTciInciInq+Q0e89sS30LXto3xhNrTqxU/fT0vqet8y14Kf00seZEn3Ly1B6M48mR7bDknTLe+skeZy81J6uMEc/tf86yd8p46qfJNSdXqrH8uf3PlZqTlcaIlNopleac69h34jFyVr2brmh/TKo9qVJdRzy799lSc7LKGOE8p1WW6z2P1wsWHiOc27eyXJc/k/VM0K9hj81Uej95ul6w8hjxXNZzQb+GLaq0frLH2t3arTxGlHq9YLExIqV2SsD3vezsbNWpU0dZWVmu2qM3ft1xO2PGDH8WOyV69OjhtkOVJioqSlFRUcXaIyIiFBHhvnmcO+HJnB3ga/vJ6/Wn3WazeWz3FmNZ28mJnLy1kxM5SZUjJ4VJpuhZt5R25wWCz+3hAWi3nWgvmlul6Cdb6Tn51H4K+slT/JY+no5fQ56qfc+n9hL6ydO2seoY4ZZbJRgjKttYfnIOlWGMqCznXE/bxspjhDOPynIdEazzkz/tRXOoFGOEt31G1hwjTs6hMowRwb6G9andy/WClccI1/YL4jVsWdotcQ1bSnuZrhe8tQdpjAj0vudtuid+vZzsZFlZWQF/LIIndevWVXh4uHbu3OnWvnPnTtWvX7/CPx8AAAAAAAAATgW/C7dpaWkaMGCAqlWrpjp16mjp0qWSpN27d2vIkCH6+uuvAxWjS2RkpDp27KjFixe72goLC7V48WK3Ryf4w+FwKDExUUlJSeUNEwAAAAAAAADKxa/C7fLly9WjRw/9+uuvuvrqq90eTVC3bl1lZWXpxRdf9CuggwcPau3atVq7dq0kKSMjQ2vXrtWff/4pSZoyZYpefvllzZ8/Xz///LMmTJignJwcjRs3zq/Pc7Lb7UpPT1dqamq51gMAAAAAAAAA5eXXM27vuecetWnTRitWrNCBAwf0yiuvuE3v06eP5s+f71dAaWlp6tOnj+vnKVOmSJKSk5M1b948jR49WpmZmZo2bZp27NihDh06aNGiRapXr55fnwcAAAAAAAAAVuNX4TY1NVUzZ85UVFSUDh48WGx6w4YNtWPHDr8C6t27t9ub2jyZNGmSJk2a5Nf6AQAAAAAAAMDq/HpUQpUqVdwej3CyrVu3qkaNGn4HBQAAAAAAAAChzK/CbdeuXfXuu+96nJaTk6O5c+eqV69e5QrsVOPlZAAAAAAAAACswq/C7QMPPKC0tDRdcskl+vzzzyVJ69at0yuvvKKOHTsqMzNT999/f0ADrWi8nAwAAAAAAACAVfj1jNsuXbros88+04QJE3TttddKkm677TZJUsuWLfXZZ5+pXbt2gYsSAAAAAAAAAEKIX4VbSbrwwgv1yy+/aM2aNdq0aZMKCwvVsmVLdezYUTabLZAxAgAAAAAAAEBI8btw63TeeefpvPPOC0QsAAAAAAAAAACVo3Cbm5url19+WZ999pl+//13SVKzZs00aNAg/d///Z+io6MDFSMAAAAAAAAAhBS/Xk62ZcsWdejQQZMnT9a6desUHx+v+Ph4rVu3TpMnT1aHDh20ZcuWQMdaoRwOhxITE5WUlBTsUAAAAAAAAACEOL8Kt3a7XX/88Yfefvttbd26VUuXLtXSpUu1detWvfXWW/rzzz9lt9sDHWuFstvtSk9PV2pqarBDAQAAAAAAABDi/HpUwuLFi3Xrrbdq5MiRxaaNGjVKP/zwg5555plyBwcAAAAAAAAAocivO25jYmKUkJDgdXr9+vUVExPjd1AAAAAAAAAAEMr8KtyOGzdO8+bN06FDh4pNO3jwoObOnavrr7++3MEBAAAAAAAAQCjy6VEJ77//vtvP5513nj799FO1bt1aycnJatWqlSTp119/1YIFC1S7dm21a9cu8NECAAAAAAAAQAjwqXA7cuRI2Ww2GWMkye3///jHP4rNv2XLFo0ZM0aXX355AEMFAAAAAAAAgNDgU+F2yZIlFR1H0DkcDjkcDhUUFAQ7FAAAAAAAAAAhzqfCba9evSo6jqCz2+2y2+3Kzs5WXFxcsMMBAAAAAAAAEML8ejkZAAAAAAAAAKDi+HTHrSfffvut5syZo82bN2vfvn2uZ9462Ww2rVu3rtwBAgAAAAAAAECo8atwO2vWLN1xxx2Kjo7W2Wefrdq1awc6LgAAAAAAAAAIWX4Vbh9//HF1795dCxcu5HmwAAAAAAAAABBgfj3j9tChQ7rqqqso2gIAAAAAAABABfCrcNunTx/9+OOPgY4FAAAAAAAAACA/C7fPPPOMFi9erCeeeEJ79+4NdExB4XA4lJiYqKSkpGCHAgAAAAAAACDE+VW4bdy4sW688Ubdfffdio+PV/Xq1RUbG+v2r7I9RsFutys9PV2pqanBDgUAAAAAAABAiPPr5WTTpk3TP/7xDzVs2FCdOnWqdEVaAAAAAAAAALAyvwq3L7zwgi655BJ9+OGHCgvz66ZdAAAAAAAAAIAXflVd8/LydMkll1C0BQAAAAAAAIAK4Ffl9dJLL9U333wT6FgAAAAAAAAAAPKzcDt9+nSlp6dr4sSJWr16tTIzM7V3795i/wAAAAAAAAAAZefXM27PPvtsSdLatWv14osvep2voKDAv6gAAAAAAAAAIIT5VbidNm2abDZboGMBAAAAAAAAAMjPwu2MGTMCHAYAAAAAAAAAwMmvZ9yejhwOhxITE5WUlBTsUAAAAAAAAACEOL/uuH3wwQdLncdms+n+++/3Z/VBYbfbZbfblZ2drbi4uGCHAwAAAAAAACCEBfxRCTabTcaYSle4BQAAAAAAAACr8OtRCYWFhcX+5efn67ffftOtt96qTp06adeuXYGOFQAAAAAAAABCQsCecRsWFqbmzZvriSee0Jlnnqmbb745UKsGAAAAAAAAgJBSIS8n69mzpz777LOKWDUAAAAAAAAAnPYqpHCblpamsLAKWTUAAAAAAAAAnPb8ejnZggULPLbv379fy5Yt0/vvv6//+7//K1dgAAAAAAAAABCq/Crcjh071uu0unXr6u6779a0adP8jQkAAAAAAAAAQppfhduMjIxibTabTbVq1VJMTEy5gwIAAAAAAACAUOZX4bZp06aBjgMAAAAAAAAAcBxvEAMAAAAAAAAAi/H5jtt27dqVacU2m03r1q0rc0DB4nA45HA4VFBQEOxQAAAAAAAAAIQ4nwu3tWvXls1mK3W+HTt26JdffvFpXiux2+2y2+3Kzs5WXFxcsMMBAAAAAAAAEMJ8Ltx+/fXXJU7fsWOHHn30Ub344osKDw/XNddcU97YAAAAAAAAACAk+fVysqJ27typRx55RC+99JKOHj2qq6++Wvfee69atmwZiPgAAAAAAAAAIOT4Xbh13mFbtGB73333qUWLFoGMDwAAAAAAAABCTpkLtzt27NAjjzyil19+WUePHtU111yj++67T82bN6+I+AAAAAAAAAAg5PhcuN2+fburYJufn69rr71W9957LwVbAAAAAAAAAAgwnwu3LVu2VG5urjp06KB77rlHzZs31759+7Rv3z6vy5x//vkBCRIAAAAAAAAAQonPhdsjR45IktasWaPLL7+8xHmNMbLZbCooKChfdAAAAAAAAAAQgnwu3M6dO7ci4wAAAAAAAAAAHOdz4TY5Obki4wAAAAAAAAAAHBcW7AAAAAAAAAAAAO4o3AIAAAAAAACAxVC4BQAAAAAAAACLoXALAAAAAAAAABZD4RYAAAAAAAAALIbCLQAAAAAAAABYDIVbAAAAAAAAALAYCrfHORwOJSYmKikpKdihAAAAAAAAAAhxFG6Ps9vtSk9PV2pqarBDAQAAAAAAABDiKNwCAAAAAAAAgMVEBDsAAAhls/fNDnYIPkuplRLsEAAAAAAACBnccQsAAAAAAAAAFkPhFgAAAAAAAAAshsItAAAAAAAAAFgMhVsAAAAAAAAAsBgKtwAAAAAAAABgMRRuAQAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwmIhgBxAqZu+bHewQyiSlVkqwQwAAAAAAAABCFnfcAgAAAAAAAIDFULgFAAAAAAAAAIuhcAsAAAAAAAAAFkPhFgAAAAAAAAAshsItAAAAAAAAAFgMhVsAAAAAAAAAsBgKtwAAAAAAAABgMadl4XbYsGGqVauWRo4cGexQAAAAAAAAAKDMTsvCbUpKihYsWBDsMAAAAAAAAADAL6dl4bZ3796KiYkJdhgAAAAAAAAA4BfLFW6XLVumwYMHq0GDBrLZbPrwww+LzeNwONSsWTNFR0erS5cuWrVq1akPFAAAAAAAAAAqiOUKtzk5OWrfvr0cDofH6W+99ZamTJmi6dOn64cfflD79u3Vv39/7dq16xRHCgAAAAAAAAAVw3KF24EDB+qhhx7SsGHDPE6fNWuWxo8fr3HjxikxMVEvvPCCqlWrpjlz5pziSAEAAAAAAACgYkQEO4CyyMvL0+rVqzV16lRXW1hYmPr27avvv//er3Xm5uYqNzfX9XN2drYkKT8/X/n5+a7PCAsLU2FhoQoLC90+OywsTAUFBTLGlNhuK7DJhBnJduz/RZmw4/MU+tgebiRzUrvt+Pze2gslmznRbmzmWNneS7svOUlSeHi4bDaba1sVbZeOrceX9oiICBlj3NptNpvCw8OLbXdv7YHoJ3Iip1OdU9HxwOpjRH5+fqXqp7KOe7ZCm3Qi9BP94a09wP2Un59fuY6nk/clDzkdCz6w5yd/+qloXpVhjJDRKd33js3kfz8V3b5WHyNsBbZTuu8V5U8/VbZzrjPnYF7DlqmfpEpzHeHxesHCY0RhYWGlut5z22YWHyOc2yLY17A+95On6wULjxHOHCrL7xqu7RjEa9hjM5XeT56uFyw9RhTagn4NW1Rp/XTyNrDyGFHq9YLVxggVr5GVd987ebmSVKrC7e7du1VQUKB69eq5tderV08bNmxw/dy3b1+tW7dOOTk5atSokd555x1169bN4zpnzpypBx54oFj7mjVrVL16dUlSfHy8WrZsqYyMDGVmZrrmadSokRo1aqSNGzcqKyvL1d6iRQslJCTop59+0uHDh4+t42i89jfdr7yYPNX9pa7bDrWn1R4VVilU/M/xbjFktslU2NEw1dlUx9VmwowyEzMVeTBSNf+o6WrPj8rX3jP3KnpftGK3xbra82rkaX+z/aq+u7qq76ruaj9c67AONDygmO0xqrqvqqs9JyFHOQk5PuUkSa1bt1bNmjW1Zs0atx2zXbt2ioyMVFpamltOnTp1Ul5entavX+9qCw8PV1JSkrKystz6sWrVqmrfvr12796tzZs3u9rj4uLUpk0bbdu2TVu2bHG1B6KfyImcTnVO8dknjnurjxFpVdIqVT+VddyL+zNOkQcjXe3ZDbJ1pPYR1fqtliJyT5wuK6qf0qqkVarjKTw3PCjnJ3/6KS38RPyVYYyIjo8+pfueVL5+Svv1xLa0+hgRfzT+lO575e2nynbOjT8aX2pOVhojVFuV5joifveJ/eZUn5+ksvdTRoOMSnW9F//LiW1j9TEirUqaJa5hfe0nW6Et6Newku/9lFYlrdScrDRGqLqCfg0r+dZPRa8XKsPvhLXCagX9GrYs/VQ0V6uPEc7rhWBfw/raT6qtgO97OTk58pXNuN3iYS02m00ffPCBhg4dKknatm2bGjZsqOXLl7sVYu+8804tXbpUK1euLPNneLrjtnHjxtqzZ49iY491eiC+ZXhu/3NB/4arLN8yTIqdFPxvuCzybRA5kVNF5uTYd+J53lYfIybWnFip+mn2ntmW+ha8tH6aWHNipTqent73tHW+BS+lnybWnOhTTp7agzFGOLIdlrxTxls/2ePspeZklTHiuf3PWfZOGU/9NLnm5Ep1zn1u/3Ol5mSlMSKldkqluY7weL1g4TFiUu1Jlep679m9z5aak1XGCOc5LdjXsL72k8frBQuPEc7tW1l+13gm65mgX8Mem6n0fvJ0vWDlMeK5rOeCfg1bVGn9ZI+1u7VbeYwo9XrBYmNESu2UgO972dnZqlOnjrKysly1R28q1R23devWVXh4uHbu3OnWvnPnTtWvX9+vdUZFRSkqKqpYe0REhCIi3DePcyc8mbMDSmo34cbj/4sqU7utjO1hkpHv7b7kVNTJ28qfdpvN5rHd23Yvazs5kZO39mDm5Ol4teoYUXQbVYZ+Kuu457xA8Lk9wP1UNLdKcTyVdR8L0PnJn37yFL+lx4jj15Cnat/zqb2EfvK0baw6RrjlVgnGiMp2zj05h8owRlSW6wiP1wsWHiOceVSW671gnZ/8aS+aQ6UYI7ztM7LmGHFyDpVhjAj2NaxP7V6uF6w8Rri2XxCvYcvSbolr2FLay3S94K09SGNEoPc9b9M9sdzLyUoSGRmpjh07avHixa62wsJCLV682OujEAAAAAAAAACgsrHcHbcHDx7Upk2bXD9nZGRo7dq1ql27tpo0aaIpU6YoOTlZnTp1UufOnfXUU08pJydH48aNK9fnOhwOORyOYrczAwAAAAAAAMCpZrnCbVpamvr06eP6ecqUKZKk5ORkzZs3T6NHj1ZmZqamTZumHTt2qEOHDlq0aFGxF5aVld1ul91uV3Z2tuLi4sq1LgAAAAAAAAAoD8sVbnv37u32wF9PJk2apEmTJp2iiAAAAAAAAADg1KpUz7gFAAAAAAAAgFBA4RYAAAAAAAAALIbC7XEOh0OJiYlKSkoKdigAAAAAAAAAQhyF2+PsdrvS09OVmpoa7FAAAAAAAAAAhDgKtwAAAAAAAABgMRRuAQAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6Fwe5zD4VBiYqKSkpKCHQoAAAAAAACAEEfh9ji73a709HSlpqYGOxQAAAAAAAAAIY7CLQAAAAAAAABYDIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcAgAAAAAAAIDFULg9zuFwKDExUUlJScEOBQAAAAAAAECIo3B7nN1uV3p6ulJTU4MdCgAAAAAAAIAQR+EWAAAAAAAAACyGwi0AAAAAAAAAWAyFWwAAAAAAAACwGAq3AAAAAAAAAGAxFG4BAAAAAAAAwGIo3AIAAAAAAACAxVC4Pc7hcCgxMVFJSUnBDgUAAAAAAABAiKNwe5zdbld6erpSU1ODHQoAAAAAAACAEEfhFgAAAAAAAAAshsItAAAAAAAAAFgMhVsAAAAAAAAAsBgKtwAAAAAAAABgMRRuAQAAAAAAAMBiKNwCAAAAAAAAgMVQuAUAAAAAAAAAi6FwCwAAAAAAAAAWQ+H2OIfDocTERCUlJQU7FAAAAAAAAAAhjsLtcXa7Xenp6UpNTQ12KAAAAAAAAABCHIVbAAAAAAAAALAYCrcAAAAAAAAAYDEUbgEAAAAAAADAYijcAgAAAAAAAIDFULgFAAAAAAAAAIuhcAsAAAAAAAAAFkPhFsD/t3fn4VFVeRrH38qOQCAJiya4gKABDIgEUFCRp1HE7REUGedRI7ghUTZpXIGmoQGdccE2NCI62N2KO9JK24OjtIqggEBYIhAgshMIW2KELFVn/oAUCSSkEnJyb4Xv5x/JSRl+9z2XU6d+desGAAAAAAAALkPjFgAAAAAAAABchsYtAAAAAAAAALgMjVsAAAAAAAAAcJkwpwtwi7S0NKWlpcnr9TpdCuAq0w5Oc7qEKhkeM9zpEgAAAAAAAM4YV9wel5qaqoyMDC1btszpUgAAAAAAAACc5WjcAgAAAAAAAIDL0LgFAAAAAAAAAJehcQsAAAAAAAAALkPjFgAAAAAAAABchsYtAAAAAAAAALgMjVsAAAAAAAAAcBkatwAAAAAAAADgMjRuAQAAAAAAAMBlaNwCAAAAAAAAgMvQuAUAAAAAAAAAl6FxCwAAAAAAAAAuQ+MWAAAAAAAAAFyGxi0AAAAAAAAAuAyNWwAAAAAAAABwGRq3AAAAAAAAAOAyNG4BAAAAAAAAwGVo3B6Xlpamdu3aqUuXLk6XAgAAAAAAAOAsR+P2uNTUVGVkZGjZsmVOlwIAAAAAAADgLEfjFgAAAAAAAABchsYtAAAAAAAAALgMjVsAAAAAAAAAcBkatwAAAAAAAADgMjRuAQAAAAAAAMBlaNwCAAAAAAAAgMvQuAUAAAAAAAAAl6FxCwAAAAAAAAAuQ+MWAAAAAAAAAFyGxi0AAAAAAAAAuAyNWwAAAAAAAABwGRq3AAAAAAAAAOAyNG4BAAAAAAAAwGVo3AIAAAAAAACAy9C4BQAAAAAAAACXoXELAAAAAAAAAC5D4xYAAAAAAAAAXIbGLQAAAAAAAAC4DI1bAAAAAAAAAHAZGrcAAAAAAAAA4DI0bgEAAAAAAADAZWjcAgAAAAAAAIDL1MnG7eeff65LL71Ubdq00axZs5wuBwAAAAAAAACqJMzpAmpacXGxRo0apYULF6pRo0bq3Lmz+vXrp7i4OKdLAwAAAAAAAICA1LkrbpcuXar27dsrISFBDRo0UN++fbVgwQKnywIAAAAAAACAgLmucfvtt9/q1ltvVXx8vDwejz799NNTHpOWlqaLLrpIUVFR6tatm5YuXer/3q5du5SQkOD/OiEhQTt37qyN0gEAAAAAAACgRriucZufn6+OHTsqLS2t3O+///77GjVqlMaPH68VK1aoY8eO6tOnj/bu3VvLlQIAAAAAAACAHa5r3Pbt21eTJk1Sv379yv3+Sy+9pIceekiDBg1Su3btNGPGDJ1zzjl66623JEnx8fFlrrDduXOn4uPja6V2AAAAAAAAAKgJQfXLyQoLC/XTTz/p6aef9o+FhISod+/eWrJkiSSpa9euWrt2rXbu3KlGjRrpiy++0NixYyv8mQUFBSooKPB/nZubK+nYLzkrLi72/x0hISHy+Xzy+Xxl/u6QkBB5vV4ZY0477vF6ZEKM5Dn259JMyPHH+AIcDzWSOWncc/zxFY37JI85MW485ljbvoLxQI5JkkJDQ+XxePxZlR6Xjv2cQMbDwsJkjCkz7vF4FBoaekruFY3XxDxxTKeOlz5fa+Pc8/g80onST/y7qWj85H9Px487WOapTL4uXyOKi4uD6t9TrZ97ZzhPxcXFwbVGnHwulXNMx4p3fo0ofVzBsJbLqFbPvWMPqv48lc7X7WuEx+tx7vmpGvMUbPuIkmN2cg9bpXmSgma/V+5+wcVrhM/nc3wPW1pl81QmM5evESVZOL2HDXieytsvuHiNKDmGYHlN6M/RwT3ssQdVPk/l7RdcvUb4PI7vYUurbJ5OzsDNa0Sl+wW3rRE6tUd2pufeyf/f6QRV4zYnJ0der1fNmzcvM968eXOtX79e0rGT88UXX1SvXr3k8/k0ZswYxcXFVfgzp0yZogkTJpwyvnLlStWvX1+S1LRpU1188cXKysrSvn37/I9p0aKFWrRooY0bN+rw4cP+8VatWqlZs2Zau3atjhw5cuxnFDXVoQsPqbBhoZpsaFLmhNrfer984T41/blpmRr2td2nkKIQxW06Ub8JMdrXbp8ifo1Q462N/ePFkcU60OaAog5GKXpXtH+8sEGhDl10SPVz6qv+3vr+8SMxR5SXkKeGuxuq3sF6/vH8ZvnKb5Yf0DFJUmJioho3bqyVK1eWOTE7dOigiIgILV++vMwxJScnq7CwUKtXr/aPhYaGqkuXLjp8+LB/HiWpXr166tixo3JycrRlyxb/eKNGjdS2bVvt2rVLO3bskCRlFWWdOKad5R9T418aK+LXCP94bnyujsYeVWxmrMIKTvxTKJmnphlNz3ye8sqfp7uL7q70mKSaOfekM5unpkVNyx6T5XOv0bZG5c5TzOaYcufp5H9PRzofqdVzTzqzeWqae+J8cvsasTx8ea2eeyWqO0+1fe6d6TwtD19eq+femc5TaEGoI89P1Zmn5aEn6q/t5yep6vMU1TSqVs896czmaXnmiSzdvkY0LWrq2PNTdebJyeen6sxTyZ7ByT1sVeZJsXJ8DysFNk9Nc06cN7X9/CRVfZ6y4rMc38OWCGSemm44kY3b14jl4ctdsYcNdJ48Po/je1gp8HlaHr680mNy0xqh+nJ8DysFNk+l9wtueJ1boqJ5igmJcXwPW5V5Kn2sbl8jSvYLTu9hA50nxarGz738/HwFymPKXOLhLh6PR3PnztXtt98u6cQvHlu8eLGuuuoq/+PGjBmjb775Rj/++GOV/47yrrg9//zztX//fkVHH5v0mniXYfqh6Y6/w1WVdxkei37M+Xe4qvBu0PRD0x1/h6sq8/R4o8fd8y64Tj9P0w9ND+iY3PJO5ONxj1d6TKU5/U5k2sET9/N2+xoxtPFQd70LXsk8Tds/zVXvglc2T0MbD3XNu+Clx6Xy5+nVg6+6513wSuZpaOOhAR1TeeNOrBFpuWmuvFKmonlKbZRa6TG5ZY2Yfmi6a6+UKW+ehjUe5sorZUqPSyfmo2TP4LorZSqYp+Gxwx3fw0qBzVO5+wUXrxGPxT7m+B62tMrm6bUDr1V6TG5ZI0qe05zewwY6T+XuF1y8RpTk65bXudLp5+nPh//s+B722IMqn6fy9gtuXiOmH57u+B62tMrmKTU6tcy4m9eISvcLLlsjhscOr/FzLzc3V3FxcTp8+LC/91iRoLritkmTJgoNDVV2dnaZ8ezsbJ177rnV+pmRkZGKjIw8ZTwsLExhYWXjKTkJT1YyAacbN6Gm3D+XVqVxTxXHQySjwMcDOabSTs6qOuMej6fc8YpyLz1e5pgrOKaSf/wBj1ucp0COKZDx2pinU+q3fO6d6Tx5PB5/7eWp6XMvkPHTzVN5mbl1jSidUTCsEbV97lVrvNR8lD62oFgjqnqOObhGlFe/q9eI43tIJ56fqjNP5WXj1jUikP2Cm9YIJ5+fylPZfJx8DMGwRji9hw1kvML9govXiJLjcHIPe7LTzZMb9rCBjpc+hqBYIyo6Z+TONeLkYwiGNcLpPWxA4xXsF9y8Rvjzc8nr3MrGXbGHrWS8SvuFisYdWiNq+tyr6Pvlcd0vJzudiIgIde7cWV999ZV/zOfz6auvvipzBS4AAAAAAAAABDPXXXH766+/atOmTf6vs7KytGrVKsXGxuqCCy7QqFGjlJKSouTkZHXt2lWvvPKK8vPzNWjQoDP6e9PS0pSWlnbK5cwAAAAAAAAAUNtc17hdvny5evXq5f961KhRkqSUlBTNnj1bAwcO1L59+zRu3Djt2bNHl19+uf71r3+d8gvLqio1NVWpqanKzc1Vo0aNzuhnAQAAAAAAAMCZcF3j9rrrritzw9/yPPbYY3rsscdqqSIAAAAAAAAAqF1BdY9bAAAAAAAAADgb0LgFAAAAAAAAAJehcXtcWlqa2rVrpy5dujhdCgAAAAAAAICzHI3b41JTU5WRkaFly5Y5XQoAAAAAAACAsxyNWwAAAAAAAABwGRq3AAAAAAAAAOAyNG4BAAAAAAAAwGVo3AIAAAAAAACAy9C4PS4tLU3t2rVTly5dnC4FAAAAAAAAwFmOxu1xqampysjI0LJly5wuBQAAAAAAAMBZjsYtAAAAAAAAALgMjVsAAAAAAAAAcBkatwAAAAAAAADgMjRuAQAAAAAAAMBlaNwCAAAAAAAAgMvQuD0uLS1N7dq1U5cuXZwuBQAAAAAAAMBZjsbtcampqcrIyNCyZcucLgUAAAAAAADAWY7GLQAAAAAAAAC4TJjTBbiNMUaSlJubW6M/92ju0Rr9ebblhtbs8dtGvvaQrV3BlC/Z2kW+9pCtXcGUL9naRb72kK1dwZQv2dpFvvaQrV3BlC/Znug5lvQgT8djAnnUWWTHjh06//zznS4DAAAAAAAAQB21fft2tWjR4rSPoXF7Ep/Pp127dqlhw4byeDxOl3Naubm5Ov/887V9+3ZFR0c7XU6dQ772kK1d5GsP2dpDtnaRrz1kaxf52kO2dpGvPWRrD9naRb72BFu2xhjl5eUpPj5eISGnv4stt0o4SUhISKXdbreJjo4OihMzWJGvPWRrF/naQ7b2kK1d5GsP2dpFvvaQrV3kaw/Z2kO2dpGvPcGUbaNGjQJ6HL+cDAAAAAAAAABchsYtAAAAAAAAALgMjdsgFhkZqfHjxysyMtLpUuok8rWHbO0iX3vI1h6ytYt87SFbu8jXHrK1i3ztIVt7yNYu8rWnLmfLLycDAAAAAAAAAJfhilsAAAAAAAAAcBkatwAAAAAAAADgMjRuAQAAAAAAAMBlaNwCAAAAAAAAgMvQuAXgSvzeRHu8Xq/TJQBV5vP5nC6hzjp69KgkMraN5zU7yBUAahfrrj3sxewK1nOXxm0dF6wnJs5ehYWFkqSCggJJnMM1ac+ePZKk0NBQmrc1LDMzU6tWrXK6jDpr8+bNeu2117Rv3z6nS6lzMjIylJiYqPT0dIWEsC2sabm5uTp48KD27Nkjj8fDC7IaVFxcLOnEPoFsa9bJ+y/2YwBKXj+wHtS8nJwcSVJISAiv0yzYvHmzDh48KI/H43Qp1cIOvQ7asWOHfvrpJ0kK2hPTrTZt2qTJkycrJSVFs2bN0i+//OJ0SXXK+vXr9cgjj6hPnz565JFHtHbtWs7hGrJ582bFx8frpptukkTztialp6fr0ksv1ZIlS5wupU5avXq1unXrpq1bt/o3tTRoasaqVat0zTXXaNu2bfryyy8lkW1NWrdunW655Rb97ne/U4cOHbRgwQKa4zXk559/1rBhwzRgwACNHDlSS5YsIdsatGHDBo0fP17333+/Zs2apfXr1/PGQw3Jzs7Wxo0bnS6jTsrKytKMGTM0atQoffnll/49A2rGxo0bNXr0aN1xxx2aNGmSsrKynC6pzti4caNatWqlhx9+WBKv02paenq62rRpo7lz5zpdSrWxw6ljNmzYoOTkZD366KNatGiR0+XUKWvXrlX37t2Vnp6uzMxMzZw5U88//7zy8/OdLq1OWLNmjbp3767IyEhdfPHFys7O1ksvvaSioiLe1a0Be/fuVYsWLbRp0ybdeOONko5tCngRdmbS09PVvXt3jRkzRo8++qjT5dQ5u3fvVv/+/ZWSkqIXX3xRbdu2lXTiinxUX3p6uq666iqNGDFCw4cP14wZM1RcXKyQkBDW3Bqwfv169ezZU1deeaV+//vfq1+/fnrssceUm5sriauVzsS6devUo0cPGWPUtGlTZWdn69prr9WsWbPYk9WAjIwMdevWTRkZGcrMzNSsWbN0/fXX66uvvmJ9OEM///yzunbtqrFjx2rdunVOl1OnrFmzRldffbX+8Y9/6PPPP9fjjz+ut956Sz6fj3O2BpS8Tjt48KB8Pp+++OILzZkzR8YY8q0BGRkZqlevntasWaNHHnlEEq/Takp6erp69OihMWPGaPDgwU6XU200buuQPXv2aMiQIWrdurWaNGmiiRMn6rvvvnO6rDph+/btGjhwoB544AG9//77Wrx4se6//34tWLBAhw8fdrq8oJeVlaV+/fpp6NChmjFjhqZPn66rrrpKHo9H4eHh+u233yRxJVh1GWPk8XjUoEEDTZgwQVlZWbr55pslHfs4zq5duxyuMDitX79eycnJGjZsmKZOnSpjjD755BNNmTJF7733HlfU1IDVq1erefPmevHFF+Xz+TRs2DDdcsst6tmzp/72t7/5782Kqlm1apWSk5M1cuRIjR07VsOHD1dhYaFefvllSXxa50wVFxdrypQpuvnmm/XCCy/o7rvv1oABA5SUlCSv16sdO3aQcTUVFBRo/Pjxuueee/SXv/xF06dP18svv6zWrVsrNTVVr7/+uiQa49Xl9Xo1ZcoU3XLLLfroo4/0/fffa8aMGerTp4/69Omj+fPnc+VtNe3atUsPPvigYmJi9Msvv+jll1/W2rVrnS6rTti6davuuOMO3X///Zo3b542btyofv366Y033lBhYSHr7RnasmWLbr31Vg0ZMkSzZ8/W3Llz1b59e2VnZ8vj8XBlaA2IjIxU48aNdfvtt2vJkiUaMmSIpGOv03799VeHqwteJa/VnnzySU2dOlU+n09ff/21Zs6cqcWLF2vnzp1OlxgwGrd1yI4dOxQaGqoXXnhBw4YNU2hoqCZNmkTz9gwZY7Rw4UJdcsklGjJkiH+z+sADD0g69g4ZzsyyZcvUo0cPDRs2zD+Wm5ur5cuXq1u3brrxxhv1v//7v1zpUU0ej0cdOnRQu3bt1LNnTz3//PPauHGj+vfvr8GDB2vmzJn+5jgC980338jr9erqq6+Wz+dTr169NHXqVM2YMUOTJ0/WTTfdxO0TztD+/fsVFhYmSbruuuuUmZmpjh07qlu3bkpJSdHUqVMl0aSpiry8PD333HMaPXq0Jk+eLEmKi4vT5ZdfroULFzpcXd1QXFysrKwstWrVyj+2aNEiLVy4UNdee60uu+wyTZgwgSvHq6GoqEiZmZlq3769pGNZn3feeerRo4d69+6t0aNH+5uLqDqfz6ft27fr/PPP949dfvnlmjJlih5++GHdeeed+uGHH7gtRTWsX79eDRs21Ntvv62hQ4dq5cqVeuWVV2jeniGv16t58+apU6dOevzxx/3n5ogRI1RYWKjMzEyHKwxuXq9XX375pX73u9/piSee8O+36tWrp7Vr1+q6667ToEGDtHjxYocrDW5JSUnq3LmzHnzwQQ0aNEhLlizRE088ocGDB+udd95RUVGR0yUGHZ/Ppw8++EBer1d33nmnJOn666/XqFGjNGbMGN13331KSUnR6tWrHa40QAZ1yqpVq/x/nj9/vunbt6+54YYbzDfffOMf93q9Zf6Lys2fP9/MmDHD/7XP5zN5eXkmISHBfPjhhw5WVjccPHjQrF+/3v/1Cy+8YKKioswrr7xiZsyYYR599FETERFhVq9e7WCVwe3o0aOmU6dO5vPPPzfGGPP111+bxo0bG4/H48+1qKjIyRKD0h/+8AcTGhpqLr74YnPHHXeYDRs2mOLiYrN06VIzYMAAk5ycbLKzs50uM2h98cUXJioqyrz99tumf//+ZbL861//ajwej1m0aJGDFQanDRs2+P9cshdYtGiR8Xg85qOPPnKqrDpl2LBhpmHDhiYtLc2kpqaaevXqmTlz5piVK1ead955x3g8HvPJJ584XWbQKSwsNLfeeqt54IEHzOHDh40xxvzyyy+mSZMmZsGCBeb+++83PXr0MPn5+Q5XGrxSU1PNVVddZQ4cOFBmfNu2beaOO+4wN910kz97BO7IkSNm8eLF/q/feustc8UVV5gHHnigzP7W5/M5UV5Qmz17tpk2bVqZsezsbNO4cWOzcOFCZ4qqQ7Zs2WLWrl3r/3rChAkmKirKTJ482YwbN84MHDjQtGrVymzZssXBKoNbfn6+6dChg1m5cqXJz883M2fONHFxcWVepxUXFztcZfDZs2ePefjhh01kZKS57LLLTP/+/c2qVatMYWGh+eSTT8wNN9xgBgwYYPLy8pwutVI0buuA0zVg//nPf5obb7zR9OnTx3z77bfGGGOGDx9ufvjhh9oqL6iVt0CW3lB17tzZzJs3z//122+/XeYFMU6vvHwLCgrMQw89ZBYsWOAf27Jli4mPjzd//etfa7O8oFZ6XSg5Z1NSUszcuXONMcbcfffdJjY21lxwwQXm9ttvd6LEoHXyeTtp0iSTlJRkVq5cWWb8ww8/NHFxcbzhUEWlz12v12v+4z/+w7Rs2dK0bdvW/Prrr6a4uNj/mE6dOpmXXnrJqVKDTmFhYbnjPp/P5Obmmttuu83ce++95rfffuPN3WoondnmzZtNamqqueeee8wVV1xh/uu//qvMY3v06GGGDBlS2yUGrdLZvvLKK+bKK68011xzjXn66adN/fr1/VnOmTPHXHTRRebQoUNOlRr03n//fdOpUyfz4osvmtzc3DLfmz17tomPjzfbtm1zqLrgdnJTdvbs2f7m7Zo1a4wxx5pi6enpTpRXJ5RkfOTIEZOYmGh+/PFH//fmzZvHuVtNJbkePXrU3HTTTf4LQYwx5rvvvjPNmjUr89oNgSssLDTFxcXmhhtuMN99950xxpiBAwea6Oho06ZNGzNs2DCHKwxue/fuNUOHDjXJyckmIyOjzPdefvllc+6555odO3Y4VF3gwpy+4hfVd+jQITVu3FghISHy+XxlPrZkjt/Tsm/fvvJ4PHr11Vc1efJkRUVFad68eUpJSXGwcvcryTY0NFTFxcX+j+pKZe/9V/qj+88++6z+/Oc/66effqr1eoNN6Xy9Xq9CQ0MlHTtvIyIiNGPGjDLntcfj0XnnnVfmo3soX3nrQsk52759e61atUofffSRFi5cqH/+85/av3+/7r33Xg0cOFDvv/++w9W7W0Xn7bPPPqubb75ZiYmJkuTPPT4+Xk2bNtU555zjZNlBo7xzNyQkRP3799eGDRv0888/a/PmzerQoYOkYzk3aNBAMTExDlfufiXZhoeHn7JfkI49rzVs2FC9e/fW008/rXHjxql169b+vQROr/S5W7I2tGrVSq+99pqOHj2qnj176txzz5V07GOnxhhFRkaqZcuWDlfufqWzLdmPDR8+XDExMfr666+1ceNG/elPf9Lw4cMlHbtPYHR0tMNVB49du3ZpxYoVKiws1AUXXKDk5GTddddd+ve//6033nhD9erV08CBAxUbGytJ6tKli8455xzl5eU5XLn7lc72wgsvVOfOneXxePy/zCkkJMT/euzVV1/VtGnTlJubq48++sj/sV6Ur7zzVlKZvVnJHqLkOeyZZ57R//zP/+jHH390rO5gUdG56/V6FRkZqc8++6zMXi02NlbNmzf3rxOoWOlsL7roIl1xxRUKDw+XJHXu3FmbNm3SzJkz9e233+qzzz7TmjVrNHXqVIWFhenFF190uHr3K29taNq0qZ577jlt3bpVF198saQTa0Xr1q0VExOjiIgIhysPgINNY5yBjIwM07JlSzN27Fj/2MlXx5R+V/ezzz4zMTExpnHjxmVup4BTBZKtMcfeyW3VqpWZO3eumTp1qomKijLLly+vzVKDUlXPXWOMeeaZZ0zHjh3N7t27a6XGYFVZtrNmzTIej8e0adPG/PTTT8aYY++cz58/32RmZtZ6vcGkvGwr+8jSE088Ybp3724OHjxoubrgV16+pW/d8be//c1ceumlJjo62nz66afm//7v/8xzzz1nWrRowUfzKlGVNdfn85nu3bube++9t8Krc1FWIGvDAw88YG6++WaTlZVlcnJyzPjx401CQgLrbiXKy7agoKDMY04+T4cMGWJuuOEG89tvv9VKjcFs9erVplWrVqZr166mSZMmJjk52cyZM8f//fvvv98kJSWZESNGmE2bNpl9+/aZMWPGmEsuucTk5OQ4WLn7lZftybdWK70Ov/nmmyY8PNw0atTolE/voKxAsjXm2G3YmjZtar7//nszceJEExUVZZYtW+ZAxcElkHxPfp321FNPmS5duph9+/bVZqlBp7Js//CHPxiPx2Natmzpf5128OBBM336dLN582anyg4a5eX7wQcf+L9f3m1ohg8fbq6//nrz66+/1map1ULjNght27bNXH755aZNmzbmsssuMxMmTPB/r7wXY16v14wYMcI0bNjQ/zEclK8q2Xq9XnP11Veb9u3bm3POOYfNQACqkq8xxqxfv96MHDnSxMTE8IZDJU6XbekmwpNPPskbDFUUaLYlfv75ZzNixAgTExPDxx0DcLp8SzdpvvvuO5OSkmIaNGhg2rVrZzp06GBWrFjhRMlBo6prrjHGPPTQQ6Zbt25BsYl1WqD5/v3vfzc9e/Y0ERER5sorrzQXXHAB524lTpdt6Td1Sl6Iff/99yY1NdVER0ez7gZg06ZNpkWLFmbMmDHm0KFDZvny5SYlJcUMHjzYHD161P+4CRMmmGuuucZ4PB7TuXNnc+6553LuVuJ02RYXF5dpHvh8PlNcXGyGDRtmYmJiytxHFKeqSrZ5eXmmU6dO5rrrruPimgBVJV9jjNm6dav5/e9/z343AKfLtuQ5raioyAwdOtQsXbrUGHPi+Y1bV1WuOufu6NGjTWxsbNDc0o7GbZDx+Xzm+eefNzfddJNZsGCBGT9+vElMTDxtI2H16tUmISGBJ6xKVDXboqIi0717d56sAlTVfNeuXet/B5d8Ty+QbI8cOeJghcGrquft6tWrzciRI01SUhJvNgQgkHxPvsIuMzPT7Nmzx+zfv7+2yw0q1dkvGGPM4cOHubIjAIHkW/pq0DVr1pg333zTfPzxx2br1q1OlBw0qnruer1eM2/ePHPVVVex7gagoKDAjBo1ytx1111l1tc333zTxMXFnXI1bU5Ojvniiy/MokWLzPbt22u73KBS1WyNMWbp0qXG4/FwAUglqprtoUOHzIUXXmhiY2NZFwJQ1XyXLVtmhg4dajp27Ei+lajOuoDAVTXfH3/80QwePNgkJiYG1SccuMdtkPF4PLrvvvvUvHlzXX/99erYsaMkac6cOTLGaPz48QoNDS1zD7ukpCRlZGRwz69KVDXbsLAwPfjgg7rmmmvUunVrh6t3v6rm2759e91zzz0aOXKkmjVr5nD17hZItlFRUWXu/YXAVPW8TUpK0n333acxY8b472mJigWSb0RERJl7jV988cXcdzUA1dkvFBcXKzo6mv1CAALJNzw8XEVFRQoPD9dll12myy67zOGqg0NVz92QkBDddttt6tWrlxo2bOhw9e7n8/nUokULtW3bVhEREf57WXfv3l0NGjRQUVGR/3EhISGKi4vTjTfe6HDVwSHQbEvr0qWLDhw4oMaNG9d+wUGkqtk2atRIDz30kO644w7/7yBAxaqab3Jyso4cOaLnnntO5513nkNVB4fqrAvl/T4ClK+q+Xbt2lV5eXn64x//qISEBIeqrgYHmsWoYbt27fJfjfCHP/zBP/7pp5/6r/Yo754eqFxF2X788ccOVlV3kK89p1sX+MjNmeG8tYtz1x6ytauifOfOnVvpPbFxemRbs0rfG7zkNcLu3btN69atzbZt2/zf47YIVVedbHmdFphAs+Xq5eoJNF8+xVt1rLl2nQ3nLlfcBoHdu3dr+/btOnjwoHr37u2/Ys7n88nj8ei8887Tww8/LEl67733ZIzR4cOHNW3aNO3YsUPx8fFcnVSBmsgWFSNfe8jWHrK1i3ztIVu7yNcesrWrJN8DBw7ohhtuUMuWLSWpzCdxDh8+rIMHD/r/n3Hjxum1115TZmamYmNjeS1RAbK1h2ztIl97yNauszJfx1rGCEh6erq58MILzSWXXGIaNWpkEhMTzbvvvuu/t5/X6/W/q7Br1y4zbtw44/F4TExMTFC/o1AbyNYu8rWHbO0hW7vI1x6ytYt87SFbuyrLtyTbDRs2mKZNm5oDBw6YiRMnmnr16pFvJcjWHrK1i3ztIVu7ztZ8ady62N69e01iYqJ55plnzObNm83OnTvNwIEDTdu2bc348ePN3r17jTFlP15z7733mujoaLNu3Tqnyg4KZGsX+dpDtvaQrV3kaw/Z2kW+9pCtXYHma4wx2dnZplOnTmbgwIEmIiIiqF/g1gaytYds7SJfe8jWrrM5Xxq3LrZu3Tpz0UUXnXKSPfnkkyYpKcm88MILJj8/3z8+a9Ys07hxY+6NEgCytYt87SFbe8jWLvK1h2ztIl97yNauquSbkZFhPB6PqVevXlD9pm2nkK09ZGsX+dpDtnadzfnyq+pcrKioSMXFxfrtt98kSUeOHJEkTZ06Vb169dJf/vIXbdq0yf/4W265RStWrFCnTp0cqTeYkK1d5GsP2dpDtnaRrz1kaxf52kO2dlUl35iYGA0dOlQrVqzQ5Zdf7lTJQYNs7SFbu8jXHrK162zO12OMMU4XgYp17dpVDRo00Ndffy1JKigoUGRkpCSpS5cuat26tebMmVPmRswIDNnaRb72kK09ZGsX+dpDtnaRrz1ka1eg+UrS0aNHFRUV5VitwYZs7SFbu8jXHrK162zNlytuXSQ/P195eXnKzc31j73++utat26d/vM//1OSFBkZqeLiYknStddeq/z8fEliI1sJsrWLfO0hW3vI1i7ytYds7SJfe8jWrjPJV1KdeYFrA9naQ7Z2ka89ZGsX+Z5A49YlMjIy1L9/f/Xs2VNt27bVO++8I0lq27atpk2bpi+//FIDBgxQUVGRQkKOTdvevXtVv359FRcXiwunK0a2dpGvPWRrD9naRb72kK1d5GsP2dpFvvaQrT1kaxf52kO2dpFvWWFOF4BjJ+W1116r++67T8nJyfrpp580aNAgtWvXTp06ddJtt92m+vXra+jQoerQoYMSExMVERGh+fPn64cfflBYGNNYEbK1i3ztIVt7yNYu8rWHbO0iX3vI1i7ytYds7SFbu8jXHrK1i3xPxT1uHXbgwAHdfffdSkxM1LRp0/zjvXr1UlJSkl599VX/WF5eniZNmqQDBw4oKipKjz76qNq1a+dE2UGBbO0iX3vI1h6ytYt87SFbu8jXHrK1i3ztIVt7yNYu8rWHbO0i3/LVvVZ0kCkqKtKhQ4d05513SpJ8Pp9CQkLUsmVLHThwQJJkjJExRg0bNtTzzz9f5nGoGNnaRb72kK09ZGsX+dpDtnaRrz1kaxf52kO29pCtXeRrD9naRb7lq7tHFiSaN2+uv//977rmmmskSV6vV5KUkJDgP/E8Ho9CQkLK3JTZ4/HUfrFBhmztIl97yNYesrWLfO0hW7vI1x6ytYt87SFbe8jWLvK1h2ztIt/y0bh1gTZt2kg69i5BeHi4pGPvIuzdu9f/mClTpmjWrFn+35hX10/MmkK2dpGvPWRrD9naRb72kK1d5GsP2dpFvvaQrT1kaxf52kO2dpHvqbhVgouEhITIGOM/6UreURg3bpwmTZqklStX1skbLdcGsrWLfO0hW3vI1i7ytYds7SJfe8jWLvK1h2ztIVu7yNcesrWLfE/giluXKfldcWFhYTr//PP13//933rhhRe0fPlydezY0eHqghvZ2kW+9pCtPWRrF/naQ7Z2ka89ZGsX+dpDtvaQrV3kaw/Z2kW+x5wd7ekgUvIuQnh4uN544w1FR0dr0aJFuuKKKxyuLPiRrV3kaw/Z2kO2dpGvPWRrF/naQ7Z2ka89ZGsP2dpFvvaQrV3kewxX3LpUnz59JEmLFy9WcnKyw9XULWRrF/naQ7b2kK1d5GsP2dpFvvaQrV3kaw/Z2kO2dpGvPWRr19mer8eUXHsM18nPz1f9+vWdLqNOIlu7yNcesrWHbO0iX3vI1i7ytYds7SJfe8jWHrK1i3ztIVu7zuZ8adwCAAAAAAAAgMtwqwQAAAAAAAAAcBkatwAAAAAAAADgMjRuAQAAAAAAAMBlaNwCAAAAAAAAgMvQuAUAAAAAAAAAl6FxCwAAAAAAAAAuQ+MWAAAAAAAAAFyGxi0AAADOan379lVMTIyys7NP+d7hw4d13nnnqVu3bvL5fA5UBwAAgLMVjVsAAACc1aZPn67CwkKNHDnylO8988wzysnJ0cyZMxUSwtYZAAAAtYfdJwAAAM5qLVu21Pjx4zVnzhwtWLDAP75s2TLNmDFDo0aNUseOHa3WcPToUa7oBQAAQBk0bgEAAHDWGzVqlDp06KChQ4fq6NGj8nq9GjJkiC688EKNHz9e69ev15133qnY2FhFRUUpOTlZ//jHP8r8jAMHDmj06NFKSkpSgwYNFB0drb59+yo9Pb3M4/7973/L4/Hovffe03PPPaeEhASdc845ys3Nrc1DBgAAgMuFOV0AAAAA4LSwsDDNnDlT3bt318SJE9WsWTOtWLFC//rXv5SVlaUePXooISFBTz31lOrXr68PPvhAt99+uz7++GP169dPkrRlyxZ9+umnGjBggFq2bKns7Gy9/vrr6tmzpzIyMhQfH1/m75w4caIiIiI0evRoFRQUKCIiwolDBwAAgEt5jDHG6SIAAAAAN3j88cf1+uuvKzIyUrfeeqveffdd9e7dW3v37tWyZcsUGRkpSTLG6Oqrr9a+ffu0ceNGSVJBQYHCw8PL3Av3l19+UWJiop599lmNHTtW0rErbnv16qVWrVpp7dq1qlevXu0fKAAAAFyPWyUAAAAAx/3pT39SXFycQkJC9PLLL+vAgQP6+uuvdddddykvL085OTnKycnR/v371adPH2VmZmrnzp2SpMjISH/T1uv1av/+/WrQoIEuvfRSrVix4pS/KyUlhaYtAAAAKsStEgAAAIDjoqOjdemllyonJ0fNmzfX0qVLZYzR2LFj/VfMnmzv3r1KSEiQz+fTtGnTNH36dGVlZcnr9fofExcXd8r/17JlS2vHAQAAgOBH4xYAAACogM/nkySNHj1affr0KfcxrVu3liRNnjxZY8eO1eDBgzVx4kTFxsYqJCREI0aM8P+c0rjaFgAAAKdD4xYAAACoQKtWrSRJ4eHh6t2792kf+9FHH6lXr1568803y4wfOnRITZo0sVYjAAAA6ibucQsAAABUoFmzZrruuuv0+uuva/fu3ad8f9++ff4/h4aG6uTf+/vhhx/674ELAAAAVAVX3AIAAACnkZaWpquvvlpJSUl66KGH1KpVK2VnZ2vJkiXasWOH0tPTJUm33HKL/vjHP2rQoEHq3r271qxZo3feecd/1S4AAABQFTRuAQAAgNNo166dli9frgkTJmj27Nnav3+/mjVrpk6dOmncuHH+xz3zzDPKz8/Xu+++q/fff19XXHGF5s+fr6eeesrB6gEAABCsPObkz3MBAAAAAAAAABzFPW4BAAAAAAAAwGVo3AIAAAAAAACAy9C4BQAAAAAAAACXoXELAAAAAAAAAC5D4xYAAAAAAAAAXIbGLQAAAAAAAAC4DI1bAAAAAAAAAHAZGrcAAAAAAAAA4DI0bgEAAAAAAADAZWjcAgAAAAAAAIDL0LgFAAAAAAAAAJehcQsAAAAAAAAALkPjFgAAAAAAAABc5v8Bwu1CG3PkRtcAAAAASUVORK5CYII=",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Group by asset_id to find the number of unique years each asset appears in\n",
+ "asset_year_counts = temporal_df.groupby('asset_id')['year'].nunique()\n",
+ "\n",
+ "# --- Assets with observations in a single year ---\n",
+ "single_year_asset_ids = asset_year_counts[asset_year_counts == 1].index\n",
+ "single_year_assets_df = temporal_df[temporal_df['asset_id'].isin(single_year_asset_ids)]\n",
+ "# Count assets per year for single-year assets\n",
+ "assets_per_single_year = single_year_assets_df.drop_duplicates(subset='asset_id')['year'].value_counts().sort_index()\n",
+ "\n",
+ "# --- Assets with observations in multiple years ---\n",
+ "multi_year_asset_ids = asset_year_counts[asset_year_counts > 1].index\n",
+ "multi_year_assets_df = temporal_df[temporal_df['asset_id'].isin(multi_year_asset_ids)]\n",
+ "year_combinations = multi_year_assets_df.groupby('asset_id')['year'].unique().apply(lambda year_list: tuple(sorted(year_list))).value_counts()\n",
+ "\n",
+ "# --- Print Results ---\n",
+ "print(\"--- Asset Distribution Analysis ---\")\n",
+ "print(\"\\n--- Assets with Observations in a Single Year ---\")\n",
+ "print(assets_per_single_year)\n",
+ "print(f\"\\nTotal assets with observations in only one year: {len(single_year_asset_ids):,}\")\n",
+ "\n",
+ "print(\"\\n--- Assets with Observations in Multiple Years ---\")\n",
+ "print(f\"Total assets with observations in multiple years: {len(multi_year_asset_ids):,}\")\n",
+ "if not year_combinations.empty:\n",
+ " print(\"Year combinations for multi-year assets:\")\n",
+ " print(year_combinations)\n",
+ "\n",
+ "# --- Create Bar Chart for Single-Year Assets ---\n",
+ "plt.figure(figsize=(14, 7))\n",
+ "assets_per_single_year.plot(kind='bar', color='lightgreen')\n",
+ "plt.title('Number of Assets Observed in a Single Year (Grouped by Year)', fontsize=16)\n",
+ "plt.xlabel('Year', fontsize=12)\n",
+ "plt.ylabel('Number of Assets (Log Scale)', fontsize=12)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.yscale('log')\n",
+ "plt.grid(axis='y', linestyle='--', alpha=0.7)\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "69678d82",
+ "metadata": {
+ "id": "69678d82"
+ },
+ "source": [
+ "## Final Task\n",
+ "\n",
+ "Provide a summary of the temporal analysis, highlighting the key trends discovered from the charts, such as which years have the most data and might be skewing the overall results.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e0d6bb43",
+ "metadata": {
+ "id": "e0d6bb43"
+ },
+ "source": [
+ "## Summary:\n",
+ "\n",
+ "### Q&A\n",
+ "**1. How many observations are there for each year?**\n",
+ "The number of observations per year is as follows:\n",
+ "* **2009:** 2\n",
+ "* **2011:** 143\n",
+ "* **2012:** 17\n",
+ "* **2013:** 6\n",
+ "* **2014:** 61\n",
+ "* **2015:** 12,219\n",
+ "* **2016:** 21,008\n",
+ "* **2017:** 13,976\n",
+ "* **2018:** 16,789\n",
+ "* **2019:** 60,275\n",
+ "* **2020:** 17,676\n",
+ "* **2021:** 50,835\n",
+ "* **2022:** 139,702\n",
+ "* **2023:** 37,324\n",
+ "* **2024:** 278,385\n",
+ "* **2025:** 213,198\n",
+ "\n",
+ "**2. How many assets have observations from only one year?**\n",
+ "A total of 344,883 assets have observations recorded in only a single year. The breakdown by year is:\n",
+ "* **2009:** 2\n",
+ "* **2011:** 112\n",
+ "* **2012:** 14\n",
+ "* **2013:** 4\n",
+ "* **2014:** 41\n",
+ "* **2015:** 5,534\n",
+ "* **2016:** 8,750\n",
+ "* **2017:** 5,931\n",
+ "* **2018:** 7,748\n",
+ "* **2019:** 29,394\n",
+ "* **2020:** 9,815\n",
+ "* **2021:** 22,771\n",
+ "* **2022:** 59,642\n",
+ "* **2023:** 14,857\n",
+ "* **2024:** 101,641\n",
+ "* **2025:** 78,627\n",
+ "\n",
+ "**3. How many assets have observations from multiple years?**\n",
+ "There are **zero** assets with observations that span across multiple years.\n",
+ "\n",
+ "**4. Are specific years skewing the overall results?**\n",
+ "Yes, the data is heavily skewed towards recent years. The years 2024, 2025, and 2022 collectively account for the majority of both total observations and unique assets.\n",
+ "\n",
+ "### Data Analysis Key Findings\n",
+ "* A temporal analysis based on `detection_time` confirms that the volume of data is not evenly distributed over time. The number of both observations and unique assets increases dramatically in recent years.\n",
+ "* The three most recent years in the dataset account for a substantial majority of the data, with 2024 having the most observations (278,385) and unique assets (101,641).\n",
+ "* A critical finding is that **100%** of the observed assets in this dataset have their observations confined to a single calendar year. No assets were observed across multiple years.\n",
+ "\n",
+ "### Insights or Next Steps\n",
+ "* The fact that no assets are observed across multiple years is a fundamental characteristic of this dataset. This suggests that either the asset lifecycle is typically less than a year or the data collection methodology tracks assets on a yearly basis. Any longitudinal study must account for this.\n",
+ "* Given the significant skew towards recent years, any aggregate analysis of the entire dataset will be disproportionately influenced by data from 2022, 2024, and 2025. It is recommended to perform year-over-year or stratified analysis to avoid drawing misleading conclusions.\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "name": "Understand_your_dataset.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/street_view_insights/notebooks/Utility_pole_analysis/README.md b/street_view_insights/notebooks/Utility_pole_analysis/README.md
new file mode 100644
index 0000000..9e22c59
--- /dev/null
+++ b/street_view_insights/notebooks/Utility_pole_analysis/README.md
@@ -0,0 +1,34 @@
+# Utility Pole analysis with Gemini 2.5 Flash
+
+This notebook demonstrates how to classify images from GCS URIs using the Gemini 2.5 Flash model via Google Cloud's Vertex AI.
+
+## Prerequisites
+
+- A Google Cloud Platform (GCP) project.
+- A BigQuery table containing GCS URIs of the images to be classified.
+- The following Python libraries installed:
+ - `google-cloud-bigquery`
+ - `google-cloud-aiplatform`
+
+You can install them by running:
+```bash
+pip install --upgrade google-cloud-bigquery google-cloud-aiplatform
+```
+
+## Configuration
+
+Before running the notebook, you need to configure your GCP `PROJECT_ID` and `REGION` in the "Configuration" section of the notebook.
+
+## How to Use
+
+1. **Set up your environment**: Make sure you have the necessary libraries installed and have authenticated with your GCP account.
+2. **Configure the notebook**: Open the notebook and replace the placeholder values for `PROJECT_ID` and `REGION` with your actual GCP project ID and region.
+3. **Run the notebook**: Execute the cells in the notebook sequentially.
+
+## What the Notebook Does
+
+1. **Initializes Vertex AI**: It initializes the Vertex AI SDK with your project ID and region.
+2. **Fetches Image URIs**: It queries a BigQuery table to get the GCS URIs of the images you want to classify. The SQL query is defined in the `BIGQUERY_SQL_QUERY` variable.
+3. **Defines Classification Function**: It defines a function `classify_image_with_gemini` that takes a GCS URI and a prompt as input, and then uses the Gemini 2.5 Flash model to generate a description of the image.
+4. **Classifies Images**: It loops through the fetched GCS URIs and passes them to the classification function along with a detailed prompt. The prompt instructs the model to analyze the image of a utility pole, count specific items, assess its condition, and return the findings in a JSON format.
+5. **Prints Results**: The classification result for each image is printed to the console.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Utility_pole_analysis/utility_pole_basic_analysis.ipynb b/street_view_insights/notebooks/Utility_pole_analysis/utility_pole_basic_analysis.ipynb
new file mode 100644
index 0000000..2b74658
--- /dev/null
+++ b/street_view_insights/notebooks/Utility_pole_analysis/utility_pole_basic_analysis.ipynb
@@ -0,0 +1,307 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "946de5e8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "61d1bfb1"
+ },
+ "source": [
+ "# Image Classification Service with Gemini 2.5 Flash\n",
+ "\n",
+ "This notebook demonstrates how to classify images from Imagery Insights using the Gemini 2.5 Flash model via Vertex AI."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ab074d90"
+ },
+ "source": [
+ "## Install Required Libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "23f28877"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install --upgrade google-cloud-bigquery google-genai"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "de710bd6"
+ },
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "**Important**: Replace the placeholder values below with your actual GCP Project ID and Region."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "eefe0d49"
+ },
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = '' # @param {type:\"string\"}\n",
+ "REGION = '' # @param {type:\"string\"}\n",
+ "\n",
+ "# BigQuery Configuration\n",
+ "BIGQUERY_DATASET_ID = '' # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE_ID = 'latest_observations' # @param {type:\"string\"}\n",
+ "QUERY_LIMIT = 10 # @param {type:\"integer\"}\n",
+ "ASSET_TYPE = \"ASSET_CLASS_UTILITY_POLE\" # @param {type:\"string\"}\n",
+ "MODEL = \"gemini-2.5-pro\" # @param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "64efff2f"
+ },
+ "source": [
+ "## Imports and Vertex AI Initialization"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "84c39003",
+ "metadata": {
+ "id": "70c48cc9"
+ },
+ "outputs": [],
+ "source": [
+ "import vertexai\n",
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "from google.genai.types import Content, Part\n",
+ "\n",
+ "# Initialize Vertex AI SDK\n",
+ "vertexai.init(project=PROJECT_ID, location=REGION)\n",
+ "client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9cc77df9",
+ "metadata": {
+ "id": "ce2a0696"
+ },
+ "source": [
+ "## Fetch Image URIs from BigQuery\n",
+ "\n",
+ "Next, we'll query a BigQuery table to get the GCS URIs of the images we want to classify."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "663508ca",
+ "metadata": {
+ "id": "df6a38c6"
+ },
+ "outputs": [],
+ "source": [
+ "BIGQUERY_SQL_QUERY = \"\"\"\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " `sarthaks-lab.imagery_insights___preview___us.latest_observations`\n",
+ " WHERE asset_type = \"ASSET_CLASS_UTILITY_POLE\"\n",
+ "\n",
+ "LIMIT 10;\n",
+ "\"\"\"\n",
+ "\n",
+ "# Execute BigQuery Query\n",
+ "try:\n",
+ " bigquery_client = bigquery.Client(project=PROJECT_ID)\n",
+ " query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)\n",
+ " query_response_data = [dict(row) for row in query_job]\n",
+ " gcs_uris = [item.get(\"gcs_uri\") for item in query_response_data if item.get(\"gcs_uri\")]\n",
+ "\n",
+ " print(f\"Successfully fetched {len(gcs_uris)} GCS URIs:\")\n",
+ " for uri in gcs_uris:\n",
+ " print(uri)\n",
+ "except Exception as e:\n",
+ " print(f\"An error occurred while querying BigQuery: {e}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "76607617",
+ "metadata": {
+ "id": "b05f2cff"
+ },
+ "source": [
+ "## Define Image Classification Function\n",
+ "\n",
+ "This function takes a GCS URI and a prompt, then uses the Gemini 2.5 Flash model to generate a description of the image."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b2fdd52d",
+ "metadata": {
+ "id": "126856a8"
+ },
+ "outputs": [],
+ "source": [
+ "def classify_image_with_gemini(gcs_uri: str, prompt: str) -> str:\n",
+ " \"\"\"\n",
+ " Classifies an image using the Gemini 2.5 Flash model by directly passing its GCS URI.\n",
+ " \"\"\"\n",
+ " MODEL = \"gemini-2.5-flash\" # @param {type:\"string\"}\n",
+ "\n",
+ " try:\n",
+ " contents = [\n",
+ " prompt,\n",
+ " Part(file_data={'file_uri': gcs_uri, 'mime_type': 'image/jpeg'})\n",
+ " ]\n",
+ " response = client.models.generate_content(model=MODEL, contents=contents)\n",
+ " return response.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error classifying image from URI {gcs_uri}: {e}\")\n",
+ " return \"Classification failed.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7f033b76",
+ "metadata": {
+ "id": "1ae4daad"
+ },
+ "source": [
+ "## Classify Images\n",
+ "\n",
+ "Finally, we loop through the GCS URIs we fetched and pass them to our classification function along with a prompt."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e355b42d",
+ "metadata": {
+ "id": "85b3e0de"
+ },
+ "outputs": [],
+ "source": [
+ "prompt = \"\"\"You will be provided with a photo of a utility pole:\n",
+ "{photo_of_utility_pole}\n",
+ "\n",
+ "Instructions:\n",
+ "\n",
+ "1. Analyze the provided image. If the image does not clearly show a utility pole, return: {\\\"error\\\": \\\"No utility pole detected in the image.\\\"}\n",
+ "2. Detect and count the following:\n",
+ " * Transformers\n",
+ " * Power lines coming from the pole\n",
+ " * Street lamps attached to the pole\n",
+ " * Telephone or junction boxes\n",
+ "3. Assess the overall condition of the pole. Look for visible damage, bird nests, or other issues. If the pole appears to be in good condition, note \\\"OK\\\".\n",
+ "4. Note the material with which the pole is made\n",
+ "5. Determine primary type of pole: Report this in the type field:\n",
+ " * Street light\n",
+ " * High tension power transmission\n",
+ " * electricity pole\n",
+ " * other\n",
+ "6. Provide your findings in the following JSON format:\n",
+ "\n",
+ "```json\n",
+ "{\n",
+ " \\\"pole_condition\\\": \\\"OK/Damaged/Other Issues\\\",\n",
+ " \\\"type\\\": ,\n",
+ " \\\"material\\\":\n",
+ " \\\"transformers\\\": ,\n",
+ " \\\"power_lines\\\": ,\n",
+ " \\\"street_lamps\\\": ,\n",
+ " \\\"junction_boxes\\\": ,\n",
+ " \\\"additional_notes\\\": \\\"\\\"\n",
+ "}\n",
+ "```\n",
+ "\n",
+ "Example:\n",
+ "\n",
+ "Let's say the image shows a utility pole in good condition with one transformer, three power lines, one street lamp, and no junction boxes. The JSON output would be:\n",
+ "\n",
+ "```json\n",
+ "{\n",
+ " \\\"pole_condition\\\": \\\"OK\\\",\n",
+ " \\\"type\\\": electricity pole,\n",
+ " \\\"material\\\": wood,\n",
+ " \\\"transformers\\\": 1,\n",
+ " \\\"power_lines\\\": 3,\n",
+ " \\\"street_lamps\\\": 1,\n",
+ " \\\"junction_boxes\\\": 0,\n",
+ " \\\"additional_notes\\\": \\\"None\\\"\n",
+ "}\n",
+ "```\n",
+ "\"\"\"\n",
+ "\n",
+ "if 'gcs_uris' in locals() and gcs_uris:\n",
+ " for uri in gcs_uris:\n",
+ " print(f\"--- Classifying {uri} ---\")\n",
+ " classification = classify_image_with_gemini(uri, prompt)\n",
+ " print(f\"Result: {classification}\\n\")\n",
+ "else:\n",
+ " print(\"No GCS URIs were found to classify.\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/street_view_insights/notebooks/Utility_pole_measure_height/README.md b/street_view_insights/notebooks/Utility_pole_measure_height/README.md
new file mode 100644
index 0000000..bc53e45
--- /dev/null
+++ b/street_view_insights/notebooks/Utility_pole_measure_height/README.md
@@ -0,0 +1,36 @@
+# Measure Height of Assets with Gemini 2.5 Flash
+
+This notebook demonstrates how to measure the height of assets, such as utility poles, using the Gemini 2.5 Flash model.
+
+## Notebook Description
+
+The primary goal of this notebook is to leverage the advanced multimodal capabilities of Gemini 2.5 Flash to analyze images of assets and estimate their height. It employs a sophisticated prompting strategy to guide the model in its analysis, which involves:
+
+1. **Image Input:** You'll provide images of assets as input.
+2. **Detailed Prompting:** The notebook uses a detailed prompt that instructs the model to follow a specific analysis flow, leveraging geometrical principles, image understanding, and known reference values.
+3. **Gemini 2.5 Flash Integration:** The Gemini 2.5 Flash model will process the input images and the detailed prompt to estimate the height of the asset.
+4. **Output:** The notebook will output the estimated height, a confidence score, and a detailed reasoning for the estimation.
+
+## What the Notebook Does
+
+The notebook performs the following steps:
+
+1. **Fetches Image URIs from BigQuery:** It queries a BigQuery table to get the GCS URIs of the images to be analyzed.
+2. **Groups Images by Asset:** It groups the image GCS URIs by their corresponding `asset_id`.
+3. **Estimates Asset Height:** It uses the `estimate_asset_height` function to estimate the height of each asset. This function sends the images and a detailed prompt to the Gemini 2.5 Flash model, which then returns an estimated height, a confidence score, and a detailed reasoning for the estimation.
+4. **Generates a DataFrame:** It compiles the results (asset ID, number of observations, measured height, and confidence score) into a pandas DataFrame.
+
+## Prerequisites for First-Time Users
+
+To successfully run this notebook, please ensure the following:
+
+1. **Google Cloud Project:** You need an active Google Cloud project.
+2. **Enable APIs:**
+ * **Vertex AI API:** This is essential for accessing and using Gemini models. You can enable it through the Google Cloud Console under "APIs & Services" > "Library".
+3. **Authentication:**
+ * **Google Cloud Authentication:** Ensure your Colab environment is authenticated to your Google Cloud project.
+4. **Input Data:**
+ * **Asset Images:** Prepare the images of the assets you want to measure. These should be uploaded to your Colab environment or accessible from Google Cloud Storage.
+5. **Required Libraries:** The notebook will likely import several libraries. Ensure they are installed.
+
+By following these steps, you should be well-equipped to run this notebook and explore the capabilities of Gemini 2.5 Flash for asset height estimation.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/Utility_pole_measure_height/Utility_pole_measure_height.ipynb b/street_view_insights/notebooks/Utility_pole_measure_height/Utility_pole_measure_height.ipynb
new file mode 100644
index 0000000..389e880
--- /dev/null
+++ b/street_view_insights/notebooks/Utility_pole_measure_height/Utility_pole_measure_height.ipynb
@@ -0,0 +1,1060 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "SzxxrgIG0MsVHPbzYjACR3QC",
+ "metadata": {
+ "id": "SzxxrgIG0MsVHPbzYjACR3QC",
+ "tags": []
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
\n"
+ ],
+ "text/plain": [
+ " asset_id num_observations \\\n",
+ "0 t1:000a9efecdc1a18d6cb19d45715c5410:ffff01ee 2 \n",
+ "1 t1:000e68b2cce6da8c9fc30d2471192b7a:ffff01ee 2 \n",
+ "2 t1:000c345da88196b1502312ade92f5ca8:ffff01ee 8 \n",
+ "3 t1:000bd5b990190de1dd5724294f6cef38:ffff01ee 4 \n",
+ "4 t1:00008b06bd849d50b01f9cfa65361b0d:ffff01ee 2 \n",
+ "5 t1:00078fcd5eab571c585eaa3b6e13b6d9:ffff01ee 9 \n",
+ "6 t1:000a16e094346b97dbbcaae27575671e:ffff01ee 2 \n",
+ "7 t1:0006b4ab2f44e8b37029ebd21d7fcda2:ffff01ee 5 \n",
+ "8 t1:000d5e714eca02cb526f08a01e985156:ffff01ee 3 \n",
+ "9 t1:000abf641ab75e3c10a87d7a6ee057e0:ffff01ee 2 \n",
+ "\n",
+ " estimated_height_meters confidence_score \\\n",
+ "0 9.5 Medium \n",
+ "1 10.7 Medium \n",
+ "2 10.0 High \n",
+ "3 10.0 High \n",
+ "4 8.0 High \n",
+ "5 12.3 High \n",
+ "6 8.3 High \n",
+ "7 11.2 High \n",
+ "8 10.0 Medium \n",
+ "9 6.5 Medium \n",
+ "\n",
+ " reasoning_notes \n",
+ "0 {'flow_id_followed': 'multiple_distinct_refere... \n",
+ "1 {'flow_id_followed': 'multiple_distinct_refere... \n",
+ "2 {'flow_id_followed': 'single_reference_single_... \n",
+ "3 {'flow_id_followed': 'multiple_distinct_refere... \n",
+ "4 {'flow_id_followed': 'multi_image_correlated_r... \n",
+ "5 {'flow_id_followed': 'multi_image_correlated_r... \n",
+ "6 {'flow_id_followed': 'multiple_distinct_refere... \n",
+ "7 {'flow_id_followed': 'multi_image_correlated_r... \n",
+ "8 {'flow_id_followed': 'multi_image_correlated_r... \n",
+ "9 {'flow_id_followed': 'multiple_distinct_refere... "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import warnings\n",
+ "from IPython.display import display\n",
+ "\n",
+ "# Suppress the specific deprecation warning from the Vertex AI SDK\n",
+ "warnings.filterwarnings(\"ignore\", category=UserWarning, message=\"This feature is deprecated as of June 24, 2025\")\n",
+ "\n",
+ "# List to store the results\n",
+ "results_data = []\n",
+ "\n",
+ "print(\"--- Processing Assets and Estimating Height ---\\n\")\n",
+ "\n",
+ "if 'assets' in locals() and assets:\n",
+ " # Iterate through each asset and its associated image URIs\n",
+ " for asset_id, uris in assets.items():\n",
+ " # Call the height estimation function\n",
+ " estimation_result = estimate_asset_height(uris)\n",
+ "\n",
+ " # Extract results for formatted printing\n",
+ " height = estimation_result.get(\"estimated_height_meters\", \"N/A\")\n",
+ " confidence = estimation_result.get(\"confidence_score\", \"N/A\")\n",
+ "\n",
+ " # Pretty print the immediate result as requested\n",
+ " print(f\"Asset ID: {asset_id}\\n - Height: {height} meters\\n - Confidence: {confidence}\\n\")\n",
+ "\n",
+ " # Append the full results to our list for the DataFrame\n",
+ " results_data.append({\n",
+ " \"asset_id\": asset_id,\n",
+ " \"num_observations\": len(uris),\n",
+ " \"estimated_height_meters\": height,\n",
+ " \"confidence_score\": confidence,\n",
+ " \"reasoning_notes\": estimation_result.get(\"reasoning_notes\", \"N/A\")\n",
+ " })\n",
+ "\n",
+ " # Create a pandas DataFrame from the results\n",
+ " results_df = pd.DataFrame(results_data)\n",
+ "\n",
+ " # Display the final DataFrame in a clean, 'pretty' format\n",
+ " print(\"\\n--- Final Results Summary ---\")\n",
+ " display(results_df)\n",
+ "\n",
+ "else:\n",
+ " print(\"No assets found to process.\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "gpuType": "L4",
+ "name": "utility_pole_measure_height.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/street_view_insights/notebooks/bbox_detection_of_attachments/README.md b/street_view_insights/notebooks/bbox_detection_of_attachments/README.md
new file mode 100644
index 0000000..3228136
--- /dev/null
+++ b/street_view_insights/notebooks/bbox_detection_of_attachments/README.md
@@ -0,0 +1,33 @@
+# Bounding Box Detection of Utility Pole Attachments
+
+This notebook demonstrates how to use the Gemini 1.5 Flash model to detect bounding boxes of telephone attachments in images from the Imagery Insights Utility Pole dataset.
+
+## Description
+
+The notebook performs the following steps:
+
+1. **Configuration**: Sets up the Google Cloud Project ID, region, and BigQuery dataset details.
+2. **Imports**: Imports the necessary libraries, including the Vertex AI SDK and BigQuery client library.
+3. **Fetch Image URIs**: Queries a BigQuery table to retrieve the GCS URIs of utility pole images.
+4. **Define Classification Function**: Defines a function that takes an image URI and a prompt, then uses the Gemini 1.5 Flash model to identify and return bounding boxes for telecommunications-related objects in the image.
+5. **Classify Images**: Loops through the fetched image URIs and applies the classification function to each, printing the results.
+
+## Configuration
+
+Before running the notebook, you need to configure the following variables in the "Configuration" section:
+
+* `PROJECT_ID`: Your Google Cloud Project ID.
+* `REGION`: The Google Cloud region where you want to run the notebook.
+* `BIGQUERY_DATASET_ID`: The BigQuery dataset ID containing the imagery data.
+* `BIGQUERY_TABLE_ID`: The BigQuery table ID with the image URIs.
+* `QUERY_LIMIT`: The maximum number of images to process.
+* `ASSET_TYPE`: The type of asset to analyze (e.g., "ASSET_CLASS_UTILITY_POLE").
+* `MODEL`: The name of the Gemini model to use (e.g., "gemini-1.5-flash-001").
+
+## Usage
+
+1. Open the `bbox_detection_of_attachment.ipynb` notebook.
+2. Update the "Configuration" section with your specific project details.
+3. Run the cells in the notebook sequentially.
+
+The notebook will then fetch the image URIs from BigQuery, process each image using the Gemini model, and print the bounding box information for the detected attachments.
\ No newline at end of file
diff --git a/street_view_insights/notebooks/bbox_detection_of_attachments/bbox_detection_of_attachment.ipynb b/street_view_insights/notebooks/bbox_detection_of_attachments/bbox_detection_of_attachment.ipynb
new file mode 100644
index 0000000..86de548
--- /dev/null
+++ b/street_view_insights/notebooks/bbox_detection_of_attachments/bbox_detection_of_attachment.ipynb
@@ -0,0 +1,883 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "id": "HOTxHzL_k5VK"
+ },
+ "outputs": [],
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Road signs Classification\n",
+ "\n",
+ "This notebook demonstrates how to classify images from Imagery Insights Road signs dataset using the Gemini 2.5 Flash model via Google Cloud's Vertex AI."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Install Required Libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%pip install --upgrade google-cloud-bigquery google-cloud-aiplatform"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "**Important**: Replace the placeholder values below with your actual GCP Project ID and Region."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "PROJECT_ID = 'your-gcp-project-id' # @param {type:\"string\"}\n",
+ "REGION = 'us-central1' # @param {type:\"string\"}\n",
+ "\n",
+ "# BigQuery Configuration\n",
+ "BIGQUERY_DATASET_ID = 'your_bq_dataset' # @param {type:\"string\"}\n",
+ "BIGQUERY_TABLE_ID = 'your_bq_table' # @param {type:\"string\"}\n",
+ "QUERY_LIMIT = 10 # @param {type:\"integer\"}\n",
+ "ASSET_TYPE = \"ASSET_CLASS_ROAD_SIGN\" # @param {type:\"string\"}\n",
+ "MODEL = \"gemini-2.5-flash\" # @param {type:\"string\"}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Imports and Vertex AI Initialization"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import vertexai\n",
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "from google.genai.types import Content, Part\n",
+ "\n",
+ "# Initialize Vertex AI SDK\n",
+ "vertexai.init(project=PROJECT_ID, location=REGION)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Create vertex client"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Fetch Image URIs from BigQuery\n",
+ "\n",
+ "Next, we'll query a BigQuery table to get the GCS URIs of the images we want to classify."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "PROMPT = \"\"\"You will be provided with a photo of a utility pole:\n",
+ "{photo_of_utility_pole}\n",
+ "\n",
+ "You are an image analysis expert. Your task is to analyze an image of a road scene and identify any road signs from a predefined list.\n",
+ "InstructionsAnalyze the Image:\u00a0Carefully analyze the provided image. Your entire analysis MUST be based exclusively on the image provided. Do not infer information or make assumptions beyond what is visually present.\n",
+ "Identify Signs:\u00a0Scan the image to identify all road signs. For each potential sign, use the following logic:\n",
+ "a. First, identify its\u00a0shape\u00a0and\u00a0color.\n",
+ "b. Next, read any visible\u00a0text\u00a0or interpret\u00a0symbols.\n",
+ "c. Finally, match this combination of features to a category in the\u00a0'Sign Categories & Features'\u00a0list below.\n",
+ "Format the Output:\u00a0Present your findings as a JSON array. Each object in the array represents one identified sign and must use the schema defined in the 'JSON Output Schema' section.\n",
+ "DefinitionsSign Categories & Features:\n",
+ "Stop:\u00a0Octagonal (8-sided) shape, red background, white text ('STOP').\n",
+ "Yield:\u00a0Downward-pointing triangle shape, white background with a red border.\n",
+ "Speed Limit:\u00a0Vertical rectangle shape, typically white background with black numbers.\n",
+ "Pedestrian Crossing:\u00a0Pentagon (5-sided) shape or square, typically yellow or fluorescent green/yellow with black symbols of people walking.\n",
+ "No Parking:\u00a0Typically a rectangle or square, often with a red circle and slash over the letter 'P'.\n",
+ "Turn:\u00a0Rectangle shape, typically with a black arrow indicating the direction of the turn (left, right, U-turn) on a white or yellow background.\n",
+ "Do not enter:\u00a0A red circle with a white horizontal bar inside.\n",
+ "Street name:\u00a0A horizontal rectangle, typically with a green, blue, or white background and white or black text.\n",
+ "Other:\u00a0Any sign not matching the specific descriptions above.\n",
+ "Confidence Level Definitions:\n",
+ "High:\u00a0The sign is clearly visible and legible in the image.\n",
+ "Medium:\u00a0The sign's characteristic shape and/or color are visible, but the text or symbol is unreadable or obscured. The identification is based on shape and color context (e.g., a red octagon is identified as a Stop sign even if the text is unreadable).\n",
+ "JSON Output SchemaYour output must be a valid JSON array where each object represents a single sign and contains the following keys:\n",
+ "\\\"Sign\\\": [Name of the sign from the 'Sign Categories & Features' list]\n",
+ "\\\"Reasoning\\\": [A brief explanation of the visual evidence (shape, color, text).]\n",
+ "\\\"Confidence\\\": [\\\"High\\\" or \\\"Medium\\\"]\n",
+ "ExampleThis is an illustrative example. Your analysis must be based on the image you are provided.\n",
+ "[\n",
+ " {\n",
+ " \\\"Sign\\\": \\\"Stop\\\",\n",
+ " \\\"Reasoning\\\": \\\"Identified a red, octagonal sign with the word \\\\\\\"STOP\\\\\\\" in clear, white text.\\\",\n",
+ " \\\"Confidence\\\": \\\"High\\\"\n",
+ " },\n",
+ " {\n",
+ " \\\"Sign\\\": \\\"Speed Limit\\\",\n",
+ " \\\"Reasoning\\\": \\\"Identified a vertical rectangular sign with a white background. The numbers '45' are legible, consistent with a speed limit sign.\\\",\n",
+ " \\\"Confidence\\\": \\\"High\\\"\n",
+ " },\n",
+ " {\n",
+ " \\\"Sign\\\": \\\"Street name\\\",\n",
+ " \\\"Reasoning\\\": \\\"Identified a green, horizontal rectangular sign. The text is blurry, but the shape and color are characteristic of a street name sign.\\\",\n",
+ " \\\"Confidence\\\": \\\"Medium\\\"\n",
+ " }\n",
+ "]\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Define Image Classification Function\n",
+ "\n",
+ "This function takes a GCS URI and a prompt, then uses the Gemini 1.5 Flash model to generate a description of the image."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def classify_image_with_gemini(gcs_uri: str, prompt: str) -> str:\n",
+ " \"\"\"\n",
+ " Classifies an image using the Gemini 1.5 Flash model by directly passing its GCS URI.\n",
+ " \"\"\"\n",
+ " try:\n",
+ " contents = [\n",
+ " PROMPT,\n",
+ " Part(file_data={'file_uri': gcs_uri, 'mime_type': 'image/jpeg'})]\n",
+ "\n",
+ " response = client.models.generate_content(model=MODEL, contents=contents)\n",
+ " return response.text\n",
+ " except Exception as e:\n",
+ " print(f\"Error classifying image from URI {gcs_uri}: {e}\")\n",
+ " return \"Classification failed.\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#Get the image URIs from BigQuery"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "\n",
+ "BIGQUERY_SQL_QUERY = f\"\"\"\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " `{PROJECT_ID}.{BIGQUERY_DATASET_ID}.{BIGQUERY_TABLE_ID}`\n",
+ " WHERE asset_type = '{ASSET_TYPE}'\n",
+ "\n",
+ "LIMIT {QUERY_LIMIT};\n",
+ "\"\"\"\n",
+ "\n",
+ "# Execute BigQuery Query\n",
+ "try:\n",
+ " bigquery_client = bigquery.Client(project=PROJECT_ID)\n",
+ " query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)\n",
+ " query_response_data = [dict(row) for row in query_job]\n",
+ " gcs_uris = [item.get(\"gcs_uri\") for item in query_response_data if item.get(\"gcs_uri\")]\n",
+ "\n",
+ " print(f\"Successfully fetched {len(gcs_uris)} GCS URIs:\")\n",
+ " for uri in gcs_uris:\n",
+ " print(uri)\n",
+ "except Exception as e:\n",
+ " print(f\"An error occurred while querying BigQuery: {e}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Classify Images\n",
+ "\n",
+ "Finally, we loop through the GCS URIs we fetched and pass them to our classification function along with a prompt."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "if 'gcs_uris' in locals() and gcs_uris:\n",
+ " for uri in gcs_uris:\n",
+ " print(f\"--- Classifying {uri} ---\")\n",
+ " classification = classify_image_with_gemini(uri, PROMPT)\n",
+ " print(f\"Result: {classification}\\n\")\n",
+ "else:\n",
+ " print(\"No GCS URIs were found to classify.\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/street_view_insights/notebooks/classify_road_signs/classify_road_signs_and_save_in_bq.ipynb b/street_view_insights/notebooks/classify_road_signs/classify_road_signs_and_save_in_bq.ipynb
new file mode 100644
index 0000000..256aa04
--- /dev/null
+++ b/street_view_insights/notebooks/classify_road_signs/classify_road_signs_and_save_in_bq.ipynb
@@ -0,0 +1,6064 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "9c54422c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Copyright 2025 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "VBkYvdqmYr7R",
+ "metadata": {
+ "id": "VBkYvdqmYr7R"
+ },
+ "source": [
+ "# Environment setup"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "153evZBGZuFV",
+ "metadata": {
+ "id": "153evZBGZuFV"
+ },
+ "source": [
+ "Make sure to edit all the cells marked as `TODO`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ivuQEctAe1km",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "collapsed": true,
+ "id": "ivuQEctAe1km",
+ "outputId": "c9e52a49-ff1d-462e-9add-996482a53e86"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install --upgrade google-cloud-bigquery google-generativeai"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7J3_MOE2jm10",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7J3_MOE2jm10",
+ "outputId": "f7e38d89-f276-433d-e4f4-a00aed856a61"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "WARNING: google.colab.auth.authenticate_user() is not supported in Colab Enterprise.\n"
+ ]
+ }
+ ],
+ "source": [
+ "import sys\n",
+ "\n",
+ "if \"google.colab\" in sys.modules:\n",
+ " from google.colab import auth\n",
+ " auth.authenticate_user()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "IvdgWhqXegLR",
+ "metadata": {
+ "cellView": "form",
+ "id": "IvdgWhqXegLR"
+ },
+ "outputs": [],
+ "source": [
+ "# TODO(developer): Set project_id to your project's ID.\n",
+ "PROJECT_ID = \"\" # @param {type:\"string\"}\n",
+ "\n",
+ "# TODO(developer): Set dataset_id to the ID of the dataset that the table belongs to.\n",
+ "DATASET_ID = \"\" # @param {type:\"string\"}\n",
+ "\n",
+ "table_tracks = f\"`{PROJECT_ID}.{DATASET_ID}.tracks_view`\" # Fully qualified table name\n",
+ "table_observations = f\"`{PROJECT_ID}.{DATASET_ID}.observations_view`\"\n",
+ "table_urls = f\"`{PROJECT_ID}.{DATASET_ID}.urls_view`\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "vDO30v3m05Gq",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "vDO30v3m05Gq",
+ "outputId": "eb0db1e2-e9ad-44c5-99ae-26736002c44d"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "`imagery-insights-sandbox.road_signs_dcr.tracks_view`\n",
+ "`imagery-insights-sandbox.road_signs_dcr.observations_view`\n",
+ "`imagery-insights-sandbox.road_signs_dcr.urls_view`\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(table_tracks)\n",
+ "print(table_observations)\n",
+ "print(table_urls)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "_q_G4QkWl1KS",
+ "metadata": {
+ "id": "_q_G4QkWl1KS"
+ },
+ "outputs": [],
+ "source": [
+ "MODEL_ID = \"gemini-2.0-flash\" # @param {type: \"string\"}\n",
+ "LOCATION = \"us-central1\" # @param {type: \"string\"}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "viFsFg6QjuC1",
+ "metadata": {
+ "id": "viFsFg6QjuC1"
+ },
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "\n",
+ "if not PROJECT_ID or PROJECT_ID == \"your-project-id\":\n",
+ " PROJECT_ID = str(os.environ.get(\"GOOGLE_CLOUD_PROJECT\"))\n",
+ "\n",
+ "if not LOCATION:\n",
+ " LOCATION = os.environ.get(\"GOOGLE_CLOUD_REGION\", \"us-central1\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "vpXheVQqlB4T",
+ "metadata": {
+ "id": "vpXheVQqlB4T"
+ },
+ "outputs": [],
+ "source": [
+ "from google.cloud import bigquery\n",
+ "from google import genai\n",
+ "\n",
+ "vertex_ai_client = genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION)\n",
+ "bq_client = bigquery.Client()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "KjbkssFXYxoq",
+ "metadata": {
+ "id": "KjbkssFXYxoq"
+ },
+ "source": [
+ "# Let's fetch the data from BigQuery"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dXABCU_2Y6F6",
+ "metadata": {
+ "id": "dXABCU_2Y6F6"
+ },
+ "source": [
+ "This code snippet constructs a series of temporary SQL tables to join track data, observation details, and associated URLs, ultimately producing a final table containing combined information ordered by track ID.\n",
+ "\n",
+ "It prepares and organizes data for analysis by linking related track, observation, and URL information."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dnuPsmdvehVW",
+ "metadata": {
+ "id": "dnuPsmdvehVW"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a temporary table with a sample of 5 tracks.\n",
+ "sql_create_temp_tracks = f\"\"\"\n",
+ "CREATE OR REPLACE TEMP TABLE TempTracks AS\n",
+ "SELECT\n",
+ " *\n",
+ "FROM\n",
+ " {table_tracks};\n",
+ "\"\"\"\n",
+ "\n",
+ "# Create a temporary table with (trackId, observationId) pairs and Google Maps URLs.\n",
+ "sql_create_track_observation_pairs = \"\"\"\n",
+ "CREATE OR REPLACE TEMP TABLE TempTrackObservationPairs AS\n",
+ "SELECT\n",
+ " t.trackId,\n",
+ " observationId,\n",
+ " ST_GeogPoint(ST_X(geometry), ST_Y(geometry)) AS geographic_point,\n",
+ " FORMAT('https://maps.google.com/?q=%f,%f', ST_Y(t.geometry), ST_X(t.geometry)) AS google_maps_url\n",
+ "FROM\n",
+ " TempTracks AS t\n",
+ "CROSS JOIN\n",
+ " UNNEST(t.observationIds) AS observationId;\n",
+ "\"\"\"\n",
+ "\n",
+ "# Create a temporary table with observation metadata (timestamp, bbox).\n",
+ "sql_create_observation_metadata = f\"\"\"\n",
+ "CREATE OR REPLACE TEMP TABLE TempObservationMetadata AS\n",
+ "SELECT\n",
+ " observationId,\n",
+ " captureTimestamp,\n",
+ " bbox\n",
+ "FROM\n",
+ " {table_observations};\n",
+ " -- WHERE observationId IN (SELECT observationId FROM TempTrackObservationPairs) -- Optional\n",
+ "\"\"\"\n",
+ "\n",
+ "# Create a temporary table joining track/observation pairs, URLs, and metadata.\n",
+ "sql_create_joined_data = f\"\"\"\n",
+ "CREATE OR REPLACE TEMP TABLE TempJoinedData AS\n",
+ "SELECT\n",
+ " top.trackId,\n",
+ " top.observationId,\n",
+ " top.geographic_point,\n",
+ " top.google_maps_url,\n",
+ " u.signedUrl,\n",
+ " om.captureTimestamp,\n",
+ " om.bbox\n",
+ "FROM\n",
+ " TempTrackObservationPairs AS top\n",
+ "INNER JOIN\n",
+ " {table_urls} AS u\n",
+ " ON top.observationId = u.observationId\n",
+ "INNER JOIN\n",
+ " TempObservationMetadata AS om\n",
+ " ON top.observationId = om.observationId;\n",
+ "\"\"\"\n",
+ "\n",
+ "# Select all columns from the joined data, ordered by trackId.\n",
+ "sql_final_select = \"\"\"\n",
+ "SELECT * FROM TempJoinedData ORDER BY trackId;\n",
+ "\"\"\"\n",
+ "\n",
+ "# --- Optional Cleanup (Uncomment if needed) ---\n",
+ "# sql_cleanup = \"\"\"\n",
+ "# DROP TABLE TempTracks;\n",
+ "# DROP TABLE TempTrackObservationPairs;\n",
+ "# DROP TABLE TempObservationMetadata;\n",
+ "# DROP TABLE TempJoinedData;\n",
+ "# \"\"\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2ajdM7Pteiw_",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2ajdM7Pteiw_",
+ "outputId": "d25d8ff6-6ea1-45f7-8e23-91de6dd173d7"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Query executed successfully!\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Execute each query part\n",
+ "query_jobs = []\n",
+ "\n",
+ "merged_queries = f\"\"\"\n",
+ "{sql_create_temp_tracks}\n",
+ "{sql_create_track_observation_pairs}\n",
+ "{sql_create_observation_metadata}\n",
+ "{sql_create_joined_data}\n",
+ "{sql_final_select}\n",
+ "\"\"\"\n",
+ "# add sql_cleanup # Uncomment if you want to explicitly drop the tables\n",
+ "\n",
+ "query_job = bq_client.query(merged_queries)\n",
+ "query_jobs.append(query_job) # Store the job object\n",
+ "query_job.result() # Wait for the query to complete\n",
+ "print(f\"Query executed successfully!\")\n",
+ "\n",
+ "# Get results from the final query (SELECT * FROM TempJoinedData)\n",
+ "results = query_jobs[-1].result() # Get results from last query job"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "BQsl9ztNbweY",
+ "metadata": {
+ "id": "BQsl9ztNbweY"
+ },
+ "source": [
+ "# Data and image classification\n",
+ "Let's process the results and anlyze the road sign images using Gemini (or any other model)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "AzOYNPlyS2fF",
+ "metadata": {
+ "id": "AzOYNPlyS2fF"
+ },
+ "outputs": [],
+ "source": [
+ "# Import necessary libraries\n",
+ "import typing # Standard library\n",
+ "import os # Standard library\n",
+ "import json # For parsing JSON responses\n",
+ "import io # For handling byte streams (e.g., for image data)\n",
+ "\n",
+ "# Define placeholder classes in the global scope\n",
+ "class GenaiPlaceholder:\n",
+ " \"\"\"Placeholder for the 'genai' module if it's not found or is malformed.\"\"\"\n",
+ " Client = type('Client', (object,), {})\n",
+ " # The 'models' attribute on a client instance would be an object,\n",
+ " # so we don't need a GenerativeModel class placeholder at this level\n",
+ " # if we are using client.models.generate_content.\n",
+ " # However, 'GenerativeModel' might be a type hint or used elsewhere, so keep a basic one.\n",
+ " GenerativeModel = type('GenerativeModel', (object,), {})\n",
+ " models = type('ModelsServicePlaceholder', (object,), {'generate_content': lambda **kwargs: None})() # Placeholder for client.models\n",
+ "\n",
+ " @staticmethod\n",
+ " def _Part_from_text_static(text): return None\n",
+ " @staticmethod\n",
+ " def _Part_from_uri_static(uri, mime_type): return None\n",
+ " @staticmethod\n",
+ " def _Part_from_bytes_static(data, mime_type): return None\n",
+ " Part = type('Part', (object,), {'from_text': _Part_from_text_static, 'from_uri': _Part_from_uri_static, 'from_bytes': _Part_from_bytes_static})\n",
+ " Content = type('Content', (object,), {})\n",
+ " Tool = type('Tool', (object,), {})\n",
+ " Retrieval = type('Retrieval', (object,), {})\n",
+ " VertexRagStore = type('VertexRagStore', (object,), {})\n",
+ " GenerationConfig = type('GenerationConfig', (object,), {})\n",
+ " GenerateContentResponse = type('GenerateContentResponse', (object,), {})\n",
+ " types = type('TypesPlaceholderSubmodule', (object,), {\n",
+ " 'Part': Part, 'Content': Content, 'Tool': Tool, 'Retrieval': Retrieval,\n",
+ " 'VertexRagStore': VertexRagStore, 'GenerationConfig': GenerationConfig,\n",
+ " 'GenerateContentResponse': GenerateContentResponse\n",
+ " })\n",
+ "\n",
+ "class TypesPlaceholder:\n",
+ " \"\"\"Placeholder for a separate 'types' module if needed.\"\"\"\n",
+ " Part = GenaiPlaceholder.Part\n",
+ " Content = GenaiPlaceholder.Content\n",
+ " Tool = GenaiPlaceholder.Tool\n",
+ " Retrieval = GenaiPlaceholder.Retrieval\n",
+ " VertexRagStore = GenaiPlaceholder.VertexRagStore\n",
+ " GenerationConfig = GenaiPlaceholder.GenerationConfig\n",
+ " GenerateContentResponse = GenaiPlaceholder.GenerateContentResponse\n",
+ "\n",
+ "# Initialize module variables\n",
+ "genai_module = GenaiPlaceholder()\n",
+ "gg_types = TypesPlaceholder()\n",
+ "_libraries_loaded_successfully = False\n",
+ "\n",
+ "# --- Diagnostic Step 1: Check 'google.cloud.aiplatform' import ---\n",
+ "_google_cloud_aiplatform_imported_successfully = False\n",
+ "print(\"--- Diagnostic: Checking 'google.cloud.aiplatform' import ---\")\n",
+ "try:\n",
+ " import google.cloud.aiplatform\n",
+ " _google_cloud_aiplatform_imported_successfully = True\n",
+ " print(f\"Successfully imported 'google.cloud.aiplatform'. Path: {getattr(google.cloud.aiplatform, '__file__', 'N/A')}\")\n",
+ "except Exception as e_aip:\n",
+ " print(f\"WARNING: Could not import 'google.cloud.aiplatform'. This is needed for VertexAI client. Error: {e_aip}\")\n",
+ "print(\"--------------------------------------------------------------\")\n",
+ "\n",
+ "# --- Attempt to import and configure 'genai' and its 'types' ---\n",
+ "print(\"\\n--- Attempting to configure 'genai' (for Client & client.models) and 'types' (for Part) ---\")\n",
+ "\n",
+ "# Attempt 1: User's preferred pattern 'from google import genai' and 'from google.genai import types'\n",
+ "try:\n",
+ " from google import genai as attempt1_genai\n",
+ " print(f\"Attempt 1: 'from google import genai' successful. Path: {getattr(attempt1_genai, '__file__', 'N/A')}\")\n",
+ "\n",
+ " from google.genai import types as attempt1_types\n",
+ " print(f\"Attempt 1: 'from google.genai import types' successful. Path: {getattr(attempt1_types, '__file__', 'N/A')}\")\n",
+ "\n",
+ " has_client = hasattr(attempt1_genai, 'Client')\n",
+ " # Check if the client instance would have a 'models' attribute with 'generate_content'\n",
+ " # This is a bit indirect; we assume if Client exists, its instance will have .models.generate_content\n",
+ " has_models_with_generate_content = hasattr(attempt1_genai, 'Client') # Simplified check, real check on client instance later\n",
+ " has_part_in_types = hasattr(attempt1_types, 'Part')\n",
+ " has_generationconfig_in_types = hasattr(attempt1_types, 'GenerationConfig') # Check another key type\n",
+ "\n",
+ " if has_client and has_models_with_generate_content and has_part_in_types and has_generationconfig_in_types:\n",
+ " print(\"INFO: Attempt 1 ('from google import genai' and 'from google.genai import types') provides necessary attributes ('Client', 'models' structure anticipated, 'types.Part', 'types.GenerationConfig'). Using this setup.\")\n",
+ " genai_module = attempt1_genai\n",
+ " gg_types = attempt1_types\n",
+ " _libraries_loaded_successfully = True\n",
+ " else:\n",
+ " print(\"WARNING: Attempt 1 ('from google import genai' and 'from google.genai import types') did not provide a complete setup:\")\n",
+ " if not has_client: print(\" - Missing 'genai.Client'\")\n",
+ " if not has_models_with_generate_content: print(\" - 'genai.Client' might not yield '.models.generate_content' (anticipated)\")\n",
+ " if not has_part_in_types: print(\" - Missing 'types.Part'\")\n",
+ " if not has_generationconfig_in_types: print(\" - Missing 'types.GenerationConfig'\")\n",
+ " if not _libraries_loaded_successfully: print(\" Will try fallback 'import google.generativeai'.\")\n",
+ "\n",
+ "except (ImportError, Exception) as e_attempt1:\n",
+ " print(f\"Attempt 1: Failed or error during 'from google import genai' or 'from google.genai import types'. Error: {e_attempt1}\")\n",
+ " print(\" Will try fallback 'import google.generativeai'.\")\n",
+ "\n",
+ "# Attempt 2: Try 'import google.generativeai' if Attempt 1 failed\n",
+ "if not _libraries_loaded_successfully:\n",
+ " try:\n",
+ " import google.generativeai as attempt2_genai\n",
+ " print(f\"Attempt 2: 'import google.generativeai' successful. Path: {getattr(attempt2_genai, '__file__', 'N/A')}\")\n",
+ "\n",
+ " # For this import, types are usually directly under google.generativeai.types\n",
+ " attempt2_types_candidate = None\n",
+ " if hasattr(attempt2_genai, 'types') and hasattr(attempt2_genai.types, 'Part'):\n",
+ " attempt2_types_candidate = attempt2_genai.types\n",
+ " print(\" INFO: Found 'types.Part' via 'google.generativeai.types'.\")\n",
+ " else: # Try separate import if not on main module or Part is missing\n",
+ " try:\n",
+ " from google.generativeai import types as attempt2_separate_types\n",
+ " print(f\" Attempted separate import of 'google.generativeai.types'. Path: {getattr(attempt2_separate_types, '__file__', 'N/A')}\")\n",
+ " if hasattr(attempt2_separate_types, 'Part'):\n",
+ " attempt2_types_candidate = attempt2_separate_types\n",
+ " print(\" INFO: Found 'Part' in separately imported 'google.generativeai.types'.\")\n",
+ " else: print(\" WARNING: Separately imported 'google.generativeai.types' is MISSING 'Part'.\")\n",
+ " except (ImportError, Exception) as e_sep_types:\n",
+ " print(f\" WARNING: Failed to import 'google.generativeai.types' separately. Error: {e_sep_types}\")\n",
+ "\n",
+ " has_client = hasattr(attempt2_genai, 'Client')\n",
+ " has_models_with_generate_content = hasattr(attempt2_genai, 'Client') # Simplified check\n",
+ " has_part_in_types = attempt2_types_candidate and hasattr(attempt2_types_candidate, 'Part')\n",
+ " has_generationconfig_in_types = attempt2_types_candidate and hasattr(attempt2_types_candidate, 'GenerationConfig')\n",
+ "\n",
+ " if has_client and has_models_with_generate_content and has_part_in_types and has_generationconfig_in_types:\n",
+ " print(\"INFO: Attempt 2 ('import google.generativeai') provides 'Client', 'models' structure anticipated, and 'types' with 'Part'/'GenerationConfig'. Using this setup.\")\n",
+ " genai_module = attempt2_genai\n",
+ " gg_types = attempt2_types_candidate\n",
+ " _libraries_loaded_successfully = True\n",
+ " else:\n",
+ " print(\"ERROR: Attempt 2 ('import google.generativeai') also did not provide a complete setup:\")\n",
+ " if not has_client: print(\" - Missing 'Client'\")\n",
+ " if not has_models_with_generate_content: print(\" - 'Client' might not yield '.models.generate_content' (anticipated)\")\n",
+ " if not has_part_in_types: print(\" - Could not find 'types.Part'\")\n",
+ " if not has_generationconfig_in_types: print(\" - Could not find 'types.GenerationConfig'\")\n",
+ "\n",
+ " except (ImportError, Exception) as e_attempt2:\n",
+ " print(f\"Attempt 2: Failed or error during 'import google.generativeai'. Error: {e_attempt2}\")\n",
+ "\n",
+ "if not _libraries_loaded_successfully:\n",
+ " print(\"\\n######################################################################################\")\n",
+ " print(\"FINAL ERROR: Could not establish a working setup for 'genai.Client' (with '.models' attribute) and 'types.Part'.\")\n",
+ " if not _google_cloud_aiplatform_imported_successfully:\n",
+ " print(\" This might be related to 'google.cloud.aiplatform' not being available for the genai library.\")\n",
+ " print(\" RECOMMENDATION: Ensure 'google-generativeai' (>=0.5.0 for Vertex) and 'google-cloud-aiplatform' are correctly installed and compatible.\")\n",
+ " print(\" Run 'pip install --upgrade google-generativeai google-cloud-aiplatform' in your Colab environment and RESTART THE RUNTIME.\")\n",
+ " print(\" The script will use placeholder objects, and API calls will not function correctly.\")\n",
+ " print(\"######################################################################################\")\n",
+ " genai_module = GenaiPlaceholder()\n",
+ " gg_types = TypesPlaceholder()\n",
+ "\n",
+ "print(\"--------------------------------------------------------------\")\n",
+ "\n",
+ "# --- Configuration ---\n",
+ "GCP_PROJECT_ID = os.getenv(\"GCP_PROJECT_ID\", \"imagery-insights-sandbox\")\n",
+ "GCP_LOCATION = os.getenv(\"GCP_LOCATION\", \"us-central1\")\n",
+ "\n",
+ "VISION_MODEL_NAME_LAMP = \"gemini-pro-vision\"\n",
+ "RAG_MODEL_NAME_LAMP = \"gemini-1.5-pro-preview-0409\"\n",
+ "RAG_CORPUS_PATH = f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/ragCorpora/6917529027641081856\"\n",
+ "DEFAULT_ROAD_SIGN_MODEL = \"gemini-1.5-flash-latest\"\n",
+ "\n",
+ "# --- Helper Function to Initialize Client ---\n",
+ "def initialize_genai_client():\n",
+ " if not _libraries_loaded_successfully:\n",
+ " print(\"GenAI library not properly loaded. Cannot initialize client.\")\n",
+ " return None\n",
+ " try:\n",
+ " client = genai_module.Client(\n",
+ " vertexai=True,\n",
+ " project=GCP_PROJECT_ID,\n",
+ " location=GCP_LOCATION,\n",
+ " )\n",
+ " print(f\"DEBUG: Type of initialized client object: {type(client)}\")\n",
+ " print(f\"DEBUG: Attributes of initialized client object: {dir(client)}\")\n",
+ " if not hasattr(client, 'models') or not hasattr(client.models, 'generate_content'):\n",
+ " print(\"ERROR: Initialized client does NOT have '.models.generate_content()' method as expected!\")\n",
+ " return None # Critical failure if this specific invocation pattern is targeted\n",
+ " print(f\"GenAI Client Initialized and Configured for Vertex AI (project '{GCP_PROJECT_ID}', location '{GCP_LOCATION}').\")\n",
+ " return client\n",
+ " except Exception as e:\n",
+ " print(f\"Error initializing GenAI client: {e}\")\n",
+ " return None\n",
+ "\n",
+ "# --- Function for Step 1: Lamp Image Analysis ---\n",
+ "def get_lamp_description_from_image(client: typing.Optional['genai_module.Client'], gcs_url: str) -> typing.Optional[str]:\n",
+ " print(f\"--- Step 1 (Lamp): Analyzing image {gcs_url} ---\")\n",
+ " if not _libraries_loaded_successfully or not client:\n",
+ " print(\"Error: GenAI client/types not properly loaded for lamp image analysis.\")\n",
+ " return None\n",
+ " try:\n",
+ " prompt_text_part = gg_types.Part.from_text(text=\"\"\"Analyze the provided image.\n",
+ "Instructions:\n",
+ "1. Determine if the image clearly shows a utility pole or a street lamp.\n",
+ "2. If it shows a street lamp, provide a detailed description focusing on:\n",
+ " - Overall shape and structure, Lamp head type and shape, Arm type, Pole material and color, Any other key identifying features.\n",
+ "3. If it is clearly a utility pole (carrying wires, transformers, etc.) and not a street lamp, respond ONLY with: \"UTILITY_POLE\".\n",
+ "4. If the image does not clearly show either, or is ambiguous, respond ONLY with: \"UNCLEAR_IMAGE\".\n",
+ "\"\"\")\n",
+ " image_part = gg_types.Part.from_uri(uri=gcs_url, mime_type=\"image/jpeg\")\n",
+ "\n",
+ " current_generation_config = gg_types.GenerationConfig(temperature=0.2)\n",
+ " print(f\"Attempting to generate content for lamp vision model: {VISION_MODEL_NAME_LAMP}\")\n",
+ " response = client.models.generate_content(\n",
+ " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{VISION_MODEL_NAME_LAMP}\", # Vertex model path\n",
+ " contents=[prompt_text_part, image_part],\n",
+ " generation_config=current_generation_config\n",
+ " )\n",
+ " print(\"Lamp vision content generation complete.\")\n",
+ "\n",
+ " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
+ " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
+ " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
+ " print(\"Error: Lamp vision model response is empty or malformed.\")\n",
+ " return None\n",
+ "\n",
+ " # Assuming response.text is available for this invocation pattern\n",
+ " description = \"\"\n",
+ " if response.candidates[0].content.parts:\n",
+ " for part in response.candidates[0].content.parts:\n",
+ " if hasattr(part, 'text'):\n",
+ " description += part.text\n",
+ " description = description.strip()\n",
+ "\n",
+ " if not description and hasattr(response, 'text'): # Fallback if parts don't have text but response object does\n",
+ " description = response.text.strip()\n",
+ "\n",
+ " print(f\"Lamp image analysis result: {description}\")\n",
+ " if description in [\"UTILITY_POLE\", \"UNCLEAR_IMAGE\"]:\n",
+ " print(\"Image identified as utility pole or unclear. Skipping lamp classification.\")\n",
+ " return None\n",
+ " elif \"error\" in description.lower():\n",
+ " print(f\"Lamp vision model returned an error message: {description}\")\n",
+ " return None\n",
+ " return description\n",
+ " except AttributeError as ae:\n",
+ " error_detail = str(ae)\n",
+ " print(f\"AttributeError during lamp image analysis (Step 1): {error_detail}.\")\n",
+ " return None\n",
+ " except Exception as e:\n",
+ " print(f\"An unexpected error occurred during lamp image analysis (Step 1): {e}\")\n",
+ " return None\n",
+ "\n",
+ "# --- Function for Step 2: Lamp RAG Classification ---\n",
+ "def classify_lamp_with_rag(client: typing.Optional['genai_module.Client'], lamp_description: str) -> typing.Optional[str]:\n",
+ " print(f\"\\n--- Step 2 (Lamp): Classifying lamp using RAG ---\")\n",
+ " if not _libraries_loaded_successfully or not client:\n",
+ " print(\"Error: GenAI client/types not properly loaded for lamp RAG classification.\")\n",
+ " return None\n",
+ " try:\n",
+ " rag_prompt_text_part = gg_types.Part.from_text(text=f\"Lamp Description: {lamp_description}\\n...\")\n",
+ " si_text1 = \"You are a lighting expert...\"\n",
+ " system_instruction_part = gg_types.Part.from_text(text=si_text1) # This becomes part of contents for client.models.generate_content\n",
+ "\n",
+ " # For client.models.generate_content, system_instruction is a top-level param\n",
+ " # Contents should be a list of Content objects or dicts\n",
+ " contents_for_rag = [\n",
+ " # gg_types.Content(parts=[system_instruction_part]), # System instruction can be a top-level param\n",
+ " gg_types.Content(role=\"user\", parts=[rag_prompt_text_part])\n",
+ " ]\n",
+ "\n",
+ " tools_for_rag = [gg_types.Tool(retrieval=gg_types.Retrieval(source=gg_types.VertexRagStore(rag_corpora=[RAG_CORPUS_PATH], similarity_top_k=10)))]\n",
+ " rag_generation_config = gg_types.GenerationConfig(temperature=0.3, top_p=0.95, max_output_tokens=512)\n",
+ " safety_settings_rag = [{\"category\": c, \"threshold\": \"BLOCK_MEDIUM_AND_ABOVE\"} for c in [\"HARM_CATEGORY_HARASSMENT\", \"HARM_CATEGORY_HATE_SPEECH\", \"HARM_CATEGORY_SEXUALLY_EXPLICIT\", \"HARM_CATEGORY_DANGEROUS_CONTENT\"]]\n",
+ "\n",
+ " print(f\"Attempting to generate content for lamp RAG model: {RAG_MODEL_NAME_LAMP}\")\n",
+ " response = client.models.generate_content(\n",
+ " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{RAG_MODEL_NAME_LAMP}\", # Vertex model path\n",
+ " contents=contents_for_rag,\n",
+ " system_instruction=system_instruction_part, # Pass system instruction here\n",
+ " tools=tools_for_rag,\n",
+ " safety_settings=safety_settings_rag,\n",
+ " generation_config=rag_generation_config\n",
+ " )\n",
+ " print(\"Lamp RAG content generation complete.\")\n",
+ "\n",
+ " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
+ " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
+ " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
+ " print(\"Error: Lamp RAG model response is empty or malformed.\")\n",
+ " if hasattr(response, 'prompt_feedback') and response.prompt_feedback.block_reason:\n",
+ " print(f\"Prompt blocked due to: {response.prompt_feedback.block_reason_message}\")\n",
+ " return None\n",
+ "\n",
+ " final_result = \"\"\n",
+ " if response.candidates[0].content.parts:\n",
+ " for part in response.candidates[0].content.parts:\n",
+ " if hasattr(part, 'text'):\n",
+ " final_result += part.text\n",
+ " final_result = final_result.strip()\n",
+ "\n",
+ " if not final_result and hasattr(response, 'text'): # Fallback\n",
+ " final_result = response.text.strip()\n",
+ "\n",
+ " print(f\"Lamp RAG Classification result: {final_result}\")\n",
+ " return final_result\n",
+ " except AttributeError as ae:\n",
+ " error_detail = str(ae)\n",
+ " print(f\"AttributeError during lamp RAG classification (Step 2): {error_detail}.\")\n",
+ " return None\n",
+ " except Exception as e:\n",
+ " print(f\"An unexpected error occurred during lamp RAG classification (Step 2): {e}\")\n",
+ " return None\n",
+ "\n",
+ "# --- Main Lamp Orchestration Function ---\n",
+ "def analyze_and_classify_lamp(client: typing.Optional['genai_module.Client'], gcs_url: str):\n",
+ " print(f\"\\nStarting lamp analysis for image: {gcs_url}\")\n",
+ " if not client:\n",
+ " print(\"Lamp analysis: GenAI client is not provided or not initialized. Exiting lamp analysis.\")\n",
+ " return\n",
+ " lamp_description = get_lamp_description_from_image(client, gcs_url)\n",
+ " if lamp_description:\n",
+ " classification_result = classify_lamp_with_rag(client, lamp_description)\n",
+ " if classification_result: print(f\"\\n=== Final Lamp Classification for {gcs_url} ===\\n{classification_result}\\n===============================================\")\n",
+ " else: print(f\"\\nFailed to get lamp classification for {gcs_url} after obtaining description.\")\n",
+ " else: print(f\"\\nNo valid lamp description obtained for {gcs_url}. Cannot proceed to lamp classification.\")\n",
+ "\n",
+ "# --- Function for Road Sign Classification ---\n",
+ "def classify_road_sign(client: typing.Optional['genai_module.Client'], image_data: bytes, model_name: str = DEFAULT_ROAD_SIGN_MODEL) -> dict:\n",
+ " print(f\"\\n--- Classifying road sign using model: {model_name} ---\")\n",
+ " if not _libraries_loaded_successfully or not client:\n",
+ " return {\"error\": \"Client/Types not loaded\", \"details\": \"GenAI library (Client, client.models or types.Part) not available.\"}\n",
+ " if not isinstance(image_data, bytes): return {\"error\": \"Invalid input type\", \"details\": \"image_data must be bytes.\"}\n",
+ " try:\n",
+ " prompt_text = \"\"\"Classify the road sign in this image into one of the following categories:\n",
+ " * Stop, * Yield, * Speed Limit, * Pedestrian Crossing, * No Parking, * Turn, * Do not enter, * Street name, * Other\n",
+ " Provide the category and a description in JSON format.\n",
+ " Provide a field called \"sign_quality\" (Good, Fair, Poor, Critical, Other).\n",
+ " If image quality is poor, include notes in \"image_quality_notes\".\n",
+ " Return as a json object. Example:\n",
+ " ```json\n",
+ " {\n",
+ " \"category\": \"Stop\", \"sign_quality\": \"Good\",\n",
+ " \"description\": \"A red octagonal stop sign is clearly visible.\",\n",
+ " \"image_quality_notes\": \"image is clear\"\n",
+ " }\n",
+ " ```\"\"\"\n",
+ " image_part = gg_types.Part.from_bytes(data=image_data, mime_type=\"image/jpeg\")\n",
+ "\n",
+ " # Construct contents list:\n",
+ " # The prompt should be a Part if it's multi-turn or complex, or just a string.\n",
+ " # For client.models.generate_content, contents is a list of Content objects or dicts.\n",
+ " # Each Content object has a 'parts' list.\n",
+ " contents_for_road_sign = [\n",
+ " gg_types.Content(parts=[gg_types.Part.from_text(prompt_text), image_part])\n",
+ " ]\n",
+ "\n",
+ " print(f\"Attempting to generate content for road sign model: {model_name}\")\n",
+ " # Use client.models.generate_content\n",
+ " response: 'gg_types.GenerateContentResponse' = client.models.generate_content(\n",
+ " model=f\"projects/{GCP_PROJECT_ID}/locations/{GCP_LOCATION}/publishers/google/models/{model_name}\", # Vertex model path\n",
+ " contents=contents_for_road_sign\n",
+ " )\n",
+ " print(\"Road sign classification content generation complete.\")\n",
+ "\n",
+ " if not hasattr(response, 'candidates') or not response.candidates or \\\n",
+ " not hasattr(response.candidates[0], 'content') or not response.candidates[0].content or \\\n",
+ " not hasattr(response.candidates[0].content, 'parts') or not response.candidates[0].content.parts:\n",
+ " return {\"error\": \"Model response empty\", \"details\": \"No content parts in response.\"}\n",
+ "\n",
+ " json_text = \"\"\n",
+ " if response.candidates[0].content.parts:\n",
+ " for part in response.candidates[0].content.parts:\n",
+ " if hasattr(part, 'text'):\n",
+ " json_text += part.text\n",
+ " json_text = json_text.strip()\n",
+ "\n",
+ " if not json_text and hasattr(response, 'text'): # Fallback\n",
+ " json_text = response.text.strip()\n",
+ "\n",
+ " print(f\"Raw response text from road sign model: {json_text[:200]}...\")\n",
+ "\n",
+ " if json_text.startswith(\"```json\"): json_text = json_text[7:]\n",
+ " if json_text.endswith(\"```\"): json_text = json_text[:-3]\n",
+ "\n",
+ " result_dict = json.loads(json_text.strip())\n",
+ " print(f\"Parsed road sign classification: {result_dict}\")\n",
+ " return result_dict\n",
+ " except AttributeError as ae:\n",
+ " error_detail = str(ae)\n",
+ " print(f\"AttributeError during road sign classification: {error_detail}.\")\n",
+ " return {\"error\": \"AttributeError\", \"details\": error_detail}\n",
+ " except json.JSONDecodeError as je:\n",
+ " return {\"error\": \"JSONDecodeError\", \"details\": str(je), \"raw_response\": json_text} # Return the text we tried to parse\n",
+ " except Exception as e:\n",
+ " return {\"error\": \"Unexpected error\", \"details\": str(e)}\n",
+ "\n",
+ "# --- Example Usage ---\n",
+ "if __name__ == \"__main__\":\n",
+ " if not _libraries_loaded_successfully:\n",
+ " print(\"\\nCannot run examples: Critical libraries (GenAI Client with .models or Types.Part) failed to load.\")\n",
+ " print(\"RECOMMENDATION: Run 'pip install --upgrade google-generativeai google-cloud-aiplatform' in your Colab environment and RESTART THE RUNTIME.\")\n",
+ " else:\n",
+ " print(\"\\nLibraries loaded. Initializing client for examples...\")\n",
+ " master_client = initialize_genai_client()\n",
+ "\n",
+ " if master_client:\n",
+ " print(\"\\n--- Running Lamp Analysis Examples (Commented Out) ---\")\n",
+ " # analyze_and_classify_lamp(master_client, \"gs://utility-poles/o1:0010f9db7600bf7de3cd2874d8ae421c_00250082.jpg\")\n",
+ " print(\"\\n\\n--- Running Road Sign Classification Example ---\")\n",
+ " dummy_jpeg_bytes = (\n",
+ " b'\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00\\x01\\x00\\x01\\x00\\x00\\xff\\xdb\\x00C\\x00\\x08\\x06\\x06\\x07\\x06\\x05\\x08\\x07\\x07\\x07\\t\\t\\x08\\n\\x0c\\x14\\r\\x0c\\x0b\\x0b\\x0c\\x19\\x12\\x13\\x0f\\x14\\x1d\\x1a\\x11\\x11\\x18!\\x1e\\x18\\x1a\\x1d(%\\x1e\\x1f#\\x1c\\x1c #%)\\x17\\x1f\\x1f+('\n",
+ " b'\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\xff\\xc9\\x00\\x0b\\x08\\x00\\x01\\x00\\x01\\x01\\x01\\x11\\x00\\xff\\xda\\x00\\x08\\x01\\x01\\x00\\x00?\\x00\\xd2\\xcf \\xff\\xd9'\n",
+ " )\n",
+ " print(\"Classifying dummy road sign image...\")\n",
+ " # Note: The 'client' parameter to classify_road_sign is the initialized vertex_ai_client\n",
+ " classification_result = classify_road_sign(master_client, dummy_jpeg_bytes, model_name=DEFAULT_ROAD_SIGN_MODEL)\n",
+ "\n",
+ " print(\"\\n=== Road Sign Classification Result ===\")\n",
+ " if \"error\" in classification_result:\n",
+ " print(f\"Error: {classification_result['error']}\\nDetails: {classification_result.get('details', 'N/A')}\")\n",
+ " if \"raw_response\" in classification_result: print(f\"Raw Model Response: {classification_result['raw_response'][:500]}...\")\n",
+ " else:\n",
+ " print(json.dumps(classification_result, indent=4))\n",
+ " print(\"======================================\")\n",
+ " else:\n",
+ " print(\"\\nGenAI client initialization failed. Cannot run examples.\")\n",
+ " print(\"\\nProcessing finished.\")\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "BeyUgeu0beKc",
+ "metadata": {
+ "id": "BeyUgeu0beKc"
+ },
+ "source": [
+ "# Insert image data int Bigquery\n",
+ "\n",
+ "We may want to store the image classification reponse in a BQ table."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "JfxGpi0gbbNw",
+ "metadata": {
+ "id": "JfxGpi0gbbNw"
+ },
+ "outputs": [],
+ "source": [
+ "\n",
+ "\n",
+ "from google.cloud import bigquery\n",
+ "from typing import Dict, Any\n",
+ "\n",
+ "#PROJECT_ID = \"imagery-insights-sandbox\" # Replace with your project ID\n",
+ "ANALYSIS_DATASET_ID = \"imagery_analysis\" # @param {type: \"string\"}\n",
+ "\n",
+ "def insert_image_report_to_bq(image_report: Dict[str, Any]) -> None:\n",
+ " \"\"\"\n",
+ " Inserts a single image report dictionary into a BigQuery table.\n",
+ "\n",
+ " Args:\n",
+ " image_report: A dictionary representing the image report.\n",
+ " \"\"\"\n",
+ " ANALYSIS_RESULTS_TABLE = \"road_sign_data\" # @param {type: \"string\"}\n",
+ "\n",
+ " client = bigquery.Client(project=PROJECT_ID)\n",
+ " table_ref = client.dataset(ANALYSIS_DATASET_ID).table(ANALYSIS_RESULTS_TABLE)\n",
+ "\n",
+ " try:\n",
+ " errors = client.insert_rows_json(table_ref, [image_report]) # Corrected line\n",
+ " if errors:\n",
+ " print(f\"Error inserting image report: {errors}\")\n",
+ " else:\n",
+ " print(\"Image report inserted successfully.\")\n",
+ " except Exception as e:\n",
+ " print(f\"An error occurred during BigQuery insertion: {e}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "_yIYkO6IbsIz",
+ "metadata": {
+ "id": "_yIYkO6IbsIz"
+ },
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "id": "H2m-WNIob4Ww",
+ "metadata": {
+ "id": "H2m-WNIob4Ww"
+ },
+ "source": [
+ "# Create the data element\n",
+ "\n",
+ "We want to combine results from the original query along with image analysis results in a single dict object.\n",
+ "\n",
+ "With this object we can either\n",
+ "\n",
+ "1. Insert in BQ\n",
+ "2. Just visualize the data as pandas dataframe\n",
+ "3. export as json/csv\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "Svh317jJaLkF",
+ "metadata": {
+ "id": "Svh317jJaLkF"
+ },
+ "outputs": [],
+ "source": [
+ "import requests\n",
+ "import PIL.Image\n",
+ "import importlib\n",
+ "import io\n",
+ "from typing import List, Dict, Any\n",
+ "from decimal import Decimal\n",
+ "import datetime\n",
+ "importlib.reload(datetime)\n",
+ "\n",
+ "def process_image_reports(results: List[Any]) -> List[Dict[str, Any]]:\n",
+ " \"\"\"\n",
+ " Processes a list of results, retrieves images from signed URLs, classifies them, and inserts into BigQuery.\n",
+ " \"\"\"\n",
+ " all_reports: List[Dict[str, Any]] = []\n",
+ " for image_counter, row in enumerate(results, 0):\n",
+ " track_id: Any = getattr(row, \"trackId\", None)\n",
+ " observation_id: Any = getattr(row, \"observationId\", None)\n",
+ " geographic_point: Any = getattr(row, \"geographic_point\", None)\n",
+ " maps_url: Any = getattr(row, \"google_maps_url\", None)\n",
+ " capture_timestamp: Any = getattr(row, \"captureTimestamp\", None)\n",
+ " bbox: Any = getattr(row, \"bbox\", None)\n",
+ " signed_url: str = getattr(row, \"signedUrl\", \"\")\n",
+ "\n",
+ " print(f\"Processing image {image_counter}: trackId={track_id}, observationId={observation_id}\")\n",
+ " print(f\"Processing image {image_counter}: timestamp={capture_timestamp}, observationId={observation_id}\")\n",
+ "\n",
+ " try:\n",
+ " response = requests.get(signed_url, stream=True, timeout=10)\n",
+ " response.raise_for_status()\n",
+ " image_data: bytes = response.content\n",
+ "\n",
+ " gemini_response: dict = classify_road_sign(image_data)\n",
+ "\n",
+ " print(f\"The classification type is ##### {gemini_response}\")\n",
+ "\n",
+ " if \"error\" in gemini_response:\n",
+ " print(f\" Error classifying image {image_counter}: {gemini_response['error']}\")\n",
+ " category = None\n",
+ " description = None\n",
+ " image_quality_notes = None\n",
+ " sign_quality = None\n",
+ " else:\n",
+ " category = gemini_response.get(\"category\")\n",
+ " description = gemini_response.get(\"description\")\n",
+ " image_quality_notes = gemini_response.get(\"image_quality_notes\")\n",
+ " sign_quality = gemini_response.get(\"sign_quality\")\n",
+ "\n",
+ " # Convert captureTimestamp to ISO 8601 string\n",
+ " capture_datetime_str = None\n",
+ " if capture_timestamp:\n",
+ " if isinstance(capture_timestamp, datetime.datetime):\n",
+ " capture_datetime_str = capture_timestamp.isoformat()\n",
+ " else:\n",
+ " print(f\"Warning: Unexpected captureTimestamp type: {type(capture_timestamp)}\")\n",
+ " capture_datetime_str = None\n",
+ "\n",
+ " image_report: Dict[str, Any] = {\n",
+ " \"trackId\": str(track_id),\n",
+ " \"observationId\": str(observation_id),\n",
+ " \"geographic_point\": str(geographic_point),\n",
+ " \"mapsURL\": str(maps_url),\n",
+ " \"captureTimestamp\": capture_datetime_str, # Use ISO 8601 string\n",
+ " \"signedUrl\": str(signed_url),\n",
+ " \"category\": category,\n",
+ " \"description\": description,\n",
+ " \"image_quality_notes\": image_quality_notes,\n",
+ " \"sign_quality\": sign_quality,\n",
+ " }\n",
+ "\n",
+ " # Convert bbox to JSON string\n",
+ " bbox_data = bbox\n",
+ " if bbox_data:\n",
+ " def convert_decimal(obj):\n",
+ " if isinstance(obj, Decimal):\n",
+ " return float(obj)\n",
+ " raise TypeError\n",
+ "\n",
+ " image_report['bbox'] = json.dumps(bbox_data, default=convert_decimal)\n",
+ "\n",
+ " all_reports.append(image_report)\n",
+ " print(f\"image_report to be inserted: {image_report}\")\n",
+ " insert_image_report_to_bq(image_report)\n",
+ "\n",
+ " except requests.exceptions.RequestException as e:\n",
+ " print(f\" Error processing image {image_counter}: {e}\")\n",
+ " except PIL.UnidentifiedImageError as e:\n",
+ " print(f\" Error processing image {image_counter}: Invalid image data - {e}\")\n",
+ " except Exception as e:\n",
+ " print(f\" Error processing image {image_counter}: {e}\")\n",
+ "\n",
+ " return all_reports\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "pKhnr-GYbwRx",
+ "metadata": {
+ "id": "pKhnr-GYbwRx"
+ },
+ "source": [
+ "# Analyzie the images with Gemini"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "vsb8vrf0iyfE",
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "vsb8vrf0iyfE",
+ "outputId": "450acc03-f67d-4f29-afe4-f82bd8d39e78"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1;30;43mStreaming output truncated to the last 5000 lines.\u001b[0m\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a \\'no parking\\' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43740690322149367, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d8259517def436febb7edd575c263e:ffff005f', 'observationId': 'o1:adb0315c208fa608026a8bf1ba028207:00110060', 'geographic_point': 'POINT(-111.934369392931 40.7594460125518)', 'mapsURL': 'https://maps.google.com/?q=40.759446,-111.934369', 'captureTimestamp': '2019-05-01T23:23:36.190150+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadb0315c208fa608026a8bf1ba028207%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=954e4995775cb00a37d977cd6b5c201b9cefc5a63cc04a34d1907365ec0532a3e122a1de924cdc3e2f6ff9358a9a5b9d8128785013e5db13ab8353443d4d02e92fab16a92e2da0104830269f4afd234cd2270b11df282e6a44a72f6cec253d6ea3a6f28b00ae2548d82a39ea6d28ac82bbebeb44e79bac497191f4665d56e310e1abe6c8fb0345dafb84a0e056ffd0cc9c2e07c1e518b88b94ef3d638c620c47f423e20b8bacb796ce72d6e380ebc72626f11b26f55291c5ad8324acd302fba024016274a756e9436ac7fc452deebd76f40bc5a112a22921db207cd5e298f6c2e37031e1c0f5faf26b473ee2540042140e28d23b6420e1707d49585d277f8f88', 'category': 'No Parking', 'description': \"The sign indicates a 'no parking' zone specifically for a bus stop, with a 5 minute parking limit allowed from 8 AM to 4 PM for driver to leave vehicle.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2013.0, \"x\": 1172.0}, \"hi\": {\"y\": 2172.0, \"x\": 1253.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5090: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:e94b7a63caf8593151c7e7711697d3b2:00110060\n",
+ "Processing image 5090: timestamp=2024-01-30 16:24:41.879033+00:00, observationId=o1:e94b7a63caf8593151c7e7711697d3b2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\\\\"Sunshine Dr N\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15273912074202198, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:e94b7a63caf8593151c7e7711697d3b2:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2024-01-30T16:24:41.879033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae94b7a63caf8593151c7e7711697d3b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa83eb9f56cbc4efea63c6d96ead57622f0f8e209f51d913d6b83cd7d5769a81663bdf9567f0b5b6194b4f674291d208d266974c70275bdc87efc3e5947a23fe16c929f95f8c5205ae1823e02768884d2ccf7617a886e8d371385a9a7b9c7eab20dae9386f38a6d80841678e6f8c96b5dbc4246daeff0b9aa00adcdbf3d98717d76008bdc8e2f15cc32b64b56b28dddb42354b478c38da003e4cc11d6633c797d47d0eae04d77d4cc011e95c3de5be6b7b79b741d9bedb14a914cd588b0fb97bcc676af6d984025f54f937b5669a0487733675edd5709f9e2af48b8c81e592a2db86ce5f0cf8bd6adf7cb9f9cbfcfef85796ffe0578ae7b7a24b9c8ac9d6a66f', 'category': 'Street name', 'description': 'A green street name sign that reads \"Sunshine Dr N\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2301.0, \"x\": 317.0}, \"hi\": {\"y\": 2435.0, \"x\": 870.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5091: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:0cf9302da38e5019f24b7a3192cf0d63:00110060\n",
+ "Processing image 5091: timestamp=2016-06-01 19:37:38.473376+00:00, observationId=o1:0cf9302da38e5019f24b7a3192cf0d63:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with \\'Sunshine Dr East\\' on the top and \\'Sunshine Dr North\\' on the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10560789500197319, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:0cf9302da38e5019f24b7a3192cf0d63:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:38.473376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0cf9302da38e5019f24b7a3192cf0d63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=12d15453fd96ebc302d164ca403db15ac97d7efbb5b04d707e0891d0c7c15ee3b032d1135abf75d45aa47b60b0566a36f7a45a63a680902ab6b11fff5fab102b5b2e7747da9bcb5c17a2d6ca142d002a8aadc21a4fda8473c323c58553e1ab998f4d55c7d9c6ab370476686acf064d1dc1fee7330c9f51d99c78a343afebcc06aad3fa6f9c0e6cf5f0942aaaf6e85bffcc75312390d9245a1b816af15fac146acf9942492aba15de3d903212e6c9bfeeca4e3f3e5a0faff7286e68e773a696f45e7a3a99d7eceded302a5563ed3b4c9f7b71c68b125174d724f2335c7c467a80329c866d86079290bc7b745ae9144404662ae41bf6241015b9d624ed552d7dab', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Sunshine Dr East' on the top and 'Sunshine Dr North' on the bottom.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1106.0, \"x\": 0.0}, \"hi\": {\"y\": 1144.0, \"x\": 179.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5092: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:8949d3bed84973526bf70a533ceaa1a9:00110060\n",
+ "Processing image 5092: timestamp=2016-06-01 19:37:40.626863+00:00, observationId=o1:8949d3bed84973526bf70a533ceaa1a9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two green street name signs, one above the other. The top sign reads \\\\\"Sunshine Dr East\\\\\" and the bottom sign reads \\\\\"Sunshine Dr North\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.073867315199317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:8949d3bed84973526bf70a533ceaa1a9:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:40.626863+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8949d3bed84973526bf70a533ceaa1a9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092627Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4a7e4abc8c0817bd74a21f2adf4301e10661c624577c6f26deaf47408b4ea58d7a1d61182e05346e6011404cf101908ef299a74fadf5b5894cac2224b38d1a85aae34c1145c6e888437dafaf4992d7f1f5588dfbe069dac8e20ffbf94fc21036f50f9b85697ff2eb2355f24c00c7f7970f10d23b4e9f1fe440aaab1f15a09265ac305718df04b4101d26fa33316d823e574692e2acc63de942fb6f29db51fcd86cc47099cd48a77cd30f777c4b5319f2f61b6eeae9f48cf5925a5f7b5db94040603889cd07e4a8154fba052b5b3e143ce1cb9e076fd592d579586e9e917fdc33de344b9ca2d5949b12ecc70a6fb89ec87d55b04ddacd5e1dded17aa041f0f75', 'category': 'Street name', 'description': 'The image shows two green street name signs, one above the other. The top sign reads \"Sunshine Dr East\" and the bottom sign reads \"Sunshine Dr North\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 142.0, \"x\": 767.0}, \"hi\": {\"y\": 206.0, \"x\": 909.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5093: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:27639c5d192e2d8f6c460d1c7542103b:00110060\n",
+ "Processing image 5093: timestamp=2024-01-30 16:24:39.415066+00:00, observationId=o1:27639c5d192e2d8f6c460d1c7542103b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs. One reads \\'Sunshine Dr E\\' and the other reads \\'Sunshine Dr N\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13017322647739465, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2041, total_token_count=2112) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:27639c5d192e2d8f6c460d1c7542103b:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2024-01-30T16:24:39.415066+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27639c5d192e2d8f6c460d1c7542103b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=719577778ba2cb19ce416189836ce26879b722e378a6b4f797787dcc46578893b9a9e127a374b5b3738739cf9681a3961c8e814be3d4b2bd503a68971a69b918b782acd0000c277cc5057d93a411129fe642469f3bad35c18944c6cc082baf11ad7cf036ba6af6cefe5c8b6e1a708c2ec7a9e45386d66ddfb6bf9702d68e811609f385d65f1b86bec0cbf7244baf7cadc6977e8f30fc0653f4a917df37a3eac8d82ecbb28a542ba4d5111f56c6b0728d0cbca8bc672da75cd02bca24a81e4b5b7ff4cbe5898d54829a504d7e0a7fc6db6b5a2df8f6b3f33311206fe031804e099187abb2bb4211b82ceb1650eb728411711db3af3f20f27f975c7ad0574292b2', 'category': 'Street name', 'description': \"The image shows street name signs. One reads 'Sunshine Dr E' and the other reads 'Sunshine Dr N'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3228.0, \"x\": 2699.0}, \"hi\": {\"y\": 3274.0, \"x\": 2869.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5094: trackId=t1:02d90e11b43976306f2ce636ad43b6ed:ffff005f, observationId=o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060\n",
+ "Processing image 5094: timestamp=2016-06-01 19:37:38.473376+00:00, observationId=o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street name sign. The upper sign reads \\\\\"Sunshine Dr E\\\\\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.\",\\n \"image_quality_notes\": \"The image quality is a little blurry, but the main sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47823693617334906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d90e11b43976306f2ce636ad43b6ed:ffff005f', 'observationId': 'o1:9ab69d5fd24e23d2fb1b9a8238d2cc2e:00110060', 'geographic_point': 'POINT(-81.9042898895483 28.0319579080813)', 'mapsURL': 'https://maps.google.com/?q=28.031958,-81.904290', 'captureTimestamp': '2016-06-01T19:37:38.473376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ab69d5fd24e23d2fb1b9a8238d2cc2e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8c20e962b7b0432239accb7b89d16dbe422e3185b5f194dc8cb70a7f2a0aabe6613867b3267f12f95cdee8828cb167eb55e9c6f2284eaa785aab0bb3a5cac61faa18460518d9a609a6fb9c909245b26d9c8da6e988367886e482fc635273a0f4e398aee7e54b8a57f72b5db5f02a96c5023164f0bce95e55b099a6d764c7b3e45d0ec10dc559a2a99ade1c38057e97ce801a894ee8db4d4dfa39d2e6e5bc4823a26b8d7def2aebebfa647a58c078f17a220eaf3ed970e4f8d96b0f6f24db4b6c5fddc4715edecdfff3b826183af343735001b4c4a2fc8f6cd49f4b214265640969baa48ec589e25771f6c2d7249bb6df9a2a9eaa808e66b653c9f59bf2e573b6', 'category': 'Street name', 'description': 'The image shows a street name sign. The upper sign reads \"Sunshine Dr E\". There\\'s a second sign just below the first but I am not sure what it says. Both signs appear to be green with white letters.', 'image_quality_notes': 'The image quality is a little blurry, but the main sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 787.0, \"x\": 1779.0}, \"hi\": {\"y\": 846.0, \"x\": 1945.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5095: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:26417b42fe84cf823c574faf22c63aeb:00110060\n",
+ "Processing image 5095: timestamp=2021-11-05 18:07:09.547805+00:00, observationId=o1:26417b42fe84cf823c574faf22c63aeb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a construction zone marker with alternating white and orange stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23617178706799524, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:26417b42fe84cf823c574faf22c63aeb:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.547805+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26417b42fe84cf823c574faf22c63aeb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=26c2202164039fd8e37e63d47dc472dd2b0e8af4a5715ef8ac69af4993b3238b909ea375ec609dfdb0dee0e4f940520aac604d0438c817c7326b5eeb833e39f07f22a3dfd28e051ff2daffb718f80acb26f120ac6501a34b35c9d8569f0fe37d56b87ca6443dbc718c0d45ec6a154bb6bc53c1c7e705f97e4023def4cea0cdcab404c7d66a61260666f92d0ae48e803bbeb9c3243e996c884f02ab2f840eb1a8f2233b134e77fef0122c76128dcd1242307d3e640535f639085db8bc6180003a9bc27796902808dccb3da8006a4ab2c14b4d984544a605496c7b778ed64256d438e331442ac4afc557bae77848e505c2c0605031e85e3b4e34dbd33ebe50da3c', 'category': 'Other', 'description': 'This is a construction zone marker with alternating white and orange stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3766.0, \"x\": 2297.0}, \"hi\": {\"y\": 4135.0, \"x\": 2394.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5096: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:670302864aa844cc50d55553cec0918e:00110060\n",
+ "Processing image 5096: timestamp=2021-11-05 18:07:09.247812+00:00, observationId=o1:670302864aa844cc50d55553cec0918e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1866093635559082, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:670302864aa844cc50d55553cec0918e:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.247812+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A670302864aa844cc50d55553cec0918e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8624c79a1b66c838b13042576a15d9c52bdcfc912829962ae4784f91598179e7031901a1dd0bf0e99c748a7d21a95634265fdd2421cd38758c28dcf6b2aee78d08e58ccaac2d98b3a9fca836455c356196c33c3e2efff80665eddcf1229b8f0ad5c13f3889f232d585bd82a164b49f42267d8a2ed87a572b8a94c2760e6c1d6c8ef9c6acd2ac5f356649cd8762d65e1a7bf9f5e8abca6ade7df0f737636debd18dc10130dd4ac543fe219e782c30b96f308e2fa0c9a9d3f260fa42811d48c8cc7b5c2a04877012dd0d04179c8128b61d44fd6cc670af727311a69fb0f984346b7e9c5be550103e9ec80f83f6aeda73d342fd37c31edef808d79f7ad75403106', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic management purposes. It is orange with reflective white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3600.0, \"x\": 2679.0}, \"hi\": {\"y\": 4493.0, \"x\": 2880.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5097: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:7d7d301f478458826336d649af51aace:00110060\n",
+ "Processing image 5097: timestamp=2021-11-05 18:07:10.147817+00:00, observationId=o1:7d7d301f478458826336d649af51aace:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is a traffic cone. It is orange and white striped.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15426961202470083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:7d7d301f478458826336d649af51aace:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:10.147817+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d7d301f478458826336d649af51aace%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92acd638381f528e1655dc27913603099a5c2c09a8e23db854c250093d77ac1fa53cff6d3041ae7cca560b86015f762ee32d439c16738059629f91b3203580b34efe22d64424ac819df0f993292b6da76a3bfacf1d1d1f2fb5216ae6704eb141133fdf65ca217564855871700c386eded935554e1c7fdacd23956ce87ee18e3e4bd28f07c1872652932fdb51fb5d3276cc6ac135cdad07b38c0fd97591b49d4d2f311e08b0b41c1f9e8425eef86d333270677d088f33eec2f75cec84b3c603dc1749d9927db38cbfe2b62c0ac0c3da96ad6fcd175f7d93353a8cb233a4175c956a7f84b8132d59f7c08b533101de3e6b8a17f5f80e78ea11dcfd79202fc22d0e', 'category': 'Other', 'description': 'The object in the image is a traffic cone. It is orange and white striped.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3416.0, \"x\": 2956.0}, \"hi\": {\"y\": 3584.0, \"x\": 3007.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5098: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060\n",
+ "Processing image 5098: timestamp=2021-11-05 18:07:09.247812+00:00, observationId=o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3928672105838091, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2557, total_token_count=2635) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:ca4a0a4d4a8a8a96787174a28beeecdd:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.247812+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aca4a0a4d4a8a8a96787174a28beeecdd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87d516a7ce12f001533999a4cc13bf4ccb25977ab18994f730da2367022fade444e096a7d75199f3ef3143b92af0064ad53717b91dacab090def563f77cdd7d419fa3d9e6ba72a569765e6ae43aab9130af09749fd743c025c59f468b93c08d089fd512ba5a949199792138eb560ac39250db6f48e3a4a1ad002123780f3ba0fc637d1246ff3f31f48088458eb72d5baf8ecd9aa69d7152808c9bcc1ee107c4c971d9559f2024bd901965f787113f963801dbbcbe80bf9790751dcb06977ab0e5895bf2e97b8de0cf13f151c242a55ddde362cd1d1ff47ba5e4cb1f7a21c9f8aea95556580b6a1f9e2e8ed6c7ac5cfef78e6e0435d4fbc01f133bf72626e3b3c', 'category': 'Other', 'description': 'The object is a red and white delineator or channelizer post. It is a vertical traffic control device used to guide traffic or highlight road hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4446.0, \"x\": 353.0}, \"hi\": {\"y\": 5278.0, \"x\": 612.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5099: trackId=t1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f, observationId=o1:8be70deb22cba56ccc8d765e94010fca:00110060\n",
+ "Processing image 5099: timestamp=2021-11-05 18:07:09.847848+00:00, observationId=o1:8be70deb22cba56ccc8d765e94010fca:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic cone with orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1378087043762207, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=1525, total_token_count=1580) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02d943ce56dd8c87f43b2ee3bbe83f49:ffff005f', 'observationId': 'o1:8be70deb22cba56ccc8d765e94010fca:00110060', 'geographic_point': 'POINT(-111.90260369229 40.7785827851028)', 'mapsURL': 'https://maps.google.com/?q=40.778583,-111.902604', 'captureTimestamp': '2021-11-05T18:07:09.847848+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8be70deb22cba56ccc8d765e94010fca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abd7550eb92b47f3d9a0aae0abc85ddbe93cf2093909521ff4bb096f272b3e1fa8a2d2df78b789c13f68a5b311cbcb4cda79469b797ffc7866dacad84f9e078bdb0ed4f9119106b350c2b29b94a7e90ea18c706ed5fbe761f8eeab3e1c900c79a58c2d61e94bef544474f415016fae0b9e1954294b48bc43d8392341c764e680d5b00c47c58deeeb23fbf616dd88bbee30aded347f985a531e06cf70b33ae97f01b74d4111d921b46660213c74cfa6b3f9bea42dce5c29dbf6f0a3ac5c18e208d25a1509e0c1acebefaff9bea3d5935a2bb3b7456c9866d17b5802123c0be92ecbd3daf2c7b9578066f9832a745b5cbb9f3c181180be6714950fa5fabab2cefa', 'category': 'Other', 'description': 'A traffic cone with orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3527.0, \"x\": 2770.0}, \"hi\": {\"y\": 3750.0, \"x\": 2830.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5100: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:8ca508fb4dec16c8c2a42905766d1728:00110060\n",
+ "Processing image 5100: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:8ca508fb4dec16c8c2a42905766d1728:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone. It\\'s orange with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1685226809593939, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:8ca508fb4dec16c8c2a42905766d1728:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ca508fb4dec16c8c2a42905766d1728%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b9776c6bad3cc98a170dcb8282c9e006e87526404052b5acedde5cc41d5158a1f8c7ea34b55af877b7a75a8d36b7af0e158ec5f1934982ef15c4df69038d7e1899913cc5f3a698099b145fa9fe09cf064a4c2bf346d3334ac37a3b860eca3d27f0a9fcd2064dfda95d97f2b9980d6de91fa73355f1b838522a37f35c8e3bae00b3d63a4e40a7fdfb636b18928114ffbd0c9f5d662d34d7713b3eb8ae769ce76122074d0dd27df7e3bbb5ee376c01be9b72edec0d3cb3c709bcb149ad52fc92847c1e11001f008d9f93eb97762337bc09c832cfc3d47101fd63fb400184123bb65fe794e81fbb5632031c5a0fd2ae0206b39a281b620fcf01ee4c93941b1c0c51', 'category': 'Other', 'description': \"The image shows a traffic cone. It's orange with white reflective stripes.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3163.0, \"x\": 3370.0}, \"hi\": {\"y\": 3793.0, \"x\": 3533.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5101: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:950e6888ff2fb7c756df318b5e278b12:00110060\n",
+ "Processing image 5101: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:950e6888ff2fb7c756df318b5e278b12:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white and orange striped traffic barrier is visible, mounted on a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23911488440728956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:950e6888ff2fb7c756df318b5e278b12:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A950e6888ff2fb7c756df318b5e278b12%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37f54fa63bfbab4a65a243e925b0176731b5daa49dc8768a723c232c6354a2eadfa596100a1b4bdac4c142cabcc2b8031d0abe2939e1682feb69823692d48dc7adbfdf252a1e0ec134201e3462128a28ccfc3778b9198f9c13608968d04613a14b5541b3b2f16828ffc545bb90e4dbd2ec3c4ee5716e4ac85fe97b08fcdc4f72f7d25353cbcfd5389b827964feb83671c81ceea30b31f2022e1531b345ca9db94e0a553ceb64f2c55282bfe76afdbd5b6455e97f46436efb1c7ee8f6f737fea5c4daa2191e3246b3855435c49868cf00a8eb59c7c63dea13ad6644476c4c17719373ebc78bdf2a48d754e952c7616a74f1f43d7054301426a2aa20e3f012b8f0', 'category': 'Other', 'description': 'A white and orange striped traffic barrier is visible, mounted on a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3518.0, \"x\": 2705.0}, \"hi\": {\"y\": 4356.0, \"x\": 2936.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5102: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:c10aa42369e791ae72085a1a88b155dd:00110060\n",
+ "Processing image 5102: timestamp=2022-06-24 20:11:16.286610+00:00, observationId=o1:c10aa42369e791ae72085a1a88b155dd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4226243019104004, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2557, total_token_count=2637) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:c10aa42369e791ae72085a1a88b155dd:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.286610+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac10aa42369e791ae72085a1a88b155dd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13fde203d6d80308207cdda739e1a664e77651f9526a0eefbd648858ef59dbb68fcdf671053a04156dfef96ec8218c319191e9fdc5187c7bb019ded90a31c43a00e1835818728a3ce35ec79dcea65d66a83ddc7a22e8ae81fabda6cf24da1fb1417e2b13b896e7734afef9c30c9a23832b15844daa3d215379d42d659461dd870ecf81ab567d24298bc9fb2d91b0ceda2c56ac2add2365ae1166951f5b3716bda3d70e42ef78b48e037d1760a7ec53f3c559b8e6c6001d205495fa520affcba04be9beacfecdc99b4ece95c6e0684c8ecb9ce0353b27c67bbf24518080c63de746681a3b6ed07002225c9a2871b36b6cfd64f00b9b75757204f42b28d3a25cb5', 'category': 'Other', 'description': 'The image shows a traffic barricade. It is white with diagonal orange stripes. This is used to direct traffic around construction zones. There is also a cone in the background.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4170.0, \"x\": 1323.0}, \"hi\": {\"y\": 4749.0, \"x\": 1455.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5103: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:abeb72154c1c637d380fe9cc70baaa4c:00110060\n",
+ "Processing image 5103: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:abeb72154c1c637d380fe9cc70baaa4c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It\\'s a type of traffic warning device.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34499271099384016, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2557, total_token_count=2635) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:abeb72154c1c637d380fe9cc70baaa4c:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aabeb72154c1c637d380fe9cc70baaa4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13d5bcb8ac322f7dce0c13e30073fb96e47301a9e66969a6b030adc6748685f885b9c7297fa0df8a41e3f85804fb86fa94ef30898a476b4956f40b243f7f56d7f20be4f9898163514b3f92f9a27900aad1816f253fb4a0b9ab6c37070f6fced8c5c2f91428c6f03a1c1492c2d8c4910523cecbed6552ec2db9822a4a554285c4700752e129d8ed3b79d2fc511fad17b95ed65c7affdd45a1ca9238087dd8c23f68b780cf00f9a5a4a2b13d43b696d98d9df6b3aa197e119c0bdb6462a114ce5f9b73b6f1e23b2409efe013738fb0a697c3859304b825660bfaa55c5574b626cf90f48e71d723c89d75b8b792cfb78544c365c7d42c84729760bc2d95282d8738', 'category': 'Other', 'description': \"The sign is a vertical panel with orange and white diagonal stripes, used to mark construction or road work areas. It's a type of traffic warning device.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4424.0, \"x\": 116.0}, \"hi\": {\"y\": 5160.0, \"x\": 285.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5104: trackId=t1:02da5d0f53321ee6284e34ce90317db4:ffff005f, observationId=o1:27ce985f833908015c1b1b8645ce8c32:00110060\n",
+ "Processing image 5104: timestamp=2022-06-24 20:11:16.842748+00:00, observationId=o1:27ce985f833908015c1b1b8645ce8c32:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A white sign with diagonal orange stripes, typically used for construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16881156736804592, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02da5d0f53321ee6284e34ce90317db4:ffff005f', 'observationId': 'o1:27ce985f833908015c1b1b8645ce8c32:00110060', 'geographic_point': 'POINT(-111.899602355769 40.7423894299648)', 'mapsURL': 'https://maps.google.com/?q=40.742389,-111.899602', 'captureTimestamp': '2022-06-24T20:11:16.842748+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27ce985f833908015c1b1b8645ce8c32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2415272d2f398a826683f2aa0b9df98f7c44727c0f65c51eb952e844eb834c77e8b47ddca0d548b178632bdfb1d01c041100a15a3c1add79a5290bc06872e023d5822bb942a99422a2d8611b3dca389fe89ef8aaf22d04b843549c87509318e7e68eff1ebbcb310ade12e0a098f081c1e8660ac44f1011a18b5ff9565367b8be9c9b5a97d3a1fd501b8968cdc9330387bd26d95da628365e61c9df7cb933ef3b8ee27e4a5f96bb92d88327b4bf9c1c8d7e1651dbb97fdba8fd54c3fd8cee8d701840b51236b216ef03e2a6adc5f0db82ab804364fd32278433608cf4fe376faf1d300083103b58e9643a0516541226ebaf0e2a6c4d679c92b7a24c56a936fe27', 'category': 'Other', 'description': 'A white sign with diagonal orange stripes, typically used for construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3951.0, \"x\": 1260.0}, \"hi\": {\"y\": 4497.0, \"x\": 1368.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5105: trackId=t1:02dbe702f300d933ffae6dfd4161727b:ffff005f, observationId=o1:91b9f3972d736a7df209f628f9aee7b3:00110060\n",
+ "Processing image 5105: timestamp=2022-05-31 17:30:22.845744+00:00, observationId=o1:91b9f3972d736a7df209f628f9aee7b3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with a \\'P\\' crossed out and an arrow indicating the zone where parking is not permitted.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2673229490007673, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbe702f300d933ffae6dfd4161727b:ffff005f', 'observationId': 'o1:91b9f3972d736a7df209f628f9aee7b3:00110060', 'geographic_point': 'POINT(-111.947099467024 40.7726580514391)', 'mapsURL': 'https://maps.google.com/?q=40.772658,-111.947099', 'captureTimestamp': '2022-05-31T17:30:22.845744+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A91b9f3972d736a7df209f628f9aee7b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1bc167dbbdb8342f7002e083cb148f5d37dc18f61994480dc8b4fa37d423082ac9c7ebbde6481f2f2adefa1faf36437e7278681f6aed811ac780bb08cc18c4a0abfa26d98615231e7290027f3a7d114202bfc10598032f446a927dd0692ee4de6c342a259200b7230a9a473e34c2753d09a99d06c39f0f09cea34082a4f0f0f77d4752df4c97326b550dfe5804c11f2dba6657189b53ace2a903266b35c92f19dfe30df993cddb81156adf9cefa00b908e8422e4162713d1415257dee8b54f45dc273df121612b56d9547c7c1ba70e634c25d1b95395f7af05fbfbb7649201f0025878dc2b09c0c4f76cfbb15c129e31b28b65b1388472a490f8b47d3db7181', 'category': 'No Parking', 'description': \"A no parking sign with a 'P' crossed out and an arrow indicating the zone where parking is not permitted.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2292.0, \"x\": 715.0}, \"hi\": {\"y\": 2436.0, \"x\": 803.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5106: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060\n",
+ "Processing image 5106: timestamp=2021-05-05 18:14:21.310595+00:00, observationId=o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.39513855510287815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:a4ab7f06fcb88e7e4a282d0390f54854:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:21.310595+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4ab7f06fcb88e7e4a282d0390f54854%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f4071bf1259d37c7d19b92625c9bc58a4a8fa74f649070f02eca073b438b21b24e1215aaa91a3dd25a3c564a1043d89b1023a4d3da04369cb00a4dce0ecd23c2179714e779077a4c5dadffdd451a57925b3b739f58598d790ce666fc520adcf56a680fbf2e4e008224dca1afc7467a8c0aa553eadb412e717ab10deabd032db38d4d8fd4e3346e0a6b61890cab4123afd8b88089ed0cca5d8012eaaf7d99d0f982cddca9e4a994a0b770ff9bc6b2aed03be8705efc178734f2ff455f88bfaeaf962ead0e5977e94814264c1bf03eb597554d24600645d51ef5da0ddfadb30474c1604b44eba1e256d3b651b7c829a7792136c6df6d64f6820efcf2210482d4c', 'category': 'Other', 'description': 'The image shows a traffic cone on the road. Traffic cones are used for a variety of reasons, they are not permanent signs.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3440.0, \"x\": 2730.0}, \"hi\": {\"y\": 3515.0, \"x\": 2760.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5107: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:567cbff614a5e29e34f7e23aa99b7f70:00110060\n",
+ "Processing image 5107: timestamp=2021-05-05 18:14:21.662580+00:00, observationId=o1:567cbff614a5e29e34f7e23aa99b7f70:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16861195313303093, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:567cbff614a5e29e34f7e23aa99b7f70:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:21.662580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A567cbff614a5e29e34f7e23aa99b7f70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a99b57cf9e92cb53986c49cfb3bde90ccfb2bf12429e58e7464bd73c310a37554cefa27c5c816f89fe09036cff7af51f19edb4fd96c15537507ad12bf4176cea9e92308ab3d3af8aa76d99404c0616ca5b91d901b577a3c63ed5178ac12f65c04aa45dbbcda38a931c6c0db0dba31271f93bb52ff50f9c4d51ecef1e01df64d07a2de1258a39f553f56c1b6940fe205dd74602bd5e83fef445d4f3be0d16f45a2ba139d1d3683102f67b82230aaaddb0eb8b70384276356592fb016eb794b93ee4433f3d160c613ba66d8618eaf73f1713cc3c46fcd027eaabc18af0d134084f2d36790b612b9e6207b757623a8ee20e7008ca10951f2e672fd4e1b26a2cd01', 'category': 'Other', 'description': 'The image shows an orange traffic cone on the road. This is a temporary traffic control device, not a standard road sign.', 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3492.0, \"x\": 2578.0}, \"hi\": {\"y\": 3586.0, \"x\": 2616.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5108: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060\n",
+ "Processing image 5108: timestamp=2021-05-05 18:14:22.014577+00:00, observationId=o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.044021694748489944, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=493, total_token_count=547) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:433c4ceeb4ef5d4d4a6b99e7b4cb9db8:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:22.014577+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A433c4ceeb4ef5d4d4a6b99e7b4cb9db8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4c47f35f04b327eddd7a5d83069de0527e298aa3a4bf10340116454315a7d4f4692f516e3923c2adb290d0d862acca93ce9adb316aff8a972689507885a536a22748c3e458f9a257b4d567d20c790716acc18815c091ac837093114da9881cf8c791546c4319b9a8fccd6f46e5c4828234cebfcf2d5e646ac84b4a895fe7ec47cf8948940e0bc56954210e8c3fd1fba0384f5435995748fe58c0a7ae7b48d3bb8d7c789d3514d0aabea7f584db0838b5d03a3e084ace0020c4a1caf727c2fc12ea3197001f6ed4fd77913eec82b755a98e73550dc01b24e470989242c78d706687c116b66fe7dc0b6428837d2abed0d56a941cfd7c2405c4e8996c885568555', 'category': 'Other', 'description': 'The image shows an orange traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3554.0, \"x\": 2343.0}, \"hi\": {\"y\": 3672.0, \"x\": 2391.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5109: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:deac46062868c5142ffd92e067655db9:00110060\n",
+ "Processing image 5109: timestamp=2021-05-05 18:14:22.362602+00:00, observationId=o1:deac46062868c5142ffd92e067655db9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is an orange traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04828955834372002, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:deac46062868c5142ffd92e067655db9:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:22.362602+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adeac46062868c5142ffd92e067655db9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a9f9e0ddaac42868ef4be9532f54921d5d64309addb7d7c103ab8811b4d8c34c3a3014c3414070a48ff8a2b734a119b81d72b8eb1d381232791d8ec29fef78a2b36bbeb12dd67e0568faf6b5a34fbed4d4889ac804327a5d7efed9dbdefd900f037a1f0127d089f9de2340081f14dd9cb64cd38913dab429f2a2d4b66fa27eae2c91334255c57b7aa7dabee1a20f0fe1cec26fe001bdf5043be166f46e5930d2fab0ee4790ca4fec2deae37ef261facf7fc0b43a4b4c2a02bb8ff574d0e47f3cd259773803366c508c0411d0bb1ec2d931a6d1e58e8b0449e27e5e21ac3957de163816fd13dfdda665b3d4725cf6e0964264a83dfcc9303ec16cae5863bed6d', 'category': 'Other', 'description': 'The object in the image is an orange traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3671.0, \"x\": 1938.0}, \"hi\": {\"y\": 3826.0, \"x\": 2000.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5110: trackId=t1:02dbeda1f9939d0662b821a58e069a57:ffff005f, observationId=o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060\n",
+ "Processing image 5110: timestamp=2021-05-05 18:14:20.254588+00:00, observationId=o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24564069509506226, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dbeda1f9939d0662b821a58e069a57:ffff005f', 'observationId': 'o1:89968b7a27bc7d1680fd0a4bc4ee81f7:00110060', 'geographic_point': 'POINT(-111.923781826119 40.7649968093117)', 'mapsURL': 'https://maps.google.com/?q=40.764997,-111.923782', 'captureTimestamp': '2021-05-05T18:14:20.254588+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A89968b7a27bc7d1680fd0a4bc4ee81f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b51885ff87d2f63cc489c953a2047fda23ed16462c98400f136b1b6e1eb9e746f27e79a920f2d98d2f1245843b1c6905b7ceff6ff941333887d20b73421b9ff2581b9dfc7bac9055beb3bf18367277a83b6bf26cd3f04cdc9a8fd7741082c647532650cb4f0f6cc56932ef9a0220a8e7716154c0d1ae54f3ff1c7b86f68091460817b56a3001106af64b5063f67c0c816c5dec1f3602cbf01a561401e42c8dc552a652a56a717af8c1c31201c4070bac18cf3bb7112ab92854c5f21b03f06fd71c6bfde5867d14e697015e74b7458952a12aa0c25ec81afc13ac2da3edaed636245dd00257ebf9c2b5df079e66b185dcfcecd1c0c8883af12bdd434ef4f0e4d', 'category': 'Other', 'description': 'The image shows orange traffic cones lining a road, presumably indicating construction or temporary lane closure.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3391.0, \"x\": 2869.0}, \"hi\": {\"y\": 3457.0, \"x\": 2895.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5111: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060\n",
+ "Processing image 5111: timestamp=2021-12-06 18:29:53.445110+00:00, observationId=o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a railroad crossing (RR), a \\'No Train Horn\\' sign, and a \\'Bike Lane\\' sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2475311386753136, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:a111b2dbb06b207a2de1e6f831a41bd5:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:53.445110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa111b2dbb06b207a2de1e6f831a41bd5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b098d90d1a9622ad0cd1eefcd276f2cabb686877e01fa93b571db0d93e38c2c2d345547ef29c16ff73bc30ac6f53ba344c41b2aa0bff1df77a1aaa2c8e82bdfe4926985dea3f086aabee282a7027eda67a3a6f6487181b308178579f343353d4bd1a9dfce351a239c547587b65cfa1d4d68289cf376bac6073a787cd7e1491c1e26dc63a9776deee42cf713b6deb6e0be1b0da7f52fbcf8e90bb5a92a84009403107673e490e23995bb53abdc158a7acb1ac551c2374d745bd09bba0ee7924944a81e3956d036c184eca3e662c8770e2653cf07596a603f43b4bf0a4f77c5039835ccd60751ab4bbbd1c7c09d6cf70e0238bf4d246f0a69986a9569166db47ee', 'category': 'Other', 'description': \"The sign shows a railroad crossing (RR), a 'No Train Horn' sign, and a 'Bike Lane' sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2881.0, \"x\": 1998.0}, \"hi\": {\"y\": 3109.0, \"x\": 2214.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5112: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:c674377d77ff3bc09744d0e4d1d21092:00110060\n",
+ "Processing image 5112: timestamp=2022-10-07 21:04:53.315252+00:00, observationId=o1:c674377d77ff3bc09744d0e4d1d21092:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \\\\\"NO TRAIN HORN\\\\\". A square sign with a bicycle icon and the words \\\\\"BIKE LANE\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29495146467879013, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=3589, total_token_count=3700) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:c674377d77ff3bc09744d0e4d1d21092:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2022-10-07T21:04:53.315252+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac674377d77ff3bc09744d0e4d1d21092%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=00d42867dc3dd05e6e61402159be6290936001269f8644ba67d7a6c739436b3aa3a72c4d288ddf0866c84d5420b52048c3b34453e5b8beb45760b1a20465f830fe222785e5fdf3cd362d99867c5b23ef4b785f4e0213547b9c36416121f6d5bff59ba873dcdb63b1d51baeb2fdf24fc9651c739b9e838f4cb649ba4e7eb816bb813cc3383897520fc3af60b6f61190a45270050399bead0495a66ba31516cb7539323f37150c8bb045dd27a044173c7da7418f97a2874f2066793a9ee0b295b9d7c15327f4b643a1c26b3a6b0f7fdc6d856efd5083966be27133626e299e911105b8178285ab874f84996f8b7ba03945dc7ee91b2b9dfadbfe509d7cb3fed422', 'category': 'Other', 'description': 'The image contains multiple signs. From top to bottom: A yellow circular sign with a black \\'X\\' and the letters \\'R\\' on either side, indicating a railroad crossing. A yellow rectangular sign that reads \"NO TRAIN HORN\". A square sign with a bicycle icon and the words \"BIKE LANE\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2698.0, \"x\": 2852.0}, \"hi\": {\"y\": 3051.0, \"x\": 3071.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5113: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:104986e1977a01f8779bc49a60078571:00110060\n",
+ "Processing image 5113: timestamp=2021-12-06 18:29:54.049531+00:00, observationId=o1:104986e1977a01f8779bc49a60078571:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a railroad crossing warning sign with the letters \\'RR\\' and an \\'X\\'. Below that is a \\'No Train Horn\\' sign. Below that is a bike lane sign with a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3073709011077881, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3589, total_token_count=3685) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:104986e1977a01f8779bc49a60078571:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:54.049531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A104986e1977a01f8779bc49a60078571%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94fbdb859e88ce5be8cbeb00ecb45518374a5afd57f28b9b087d18c982c51332657ebdf101bcf41ecdb3a5b3dac9e635c1e3219763d6ef0976a20cfcaf3ffd9f09af5c03d7615e10022430b51be64ab482e9a19000187cde46f4dbc74461ea367c81670e86146db469116c989c838618c16ffdd724267c922aab94b50d9359865b89498c958a38df407000aef35254318762274759d369b157cf0a364311fdfac2ebeced54f511ccdd06ac1ad322e9c53d82ac04660051018b10cac1bfeb6813e38f3c0461ec87d736e5117ebd6849d178b794da1418618a08bfc7992d083007c285159adcf14a02a3149031cd2243a860b64ac7c278e93aec7b981538a5a83c', 'category': 'Other', 'description': \"The sign shows a railroad crossing warning sign with the letters 'RR' and an 'X'. Below that is a 'No Train Horn' sign. Below that is a bike lane sign with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2587.0, \"x\": 3200.0}, \"hi\": {\"y\": 2993.0, \"x\": 3402.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5114: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:a7ce053cf9fa29d74acd869b5ead7972:00110060\n",
+ "Processing image 5114: timestamp=2021-12-06 18:29:54.049531+00:00, observationId=o1:a7ce053cf9fa29d74acd869b5ead7972:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says \\'NO TRAIN HORN\\'. The last one has a drawing of a bicycle and it says \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40614198755334924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3589, total_token_count=3697) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:a7ce053cf9fa29d74acd869b5ead7972:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2021-12-06T18:29:54.049531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7ce053cf9fa29d74acd869b5ead7972%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=56393ebde0691414381610b2ec8a279bd4539b8d20280378b1688c7d2ff40ab4c8906f48c37dbdfbdfe8c0645163899000dd0d9886d594f09838a15fd47ebb9b97b2e078ba74a0e9107ac53c7dd5b9f9d018e1276bc6d21c2b52e344954d25a08e077844ba966f0dbebae7afb6f940932fdcb09e550afc862b0786ee798cd420d0b839501c26f4d97754a1157ad4cb4d7c96351a2b510cb0a77d32db2c65a56ee27a386729dbf1bd74f54821c4b55958ed7291a5bda918e5334596fac2ac9820bd71b2c9ca43596d8136eeb8034c6025b7bcd9734713553ca0c850ff0ebc0b1c2be48c362266b4b9158dc61cc83a86decd684c6c7e8f6a3d38d317446a4fa6f8', 'category': 'Other', 'description': \"This sign consists of three signs stacked on top of each other. The top one is a yellow circle with the letters RR and an X in black, indicating a railroad crossing. The second one says 'NO TRAIN HORN'. The last one has a drawing of a bicycle and it says 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1684.0, \"x\": 211.0}, \"hi\": {\"y\": 2095.0, \"x\": 403.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5115: trackId=t1:02de6b569f165da294621ac23a440897:ffff005f, observationId=o1:5e7bce01e283d565d46920c65abdb859:00110060\n",
+ "Processing image 5115: timestamp=2022-10-07 21:04:51.715231+00:00, observationId=o1:5e7bce01e283d565d46920c65abdb859:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign consists of three signs. The top sign is a yellow circle with a black \\'X\\' and the letters \\'RR\\' indicating a railroad crossing ahead. The middle sign says \\'NO TRAIN HORN\\' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words \\'BIKE LANE\\' in white letters on a black background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25178555079868864, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=119, prompt_token_count=3073, total_token_count=3192) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02de6b569f165da294621ac23a440897:ffff005f', 'observationId': 'o1:5e7bce01e283d565d46920c65abdb859:00110060', 'geographic_point': 'POINT(-111.908353093983 40.7498167721964)', 'mapsURL': 'https://maps.google.com/?q=40.749817,-111.908353', 'captureTimestamp': '2022-10-07T21:04:51.715231+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5e7bce01e283d565d46920c65abdb859%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091729Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b0a564881772373474f054d7856768738e315dc8cdab78ae72394979b97505babbb001ccff7adab399294d73abf2771bb0a056364ec91e44c9ea7d54a38f01fff729d8e8f67e5bf2dca8af5541e7343f9281c9a71316090b7f38eeb6c6e0f0ccfdeebc6e9dfba29bc2c8a402ab526242d7c133ccb8b1ebaf4942d7fbb3aae324b75975a3dba4ee8c952e31ad62bea1f94b255be6b8899d1b5dca36d872ff6ede7243adc4f668af131e0105975ccb4af28fe160fc26df9daf5f50a10a0045a90117f5f91a54a140c45205b5bb2a789c4de4e2a4504669c383fb9d59a5ded6d888ae3ed1e09dea2bdffaa7ef6f3ebd68cf299d3a732c010d9a0043744a08b0d9d', 'category': 'Other', 'description': \"The road sign consists of three signs. The top sign is a yellow circle with a black 'X' and the letters 'RR' indicating a railroad crossing ahead. The middle sign says 'NO TRAIN HORN' in black letters on a yellow background. The bottom sign shows a bicycle icon above the words 'BIKE LANE' in white letters on a black background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2884.0, \"x\": 1830.0}, \"hi\": {\"y\": 3109.0, \"x\": 2028.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5116: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060\n",
+ "Processing image 5116: timestamp=2016-11-16 17:48:42.792838+00:00, observationId=o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names: N Lake Ave and Bon Air St.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12975811189220798, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:ea20532549dfcf6deb25e0043d4ddbc7:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2016-11-16T17:48:42.792838+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aea20532549dfcf6deb25e0043d4ddbc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b27fe19a1418f671794109bfc41c68b03c3cc007903e652912749ea332c3b1d1fa78678d102dd21db667fb73a7c60c3dadda9124f249fef34531c4ff611925d23e872db41617a2100d5c133daab8588946b317bedd6da6ad4586b205d92c0fe94f05ab82638251d308af39a3af506d3d08c6175e37947e260313906f85ecbf9871a447b89c614a6135d5a655f3a1ad46086028ed5a817735833741b036c9e775b6dce4be928b2c5c3940823f9a12b2a7172f0828dea49e71730e8a27278987864e20f22fd8c851d55581c85e18031d6a518a631924392a6fcfb59cdf2ca31ebf3c30f647ffd836e850e5dd5c027504856c1b7aead2125244c174721b5b44ede', 'category': 'Street name', 'description': 'The sign indicates the street names: N Lake Ave and Bon Air St.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1075.0, \"x\": 1873.0}, \"hi\": {\"y\": 1119.0, \"x\": 1932.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5117: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:be3a612cf849259549a4681a08bdc86a:00110060\n",
+ "Processing image 5117: timestamp=2024-02-08 20:32:38.800444+00:00, observationId=o1:be3a612cf849259549a4681a08bdc86a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads N Lake Ave with an arrow indicating the direction\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3337629954020182, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=2041, total_token_count=2101) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:be3a612cf849259549a4681a08bdc86a:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:32:38.800444+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abe3a612cf849259549a4681a08bdc86a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=23e72b38b96a7b39b0392af889f1b523646b422f93dc9ff398f416e8b36b684d6cc12b1b611914a9edcbaad0855238a303d6594d2206b0911f677235c3e9871d7693666fa3ba2609822aea17e96b86f6474fe4366ea07fcef0178808e17cc072a7c59ea1fdd5ee43f8212492d11e4e55a1e6c80b7ee7b05a03e168eb8974e0a97933e80a3306d76d79b044c01b92c492be27217121e90b8f310e8cdde8da3445f6d6ec467616e99386f76706566d410fb245ad37f71544d6a3d0754b0b73a4970089ae3ca7c802742d9d87ac7699aa09c6e15d9ed8f36bb173cb3b2f7546e5526cf1574600cddc024c0092572b9e0417a6dfd0180fab12086521dbf9f5e9c3f6', 'category': 'Street name', 'description': 'The sign reads N Lake Ave with an arrow indicating the direction', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 1559.0}, \"hi\": {\"y\": 3193.0, \"x\": 1665.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5118: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:b2943487208ff90d88521da4fb33a0f3:00110060\n",
+ "Processing image 5118: timestamp=2024-02-08 20:26:42.674118+00:00, observationId=o1:b2943487208ff90d88521da4fb33a0f3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Two street name signs are present. The top one reads \\\\\"N Lake AV 1100\\\\\", and the bottom one reads \\\\\"Air\\\\\".\",\\n \"image_quality_notes\": \"The image is a bit blurry but good enough.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31855787549700054, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:b2943487208ff90d88521da4fb33a0f3:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:26:42.674118+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab2943487208ff90d88521da4fb33a0f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=84a2616ffbebe6d7262c11347ee1a7ea168304350ff31947d7ef0b04a0c99cc659adcb015ed7a41c942ccb900abde7d37ec4c22c2b641282f11fafab408842a8ba3487b78662b08625b32beada9f92cbd4ad37fb4e21f1c994ee0ba058608c19228ded1ca331e91fd9ba3191e43e9bf1c723f0eaf22c8fb5c74483c11d8e57553593382a72582dcad48b0c8569577890bcc028d090a1d9ff0fd4ed0995ff2ebc11eacb3cef8936c7f65076809cc97168e1bff038a6f8b02cefa41bbead883587919cc110b784ed886166400278b7d9f968019300e12d4b923fb485b4d25622089e559e5b2d922923a3e41012c7d6ce9732c5275cf0f802842c1bab1fdbebf532', 'category': 'Street name', 'description': 'Two street name signs are present. The top one reads \"N Lake AV 1100\", and the bottom one reads \"Air\".', 'image_quality_notes': 'The image is a bit blurry but good enough.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2945.0, \"x\": 1744.0}, \"hi\": {\"y\": 3007.0, \"x\": 1924.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5119: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:4d2464074924c59e37415dceac6a7a11:00110060\n",
+ "Processing image 5119: timestamp=2011-05-05 22:12:22.207885+00:00, observationId=o1:4d2464074924c59e37415dceac6a7a11:00110060\n",
+ " Error processing image 5119: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d2464074924c59e37415dceac6a7a11%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fa07bd27ed200002dc05fc7faf9101f033636ad0261cc1dc002a6874e44bab9989ffb7cc4bb4fb5bf15751dbd3ccc561ff48a4568c91ac4e2d811770a71e689eed74a3e5b90c76e1ec67396691ea72b99864c4bbfdef8c5e51411eeaabc7cac04cd612a9e923274e7714f85511e12069234ef36a24b3ca3ae21ad87fb387d457f76d8bc488f456ce35385ac46ad236e0a70ba9d5581859b55f0fcf423b8a8a6b9550aaaa61ab991e9740942407c4b3e631e187c4c5d22df41fffe074b36935573755a47adc31fb8ac22cf20633111bb59d065ceb29adeffca9c77586027a7f4132c095c3dfff6aac3bbefd93ad41fb9c953c08c1b67cde2dacb7f24c41ab962\n",
+ "Processing image 5120: trackId=t1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f, observationId=o1:27e8ec20bdfb8b016a86884de80d48f7:00110060\n",
+ "Processing image 5120: timestamp=2024-02-08 20:23:34.754929+00:00, observationId=o1:27e8ec20bdfb8b016a86884de80d48f7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'N Lake Av 1100\\'. The street name sign is green with white lettering.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24826123373849052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02debbed94b6c9ca5d9e5643a3d1ca50:ffff005f', 'observationId': 'o1:27e8ec20bdfb8b016a86884de80d48f7:00110060', 'geographic_point': 'POINT(-81.9492461052085 28.0569465790615)', 'mapsURL': 'https://maps.google.com/?q=28.056947,-81.949246', 'captureTimestamp': '2024-02-08T20:23:34.754929+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27e8ec20bdfb8b016a86884de80d48f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=adfeff90a363a8e0b9a94bbac4fb13bd3049867b74348c0316bf3ef77a20f4497f65041d653ac0d21395b24ec16ecb6bd1e5c5862e260517a888c9e9412ea5ee612c18abe6a002a5c2247670b2b635c5220284821cbd2e64409eb364333c5b503e9fff5f0e1b7f78209b398e70b44bf6e4400616a418e6fa7b491e491a5a1d863adc8c4b7347c72d8816291337b572d13c749885a0a53f3edef90ce5a260e0fec4861fb5a8cec2a11eec33b83a953cb38ccd0dab7accd43736f9406bd001c990c46e4f1e5564a50dc4e49c38d95da2cac8cfad84a7baf728e121d2e99ac3beff60767befef5b385cf2de32301790f0124a287ccabfa4da92798cc93ff6b3ea49', 'category': 'Street name', 'description': \"The sign reads 'N Lake Av 1100'. The street name sign is green with white lettering.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1317.0, \"x\": 1508.0}, \"hi\": {\"y\": 1545.0, \"x\": 2230.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5121: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:95da867472434f18df9a1f69235b445b:00110060\n",
+ "Processing image 5121: timestamp=2022-06-23 17:20:14.146654+00:00, observationId=o1:95da867472434f18df9a1f69235b445b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped, yellow with black writing reading \\'DEAD END\\'. There is also a green street sign with white text reading \\'500 N\\' above the dead end sign\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3039343243553525, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:95da867472434f18df9a1f69235b445b:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:14.146654+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A95da867472434f18df9a1f69235b445b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=202f98c61c6ff4f403b4ffdad1456c9c6ca2522cb97bc6d5ba127ff06a8fe486076d888e8cc8b0bf54178a25437699a1bdf40e9a796331c83f06526dbd706312caeb61fa6a2f27cad623d26bf75ac809f69266c247f0eae4bc4cfe1830133445c1d8601f8655b17ee67fd64c0840b13cf78eb9a8b542bef48d1884885e347a4d98f7a3edc206ca912c972e81f117beee1d17417a70bcf14462af457bcd8d86cb0a6230d053cf3078fcd8db0eafbabfd432bcacea9af70dbe217ee025f2278cf2fbc609f72af288efac9bec52b97160c5d40e40b5e886950fa9024bf767ffe5534ef449c70398056e91f97ec9ac96835151c52fa356ea1d349b2cc914d41e3617', 'category': 'Other', 'description': \"The sign is diamond shaped, yellow with black writing reading 'DEAD END'. There is also a green street sign with white text reading '500 N' above the dead end sign\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1993.0, \"x\": 1974.0}, \"hi\": {\"y\": 2334.0, \"x\": 2301.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5122: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:c56d7b8100008c8658ba67b8de27dcff:00110060\n",
+ "Processing image 5122: timestamp=2022-06-23 17:20:13.622769+00:00, observationId=o1:c56d7b8100008c8658ba67b8de27dcff:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with the text \\'DEAD END\\'. Above it are street name signs, one reading \\'500 N\\' and the other reading \\'Erie St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20098486813631924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2557, total_token_count=2645) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:c56d7b8100008c8658ba67b8de27dcff:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:13.622769+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac56d7b8100008c8658ba67b8de27dcff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a886842a4adb575eed052ae6c7dbdfe6aac2f4607cc7f5310f81fe9f3ca0e2afc660dfa604e839f96f56cd8a6accb4fbbbb42dc58548334dc52f79ee37c3e066652346bfd4641ffae49d3926c3db477ecf5c8e4adafe33f572b09cf9d5f6d65c65c192e3bf3f8346db161fb08ece70c28aff5be0f3b4c6c90b44506ae4f4169186b102f48140443dbdeaaae895eb1864ac2021a1d795fd1dfe536967b3effb304450a47ad96dad3873236ddce0905f93a553771ed462d20fd54f22b8bbab75420df76f00662d7f528f45c8b81988ca175dc55f4f15ccdd086b457125c50a1a83b2511d766505bc849e78eed8fcfb1b840c1d53b639ca3b77aa107198247a6d7e', 'category': 'Other', 'description': \"The image shows a yellow diamond-shaped sign with the text 'DEAD END'. Above it are street name signs, one reading '500 N' and the other reading 'Erie St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2012.0, \"x\": 457.0}, \"hi\": {\"y\": 2330.0, \"x\": 728.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5123: trackId=t1:02dff0965d186af39b5c387076382479:ffff005f, observationId=o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060\n",
+ "Processing image 5123: timestamp=2022-06-23 17:20:14.666799+00:00, observationId=o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with the words \\'DEAD END\\' in black. Above it are two street name signs: \\'500 N\\' and \\'Erie St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2305958384559268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02dff0965d186af39b5c387076382479:ffff005f', 'observationId': 'o1:16ad34faa5c9a5867ab1e54fdcd6fd13:00110060', 'geographic_point': 'POINT(-111.906772373234 40.7800973109295)', 'mapsURL': 'https://maps.google.com/?q=40.780097,-111.906772', 'captureTimestamp': '2022-06-23T17:20:14.666799+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16ad34faa5c9a5867ab1e54fdcd6fd13%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091635Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3284754c73ac3ef6b59a0b9cb49a57c5e0f2316a04bcb057ebafe6892f05ad8c80c23f5e9eb4ac8698a54019ea64a8f0f5d7237a7678d17673ca192915c3c5f3a15dd38e769e6f564d75ca172662c62493b2dc14c6d1696427d0a009102c081327d363232c61c1aef6ab18523d6f392498bd79191a9d8e6898f8cea2a5b62ab767e14497d093da01e7c994286cc3f0227efcc921fa646870987d63a3e3ef28f607a27a18675076a3829f40178996907262274958fbbc72c92fc80ecb133f8cf61e392034f50b06a20f1fa04a78fc4ca79774f2d18f5f8c11eaf5417f05752dfc70b528b91186ebf7874d6a0485d2d186e38db3f58acea366c17227801ace5661', 'category': 'Other', 'description': \"The sign is a yellow diamond with the words 'DEAD END' in black. Above it are two street name signs: '500 N' and 'Erie St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2984.0, \"x\": 373.0}, \"hi\": {\"y\": 3266.0, \"x\": 607.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5124: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:b01102f61dadcb54e69e3e6c0841091a:00110060\n",
+ "Processing image 5124: timestamp=2022-12-06 22:31:48.091147+00:00, observationId=o1:b01102f61dadcb54e69e3e6c0841091a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30877261966853947, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:b01102f61dadcb54e69e3e6c0841091a:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-06T22:31:48.091147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab01102f61dadcb54e69e3e6c0841091a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f0cb3a4cbb34db650d2d9d11e8f47ecd78f6d217353d7f64cf957642265f9e023ad79bc31395e9a89ce8896c5e31ff3578b997b2493aa2c0e699d5dab7b25e6784ec4284122d219147251dbd866d686bb2be938b4b9cae5c07815b079e148afa43b87abb5f45f3ce9a95df3c9ca89151f126ee5c0a3c654946402526aa3ea0578b15d88f8a0472f6a25addfcc17725c881821313b0362203f8071a40b20f73a549fb4b2d38bb8135ab4533cf11035871f3d68bea08da0e7320e9fe5264ffef03c2232b1d44ce25376589bc15d3aeb18abe3de7e9736f787a5e538fe744e3ca2942cee71e0c44e9696c85b4bc376b7cbd505ae1ba5074d077159635869e0a350', 'category': 'No Parking', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM. An arrow indicates the direction for which the sign is valid.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2054.0, \"x\": 450.0}, \"hi\": {\"y\": 2340.0, \"x\": 624.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5125: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:6fd04566c517adfcb745f85086409273:00110060\n",
+ "Processing image 5125: timestamp=2022-12-06 22:31:48.091147+00:00, observationId=o1:6fd04566c517adfcb745f85086409273:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.\",\\n \"image_quality_notes\": \"Image is somewhat clear, but the sign is small and further away.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.52377660650956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:6fd04566c517adfcb745f85086409273:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-06T22:31:48.091147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6fd04566c517adfcb745f85086409273%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11f1f409b6ff3b503b8390d144a5956acf735815b85fe0b6303ad55027236b8c371223f240ecfde9ceca2a4c6bad4538e174ea2445416bc0de536fddad83d52aa670dafa7fe211f55347313c1b84718f880903c3498dc6b5dab949c6aa39c255c720d7064da07e19c01b8aab689fa86b791fce5698dc844b59a1e4528cb5abce92c4179c485ab74a40af621fea7a420f528b4cf214763ee59d0336e492bb2e6dbb80b29f87a808cd0928245079f8d4811f239a5f84c2e639d6a519e66df62da8d13e172f7da20ae33d3ee141f8d13e15cc53ba5da00a70249dcd21763451946e4ecf2e5b6883d95733bc87b2ff69f57150014badfa35a5b946a20e678b221dbc', 'category': 'No Parking', 'description': 'A sign indicating a parking restriction of 2 hours from 8 AM to 6 PM is attached to a wooden pole. Arrows on the sign indicate the area to which the restriction applies.', 'image_quality_notes': 'Image is somewhat clear, but the sign is small and further away.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2931.0, \"x\": 3472.0}, \"hi\": {\"y\": 3221.0, \"x\": 3646.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5126: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:34e51ee9515c4274a6b8a97e4d609f67:00110060\n",
+ "Processing image 5126: timestamp=2022-11-22 22:16:39.017530+00:00, observationId=o1:34e51ee9515c4274a6b8a97e4d609f67:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29373609697496567, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:34e51ee9515c4274a6b8a97e4d609f67:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-11-22T22:16:39.017530+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34e51ee9515c4274a6b8a97e4d609f67%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4902d1b141d856b64000dea5c2942ecb0b849a4601365ec96901488f24dc936a8fa1d22689cafc2a77b6b2b43e47bea4ffa35b6b909630e5e867d15eac267b7fe342a7ab29128179d8e11751ea81945d822e9cb837ff6c4eab2d3f25a4723c4edfb8660381710b7a81b0d1fb59a07a9bfd8b96845dfd99180667960019f1b82889549c3cc4ec2e011f8b7de52b8141319b67bc656db4540ae90d2ce0e16b936d0b585d880d809d5392d654f19f279ba9b6b4215efec280f3e4c191311578580cde0dbd147ca07fe125eda7e4c90fb01345d188bdd12ba365b63821c8eeb9596df50abc78ab99741a3bb57fd848a1f3cfe0de04333699d6a2100de835d8db371f', 'category': 'No Parking', 'description': 'A green and white sign indicating no parking allowed during specific hours (8 AM to 6 PM), with arrows pointing in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2028.0, \"x\": 799.0}, \"hi\": {\"y\": 2323.0, \"x\": 965.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5127: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:55203e8046e2978e2c959c105dcd98bf:00110060\n",
+ "Processing image 5127: timestamp=2022-12-07 22:22:36.742608+00:00, observationId=o1:55203e8046e2978e2c959c105dcd98bf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is green and white and says \\'2 HR Parking 8 AM to 6 PM\\' with arrows pointing left and right, indicating the parking restriction applies in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16826725006103516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:55203e8046e2978e2c959c105dcd98bf:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-07T22:22:36.742608+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A55203e8046e2978e2c959c105dcd98bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=09ca1daa2069d86d503e318537f2615b4957ee6501b9623ac1ee15e000c4a66e783edb0d40f46e073b1a32ead47f6de5bb9de0e797b1553d3639cfb5d8a690ddafe47a5bb14baf8a4d426cb4deae957a7b73c6ffd13fe638ffc542598a6af84731dec4459c17885e8cf601127e24f4caea99b738013219a3132c9e5cc7e8bdc9b299d1d39a49ec8a6cb36dcce87e0c6ea8dedfa2f1c7e7cef084fc8c59daaa1c8ca9d0d9f661094e27484c3eae6ecf399d7b07bc21dc4826a023a5105f0bf9142620b06502e1695aa3c9e9c83bade17950d6aa2f82ae130dc1a149023f89ce1c3d16b3034b9d59c0cd526072409ebcfd63e09b26c6a6cade233af25e9b26defb', 'category': 'Other', 'description': \"The sign is green and white and says '2 HR Parking 8 AM to 6 PM' with arrows pointing left and right, indicating the parking restriction applies in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2046.0, \"x\": 713.0}, \"hi\": {\"y\": 2325.0, \"x\": 882.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5128: trackId=t1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f, observationId=o1:3817afe264ed4f9c122ef47e31187f03:00110060\n",
+ "Processing image 5128: timestamp=2022-12-08 22:29:52.455369+00:00, observationId=o1:3817afe264ed4f9c122ef47e31187f03:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1927472907052913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e0098966f941bc3f0bf6fa6d81603d:ffff005f', 'observationId': 'o1:3817afe264ed4f9c122ef47e31187f03:00110060', 'geographic_point': 'POINT(-111.895247357224 40.7605079897289)', 'mapsURL': 'https://maps.google.com/?q=40.760508,-111.895247', 'captureTimestamp': '2022-12-08T22:29:52.455369+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3817afe264ed4f9c122ef47e31187f03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=787c339f0c98a55a726bf6d9a96a19481844c8284ea3ec6989f86efee9616ea63110f24d493b490ad07c0e4659066380b0df4726edb4a498a2cb603d85b340aa77c1033fdfe65230d4c553d9aefc81cecf6c58c1320a082b71913b7960c5d25505bae62487bba9b824ef340326e495146a9664133598b78be55317e4cf239e304e714230bc62a4c963b62a1d9f87b8ea54a46cddedd68d11f2f900b98a9e7cca3fc7be0b9c95a31bbc3fba750b90f1054b51f4f34404922ce1353f9ab5c116d0fc813d70d849da2f9bee387db2eb2cdd41e5aed6b4842552f8ae301e8dd386ca83bc2c4efdd4468036666db76ce2653c13c7f8f21a08361de728cfec52003918', 'category': 'No Parking', 'description': 'A green and white sign says 2 HR PARKING 8 AM TO 6 PM with arrows pointing in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2985.0, \"x\": 2936.0}, \"hi\": {\"y\": 3234.0, \"x\": 3098.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5129: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:9025296de258fd8c0eb7e8ceb8b2b8f1:00110060\n",
+ "Processing image 5129: timestamp=2011-05-03 15:28:56.083045+00:00, observationId=o1:9025296de258fd8c0eb7e8ceb8b2b8f1:00110060\n",
+ " Error processing image 5129: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9025296de258fd8c0eb7e8ceb8b2b8f1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2fad3e2f954690e65ab2e676cde3407b4cb7914b163f90bb4d63d97aca7469308dd6a5fc1ef38c7fb094b815cdd835d9fb4cc799c08898ab990f14115acb3181b9275a4ed56f04bec3844f90e14c80b36083403b156705b0c9e437fff0ccb350af75160ce5ee64678be48c2682e00e91cce8238b5c31e377a5f18bfd3528b1d0309cf924c0d62e7d58c1a231722a439374b61f85f3dac1a07d4c0ce9c0b5d6b9c2fc3575bc71f29f35afdc808c11ac26e6f66a962e68c910a68f732992930de3e9b8f8e77572e65298ac71b742eb14b4ccfee09d4ac9d75488045477ffef4333cf6b29632073810f64d3082d7ba2f3ab48e3387c6208fdae77fef1788f0781f2\n",
+ "Processing image 5130: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:e773b05c8f759e48fe9cee63d1cb02b3:00110060\n",
+ "Processing image 5130: timestamp=2011-05-03 16:12:07.209660+00:00, observationId=o1:e773b05c8f759e48fe9cee63d1cb02b3:00110060\n",
+ " Error processing image 5130: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae773b05c8f759e48fe9cee63d1cb02b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b0558a2c52d9ab04a2d40d665e642258d904bf2caeb087e90a56af5461d71916937b18bec6860c737ccbe325fdc9279035a394182c4c86c0efa59e512e914efc7bbb7181779c63b3f88c77c36b63923d1c8777ba418716944e79ec9f263e701c1e152765d95fd140867a2e1f104e58b4253c07accf3f924c5050740581113f90f16b6f1de08d7d8d870429a170f8716eafe25d7dab46f176edce6a9f534eea76ecd7777e8d33ba638ee298d39bd912098292e4cf57bd17a4077dbce95829412f331f03bbdbbaae49dd0a612ba4cfa4c95a17145f53725cd4368f453f1ef23af4c70762468c0555b7c2977e97a0550a637a22d266a9259531046fa0b33a46762\n",
+ "Processing image 5131: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:c9ed79d54753409a30cea917f8a917af:00110060\n",
+ "Processing image 5131: timestamp=2011-05-03 15:28:31.722187+00:00, observationId=o1:c9ed79d54753409a30cea917f8a917af:00110060\n",
+ " Error processing image 5131: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac9ed79d54753409a30cea917f8a917af%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=607a8762d5e2e730b873b6f0d453891a1f117f081dafe8f15e9b3d53a94101d94b956ef4ec1ea795609fa7ff236408a78b1e932a00ac97a19624d6f3bd18cc89aed3b57ca4a04659c047cbc89695974b95a92b3c48275c2a0931f3fa79e5d075eeb862c110682f547377f4057a851f0f45bdbe4570d94b03214acbdf9b56490957cec7f7cdaf559dbccd48d90159f430350becd33c9433c6c1e029cd4321e9315a5050ba155c41360156328a6d8fa4f3305851668334fc2d48f0d7df0839ceadebe58e5a2cea6cd78c325a3446c30cdfd59eb60bb50dcc8a684db0107fcbd0d7756e672a59ffdf0c5ef7c36b423fec9cb289f9a7a1e57eda9a64a11ff1d48422\n",
+ "Processing image 5132: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:e1b424c2fc4c173699e4714fd380dd66:00110060\n",
+ "Processing image 5132: timestamp=2024-02-05 21:03:50.792756+00:00, observationId=o1:e1b424c2fc4c173699e4714fd380dd66:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows the street names Jonila Av and Denton St.\",\\n \"image_quality_notes\": \"Image quality is acceptable. The street names can be read. There is also a gray octagonal shape sign under the street name, but no letters are visible on the sign. The octagonal sign could be a stop sign, but this is hard to verify as there are no letters visible on the sign\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7589830577882946, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=3073, total_token_count=3190) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)'}\n",
+ " Error classifying image 5132: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 446)\n",
+ "image_report to be inserted: {'trackId': 't1:02e1362ed5e870536f689ab90431d3d5:ffff005f', 'observationId': 'o1:e1b424c2fc4c173699e4714fd380dd66:00110060', 'geographic_point': 'POINT(-81.9429484244837 28.0129695529294)', 'mapsURL': 'https://maps.google.com/?q=28.012970,-81.942948', 'captureTimestamp': '2024-02-05T21:03:50.792756+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae1b424c2fc4c173699e4714fd380dd66%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ab1ed874d3b4955989979abf9f139a203fe8a4404fe253b1f595d0543657f548a0b38ab3e5517ce8540db67b553b886de9af571b72bf95e865f5bd50610e4c29319cfb72731e61e9f2c9bb2909d000b9b30411b8dfb7a04fa4b36081fae2f804902c105fc1dab7f077cf3bff1adb6393ac9f05799f1fb4620021423d9991dd9b7737f17b575deaaa5d93cb71f2d4d96665088347e3f880bcc6717c3719c4def845f351f47e6e039ba4f89ac0708e1c34a94e971846bee327c37ff8b6b13d3bddb2d85edcfbfec16fad5c4e6c3c572a6222fe1443bb47355eedfa85e04a62fab93afb61f265cb2cfa998c6ca06c588ae30adad42726a21e3b78901b7d190dceb', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2027.0, \"x\": 3404.0}, \"hi\": {\"y\": 2136.0, \"x\": 3643.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5133: trackId=t1:02e1362ed5e870536f689ab90431d3d5:ffff005f, observationId=o1:04673b52d9ed60cad9130a855ca39447:00110060\n",
+ "Processing image 5133: timestamp=2022-06-21 17:10:28.116545+00:00, observationId=o1:04673b52d9ed60cad9130a855ca39447:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are visible, reading \\\\\"Jonila Av\\\\\" and \\\\\"Denton St\\\\\" . Arrows are present on the signs\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31522496541341144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e1362ed5e870536f689ab90431d3d5:ffff005f', 'observationId': 'o1:04673b52d9ed60cad9130a855ca39447:00110060', 'geographic_point': 'POINT(-81.9429484244837 28.0129695529294)', 'mapsURL': 'https://maps.google.com/?q=28.012970,-81.942948', 'captureTimestamp': '2022-06-21T17:10:28.116545+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A04673b52d9ed60cad9130a855ca39447%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d003b31c148f5c333b3f6f77f64a617ec86854d5c0a47085e6de917bfa7fa8e7ffd03af12f5146447da10693420adc72c32cabd5eaeabd6720fc3132250d598d671745270203b2f3601acdb9cc0f04244af459b4ed54f67d049019225b4da2616f84e6af179a0f61b19562b4365437166aab3fc50d8ae930d54b5aaa5fe5fac7a6c5e29f2752128f5cb35ff187e7b36b256a0b22fca0aeea05352dd8a1bccffba4edf37809f437c4ed0db23bb4879ce7283dbeeec79a754460a8d7edce27094699a9a1405a7ab79ae4db38dcf8ca455919a648bc06e5253c7fac43a46638528728a365d2df17ba34737f5eb493d71aa333d099cdab9bbd76c7df97e9f21329a', 'category': 'Street name', 'description': 'Two green street name signs are visible, reading \"Jonila Av\" and \"Denton St\" . Arrows are present on the signs', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2920.0, \"x\": 848.0}, \"hi\": {\"y\": 2987.0, \"x\": 957.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5134: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:a61996b7126b094d47639ca0f6f73f6d:00110060\n",
+ "Processing image 5134: timestamp=2024-02-08 20:49:00.950580+00:00, observationId=o1:a61996b7126b094d47639ca0f6f73f6d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43124954788773145, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2557, total_token_count=2638) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:a61996b7126b094d47639ca0f6f73f6d:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:49:00.950580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa61996b7126b094d47639ca0f6f73f6d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=863b239d993ddd30cf382811c32dae5cc4a1b8fcf143cbbb66e3280e53ac1ab2ab5145f2833c695e53f898e9b427be5804d86b9c11a077415e764e7a72fa12c0cde271732b1ff035d3ad2f490d97c012eed8fbd840c48735c876947eadeba00b26a1a2c9fd8085c837e49b9c2f892cf99fcfdb38bdcec7e7f7f14042c1757ba4cbb82adb8b58c45d913e2ed228ec4dc1a0738251457d9e41ac98acd4c7dbc84b70eb08fd163fb010af02c64f0b104c7f28fcc507467d717aeceec131a9fc4623c61f1a136ddaa0b5d9f582635324cf3d4ba1375fdfdd753b572e428e012a08c266985be35086b6a85996f224aefa5f38c305ee4e8d8b4a61f167d4868effbd39', 'category': 'Other', 'description': 'The white sign indicates that there is an obstruction to the left of the road, and the black arrow indicates that you should keep right. There is also an orange diamond sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2855.0, \"x\": 474.0}, \"hi\": {\"y\": 3546.0, \"x\": 854.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5135: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060\n",
+ "Processing image 5135: timestamp=2019-07-02 13:42:24.976738+00:00, observationId=o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there\\'s a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.481799117917937, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=123, prompt_token_count=2041, total_token_count=2164) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:d362d64d6c633c4ab5c31a2dd43ec085:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2019-07-02T13:42:24.976738+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad362d64d6c633c4ab5c31a2dd43ec085%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b239977aef01fb0ec715692048b384ae226658b1e9645d9b9ea0745eb2996c95b9687b375cc20c32b0dbee6ed65344791f05d288352ab175876ef41906d7fd3c5eed92b6f67be5de610f8b909d43e25833cfafb83700afe4fd6b64eb159847668b93586850ddeb57e7f1c433a398342bb48759f1a7e24bc974fad25024271229bed456d41df181ec385f58e68112d7e5bb21362c075417b4af2292a6591c5c29d825254c2466bb17e4caf9cfca47c1287c1b229d89b05f5f44e88020ddcf1c6775ef422814e222d10a291c35d8f7d7fd85bf827ac89132fe9a0bbe02295c6d55378ece31d72bc37b715c353ec62c18fc0acd328f0458bbb7a6a43e8ab5e24147', 'category': 'Other', 'description': \"The road sign consists of two signs. The top sign features a white background with a black border. Inside, there's a curved arrow pointing upwards and to the right, along with a solid black shape resembling a barrier on the left. This likely indicates a merging or lane shift situation where drivers should keep to the right. The lower sign is a solid orange diamond shaped warning sign.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2861.0, \"x\": 1403.0}, \"hi\": {\"y\": 3371.0, \"x\": 1736.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5136: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060\n",
+ "Processing image 5136: timestamp=2024-02-08 20:47:23.961093+00:00, observationId=o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47808812115643473, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:afe0f0333f3eb37eb360e6291b5e4b6a:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:47:23.961093+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aafe0f0333f3eb37eb360e6291b5e4b6a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b3d373d93240e63b925237345184a1f76e0498c15e4a55266a6941a06c4cf3a1590e75a4f7044cbbcd7d6bec731f99d6d28a1d04d6045d5bca7708983f01d61e0280db78debe3a71471e89c32777d250db8b28dab755d36884fb80974996ccd79c950e31beee798602b54c556827f3c09574fc44069627060ca604457e33e19e2c5afa5e66fc65ac4d4af0736326a477ee255d2b6b564719feaf33087b5a61a75d0820ac5b02cd55922a1f88cfb48a388b47caf81592742c8ea363e8a0ca8a54dad07ebc952764713fd553da6fec8e1cd7e2e3e8adfe6558411bbd4cb78c95e87e58dceb9d7396d2c5b815dfe1abf4a05c77dcac062a21edfb1b5a7ea3977ed', 'category': 'Turn', 'description': 'The road sign shows a curved arrow indicating an upcoming turn, with an object above it. There is also a yellow diamond sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1868.0, \"x\": 2758.0}, \"hi\": {\"y\": 2686.0, \"x\": 3086.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5137: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:953dba2f25f6e2d3ef2e66c76d70dd95:00110060\n",
+ "Processing image 5137: timestamp=2011-05-05 22:30:20.501144+00:00, observationId=o1:953dba2f25f6e2d3ef2e66c76d70dd95:00110060\n",
+ " Error processing image 5137: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A953dba2f25f6e2d3ef2e66c76d70dd95%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9231d257d42b6936d169fd5365e6c0aabbb05158e47e2ac4290e3c1cdc6dd2fe1aa2c434ce5db040f38114c6d50989dda89283db3acee45a20a02b29f9bb608b61cf95721e2f07238df22fb22fbe0d7ace23739449358519333c044fa5879abd75b0e3b06e65ed027e4452b8c955003652acafe9d3ec2f1cf06c924e75f386dfb67722491728e5ecfc35dfaf7aa3228f9d57103fbc92d41fa6fc4378a56d2d2654f99504840f52ed2ef79585715fac3d6bf697c5686b60efd48d985ede3b192a75402a728ee63c5b6a2103c8414d3e4ebd27d0d9eac58baa91fa0a4c0b42ed542397efbfac332e4157bcd38187cad3deb59ba82e7127c029b2976551f82326f3\n",
+ "Processing image 5138: trackId=t1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f, observationId=o1:386e54f501d41e00bb313d759f6472c1:00110060\n",
+ "Processing image 5138: timestamp=2024-02-08 20:49:00.950580+00:00, observationId=o1:386e54f501d41e00bb313d759f6472c1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1878132386641069, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e15f0325bcc31d78254dda0d0cb1ca:ffff005f', 'observationId': 'o1:386e54f501d41e00bb313d759f6472c1:00110060', 'geographic_point': 'POINT(-81.9530180577864 28.0622722177979)', 'mapsURL': 'https://maps.google.com/?q=28.062272,-81.953018', 'captureTimestamp': '2024-02-08T20:49:00.950580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A386e54f501d41e00bb313d759f6472c1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5c6564fbaa4959d28b75b174d997d08c4895b8fe1b5e5ce8551fc0d24307c01da136105911d22bd1244c8ab1f6af86f5c2018df6867b81dfbbda2f2436f0d7376a8702f7c21fe8a1bcf8ab0e46f3506950d88bf89c85cea124b9711d21f37676582fadb690286c098c16dc855da635dc1810371691d6ff5e0ceecff5f52d2dd7723c2a4f4b0803e6d059f1ef2e2c3402f157506da178e484bb0e0496ed9241a62c0895dd5fe95b33c11aa73ed9022dda5e22a669e8242e90afb4bc37885b3fb5cae343b15d6c695dcf3204d9a2e4b0ba91125ffa560a45676786e4a8a4b2cba796297c3002b6d3bc34d523bdab153afcd9de2f1687ee6dadd28ab5853c366af', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign. The yellow sign below it is a warning sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1968.0, \"x\": 3458.0}, \"hi\": {\"y\": 2646.0, \"x\": 3657.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5139: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:b362865884e2773938a339f07be87757:00110060\n",
+ "Processing image 5139: timestamp=2024-01-11 15:47:03.325991+00:00, observationId=o1:b362865884e2773938a339f07be87757:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.351107985885055, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:b362865884e2773938a339f07be87757:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:47:03.325991+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab362865884e2773938a339f07be87757%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9ab3ab0726124a05967ad582742d81894527c2c4a9e03a10e75f71d35bcec58168d93ded52ac9b1213ae34dc20e18a7ff7a14cbf9e0c0c25333bbec89b2eb4eec7e693b89d8034bd2163d4b7342f79cc4a8fa503b99056e9f8b351712ed630ba69f611ddcb6562cf3f13d75336b43563e8d26a9ff258e57fe98c8d9d1e587331aae91230030ffa96ebc5f609c0a80fae3447cd52f14e76c8ea47bb66d772f56112e850e0ac5c20b7a0f8471cfbfa92c1956b4e53179419ab62c5cd0f2cacfbeb85e0ed6fce80c9c251b01c3baf5699781f92085bf6e5c68d74b4cc364828617fbce910b25b3ea6ae217acb7fca9de8e7cac78da3bee1f63bd6618ea28079b9a5', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol is visible, indicating a pedestrian crossing. Below the pedestrian crossing sign, there is a yellow sign with a black arrow pointing down and to the left, indicating the direction of the crossing. There is also a street name sign above to the right.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2303.0, \"x\": 2995.0}, \"hi\": {\"y\": 2622.0, \"x\": 3224.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5140: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:6451960b4495c7162a9f36ed65b1e025:00110060\n",
+ "Processing image 5140: timestamp=2024-01-11 15:47:04.285978+00:00, observationId=o1:6451960b4495c7162a9f36ed65b1e025:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13358292212853065, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:6451960b4495c7162a9f36ed65b1e025:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:47:04.285978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6451960b4495c7162a9f36ed65b1e025%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d15221ee8a32112efb0a971395febe7b4d135977aa319a490297498f9a3076249ae2eba03f19f65a6d069effe4640083ff7e146a48bb4b30c58adc93d264fe7b17cb273cca75647b903ca5d313b4190f10b07928622518d1de2e8e4caac2f389ee315afb39ba4f0632d26a7215fd9048e7e0348262f11a8f50b11b08f04af6111c3ef9543db52cc8faf8abd67a030b067043efe67b60b5fa09eb9005f08fe3346091d94db6752beaeda57e8f0e49beacd9a70a6d38e7f9800c9af3e06335a8f8602fc64dcb2caa51778338c2f289e5b8295b932cf1df6a3aca84cdefdc027480dc216959f02ceadc6ecf1d12c27bbcaab91bea4503ff3a30db367543bd9b1c5', 'category': 'Pedestrian Crossing', 'description': 'The image shows a yellow diamond-shaped pedestrian crossing sign with a black pedestrian symbol, along with another rectangular yellow sign with a black arrow pointing diagonally downwards and to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3234.0, \"x\": 1800.0}, \"hi\": {\"y\": 3375.0, \"x\": 2031.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5141: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:495a89e2288bc830484d2f4a7c8a5566:00110060\n",
+ "Processing image 5141: timestamp=2021-02-04 20:56:48.765234+00:00, observationId=o1:495a89e2288bc830484d2f4a7c8a5566:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14656032098306193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:495a89e2288bc830484d2f4a7c8a5566:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2021-02-04T20:56:48.765234+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A495a89e2288bc830484d2f4a7c8a5566%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b44c463815f00954067f1e633c4f5df3a897cb5699b8d4a88bdb9d1981e490d7db7d35bbfc4b861cec114978f433cb7527518dfe36c88f83cd33c2f00e51d67c1b20f3dab48ecf142ae232f1c4771b34d703e827e59f77198ffeda07d6394f6d4cf0ed42f7b0e7d88798f233c7f173443a341293414ef296b00c6defcd9830e21030aa0448fe424545c644cd63cd46ab6fbfd4a4d51a038abde2f9ce37fef3280de9a5c27aae240758e72cf09c84a1c84e0a3e7636d3ee539bf3339aacbbfec5bb9ed2f3594e47d78379a6899c474370d34d3ed8e75a3a74d7c92fd6b42f9c8be84c66ddbd461816d180527505500847b272ac20a5db062a75b04feb7f31806', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol and a supplementary arrow sign below, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 1325.0}, \"hi\": {\"y\": 3420.0, \"x\": 1634.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5142: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:80316ba2be637a26a2f741b4df186a21:00110060\n",
+ "Processing image 5142: timestamp=2024-01-11 15:44:35.493129+00:00, observationId=o1:80316ba2be637a26a2f741b4df186a21:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22812256813049317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2557, total_token_count=2637) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:80316ba2be637a26a2f741b4df186a21:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:44:35.493129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A80316ba2be637a26a2f741b4df186a21%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091711Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ad42cacce69c0082ef3a3faf449e6643bd3e5721e2081876ce137c6ce1356cce2c2bd10d729f7b0a772abfb6e4d16dc8809ec9bbf69451e3089780a75a5527d41d0998fa8d26a05589467e92d6f562756176cca5a6ad4fb2e94bf3b6ce7b298246012519a093c4b17c4a2180ac82c30c92b92d96cd962b7f74de48a18dd5e14855046d175320e5988c83c86b42c84705c155b6f522c0c065739ae009faba1e53670a4c94dd29bc9f45c021f918053f597e7c7b058b2265dd4856bda4f419d114b5b93a10adfbbe18502b3521a582a7765575b66d79833f64e43bdd34989029a6189e1635613b6b198512d17369a569ec9f1209115564655de94097a084ffe6f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign indicates a pedestrian crossing. There is also a smaller yellow sign with a downward-pointing arrow indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3209.0, \"x\": 1036.0}, \"hi\": {\"y\": 3457.0, \"x\": 1355.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5143: trackId=t1:02e19222f1bfc11ee75b69a17bc52520:ffff005f, observationId=o1:315e2960a5d857de987e451eebd2b4b9:00110060\n",
+ "Processing image 5143: timestamp=2024-01-11 15:51:43.360478+00:00, observationId=o1:315e2960a5d857de987e451eebd2b4b9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2543809438489147, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3073, total_token_count=3170) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e19222f1bfc11ee75b69a17bc52520:ffff005f', 'observationId': 'o1:315e2960a5d857de987e451eebd2b4b9:00110060', 'geographic_point': 'POINT(-81.9612671870254 28.0314324860021)', 'mapsURL': 'https://maps.google.com/?q=28.031432,-81.961267', 'captureTimestamp': '2024-01-11T15:51:43.360478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A315e2960a5d857de987e451eebd2b4b9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=715286843a00bde0da8d422c3d22bf0c90974b93a535ae857c183b023f8ed574b6ae87103e35063f76635b07c7488414cfa5eb089884d41b3b5e2f28b8f7c0319786997fa1c90898226e1f0b32858022d476dc7412344eb550d94baf68bec9fa052d4359b64682e84ef62d8112039f69816f96e050be25812def22c501c6c851282e4543e39b14d9893869bff900f7e703137850deac8aea26af818a395f3d3e7be852023f1e9a7492bd847ae9c0a9249cb52efce0736430e7cac1d1a7a25cb7f65c8f85442d4561e791bfe0080e15f1638c43db1cdf3ca663f353f0cf2f1ed5010887e63294abfbb61d4a868d13c8725238ecf11bc5b7e6b012dd2bf36f0540', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign with a yellow diamond shape and a black silhouette of a person walking. Below it, there is another yellow sign with a black arrow pointing diagonally down and to the left, indicating the direction of the pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3280.0, \"x\": 596.0}, \"hi\": {\"y\": 3453.0, \"x\": 786.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5144: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060\n",
+ "Processing image 5144: timestamp=2024-06-13 17:53:15.193826+00:00, observationId=o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white striped traffic control channelizer. Its purpose is to guide traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30974260965983075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2041, total_token_count=2104) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:973fd8a80a0dc096e73b2e8d71fe70b9:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:15.193826+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A973fd8a80a0dc096e73b2e8d71fe70b9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=51827434932d70736c01b8426fec350d3e0d18a439c3b7bd154dc6a465c3846953bb35539315230158837a05543ba8ce654790fed8632a50f24d66e63d89ce458f8b32828563e765d00282d3fcfad271e4d023a5fb5281a2dc820927d8eef7111f440d97d10e3e4987f1ebdc81b064b43a7b3363bf30debcaac067c283a070505321d980fb57fecc8cd9a197c851f0578f742094609416c13371b7c84ff2b81364181bdb21fa32f2aae3180246876535740ffb436a3d6a64a0d54fff714198423f717803d1c633099ac38104f829bd9f45114bb5a9ea18f3b456e4a842f46865ffd684d8e3bb2c1f66348fbbb37491aeefe16d25fd8998773323fa749183d6e3', 'category': 'Other', 'description': 'Orange and white striped traffic control channelizer. Its purpose is to guide traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3954.0, \"x\": 2993.0}, \"hi\": {\"y\": 4510.0, \"x\": 3144.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5145: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060\n",
+ "Processing image 5145: timestamp=2022-07-07 21:23:11.199126+00:00, observationId=o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20925277026731576, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:91470ab8652d9d903a7eeea96fc5a9ec:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2022-07-07T21:23:11.199126+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A91470ab8652d9d903a7eeea96fc5a9ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5cdb6ec3de6a5125878bb684678d70e297b51f411176cff399b6f275dc4f484c0cf8f5fc3debc1f26a8ddf95ff197d16bcf68b1a2c7849907849904b0763eccd7782559112101ecd99a7893211925e453bdcf664377336c9554857523e7ab811efa8b44fdc3425488f4506b18e066f42af587564f38a3ed50375c22ecf847507a5392834631a48634532a4bb69025eaa33f3bafaf579002d60c70e5d9ba30996de17e142d4e8f126d66465aee33cdc02e773161a9a3e70005baae88f55e48212b999ec69c02d6ecbb1d823d8ecfe93f1aec470c1ae49d76d8303c8e892f56bbfe8e1d7cdcc542588714000cc12cc64c67f8fd783034cf5a00474ab62ac59b109', 'category': 'Other', 'description': 'An orange and white striped traffic cone is visible. These are typically used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3925.0, \"x\": 2109.0}, \"hi\": {\"y\": 4393.0, \"x\": 2240.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5146: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060\n",
+ "Processing image 5146: timestamp=2024-06-13 17:53:14.857710+00:00, observationId=o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49042510986328125, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:325bedb6b6989b7b7d86f7e0e6e9dfd5:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:14.857710+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A325bedb6b6989b7b7d86f7e0e6e9dfd5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=162e29808970bc5b2555f5ae2d31ddb898a455a2535e83e5a1a39b257e04b8bfbd3cd3754e47c1a0a80e35909651bf53a116be001e9fbdfd0c7b702b1c8ecf10536203956a46629e1129244476d4f5b2739f9444ccf58988c451f702ecc7209430b56de4997533d020a8c01fbcf8ff4c795c2a218be58b05a0cf671daa82f0c730bfb6abc1dd9322e32bfc6f70d5ca90ad3a7cfe9b6423ba8405ffb8cfe5aeadcb3c748fe7694c7b6b68fd8d6aa06eac5308b14dda520157983786b337a3db9bcb388811f5a24ffaabc56a5fbe516dff4b8aa14410bcefc281a679f59db47180d7f6428959cef63131191617df310dc37e3bc652d58930571936b2cddb24d587', 'category': 'Other', 'description': 'The road sign is an orange and white striped construction zone traffic control device, and is most likely being used to direct traffic. It has a black base and a handle at the top.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3682.0, \"x\": 1723.0}, \"hi\": {\"y\": 4008.0, \"x\": 1808.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5147: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:266e59d8982f6277c2a1e63289ca3729:00110060\n",
+ "Processing image 5147: timestamp=2024-06-16 15:28:54.386726+00:00, observationId=o1:266e59d8982f6277c2a1e63289ca3729:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic control barricade with orange and white diagonal stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32066793609083744, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2041, total_token_count=2098) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:266e59d8982f6277c2a1e63289ca3729:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-16T15:28:54.386726+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A266e59d8982f6277c2a1e63289ca3729%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9abf7e34e11d3dcfcc083e415c11100127e98292f3d416fb4e0220731e7d4fcfbd9d8a188d6de01dddaf47ea089196a92f50169bdede6bd8b670f5a73bc272f3cdb111bb0768c1d3f23488d99aa3c85618dbe5293ff5ac318cf6c2a5572c3120788a08350fc7c669eb77d2fa4759ecbbd1fb659ec318acc279b813f538b6408f6d47e6884adc5a5a857ee132e7bbae0f56df6f660ac05f221bb883d91ec8b9b4597ef4c4a5299086f0c16d7ce6c56fc0a80234699a8b6457199d9705a66b25e1f2ddf22c6e787f7afd1a66bbba04dd27f6cbb6d1458c211c8e2e75ab55a8f0ac20c7c715207a45451dbe2eb5941c946a462c746b6383b2a63ee77a4f6fd878ea', 'category': 'Other', 'description': 'A traffic control barricade with orange and white diagonal stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3764.0, \"x\": 2302.0}, \"hi\": {\"y\": 4160.0, \"x\": 2386.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5148: trackId=t1:02e2385c55f2b14dff66734007d19eeb:ffff005f, observationId=o1:67fe6d24d962d69320e57a2502b92fe2:00110060\n",
+ "Processing image 5148: timestamp=2024-06-13 17:53:15.193826+00:00, observationId=o1:67fe6d24d962d69320e57a2502b92fe2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3701341474378431, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2385c55f2b14dff66734007d19eeb:ffff005f', 'observationId': 'o1:67fe6d24d962d69320e57a2502b92fe2:00110060', 'geographic_point': 'POINT(-111.939487045425 40.7784983798528)', 'mapsURL': 'https://maps.google.com/?q=40.778498,-111.939487', 'captureTimestamp': '2024-06-13T17:53:15.193826+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A67fe6d24d962d69320e57a2502b92fe2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e264e0264fac4a4f1f1ac9c0b138604340dfbc82ad2154ddbdfe35120a55e305084377666b42324dd90bb5a08e7c2cfcc70598034030b14bb80fb2df9f688e4ddb3526a18ae12920bf30733a76dd022b76b4879c5a358a87a24e52bb4a338fb64644fefe4236f3206a4fbd68bcde6e01056a7f9868e43167e9661416fe587093110683aa4ef82bd18a75e96b921f336b19d6b78671872e197d1cf09cffee71ae71fda777c0ff36125599cf968c6d88b925740d78e1d892ba05ef875a8a291c8678484a7a5ceb4e8f069ef345cbd91752f03a11be08abf844dd3dc33ab744ae95012c53881588c348a230e32ad6b10388d75950edb22c99ae83082e73c1e6f8f', 'category': 'Other', 'description': 'An orange traffic panel with white stripes, sitting in a black base. It is not a standard road sign but used for temporary traffic control.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3116.0, \"x\": 252.0}, \"hi\": {\"y\": 3721.0, \"x\": 406.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5149: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:2d327c931f47b57053a1eabf59bf694f:00110060\n",
+ "Processing image 5149: timestamp=2024-02-14 22:17:49.014897+00:00, observationId=o1:2d327c931f47b57053a1eabf59bf694f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09539043241077, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2557, total_token_count=2629) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:2d327c931f47b57053a1eabf59bf694f:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-14T22:17:49.014897+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d327c931f47b57053a1eabf59bf694f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=718f82961f97c21e1fe257b1fe4b2fa7f96fd3b79e55728f8a5cf0c4bd696e34907c31b3a48bab168dee1698f53a85064c4ba8d15e7d9d759eaa32960e912272e0b911209bec0f36ace18cdfd99e87fb305bd22b2072ff2cc82ac81c5b979c96fa1025d68c4ad8c4bfdb5693947dae35537bb1f02c3c7d59eb16f2084513d4fe01f910e0c12d7cb8e1c641c0299111a64fd7a91accb500e6508f4251e32763467c6e45da6322cbf35017f0ee6f39ba58580f4861efa5b685b6fdabad05b1399cd4b75565f9d9eb7ac720dd80649f34013ba54890b46f40a3d48a6b6e44c700f84af79a88a516a078fecfb2f686c19a1bff79fb5607c2d68663975de44ce864e1', 'category': 'Pedestrian Crossing', 'description': 'The image shows a yellow diamond-shaped sign with a black silhouette of a person walking. This indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2710.0, \"x\": 1918.0}, \"hi\": {\"y\": 3288.0, \"x\": 2366.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5150: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060\n",
+ "Processing image 5150: timestamp=2024-02-20 19:02:49.794159+00:00, observationId=o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign depicting a pedestrian walking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03619218680818202, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:8d1b83ac0857163d3ac18f9713d7bad1:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:02:49.794159+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d1b83ac0857163d3ac18f9713d7bad1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=04908d57c259654611c378e1b3732f418834608204ec330010e6d0b25f804c23c886fc70cc94b16437b65831f51fac81b00d34317865ab4870111f8cc4aa17f299d1c545a8a2b360ee19b5e898f9ce692ac697cb323c53cbf5ef50055657951d9914d3f7e306104c8a6214e9cc5a3b0100d0fd3f24894d47ac48370fb6521732fa7c5280fee0127c8ade79e91ab01e0ad084ebf5a3829db7a128f72c65ae71ba299402ca7f0630f8bf1a0d562ebfa8abcb861a94bd18d151ac42ec1a624bbbe1e523f7e3f5b88dfa33eb22ea8de902d2ccf0b17aacfb26e0e5e0a6d1f23a975f9509bc3a3577ce3a6c2834432be855ab37c8833c39770315dd809a6b75b8e6de', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign depicting a pedestrian walking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2639.0, \"x\": 1977.0}, \"hi\": {\"y\": 3314.0, \"x\": 2496.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5151: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:4244a632873878cc192cf65fed35c32c:00110060\n",
+ "Processing image 5151: timestamp=2024-02-20 19:05:47.295878+00:00, observationId=o1:4244a632873878cc192cf65fed35c32c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08324499428272247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:4244a632873878cc192cf65fed35c32c:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:05:47.295878+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4244a632873878cc192cf65fed35c32c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b80bda39f4fcce15d2760672876b7e30b1e34ae7a90964b1dafe40637be5734e713b4452d8fc726cbaae8f0a38f60fe47abcd4a105223b13db2a17dc3c6ade8e9cad25e7aa06d767997078620ad67cb76620bfbc45296af403d05097bb40800bee775f021d61faf794250ec7b7dbf49abe877222b2c6ad66197c172e8ba7a8a27a7438ddb6fc83e0165e47de0a225a249c0efa87f4536e203807dab9baf42fad3c6a323fbcaca062572fd5a71a1779be588ae6f178d7b8fafb3571b2e5d7e4a8d1540e8bc4a4adabff92f436d0513aa974b33ebb86fd1883d091c9d6aff386431c4ae1ced4bccaa261968215f4ba14533ac3c6da4f92b05055783908e2d2393f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1473.0, \"x\": 1188.0}, \"hi\": {\"y\": 2379.0, \"x\": 1383.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5152: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:34d922dabaa0dfd0de39238c4ae5f422:00110060\n",
+ "Processing image 5152: timestamp=2024-02-14 22:17:48.694899+00:00, observationId=o1:34d922dabaa0dfd0de39238c4ae5f422:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17325782775878906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:34d922dabaa0dfd0de39238c4ae5f422:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-14T22:17:48.694899+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34d922dabaa0dfd0de39238c4ae5f422%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93a9112f7e85c2e19771dc6aad6f87e2ca66bb26659e99c3c238ee153d7b4e386b499031e47fe8cc386b3a1208eaaa2a85841107d5b60728d2ae94923225ac6fb48405b0b644f717be0f596947eb1c64700453f1401b3228cc5a89a050e469bbe9619b970376f9f241a8864f4e5caf1ea3be8e4d25c8f41aae7febcd82dc02c66f87e6cbd45a8dee02318f7e3eca2942bc670dba8d31e6873472e7df64b139a31969a5a3de12632a141f3c8108340a75934ae7f83e83b3b6f09fb6b7d4a373ca6a18c1f18ea5fac601299bd9c2590d86411037dc42fcbdd0131f2639c0a5877dccfe33d977a7b1b324b09f48ba245c6a3220b69e4177b3766f6b0aaf921cc14d', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2916.0, \"x\": 1201.0}, \"hi\": {\"y\": 3263.0, \"x\": 1517.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5153: trackId=t1:02e25f5b2b3451bf2207b5489314c33b:ffff005f, observationId=o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060\n",
+ "Processing image 5153: timestamp=2024-02-20 19:05:46.131497+00:00, observationId=o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12434279918670654, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e25f5b2b3451bf2207b5489314c33b:ffff005f', 'observationId': 'o1:16e8862f2ff5b6fd64e337d1bbe00c94:00110060', 'geographic_point': 'POINT(-81.9574423928929 28.059763936382)', 'mapsURL': 'https://maps.google.com/?q=28.059764,-81.957442', 'captureTimestamp': '2024-02-20T19:05:46.131497+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16e8862f2ff5b6fd64e337d1bbe00c94%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=72beb11e6f2360a0e5c05813ba022e78941d0a77af9058f7fe944b8075befe1b97b98c3c770e54a062c4540240485bf5dde49c0fdd8ebfea99d4522afff69099015c53a546fc08409303c0012fa8c68b532f933e721ba65fea19bc07ce300b043310ef39438351cf63f78056bda8b4cf45f0c9bed5d5b704e93164975263a2a4a89de30a16593004ac1d296da121d4349320cf03b7e1c06717544e2ede8adb3a667f420a491def3654dfa384619bd50a062744150a4a6149a3a9b3cdb13897624ad66f7737f4481c00b6b519404d833939bb059aa3d021f577a69a20363fa04be8f49c06f41fb25643bfefe145ac059b4fb2c60d6d83ae6a9321e5794038695c', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond with a black pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2829.0, \"x\": 2019.0}, \"hi\": {\"y\": 3315.0, \"x\": 2439.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5154: trackId=t1:02e2ebb5d7bae8662271eb283ac5e6e9:ffff005f, observationId=o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060\n",
+ "Processing image 5154: timestamp=2021-12-29 18:27:08.235453+00:00, observationId=o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign depicts a bicycle symbol above the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13121425128373942, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e2ebb5d7bae8662271eb283ac5e6e9:ffff005f', 'observationId': 'o1:e60c87017bc5ec6b9dd0e8caa344021a:00110060', 'geographic_point': 'POINT(-111.890953487174 40.7379361398839)', 'mapsURL': 'https://maps.google.com/?q=40.737936,-111.890953', 'captureTimestamp': '2021-12-29T18:27:08.235453+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae60c87017bc5ec6b9dd0e8caa344021a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c388e0af9b1f0df7b9c8a58ad981854cc424d8c3954c9705d868d4bef23f5357b71cb65e8ada5df35b8a13a732831b811e1d15415de29b1b4b59aaa72fcb399bfe4ffb3a303d1b9c00a03fbb6fbf201759ff093eba286b144c0d984c53ea3545b314130bbf28cdc62175be81e3ab5baf82f02aebe152a0e53d80996a6933ddf6d7a84d0cd47e8e9f9d5ed0615778d128e07894de5f08692f573e5794917e1171cd0571258e957f65e44fc4f70d0681c244169ea47eb39b5ca7a4eee406a6d93a6fd45e6df90f85cb6ad0e37fd5b0f53e47fe8c6a85c8be21053c0199dfd90bf9f33affcbd0e8a6e43bfb6cc4c0e945a81eaf03bdfaed8e82c54de20387592d8', 'category': 'Other', 'description': \"The sign depicts a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2213.0, \"x\": 1271.0}, \"hi\": {\"y\": 2428.0, \"x\": 1366.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5155: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:6c2022dcf83acac3ec8a368d3c5dfd68:00110060\n",
+ "Processing image 5155: timestamp=2011-04-27 17:21:14.848261+00:00, observationId=o1:6c2022dcf83acac3ec8a368d3c5dfd68:00110060\n",
+ " Error processing image 5155: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6c2022dcf83acac3ec8a368d3c5dfd68%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67319632cbfea20052b365e359595e8d2c8a7d6361fce5305cb81b32ebf67ba44926a56c5a36a2418cdcec28b3368da01c66f4e5e47c1a53ccac48ceb517ab53d2653687688b77431bc3e36547463c81e540963cb1e1993f739946cbd83da3a9bec0b41b71e2eeee26bfd5d5b7f558ece095989106b07a0abd4bd8568207f63b7854fa03f0fb326196ea06bdb81f0202aef9d9d474a1dd1e5d831da27fd24351dd5fb4cf808cf9872354d5621d3210e00874312ebc88bffd40d24046c87571ee03d9efa3ad42405a09fc9b30915ef18fbafcc17238075b628bc685eba0575c556baf5ba98e357d4a526353617e2d8643619f0e8dffccb2c2e5743c9bb0b4ab8d\n",
+ "Processing image 5156: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:bcc214d1da94f8fb52e25de26db5035a:00110060\n",
+ "Processing image 5156: timestamp=2011-04-27 17:20:55.905218+00:00, observationId=o1:bcc214d1da94f8fb52e25de26db5035a:00110060\n",
+ " Error processing image 5156: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abcc214d1da94f8fb52e25de26db5035a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=39898d1a8a2bbde6bfb436e75d83f3a9bbcb2f0df0582f991043c22bf22be4be18839ec704159c8632c89138ce6b287058c4a5b9992c9ce3f4ba3e6443fa6f6c2d9ff8cdb867d866305f60b00f6e5e294cd16acaa5abe7838e2c25972e9466a2be4e2231c5e02b66aafeadab0ba35e85c5094ef607c8b43b524d26b5f28db56d799b53e6f22fda22b7bd8e46396d3c5b946be739288e64bef6a175334d31a92f9523cbb7da216a09222de7ec9cf4aa20a9d7e5cbc9ad4cdfad145590adbdadad35b71f782e67570e9064e3d3829e347fb42c9275dfe7cadcfb29e024faddc8790937086829d0f5ee0d1f064b66183f7a6ba59e6325f85a0ed79c4700c1e1da32\n",
+ "Processing image 5157: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:6bd54a9102ea278121dcd9e411900625:00110060\n",
+ "Processing image 5157: timestamp=2011-04-27 17:21:15.759358+00:00, observationId=o1:6bd54a9102ea278121dcd9e411900625:00110060\n",
+ " Error processing image 5157: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6bd54a9102ea278121dcd9e411900625%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=91b515205a16dc46b77cdbb29d00bf5b7b4f0c051b292ea3fd13d276ac7863cc20871e17f1c7629fc9e929c6e75d7998832b7669e11c7c9333f770a67379f31db94a0722d91486b06e17bfbb2974280125d27b35bbb68379f741eebf347429620466ed5dd9eba6ff7157668a5130701a06250ecc718651d62786d0aa217ebd7234cbe6d8d753dc190b8c20efe246d4ef3f3d989b0a8fb36e957ce5eedd165b98c17567addd5615749628df8820c2d307379c376be535236b5d2f32b7864ea18533522a1a832dd36392b12b2d21e3c947fa50f7cba24004793907fd6360f6991daa5ed5dc07b6d6781a77d2b53ef46b27164f2859afd755481fd53a0744174c01\n",
+ "Processing image 5158: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:20b6c7f7cfe4285fd30c82660596fa4a:00110060\n",
+ "Processing image 5158: timestamp=2011-04-27 17:21:16.584439+00:00, observationId=o1:20b6c7f7cfe4285fd30c82660596fa4a:00110060\n",
+ " Error processing image 5158: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20b6c7f7cfe4285fd30c82660596fa4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=97d77032e3570d4c371b0fd1d8025430c78a993b3e2a8a22d61995dbfaaf19b4f1f47f3758dac17ce1aaa55840adbd446e30cbf6338652b4601c3da001bf828d7df21ea652df0b4ba755d393c352ea2cabb570d344942812d958a71cbaacfb5df341a49f3f86082e74311cd7cc99e50363f0da75a2d839afe0d8820db8e6f83f93739bb6b8e76e424f53b75a98e8010c69a4da5bfc0e9a5487bbb3b926ded8862636669aea8eb3eac31076a5242853832a23ef03674f71446a15183c97f946b94ba495ecb47a075dd0febbbc870b02b44483613491cd78e4f806185722fd56c1a588945bab10a865cf6672ea4e0fc5d6994163b0e239301a21af27396ff3181b\n",
+ "Processing image 5159: trackId=t1:02e3f20e7d0a191004f5f43fcd7b3a2c:ffff005f, observationId=o1:a47be06ae8feaf18465e14aa51d75c8b:00110060\n",
+ "Processing image 5159: timestamp=2011-04-27 17:21:16.584439+00:00, observationId=o1:a47be06ae8feaf18465e14aa51d75c8b:00110060\n",
+ " Error processing image 5159: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa47be06ae8feaf18465e14aa51d75c8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92fd45e6f90b7d73e2b80119027bb9e1579737c6398e0dcad1bc313641d864591bdbf8c7438bfdcafd3af6fce4b6022ff41a8e0b1b926d48e9f938081a9d69ed6de09d946a14bb5713ad70e244730bce0246c3b8e8f8af0d7214fa4225556462ca3956f8dd734577f018fa14101fb12a1e90b9673560bded0cfbaf865dfacd8c53f2952bf547ca288266f4ca358ea482e4b1d87367dcd6d11b957b8b8cb5143894d44917025fb08c4c928953bdb211358bf4ac7ef47f3ba677500171f0d70593a7792af12ecb1430b915c725c9d18f291804686a01a71b09cdb2294a8075916e57f3762a3e7e2b2955703a5ba5abe2d1bacd376b363037b9a2b9482529fa7def\n",
+ "Processing image 5160: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:0141b390b96306edad2113477c790587:00110060\n",
+ "Processing image 5160: timestamp=2024-02-06 15:24:54.309801+00:00, observationId=o1:0141b390b96306edad2113477c790587:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text \\'STOP, IN CROSSWALK\\'.\",\\n \"image_quality_notes\": \"The image quality is slightly blurred in the middle, but the signs are still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3262047610440097, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:0141b390b96306edad2113477c790587:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:24:54.309801+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0141b390b96306edad2113477c790587%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d48a0fcf3d7013aca9f3a59ed80736f0bb1fb45923dc9ab564005e27382ee2b8a446e1f5bfaff3210eed3290be54a7ec26c7f8525a6fdfbc71b9e368f3364ce816a17ed19d1eaa887aa3faa86146fff3543963c87e87b951e67712ae0f50f6d45be3e03c01211cd9624ad9bcf0cfc8f4dae61628f41bf20c33456de51772447020e6fa9b0c12054fbcb41556c8973df6ed3606ce4cd8292351e3d559642aeb8df5d69475a9c6d31631a41ed68deef6e1e5af3d73a5d03915ed33a2c7c5b78899fa0d0db885ff549c99eba8850e07b33be8a4c3c9a2ddd15578a4cb7b1265d6dd257147e6260ef8af91fd74f99c343412b3fc4614e0c026ec207fcb15da87d9b', 'category': 'Pedestrian Crossing', 'description': \"The image shows a pedestrian crossing sign with a pedestrian symbol, an arrow pointing to the left, and the text 'STOP, IN CROSSWALK'.\", 'image_quality_notes': 'The image quality is slightly blurred in the middle, but the signs are still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3544.0, \"x\": 1846.0}, \"hi\": {\"y\": 3879.0, \"x\": 2124.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5161: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:511afe5c2b0bff85304c71ac2d189453:00110060\n",
+ "Processing image 5161: timestamp=2021-04-07 21:49:32.856065+00:00, observationId=o1:511afe5c2b0bff85304c71ac2d189453:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4304587500435965, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=3073, total_token_count=3185) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:511afe5c2b0bff85304c71ac2d189453:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2021-04-07T21:49:32.856065+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A511afe5c2b0bff85304c71ac2d189453%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3d35ed830c754aa6f72d4a292940bf7c5f74605492ce126b61d6164dffb938f0f78cae3301bf5c754dbe644ea9a7f0b43a6d19cd7e47e1af2ae1146f679abc926df4f072656578baed8ba044d50e28a10af5e52f843100d0a4e780ca43b45a2a9b31f3fbcbc8a3b7a30e990fbba57cdb19382edede50edd5593c52748b83847ab17e424d6e61cd321451f20e493d1544af72bf12c286b5d5d156f1332c654bc4bdd1f24a951b0743c512778702d42e5c237f2626b55f52f99d19ee901263dbafbbaec069e5d69a222ece5e562e93903db7a48be6649fa42d95d5aba14bd0c7203accb24e20eea478a8b674d59b970c4947ebd265ec8280e39af69dbdf36277b9', 'category': 'Pedestrian Crossing', 'description': 'The topmost sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. Below it is a yellow rectangle with a black arrow pointing to the left. The bottom sign indicates that state law is for stop in crosswalk and has an image of the stop sign and a pedestrian on it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3602.0, \"x\": 2298.0}, \"hi\": {\"y\": 4029.0, \"x\": 2606.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5162: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060\n",
+ "Processing image 5162: timestamp=2024-02-06 15:38:26.592440+00:00, observationId=o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states \\'STOP\\' within a red octagon, along with a pedestrian symbol, and \\'IN CROSSWALK\\' written below. \",\\n \"image_quality_notes\": \"There appears to be a blur over the middle of the image, but the signs are still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4454074466929716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=136, prompt_token_count=2557, total_token_count=2693) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:a2ac44b0d832f1b69cfc33e2eff7ce75:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:38:26.592440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa2ac44b0d832f1b69cfc33e2eff7ce75%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b6971e2e997a3ff4011425b367ea00ca225d3d61ce597c49cca0cbef7868adbe879ec3a0b4b0add5cfd243e5db6e9a832ce4fa79775d10647e95702777240c87499cc23fa731bc369512c40d8a65baa34624c06f2f4ed69627c922273271414af2bd023a247fc42193777cfdaf946874361cc68ac2a5035a31934bd75c48aedb69a161b91e16f10653355d605d4bb6d9cbc3c4910e844e14fcaea3ffd083d4672cbb7d228a39a6dcf86eec6f2e86b857e7cc8fcc8c48c32bdd01eb1cc7f1a511e65a1fdcf9ff4f65c9fc674960d65c1b7dca6b34ba42aa613c7a86fabc3994d33d8eaddaaa179a2bc5dcf18224fb489475dd3c42d4f38f6329119e3bf4e92e01', 'category': 'Pedestrian Crossing', 'description': \"The sign appears to be a combination of pedestrian crossing related signs. The top sign is a diamond-shaped yellow sign with a pedestrian symbol. The middle sign is a yellow sign with an arrow pointing to the left. The bottom sign states 'STOP' within a red octagon, along with a pedestrian symbol, and 'IN CROSSWALK' written below. \", 'image_quality_notes': 'There appears to be a blur over the middle of the image, but the signs are still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3550.0, \"x\": 1832.0}, \"hi\": {\"y\": 3898.0, \"x\": 2119.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5163: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060\n",
+ "Processing image 5163: timestamp=2024-02-06 15:17:41.308953+00:00, observationId=o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4044478542833443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:1654ad3c4f914e7bac94fdfe64210b6b:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2024-02-06T15:17:41.308953+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1654ad3c4f914e7bac94fdfe64210b6b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0af2155561735aa5f4f6de08ec0af35bf41fb360ee84dfab554273d48271940486b0b3a85a5017b4fed785c0ff1e9109cf96b60d0c2b6d64ee160fe738335f1463a957675bbe04c9b5e292e16023d621e88f5d95a70d0888e2ebe0360cea9fc51f0f7955eae1110c115ed9050c1b74c8769b2ee388b6590a2328fbb0fd83f4406061d3bcd32bf4b78db1a465028b878539c1057d196f499a17e61d059181bcb3b28cbfd7d9a9f14fb47e7b77d0eff55e0c5d73cef2a1be5ee2abb0dd2b134ed386a030b82fc5a35589ec17716209983ab9c3d9c8213d6a7cb216082b9f9e39b5ab3e54f818a71f8586d42de066b91ad2dc1e10b71fe5feeb655c974fbd86ca44', 'category': 'Pedestrian Crossing', 'description': 'The sign indicates a pedestrian crosswalk with associated state law requiring drivers to stop for pedestrians in the crosswalk. There are also signs to show the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3536.0, \"x\": 1762.0}, \"hi\": {\"y\": 3876.0, \"x\": 2045.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5164: trackId=t1:02e64805dbaf98d59db4e1526912f13a:ffff005f, observationId=o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060\n",
+ "Processing image 5164: timestamp=2021-04-07 21:49:32.148007+00:00, observationId=o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40775618186363805, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=2557, total_token_count=2661) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e64805dbaf98d59db4e1526912f13a:ffff005f', 'observationId': 'o1:77113c2a3de90d0a9e762ea2ad0dd33b:00110060', 'geographic_point': 'POINT(-81.9541341557884 28.0317213909772)', 'mapsURL': 'https://maps.google.com/?q=28.031721,-81.954134', 'captureTimestamp': '2021-04-07T21:49:32.148007+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77113c2a3de90d0a9e762ea2ad0dd33b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c7845e035d0b0834e22cff86917a889d6c30a500302c5c6a4787055429bae1cc1f17af760f6c61d0be7ad898bbdfdbfa125142c63dcfad3a69105db7aca5a71dc64187fab14acb71e85ada2730331d64155b348d34faa8e4ba3a3b6ecac70eeaa25edf947cf6b381e149ee5bd7a6e78248e003f665d64f6ed0dfaeb5cffd94a95e08139292b337c8491aaa4ce4287f615e66940b4fcbc8ad4275861779ee462ea19cd38a2b3e4673814ad378a205942059b1bcb2b6cb3fd7cf01a04fdf888c6e31bece1072b3c4ba0c2649934cecdcd656eef9cb4383a1ca1d1d71a2e215f551043aed0457ae0f96272883cfc6b860513bc01ac9a6788b230c36fdc787832f1', 'category': 'Pedestrian Crossing', 'description': 'The sign complex consists of: (1) a yellow diamond-shaped sign with a pedestrian crossing symbol, (2) a directional sign (yellow) with an arrow pointing left, (3) a sign that indicates state law requires drivers to stop for pedestrians in the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3439.0, \"x\": 1194.0}, \"hi\": {\"y\": 3638.0, \"x\": 1387.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5165: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:2ead7485eb9fcc9b5804dde20edb875f:00110060\n",
+ "Processing image 5165: timestamp=2024-02-12 19:53:08.254571+00:00, observationId=o1:2ead7485eb9fcc9b5804dde20edb875f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a direction (West) and a route marker, likely a highway or route designation.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32507682569099194, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:2ead7485eb9fcc9b5804dde20edb875f:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:08.254571+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ead7485eb9fcc9b5804dde20edb875f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b55afc415ae0586fe3abb79db695c0a0f8aadc5f33cedee7931a52ed22139e6eb4da88955908316ce2a651c81aaceced6d8c51a686865baec26b2cbf309c16b33af1a5595cb55e23ccbf7b9947855d709953b9cd5bb133b40c56032a781b03db280840beef6c50c3fbe6f171d1ca9d88eee0a7ff8f7fcbcecc1eed72cb933a5cff66c84eaacbbae2ca4e76a2876a5abe650a058b996151c2dcfd9fe947c950efac4adeedd01947ee9eb759aeb0181c2bb4dd3151038a827ba500bd904061998364ae0d6ffe54a6f9c77d772375855b70d8e49773b3287edcf08b99b14a06dd8e134a73e729db69cd8abe248090c8576fd2860c6fc3ffc98d312059105c36be0e', 'category': 'Other', 'description': 'The sign indicates a direction (West) and a route marker, likely a highway or route designation.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2974.0, \"x\": 1645.0}, \"hi\": {\"y\": 3045.0, \"x\": 1757.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5166: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060\n",
+ "Processing image 5166: timestamp=2024-02-12 19:53:08.958517+00:00, observationId=o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a sign that says \\'West\\' above a highway route marker for route 9 and a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36217641158842706, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:fe9c4f4d8e063bd4f991e249a6219d65:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:08.958517+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe9c4f4d8e063bd4f991e249a6219d65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae65767eea08df6305b405037a8da57ed3bf9616dec958933d88c4655620aa315f1c6f70a9bf0decafa8aea3b1f2da7ce570fdb31dbd808e5956377bf09b90800de4dfc436827c8aab9c6309fb4e57fb8045842219ab42d75f4696a345c728c6282f9bf7a95de52dc453336fdde553d6b4350330ecde3eed41c7105e44ecb202d8f1e97bcd19aef693e15684caef84d7456290903f20a0e3fc2ad13f3638f5448d88c196de5aa63303a1c287f9f8d860cd9a2c45f02678ba25018a8ce2b4edf9440edc54f862d65a1f46ce2debf266f2cdcc1558e667f27b8521fad8c5860cd4f1b064367464ef1a257f442262e319328617b17f25c14b5297fda2f3bcb5e089', 'category': 'Street name', 'description': \"The image shows a sign that says 'West' above a highway route marker for route 9 and a left arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2892.0, \"x\": 2181.0}, \"hi\": {\"y\": 2981.0, \"x\": 2315.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5167: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:a221a91aba79438057aa06a6440598ee:00110060\n",
+ "Processing image 5167: timestamp=2024-02-12 19:53:14.418508+00:00, observationId=o1:a221a91aba79438057aa06a6440598ee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that this is a West-bound route 92.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29385668231594947, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:a221a91aba79438057aa06a6440598ee:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:14.418508+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa221a91aba79438057aa06a6440598ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b5ce15fbdb364558465fe6bb6da292718006adf763d7987eda99d96fbf2bed38f412e83195a55b1285d7c30416ad26c1f154d073afe15aa901fee747ac587f36de1c5b395c9c210e7ba95c0c902addbe9d581bd53e888237917c8c9589450ac8188195ef6f8764ec0f599186153312682029855b5a7b816f57689818a16c23138fb3ebc228628a304b2f1b9c86df332c680c099caa7103db67be64a36bb6259f5bd4b0408c413063110a52a17925554bc3229ba15c6ed986bcdc50159cfc1269832d050e65b4cbe5046c9abd57fce66f6769407086af5eec86e9308e34a0351389a5368ac12e987b236a735c499272f26ab76536adee436ff33ed0231a59d34a', 'category': 'Street name', 'description': 'The sign indicates that this is a West-bound route 92.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1805.0, \"x\": 649.0}, \"hi\": {\"y\": 1963.0, \"x\": 744.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5168: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:cc95afa1d4283e971968fb56b0cd5516:00110060\n",
+ "Processing image 5168: timestamp=2024-02-21 15:01:17.750503+00:00, observationId=o1:cc95afa1d4283e971968fb56b0cd5516:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the route number as 92 with a WEST directional sign above it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22619640643780048, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:cc95afa1d4283e971968fb56b0cd5516:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-21T15:01:17.750503+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc95afa1d4283e971968fb56b0cd5516%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ba9290111566fdcc3d7941b1b47c30cb4161d536e4d748cb2b2315737bb8119529e023a8c8dbbd704017d810eab64b784d909ec7d8549917f1bf663b25d0268fe045959d6c428013a0139d21f4441d4b6fe7fc1120ccd108b133834c5be209a483a47e2401df03d30291bd4f97c1042d5d67ddb1865f737bc36f8175016bc956692f6ced1fa5d1a06ba0e413b238fa355693622cf28feaf8194aea3ebf6dfd6bf35c4cfe5fc9a2055e6037757f6684709364437a3af2387056722a9b0c53781f8ceb5fb3829166714beea290626ef444d3052e6f2d57a4cc6307be7ab4113aa745ca45931247457f512c70b72d3b700fc3623975fd6bd413700916e02086240', 'category': 'Street name', 'description': 'The sign shows the route number as 92 with a WEST directional sign above it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2974.0, \"x\": 2839.0}, \"hi\": {\"y\": 3051.0, \"x\": 2932.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5169: trackId=t1:02e75a0426eb43e246fd03233187c3ed:ffff005f, observationId=o1:94e452919c7ae3c7fe93bdd531132283:00110060\n",
+ "Processing image 5169: timestamp=2024-02-12 19:53:10.006551+00:00, observationId=o1:94e452919c7ae3c7fe93bdd531132283:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign assembly consists of: A \\\\\"WEST\\\\\" direction sign, a route marker for route 92, and a directional sign with a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.334491850454596, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e75a0426eb43e246fd03233187c3ed:ffff005f', 'observationId': 'o1:94e452919c7ae3c7fe93bdd531132283:00110060', 'geographic_point': 'POINT(-81.9899706545383 28.0549592920354)', 'mapsURL': 'https://maps.google.com/?q=28.054959,-81.989971', 'captureTimestamp': '2024-02-12T19:53:10.006551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A94e452919c7ae3c7fe93bdd531132283%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=635d171bd5a8ab6fed45e714f592811710674840a5e388f24bf30b93a8c2cc7e8c87616fdaeffa6596eb5b50169d6ca8154ca2901078d7eddb719b1a7b600e07bef90155d1ce40266aedf97fcf485611528aa30226cce7684269754729e22c7bf1fe2fb966eb1e7c383875362161cff0d1960f780675fdb5f981f1ad5789ec348c99a30427adfb8ebb3a1592f3fb0d340e03f38adf6503e2bac30cf73dd4cecf6971a76c73f946968d9a4ebd5a13c5b36de6ba06f97b8492748d01431b757d895b3032684073256d7ba3bb21f0bf131c68040721ac52219c8c15f625135635a26df7ad0bd3d1a2c1d409b7662ff667a88567a9279be4613471b777aad3b25a1f', 'category': 'Street name', 'description': 'The road sign assembly consists of: A \"WEST\" direction sign, a route marker for route 92, and a directional sign with a left arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2762.0, \"x\": 3003.0}, \"hi\": {\"y\": 2886.0, \"x\": 3135.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5170: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:7d3eb5ae098bf158c0004446e8096aa7:00110060\n",
+ "Processing image 5170: timestamp=2024-01-24 16:26:15.732413+00:00, observationId=o1:7d3eb5ae098bf158c0004446e8096aa7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2058994674682617, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:7d3eb5ae098bf158c0004446e8096aa7:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T16:26:15.732413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d3eb5ae098bf158c0004446e8096aa7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=84b56e179902db776a1f5048f890ba8efef77bb83a9a4e35cfe9b6a4e5c5cc64af62134add575da9e09d5d98bba0096b41af1b8c513cded949576a42652008c2af1e98e595b420e58ace155a94eeedc003b9497e131dd13846173040e0bfc5342748f860cc56e4520e931329f59711eb303c4316429b3532ece5205cbe36ea364515a87cf13bd923f846edef271b39c91f203bb78b0a4b41eca2fd84e8a07a747f5b3f38b66b52c397b7b9ef8f7bc1e1fda9b410702744fbd8a36aeae8c478e2815b6af86432ccb57b00f36af72443c3946817dcf33f61d41b614ec9ad5ecd1618dee180c2dcc708f1223f772a8257df07bdb63d168c2356e7f254ebff7b59e4', 'category': 'Other', 'description': 'The image shows orange and white construction barrels or drums lining the side of a road. These are used to delineate construction zones or temporary traffic patterns.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3372.0, \"x\": 518.0}, \"hi\": {\"y\": 3453.0, \"x\": 570.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5171: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:410b8938905077e5e19503aca335c002:00110060\n",
+ "Processing image 5171: timestamp=2024-01-24 16:26:16.332398+00:00, observationId=o1:410b8938905077e5e19503aca335c002:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15649385594609957, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:410b8938905077e5e19503aca335c002:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T16:26:16.332398+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A410b8938905077e5e19503aca335c002%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=051283fbbd5288460364f7605a5382408686d29b8a00ff6ab1309274342f8f6f9e8836850c064c0accde07e4f269a30fac6ba16fae47e42a24b29ac90c66d9268b7701f657ed37846bc7e11521b26727f0a9a245e3189df16475ee5a6238819563b759b6a8354d477ed47fbea12eeb676836831aa159ddec35e5b53580bd1bdf8d45b2e9da99ee43cf6d605ce945348f10edc7f8bbbff8b52f0d2e1385eff1588d0e238551caca9a3e01f621aa5ef7eaf7b95e1ecf91f2db2e643adc6ec2b266c39c32537c2d270de6529990a81554f49e054fe9b1106740637dfdb009029303923dc6dfbe56b222899bb409e3b3bc563849f66d52120e9655017e7d3d4cc72f', 'category': 'Other', 'description': 'The image shows a traffic barrel, which is a type of traffic control device used to temporarily redirect traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3453.0, \"x\": 627.0}, \"hi\": {\"y\": 3581.0, \"x\": 706.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5172: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:a5b814c4b792f4dcde98e5a18bef7488:00110060\n",
+ "Processing image 5172: timestamp=2024-01-24 15:57:08.464522+00:00, observationId=o1:a5b814c4b792f4dcde98e5a18bef7488:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21267333711896624, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:a5b814c4b792f4dcde98e5a18bef7488:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:57:08.464522+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa5b814c4b792f4dcde98e5a18bef7488%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae380c2af3ef11e9193a4a765bbd64daf19438ea930f3e68aa302e26a7d0b3c95b4e7a9da615a8290cdc497d85f9428b14e6f46cafa8b17e54343a99040ea4fe94ff3dfa04c2477627fc347d7cc2af543bcc90ab6c9d238b9263ebe512ffdb86bd200290c0af69dc276cf38412cf522314fd67b0665f8abbcb88b96c8c0c30418dbf7d846001dd0c4efe83e69901517e300c1b3f6847d35a758d314128664db610076fb7c0c4458ad4229d2eb7ffed1f2cf09b094b5ba955693368760f91313103a28d2d8fa95e5a81d24de9ce368404ceb29cf804fb37779e88f26069d5df17379f254a0c3f049cc6cf3948314ade219dc2783e6fcffdc88adb8b152b72b736', 'category': 'Other', 'description': 'The image shows a construction barrel with alternating orange and white reflective stripes. This is used for traffic management during road work.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2957.0, \"x\": 1040.0}, \"hi\": {\"y\": 3374.0, \"x\": 1253.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5173: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:06ceb747177f855742928c23e8c440ab:00110060\n",
+ "Processing image 5173: timestamp=2024-01-24 15:57:08.764536+00:00, observationId=o1:06ceb747177f855742928c23e8c440ab:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2350512875450982, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:06ceb747177f855742928c23e8c440ab:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:57:08.764536+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A06ceb747177f855742928c23e8c440ab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3278cb9c0b89436f162c738e058b4eaae809b34fce111be4e345e1fee7c330c3d2d9c194144fcb18954460ae13756fb18de0fa4115116c36c341cdc28d3905eac464f5bdf9ddaf8428cc35aafb44b664216401c7004739968666e954f7fc78175de014dcf39d01b003426dfe5a50314ec2cce1a235ef731c7c47da6d1a4faf460eb76bb3b803ee8472d93ca4e14c64e48e09472ad0900f14022800e90daaca3037b56d8fd7bc8bac05817d9c6762ae06eb0f05b5ebab158c1187e456d4ca4539db0145eec155cb769dca1e6dc0a5d4bb694c33231fc64c8488d8505f4b52457c091430c3c2f4fec9f25c400bee0bf0a4816fa56e5e4f0c1fc005711e7b559c51', 'category': 'Other', 'description': 'The image shows an orange and white traffic barrel, not a road sign. It is used to mark construction zones or other hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3686.0, \"x\": 2403.0}, \"hi\": {\"y\": 3976.0, \"x\": 2576.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5174: trackId=t1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f, observationId=o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060\n",
+ "Processing image 5174: timestamp=2024-01-24 15:52:51.444550+00:00, observationId=o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white construction barrel.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.060767139707292826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=1525, total_token_count=1581) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e806e7b327d63db0f33e7cdbaab51d:ffff005f', 'observationId': 'o1:721d4d54ded698a34a0fb0728cd7c1b7:00110060', 'geographic_point': 'POINT(-82.0230297955091 27.9747369825835)', 'mapsURL': 'https://maps.google.com/?q=27.974737,-82.023030', 'captureTimestamp': '2024-01-24T15:52:51.444550+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A721d4d54ded698a34a0fb0728cd7c1b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3809953859a95bd99e454f018d14b56369d5ac7d2d4054e5e2c031175f2c8b74f84c4bc91ded8474850a846dc558cf2a58b22f25093d08b1cac055f5c943d9098a894cced6b55d5a48c09530455cb5976d55d38713653e35dfac8b297a6276f48a8ce1741fc96ecc94ed23f2324fee34d8b223a8b45c5480dfc247be87044ad7e89ba50ea1ff533b6d729d2bf724afaa79b85f8249c260768e79b8520593b6708566aef019de0409e1d2cd0fdb86a8fe773479c2c834de2f0e62e2e87f84bb7bc5f07c52745b9390977c6881fe0c79dcf59af77148c12c15b740b3a0b80ae9ff446c39089d94a599848815017740bb824212317884c56cd206855a6844490cb8', 'category': 'Other', 'description': 'The image shows an orange and white construction barrel.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3587.0, \"x\": 773.0}, \"hi\": {\"y\": 3824.0, \"x\": 905.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5175: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060\n",
+ "Processing image 5175: timestamp=2019-06-05 17:36:42.857051+00:00, observationId=o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone with orange and white stripes. It\\'s likely used for temporary traffic control or road work.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the object is discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2377421705028679, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:8cf5e1d0098d2d40930bae5f2bd42a44:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:42.857051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8cf5e1d0098d2d40930bae5f2bd42a44%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5ed2b6b892d6c090d07a2f45f013d77d06b3d58a6cc6e4d1f266553e34244082c04fc7f2cf8cbab31d6459dfcd5836a5ffd93f8c0201cc5d9c7a6d5250af1893a0564038ff06d033aea02d447bb54799470ea77c8fa977b746c06c68073d7714af13e2d0a77992d4c76daee143b616c4c7437d83719a2964b10b4c48941c7e7c9c179407dba453665c9b5dfc7257be51df2664e937ac97629899264d82ef5e3d5d68933a9d4ff4d97d251a995908ad353c4cdade0bd1db83c1064f84e80a80fc461da7e8e3dd4dd958d3de3294911a47aa88fa7cd55c25c91af51b87a3a7e96d33e21e01744f7919d25daa2e0e168743b88ab4aa51eb58160d96ad815e9feaa', 'category': 'Other', 'description': \"The image shows a traffic cone with orange and white stripes. It's likely used for temporary traffic control or road work.\", 'image_quality_notes': 'The image is slightly blurry, but the object is discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3905.0, \"x\": 1484.0}, \"hi\": {\"y\": 4474.0, \"x\": 1664.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5176: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060\n",
+ "Processing image 5176: timestamp=2019-06-05 17:36:42.857051+00:00, observationId=o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4262398999146741, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=1525, total_token_count=1624) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:352d36fdbac6bedfaa308f2c9ca55d68:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:42.857051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A352d36fdbac6bedfaa308f2c9ca55d68%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b40d0495877dad9a27255cb4b2f4e9e7bd9ea83677dd69dd79c359485798079a1f6682f9423420468340905eb6873c9870a4958be656d657846ec87ee4345deb192023590498bb84b9b87a8128ad4e66354cce87a7aa350bf86d8870c051ce81ba5640c4dea4ee2453e1b2e5c719e6fbf518114cbae5382dbb56cbfa7be9f37f7e245bbdfa9394c262e25d813b8d25f56f2d89798aad2db966460789b0d939e17d358e58d2369ee43264463145bb3a431d4ccba091447bc0228d3bb8ff1bce6c2e1374e0222dd861ad8ff087f782bebeb317fd5aca7ce3321e2e65b74f507728e97965d227e1df8311a632c2e685e1fb4ccaf1f64f3dd0592c4f654051fd5fc', 'category': 'Other', 'description': 'The image shows a traffic control device, specifically a channelizing device, often called a traffic cone or a channelizing cone. It is orange with white reflective stripes. This type of cone is generally used to temporarily direct traffic, delineate work zones, or provide warnings.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3538.0, \"x\": 2601.0}, \"hi\": {\"y\": 3821.0, \"x\": 2691.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5177: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060\n",
+ "Processing image 5177: timestamp=2019-06-05 17:36:44.172954+00:00, observationId=o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2619589051203941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:f82bb2578d9d46bc78b6b594b0b52d61:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:44.172954+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af82bb2578d9d46bc78b6b594b0b52d61%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7d54242c9ee94c400802c8ef6953072cbfe9273b6742d6dbb5c249de9e466e1d1858a728c8ed510e1f69479a5efea3a0125749e18c190bab0a76fe4c9d5c565f600f02b5e66952c1a29b8084590e9afb12bf6d888360d3fd90a6dd6a4a60ab45877fc1d9de5a1907e0ad3afa2ae588ae9d4bcaf624f3b12d5b3ca0ca4a7681a6ec91de92df86556c6c8bd336569145e8bcff3a4d240cedcb36cfed8551d063d048f26807669be3a81f0aaa386c185edf0e8c6d7f3f7aa1016107aecaff2c1aad63a7ee6ddd89c7297565231773188da2dd2af6cfc727b20fbffdb355958fdb06647e980e90447c75468e5591199f507161b513efb9ff187b8243bbc9b1fd6bb9', 'category': 'Other', 'description': 'This is a traffic cone with orange and white diagonal stripes. Likely indicates a temporary hazard or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3715.0, \"x\": 1728.0}, \"hi\": {\"y\": 4091.0, \"x\": 1850.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5178: trackId=t1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f, observationId=o1:7bfbeb2fedb403df7315a599237788a5:00110060\n",
+ "Processing image 5178: timestamp=2019-06-05 17:36:41.789402+00:00, observationId=o1:7bfbeb2fedb403df7315a599237788a5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17219969720551462, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02e9a385fbbb21be02e767ebf8a05acf:ffff005f', 'observationId': 'o1:7bfbeb2fedb403df7315a599237788a5:00110060', 'geographic_point': 'POINT(-111.882563689121 40.7674361509211)', 'mapsURL': 'https://maps.google.com/?q=40.767436,-111.882564', 'captureTimestamp': '2019-06-05T17:36:41.789402+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7bfbeb2fedb403df7315a599237788a5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091414Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5e28ac051bd45a251da47ee9502d65bbd885c07fc7bd3c4c5f045771c27b342d9b6c21d320f6ea8e695f1a4b98de0afbea5a8ca73340d991ba55c9a28d4eac7e37150854f82e5e8b3024cba1d24e52856fdaa4693e52d3927634250151e54109f1ea9d0e09b68120579e0da3a80a0a0b7b26bf5e8bc2cfa7d4593ad1e89328c78e15b9473806963675d9c85b90cd67629b3da43ea0fc294caaac4ec8226aeea10e6e8faf7e428c7cdab2924336ee0b23fcedb76714205aff82cb6f3ed8e4606dd894bf02e4727d034996591283ccbcd906cd83e110910334c453f5545a088f80b65a75d4b145f97c6b19edecf229ca7a31d2fa2aaaa0750567ace1cd2308a5d1', 'category': 'Other', 'description': 'The image shows orange and white striped traffic channelizer drums. These are used to guide traffic.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3285.0, \"x\": 3072.0}, \"hi\": {\"y\": 3346.0, \"x\": 3106.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5179: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:e6b8b30410e55d37d24d579d9a66e49b:00110060\n",
+ "Processing image 5179: timestamp=2024-02-08 19:01:47.595820+00:00, observationId=o1:e6b8b30410e55d37d24d579d9a66e49b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays a phone number and the words \\'JUNK CARS\\'. It appears to be an advertisement.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10789996474536497, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:e6b8b30410e55d37d24d579d9a66e49b:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:47.595820+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6b8b30410e55d37d24d579d9a66e49b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=900ac717d2b93a381e9fc012227c19b8037d28c087b988e180fca039fcff1a66c54a7dc0630609dc1690cc13f95c2551b82997a114f6b1f59d6fd0549b4e3f232d3991912da56c58ad716890c7f0fac4bed978ed0b5e9c100447323532b36ee3012782cc7132e64efabd815a69a43f77a6bb8a79a1794236d9b162c1c6e1b0f30ab52d49f1acef8b373d598b28cd09967ea1e7fc67de89fbb3d0bafaaa14e2c08579490bab86ade801c8ab17b8f1e2263c7fee747a37d1a42756e67501eb27cfd86102c94e73fcc6c5c65800af3045ade9b14015242af1bc12cc69eefad9be6204aaaea0edb1720a31a9acf7767c9f33d0337db8b5d3318ac7efa2c12e0a547a', 'category': 'Other', 'description': \"The sign displays a phone number and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3535.0, \"x\": 208.0}, \"hi\": {\"y\": 3604.0, \"x\": 269.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5180: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:bf865146cb8eb54c793683ebce4bd5e6:00110060\n",
+ "Processing image 5180: timestamp=2024-02-08 19:01:46.863901+00:00, observationId=o1:bf865146cb8eb54c793683ebce4bd5e6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19506541887919107, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:bf865146cb8eb54c793683ebce4bd5e6:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:46.863901+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf865146cb8eb54c793683ebce4bd5e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=913dfb14c6c0a167009191af714cf1050d2e29ddd445b2ce214b738f264c4afd72112fa1ced6e5f08acab9e41069e313c318da8bf2ae79b5122c66a1b38daa2983eaf0f5895b2fefa7146806e72e615aaca508efe56cc45ea869911316d0785fcddffcad1d9dcaf8571f02d14bdfdb2371cee4ac6e057aae6184c36f1dcc09dc1b7f18d6a7c1c45192a7705c0e53383a8e4829844ac7edc09e9de7b60a7dff957e583018588f8f82adf791e7a53bf21cdfe17d8fcf46419def6be579d04b77748bedd0d1a39eedf3b9685c1f4b7baf0eda06f3ed31522fa3ca251a2175c8c750030a1d0c08eb351202b4ea90b5c8ec7cddf048dc4f8631676d4ac3ad2b100e8b', 'category': 'Other', 'description': 'The sign has a phone number and the words JUNK CARS on it. It does not appear to be a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3424.0, \"x\": 1657.0}, \"hi\": {\"y\": 3462.0, \"x\": 1702.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5181: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060\n",
+ "Processing image 5181: timestamp=2024-01-24 20:54:36.627319+00:00, observationId=o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text \\'JUNK CARS\\'. It\\'s not a standard traffic or regulatory road sign.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18021179107298335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:57e3a365e7f9ee432bfc0be3d811cc7b:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-01-24T20:54:36.627319+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57e3a365e7f9ee432bfc0be3d811cc7b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16b9c435d748fd65711914b180b3308e098d9adbc3b45bb9fdeec3f6a6c91d26b8033a36f5356a376073e7df7d0db7bf8904622ae8b361d429ac00a1643651d5e27db637643f9d135a3481d22e895ec5760597b60d71969f285767014cf4cc4cb95d15fbc0256e03d59e197e049f1af1c4888f2e4eff025edc6949fb288de2f01ade820707bebdfea69743fdd8e669dc4fefa5a83543c7def9070a53828fdcf132eb16c61274c2ffd3c767c29cfb9a422f98822fd51b89a4a406113f3d13f4baba0578e1bae41513d736fc347f4104a667444e86dc3505ccbd126ef300697e2ab0b49ed21960bd37091094c5445308777708ed9b865c0de64324c2598867b809', 'category': 'Other', 'description': \"The sign appears to be an advertisement for a junk car service, displaying a phone number and the text 'JUNK CARS'. It's not a standard traffic or regulatory road sign.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3754.0, \"x\": 2258.0}, \"hi\": {\"y\": 3891.0, \"x\": 2345.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5182: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060\n",
+ "Processing image 5182: timestamp=2024-02-08 19:01:47.595820+00:00, observationId=o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays a phone number (407-900-9979) and the words \\'JUNK CARS\\'. It appears to be an advertisement.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12950676243479659, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:ddf6f3d24c5ef31edfa43f3211c1843c:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:47.595820+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addf6f3d24c5ef31edfa43f3211c1843c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=258b0be43a845e30e981e312c994950294bbab0472cac36c3e0b4e54ae8eed51ded4ceedcaad47fe35300e17a703f9d60b055e1aef97c32e2553aa7e75b4f57fabd57be871a03ac77a6e59a9f570c6879b49d577f8a739841cdd5e6b59432e8b9546b72f00fcd222eafab28d24113ba78afcbdab98d1f5d6fde9f2d622d32170231b5f046fd1b5228331d9c1b636f5294cf9fa8a0c6e0e328448a0167c8d1661dcce34844006687ab008b32bbb28f9e36e9e54317ac42e1a379caf663d0ca699e9f11ae7d95f94dead2251e49e39c794a0115e417a5fcc879da0f6a74c182cb8d21ac8354185ac9b960867fc2a3601e3389ee8735e716a973abcb583878fa118', 'category': 'Other', 'description': \"The sign displays a phone number (407-900-9979) and the words 'JUNK CARS'. It appears to be an advertisement.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2642.0, \"x\": 3187.0}, \"hi\": {\"y\": 2711.0, \"x\": 3245.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5183: trackId=t1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f, observationId=o1:93522cb9edf7ea31e2a42fa50eefd841:00110060\n",
+ "Processing image 5183: timestamp=2024-02-08 19:01:46.491891+00:00, observationId=o1:93522cb9edf7ea31e2a42fa50eefd841:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \\\\\"Bartow\\\\\" on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3437615966796875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eac705e56b3a00e7de5870c4eb2ad2:ffff005f', 'observationId': 'o1:93522cb9edf7ea31e2a42fa50eefd841:00110060', 'geographic_point': 'POINT(-81.9428924781657 28.0403685502377)', 'mapsURL': 'https://maps.google.com/?q=28.040369,-81.942892', 'captureTimestamp': '2024-02-08T19:01:46.491891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A93522cb9edf7ea31e2a42fa50eefd841%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81e1c513e79eb813e911a07cda8d3ef74234bac31c04aeaa077a379fb67ff7b21b9352d486134a0ccf8417caa079f8b44ac0bdb3978e525993e929435c24858d82e68e74f35153d4e476bc4ef4272ea95188c86c278127aee7c5ad88431a25544a9554304179453b2378071ad6a60facf36057d7f8118de035927cb787116044c68cf66668bff4f59339714dbc5256908b8fff946c60be07317c0e31db508f62f8754844fec2c7a7aeb5cbb6b568b80a0a5c19e901f0cb521320f207dad48966063a9d442beae22c13bd39d82da6e1336bc40a7cb746f790ad8a23798c0fa1d94ccfade17d864d72fb274480bcacfa64f4378442a8d910d3a7e42306d97597aa', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with an arrow indicating direction. The image contains another sign with the street name \"Bartow\" on it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3379.0, \"x\": 2020.0}, \"hi\": {\"y\": 3404.0, \"x\": 2059.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5184: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060\n",
+ "Processing image 5184: timestamp=2022-06-30 16:01:07.276095+00:00, observationId=o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25440833568572996, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=3073, total_token_count=3153) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:48a4dd6e6b4d895a3a94ae18e7d8903b:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-06-30T16:01:07.276095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48a4dd6e6b4d895a3a94ae18e7d8903b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c2343cf070a9c678ba5695aebf82d5c2381bd057a069b71574cd9a1078acc590f1b90a22e26db3f20b1753357c40a69feebec23ccec0aa1436f325582dae9359870301978f01d9d77405f0d0162f5204e0a247b67c1259458e9224fef2f8b3fb458f51d393946335495174119f5d92c4f05e3ed06e41d17d17ed3261e64d70e757a9d4592e97b5941a93b32352ce68b9233f35943cccf78c6e4710c5ada83cd1b41442f68e93d6af14225e40e52358d5230ae6edc065efa27b8302399be10a761bf909b5291934d2962fa794dc1e99047d8d1abd29f8095dbcb1dfe5cf55fc2e27a408184f5879aa80d4a114ff698a50c5417a4e71c1d026e54272004ca693f', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped pedestrian crossing sign with a black silhouette of an adult and child walking, and a second sign below with an arrow pointing to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3139.0, \"x\": 2780.0}, \"hi\": {\"y\": 3291.0, \"x\": 2931.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5185: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:3b349f6ca96152354f68f07a3708e8ae:00110060\n",
+ "Processing image 5185: timestamp=2022-05-12 21:47:59.106258+00:00, observationId=o1:3b349f6ca96152354f68f07a3708e8ae:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21399870883213, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:3b349f6ca96152354f68f07a3708e8ae:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:47:59.106258+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b349f6ca96152354f68f07a3708e8ae%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=336bd779a24a69dcda0b7bf06ba4f4d9d9858bcbe1d137104a23cd9c59d9406161d7661acc86b987196b21c9cbe5ff4c406725c57b8601029213584f07a4f40e9c20fd0ad7e3cb1b6388b2c7fe3e2d7f760a5dd7516005c5d111be28b15d523bf1cf57b6df7554144168dd18b79a3fa629c9ac13c4b66ff03a0ad71ed34b862bd9155d97b7646159e0fc5380f2afc8160848f5b98654b33b93b5514271e0cb3776919ab3df5556017f8a6551e7ceb8db156844aabeef51c0531b2683008371a296d283a482d219367ff4ef34fa6aa9cf71e1dc565d2af9dad27c2f16d166c22e05d5fbca25bfbbffd64835edc1f598c383bb026480360dc04d1a66b44c05db72', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a yellow pentagon with a symbol of an adult and child walking. Below the pentagon is a rectangular sign with an arrow pointing to the left, indicating the direction of the crosswalk.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 1837.0}, \"hi\": {\"y\": 3266.0, \"x\": 1971.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5186: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060\n",
+ "Processing image 5186: timestamp=2022-06-30 16:01:06.867965+00:00, observationId=o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4435486097014352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:c43fa8bccba2b8d140ed3a08daf113b6:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-06-30T16:01:06.867965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac43fa8bccba2b8d140ed3a08daf113b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87f6a607e3be25baec8bf3c67b9d39ff1250fddce088c1d807a101bb115215ea35ebc30a1326b691d05b35a21541e15624bc5786d96702d574a8d3bf7aa05840fa4188ec1831b0670a6fd6094d03c9b76641dea493ace3fa8d513f8090c61af85bf5c73005206f4b949e4c607841add602e822bc44476f93506d50c52fa7c7e5899702acb330603227b26f2b727cd1beb043965c36c337386e631517abf7c940db1a01e17ac4a9c74872c8793c0267a4d0439246baef231d8e3e74e64dfae68fca42ca1e14de4a749bbf1c809c6249526a7e8f0f8a16dc2ff85976785fcd6eb2bc0e6cd37be32f41991a226d435deb7c790b4c470bbd4cbf60295bb641b40500', 'category': 'Pedestrian Crossing', 'description': 'A yellow pentagonal sign shows two pedestrians crossing, presumably children or a child and an adult. Below it, a rectangular sign indicates that the crossing is to the left with a large black arrow pointing left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3180.0, \"x\": 1971.0}, \"hi\": {\"y\": 3285.0, \"x\": 2114.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5187: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:267b14831b34743c23746f1e012467b1:00110060\n",
+ "Processing image 5187: timestamp=2022-05-12 21:48:02.742147+00:00, observationId=o1:267b14831b34743c23746f1e012467b1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2139636448451451, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3073, total_token_count=3136) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:267b14831b34743c23746f1e012467b1:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:48:02.742147+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A267b14831b34743c23746f1e012467b1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37080e46de8af7d00c2d82ae74eeb3283063cecee7362a84ac0324b70d780ec0da0a2fae252568483eb3d0cb1bcc6a0dbd75b23b219d12499460574453fc626895a29a4caace12c8eb33e44a13a64c66b01b479085b172e47de16939c03c7a0a6ab5497541c41389e7d4a8160a8d8e11a381086e37fdd1ecaf4cd8403a73445ed4487b1bdf23096c8c36d656fb66e6a6cd0791d254f67e72f21b5cdd2959de51d0c417b7b0fd4b1507890d07f4f0e5c396370cfb3d0581093ea7a08c33cedca60733b78f7752f8d10bfe6d9deeb571d98caca424c384069bb384ab0ae3786f2d3bce94c78153dbec726476a45b439e3c10afd4a5ad31744c7dfae4cda597a23c', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with a supplementary sign indicating to turn left ahead', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2189.0, \"x\": 923.0}, \"hi\": {\"y\": 2371.0, \"x\": 1014.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5188: trackId=t1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f, observationId=o1:15cca2a1909ade5a9db95eba570567b2:00110060\n",
+ "Processing image 5188: timestamp=2022-05-12 21:48:00.998247+00:00, observationId=o1:15cca2a1909ade5a9db95eba570567b2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2646607912503756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eaf674dbdc1a4b8b083af1d453e840:ffff005f', 'observationId': 'o1:15cca2a1909ade5a9db95eba570567b2:00110060', 'geographic_point': 'POINT(-111.86379866282 40.7521047936632)', 'mapsURL': 'https://maps.google.com/?q=40.752105,-111.863799', 'captureTimestamp': '2022-05-12T21:48:00.998247+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15cca2a1909ade5a9db95eba570567b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=711ed93ff782aa37a08a2ce920355eea0b133579b9175976c9a8ba6d1991ecab86e00ae1335396f380948816515bb2cf712be8219a47555bdaaa57d8daa6c918be7196bb209b22da7eb21cf1aec3c87860470b8c65f9f41b5a1a240fc65263425672875bec7ea954b2aa9d5fae2c66d99d342d3c5e0d4e97935c10fb64513259f4577a522c21205539b797b51e2b875394c00a452f25ca55338ffe2ba697e53667ecec74872c8cd24f57a71b685256ddf7afde3ae389b78386d22525203fa0bfd1b0ffa4bd28875921d10c6990507f15a74b0fa2921ed752f27a72263ed6f138f3da9d042c4bc912defadb4581b1f5ec7b7e4977ab5a2e82bc7ffed6e170b99c', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a pedestrian crossing and indicates a direction to the left using an arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 2529.0}, \"hi\": {\"y\": 3290.0, \"x\": 2685.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5189: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060\n",
+ "Processing image 5189: timestamp=2024-02-12 17:15:21.925300+00:00, observationId=o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone with white stripes.\",\\n \"image_quality_notes\": \"Image quality is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23632809211467876, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=1525, total_token_count=1583) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:e67d77dd92c29ac47d0b509ca1fa27f6:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:21.925300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae67d77dd92c29ac47d0b509ca1fa27f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=38b01b7195602dbf11ee1c23795a5345f93774c55b915af50f5a2041fc2868acc1a688dd8fe90e8c53a07a69552ab53e0814a34d45e78c19156819df45f13376a5ec8f0abcde20803043f0b0f9da163d8b65d1a0e00f6a59072ccc3284db6dfa2b6f94b3aeba89a0ec8ae055884dba199b8126fcd874ff58da65575e4d835779163463d6520d7dfc65f9f0514fedb0b69580f622ac0fbdeec41cfbb4753854978effb2a98c90712d334ce5b397e923ae5e1d8c1775a125b2c42b1d44ab8e1b541c0bc70592ef449d4d3f783432d104a5bd3329e96d39547390e2a612ed48b57637842b2fb49cae63831d2c2c55fcafcdb294002ac6b87dc76697722856f118ac', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white stripes.', 'image_quality_notes': 'Image quality is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2608.0, \"x\": 116.0}, \"hi\": {\"y\": 2825.0, \"x\": 191.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5190: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:c005ab2cae573aac327dcc5a9b718e3b:00110060\n",
+ "Processing image 5190: timestamp=2024-02-12 16:47:38.714320+00:00, observationId=o1:c005ab2cae573aac327dcc5a9b718e3b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is not a road sign. It\\'s an orange and white cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1420904518901438, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:c005ab2cae573aac327dcc5a9b718e3b:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T16:47:38.714320+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac005ab2cae573aac327dcc5a9b718e3b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2789025d203a5e03d74fee9e5e27514c110cf71dd4817bdbe053fcc1721f4e2518373a6039c514a06e70c578d5df2bf7964992e18d897ee3d4d7837201d4b41103b1263a796095507e9cfc57cac7744e0bda8e44d4f9c87bdb7803f95cec60f56b08c638e448cdba6ab23f7a46501f1f135e0c8697f84ed70d9f9c75af0ccbd00215fa5ef0d29e152ccb04692487c28be77a0b7b4133aacda5c59540e6a142f78ab913e9dd6c824fe5c84763478b928e07d49d2523fd408a8bab26500f7bf8782f7cc88acf0bce62d3d1560c17ec31dc917f4357cf5defe18e6338977e7c4a5746010f1b0835ab0b927b69d4f6f9fe4ad5136506bae46a7ec9ea7825f56d296e', 'category': 'Other', 'description': \"The image shows a traffic cone, which is not a road sign. It's an orange and white cone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3468.0, \"x\": 2538.0}, \"hi\": {\"y\": 3643.0, \"x\": 2594.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5191: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:a7c8c5f47fe1f5012482600152db775d:00110060\n",
+ "Processing image 5191: timestamp=2024-02-12 17:15:21.925300+00:00, observationId=o1:a7c8c5f47fe1f5012482600152db775d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.\",\\n \"image_quality_notes\": \"image is slightly blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4583869676911429, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=1525, total_token_count=1614) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:a7c8c5f47fe1f5012482600152db775d:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:21.925300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7c8c5f47fe1f5012482600152db775d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c843d509c3d319c7de857d693d578d6841f49df7c793761cd0d9c90e5dd9881724eba8646d533e9ec4c8027d1d3ae23c4c8c7e616cf5f7b75797555b56c1361db98cf67e65a36b2cc1b2a8fc3b9a42a82e2cc6dc7ab03087c78d7998a383a572e427bf9a1960a00e25a8f57153b3961cb967ebce242305a8e8533bd7485563309e3fc312bc6cbcd67c2d49ab85a764158c48fe890b0a0cc4085e716b27e5f4857df5ee51af5de02946eac9b415dcf9398248b28debe49cdc0fec7628a686e068fadb311cfc4ac1b981798ee673f42b82b5939bb2b193a8b609bbab27f711c9f904560a9d527c07dd6c385c32cda1c5013743aa267688bf71a746cd28044102d', 'category': 'Other', 'description': 'There is a traffic cone. The cone is orange and white. In the background, there is a sign that cannot be clearly seen. The sign is round, white, and has a red slash through it.', 'image_quality_notes': 'image is slightly blurry', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3480.0, \"x\": 3127.0}, \"hi\": {\"y\": 3679.0, \"x\": 3194.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5192: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:29a4c4f743e22c7f957229c4edbd501e:00110060\n",
+ "Processing image 5192: timestamp=2024-02-12 16:47:39.190492+00:00, observationId=o1:29a4c4f743e22c7f957229c4edbd501e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04667666175148704, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=493, total_token_count=548) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:29a4c4f743e22c7f957229c4edbd501e:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T16:47:39.190492+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29a4c4f743e22c7f957229c4edbd501e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090927Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=149c235996ed3bd93c850b8f952d69725310ddf4ac7d7354a7346357a19447989108192c3fee52a324a08839aa421368cd4f6a4454223a08e47a46f4fa1f400e399bda6ea08a970037a0f2d56dede6b40ac7fe48c7797eaa611a890fdf5db275a20fbf1596a2d487b829da11afc552e6bd6a478ecf3b5b848f78552c9fa02580a355cf69ea31eb39420317a22fc54cdec6c4ee7b1f80913ff3ed01a8752f43fdd78d50c76ef4dd4e18db0ce0fd6243f6ed245c8646f539bc97443e1942984965b1ceeefb5ae3890e0bbd2929171f858b8d7997ef42d99b8ae58d74f26cc9ae83dc4c74b39cd6fe9dc427687fdc8c3550c311a5557c0909ab9a0709ce24e29b2e', 'category': 'Other', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3434.0, \"x\": 1976.0}, \"hi\": {\"y\": 3572.0, \"x\": 2025.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5193: trackId=t1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f, observationId=o1:5ce671322eba09afb306a4f6dc8adb1a:00110060\n",
+ "Processing image 5193: timestamp=2024-02-12 17:15:22.352273+00:00, observationId=o1:5ce671322eba09afb306a4f6dc8adb1a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone with white reflective stripes is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07373153117665074, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ebf6d1c6d3ed78079317fa171a1672:ffff005f', 'observationId': 'o1:5ce671322eba09afb306a4f6dc8adb1a:00110060', 'geographic_point': 'POINT(-81.9606013251482 28.0452460335046)', 'mapsURL': 'https://maps.google.com/?q=28.045246,-81.960601', 'captureTimestamp': '2024-02-12T17:15:22.352273+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5ce671322eba09afb306a4f6dc8adb1a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=30ce1ef2bc747efac8d50f34ed2032e860304c2c7bc3a946494a6c9b8d85cd5ce109c182b3532181065dacd31d12d3e3558bb9bf736e536116cc22b2567a6be415875c0408c7bb460f3218a39d2fcc671033078dec9cc4be7e8e72b54af6b8fe54371cf205f8ca76c9f2fc3d4809d2007b542af50602c8962add32881250475c8f0d34f0bf6c87620928ce9e2e546235b218974d80373c2fea669f71c5c328c35fdf9633b20cc9d1709add90f2b21f5074dfac3ef414043677e9e21af1b5fb7a8fa158724bcb497ec002278f4f2b1c160e03012bd31e0e94c80174e41036273b58b266061dfbcafa97ffdcd6b211112733186253fa53bdb35a489f4dd8ce55fb', 'category': 'Other', 'description': 'An orange traffic cone with white reflective stripes is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3459.0, \"x\": 2391.0}, \"hi\": {\"y\": 3616.0, \"x\": 2441.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5194: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060\n",
+ "Processing image 5194: timestamp=2018-07-18 18:07:20.734603+00:00, observationId=o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a \\\\\"No Parking\\\\\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.\",\\n \"image_quality_notes\": \"The image quality is fair. The signs are identifiable but not perfectly clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29482061821117733, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=1525, total_token_count=1639) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:92e52ddd429ee1d4d6b33ae511a66ee7:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2018-07-18T18:07:20.734603+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A92e52ddd429ee1d4d6b33ae511a66ee7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67d7b023bebf4143d69312250b4b8c63ca6dfccd7ec4d85ee8c60ef34457c25ad80196eec97b67fb247091efd041ca6a80c0e234fde38866c67e36c0e661a5b667ab05250d5b47df79fe42dbb9eacdb604bd2008e4a8e97c4396be5f6c90b4b891ea67d39ef787537ff20bbce40cdc576223404a3b4007eada2afc4bc336029455490e94c3eb6bc446f3bc9ab27f8e9eded66e51013461991d146128c699d95ce023041b50b3a1fdce35202568034229bb54feb9fa5344bac03fd7b513d4cf2a9ccc64bd986fbfdfa1cc212b4436986d3f06aeedb091f9c1dfe37146045d1319db4a2c46e14adc7b6078dab3f65640aa6102b271861b1e36681e6a83039e7328', 'category': 'No Parking', 'description': 'The image contains a \"No Parking\" sign with a red circle and a diagonal line over the letter \\'P\\', with an arrow pointing to the left. There is also a sign indicating 2-hour parking during specific hours and a sign for 45-degree parking.', 'image_quality_notes': 'The image quality is fair. The signs are identifiable but not perfectly clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2408.0, \"x\": 368.0}, \"hi\": {\"y\": 2528.0, \"x\": 449.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5195: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:2634872017200c4b6a705fcbc27c6204:00110060\n",
+ "Processing image 5195: timestamp=2018-07-18 18:07:20.734603+00:00, observationId=o1:2634872017200c4b6a705fcbc27c6204:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows parking restrictions. It includes a sign with the letter R crossed out with an arrow, a \\'2 HR Parking 8:00 AM to 6:00 PM\\' sign with an arrow and a \\'45 degree parking\\' sign. It appears to regulate parking in the area.\",\\n \"image_quality_notes\": \"The Image quality is good.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4074197373948656, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=2557, total_token_count=2668) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)'}\n",
+ " Error classifying image 5195: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 363)\n",
+ "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:2634872017200c4b6a705fcbc27c6204:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2018-07-18T18:07:20.734603+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2634872017200c4b6a705fcbc27c6204%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=498c72fd45299e9572ce2dc09141cc49f46bb37093e15042001d8fb51e0b47b870868f4814537178fed9999b1d4a6bc1cabc0a1cb331abb4de96edb4066bc1ff48e76c20ac948c037c8c35072bc4fca63faa918b48941e6f2a1ced4118d4a6f10f2864880628816573356565f6cb9502cc6202321e2844bb95c6c25f03412b49c1325832731f72efa6e58b98471be21abeead3bd3b73c9d45fead487c6bf39b4795924b98c6cc25eb225a50ebaf4adc3fec3b9c17456148e5da46f63a6f1d49b44a4abec8f68c7533ebf211bd2e0bf3b0274969a46f614ffbcab0b88451d40c83e23ee717b6a3bade067b40fc4bc39a14659c325d9203b896a500fa2d4769d6a', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 161.0, \"x\": 361.0}, \"hi\": {\"y\": 284.0, \"x\": 443.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5196: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060\n",
+ "Processing image 5196: timestamp=2022-10-07 20:20:52.849046+00:00, observationId=o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, \\'no parking\\' but is partially obscured.\",\\n \"image_quality_notes\": \"The image is clear enough to identify the parking restrictions and the general condition of the signs.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.549670620241027, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=138, prompt_token_count=2557, total_token_count=2695) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:8f9906ce3d32c0d538e7ef16ea225d21:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:52.849046+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8f9906ce3d32c0d538e7ef16ea225d21%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab42d1ed5d2117d93deede04a760bd59a35996bd05495431025331219487137af5021aeff1e13720b0a8c18fd26000a1123b80229c315c34b540f8f3d9123220e116138f21cf6a99232d83b597efa2f4ae4d991332aa5e421d9373a810c09f1fdde169f479bb08acbe825dc781fe3387037841ed263b7fc424b592ad9d3fc49e70d6e2f0fca827462846f5f7759ab10feb9329ebeb7f3725ec9e73fe82ac7228b0b8c67e3b43bef00f54ad1511cbdca3d1cd62b34196469b2c29e6ea5a29679b4d2782aabbef2491e47ceb552bc5039ff267f4602cfb0fe648aff8d41191d7d540f098d04362b2d5305210b7dcc5002d0b824522f6f905a7831f903cada05922', 'category': 'No Parking', 'description': \"The image shows a sign indicating parking restrictions. The first sign is a no parking sign with an arrow pointing to the left. The second sign indicates 2 hour parking allowed from 8:00 AM to 6:00 PM with an arrow pointing right. The third sign indicates angle parking pointing right. A yellow sign states, 'no parking' but is partially obscured.\", 'image_quality_notes': 'The image is clear enough to identify the parking restrictions and the general condition of the signs.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2183.0, \"x\": 299.0}, \"hi\": {\"y\": 2328.0, \"x\": 392.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5197: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060\n",
+ "Processing image 5197: timestamp=2022-10-07 20:20:53.737039+00:00, observationId=o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5412735205430251, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=3073, total_token_count=3177) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:f7cc60ea5b4ac76e4a76792a40e69b40:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:53.737039+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7cc60ea5b4ac76e4a76792a40e69b40%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9851600ef9906163c0f07fdd88246339b0a8d5125f09169cdf7f4d6497888d5822ca6316f4ed409664e19feb232ae04624857f063d0e79021d310f9c8512418c6d63d65b6dcd0948b65cb41884219a933b4e88b45d40bf3b3df19dada614c4ba9e671ec07ae72e0f5b44675cd0703ea7bcb04c0194d5f896dc1a982eb17b6c31ecc2c36be36101bf18adefc412ebcc187ef241a4a63a2e9ea5a0205936553437103eccbd76b96d99b9213957c048e0322ea1500a34f16ba80077a8c1d0fa9fb883bb3ac99d6638c2b5e9b27fcd765063b1bdd9e3e631c8ee86aaf5c7684ab4c1b2bf8f37c6079d3d47a1581c3569974bf01e18e8ce3416148eacc50472a1aea1', 'category': 'No Parking', 'description': 'The image shows a parking sign which indicates no parking on the left side and two hours parking from 8:00 AM to 6:00 PM on the right side with an angle parking sign below it. Additionally, there is a printed sign that says No Parking below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2122.0, \"x\": 1756.0}, \"hi\": {\"y\": 2281.0, \"x\": 1847.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5198: trackId=t1:02ec528eefa33c348f18b159180dcce9:ffff005f, observationId=o1:4983991b5a700ed6edb20aaf265b784e:00110060\n",
+ "Processing image 5198: timestamp=2022-10-07 20:20:52.849046+00:00, observationId=o1:4983991b5a700ed6edb20aaf265b784e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an \\'Angle Parking\\' sign with a right-pointing arrow. A yellow \\'No Parking\\' sign is also affixed lower on the sign post.\",\\n \"image_quality_notes\": \"The image quality is acceptable but somewhat distant, making some details less clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44464330155720083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=129, prompt_token_count=2557, total_token_count=2686) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec528eefa33c348f18b159180dcce9:ffff005f', 'observationId': 'o1:4983991b5a700ed6edb20aaf265b784e:00110060', 'geographic_point': 'POINT(-111.900062308552 40.7626970881843)', 'mapsURL': 'https://maps.google.com/?q=40.762697,-111.900062', 'captureTimestamp': '2022-10-07T20:20:52.849046+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4983991b5a700ed6edb20aaf265b784e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=806076a0bf39460c3f806ecb7ce0529bbcb2c4bc37a6cab060f1beb0e8c26420dcdfb00393873a323d0a2ab1d15fd56351d3c5019bea174f99f977d8f08df7c35b879d6f1540da6af7ddbf41c6a2f17ceec68ec8d718c7f51d1eb0c33a887688ed89d170b5c0beb8aad0d7a90a28295bcca0c35f0ba0b363d4c46231c501a6ef9cef9f2a3ffd2a705989921899e3a6701263a1c3172efef80975f094d9b166e32b87c9e15536a34219b553439c83e63af01406043098b049e2a4e0bc868911b14ab69a2bedc33eb3c04974bd2a6c821f39609eb94e8d6ec9d2a38d6c147778601dee9b79f15bfbf859878236806996e54eb98f47029a6ea77b45a1e8b1d2a85b', 'category': 'No Parking', 'description': \"The sign shows a no parking icon with a left pointing arrow, a 2-hour parking sign from 8:00 AM to 6:00 PM with a right-pointing arrow, and an 'Angle Parking' sign with a right-pointing arrow. A yellow 'No Parking' sign is also affixed lower on the sign post.\", 'image_quality_notes': 'The image quality is acceptable but somewhat distant, making some details less clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3064.0, \"x\": 3362.0}, \"hi\": {\"y\": 3213.0, \"x\": 3454.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5199: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:344c346ebc75498a7a5ddca4d5c02777:00110060\n",
+ "Processing image 5199: timestamp=2024-01-09 20:03:29.056965+00:00, observationId=o1:344c346ebc75498a7a5ddca4d5c02777:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.\",\\n \"image_quality_notes\": \"The image quality is not good and pixelated.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23252979191866788, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:344c346ebc75498a7a5ddca4d5c02777:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:03:29.056965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A344c346ebc75498a7a5ddca4d5c02777%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8d91e58f604a141f48789a21817f842707e1465887c6668e866cf9a97887d3b2a4f78bc0b21bad1572a8cf31d158ee3664ec7de983dfe41b7f041872fde726f03ad6d5cf87030ffca25b837f7e334d05b09186b62c60e58b2356a0af325fb6f5a46b9d70ba901c30e955b63d03719d96384cc2c0c689de27eba713b8db5227dc3fac7321793ec82e95e879830e9aaadaaa50df1c60f7a99695750673993723df5382a06e5e33308fc10fa27d3d05d9f07799670c5a7a76d852128d5db32b9bc21212fece47db9321bb148df84c2846b436c76886c00c74a3a4512b1f653bf7d6514bc3f9bb3c0b7f154c2087789fc44d76685b3088687d65382c614ed6152fe9', 'category': 'Turn', 'description': 'The image shows two signs stacked on top of each other. The top sign is a yellow rectangle with a black arrow pointing to the right. The bottom sign is a yellow diamond.', 'image_quality_notes': 'The image quality is not good and pixelated.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 3310.0}, \"hi\": {\"y\": 3275.0, \"x\": 3402.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5200: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:4c716b31a2519287d3e0bcf1547a6e5b:00110060\n",
+ "Processing image 5200: timestamp=2011-04-26 18:20:40.226349+00:00, observationId=o1:4c716b31a2519287d3e0bcf1547a6e5b:00110060\n",
+ " Error processing image 5200: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4c716b31a2519287d3e0bcf1547a6e5b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=21873a7efb4f742f0557ebec48f35ff33c8d843f296aba0cc0bc96df74cebf426d13079cc0d143ad9129178a63912e10dde3ce91474a32943a287ae5ebb1e1803b5497525f9afff6e9a2a036140f80c812232387a9bce36de1c3376a4c837b883be4ae23d7f15a00a8c18beed9b80e5e3c41ad17e8d6061600c0256f60139997b68a49c39226af0c165be672801370aebf562bbf72551180d7f9c3f47140bb8c9ffca565149ffa88155f59297a1db9ea6fd4bd252b8849a601bf3b115c733370a0d58bfe399bc2cf5eb78b01e9ae420013fb78094441b5521a4458039ccbcdd561d90dbd1ef099f6eb4a9d672679d6403914981df87a815a803a240e9df85df0\n",
+ "Processing image 5201: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:b30cebd931fe2432c064c3a91e3d1f02:00110060\n",
+ "Processing image 5201: timestamp=2024-01-09 20:04:37.315384+00:00, observationId=o1:b30cebd931fe2432c064c3a91e3d1f02:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains two signs, a diamond-shaped warning sign with no visible symbol and a rectangular sign with a right-pointing arrow. It indicates a turn ahead.\",\\n \"image_quality_notes\": \"The image quality is poor, with a lot of noise, which makes it difficult to discern details.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5054343374151933, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2041, total_token_count=2136) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)'}\n",
+ " Error classifying image 5201: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 361)\n",
+ "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:b30cebd931fe2432c064c3a91e3d1f02:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:04:37.315384+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab30cebd931fe2432c064c3a91e3d1f02%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b0454087df985ef7eca23183081e76243aad5137fa9a7c0edebf24caafce2aad36859f309680bf04a6b67a89951fa0828aac41d4729eabb38ed88bd3a27226617ab31dbd4cb87586ff8205090ff9041b592a93966e8eeba532a9f59d8a5866dfeeccf4764c62d230a8a8bcdba9fb45647e23f70039e9c35e8d4df0367a334c3d284a8f797b5eacdfd95cf6f9b1eb053486e74bc48f5cd18d1b8e051c737a747ff367e4f33a54678d325dd2b4603912f03bfe0cebfd2b076c412f4b6f9adbabb9d66137c49608b6fbcb96c95485ac6ffa972c9eebb092b3e81a6c2fbcf0aad1bdd6fc95cb1a59769742def7d56956c8bc7392ed60e83a275973723a3ac9dbb3e4', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 413.0}, \"hi\": {\"y\": 3309.0, \"x\": 520.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5202: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:48aa4c2707e6a5314e1f09298e7e187c:00110060\n",
+ "Processing image 5202: timestamp=2019-11-06 13:29:20.841940+00:00, observationId=o1:48aa4c2707e6a5314e1f09298e7e187c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4181005327325118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:48aa4c2707e6a5314e1f09298e7e187c:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2019-11-06T13:29:20.841940+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48aa4c2707e6a5314e1f09298e7e187c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=974908092f1642998450ef88d089918b6552292bd0b36cd76531e37f1740d2c790c5e7ec5c30cbe353c338f9fd42dacae0b00f58438feb7d888b43077358cf6ab2386432ee5da04b4661eba8172d9283de85bb6839296c11b8eec423538d8f8dee4e44f3dec48ae67a46065a53005e6f62fc961c97bc927bd900a888bfadd4642458bcaeb8b69023941b55c602120fc5ac8578eb8189a591d0aada72eb910d9dcb31eb18a66bb944d12b33bf7b7c16347c0efa1a3a48c4c25b6e135146cdf4c66da3658914dbd1d62a0f8a927b006edebe8e2008c4e06fe77ae353cb82e39ea3a5750684476223eac7bbd3262261fe8c70aec18a691b28fa5e38872b8920fc1c', 'category': 'Turn', 'description': 'An arrow sign on a yellow background pointing to the right, indicating a turn is ahead. The sign is mounted above a diamond-shaped warning sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2155.0, \"x\": 772.0}, \"hi\": {\"y\": 2196.0, \"x\": 815.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5203: trackId=t1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f, observationId=o1:f061414cc631b254b1b8410ad87b5060:00110060\n",
+ "Processing image 5203: timestamp=2024-01-09 20:04:39.243473+00:00, observationId=o1:f061414cc631b254b1b8410ad87b5060:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it\\'s hard to determine the exact type and condition of the sign.\",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to accurately assess the sign\\'s condition and details.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5751933357932351, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=110, prompt_token_count=1525, total_token_count=1635) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\"}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:02ec8d9d8a247da1bc57b3cb93ea55b6:ffff005f', 'observationId': 'o1:f061414cc631b254b1b8410ad87b5060:00110060', 'geographic_point': 'POINT(-81.9773445577904 27.9820948753836)', 'mapsURL': 'https://maps.google.com/?q=27.982095,-81.977345', 'captureTimestamp': '2024-01-09T20:04:39.243473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af061414cc631b254b1b8410ad87b5060%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bb2d9eeb630ffbd95cb1e274962dec0ca96c29546d2cf653a2e91ba0b9f9687d9295f94b57b6f04e9d846e76a16e468a9694c78080ef7adbbb6d316333a4ebe6f87a041eea20962600bcb7e81f1519caa0c763eb9c0e519a32762cf143fd0a3e4d866e99815b038ef2adc5367fab91b119166b665c279a9b9e43d7eb39064585feabb77f871834ba559ad72feae3697e3941c6d1ab71e4a24627acef70f3d9fb68a3abc9d1158295e1ddc208eaae147724abcd774a345977e9275824e2facb7074bad7deefaef0bb962f0236a9d24099d192c3bdf3a00ee4f76c500abecfd6d04b3b580460a7900e7bcb5d168b9cb7dd1bf3443511688dbb44fbdec1dbb6d6a5', 'category': 'Turn', 'description': \"The sign appears to be a yellow turn sign with a black arrow pointing to the right, there is a second yellow sign below it. The image quality is poor and it's hard to determine the exact type and condition of the sign.\", 'image_quality_notes': \"The image quality is poor, making it difficult to accurately assess the sign's condition and details.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 524.0}, \"hi\": {\"y\": 3265.0, \"x\": 588.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5204: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:cd12573198adecdc16628f71204b7a91:00110060\n",
+ "Processing image 5204: timestamp=2023-12-27 20:36:10.395093+00:00, observationId=o1:cd12573198adecdc16628f71204b7a91:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09211764570142401, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:cd12573198adecdc16628f71204b7a91:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.395093+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd12573198adecdc16628f71204b7a91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b03da903e9ec94d84baf346df6d76f73b621aa59237952ef4600b31079ff1d2e1919e12b06ed00884415e0c5be1a859bd4e5d2d34b84433befc9b6425121a5186b97dbb0725855e32c7a10f087298f298570a0270e6096ef4d4e0d352d3b06ace4adf21e6db368fe907f8e304be7e52aa76a38ce033b9dda32498086cd3cf3b5fe462a0ddb7af3943adb471acd82cbad20650a0b54b87c41ce8b02779b71fe7e4d8c234f9bbeb7bfb8950d8d1f21517a9c5c9620b1c976901fd674d4694df79bd0f953e36d1e43c5b23e359571184e251de1c9ccc1b2a7947387791157236f25dde62d3a2a1e623d81944b07765f7370d85db27f0962fe8d815b6d08bb3123a2', 'category': 'Other', 'description': 'The sign says \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3026.0, \"x\": 1906.0}, \"hi\": {\"y\": 3224.0, \"x\": 2120.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5205: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060\n",
+ "Processing image 5205: timestamp=2023-12-27 20:36:10.695194+00:00, observationId=o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white square sign that reads \\\\\"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12022345716303046, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=2557, total_token_count=2623) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:ebd05bb89d4a3ce66014da3cac0ca22c:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.695194+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebd05bb89d4a3ce66014da3cac0ca22c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e2b90b0720715cac8a976b0436352384beae0f0a7b42e064be1174ffc9911592ea73a878939c1cb8b2802e0c3101ccfe004d1b1de4fe0ffd4d32aed3c7baba16f97080cb133364869ae01174b01c936d1620400941fead05580f85999989e96329824ab66070bfc7102946e49f6488cdc307e6264c32f550a8193a945bb3b4e1a7134d04cd223b8885934e9a06db8bd8428fe904294695fd13a1e79e3a5c2e7e023e024f9330e395ef313aa0222fdc7808ff41b54e84ddefd53fea67b85c548251ff1714dc99be8be29c079281f3a2872fc96c2e24167b554d2b30905d7087ddf05b77eb622db993765ccd7649ce389169a64d9486382170e7f6a04cb2384bb', 'category': 'Other', 'description': 'A white square sign that reads \"SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2893.0, \"x\": 2763.0}, \"hi\": {\"y\": 3175.0, \"x\": 2978.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5206: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:63e54342e965d8a00337a67cf82797e4:00110060\n",
+ "Processing image 5206: timestamp=2023-12-27 20:36:10.095182+00:00, observationId=o1:63e54342e965d8a00337a67cf82797e4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign states \\'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\'. It is a rectangular sign with black text on a white background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11048652030326225, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:63e54342e965d8a00337a67cf82797e4:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2023-12-27T20:36:10.095182+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A63e54342e965d8a00337a67cf82797e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c49df346407a7e9bd645af3152077d21b0f2cd96f1c378cf8fef4a0cb1aae736e3708b10c639004e09cc76e5bf3d48252f156b0f87d178e12f5b0116382bd68795c7af6ecc55f8a27562eaa1fd4711d7aae733780c473543874b70225e41373f1d7a700e464ddf4dc6192d7b59a320a2e156a884d992cf117da8681bcf4a1f5480fbf38c607ba0668a92de94afab5ee5a4479df7ad3c803078ca2517f46e3373da24ce09a0bf941519d4347c8a12ad866d545bb91b6377ea00c737d54301845d6693104d2fcc57d595e6bd9404264ca5c11f4d788536f7ed9f5d5d54e01400a505593047f1d96ee3955626f2a867505a0122659ce84542d074b9ab5c5d5764d', 'category': 'Other', 'description': \"The sign states 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'. It is a rectangular sign with black text on a white background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3086.0, \"x\": 1455.0}, \"hi\": {\"y\": 3238.0, \"x\": 1639.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5207: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:c4064be1b224618bc78d60b1dfcda81e:00110060\n",
+ "Processing image 5207: timestamp=2024-02-12 21:39:19.256204+00:00, observationId=o1:c4064be1b224618bc78d60b1dfcda81e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09265700463325746, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=1525, total_token_count=1587) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:c4064be1b224618bc78d60b1dfcda81e:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2024-02-12T21:39:19.256204+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac4064be1b224618bc78d60b1dfcda81e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abeb54fe7151b3912578c652659866fa743e953f6527cd867ebca740de4fb2a43e17b14c47f384612d78fba003dc96c47b326ecd7dcf450f05194c930f144333a3092959319135c7f6f1f0e4b67c98c448823131a91ce74235f1d7cf379c852801b9516ef550d6f6e3372445fc88987ef4798afb597daa06c9ef483d088ec14b675caf1220777e55b644f8ff3160e3559512b63025cd2374f086bc10b2c9694dccfe910dda507f26e256cf56f294a949072137a56550e120f79e4b8302c18e4ff6a5639da7cd0e357b9830c92401093caa6cd6528e68d60c5f275611d04223bc5a58d48e60c23c2c2f2173b3de9f5b7eb52728421eeaa12e600e70347fbed90c', 'category': 'Other', 'description': \"The sign reads 'SPEEDING FINES DOUBLED WHEN WORKERS PRESENT'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2971.0, \"x\": 2116.0}, \"hi\": {\"y\": 3202.0, \"x\": 2322.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5208: trackId=t1:02ed099927c4babf29804b5188c98882:ffff005f, observationId=o1:6893d7ee38dd7d30112a610636c2fe00:00110060\n",
+ "Processing image 5208: timestamp=2024-02-12 21:39:18.956184+00:00, observationId=o1:6893d7ee38dd7d30112a610636c2fe00:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that speeding fines are doubled when workers are present.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.037175788717754815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ed099927c4babf29804b5188c98882:ffff005f', 'observationId': 'o1:6893d7ee38dd7d30112a610636c2fe00:00110060', 'geographic_point': 'POINT(-82.0399288086812 28.0298420277714)', 'mapsURL': 'https://maps.google.com/?q=28.029842,-82.039929', 'captureTimestamp': '2024-02-12T21:39:18.956184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6893d7ee38dd7d30112a610636c2fe00%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ed335ca3578443d8d73fe4b6dd44f673ca93fdd103fe069146cffa9f6b97b6388ef1f3216c7136b9ed531971b53021b9716f95850cda7b9f14e32869a921657727358ef844b1bfe67bdbc7c226aaef6cfab01adbb230294dbfdf09a9d1ca54d3a299d0fcbcef8630370960ff64a2d5826e6ee2add69b53f84e012681072fba4bdf25f3b4d464a098c6aaea71401684328f0f801744f0b4ff6598f7be5101dda48ef32a864b8f2d10906b866834aeb8a9b03f533b29c55d6d78755aaf7e6229e9d96e061c48032b23a5d2fbd756a4d6ed91a298c8be19bc7ba4e2925f18d3e07f1f78b7eab4e5f2a8d3aeb3f4dd7ca81f1a82f58731e2506dbe8ab22392351d6', 'category': 'Other', 'description': 'The sign indicates that speeding fines are doubled when workers are present.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3061.0, \"x\": 1440.0}, \"hi\": {\"y\": 3219.0, \"x\": 1616.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5209: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060\n",
+ "Processing image 5209: timestamp=2021-11-05 18:49:51.952800+00:00, observationId=o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.\",\\n \"image_quality_notes\": \"The image is somewhat blurry and distant, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1601943079630534, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:f43a1f24b410fadeeef83bdd5ece3bf6:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2021-11-05T18:49:51.952800+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af43a1f24b410fadeeef83bdd5ece3bf6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=740ad2bbaceccc18eb47d5994d072eedc583a23e618079cd1e6152e0987d60bb5a26fa137aa7bc21eb4dafab7b9b4b9e3391f9294cf9b10be455ece75515737b794b8ddd0b89fc14fbe1c001805feae02da75d737d2dba997d3da6f8a9ad622843e5ab468c26b8d14fa128977ba291c8769785dfa9a3483cb308122b838b68fd27b204dfb5446fac20bc1d6c9e664d5ae243f28f9d262c747b4a585f9cae7ead821cda647f9bdd42fa94cae133db4a46d4211bc578572a75f0208bf2e2eda4aae9dab694a91c29222c3d4e699093517dfbbd1590c13f8102817a99609495fae79a91b2a931f551ef27368dcccd50c18f4f96ffcd7ff7f92340f61e69c5f24c84', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a pedestrian symbol is visible, indicating a pedestrian crossing area.', 'image_quality_notes': 'The image is somewhat blurry and distant, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3093.0, \"x\": 3382.0}, \"hi\": {\"y\": 3134.0, \"x\": 3418.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5210: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:e9f9021464b63f62898b78c5ad90ea36:00110060\n",
+ "Processing image 5210: timestamp=2022-11-21 21:17:56.630841+00:00, observationId=o1:e9f9021464b63f62898b78c5ad90ea36:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details\",\\n \"image_quality_notes\": \"The image quality is poor, the sign appears blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7193431211321542, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:e9f9021464b63f62898b78c5ad90ea36:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2022-11-21T21:17:56.630841+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae9f9021464b63f62898b78c5ad90ea36%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15882177684734a088ea33fc8a256f4a49f366ff60326dd1e82f6b3178a54b4c5dd24be8d7f04ccbac14bfd09043be8e8985350fb9333d6ea55188be6b5027852af8ec064a977273be987fcb21cf783c6b3968bb7df66907fa571c710c6fcbe0d627c2c76716fe5f124b0473157bfe61aea3f78a9e9b6b730ffe57722c6e6cba34d86daa303e8444dd1651382c5b3bba807bb2e1968ba2a4a96a3f6d3a6b869e4e2901960d77928a7c54836fa51e2d2d79667047f97205e7d5a7eaf8090cfbd7209fb3e17b6444689438387ceff56375fe1bb70e2814bf58a0848f308ebc24c27eceb6ebb496ec8907ce9a04cacc0c9fa39d0ff8ffc5b59baa960af1f0a0afbb', 'category': 'Pedestrian Crossing', 'description': 'A yellow pedestrian crossing sign with a pedestrian symbol and possibly some text underneath. There is also a stop sign next to it. Image quality makes it difficult to assess details', 'image_quality_notes': 'The image quality is poor, the sign appears blurry', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 775.0}, \"hi\": {\"y\": 3198.0, \"x\": 820.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5211: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:e07667fc235beb4ff0cb41949e10425a:00110060\n",
+ "Processing image 5211: timestamp=2021-10-18 21:31:26.427770+00:00, observationId=o1:e07667fc235beb4ff0cb41949e10425a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22944986624795882, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:e07667fc235beb4ff0cb41949e10425a:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2021-10-18T21:31:26.427770+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae07667fc235beb4ff0cb41949e10425a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6cacc9e823f51d47082534d1ecc2b5a75446187b022fc7e77aa20f385c5726dce9572f9619c39ae8b8321bb700ee8487e77b8919b8c593d6c440e1b4ff1f8cc6353e50265b7bafbca5ec66ccefaf15c850e271a28b15915725d4b70f0402d0d9e2a2d8e42669c17f0966b6724eb229ae0cc2524b63990aec3fa1d67272c4f34391969d2512ff79b0176e21dfc6091c8c5520c3b038c3d364bbc083097b89989a290d5a502fd3cde9fa605928afd332246ec61d1206e8018699991b1481eb4e6a56129fede1e645d0eb984d8fc3a0fa0cab1e0b0b584c743b678192d8150eb40664a59b9381bc081a251d39d6fbf655277c4f77ff46eeb792e913b7b38076ea18', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond sign with a pedestrian symbol indicating a pedestrian crossing.', 'image_quality_notes': 'image is blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2214.0, \"x\": 308.0}, \"hi\": {\"y\": 2250.0, \"x\": 343.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5212: trackId=t1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f, observationId=o1:1d737981e2b05d0a008c34713dbee3cf:00110060\n",
+ "Processing image 5212: timestamp=2022-07-07 21:38:48.221519+00:00, observationId=o1:1d737981e2b05d0a008c34713dbee3cf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.\",\\n \"image_quality_notes\": \"The image is slightly blurry, making it difficult to see the sign clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3948891886164633, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee159e4fd52a26b6204202b56e5ce9:ffff005f', 'observationId': 'o1:1d737981e2b05d0a008c34713dbee3cf:00110060', 'geographic_point': 'POINT(-111.909785348698 40.7816740683344)', 'mapsURL': 'https://maps.google.com/?q=40.781674,-111.909785', 'captureTimestamp': '2022-07-07T21:38:48.221519+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d737981e2b05d0a008c34713dbee3cf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=488dcdbe211f8346d9e2f8fa0c1db05b03d1599034f4d032495592c4d546df6152cf669ead66658f3666905c2df5e6c92ef58c0e5370c4fd1a800d527541185352716770c4badc9c5e592e325f8e367dff32fbdfec74a35814c4cc99250bec7321c605920e28258e13d235aa171af4751d9437fbd4a57a03a3b6ee24a40624d0218cfed879a7d9db3cf5f30b9a5e976457774764b3e5aacbe83367a1f318c44e8e6ff7a113b701d7fc08ba3fc82f8556d465d5181c9eb9e4cf0e2b8f7008ffde083ddb5142843f815394c2709ff217e1239656c1a8cb205e03468d901761d353e0f0c501416d653b8a8c72f94575b23e61671acd81e28630426f314ad5797544', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol is visible, indicating a pedestrian crossing. The sign is somewhat obscured, but the symbol is recognizable.', 'image_quality_notes': 'The image is slightly blurry, making it difficult to see the sign clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3176.0, \"x\": 824.0}, \"hi\": {\"y\": 3218.0, \"x\": 854.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5213: trackId=t1:02ee3215339e635a3f4d9cdd086fb043:ffff005f, observationId=o1:d919e8f23f029957a08a987285a2f1ee:00110060\n",
+ "Processing image 5213: timestamp=2019-01-24 19:52:33.048395+00:00, observationId=o1:d919e8f23f029957a08a987285a2f1ee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'PRIVATE PROPERTY NO TRESPASSING\\'. This does not fall into the standard traffic or regulatory signs.\",\\n \"image_quality_notes\": \"The image quality is slightly blurry, but the sign\\'s text is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36760218550519247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=493, total_token_count=575) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\"}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee3215339e635a3f4d9cdd086fb043:ffff005f', 'observationId': 'o1:d919e8f23f029957a08a987285a2f1ee:00110060', 'geographic_point': 'POINT(-81.9942090344183 28.0422911751058)', 'mapsURL': 'https://maps.google.com/?q=28.042291,-81.994209', 'captureTimestamp': '2019-01-24T19:52:33.048395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad919e8f23f029957a08a987285a2f1ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d544dae1869e5ddb478d48d92eb394f964ec889bf821343f13928825ba033ea3ac25b9f9d987da75af71e32808d98f11799b971a34b6d779fbd7a7375809974eba01a5ae89e0563e3a015d2dabaa6ecb81d55ce7cf7e55ef1d96e1b360982bf3e499b8e2e02b2ff768f83b4cdadcf25c452feb8a40f48e6e041a0de21a22f8f3615d8025c784540c5716a610eac4d347623a254116a6a9e85344dcea1168156078adb0b4c799178ae826f3f124b10c9b36197bb36ee1ea14a6ca9d360116fec00c131759bc478f963b2964b5d1dc7e65c56715ec7de20a53f1a684fbcc007c3eaf39e1430b016547a6e80bf7ba8706976667d8c8c0a161b7b50f142bb25a260', 'category': 'Other', 'description': \"The sign reads 'PRIVATE PROPERTY NO TRESPASSING'. This does not fall into the standard traffic or regulatory signs.\", 'image_quality_notes': \"The image quality is slightly blurry, but the sign's text is still discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3256.0, \"x\": 3553.0}, \"hi\": {\"y\": 3301.0, \"x\": 3603.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5214: trackId=t1:02ee3215339e635a3f4d9cdd086fb043:ffff005f, observationId=o1:925fc2fd915ef39f56823b2900be1caa:00110060\n",
+ "Processing image 5214: timestamp=2019-01-24 19:52:33.048395+00:00, observationId=o1:925fc2fd915ef39f56823b2900be1caa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'PRIVATE PROPERTY NO TRESPASSING\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.056853947968318545, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ee3215339e635a3f4d9cdd086fb043:ffff005f', 'observationId': 'o1:925fc2fd915ef39f56823b2900be1caa:00110060', 'geographic_point': 'POINT(-81.9942090344183 28.0422911751058)', 'mapsURL': 'https://maps.google.com/?q=28.042291,-81.994209', 'captureTimestamp': '2019-01-24T19:52:33.048395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A925fc2fd915ef39f56823b2900be1caa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d71a9aaaef9ba93dead4d6d6050f59f52852b65ca2326e08d80f483548abf5d0740708cefe61ce1e406a80dbb4831f71ef516d3c6805224d8114e346274b3a6274ca0ae14716af9926a6696ec83609b96a49936f07fad00be1e43eed851340a118b67b9044e5b2cf41f2fcd60fd002d6b7a183bce49395bda2fa33666e658def22c8e1e1ab832d60e617a1251ab5a37922fd32c46fdfdf3c3841036fa47a95f83dfc0062e1f4197f3f4aa9c84a46f0fb0ee2ce4b1f04f9e5c0ed95a5db96369042ba5ebe852e359d354180005b17a94918d5c04cae56149314f4f24ffb71b14f3f1638d23a31bf0a79d3bc72097da8020f21ae4984ef273c0faa9e77b850ae0', 'category': 'Other', 'description': \"The sign says 'PRIVATE PROPERTY NO TRESPASSING'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2368.0, \"x\": 472.0}, \"hi\": {\"y\": 2412.0, \"x\": 521.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5215: trackId=t1:02eee0c305c4ff733d6606593e653116:ffff005f, observationId=o1:edf32b62ff531fb87ee97363e2545098:00110060\n",
+ "Processing image 5215: timestamp=2019-02-14 18:07:05.589126+00:00, observationId=o1:edf32b62ff531fb87ee97363e2545098:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign with white text is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09702635633534398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=2557, total_token_count=2615) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eee0c305c4ff733d6606593e653116:ffff005f', 'observationId': 'o1:edf32b62ff531fb87ee97363e2545098:00110060', 'geographic_point': 'POINT(-81.9810005484937 28.0318006419488)', 'mapsURL': 'https://maps.google.com/?q=28.031801,-81.981001', 'captureTimestamp': '2019-02-14T18:07:05.589126+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedf32b62ff531fb87ee97363e2545098%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4d61e1b68ffbb0a2d024e3db966630a1b12dc2d52160c72ee6d1c2f12400d482958ba982c0ba6c305effecb62a6645ecb1e9b3a8faaf352a549e076e02c23399201c968701170df4e43bf81646d69814813c6ccd3e8f186397fb7506699f49761cd039b1e46ae713bb7aafc33dfc02732fbd871d98ca998e8cf39435903332e304faef1f227013b3a1eefc1e498678638fd3e5ec5ddff2199aec87d9c58d8b852da066bd8afde70f067aa5846fe3996588570418294708377b1c551863bed7a142b9b088ea6baba2a5bce0046ece41ff965d28fefb95a2299ab7522ffc02412f4196629d193514191bcbfde64f00b99af5e12742d1ba69e64b23e1f13050375', 'category': 'Stop', 'description': 'A red octagonal stop sign with white text is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3652.0, \"x\": 1922.0}, \"hi\": {\"y\": 3870.0, \"x\": 2127.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5216: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:a9947c639b97de252ef2b931bfbeede2:00110060\n",
+ "Processing image 5216: timestamp=2022-10-07 20:14:34.858857+00:00, observationId=o1:a9947c639b97de252ef2b931bfbeede2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40403797751978826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:a9947c639b97de252ef2b931bfbeede2:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:34.858857+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa9947c639b97de252ef2b931bfbeede2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37dd3b28c16a902443d896a38599512025a9d5e56be50b0379f88f491cf4559f9c868fa6ed37a69575d01c4b843b4316f77ebd6cf6868755cca4092118e5d58a4c9fb14cc4f8acf3f915e4fc54371f43704397e68cdb12105d1e285e500be9aec6b326c6c1bbad1c20b5c91c4cf9a42d43a2ec47e402bd2d0c57ee9a0f54bd088591d0baf955e4dba7b53b8fc591c622d913ac16d04fda007736e18556e555dca49b27db831153af3174fdc263cbc5844b058abb7d9e53996f352b73e0219169596ed07e98811f9c4edd6cf769a2e2d4663b59d33d0f0fa9c8d82469e41b8512c3afafc529ac84ecf7a2dc6d98774674854bd5f48dace2e9f951d5cc0081e7d8', 'category': 'Other', 'description': 'The image shows a traffic channelizer which is an orange and white striped barrier device used to guide traffic. It is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3558.0, \"x\": 2828.0}, \"hi\": {\"y\": 3810.0, \"x\": 2895.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5217: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:cc592c9d5020c33a246fac4e4bbffa63:00110060\n",
+ "Processing image 5217: timestamp=2022-10-07 20:14:34.482895+00:00, observationId=o1:cc592c9d5020c33a246fac4e4bbffa63:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28851643315068, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:cc592c9d5020c33a246fac4e4bbffa63:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:34.482895+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc592c9d5020c33a246fac4e4bbffa63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08d598d009d5e5efe9501b753eaf95f85d5cbb5174371d42654e2772bb67528eedf4de0dafba64e656f54f541e2e4c02c21061a280c5b5ed300d5e868a3f4684d59da30e9278ddb6a98be8f65f0df5ae0f2e71d5ff6670e867cf1de027232eb3aa8ddf90f7841cf69c9901ceb7ceb0e562305f1f18c829941f836bb1c216c9d1514da31a724f2901db447523569a3077929773c8cd2eecddcb11438bc0b7900e2ba16e92f8e8b73deaa71de680c8bced89a099ef83754b4374e97c2e49f27d724a0551c74662771e08c27d5ddecaae27e598206c2209449e0a6a81aa11ba0910d678ce3efea58be664bc2279867f82d923bcf576bbbba0d2bfeca591b6208acf', 'category': 'Other', 'description': 'The image shows a traffic channelizer, which is a vertical panel with alternating orange and white stripes. It is used to guide traffic, usually during construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 2999.0}, \"hi\": {\"y\": 3628.0, \"x\": 3048.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5218: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:1debcaa3595bde4ec31ee22802ec1144:00110060\n",
+ "Processing image 5218: timestamp=2022-10-07 20:14:35.238897+00:00, observationId=o1:1debcaa3595bde4ec31ee22802ec1144:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2431772571720489, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:1debcaa3595bde4ec31ee22802ec1144:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:35.238897+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1debcaa3595bde4ec31ee22802ec1144%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b88b153ed232d13267c1b59235e7aa098f6822e1bc766ef37841ff1a8f63003796e2511e17d242940613d11c2a4ad860e8c4bb9012ad8d4a49ea20ab2eaaf91575de789ee6aba1c7e3673a4ad2a33b4c5db4ee2e94edde6cb86c1b7061d9f252f4aebc93b14b53bbaeb74268bfc4c27bade979b0f5437c92e434064d292839fe8b6bd17e032b7f8f0c3f2e0065aa956ea8a9d07af126a8b25fecb3a9ba2efb61a2df3665095db36f9b13f04ff4755ea9e5de01a80e055e220b95b572bfc77cff8fd3b761df93a62c8781e6a64823e74b0806762795c4e2d5541ab15169376af2dd67664a95c676e0e7375d10274678666af2261bb66ed48778a06652745ceea8', 'category': 'Other', 'description': 'The image shows a traffic control cone with orange and white stripes. This is typically used to warn drivers of temporary hazards or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3746.0, \"x\": 2440.0}, \"hi\": {\"y\": 4145.0, \"x\": 2555.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5219: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:e3c1017711944aca5bff6950842cf49e:00110060\n",
+ "Processing image 5219: timestamp=2022-10-07 20:14:33.362961+00:00, observationId=o1:e3c1017711944aca5bff6950842cf49e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn\\'t discernible from the image, but it\\'s related to road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4474792934599377, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:e3c1017711944aca5bff6950842cf49e:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:33.362961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae3c1017711944aca5bff6950842cf49e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=58078a6cb237b01fa9136b626e31a9fe385ae515a50da339675230c9aa18c8679a918757569ce6eda17366785037c70dc31a3a9828999d5008b1c73e31b24252201a79fd76f0b540f6203d8a51fa9214d50e48c32af5924a4ef8f81358856513885f3c12b28903210de5099fd3cab8c352160066752687671c3217c66355ebb78ae95adee85bc6d23355e6ed25a477b82f95e19f5953867d2d252c25949659a1f570d08d0406aa1e17ee08d010bda52fea3cf82e85e1bf747cf43ce9ca2a4595436149e650841d22f623506856ab987913d830ff912aca9d65754f3d59c33d4d0dab4a4725449f896597eb2ebaf8a3a7e73c95855e83309fa829e36653cfa7e9', 'category': 'Other', 'description': \"The road sign is an orange and white striped safety cone indicating a construction or hazard area. The specific message isn't discernible from the image, but it's related to road work.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3401.0, \"x\": 3083.0}, \"hi\": {\"y\": 3553.0, \"x\": 3130.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5220: trackId=t1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f, observationId=o1:b831e113ce4a6fcaaac51d91b893c4da:00110060\n",
+ "Processing image 5220: timestamp=2022-10-07 20:14:35.622931+00:00, observationId=o1:b831e113ce4a6fcaaac51d91b893c4da:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn\\'t indicate any specific action.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44974526115085767, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02eef8e7fbb788737bd28d7ccac0a730:ffff005f', 'observationId': 'o1:b831e113ce4a6fcaaac51d91b893c4da:00110060', 'geographic_point': 'POINT(-111.877789473351 40.7650117326877)', 'mapsURL': 'https://maps.google.com/?q=40.765012,-111.877789', 'captureTimestamp': '2022-10-07T20:14:35.622931+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab831e113ce4a6fcaaac51d91b893c4da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091517Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2831173b2511dccf35eab5dc9599c0cfcbf38624ab4c04013aa5b9b578215ddbcf659b687ba118412411799e38dae6d58f5c92e4c61d2ff0c6d9f88fc74dc8ac85fe29ae2d032c728423c7796ef19e21df0f398f7a63474536fd9416cd49f8fca41ed26262923bdeb70241d1a49e4ab62159b1e9ced3eb27126567a2f5915f25429202c906199fd01e7c6afccb4e7de1b137043d4f72e99a945dd42ecdcd534cf2adb30613143528f82dcc1ad7007a4360561b657b3173c435cae2a212850cc084ffa209843a3eb4d3a3829dda331a32b7b52ac6087d9800523e15f1ad63611714c1c6b419c1b9b4ed7ab41a47ca6f37851ad92315a775af33a02ed3a8bf464d', 'category': 'Other', 'description': \"An orange and white striped traffic cone. The pattern suggests a warning but it doesn't indicate any specific action.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4348.0, \"x\": 1126.0}, \"hi\": {\"y\": 5123.0, \"x\": 1334.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5221: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:84aef3bcac5351ba10cf606fd75a073e:00110060\n",
+ "Processing image 5221: timestamp=2016-06-04 16:53:16.099920+00:00, observationId=o1:84aef3bcac5351ba10cf606fd75a073e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"image is clear\",\\n \"Street names\": \"Plum st and N. Tennessee\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13376566292583078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'Street names': 'Plum st and N. Tennessee'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'Street names': 'Plum st and N. Tennessee'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:84aef3bcac5351ba10cf606fd75a073e:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:16.099920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A84aef3bcac5351ba10cf606fd75a073e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b4c3e23aaf3f303e4b65482cf674e1fe6075cb299e4d6191ac1edc367e7e34c820902bff0da2ccd90bd6c317ccc19adec550a788338805f01fb351e0f8d481e4ac7a7d1930babcc7ddd28bdbf5e08748db691444c6e53b625cb35c2168c73d9ffc6cdcbed6730c96fa497ed8fdbfdd02023a9cf9f2b806f7c43484cbc155c0186e64982a4cb2b70f5727de25cc92b56b386488c33dd7ec13d7e83a153ede94d844eb076b5f517bef8db00411f115001ac878d645a3549ed59306f3674315f674922b9ab9a06da35e6a63220c5145e2931c532ac0660ec05ee0c23a3d74da24e27d06feaa3d3cc0dc27e389a05bdcea59eb69a2476ecd592eec9d5e928dd6488', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 641.0, \"x\": 1690.0}, \"hi\": {\"y\": 761.0, \"x\": 1867.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5222: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:43ab36d6496df4aaba6b89e923908fa3:00110060\n",
+ "Processing image 5222: timestamp=2011-05-05 16:44:01.350244+00:00, observationId=o1:43ab36d6496df4aaba6b89e923908fa3:00110060\n",
+ " Error processing image 5222: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43ab36d6496df4aaba6b89e923908fa3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=78f9785e75d721278841d239292b58acb61928c2deff8509c52faf733d71feb71f0d05cd9427057018ca20a97ba72c6fcfcfff4cdff38620651ddda75ea4a1d832bc3e1751615b7fa2292849f5a0ed4d6bd01c88f2c1da7764f81caa48b822305420477fcedf4f45a8d43c6df2c68683ecd34deb82b346dde58308dab4ea330546c7d017865371663ca41c23f52b688e2cd4dd349e4e6e7c76477b5fb603c0086eab8ae24906cb7bcd2235d36decca159a166a93f0b15b14ce22613d348d0ca260eccb15e6e13a0b92e071e548e656f5ecc177c7232887898056d9020a85c4debb053467d62bbad122dcd6c356885094f6335c9f21e8b8bc78a7a09c7d318cd8\n",
+ "Processing image 5223: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:be752b5d3a12b44458d92c029757c319:00110060\n",
+ "Processing image 5223: timestamp=2016-06-04 16:53:17.151401+00:00, observationId=o1:be752b5d3a12b44458d92c029757c319:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering that says STOP is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13573022748603195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:be752b5d3a12b44458d92c029757c319:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:17.151401+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abe752b5d3a12b44458d92c029757c319%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092429Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e36ca3c14c71f574606f36225a704732fbf9a1e31c9258d88444c82ff906a084007a4b4336ef7116796adb9746ef7eea14369e0d6c072a99a4967864e45fd7156bad47850f68ce15e937a179c71908476cfe816f07a037dc50a53e703c1fd5e183cdd2c6a848fbbac3b9a14c01bd750d1356ccfcb1a0c95b45b1c2dba2b3d82c501e9a96dda24e70fd5318fe46ad6a91feacb9587c0e6dd1a5dc5b3b9c98e5320a4e94b4d47c5e9f0ee2250d4a8078c289ac398d994b288caa2d1af313e2605f74150d3261d2e6d562503add09b22779790ff94f98a9c3d0b3117307ef6ef50c93f636bd9902305eb19112e446e9d0101c7a569f5adaa49756cc618bcebf5ac', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering that says STOP is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 696.0, \"x\": 491.0}, \"hi\": {\"y\": 763.0, \"x\": 773.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5224: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:86cec14112453cafeac97a56164c9b3d:00110060\n",
+ "Processing image 5224: timestamp=2016-06-04 16:53:16.099920+00:00, observationId=o1:86cec14112453cafeac97a56164c9b3d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green sign with white text \\'200\\' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\",\\n \"image_quality_notes\": \"The image quality is fair.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.384410646226671, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2041, total_token_count=2131) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:86cec14112453cafeac97a56164c9b3d:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2016-06-04T16:53:16.099920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A86cec14112453cafeac97a56164c9b3d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c985798bba80f2cb773ccb0737246606f270029b8853d97cb23fa0bf8f2fb096672d0ddc33ed60b6a13236b863ff5d7a167bf1ae7671ae44a5185a7a4aca50ac4b6133da4b43916909db7eb4afed0d71862258bf2ac96791b1612bd3ac5a3fd32f9cce03902ed76d57ad5ecf365d4b4f264fc399f9db4133f16add3644c3d14500a5322b0c942ee2d016d352e6e2b9b2c079184e435fb1bf22cc399a2cde7c7a1efb6bbb59069b2d4e74fb6d1477401fb778950ca61d9c458770298ed0f5c648991e05d455fdddb7fa89891394417e8c8262c8e597a1ba18f86e99bfda57ae6ba9ff58c7b712ca90fd2b67e2c70b54618ae4532927253589c4e1c95c07af8cc', 'category': 'Street name', 'description': \"A green sign with white text '200' and an arrow pointing left is visible. It is most likely a street name sign or a sign indicating direction/distance to route 200\", 'image_quality_notes': 'The image quality is fair.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2121.0, \"x\": 0.0}, \"hi\": {\"y\": 2232.0, \"x\": 122.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5225: trackId=t1:02f110a53178b16bb96d9d5364b32dd1:ffff005f, observationId=o1:f86bd262b16f0b7f59d6b48fee267e37:00110060\n",
+ "Processing image 5225: timestamp=2024-02-12 18:58:09.490877+00:00, observationId=o1:f86bd262b16f0b7f59d6b48fee267e37:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign contains street names, specifically \\'Plum St\\' and \\'Tennessee Ave\\'.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the street names are legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29013853203760437, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f110a53178b16bb96d9d5364b32dd1:ffff005f', 'observationId': 'o1:f86bd262b16f0b7f59d6b48fee267e37:00110060', 'geographic_point': 'POINT(-81.9563663001578 28.0528675493002)', 'mapsURL': 'https://maps.google.com/?q=28.052868,-81.956366', 'captureTimestamp': '2024-02-12T18:58:09.490877+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af86bd262b16f0b7f59d6b48fee267e37%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=157f60c977e816d179fe06cc238770f2f586a94d8418cfe809325f08c0d78a42729ae32dc08e1727de441a74a567e25652d0380dd1b8f0b3b5385ad3ec27dd1a41c0309ad14d8fef73dc10b161e0df759b37fc19af3cd2a8d292eb45f8026bc4b6469108ea9c4cc699158f48d1b71513822907dbbc707f8733b05227cceeb1568c9b0051f0a77dcc24bed80d00fd8a1d90c40c8f907914c104b1c6a68180c4c02f97a3ed7234b650282720169f2a38ebe44c617558d1cf0bbe0b2c0b6a1010fbd0f074c8bebcacc187d4e588e954f99a77be7174470ab00917381f33b24404e26bbc3fd3ef0752a82084dabd38e8a617f04a1239f51b6cfdc46fc881e9505fbd', 'category': 'Street name', 'description': \"The sign contains street names, specifically 'Plum St' and 'Tennessee Ave'.\", 'image_quality_notes': 'The image is somewhat blurry, but the street names are legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3069.0, \"x\": 2597.0}, \"hi\": {\"y\": 3121.0, \"x\": 2711.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5226: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060\n",
+ "Processing image 5226: timestamp=2024-04-17 14:07:57.757257+00:00, observationId=o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15623599832708185, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:2ff4ecf5f0202c2fe745ac111b7d17e2:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:07:57.757257+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ff4ecf5f0202c2fe745ac111b7d17e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=acbee9f4d14162820324db31a835914727317ecf8c1ea3f86c2908e6ad384cce96d1cd05681b5927ac91af29f02b2f43e660a645d75b0d905d380714b43afbbf2ff9b98c2efac588c06d9fffb9c93885b821a3ef55c3ec3bcf52ccc8f230ddd53cc7f71fbbf79f4ba989ef9bb8e616bb4b7accbf33e4e5176481b89713c67474f3fbe0dbc55f4f7ffe4762fe3d778edded80659530e687ca7e5c0743b62734745f0c5c305e86024c8b193bb3046a2c4d4744f8d7a8dc63d048e2076bd7629d548adff5affdd33b73f649bceba227f654783b8fb17402032a5157b3d67d8cae908b156d39eeea7a1d83c836786c392039c931828307ea946d04f51a1db96f63d9', 'category': 'Other', 'description': 'The image shows two orange and white traffic cones, commonly used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3414.0, \"x\": 2586.0}, \"hi\": {\"y\": 3528.0, \"x\": 2653.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5227: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:354c86f384438032445b91b73e773291:00110060\n",
+ "Processing image 5227: timestamp=2024-04-17 14:44:37.981132+00:00, observationId=o1:354c86f384438032445b91b73e773291:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange construction cone with white stripes. The text \\'CADES\\' is visible on the cone, likely part of the word \\'barricades\\'.\",\\n \"image_quality_notes\": \"The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3513117016486402, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:354c86f384438032445b91b73e773291:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.981132+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A354c86f384438032445b91b73e773291%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47cc0dea2c0282a4fd1e11beddcf45eb1fb9ad6b00821733ef5653dd33761eeaacafb63d75fc0be5c084262780bc278546a2cfdee39c83e46e06767318dc8c9fcc3ffd0e95dd3b0d64885643d43f850506334b3812940d56e408d7ff8cf83e206d5ec4d7344c7b4ca06b04e8983c31087d39bc690f78269d4733cee85f1ec7c23a8292dacda5b21dc27447ec4427597905582fc3c54ebf9753d3cf5218cf8f3d0221c347865d898d0384074d37ad2d568c5efa186f7cfcee7372f7ec674a71c45c716f8c785f521d97ac70210986839d9035c7d9bbe5cdda99e315ead7a64d05039c97ced5e3ba204ea1fccb80d31db2dacc79878034e594269423e0f28429a8', 'category': 'Other', 'description': \"The image shows an orange construction cone with white stripes. The text 'CADES' is visible on the cone, likely part of the word 'barricades'.\", 'image_quality_notes': 'The image has a large black bar obscuring half of the view, but the visible portion is clear enough to identify the object as a construction cone.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2864.0, \"x\": 3538.0}, \"hi\": {\"y\": 3195.0, \"x\": 3653.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5228: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:28b1c74632862c740562a01fbf93b378:00110060\n",
+ "Processing image 5228: timestamp=2024-04-17 14:44:37.081142+00:00, observationId=o1:28b1c74632862c740562a01fbf93b378:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white striped traffic cone, likely used for traffic management or construction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10840556071354793, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:28b1c74632862c740562a01fbf93b378:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.081142+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28b1c74632862c740562a01fbf93b378%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b450a2114d13054af164a348ca7f50fd05292852a55d1f0956abe39f632ad8d11dfb9a35971a038062ec038a2376991e958c738bf11f5d37250af0435a62d33f1fd7a858e86b3d52f4a690c2c74149cc9bcd70a0f938b71f7d96bae0ff37ce4394112fb13310e826a904d8649a2c0174afac59f9be692d43499fe6c6c6e14096a22f0e7e051287939c7ca28f42649ed4b59b52456a4f37458b4343bc45685eb3875461f46ca83f6779c0eacd5c2b92a1c3f55684bd8842ef6d38fa0e22c09a51127dfd448fb168140b3c6cc344a2a847690086e3dbdd22baf01e3d1ed419f29980f002dc348fd7a01318dc9ab0b19d458ffb8b979ce1e42f100f290fcebfe07', 'category': 'Other', 'description': 'The image shows an orange and white striped traffic cone, likely used for traffic management or construction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3405.0, \"x\": 2579.0}, \"hi\": {\"y\": 3502.0, \"x\": 2634.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5229: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:a47499e82b11a4169345b7cd1bc1bf40:00110060\n",
+ "Processing image 5229: timestamp=2024-04-17 14:44:37.681137+00:00, observationId=o1:a47499e82b11a4169345b7cd1bc1bf40:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21983559926350912, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:a47499e82b11a4169345b7cd1bc1bf40:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-04-17T14:44:37.681137+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa47499e82b11a4169345b7cd1bc1bf40%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d7d1132d4746e9e3c0c15f1a59c803de2fbdbf437c83b6062d4e2a959a1ca126b569c2efe889b2a7b569fa172acaf4cc60b79434089f6b1ad3fe509a4976c5afb51c583536815942241fc24fe8fedc3879347a6208d97bc1c1b5538bbd7bcc9524a2ea5b59834ffb2ad36f6e41d17bf667f799e144cabfd6747c36b81158c998142d10e364edc434811734cbeb95301e28ab6450482b5d2e025ff7c48e2d8007d24dc4832f843e60d03c604a521ba05f0a0e13ddc2e161045f77dbbb67bde12a324836decdc086b44490e0686d31c570d70d3edd8a9ec7d3c2e504e9beedac0640e85a44db2e6b2a4f7a96e04c91480089af7c0e83e74654edf0231f34dedf0', 'category': 'Other', 'description': 'An orange and white striped traffic barrel is visible. It appears to be in fair condition with some wear and tear.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3572.0, \"x\": 1801.0}, \"hi\": {\"y\": 3752.0, \"x\": 1908.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5230: trackId=t1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f, observationId=o1:f41610611e314fe8d9d545bb5476da67:00110060\n",
+ "Processing image 5230: timestamp=2024-02-27 15:51:48.285303+00:00, observationId=o1:f41610611e314fe8d9d545bb5476da67:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a traffic cone, which is orange and white. It is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2249327986987669, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2ce91249ec77542055dde2fc4fb5f:ffff005f', 'observationId': 'o1:f41610611e314fe8d9d545bb5476da67:00110060', 'geographic_point': 'POINT(-81.9419360558573 27.9950428887321)', 'mapsURL': 'https://maps.google.com/?q=27.995043,-81.941936', 'captureTimestamp': '2024-02-27T15:51:48.285303+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af41610611e314fe8d9d545bb5476da67%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=05fe07d749969146c0aa3f65cc5de4096b23625ebb3fb3b399d901a606732791398867d481ec77a210b273edc7772e52bb3eac29585a60e3937c86fd50bbcec10eb5ab3b34dc96439ad69b35388a0a645daa871ff41cca4854d53dc36bd35d74bfcfe5a64bc00c49dcf31d8c6d7bd627f6829bdaf2f6c331969a64a3a7ed490cbbcf366650ce2d82ee370334ab4d0c7544ac7b6efee4e5621adf10de1b0845e76db3afa7117dc3e0f2535a7620a08a5f7c3c0cdbaa5854f27a19d211edb42df6a2ef4c34808dbc13c5ca17038eb965fd3c62368a405a1526acbb364472747f830cc6e4bd36b24f906782bdc63ddc60b79890a9abfc36a24dee06d457138c4a1e', 'category': 'Other', 'description': 'The image contains a traffic cone, which is orange and white. It is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3734.0, \"x\": 3585.0}, \"hi\": {\"y\": 4005.0, \"x\": 3654.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5231: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060\n",
+ "Processing image 5231: timestamp=2024-02-12 16:49:33.259306+00:00, observationId=o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reading \\'Starry Way\\' with an arrow pointing right is attached to a lamppost.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11808759144374302, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:97a24dad3f38c1d5bd2b795d684ddd47:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:33.259306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97a24dad3f38c1d5bd2b795d684ddd47%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=54add675390bcfa0b9c1dcb5e36b4847c79792db179e5f015e3ca77774aa841eebae952470fc5d0460426f7dbe9c6ca355b5ce20041434dbe255816859d7d48cf75b2ccfb9ff0fbe1bd6b1a032cced975ee891b4e0ff9a61121f343f937bad2378cc754e02637c998e1eb94d1ba58cbe099db4d4266d29f9381c41bf61876b6eefdbcacf7c6b565f62e45f1869ed5275e177570df2263c623e690dcbd3f895c1ae64b28e3b905ecbea12868968a3e98e360b0829416a0eb868072c4c9248e3e9356c46835c7b3fdcaac30b51c9aa8be24bc053ebdb1c11f0dd9a10e7880cfc0703595911121dab92206ca71149b868f92aa11028d307f07e11d4e762a10975ae', 'category': 'Street name', 'description': \"A green street name sign reading 'Starry Way' with an arrow pointing right is attached to a lamppost.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3051.0, \"x\": 1660.0}, \"hi\": {\"y\": 3195.0, \"x\": 2094.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5232: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:c69ac091d1cb16073d7fb2c7205ce107:00110060\n",
+ "Processing image 5232: timestamp=2022-09-15 16:25:46.200323+00:00, observationId=o1:c69ac091d1cb16073d7fb2c7205ce107:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'Starry Way\\' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22646765275435013, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:c69ac091d1cb16073d7fb2c7205ce107:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2022-09-15T16:25:46.200323+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac69ac091d1cb16073d7fb2c7205ce107%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16d063dd4a3349615451a2ded8a4c88b7773c07d6ff6abffe1644659d81b169c00bdabada57e2b6ba8bed1eabebb2c5567eee3e2d910f7c2e2487e8752552ab0752111b95ef43a51e4fb5884964e48f1c12fb8d3f1b3d4238fc510a469eb341f561087c9c4306b9a93bdcde17a9459313febde3436e70badb6dc7e538ddb0d70891996052ee27c718648c4372a4885f6934afcd1316a9bd2f015d627037f8ff28315245823a300fd87f8acd0fb5af486f69cf68751b45b5657d415c21dc8fd100d6abebee37cf1c1b70b6787432ca7d5419a1d35be73af71bfb4291e6c9d0450270ba8aeb3026dd9fbea8021d0ce2b5aa3cbd8c91b50d06a321bbf760d0c51f8', 'category': 'Street name', 'description': \"A green street name sign that reads 'Starry Way' with an arrow pointing to the left. It also contains a graphical depiction of a swan.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3080.0, \"x\": 1762.0}, \"hi\": {\"y\": 3229.0, \"x\": 2108.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5233: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:b53da15022a592ac75faf8d32efe4861:00110060\n",
+ "Processing image 5233: timestamp=2024-02-12 16:49:34.747290+00:00, observationId=o1:b53da15022a592ac75faf8d32efe4861:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'Starry Way\\' with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09508812788761023, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:b53da15022a592ac75faf8d32efe4861:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:34.747290+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab53da15022a592ac75faf8d32efe4861%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091700Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abdc2a999829868cbe0925a4a48c5fd20528f6dc7a86f176fb086e679e97a7d3caa492eec2fc296c6a1e92a84144ca6be4bf7a50698147981f6750acd47af031a2a04c10672e12e6dffcccf67af3d27ca5d204538b312705b3f1a1d7e14495e86e14753e11c21beca068addf68f266abda74328666e611bc3bdeff6638198dc322c2e88f2db75baf2a84bd32fc713bfee9e4afbd3a926c517023c24c50a5d1b0f3f62420db2d118297ded36f07515a9b5e4f33a1ed1d7fdb6416aff5caf047b3f0916c6fc3dbdf0072ab29395e9a1fe8b5018868ec46a1892a9208b00c1777c36443b70af5ceb7a1bb7f3597323c0fcf3b5e250ac2e9ccaadd5e859fed990cd2', 'category': 'Street name', 'description': \"A green street name sign indicating 'Starry Way' with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3114.0, \"x\": 2024.0}, \"hi\": {\"y\": 3226.0, \"x\": 2321.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5234: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:1609b14975bed3c3a85eda129bc7095e:00110060\n",
+ "Processing image 5234: timestamp=2022-09-15 16:25:46.784697+00:00, observationId=o1:1609b14975bed3c3a85eda129bc7095e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is attached to a lamppost, it reads \\'Starry Way\\' with a left pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20037606027391222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:1609b14975bed3c3a85eda129bc7095e:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2022-09-15T16:25:46.784697+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1609b14975bed3c3a85eda129bc7095e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6f68db89b258e777f221ccb9a6e21b6689b87b40e4bfeae7290278b224491e522a6e5c87dfb35ab36f02c6ebf0819dbdd2d592746ff8c2bf22a7325090d57841d5a1f0700f4107e3af8653f390637af68e0df3a18dff15c1bbfc5b0eda4fea63dca3c17c9c7aa28e9e4ffc12b1e0dd85ba3dfc8f8a59cbf1cc73776683d12fa801b2bac6f2ae97683ba5de29283521132de1fff4e08d60d0b8ce39e5e24f93dbcb3143cbd9fa72ffa1c9d1a5c562e7c602be48fded2d263581d3026aa425fdc83f081db3be655a906ed801e38ed64d2b19e770ddde7ba31390bc160489e4917e28d98dabad7bda4fb9479531a58feadf37c465fb96590218ee03a57367658071', 'category': 'Street name', 'description': \"A green street name sign is attached to a lamppost, it reads 'Starry Way' with a left pointing arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3152.0, \"x\": 2521.0}, \"hi\": {\"y\": 3230.0, \"x\": 2738.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5235: trackId=t1:02f2f3a27caf618ac8c6054512ca066d:ffff005f, observationId=o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060\n",
+ "Processing image 5235: timestamp=2024-02-12 16:49:32.447340+00:00, observationId=o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is attached to a lamppost. The sign reads \\\\\"Starry Way\\\\\" and has an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.178554663787017, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3073, total_token_count=3147) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f2f3a27caf618ac8c6054512ca066d:ffff005f', 'observationId': 'o1:f1b0cdeeb453822680fb50a81fca2a4a:00110060', 'geographic_point': 'POINT(-81.9577833298268 28.0429600222005)', 'mapsURL': 'https://maps.google.com/?q=28.042960,-81.957783', 'captureTimestamp': '2024-02-12T16:49:32.447340+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1b0cdeeb453822680fb50a81fca2a4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=639c5a6cb3227b0cb3f4110642b6aa45ceb672b8c945fddf0fbaf8d0d3aa3669dc9d11941fdb18fdf997142375e28c581a1a33b068fb53d3ebb560871b28d1a1817ff47d2e1d4c0be0986f4247e7656057a95c3dd693adfe7f15e54abc1220b521095db3e4f6f93363fadca5ff0f6ff2f44c41cf7556cffddf8814dcc98ab3944612e34972893df272ec59d9e4af2c23d0a04e42ef2857292d41f1f433b502a4057be6629f6c8c300d1e1c7f52a99f3df93a02031fa9591827a04e9c3805f3a63301dbf9a498d3dab4d7d1a083d0052728715e995e91f401527098a24ee6d8dd788a34dd5cf3f3d814883453699d05f00009a3058a0c9d1b1b3864b85cdbd4a4', 'category': 'Street name', 'description': 'A green street name sign is attached to a lamppost. The sign reads \"Starry Way\" and has an arrow indicating direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3121.0, \"x\": 969.0}, \"hi\": {\"y\": 3191.0, \"x\": 1198.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5236: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:965baf288f577369694ffd11fc96296e:00110060\n",
+ "Processing image 5236: timestamp=2024-06-16 15:29:35.902884+00:00, observationId=o1:965baf288f577369694ffd11fc96296e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3452220408121745, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:965baf288f577369694ffd11fc96296e:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-16T15:29:35.902884+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A965baf288f577369694ffd11fc96296e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=86def96ee88755d8c513e9f3ea19b8c74ff2da24f4c5c06813516b46d7e52d2d662a6c0d53a06e456694ec27b70cfcde46edbac6f88316fbb3cbf4b912b4b1ae806e0f82968be1950e8fc070b6b024934afc27300c566cb306945677fd091d730edcfce21c36c7a033a2e0f336949dc258ed352184c1c15e6cbc5d372fa8826a36f3a8f6dff7ec016501f244ff3140bf6942d41bb0441a76c0a37280c0334a03ad1fa20aa6e4134adef396eea2596938479a814237cc63915b18c28dec6a1b43c5c97480942ae7fa35655cdd470a4bc9c001482699626f5f553c949e896e8e0b1b5a9cd0572a55f14211cad98220aea33d117ec4cf557ebc3e069e5df5fafc29', 'category': 'Street name', 'description': 'The road sign shows the number 68 with a beehive symbol on top. Underneath is a direction sign with an upward arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3073.0, \"x\": 2400.0}, \"hi\": {\"y\": 3204.0, \"x\": 2517.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5237: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:470906c512461d088db8cbc56d226dbf:00110060\n",
+ "Processing image 5237: timestamp=2024-06-16 15:29:36.206757+00:00, observationId=o1:470906c512461d088db8cbc56d226dbf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6576412000154194, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:470906c512461d088db8cbc56d226dbf:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-16T15:29:36.206757+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A470906c512461d088db8cbc56d226dbf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b7f42985fc339121ec8f4db54510e8c7ff9a90dfee26d87f673d8bcab75e6e6d24afdf333d8dcb49ff7058775c4c758e64d0ac606b47743243d3c7e2501c4138fc4dcfb9138761cbdc65f36813ff411f251d08929ab9cee9debbec6ba245e1287807546008c87c27010427703b4cf706f27950d0ad816e837b87a1e687ae414b6e79d2c73d1e2b6159128eb2e17e3a47d3f301761b4f127b41931dcceaa84a67ced0d47294156b375a306f0d6d85f0cf47fe02a3d7e7e9ebe31bd5a2f8c383008d9a62c8618fcc3feebdc981cf37351347c77faee067a83352d67f84c6cac82a5d7caa9f79e9ad07e7b95460713fad0791b6fe7effb6dcfc130f53d1eff20cd', 'category': 'Street name', 'description': 'The sign shows the route number 68. The shape of the route sign indicates that it is located in the state of Utah, the second smaller sign with an arrow pointing upwards means this is the main route, not the alternative route.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2084.0, \"x\": 263.0}, \"hi\": {\"y\": 2255.0, \"x\": 385.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5238: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060\n",
+ "Processing image 5238: timestamp=2022-07-07 21:24:05.998346+00:00, observationId=o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36802513122558594, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:2e90d67f70e2999ad13ba859f6faf1e3:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2022-07-07T21:24:05.998346+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e90d67f70e2999ad13ba859f6faf1e3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10838e729274e75187e3c031b11b0b9eb4c05bb709f1638d9dec80e72d956cd14dce8e6c2ad6d83a9c66ce0014eaa5f814e2bfcba10dd4ba61bdc61f3c744f04481ca52d97b03a6f0834ffb6bcbc1f03d8921494e898a22c0ca139992440284c3bf5f8943213c022fdfcbd8eda9316c0ce1162998d84857e81cd545bef731a017b37ae206c80d0c45e87b16bfca85fce3d859437456387a35029af3a7ed0d33a4b94a6e5b3a43dbbe1699df2cbd274f40f4158251aabcf36c1dede3d0d77caeba192f4fd2552835b129eb4d211d1ecbb131b17ef50df420bd1acc36aaaa61085c695588cf0f445fbd1376d57b0e80d4c724cc563606a1fc400c136d0a0a00eee', 'category': 'Other', 'description': 'The sign shows a route marker sign for route 68 with an upward-pointing arrow indicating direction. It looks like a Utah route marker.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3054.0, \"x\": 2864.0}, \"hi\": {\"y\": 3191.0, \"x\": 2982.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5239: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:217689036a78fdb4b3881aac6c713049:00110060\n",
+ "Processing image 5239: timestamp=2022-06-17 17:06:56.335345+00:00, observationId=o1:217689036a78fdb4b3881aac6c713049:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.452511937994706, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:217689036a78fdb4b3881aac6c713049:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2022-06-17T17:06:56.335345+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A217689036a78fdb4b3881aac6c713049%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9bfbd73a87f0afbe0d0ee36861dab0e8dcf4dd1c9acf8f56d506d29af068eba34c964bfed2aea3852450b5362a7d5e9b6148f7e15dda37787c1eac1ea37bc5f06b68c59febb9c22daacffa60e94d1836d4c72043455e1a574a76b7b6caa6d2fdeff7aeb04db4aed027b886533332b1d83fa232bacb26c0eb325349ed0919cc37a9a85afcd05c59abde8c58987354740dcb88076eb53fc3c7b7ba34c30bc199418622d084c8b41a1c758fd1cb8165f94348fc6b5af214f622923a2a31ab6a3ac7c7d535ada375b836c117cef8ce60ef2eac506a6aefb42f0ad968086c8382026a4f37593702b60cb56db3eafbe35ff8618ec94422ca15ac94991acedf143bf407', 'category': 'Other', 'description': 'The sign indicates the route number for a road, specifically route 68 and indicates the direction (straight ahead) that route 68 goes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3038.0, \"x\": 1187.0}, \"hi\": {\"y\": 3191.0, \"x\": 1344.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5240: trackId=t1:02f4195482c8cf6e5ff1e81d666167de:ffff005f, observationId=o1:927718538cd914ed2d8d3e6f629c8248:00110060\n",
+ "Processing image 5240: timestamp=2024-06-13 17:54:11.971580+00:00, observationId=o1:927718538cd914ed2d8d3e6f629c8248:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a white beehive shape with \\'68\\' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24717319011688232, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=2557, total_token_count=2653) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4195482c8cf6e5ff1e81d666167de:ffff005f', 'observationId': 'o1:927718538cd914ed2d8d3e6f629c8248:00110060', 'geographic_point': 'POINT(-111.939449201605 40.7718554274796)', 'mapsURL': 'https://maps.google.com/?q=40.771855,-111.939449', 'captureTimestamp': '2024-06-13T17:54:11.971580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A927718538cd914ed2d8d3e6f629c8248%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bdf184f83da6d3cdc445710f9f7b0593e2f28cf1ca84b49f9074a4d643a95e644cbc51eaffb50b67e4399f5bdb6819324f8846ab1c8e7eccbf576c87d7729c6300249af801b348228b74e1dc0f5c5400a4550bc8430afabc5ea2c8989c13f1a4aa0b52014b8aa9fe9bdf4d073d8586c9a83aafee73a55e3a9fc7f53a3a8f1328fc1507a7eade1e320399a92fc0393c5778662c774e6d54bba510b419b75226fd7a5264519390682b2faa7d4894ddb0d399ad9232401a4eee4b05739b1969a47600675a2dca8272867ceaf48e4c835139dba6e8a96dd0242b69bf43b2fa5ae18158781126ec74484c2301a15a4c939e1313a9a9037889ddee57e7dd9fa99a5fc', 'category': 'Other', 'description': \"The sign shows a white beehive shape with '68' inside it on a black background, above a white rectangle with a black arrow pointing upwards. This is a route marker indicating Utah State Route 68 and the direction of the route.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3058.0, \"x\": 2744.0}, \"hi\": {\"y\": 3197.0, \"x\": 2874.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5241: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:ddd4262aefd7ffc86c0a28694392da29:00110060\n",
+ "Processing image 5241: timestamp=2024-06-12 18:49:51.887332+00:00, observationId=o1:ddd4262aefd7ffc86c0a28694392da29:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"There are three signs on the pole. The top sign says \\\\\"STAFF PARKING ONLY\\\\\", the middle sign says \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\" and the bottom sign says \\\\\"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\\\\\".\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.308776950048021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=121, prompt_token_count=2557, total_token_count=2678) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:ddd4262aefd7ffc86c0a28694392da29:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2024-06-12T18:49:51.887332+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addd4262aefd7ffc86c0a28694392da29%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5f08bf97e3781412dc5ab96e40366a33904b62130242dc3cc1476a8629713ba1cd0ccdf2f3c4b8a21a3fd82eafe60c87cd6015211e33e36ddfc52c3b31e367fcee0e05ac8b6cf122630a21d3ba792a451ce4fd6672f230f1a319ba75b097982cc9ad88e09214fc88f8ee41e6cba9c4a005797ef670e34467eaa3fe1b89b778646a0442a0ef301b8c5e3d722a28c154808d7c95d7df3c83f1c79455c5c08f24d812de2807ffb0143f9fa5c9ed38c4b0dc45f14673abbc0fd93d866ccda1cc8833e8173132a588955f74e0e539f74f07ad4664dbe2976a948d67dafaa393e9278af3a0b4bb2c1805cc8e14b9975e6e55ccb7bb49b596cba6760532365332e803a1', 'category': 'Other', 'description': 'There are three signs on the pole. The top sign says \"STAFF PARKING ONLY\", the middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\" and the bottom sign says \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is somewhat blurry, but the text on the signs can be made out. There is some black blocking out part of the image.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 2826.0}, \"hi\": {\"y\": 3146.0, \"x\": 2873.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5242: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060\n",
+ "Processing image 5242: timestamp=2021-10-18 20:56:29.391969+00:00, observationId=o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15355960946334035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.391969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4eb5b56b4cfbcc9ed6a46fe1cd2ae4ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b04593d1bea543aabca89e18fddf2da0d8ad28ca98d3775c92d784c6ce6296fd7cc4194e93be2b2269385d3e11c88f153aa6452021bf98cbb2e6fb4e79c0628c351a8b9cf8cd3fafa5dc81252ddadd1d79dbc124f914b7c03462da80dfad084be0d1cf2a6062cbedbbb44c3c69af8cffb64567e72f1b7e3f594b0931420389af5e09c0954aab52da9a929f2f41043eccb883d0264abfe41a805ef02362d0c4ccbaf97d8fe8bd3d9d3db99e355152f5a53bd2b46a92f06de9a2d4e20c6aa4ce7cb622c15806d8ec6d4023cba3628db19ba7f4d7bc0e133009f37978d0d1a8dab699cf45d153f8145484e460e69f6f5b3136b359327ef51adc56f1326a5608495', 'category': 'Other', 'description': 'The sign indicates staff parking only. It also warns that cameras are watching outside the grounds and the school reserves the right to search any vehicle on campus.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1996.0, \"x\": 2311.0}, \"hi\": {\"y\": 2132.0, \"x\": 2395.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5243: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:f47e169bee3aec6157135b7e23d04713:00110060\n",
+ "Processing image 5243: timestamp=2024-06-12 18:49:52.495346+00:00, observationId=o1:f47e169bee3aec6157135b7e23d04713:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3368681220598118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=3073, total_token_count=3166) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:f47e169bee3aec6157135b7e23d04713:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2024-06-12T18:49:52.495346+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af47e169bee3aec6157135b7e23d04713%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f5226fec2eb8b83574f242ce74806b8f2dfc1200a805b743e9b029540c50eb93725c1ae35e1af7b6bd90992ae45ac95c22341675eaf7d320eb5323c8013e2a246eefcaa8a00ad6b02bf65c70a4c56183b75acfb09e07abbda00273b745b4f23b367785da1d813ea515b07b1515edb85d213c581a21266bff6f15b31643a8256a158488c3b9cc41086797a229cdd87f25aaca3ad97842647dd41a8ea934005748c2fdc7aa02bc8282e87450f30be7fb3bdb7580fd01079b52f7f16570e50698035037d739129ca0423caeb95de452abb2b1059f9ba9f4ef57c159bded85dec4d22b56bf536b775c7d8d90d435e26c53de9e2d49335525c08637db6429dfbe3c8', 'category': 'Other', 'description': 'The sign contains the following text: STAFF PARKING ONLY, CAMERAS ARE WATCHING OUTSIDE GROUNDS, SCHOOL RESERVES THE RIGHT TO SEARCH ANY VEHICLE ON CAMPUS. The sign restricts parking and alerts people of camera surveillance and vehicle search policy.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2004.0, \"x\": 2357.0}, \"hi\": {\"y\": 2141.0, \"x\": 2446.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5244: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:a663b14aef48cad6f80a2974f8191830:00110060\n",
+ "Processing image 5244: timestamp=2021-10-18 20:56:29.055962+00:00, observationId=o1:a663b14aef48cad6f80a2974f8191830:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is a multi-sign post with three signs. The top sign says \\\\\"STAFF PARKING ONLY\\\\\". The middle sign says \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\". The bottom sign states \\\\\"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\\\\\". \",\\n \"image_quality_notes\": \"The image is slightly blurry, but the signs are mostly legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23206569992493245, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:a663b14aef48cad6f80a2974f8191830:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.055962+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa663b14aef48cad6f80a2974f8191830%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e49ed647531b1047404c4b809138e5ee583594c6da38754ef1c456a8457c5e7b544fdac1046b468be0cfe35d909131b89b431d8262aa9d4b5585e5df0c009e3f474da6bc50867202e42f49a0a10022777549ea98947c164ff77a38e29d62991fe4584d3c076e858b02501a457ecda37003c5e040fbc1758be14001c78e045c5b95e13f2c0b949b8a4b9f6009394c5c26803e8aecf34f20e5f84d5be8ab9eb0633ecc129d368e9f7c9b15c0aedb687cbd65952478cb73404a53d92f4c592f51f3b3f218ba5fa63b934189a3b827395d79019bf97fd035ec47ab7c626d639faed177b9abf30d6e0c1f3d980f4457500325a64ba7b572cce34795fc4f5ea045625', 'category': 'Other', 'description': 'This is a multi-sign post with three signs. The top sign says \"STAFF PARKING ONLY\". The middle sign says \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\". The bottom sign states \"SCHOOL RESERVES THE RIGHT TO SEARCH ANY\". ', 'image_quality_notes': 'The image is slightly blurry, but the signs are mostly legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2039.0, \"x\": 865.0}, \"hi\": {\"y\": 2173.0, \"x\": 945.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5245: trackId=t1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f, observationId=o1:bee5058b94647d519beebd2f57d999a3:00110060\n",
+ "Processing image 5245: timestamp=2021-10-18 20:56:29.727989+00:00, observationId=o1:bee5058b94647d519beebd2f57d999a3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a set of multiple signs. From top to bottom, it says: \\\\\"STAFF PARKING ONLY\\\\\", \\\\\"CAMERAS ARE WATCHING OUTSIDE GROUNDS\\\\\", and \\\\\"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\\\\\".\",\\n \"image_quality_notes\": \"The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5214566317471591, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=121, prompt_token_count=2557, total_token_count=2678) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f4f48cd3b61c0043c5a250e5758e2a:ffff005f', 'observationId': 'o1:bee5058b94647d519beebd2f57d999a3:00110060', 'geographic_point': 'POINT(-111.902327138582 40.7731864196944)', 'mapsURL': 'https://maps.google.com/?q=40.773186,-111.902327', 'captureTimestamp': '2021-10-18T20:56:29.727989+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abee5058b94647d519beebd2f57d999a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1be091560b7f9368c8051f00d727232661054d8395e26dbf6fb06fa098313a385a67feae9e2ff731ea6e0798b4e2f14e4d75a773328d8db3944e4691598e5fa6c5a06e082f82ca265b9b41b4262f2eef8dae2e8fc45975ea9ef3d27aec145f63b4aebcc8491c2f35d278fe1879164eab2f92354c1bdb935384dfd10be1206fac3533bcc933be5d09f9e8a3864eb9d42c4c8ba678dbf65d237f2a08652364accccd1a191c576f20dfb3e1f5f7de115419839ca9b3944a97d1971b3c8b0171d4d2e749be2da8aaa1090d14150d50a69be14a2138f1d5fadeea9b270d74361ccd344900c0a6ab49aa24819ce22f8523faed08704df3493162a489bbf08694814538', 'category': 'Other', 'description': 'The sign is a set of multiple signs. From top to bottom, it says: \"STAFF PARKING ONLY\", \"CAMERAS ARE WATCHING OUTSIDE GROUNDS\", and \"SCHOOL RESERVES THE RIGHT TO IMMEDIATELY REMOVE ANY VEHICLE ON CAMPUS\".', 'image_quality_notes': 'The image is partially occluded. This does not prevent a determination of the categories of the signs and the words on each of the signs.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2987.0, \"x\": 569.0}, \"hi\": {\"y\": 3102.0, \"x\": 635.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5246: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:5f890079daf94baae50640e9b13083fc:00110060\n",
+ "Processing image 5246: timestamp=2023-12-19 16:03:35.656311+00:00, observationId=o1:5f890079daf94baae50640e9b13083fc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says \\'AHEAD\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3951508485818211, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:5f890079daf94baae50640e9b13083fc:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2023-12-19T16:03:35.656311+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5f890079daf94baae50640e9b13083fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091416Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=abaf9aea246a2494df295f9fccd6004d3fc5984ae73cac7f7871dfcffd41d942e84700de4ff4f5c0ae946e153ffefcfa82a5373a8eebfe9a982be65a7e1bba57f8bba5b9992ff856cb8e882b8ef90804821ad8204c8dfae3ef7daefb85d4ed7eac65aa2db8d4408f938646cd0ff6db21b91417a5fcfb6028ee9b252f5970e24dd05eb87c22bf3f12f09bde362f8173352ad75ae1e7a541f97c591d24a81fac79ae83ec30d8387da502a8e90f81f9b51944dfb2dc2184f6da2359eb2743064af78e4fb5b01e8c1cf77f8ddcc4bfc634d5c8f9f24eaba66eff5c6181a56327b931fb8cd7c34b703fd5a15b3202f262a06aaf48b8345b7d400619dc8b6d7c94a877', 'category': 'Other', 'description': \"The sign is a yellow diamond with a traffic light symbol, with the colors red, yellow and green, and a rectangular sign below that says 'AHEAD'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2013.0, \"x\": 371.0}, \"hi\": {\"y\": 2256.0, \"x\": 477.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5247: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:0b13601555a43a73b51c631e38e7bcdb:00110060\n",
+ "Processing image 5247: timestamp=2024-02-22 16:21:58.252573+00:00, observationId=o1:0b13601555a43a73b51c631e38e7bcdb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \\\\\"AHEAD\\\\\". This suggests that there is a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2445258010517467, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:0b13601555a43a73b51c631e38e7bcdb:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.252573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b13601555a43a73b51c631e38e7bcdb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=565c1b38203929f32f02ec735a5d7fed2704f5ffffb81066b8ff3611c0d9b02f757e86e492a4aacab144454ed55f935856e63c036559df8965a2f3ab7b35aec28b4a6291f15a105f52e67564e4344e82529893edd1a70e8b3c82528c8edd0562de254e7db4a1985c6f4b25a66832aa88449fab8e4b2e806d536426f017d46614dbae0c891f0b21c9dbab8ec5a8039d0e4658e19afc6004f5e8c921afa15005ecd941997cb4f4238780efdce006d2db667f0ebcc32d24ffe1c0e4f44819e13fd48e633b671a83b2a2a4491b44235add2946aad3c7d9f4bcf7ad8bd30f72603fb6980ad68ac776bca3f7c7b3c40fe01490839e7127c296a91d290eb1b13ec1f2e2', 'category': 'Other', 'description': 'The image shows a yellow diamond-shaped sign with a red, yellow, and green traffic light symbol and a rectangular sign below that says \"AHEAD\". This suggests that there is a traffic light ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2022.0, \"x\": 412.0}, \"hi\": {\"y\": 2261.0, \"x\": 512.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5248: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:a23288737bc7679a444820779f92dc8b:00110060\n",
+ "Processing image 5248: timestamp=2023-12-19 16:03:35.656311+00:00, observationId=o1:a23288737bc7679a444820779f92dc8b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a traffic light (red, yellow, and green) above a sign that says \\'AHEAD\\'. It indicates that there is a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13333508938173705, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:a23288737bc7679a444820779f92dc8b:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2023-12-19T16:03:35.656311+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa23288737bc7679a444820779f92dc8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3418d6487fbc2abcfaeb9a2acc0560d3f0fdeb7e88d5e72f8c49735963e512a60fba51e38265c784f46152521c2b440b5a1b39a2be1a8eea2e881c85a853b0abc82d0434a9501a622f46b51dfbfb71c4b7cb73350d1ab0e68aee9bc800bf3316ce3fecfea22a3a53de02ebaab5b49427f266358dde623b0790d834a89622f82e36952fa248ecdf4f0427cc3aa90bed38cce6657c9b852570c4cd1d4e2266e4e663f1275d1ea22fb40441462c011c4d579aa294a8c688a85538e63882b5e43ad1971416f261d8a0541186dfd4d7cd8e671d807cac86d7c3ec470b5314c21d1173a83d4c2ac49833475f85c4de6adff9989c59de7f6f3cc786e05f25e6dc59e85f', 'category': 'Other', 'description': \"The sign shows a traffic light (red, yellow, and green) above a sign that says 'AHEAD'. It indicates that there is a traffic light ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2896.0, \"x\": 3357.0}, \"hi\": {\"y\": 3127.0, \"x\": 3465.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5249: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:d72846c5e83f5655807bd84bff2dffaf:00110060\n",
+ "Processing image 5249: timestamp=2024-02-22 16:21:58.584854+00:00, observationId=o1:d72846c5e83f5655807bd84bff2dffaf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says \\'AHEAD\\'. It appears to be warning of a traffic light ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2539204316980698, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:d72846c5e83f5655807bd84bff2dffaf:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.584854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad72846c5e83f5655807bd84bff2dffaf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5bcdacefc99277ee4c33bfa849da6aaf3ee37977001696a100c2a68e62de8926807ba66fac969ac1dca7ea48d888043349cf78e378855296ba9a04beda8bb12369ea9c1228f49472beb29f32ea8a8ee5c35f2d2866db12a436d958f0a79d42a22c15bf7c4d7ccf34b9497442ab3285da0e65d2d3fe1591c5b02115191739746abe7052528229ac303044dc468f80de765d38ecbfd9c16afdff43f232c0a29f10db95d1a1cf01ac82703b55f9d7c7ab947a72cc402f629335a7b5cc9de70157ee734b52808e10df9a78f07a9d1fe7cfdb9f97fcbab4ad10c227ecdadafd17f3e98aa7eadad43acb8aafdaee68ec518f822fe9344f65e02f4c974db3a49537be80', 'category': 'Other', 'description': \"A yellow diamond shaped sign with a traffic light symbol (red, yellow, green) and a rectangular sign below that says 'AHEAD'. It appears to be warning of a traffic light ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2983.0, \"x\": 2655.0}, \"hi\": {\"y\": 3165.0, \"x\": 2781.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5250: trackId=t1:02f569f84e8299df2c07a78c3a2f177a:ffff005f, observationId=o1:7e6373d219334133a0e58ab09bedee39:00110060\n",
+ "Processing image 5250: timestamp=2024-02-22 16:21:58.252573+00:00, observationId=o1:7e6373d219334133a0e58ab09bedee39:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word \\'AHEAD\\' printed in black. The sign warns drivers that there will be a traffic signal ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31616458892822263, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3073, total_token_count=3173) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f569f84e8299df2c07a78c3a2f177a:ffff005f', 'observationId': 'o1:7e6373d219334133a0e58ab09bedee39:00110060', 'geographic_point': 'POINT(-81.9913204671173 28.0622209082848)', 'mapsURL': 'https://maps.google.com/?q=28.062221,-81.991320', 'captureTimestamp': '2024-02-22T16:21:58.252573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e6373d219334133a0e58ab09bedee39%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55356e8df3c25b567a4f261731f307dee64fbc4bc6b3d9b53346c37d994a4296aa17fc29b08390cf9d17026cc50d64f9dc4e82386d05c2a28d60f9a7b7716644b9fbb34d6119922ee7deb6f390c9452086a4e3ee586e0d6a69ab1d1aa2156d540358c1f6ed1a8b6667b58fef134af191decd7bbde0554fdc436f7830e218163fa6b1465cd4d25f835ef4bef8202962f6c1d8855152c74eb4686be3c0262c2249c39dfa29933aea5bf2176bf06a20c9b7ff3cd67bd0c0add0eae9eb5a8db540e4081a711e8af4c54cc6cf8fbbdaf31074b064718ff0bc54fc804152f1b0c2264ef86a855e911f84b8714337f1685e40006949a11b6f3c471b8c068696a260bb8b', 'category': 'Other', 'description': \"A diamond-shaped yellow sign with a black border displaying a traffic signal with red, yellow and green lights. Below this sign is a rectangular yellow sign with the word 'AHEAD' printed in black. The sign warns drivers that there will be a traffic signal ahead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2895.0, \"x\": 3416.0}, \"hi\": {\"y\": 3132.0, \"x\": 3522.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5251: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:a08da8bd33602452244f12e0d02c19ee:00110060\n",
+ "Processing image 5251: timestamp=2022-05-20 17:12:07.078931+00:00, observationId=o1:a08da8bd33602452244f12e0d02c19ee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.\",\\n \"image_quality_notes\": \"Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5714760265131106, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:a08da8bd33602452244f12e0d02c19ee:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:12:07.078931+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa08da8bd33602452244f12e0d02c19ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=298bb808abac42aee66a1c817c14184082ee616fd18d8b5c69b3be852cc65ffb286944cdd4dd8503dcb934bf41476d11a6ec19f73933a6e75089ef6b00dc678d9710feb28c00022ed45e4da9300cc985ac4dfb15b67ac62dfd8b0ebcc2d5dab70bba5d60efeef76072f651af091a1a880c768a08ee58a45ba18a97cb07109d17ee90c40305e5ccfb6cbaa55660b82ee02f3aa93c122fcb0da3b9783f89ec3fe612e100710a1091ad0a9cb1056d47ad2f84fb69e9242778041209d91bb21d169d5cf43e11fe343da4cbfacd781e7036542bafd0f9dc04c4fed3176d66dde1240ffdd5666abe60d7bd54bf8faa81c7027bf3eb26b36551f008b58506948b68b537', 'category': 'Other', 'description': 'The image shows a traffic cone, likely indicating a construction zone or a hazard on the road.', 'image_quality_notes': 'Image is blurry and the resolution is low, making the identification difficult but I can make out a typical traffic cone shape and colors.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3505.0, \"x\": 1851.0}, \"hi\": {\"y\": 3562.0, \"x\": 1877.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5252: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:23213ad872a1fd663d37ec270aa0d7c2:00110060\n",
+ "Processing image 5252: timestamp=2022-05-20 17:18:00.505020+00:00, observationId=o1:23213ad872a1fd663d37ec270aa0d7c2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange and white traffic cone. It\\'s likely used for temporary traffic control or construction.\",\\n \"image_quality_notes\": \"The cone is partially obscured, but is identifiable. The image quality is poor.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4067239284515381, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:23213ad872a1fd663d37ec270aa0d7c2:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:18:00.505020+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23213ad872a1fd663d37ec270aa0d7c2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091515Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8e8331b7c76b53af4b43f576eaa92333625a315e06ab5335f5e126f39f2ba6cbe5f211d08140c25d99bb10b7d5a1075fede23be0156426d32f1fb08964ff68540785ceaa6d68425a1e3b49d2d8a3d7d0ca989a5b3b4a65757d1ac44d83d23fdeb00350f078ffb53ddc77be1f5c3a4eb63ba09473cf35087a28dcac8dc9df38892a3d4cdea4982e151d2d80cb02a76da48d2531d4e514e43d3416b77ab792c4ebc66d146e5e5c368869dda1eda68d741918c463bcdb2fe192a58f1e7c23878d17dd92e7137259eef03e85176b7738c012bf5764d87bdea331a489bdf3928757df0b5a9736f56e8b522622ee70e98582f9e175f7ef838caf5177da71893f507e7a', 'category': 'Other', 'description': \"The image shows an orange and white traffic cone. It's likely used for temporary traffic control or construction.\", 'image_quality_notes': 'The cone is partially obscured, but is identifiable. The image quality is poor.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3382.0, \"x\": 1107.0}, \"hi\": {\"y\": 3431.0, \"x\": 1133.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5253: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060\n",
+ "Processing image 5253: timestamp=2022-05-13 17:06:06.310669+00:00, observationId=o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains an orange and white traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09658198697226388, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:57db53a16c9a8b430ec1c7a9ca233b90:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-13T17:06:06.310669+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57db53a16c9a8b430ec1c7a9ca233b90%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0d637e4459180065f1afa1c4f1d86524b686bb1870deda98bdfe1d1cb94c174d2dfe12da82412fa663f6cb984acbda844389b6c8ba7b88aa6db8bb1ac0e038a5e3c6b55d68961fb1cb19aa66b2882b75feff3e738867ee714a639889c0911ddabe9b88e8a7e9f105486bf8b5fe5509dddba4de48a3c8caf3486518e8e440612fd221e083aa25f4c28375cf45fcdbcf0a7bb33f8eccb33375c366645cdedd770ba861dd68d887d8b95da8ddeb8eba81db54291c6f16020fd865424cd3855303f7301e6583c0fb4b9ac79fad6ae830576da713734a5dde4907bd8eee6f603aea2a7b720f0c1e03bb1ef8269177619f213122cc906a327e1043ce14d8e5c774b582', 'category': 'Other', 'description': 'The image contains an orange and white traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3586.0, \"x\": 2548.0}, \"hi\": {\"y\": 3667.0, \"x\": 2590.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5254: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:40dc529b38200893d1e6fdf1e0694c3c:00110060\n",
+ "Processing image 5254: timestamp=2022-05-20 17:18:01.573019+00:00, observationId=o1:40dc529b38200893d1e6fdf1e0694c3c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, typically used for temporary traffic management or hazard marking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08074200342571924, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:40dc529b38200893d1e6fdf1e0694c3c:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:18:01.573019+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A40dc529b38200893d1e6fdf1e0694c3c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c0c5cdd3638d227cc26b923a5148eaf63872da6bfb1c5a2c7a64312a325cd90792654d7f678941b571f3ddb4f6b5e69915ac4f545d10a4aad54b2ff910311d496c3546c0823d01322490f6c76a2652751ef44ed538dac1d66cf6c0bbd51c4e7f43104c4701ae32266242d31e0d5fc2f1f075534d204da1f900030fad584423ae5ee0973dd51129fa67de4bbd299533886b24703c8ac90301303af6c3b11da80e6eea8ae0f3363ce572f87b6e47a619f5a0c578541757e5ada8c1d856a050a84053582b7e2c051588a94031d6d6c922536ffc3e34d4577511e7172db97e212e1942648819ce009202fe09b117c8cc184107145d27329f302032d3d1184707010', 'category': 'Other', 'description': 'The image shows a traffic cone, typically used for temporary traffic management or hazard marking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3558.0, \"x\": 1883.0}, \"hi\": {\"y\": 3639.0, \"x\": 1927.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5255: trackId=t1:02f5942a2e65b49f56e29b51c5bba070:ffff005f, observationId=o1:51e0340a7d23e1e5dc27de3d250e631a:00110060\n",
+ "Processing image 5255: timestamp=2022-05-20 17:12:10.270856+00:00, observationId=o1:51e0340a7d23e1e5dc27de3d250e631a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"The image shows an orange and white traffic cone.\",\\n \"image_quality_notes\": \"Image quality is poor.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1309324398375394, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)'}\n",
+ " Error classifying image 5255: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 181)\n",
+ "image_report to be inserted: {'trackId': 't1:02f5942a2e65b49f56e29b51c5bba070:ffff005f', 'observationId': 'o1:51e0340a7d23e1e5dc27de3d250e631a:00110060', 'geographic_point': 'POINT(-111.859440717516 40.7465614370369)', 'mapsURL': 'https://maps.google.com/?q=40.746561,-111.859441', 'captureTimestamp': '2022-05-20T17:12:10.270856+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A51e0340a7d23e1e5dc27de3d250e631a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090916Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15d8262a3894e2a539be340dc0e74a517af7d8d3355f9ea5867a3d77f23f57c4df4f48bf91df0e0d9b74c3d1ee53bc8170d19e10c1ff6afbff1d7377e49c7d149e44c0f4dc9e86d29be6a772fc2c7b740097ac67a05d38f431d28ad91a1de7089b166853f3fa10c90bcc6c1a3b60845ccaaa04b218a28c49d45ca38e2a6f812d2c2b936b66abf68af99b7f96903cfd820bd65478c722ad737f6cd4916f31afce5b0941f87c9de9ff0bb18717d8e8e2089b5e2cb72362079671390ebd7a0f2fbb4f3a59d7bbe9857ee526fc7e703033a9f0bce4eab37ad1484952269a5758402ef44e39ca846633d49b46de7d296130c5c18f0250b0eae858267c2cbb2b7153ed', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3478.0, \"x\": 1758.0}, \"hi\": {\"y\": 3537.0, \"x\": 1788.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5256: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:2e7824de64fc24b491877dca0426ad04:00110060\n",
+ "Processing image 5256: timestamp=2024-02-14 14:54:35.913596+00:00, observationId=o1:2e7824de64fc24b491877dca0426ad04:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1997201225974343, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:2e7824de64fc24b491877dca0426ad04:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:35.913596+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e7824de64fc24b491877dca0426ad04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092815Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f9f78b609b40f759842f4e30a88de52a0fc0a4077a2def53ee4951738d7a026b6c4a23d659bbf4189780ee131bc1dca2c7ee53efd01f2673bbf7cd09814318204488a6a7bfb812f15d4b71d4d829c4a523deee8dd7e9f1407d94369bd081a4d74af11f20058b7d0e4df8cb7199c4f8cdf56d23e20326ac2159f56b5659d191237d679da1ac6850f2c7eaf7296382d425581ab80eb1677202630e0099c26fb3c6e10921045c5ce98bf6416f56aac1ec7323c3b970bebb1fc0895e2eb3475528ea0c68ba54e8b0f4fc5f7acf34ee670cf00aa5e6074848074aba6d1b5c81527a0ec521080810857ff5fce7af739b3c95b9364924e041673b712ea7374fde52700', 'category': 'Other', 'description': 'The image shows an orange and white traffic cone. This is used to direct traffic or mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3468.0, \"x\": 3340.0}, \"hi\": {\"y\": 3612.0, \"x\": 3387.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5257: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:3d04dd544f50a7898b0aa63a8801c815:00110060\n",
+ "Processing image 5257: timestamp=2024-02-14 14:54:36.513683+00:00, observationId=o1:3d04dd544f50a7898b0aa63a8801c815:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40038397577073837, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:3d04dd544f50a7898b0aa63a8801c815:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:36.513683+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3d04dd544f50a7898b0aa63a8801c815%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=54a1447e230e37e62e440fa2439fef3cda23b9a98fb46f242a7f5cd50df5395a109d2d866b6f3f0921b254e3867e126e4115f26b76c02f24f3a84eab62fed07d8c7702ad0a176816327152ffa2cdf30f6201a5c9cbe8a6fb4a50968331978ee549c111d00ed6ca0b7916033e98f369d490ad39be05cd97d94b5b4ce9c79053097dab4f22a6d3c2fe6606521410224a20d0ee8a178eb230e8bb6b05dd803aa20666c9478040430aefa1361bdf4e65f9fc359adf6f7adbace13281938df513831872174d447859428cf76186adc36d28cff7485bd9fc884bd083d324f0a030fba9d86ded71b49695eb91a63aebc61d43bd4f41580e1a630a493a56e57a74fc4323', 'category': 'Other', 'description': 'There are two orange traffic cones in the image. Traffic cones are temporary road safety tools that do not fit into the specified categories.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3418.0, \"x\": 2263.0}, \"hi\": {\"y\": 3544.0, \"x\": 2298.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5258: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060\n",
+ "Processing image 5258: timestamp=2024-02-14 14:54:36.213615+00:00, observationId=o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange traffic cones with white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10890115771377296, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:e150fdfd5ea72499ff631b9fcaf74a60:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:36.213615+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae150fdfd5ea72499ff631b9fcaf74a60%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a02e25a867e09a4cad2ae8d61f8bc46bed4df62e1593526487f11a6a69955d9a26722fcceb4d703477183d47362e683bad6e96b87f3e6eb98e17531d9272727f627389be74b4f7d65c611a433965b392093a08320b7f0b6baa4d8a8661ea14638324717fac9543a4ac26a7169d57750400390b65106d788aa34538b0e8bd21d572030aea12158df0f33c6d2b7640bb551a7720313d2b085d988e10792ef967bfa9afe6235d440c55eaba1bb27f2561e40f1319b8e884ec1e0aa2c426309ef63b28effa69dd4ae5f41518b012eb92f5108fd0f4ae2de0a0cf04faaad48e00290c904514d7ad8e00b2473232d202d9ddddd00fdd00260a46f5a2ed48b27d380aa5', 'category': 'Other', 'description': 'The image shows two orange traffic cones with white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3474.0, \"x\": 2784.0}, \"hi\": {\"y\": 3606.0, \"x\": 2824.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5259: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:3b2531e8d194455129cc3d840370e23b:00110060\n",
+ "Processing image 5259: timestamp=2019-01-25 14:49:00.346213+00:00, observationId=o1:3b2531e8d194455129cc3d840370e23b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1726045483037045, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:3b2531e8d194455129cc3d840370e23b:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2019-01-25T14:49:00.346213+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b2531e8d194455129cc3d840370e23b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=983f4e488d845df94b15f350bb370aaa661df6f9d6097c5ce29ae14c61c416d221326beaaebe64f967017b3d093e58efce03fec33bbd8a1da3aedfc2b42d93b3e1df3d4a195ff0e92d998c6ac442519a064cf35e9e23157b2ebf816a66ddfd566076760838d3eefc1da037def2f77aa58bb67853ce213d2459236effe1ffe4ac56a46d7f3e0471d500ac958c8257dea35c283bb33c9342a5acdd7c8d8a5b37bdeaf9cb5e96f79890659389d53f009301abc58a10e844c62f1eea2804db97daa861f4972bcb7f65f1c2294e7278a6955468a204d82ab67c69eb7cb5401ba771b8e8a7ac79cc6ab58731f6a8f114ba87847361f9365f70f708bfe63281af86d80f', 'category': 'Other', 'description': 'The image shows a traffic barricade with orange and white stripes, likely indicating road work or a hazard. An orange traffic cone is in front of it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3418.0, \"x\": 2129.0}, \"hi\": {\"y\": 3520.0, \"x\": 2165.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5260: trackId=t1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f, observationId=o1:ae4cc1f386ea6d45b19f77868e704457:00110060\n",
+ "Processing image 5260: timestamp=2024-02-14 14:54:35.913596+00:00, observationId=o1:ae4cc1f386ea6d45b19f77868e704457:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is in the middle of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12347063223520914, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f5f5eca57ff8f62b32826dedaf4fe6:ffff005f', 'observationId': 'o1:ae4cc1f386ea6d45b19f77868e704457:00110060', 'geographic_point': 'POINT(-81.9574876736719 28.0512583129911)', 'mapsURL': 'https://maps.google.com/?q=28.051258,-81.957488', 'captureTimestamp': '2024-02-14T14:54:35.913596+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae4cc1f386ea6d45b19f77868e704457%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=520b3ddbda656db4a34e10f4167ff894b2e4b75de142ae6bade60a6d69532de85ad32c79e4c65aeb16ea83258c3b6fedad597b4d6b764a28228e27aa6ec2c83f8b01d7ed6a0ff402919bae11e24375a4b0365f3f2e9e70fcb0e5468b6170e43ed97e4fd4d12423eddfd9eca0e4b05c4b37219cacb2949ec44a6b1c01ef5b9868e5fe6ab7663e738fa9c1499f61b655c1bde3a6c844dcfbcead563d3b06d389576ef6200edce33624032b0158fece62dd29fd2ccec0b9c0d523cc2a1e4cf14b209742b00fb35869ba6eea2ecda7415c111d89c787c9892885bd6bcd7fa068927ffc91b7914de1fdcb117bd92d3738da58f97da5e7ef97f3ad294c61979aa7d179', 'category': 'Other', 'description': 'An orange and white traffic cone is in the middle of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2595.0, \"x\": 342.0}, \"hi\": {\"y\": 2744.0, \"x\": 391.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5261: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:6c26572b8721f68eb4e328e7ef096503:00110060\n",
+ "Processing image 5261: timestamp=2019-01-24 18:24:06.493539+00:00, observationId=o1:6c26572b8721f68eb4e328e7ef096503:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07765698432922363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f', 'observationId': 'o1:6c26572b8721f68eb4e328e7ef096503:00110060', 'geographic_point': 'POINT(-82.0402108243122 27.9941081815067)', 'mapsURL': 'https://maps.google.com/?q=27.994108,-82.040211', 'captureTimestamp': '2019-01-24T18:24:06.493539+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6c26572b8721f68eb4e328e7ef096503%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ea2daf56f9ecf596197b0214de333966deeb6b4c6e17e4bf939630e899eb3c864204c5bd4c8fd9878d9063f1ecb80fc5fe0446a40b66e4d8a3956aca1753d81d827eb288739d573036fa5304a473863a0143cdbb2edac996e7ddb2399145e38208eb18e1ddf7b60e870c3a3eb14bb293a316d4be56f08efb1d71737a2003d9d605a94b264225bdc6d148f8f5b70388ad063b6db00a80c2907e02a5821df76010ba4f2c16fed3f9f8eab6716f862ed8daaf0d7571acbc38462eee97b64077f475337e0180247db2758ba9c010d17d3f602c6a8360694583575135eaff043d35844162bc7af06e7c663932142a40a85c88472338c47a83ee13339e51a84bbc4e8', 'category': 'Other', 'description': \"The sign says 'NOTICE SHIPPING RECEIVING VEHICLES ONLY ALL OTHERS MUST USE FRONT ENTRANCE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3287.0, \"x\": 1766.0}, \"hi\": {\"y\": 3389.0, \"x\": 1879.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5262: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:3f10fc45341f4003cf7967058be749d8:00110060\n",
+ "Processing image 5262: timestamp=2019-01-24 18:24:08.217512+00:00, observationId=o1:3f10fc45341f4003cf7967058be749d8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10624274942609999, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f', 'observationId': 'o1:3f10fc45341f4003cf7967058be749d8:00110060', 'geographic_point': 'POINT(-82.0402108243122 27.9941081815067)', 'mapsURL': 'https://maps.google.com/?q=27.994108,-82.040211', 'captureTimestamp': '2019-01-24T18:24:08.217512+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3f10fc45341f4003cf7967058be749d8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06507584fe412f58e1a2413325d5efa84e8674efcdb232bbef2745145b4ca6d14feb7aa77c58bc8ad6c224499145059e0dd81fda272c58ba4e168ac8b73c8277eb672f03592c791edcfe03c10adeeb63ea5642641d7ce4bc05c814d69b79873118a203a295044d7356c649610d67f81946c56d1af327717c47017bd8dae716f6cb6fb2d90975f5ea94f7fb4151561056a85b6540c31d301d8ce6a599598bb5fcaaf083a6a6d9bb6bb5d473e8e1780d022228d8c206a67d9d90701e51f349c387fe7ba72827f22334558f90c1c3f645fb1a16c3fc164f68e53b74d85bfa4806df4cd447eb59fd595cf36e79fb0dabad8a1aad8d86993026616b48ace8e196ffa3', 'category': 'Other', 'description': 'The sign is a notice indicating that the area is for shipping/receiving vehicles only, and all others must use the front entrance.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3344.0, \"x\": 1157.0}, \"hi\": {\"y\": 3448.0, \"x\": 1286.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5263: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:8e66aae0ecdcc9b57070085faf4ba232:00110060\n",
+ "Processing image 5263: timestamp=2011-04-22 21:22:43.296810+00:00, observationId=o1:8e66aae0ecdcc9b57070085faf4ba232:00110060\n",
+ " Error processing image 5263: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e66aae0ecdcc9b57070085faf4ba232%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82c1291342d9ac3627c21af49d90e57ca3f2be12b36babc9f512f4331f59138621d3dc291e51d713bf727b9c40785f4b6686992c86b2c7159733b89d973f31116be7cb8b92bcc66d3f7cd86ae5ecae881a3c5bfb3a134e662107a8fe71f2258063a38d27f9ee56d3f7d141fce6abeae50799a47a470338e475d2db8045655f50d8ec47d1688f3c7126891317d24a96b9977480be3a003950bb75c66610a45c6f1e586fa9257598e4d5d951c13ae117e1923168e8f286c617239547ae085e57f56eb82670a5b0628f89566ae1d82e0db3714b36b04046850681416c3ba4c509c8827a14d9ab8e372dce6dd89763d1ffa3e65044c57929ab8a00e4d69efd49a991\n",
+ "Processing image 5264: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:3b34101af5a29415a187912e40446328:00110060\n",
+ "Processing image 5264: timestamp=2011-04-22 21:22:59.101431+00:00, observationId=o1:3b34101af5a29415a187912e40446328:00110060\n",
+ " Error processing image 5264: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b34101af5a29415a187912e40446328%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47329839c32df4454ffac2572fe6e886b88fe652dd1eb178a7200ff44aec84a469a18f650ae76b5932a868651b60befcd4e72098622000e0e43b02b837f38025fc16271cc64c9105f2a86bf6853d123e9d14145db787e57bb1e2d043e854d7213ddb6fb5782cca6d9f47913bef0264e6dcfb207393a5218320f976dd1030c0c53e5209905c2e37c3d65a56fcfa4cb9f510c1bba52e3e93aac60d82951e68d34dceb494375c520b117a24a2ed21018c8b7e9c4d34eabdd94adb9994dc2cf93449bbd3b49c06d8ed4bec814c07241bb8d06553b60739b426495954fec4026f79b5b1de1c27c33c10ac9f194fb75cab4d6547b1f1db59600f6dcd8009e89ac37975\n",
+ "Processing image 5265: trackId=t1:02f614e2cb3b3f35ae0838c9f5851672:ffff005f, observationId=o1:5c358ec4397abe20d198079c23f1398b:00110060\n",
+ "Processing image 5265: timestamp=2011-04-22 21:22:54.192517+00:00, observationId=o1:5c358ec4397abe20d198079c23f1398b:00110060\n",
+ " Error processing image 5265: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c358ec4397abe20d198079c23f1398b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6b292e1010391ff29aac5c989a62b36108f4c24c4e5845cbc019a10a8886ff84e317f18bd3ca71a94c99f14e9082a82e35b189623527bf15fb3c3ead15700b5c50525a0c9b2c6888aa783be890d28d573c72a33e3f1a2d078c26386e92ce13b81dee489e327f998247e5e8dc0cd09b1452c37d06be413a9bb5d71dd48012320f08e4897f31bc8f8f154a34a9f0509c40dfef6671b4f0ea25b9bb9f4a95eff9d38fb578af2c304089c4d23ca79f91db32ce66c02658d55da978db74846b194fa5f91bb4a18133d33250fd70ae13b2901674ebfea7736281eac25bfe0bcd81a194662ed7084368189d55f37ed016f375fe5c5d650e232ce5b9da068c02b2cc9eaf\n",
+ "Processing image 5266: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060\n",
+ "Processing image 5266: timestamp=2024-02-16 21:05:40.546937+00:00, observationId=o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense and includes a phone number, suggesting it\\'s a parking regulation sign.\",\\n \"image_quality_notes\": \"The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44748988193748274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=113, prompt_token_count=2041, total_token_count=2154) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:8cc3a1b278e1dfffe95257aa0eb87248:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-16T21:05:40.546937+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8cc3a1b278e1dfffe95257aa0eb87248%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=350f40d715b5bb391336545a299d1e8409e8d7bbe9f0c25a1a66ad1ac49248b3776ef99dba664f2f199a131f339f47bb5356fbdcb1103526e09f06fe8315b93ca8060d4f7d8e177e5a319f8ba89fbce841ad588b76b71cce9a1ae6abe0e610ebb29d905e6fd3beb9e96b48a476e56e59056b019f8fb264eb7bf81cb8ba95d52e24aa63802398016bdefe8d3f63e736442af50d2074a22fc8ca46eb0727f7538d9b4240d8c7db3107f3f42ac82d93b69b7732887afc8d4e77e343443fb9007a5bace7333d6ded931af4e1280e6c65faaa9f2b4b196bbddd9f5c5b849a6d620b2e4fdb43551cb3ad1df97452a6a5daaa2f18d8e5d1677f23f12a73c3127dad9e96', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense and includes a phone number, suggesting it's a parking regulation sign.\", 'image_quality_notes': 'The image is clear enough to discern the main details of the sign, but finer details are a bit blurry. The primary message is legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3435.0, \"x\": 2960.0}, \"hi\": {\"y\": 3623.0, \"x\": 3046.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5267: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:422244e4d2a255f9ec1917e210232109:00110060\n",
+ "Processing image 5267: timestamp=2024-02-20 16:16:39.376775+00:00, observationId=o1:422244e4d2a255f9ec1917e210232109:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign that reads \\\\\"TOW AWAY ZONE\\\\\" is visible. It indicates parking is restricted and vehicles may be towed.\",\\n \"image_quality_notes\": \"image is somewhat blurry\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2657577196756999, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:422244e4d2a255f9ec1917e210232109:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:39.376775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A422244e4d2a255f9ec1917e210232109%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091343Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3160b3c55b9883bec5212f3a5b17ea6a5614760c968a8b67251d32a6caf959d7d43ea1b8a61a1da2a75373020ce964080fd64d2a5c6484318e81f2f6484a61b9969019a285b53d7fb031681a3cfa2e76be7fe41d87592b86b693ae4e8e548b2aa3dfbff83d47afa2e9b51f39bd5176c259b3ba8116e60da520bda42f5e0de88d29ff45ddca071733b2f854ef57e9467e10e919651356de0e36022666d3bd77d3ef13eab12d6d0fc23291f5a9d7eaf5a8b70306c397050034168897a1e45a740aada4b2756c0ce86ce5c81856cf7b16b7c3597ae888e84e50cd25fc76f092853cc8aed17b3cf369737d5903899c9408c372a6b0e061c2b3ee664cb1877767f54a', 'category': 'No Parking', 'description': 'A sign that reads \"TOW AWAY ZONE\" is visible. It indicates parking is restricted and vehicles may be towed.', 'image_quality_notes': 'image is somewhat blurry', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2369.0, \"x\": 3321.0}, \"hi\": {\"y\": 2455.0, \"x\": 3384.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5268: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:f987ddb5b3e77993536aef1a7b939bba:00110060\n",
+ "Processing image 5268: timestamp=2024-02-20 16:16:38.069115+00:00, observationId=o1:f987ddb5b3e77993536aef1a7b939bba:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a \\'Tow Away Zone\\' sign, which falls under the \\'No Parking\\' category. The sign is rectangular and appears to have text describing the parking restrictions.\",\\n \"image_quality_notes\": \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text \\'TOW AWAY ZONE\\' are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3030189446040562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=493, total_token_count=605) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\"}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:f987ddb5b3e77993536aef1a7b939bba:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:38.069115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af987ddb5b3e77993536aef1a7b939bba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=930b0896ea45b14b9d0f169e5302ee1d7a893ca85b1bc5596dacf70dc8203cde2edd830d27b955d47c6c20b8a6655768f46df1d22ffc20fde56f49887e831afec560367cc969f0ce54dc3bdad0c77b4eeb99dca9110362209e08349ea15261a4d8598a29d06af812f3f67612f3e5ab92e9d5287e2d5776985a5cf67a6d4b9b673c266dd5e25fb4a02d1c4f1b1e7fa15ec30beec32bb73812bc916a2114f09b9cd1b5299589b740096702480aeadf4ca72595f781c49c818e71ee10a25b93c983c803a42f24f10687e2c99b8c1e27fdd19e4f77aee16f36d670f2ebc438fdc790146973e3329ac49793438b4f8b3876c056dc482c5acca9ab8095b448fe3f0d49', 'category': 'No Parking', 'description': \"The sign appears to be a 'Tow Away Zone' sign, which falls under the 'No Parking' category. The sign is rectangular and appears to have text describing the parking restrictions.\", 'image_quality_notes': \"The image quality is not great, making it difficult to read the details on the sign, but the general shape and text 'TOW AWAY ZONE' are identifiable.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3267.0, \"x\": 3578.0}, \"hi\": {\"y\": 3350.0, \"x\": 3622.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5269: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:eb9bd9340602c33c7af255e246155b70:00110060\n",
+ "Processing image 5269: timestamp=2024-02-20 16:16:38.069115+00:00, observationId=o1:eb9bd9340602c33c7af255e246155b70:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'TOW AWAY ZONE\\'. It restricts parking in the area.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21550013567950274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:eb9bd9340602c33c7af255e246155b70:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:38.069115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9bd9340602c33c7af255e246155b70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091627Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7982b2b448e9a9c1a8fc5ffc50c5f4525693ba649537dd75507530edaabd7a937db4b844d3246477935b00a1159bfdad9b482fff9c52c5eab0e6934f46bf7eab282be56c253f773c863f0fcc58f14f385bc794345ee8b19358d5f1e5d32bb7b7ed7e2de570b8760520dd751d7532425e87edfc2122aaafd145f6f4800c4ac38b461d9c91b3683e8ee284e2639abb387d6e9ce256d986ccddf012e5e77be50a9b25d6996bbc879c746b85797a9ef891e602f373e1d507bbef969474ee7b0ec1b2adc3db2cbbada70063db9e5c5716396e3bbeb841e69739df5083b732bf187f22e3ba4eba2fd1d439dc33c7aa81ce698e10cbeee9b1f79ccb6d802d25dfe05dae', 'category': 'No Parking', 'description': \"The sign reads 'TOW AWAY ZONE'. It restricts parking in the area.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2384.0, \"x\": 545.0}, \"hi\": {\"y\": 2466.0, \"x\": 596.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5270: trackId=t1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f, observationId=o1:786b98e995fd517622a253b2be393c03:00110060\n",
+ "Processing image 5270: timestamp=2024-02-20 16:16:39.376775+00:00, observationId=o1:786b98e995fd517622a253b2be393c03:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a parking regulation sign. It says \\'TOW AWAY ZONE\\'. It restricts parking and indicates vehicles may be towed.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is somewhat readable.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3568883274876794, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=493, total_token_count=579) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
+ " Error classifying image 5270: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
+ "image_report to be inserted: {'trackId': 't1:02f6fd33a8f54efc45ffbf642f6ea624:ffff005f', 'observationId': 'o1:786b98e995fd517622a253b2be393c03:00110060', 'geographic_point': 'POINT(-81.9594187393446 28.0493018907209)', 'mapsURL': 'https://maps.google.com/?q=28.049302,-81.959419', 'captureTimestamp': '2024-02-20T16:16:39.376775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A786b98e995fd517622a253b2be393c03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93f30405e6c0eb48d03dbae21a69d3d4ef83f5e788b2a75588325a2bd55d30970efcd6963dc4268648c2e7386a9319e86c8c3863021d71260ec0ca890f70a68099ba58ea5e889abb618f993327f7ec669c25d080651fd278caa3422cdc39b39e592331ef272c755ef4b2af69e7e2f20542730a089738c5b378982826619b2f821f9d541b2b6ec92549d8edf9f4657193a8cd6ce61e62705401b07ee0237c9460df09167be744df223cb8e3f711b06f09c9a8d5beacb029e10478f61b2b88d2a0950539c45aa373dac54422fc04b81c024ecd7dcf1c0bcc67b9f9284c09ec94cab4573852d25e785c19c32ecefa2755349f7d1e5d2ae462433caa97575e8d88c1', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3250.0, \"x\": 285.0}, \"hi\": {\"y\": 3331.0, \"x\": 341.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5271: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060\n",
+ "Processing image 5271: timestamp=2021-01-29 19:36:45.532145+00:00, observationId=o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.\",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.295132589812326, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=493, total_token_count=594) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:e640d1d0dd358bc89ca0ecbe215eb2fd:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.532145+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae640d1d0dd358bc89ca0ecbe215eb2fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a67364e12c88d406c237c3e8fb9187b22561e5c34215eb7beb56388b36e6cd52bca3629eefa13bb25e02b5a2698a16aca65478cf212ab7e5651e2cc7866ea2dc55d4aacfc76f05df8a314fb7474aa37d6f020c86a61dc457263133f8ce97c7361d74e4602c2df9d468be5107b74f4cd8565f203da4b0baf3e414762aed1fe1635eae8a66e4e7d6fb1ac0aac35b74d63a18d4df8185ce8ac76f457fb9e7ea9b245d165a6280b3c0e46e0cfd44f9c07a36bda1497f5d13b0c8f049e3a49e1bd1d5b6a9c636ca949aaf19a37d5456763416f3b9134b3d58169278bb3f95b85a5cf6b840d6877e0a660d4e17f47b116baf6b2c406543fcf0c43d03900759b8b7a15c', 'category': 'Turn', 'description': 'The sign appears to be a diamond-shaped warning sign indicating a turn or curve in the road ahead. It is yellow with a black symbol indicating a curve.', 'image_quality_notes': 'The image quality is poor, making it difficult to discern fine details. However, the general shape and color of the sign are visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3011.0, \"x\": 3609.0}, \"hi\": {\"y\": 3051.0, \"x\": 3646.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5272: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:911cfab425884aa05698139e2f0a4b62:00110060\n",
+ "Processing image 5272: timestamp=2021-01-29 19:36:45.884050+00:00, observationId=o1:911cfab425884aa05698139e2f0a4b62:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. \",\\n \"image_quality_notes\": \"The image quality is poor, making it difficult to discern details.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3685570650322493, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=493, total_token_count=579) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:911cfab425884aa05698139e2f0a4b62:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.884050+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A911cfab425884aa05698139e2f0a4b62%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1a85887668d7fc0fc1d2fea89f925bcd88b7f2499e52bee0732806899a8654df2080dedb6f8bddc2eebf8e68582c74b67305fd3cb22e789aab5a84c2b762c8f0f2cea7e72440b2cff6b3025e18c0fec06e2e9c1470f901ea93036a95dd42a90abeb71f4660caa4a40e9fda8e19611468927555df73f0ddf0bcc335b4a1c47d95869d3a3147d5e12059b46906c34e20fb498f949b2b8ca28f9b69e81df7ae3a60a525b52e06afb40f9d8095fd35d1f205f589ce5c4569ef84a94f92679c15f4d8f9f330f346c3ac966779c4d4469b8a05250c57fa596f8909082e79f0d95345c773b5b89865a0fdaf05b012d3b33db696b07dcdcd6ee9d11700620452531674a6', 'category': 'Turn', 'description': 'A yellow diamond-shaped sign with a black arrow indicating a turn or curve in the road. Given the resolution it is hard to tell which turn. ', 'image_quality_notes': 'The image quality is poor, making it difficult to discern details.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 3603.0}, \"hi\": {\"y\": 3077.0, \"x\": 3640.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5273: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:e755ca7f3d7e3d9da933551bd7f78274:00110060\n",
+ "Processing image 5273: timestamp=2021-01-29 19:36:45.884050+00:00, observationId=o1:e755ca7f3d7e3d9da933551bd7f78274:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.\",\\n \"image_quality_notes\": \"The image is blurry, but the shape and color of the sign can be determined.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45296623133405856, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:e755ca7f3d7e3d9da933551bd7f78274:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:45.884050+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae755ca7f3d7e3d9da933551bd7f78274%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d28f60cdbba79cc44c6f7d7121b958ae1771693d0e299df11be6140e70be81a21dd75e39a39f1934d7b2a996189cd85ca1cbf7589762c37b4dcd5f25c9be28eb9aab92050a8f546b020e71528028c95f5c51f057bf98b03ad86c17abe3b9a4fd6228683b64cc4c96fa64131fb04e8b4c57b5236713ea6ba80f34f91997f7d9b8b91c6090f20d130e6e43c248f94902597be290ceac49053c9348060666eddbf2cfe8821695cd3856e33a2ed10e405a3b44cec6ccf03d3b0d3ce78d02fa88d15393f064a29c3d53eb85e4eb5a0f58501f9b2d5bdafe22851aaa25a3e85657159925e410f83bcfc89e9ebcb8b45590ca658285491e361e72eed09d571a66476c7', 'category': 'Turn', 'description': 'The sign is a diamond shape and yellow. The symbol looks like a curved arrow indicating a turn.', 'image_quality_notes': 'The image is blurry, but the shape and color of the sign can be determined.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3054.0, \"x\": 514.0}, \"hi\": {\"y\": 3092.0, \"x\": 555.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5274: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:3389570e99ee3911ffc4a4c00eb2955f:00110060\n",
+ "Processing image 5274: timestamp=2021-01-29 19:36:46.579658+00:00, observationId=o1:3389570e99ee3911ffc4a4c00eb2955f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.\",\\n \"image_quality_notes\": \"Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.46020927010001716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=493, total_token_count=584) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:3389570e99ee3911ffc4a4c00eb2955f:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2021-01-29T19:36:46.579658+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3389570e99ee3911ffc4a4c00eb2955f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98f873a81b622a752ae21030134a79324aa5084de739d218fbec8ee0c0c3f29461abf81823be9d9032b59f089f4ffc18a617bd424793217580fe3eb754d93e6ee1c0d9377ca12213ac01570e801460a8e59d15e544afb2833de2492beddb6825619c3ab8d6ab6207e116c50c41cbe04a2157180159c3ebe1d42ebe6c24130caab2107bf20c690a1a46daac5e64afbc790dac87d478e092368e4f257e96a0b29d24ec8998bd34df87fb7d9839e3127a35042a3e62c52a712d4dbc45a0a3591148c52c4ea94cd03558efd7c600a87584d84fff25074687875b44c63389dc6b220b7d46572a0bc7727ff84578593940a588f370e70e22d7158a149a3866caa391cd', 'category': 'Turn', 'description': 'A yellow diamond shaped sign, likely indicating a turn is visible. The sign is somewhat blurry.', 'image_quality_notes': 'Image quality is poor, making it difficult to clearly identify the sign. The right side of the image is black, cutting off part of the scene.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3068.0, \"x\": 3587.0}, \"hi\": {\"y\": 3107.0, \"x\": 3622.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5275: trackId=t1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f, observationId=o1:c426865784bfefba0985c239d084be6e:00110060\n",
+ "Processing image 5275: timestamp=2023-08-31 15:34:15.792037+00:00, observationId=o1:c426865784bfefba0985c239d084be6e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.\",\\n \"image_quality_notes\": \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign\\'s specific message.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.41833297729492186, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=493, total_token_count=593) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\"}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:02fc7bfc9ccef0c7c3af513e7f5a3278:ffff005f', 'observationId': 'o1:c426865784bfefba0985c239d084be6e:00110060', 'geographic_point': 'POINT(-81.9690706312425 27.972641983769)', 'mapsURL': 'https://maps.google.com/?q=27.972642,-81.969071', 'captureTimestamp': '2023-08-31T15:34:15.792037+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac426865784bfefba0985c239d084be6e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d87a9a49e6425195b58c50ba95398c85c043889ff0fad10e9a8715617b541b0136c91c87a1095c2de5fc517ca8aa50efe0c09edd6c16c5bf5c2e0c153023b8a29991bef2dc09fae3410794b2234eb2d94aaf351004c468017a493a0b5b43cf4131d121f8b96fb7fb7ea1f9172a7055f18956262d4b5d34a4a4ad46995eedac4e020916dfb5208150a6fcab250fb962c1a6876554f01f7282bb8b15d48047a827f6c95815b80118bcbb7e78898dbe48df40b61ca4ec9ab8a6f5a87a9228abbcf7f85d573329695c96a1c9f0466be86924a3eff16153bbb7075182ce8d193c60473d06460ff22a2ecd61ae6f09175c7c7c8c15cd465d1092d9d6acf10220ad8ed', 'category': 'Other', 'description': 'A yellow diamond-shaped sign is visible but the contents of the sign are not clear. It could be a warning sign for traffic or other road conditions.', 'image_quality_notes': \"The image quality is poor, and the sign is partially obscured by trees, making it difficult to identify the sign's specific message.\", 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3098.0, \"x\": 3524.0}, \"hi\": {\"y\": 3145.0, \"x\": 3565.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5276: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:40f9939f0220f94731195fbe406b47d4:00110060\n",
+ "Processing image 5276: timestamp=2011-04-26 21:16:39.981958+00:00, observationId=o1:40f9939f0220f94731195fbe406b47d4:00110060\n",
+ " Error processing image 5276: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A40f9939f0220f94731195fbe406b47d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4f6fbd6ce0cc0bf75068748577b027a3b8e0b016f9543d8a26ca53bcaae6b01e1c6223e450db341a9a4e18b7e6cdf16a075e6d285ee992f32e40640211857590591478b25cbc7f166b5342a84326a8d82e242b8b268ec0b87b085d7b9c8c2501348bdad8ce05f10f306227bd785e13b99b010235ef2b04b8d90ad5b685874b7688d832870bf442e514384381cd0b7bdd333627b73662424ce2fc347849ba615868a3d1d877d1290636da109f82c3d810b5f4bb52c480aa56cb0f979920241703d0ab98cadb3dce015c6140a8f5130d58e260c79f1af6171d0c0a1974070e13cba04e72b4d88a6d1bc7d3902bcee063cb6683744f6adcf9ab21dc1258c56b4dfe\n",
+ "Processing image 5277: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060\n",
+ "Processing image 5277: timestamp=2024-01-10 17:45:35.695464+00:00, observationId=o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign that reads \\\\\"El Camino Real\\\\\". There are two street names on the post: \\\\\"El Camino Real S\\\\\" and \\\\\"4100 El Camino Real W\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30254813300238714, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2041, total_token_count=2131) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:2ccfe904760befe973dbdf98cbf8f7c0:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:35.695464+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ccfe904760befe973dbdf98cbf8f7c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c048c77028f07c0f6c7ffbb59a0d4ba161548c9751d6d386289a1f26ce46edbe93737839d4832bc56e7fc6bf5e7d62154ba71037fda535e4649bd05670cba57f6ce2dea54dfb26cb68697bd4445f72fe0ce446326822e20d16431fdfe0ab14ca6cda0c91f2650acd83bb7adc17c2936cc9cc1f154ae9ef7644673555c9c398137bb75e49e3f5e90b837058e8bcf2e275504cd2759d186711d5a9984980a47a1aa3cc8c17cfb181b41e5c51bc2b2cef8555bbcda4eb975acb6080f97a5273b01f934f6373c6eefecebd41a45596f6a5fc441e3d3a301953bf50c9f409a5e39b94949b4236cd32db2676d389056d77494f3e31ad46203bd1da6b1a71aa66b79cf', 'category': 'Street name', 'description': 'The image shows a street name sign that reads \"El Camino Real\". There are two street names on the post: \"El Camino Real S\" and \"4100 El Camino Real W\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2161.0, \"x\": 2906.0}, \"hi\": {\"y\": 2333.0, \"x\": 3607.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5278: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:eb526103f0ce9cf38c03cc57763909a3:00110060\n",
+ "Processing image 5278: timestamp=2011-04-26 21:14:37.553442+00:00, observationId=o1:eb526103f0ce9cf38c03cc57763909a3:00110060\n",
+ " Error processing image 5278: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb526103f0ce9cf38c03cc57763909a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092317Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=44b8a841b2a119422856b9edbe64ccdfecf5fe47730b983bbffbadf477477f24b325464813aba31658efe25b6d9124cc33f3e4e641057815967255979de94dbf5901586c2b4668a83d56efa5c875ee0713e839ef468b4520b878bf5c5458865e251be8383284fdac2ef94f19519d8bb6ce8e8e0a4113752a6335163b135a1a8dfe552c85c574a4b65bcd5856031ecb0a4f98442b0148b2c49dae293e10a8fa54cb60b3fa4e0e8d35ddb5a2b7f8c1ed741038b1e303f507ba686415e8ba55c16eee459bd65a60614557eb259e3de57ab2a4de27a54b3303d064ad2b534769487c42f782fbe68f933d355e369cc1846df40122543fed7a76024dfbe763cc355109\n",
+ "Processing image 5279: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:f525446bfbbfda078fc73f53315dd29e:00110060\n",
+ "Processing image 5279: timestamp=2024-01-10 17:45:36.519421+00:00, observationId=o1:f525446bfbbfda078fc73f53315dd29e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two street name signs. The upper sign reads \\'EL Camino Real S\\' and has the number \\'600\\' next to it, The second signs reads \\'EL Camino Real W\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3356810483065518, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:f525446bfbbfda078fc73f53315dd29e:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:36.519421+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af525446bfbbfda078fc73f53315dd29e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0d4a2062a72b1fe9b4c607ed5283e8fccc52ca83770c5bbad7aebd4b60ac9e56ecf80fe476f2a861521b7017766c9ac2148c15477348cb8630f10a7988016b772f9f7a2aeaedb954c532f5491a3f1a6ba192ebd58e75e37798d8e6b9bc64f2d13bb646325e6f3434b68291564cb29cf5c4b0a7efc07d7d9bcdf965547abde12147c6f5696e908f05680b9e19106ac557a7c1fe55a3ba2bc4d966fb3ea44379c67b56a3d5fcb7e4ec0910e03f5de09519104dee63bea8a53483a54a449ca22b39a5fe5be586f19d5eee092e257c30477ee0438f826fa8470da4baba3cbfd53511a137bbd2d1345b83828506caec5d01e7a5e11c98acb82123b4e646c24508df3b', 'category': 'Street name', 'description': \"The image shows two street name signs. The upper sign reads 'EL Camino Real S' and has the number '600' next to it, The second signs reads 'EL Camino Real W'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1973.0, \"x\": 622.0}, \"hi\": {\"y\": 2170.0, \"x\": 1520.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5280: trackId=t1:02fd29df31bf6ea90d4d526d25abe832:ffff005f, observationId=o1:4e6b87993d1989c977749cb0d258627d:00110060\n",
+ "Processing image 5280: timestamp=2024-01-10 17:45:37.335432+00:00, observationId=o1:4e6b87993d1989c977749cb0d258627d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street name is \\'El Camino Real\\'. One sign indicates the street is heading \\'South\\' and the other \\'West\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3779532281975997, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2557, total_token_count=2633) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd29df31bf6ea90d4d526d25abe832:ffff005f', 'observationId': 'o1:4e6b87993d1989c977749cb0d258627d:00110060', 'geographic_point': 'POINT(-81.9645165050345 27.9898397917083)', 'mapsURL': 'https://maps.google.com/?q=27.989840,-81.964517', 'captureTimestamp': '2024-01-10T17:45:37.335432+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4e6b87993d1989c977749cb0d258627d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091205Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7fa5b6de7af489fbdb86f513e0f906a6ecc0cd4f00f8d7bfece2d49c069883fc5bcfb335631dbfc76c43bc3c22a9dfc4610b6278724623adeace9f4fbfb81028d88d721eb79de9dfeeedcf2922c37b5ef7ce52f16850c1d1f7d6743aee373052aff964194f69e7e682d5cb5a8a31d579a4b3121cb96dd54d99ffcd33abced8c8c61fbc742908167208bd21afc151d186c5be75f6037c2535e12363dfd241812afb46b199924b5ce2c100f57a6627ef446335eea815d2355ffd61e6765b59eaa4cb533d059ad7ae9f31312adf5a27b33d480bc017c005f099a8008c08ee8fd599199c7b5a06429f45b37ebf4754532be64df84dca5443af876f215f4932cbfcc8', 'category': 'Street name', 'description': \"The sign indicates the street name is 'El Camino Real'. One sign indicates the street is heading 'South' and the other 'West'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3187.0, \"x\": 2531.0}, \"hi\": {\"y\": 3290.0, \"x\": 2870.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5281: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:a4392f64ced9d720500764a9c4b215ba:00110060\n",
+ "Processing image 5281: timestamp=2024-02-20 15:40:55.243343+00:00, observationId=o1:a4392f64ced9d720500764a9c4b215ba:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a No Parking sign with a circled \\'P\\' and a line through it, along with the text \\'TOW AWAY ZONE\\'.\",\\n \"image_quality_notes\": \"The image quality is fair; the sign is somewhat blurry, but the general details are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28624042387931575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=1009, total_token_count=1102) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:a4392f64ced9d720500764a9c4b215ba:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.243343+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4392f64ced9d720500764a9c4b215ba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=07e5e8ced56066d7148bbea49134ef7ec0eb4060dedf681cebcb51f5af365fe75003caaa4a7ec2dbd0ded76bcf9fc94a6dac64a59a4ca4f818ad1fd05d3fe52f39f88c06fc976416ac98c50d3d0a1ab7e3e1984f6d371adf5b358b19a952acc80af2c2ab717334cecda28e08e389de125b5ab72687cfc5cc9dcad767db8752e52edbc711ad39b75001fc2d4cd589da2ee35f69aff593b29c5e13b6ac19eaf29fec791bfb0524291268cc72d341ea5030740834fdca87ac8501e04d46c6f2c0ab3db31370f3497ddebd8f0b92dfe2e6ff4ea2436e85af3f414e344db862b570d2a84e6fbfa86d152b7351190aac53c85a8ca2a179b1709f142649ce98bc0052f2', 'category': 'No Parking', 'description': \"The sign appears to be a No Parking sign with a circled 'P' and a line through it, along with the text 'TOW AWAY ZONE'.\", 'image_quality_notes': 'The image quality is fair; the sign is somewhat blurry, but the general details are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3292.0, \"x\": 3323.0}, \"hi\": {\"y\": 3385.0, \"x\": 3367.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5282: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:bf03ecfb51496f8b75054c7030ed847a:00110060\n",
+ "Processing image 5282: timestamp=2024-02-20 15:40:55.883209+00:00, observationId=o1:bf03ecfb51496f8b75054c7030ed847a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text \\'TOW AWAY ZONE\\' is visible below the symbol.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22656471079046075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1009, total_token_count=1097) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:bf03ecfb51496f8b75054c7030ed847a:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.883209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf03ecfb51496f8b75054c7030ed847a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5efb30031c27796ebc757430d9dce10c41f2c5faaa1c59773420509cbdb5929aaae9262c1ea5f6cc4ebc9af98c6d8050154c2db6df7868e180fa13db80191af6e510ae11bb2c3c709e773a0bf485745b329fb7773b67c759562159e60ce9c94dabdc9b942bdf4ff1cafc3530d8fe05e246be0d1ac036cffdd493e3a4e016af8900d84d1e71f578fedc3e4fad866937bd00bc4d1a4b5c62f09dc115ce4a7b626ccec6ed225bfe0b2eee0a08775a273140cbb8ecd4ac97f2ffebaeee2a84346e33143f2e95eddb495c510b543c6900007e3d68a185c02b6cc62d961ad8843f0db83f17e84f30ba56908bdcc8870baef824ef4c0bc301b2f44372ac6708f3b790e0', 'category': 'No Parking', 'description': \"A rectangular sign with a red circle and a line through it over a P, indicating no parking. The text 'TOW AWAY ZONE' is visible below the symbol.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2349.0, \"x\": 1852.0}, \"hi\": {\"y\": 2452.0, \"x\": 1897.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5283: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060\n",
+ "Processing image 5283: timestamp=2024-02-20 15:40:55.243343+00:00, observationId=o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a \\'P\\' with a circle and a line through it, indicating no parking. The text \\'TOW AWAY ZONE\\' is also visible below the symbol.\",\\n \"image_quality_notes\": \"The image quality is fair. The sign is somewhat blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2250239554415928, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=1009, total_token_count=1098) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:7a085e69d1d5d63bca3196b6bb311bcb:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.243343+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7a085e69d1d5d63bca3196b6bb311bcb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=101c41e7b6e64f1b0fef28e2c2158dadcd28834d9304ef79b3e169e06815160c6da81d074a50767f337b150aea3ed39a51ad06bebada5ce2ab328a68a5d4a7720de04a8b506641098e14faa48e379de9bfc5fe7abcd93bdf74daba50515319709f6526db91dd493ab045fc3af6e92b49a7ddead78dfe5ff49521cc753eb124516b6507e218214a11aaee67c833d45224afe970aac6e647c18536e64000caecc6f32462283f1299e48335495827dfc8693e2d1870c1e9217c5a5105a3dfbb631e7fe42a28e1a5aee463f76b7f8c30ee2282209d6134c4e22a97a5a398605ace0c088456b5e6a30e584db18ae744fe4ddd1129ba7106447e156842930a9dd16917', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating no parking. The text 'TOW AWAY ZONE' is also visible below the symbol.\", 'image_quality_notes': 'The image quality is fair. The sign is somewhat blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2405.0, \"x\": 296.0}, \"hi\": {\"y\": 2502.0, \"x\": 346.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5284: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:43eb15ab72871a2f5c6e5c72c0286146:00110060\n",
+ "Processing image 5284: timestamp=2024-02-20 15:40:55.563645+00:00, observationId=o1:43eb15ab72871a2f5c6e5c72c0286146:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a circled P with a diagonal line through it, indicating \\'No Parking\\'. The sign also states \\'Tow Away Zone\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24718530554520457, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1009, total_token_count=1085) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:43eb15ab72871a2f5c6e5c72c0286146:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:55.563645+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43eb15ab72871a2f5c6e5c72c0286146%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a75b61c0a24c6b1ffadac86cd558af312461b946abbc25a4705095c373b19bbe3e5fb4b92b22ed9eff98a14ca92fd6c56839efad1d32836eda19f502e5f145dd2dfe2e1e24903ecf3c2b71678d6aa0b310fbe7aee0342ce275d29051c364820e4635e3af93b93d324c4db15dab15dfff561d2c1851fab9d036ac61d890ea5412580a129fed2fc877b13585a3c0f13bdfeda1bedc65cd5a41b27b3bca42724348e54b9c6e236a2c191254cf203b1b65a094ac251dac2f08e1aecf75b58e37750906b2a501cf86a7aac5144127e95696a8ccb5f0d5512acd44b8a64f18deeb33daeb77a0e77e7f6b247d01e7669fd7966a8a9af325f778f554d4be458799e7e2e4', 'category': 'No Parking', 'description': \"The road sign shows a circled P with a diagonal line through it, indicating 'No Parking'. The sign also states 'Tow Away Zone'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2368.0, \"x\": 1016.0}, \"hi\": {\"y\": 2467.0, \"x\": 1069.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5285: trackId=t1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f, observationId=o1:87347e13469b33f3b5a8bc7f80b73c78:00110060\n",
+ "Processing image 5285: timestamp=2024-02-20 15:40:54.927215+00:00, observationId=o1:87347e13469b33f3b5a8bc7f80b73c78:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.\",\\n \"image_quality_notes\": \"The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4157100800544985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=493, total_token_count=586) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Poor', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Poor', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd2b9dd927c6caf4f251d007fd6de1:ffff005f', 'observationId': 'o1:87347e13469b33f3b5a8bc7f80b73c78:00110060', 'geographic_point': 'POINT(-81.9614163392455 28.0453732940722)', 'mapsURL': 'https://maps.google.com/?q=28.045373,-81.961416', 'captureTimestamp': '2024-02-20T15:40:54.927215+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87347e13469b33f3b5a8bc7f80b73c78%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1248270cfef7b2c630b99d173daaa730ea2c198811ddca0510bd25811dd1e9c1b62ccb0514c9a5216f9414f95062baafb683743374d29910be76035c1aae7404e44a251d0d48d33c609ee5f981a18e794e75edcbd16707dceffaeb759e344fe634d7afe85d24a290eee2b9dbde2c5c7a0018e0eea243f1c4424b2ed86ecad0317bfc4e099ff8e7356960f169401384f58e5bb5dcef1805aee1e48da96dc019e7938d6f941b81717497fcc2aeff90db755823991e0ed5ca25c2ace3e9710d5ee1f45038e55c245cb4bf4075493800979d9be3a32b7b2b517a0f0fea459640be429f5b594320c87c338e450edf74735eb7571667aca17c9d5e9a5d4f2f88f89629', 'category': 'No Parking', 'description': 'There is a sign with a red circle with a line through it, which typically denotes no parking. However, most of the sign is covered.', 'image_quality_notes': 'The image quality is poor and the sign is partly blocked, making it difficult to identify with complete certainty.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3321.0, \"x\": 2769.0}, \"hi\": {\"y\": 3405.0, \"x\": 2811.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5286: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:fdee832723a646d0b39965d668cc975b:00110060\n",
+ "Processing image 5286: timestamp=2022-08-19 23:01:45.598415+00:00, observationId=o1:fdee832723a646d0b39965d668cc975b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with a red border, a red circle with a slash through it, and a black \\'P\\' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21060625712076822, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=2557, total_token_count=2647) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:fdee832723a646d0b39965d668cc975b:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:45.598415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afdee832723a646d0b39965d668cc975b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a79d0d60fcb97e5d5acb96c2e03191740e2888702ad8071a9f19e3cce208fc5f6a573edcb0a8b5cb88a223fd525e6c8d59b509598d5b8a4f2591797fd0e954b92debb75e7f26e77cdb6902b5a67b4ab693c283decc3bf5f7af0a9299673c02073e771338ef7694bbb2b17f8340cd1559335aa1fcb803c0be548727c4dde525ce2b3c5194e787fbb9435786c052735cf0bebcbaa3796f16712e217341a0e9ea85bb840905f10f1b2d33ba7b7035e0d173ccca26507c2d8b90ca203d1889bf723036acf8549fa4e9c78965ae372ea5dce44dc62e486ebeeecdae63af6aa409946357c07550e50435a69ce6977e4b2f9bea4031e3501ccc693a4d3488cad6297b9f', 'category': 'No Parking', 'description': \"The sign is white with a red border, a red circle with a slash through it, and a black 'P' inside the circle, indicating no parking. An arrow pointing to the left is below the circle.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3091.0, \"x\": 272.0}, \"hi\": {\"y\": 3233.0, \"x\": 360.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5287: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:407d0c6f45244b19d0cf1070421c0e8c:00110060\n",
+ "Processing image 5287: timestamp=2022-08-19 23:01:46.054454+00:00, observationId=o1:407d0c6f45244b19d0cf1070421c0e8c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' inside a red circle with a red diagonal line through it, indicating \\'No Parking\\'. An arrow points left, indicating the direction to which the restriction applies.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1898433012120864, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:407d0c6f45244b19d0cf1070421c0e8c:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:46.054454+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A407d0c6f45244b19d0cf1070421c0e8c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=796e34ea9affda71124e54866474e6b7489bcaecf297a3be96efd774b6e167256cee418438f6e5b0cb007362d3272cb1ccba3377df21696079d3ec394fecdb5708264744df2d91f373e302aaa9f8dc917fbc66f4b7e2b0ec65579a9cb62a38a2d3a2fb3e1730291e35c5ef45743dc803d9b4b8f7b7776ef53d18e29a9b5435756de3910a14f32176c97e1420a9fb06b16969c0b0cf2a207abe44b781f66bb0c5f1e45b2cf1293a89243aa7fc5d26647f95c77c68194980c449bdb0c1b5443ca248192594fc78502418a5ae5cba76018641c8d186c44cc0d31f13bdd110beee5d5fca5e261d34ed9ebc6d81ef4842a9544c046f56dbe31d209dcf49c50cf5d48c', 'category': 'No Parking', 'description': \"The sign shows a 'P' inside a red circle with a red diagonal line through it, indicating 'No Parking'. An arrow points left, indicating the direction to which the restriction applies.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2138.0, \"x\": 1793.0}, \"hi\": {\"y\": 2299.0, \"x\": 1882.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5288: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:08a6691f7197622ecc951e196840904f:00110060\n",
+ "Processing image 5288: timestamp=2022-09-28 21:32:32.372386+00:00, observationId=o1:08a6691f7197622ecc951e196840904f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red circle and diagonal line over a black \\'P\\', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16495686908100926, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=2557, total_token_count=2643) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:08a6691f7197622ecc951e196840904f:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-09-28T21:32:32.372386+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08a6691f7197622ecc951e196840904f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093028Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=265ea56bdccf44e450d7eb34e82e1f3ffbdf65db4c8c85b4857e0eb724f3ac9c80f4ba426d10caa948e1bfcf80e45592c7f5c070230278a95a40fe070c8f525d2c3cf469b35efc9c13f46eaf35686c0e7232fec80ec147de11dd02f7a0489a5c4891c533fe99c133780bb3fdcf808c95a2de0593f33092cc08c582201d468c733f318543d62f203edf2694397377c50eda26b1c56bd753f8ca3c453fccd3216294f2a696760748ae6173c334417924202a45e3fcb17ba6cdcbbf0df080f41108093361a737681c5df89abfba3055cd871b4f711e2d16d3fff89df1b11b9bf83428467fe5a71917eb2ec1a12ef5d526a01e7391373269ae6da1efc3216bf6b990', 'category': 'No Parking', 'description': \"A white rectangular sign with a red circle and diagonal line over a black 'P', with a left arrow below the circle. This indicates that parking is not allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2154.0, \"x\": 2239.0}, \"hi\": {\"y\": 2309.0, \"x\": 2328.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5289: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060\n",
+ "Processing image 5289: timestamp=2022-09-28 21:32:32.072372+00:00, observationId=o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white sign depicting a \\'P\\' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21229031085968017, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=3589, total_token_count=3669) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:6d70cb5ad68d49e2bb43cd63b844fff7:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-09-28T21:32:32.072372+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6d70cb5ad68d49e2bb43cd63b844fff7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f515d5c1e24bc97b4fd87eb7ed831a3894a498c5d08fbdcab8c005a832f3b28ea3475e2393c8137449cd7b2bc2c1d41e53a5044f1fa420e53eb883325233b76a4c593555e0472de10bdb10630c77b98f95f2b5109b7382f00e868a0e87fe803b9907b00ec676d724c1ee77cb3fcaf3083a2381223cbeac2f4f265ce08f30f801a2df1d5d3e36f21f9afef95483eb92a329439bf8224c8944d956db817a655814e7194d988eebf35b1a542fe55009c17ad5d4a38c6b36e105266d752ac41d8db9882e90d81b526541917422c427a81ca803aa07d32195e818697a9d5f26169f348754b8adecdb7c9e885a545098caad8972f48a9872763e85d5876cfe19914eb', 'category': 'No Parking', 'description': \"A red and white sign depicting a 'P' with a circle and slash through it, along with a leftward pointing arrow, indicating no parking in that direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3134.0, \"x\": 652.0}, \"hi\": {\"y\": 3259.0, \"x\": 730.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5290: trackId=t1:02fd426cb531382c2a491e25edc27d76:ffff005f, observationId=o1:f4e1663db9292270e392a75bad9353c2:00110060\n",
+ "Processing image 5290: timestamp=2022-08-19 23:01:45.598415+00:00, observationId=o1:f4e1663db9292270e392a75bad9353c2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' inside a circle with a diagonal line through it, indicating \\'No Parking\\'. An arrow points to the left, indicating the direction to which the no parking rule applies.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19539519562118354, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd426cb531382c2a491e25edc27d76:ffff005f', 'observationId': 'o1:f4e1663db9292270e392a75bad9353c2:00110060', 'geographic_point': 'POINT(-111.896519506342 40.7564365266359)', 'mapsURL': 'https://maps.google.com/?q=40.756437,-111.896520', 'captureTimestamp': '2022-08-19T23:01:45.598415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af4e1663db9292270e392a75bad9353c2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1abbbb796799074651519b5fafdd1785613d46acf2be84ca276eb64e9cf1c3090ac57addadd0d5138b3d6daccd7cbfe15cda60b66581f5fa2ea0af632683236b3ca8844b080bd68e30e91386286581c06eefcb65dcbbb339e9d0e07ee39644c16bc75f5dc1afc01399435271a8c6fa5d75487547eff8f29504f5f2f5d850102d617d7585075687a0df5a044e4eb89ebd3253f5fb8d591032a105f16f656acad095b0c181b12deff859e465ef0222e971fe77cc6822028e45af3149a5c85faf11f59aa8c7c40737538736d630819fae8a4d4b288a226b385ebde5db728ae72af055c3f4905e3a790b8009dbc109312d4bab181c0f5bcfc1b5ff42f7ad4f3e0597', 'category': 'No Parking', 'description': \"The sign shows a 'P' inside a circle with a diagonal line through it, indicating 'No Parking'. An arrow points to the left, indicating the direction to which the no parking rule applies.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2199.0, \"x\": 3282.0}, \"hi\": {\"y\": 2344.0, \"x\": 3371.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5291: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060\n",
+ "Processing image 5291: timestamp=2022-06-14 21:35:04.147747+00:00, observationId=o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicating \\'900 E\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1388813081334849, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:e7ff96b7e4121ce631a9d987f9e245fa:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:04.147747+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae7ff96b7e4121ce631a9d987f9e245fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b474b66c89133146080c855544cf6c9c04ad7980ac3abbcdea215a1c066d7ab4612cc15192ff0731b37da92efa108efc2f9e81f6abc2a8e91757975bdf068ac4704a7fea74d2dc07d48ef775a2bb48abd833645cab2a8c779588aad127ed7cde96e006c50fa7c45c85fd444bfde051352abf047dae468ea1c2b4ab23ea13ade428b32c800a11f06da1d9c8051777e06a689a0c9eebad610f6546375a1f41dbe2a203ce5ff5838436b8d3710ac5ca7da2b651e5c598537bdcc7e171b567b6e0a83db9742e1d0502d4c10fc05ecf46978545fc0133e688f30b7535e86a319b6c71691c07dd424f7a7719c6d4179966cdf4a0439f2183f65348ea98e023414a2019', 'category': 'Street name', 'description': \"A green street sign indicating '900 E' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2812.0, \"x\": 327.0}, \"hi\": {\"y\": 2894.0, \"x\": 473.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5292: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060\n",
+ "Processing image 5292: timestamp=2022-06-14 21:35:05.423688+00:00, observationId=o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green rectangular street name sign that says \\'900 E\\' in white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14556987469012922, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:6aa8ae304af615920bfadf3d7ce20b9d:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:05.423688+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6aa8ae304af615920bfadf3d7ce20b9d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=42d68abb9c7ef09be232e57f36e8a2a768c6ba077a8a10b3262fca88c5ff3844ed1acaa10f369b97e8e124b0d7cc5883150b2aa1ff85bb5490436259939287de8d26d1f8fe9d2f61a51edeebc70456da18a91b567eac8d334769caf4819188452a4b7de43bf8525ac74cad8e24627ee728144e6c6601c9acc8277fa1d907fb054af1e1da0414d372aa8421c3f69f4eb40b9b82763a8081ba1703baaaea4b5d6c16ea556e850328c150703af013ef1dc414a0147f7630724fb6411fbe8cf61b8cf3e60f1b32d13c7c8da3d08988bfedd07937cad5474f0c4acc6dc93f9f6826eee815fb8ad46e478ea754ba3bf18aa2444004115c80db0cffe783d0958f119781', 'category': 'Street name', 'description': \"A green rectangular street name sign that says '900 E' in white lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1835.0, \"x\": 1756.0}, \"hi\": {\"y\": 1925.0, \"x\": 1937.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5293: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:5f72bedd3703335aa4e19f337ea51787:00110060\n",
+ "Processing image 5293: timestamp=2021-12-07 18:47:39.686234+00:00, observationId=o1:5f72bedd3703335aa4e19f337ea51787:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a street name sign that reads \\'900 E\\'. There is also a pedestrian crossing sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1515200478690011, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:5f72bedd3703335aa4e19f337ea51787:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2021-12-07T18:47:39.686234+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5f72bedd3703335aa4e19f337ea51787%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9373593c620218c2be412827d3975948b051ea1628f064834f480faf2015704ea5e9df0717a418a08b2a8032eb37a339c6e26b9602894e800e312dff7b01bd43e1e14d79142ada990235f567f0e849385ffc5ba0295ca1e0dd483f1e75a0bdd94fa2270374a2cf15283fce6a95581650be1242bc6bc46882d7cbef6625c999fd2d693c1b96f68aabcd77dee4e4c37a3409faba9abc3bace45ab49e67ffe26efe59ad657b94b2a601b12b1ec1828056f93881db80c03b80c2b0550931bbacc731ff80fb8ba9e54d6e407844c93f1f85a81e231ce8c08579f26ac31ae1c5e3382fd624c0d627494d849751ee6368accf44a3ad9df1347d4ddbcae3941371ea2aa4', 'category': 'Street name', 'description': \"The image contains a street name sign that reads '900 E'. There is also a pedestrian crossing sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1873.0, \"x\": 1432.0}, \"hi\": {\"y\": 1958.0, \"x\": 1574.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5294: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060\n",
+ "Processing image 5294: timestamp=2022-06-14 21:35:04.811743+00:00, observationId=o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'900 E\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10371051629384359, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=3589, total_token_count=3649) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:b802f8cf2ddd7e7d8406a7c20a38fd91:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:04.811743+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab802f8cf2ddd7e7d8406a7c20a38fd91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=44f49367d7fefcc5643de935158441ca26f274b793ccfeba88a9e61a49a25f64dfd91818a998d5d4be2f986b5820ddd0bdb4e39dbe29ac77db0be5cac2e7d75360499306b736cc71b2c1ebd26b1fdc479bacc7a9ee781be4935cd786eaf5e672f74a973b3e126c9bb2f6bef71329123ebfa2c4ede6b4557ac4030c8df671324405fe60fc124ce4bfa1b4c3fecdb9f4a054c5948d44fbb29e642bfd31fdd8b734d3fe8f4209915923378eec916bbd7861a4acd1a8fbea44a2b3ce17584a9f2dad1fc8a5c76f59aac08236b548b3c9f01d3d175786a51ea8a2df122b44590f01de03f11a87ba32322d67db9fc040418b5e6934ea0a5026256c4e60349d180eadd5', 'category': 'Street name', 'description': \"A green street name sign reads '900 E'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1861.0, \"x\": 2630.0}, \"hi\": {\"y\": 1938.0, \"x\": 2804.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5295: trackId=t1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f, observationId=o1:fc8931f056a97764a05b384f7906e4fa:00110060\n",
+ "Processing image 5295: timestamp=2022-06-14 21:35:05.999601+00:00, observationId=o1:fc8931f056a97764a05b384f7906e4fa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"900 E\\\\\" indicating a street name.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20056185175160893, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fd7e7b07841aceee9fb276a09fe3e2:ffff005f', 'observationId': 'o1:fc8931f056a97764a05b384f7906e4fa:00110060', 'geographic_point': 'POINT(-111.865178532432 40.7648688935474)', 'mapsURL': 'https://maps.google.com/?q=40.764869,-111.865179', 'captureTimestamp': '2022-06-14T21:35:05.999601+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afc8931f056a97764a05b384f7906e4fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=85be1e3dd35956a258599a4ba314139ada983941e7a4f6eec63dc1281c451f231012dd9e9d81b4035f6ac438fba7ae2817f64ec8568d2c3d09ae47539f1ec086d3e9ab20537b0c97b27bde3313c1b3c9456ef7bd51d6f177007d768271f36d9b677ee94607f76d8874713d24e44a310282044069dbbe64a4bdfb628d8d12c86223d3ea61ddd56c640213d5d32d054b846ba8a3887287b8ec9e18f189436967cb499732e4d16e178dd2a8977402171db680f9dacd391cee4b50fcf488314bb5fe3b470e3dac029dbd767a88299271296d3f7299d993a604b25b914dea9028b5ba0ae1ffa50c63c7471a883c0f40c149423d99cc9e4ebd5f37005fba86419445b3', 'category': 'Street name', 'description': 'The sign reads \"900 E\" indicating a street name.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1872.0, \"x\": 906.0}, \"hi\": {\"y\": 1968.0, \"x\": 1061.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5296: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:e419706f1f59cbd69dd5d6b31fa02479:00110060\n",
+ "Processing image 5296: timestamp=2019-09-27 18:07:18.119830+00:00, observationId=o1:e419706f1f59cbd69dd5d6b31fa02479:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35105607623145696, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=1009, total_token_count=1093) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:e419706f1f59cbd69dd5d6b31fa02479:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-09-27T18:07:18.119830+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae419706f1f59cbd69dd5d6b31fa02479%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ac2fd606228f7e4aa829f7b8d7ddb61e02611843ea474d42e6a7299ba1216d9d6e109fca8b496174fcf2faa97b76a74a02454fd54abb05be23536ac51e40887a02bf23418d510a21c6b66600288c79dde05deca54dfe4e938a778642427974f23e6d1e3a738ef8f2467c09a78d9737f590067b5337e755e46009872a69b60fdefff2e47740f9fdca6b8ee3f1c1d6da4decf34758f4297bbd4e773cb1af4bc822fb20a84e04f9308e12e352d0af2e2e993f526df4afe20e7433d248dc2ca054aeca2eb5323c490af1d555b00f1e0892e8c8fecf13322da416fd33e8c90063f9c0b34b42bd02027dd12c9d260b7654f65ae80e3ed62ab9f0e42d9cc8470e9d17f', 'category': 'Turn', 'description': 'The image contains a yellow sign with a black horizontal arrow, indicating a turn. The sign in the center indicates to go either left or right. The other signs appear to be warning signs.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3282.0, \"x\": 2116.0}, \"hi\": {\"y\": 3370.0, \"x\": 2154.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5297: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:1509ab846a6f17bc4d988194497b5d99:00110060\n",
+ "Processing image 5297: timestamp=2019-09-27 17:56:12.593867+00:00, observationId=o1:1509ab846a6f17bc4d988194497b5d99:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15994155066353935, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=1267, total_token_count=1337) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:1509ab846a6f17bc4d988194497b5d99:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-09-27T17:56:12.593867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1509ab846a6f17bc4d988194497b5d99%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=005bcc49627318f56392d0c3e9f1d4fac34872313d0f83666e7cd21a2e5de8f1a96ea67f50a776b24b5ca4adc03a8abe004379b050dcad687f007700352a280e27d3bf8a1028628957e209c968dec731b34b7efc76f12a66a1dcacf5399fc46bf89b315b5e4b0130ca4b3cd614ccc497df5b7c7c9793926d81a56fe598eb3c2474c443e06d6ed91c0624273751a2e7885bf8653e9fa172ccd4fc4f3deabcc3ab184c1df2000aa0c1c7a35638d8d27e89ae4ef735ab073e8ccffe223442f0774544c2e26dd76b18ec1255a8f3fd8594d731a4b0d24eb2d41b3893cb9a277b036ec979f982ee3b798168a1062986a7b953ad784f0549da8eb0c2ecc2a29494b61a', 'category': 'Turn', 'description': 'There is a yellow rectangular sign with a black arrow pointing to the right. This indicates a turn in the road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3340.0, \"x\": 2373.0}, \"hi\": {\"y\": 3457.0, \"x\": 2409.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5298: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:2bf95ea48bf58fce69500946fcf6adc7:00110060\n",
+ "Processing image 5298: timestamp=2024-01-22 19:20:57.277268+00:00, observationId=o1:2bf95ea48bf58fce69500946fcf6adc7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a turn. The sign is yellow with a black arrow pointing left.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21635465218987263, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:2bf95ea48bf58fce69500946fcf6adc7:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2024-01-22T19:20:57.277268+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2bf95ea48bf58fce69500946fcf6adc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=897bf7cd9b979a47fd722c01aac47ef5787fd1c8a3d2cd1e8109122376b9b5218aab3c87f51209117b119195ae212cd3254b119c2f4c1a0379d66d0535a1bc8577f4b2231c46a055efb1ffe68a1ad8a889c62292794b1ec2216e58490014f6828d390859ad9ea52bf5b96b1f56fe73d9592b4ca00fd136eacfde6abefed4158f22d171368d4f23d5e669f7459efce6940402f83a7e250e50ffb826b70f6076dd2a47cbdb922ba760b55458beccbf224f8d3cdc80d34fab0ed54902e4260d088687706e8a80ef3d09031ff419d30ef8e411e8310f47b1f91bceaab86d134c6d81591c28396d38892debcb6ed9e39311ad4c9830529233962e69be3183f978597a', 'category': 'Turn', 'description': 'The sign indicates a turn. The sign is yellow with a black arrow pointing left.', 'image_quality_notes': 'The image is somewhat blurry, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3250.0, \"x\": 603.0}, \"hi\": {\"y\": 3293.0, \"x\": 637.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5299: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060\n",
+ "Processing image 5299: timestamp=2019-11-06 13:41:37.852566+00:00, observationId=o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.\",\\n \"image_quality_notes\": \"Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44139215010630933, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:ea24ea21a444e554aa73a3dd2a5500bf:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2019-11-06T13:41:37.852566+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aea24ea21a444e554aa73a3dd2a5500bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a51c15c96f98c29b96c059c9fc2258630be6a2a154cc9bd5facc5a61fd606f4eb6d3cf904c6a219edfaaa132d587b78abdfd968851c275e5627515cc529198e39597fad85aceb7784b9197e83174539952dd46a9e05ddf1efadd870183153887e161a548160901bcb1e19df790c5ad9566f7c1104bc540de54250ad9716f2d7c0855b826a355de3d5ce5b43eed844c8058312d83eb3fa78e86d545a897043260b4f6594a4668721595dc9a3c7745a83e787e9ab263bae1b43147e79f3f651fc276f614d62c79e5844495b00b949e1bfd0eea551e3779c7663c57fd96f9f10c888d3d598bc24bc3020f72b0ae091f72bca740c5c8366e33e0db804aeb16e9374', 'category': 'Turn', 'description': 'The image shows a yellow sign with a black arrow pointing to the right, indicating a turn.', 'image_quality_notes': 'Image is slightly blurry. The sign itself has some fading, which impacts sign_quality.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3266.0, \"x\": 2113.0}, \"hi\": {\"y\": 3364.0, \"x\": 2143.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5300: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:008f5666af4fe4c65fa553f0a410c25a:00110060\n",
+ "Processing image 5300: timestamp=2023-08-31 16:34:10.776772+00:00, observationId=o1:008f5666af4fe4c65fa553f0a410c25a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign with a black arrow indicating a turn in the road. The sign appears to indicate a sharp left turn.\",\\n \"image_quality_notes\": \"The image quality is poor, but the sign is still identifiable. The arrow is pointing left.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3809599034926471, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)'}\n",
+ " Error classifying image 5300: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 309)\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:008f5666af4fe4c65fa553f0a410c25a:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2023-08-31T16:34:10.776772+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A008f5666af4fe4c65fa553f0a410c25a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4228e2f00a6ab90ef92a489a36843379bf6c250376cc6a379d26895a2a3b2668f18b5a53e97a0899ec4bea490897745ebfde0a911c9b1e38bb4256490654f171f3d65723f5aaa8085225c85e129852cb97875505335e0b9cabe6819a60b72d9e9526a4c3aa3e587d762a3a908937757aee71f84a2048cc8cb1e78014e60d5e86d28d91e9a00a1bf00e6dd658af817c1c1abe376606d0578593722dedde61f066e2d11dd0e2e1a4707e45d37b9c88832809966fede03ef41145b92a346a53721e6d9de2ae67372e45061c36dabe240807b53c0dc2693d2c3ebd7668d9f08149cf94b330fe6cee741eb7b609b793b6d54fcb73269caf76f5ce151624bb6410e2ec', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 807.0}, \"hi\": {\"y\": 3239.0, \"x\": 846.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5301: trackId=t1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f, observationId=o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060\n",
+ "Processing image 5301: timestamp=2024-01-22 19:20:59.012768+00:00, observationId=o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow turn sign with a left turn arrow is visible.\",\\n \"image_quality_notes\": \"Image is somewhat blurry, but the sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2733204292528557, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fe23d65446c9acacaa4b351de3bfb3:ffff005f', 'observationId': 'o1:5b659f29e0c2afa0b6c95cb47dacc627:00110060', 'geographic_point': 'POINT(-82.0062199736007 27.9821080316248)', 'mapsURL': 'https://maps.google.com/?q=27.982108,-82.006220', 'captureTimestamp': '2024-01-22T19:20:59.012768+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5b659f29e0c2afa0b6c95cb47dacc627%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5ad31dfb50275f6cb41b640a62b3694e08eea224649e5b306500985e488306a09c2485914fa71b4aec976d9c0f15ad43716d148548289ea872cb0813ad53b7b129bd7513324577fe4f186fd9e94631feab1c0e5c991d33a89b3f8dc99ae73ea27896262c600d494106ee9b379caa99f90868a480d49828f0d272fd403a33a29d432bd3a7674537894770cd8c0b544c10fd262bf4b1c5c6081f46122da203dd47392f6959dab1a659b109deb6910b8ef2bc11527e84e5df2b419f55186d59f360fcb5990961299291fb1fc2be148cdc86fb36456f95336a4ffa090c99d92c6148bd7ce0bab9786822295c2731b973f2f6cbc7323c69c95a3bdfd094734f1cb7cd', 'category': 'Turn', 'description': 'A yellow turn sign with a left turn arrow is visible.', 'image_quality_notes': 'Image is somewhat blurry, but the sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3282.0, \"x\": 766.0}, \"hi\": {\"y\": 3343.0, \"x\": 821.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5302: trackId=t1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f, observationId=o1:0ff1d00ef453631cc12f33c08289bab9:00110060\n",
+ "Processing image 5302: timestamp=2021-11-30 20:30:50.733136+00:00, observationId=o1:0ff1d00ef453631cc12f33c08289bab9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Multiple signs are visible, including \\'200 S\\', \\'Dooley Ct\\', and a \\'Dead End\\' sign with an arrow.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2180980173746745, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f', 'observationId': 'o1:0ff1d00ef453631cc12f33c08289bab9:00110060', 'geographic_point': 'POINT(-111.867108602528 40.7651415488665)', 'mapsURL': 'https://maps.google.com/?q=40.765142,-111.867109', 'captureTimestamp': '2021-11-30T20:30:50.733136+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0ff1d00ef453631cc12f33c08289bab9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4e48451c893aa228d158a0f0cf439813592927b6f099ded544d67fa145e42f1b385e8562cffdda172fc3bad6d6aa16bc2c7d4435864c07f728b489903d67bbf4d49d2d15a0e9d1d66fc2556de9cd66d1824da2b27adababa7ba056c05af95c32e6cf2bccd0e26e49345e243a8959faf9496c8dd150c882378fc98a64b74ce6b3ac7e5431f4d5884e993f6d7c7dfdad8abe52f78422297c2adc44a7864e0484794bc24b5d2e558c82914cb004a21c0233458c52d7a6fe231a8fffd8a6bf025b975357b6fa0067357897a276ee823c5fd51d34d553ec170da4590c5c7abf5ca92bc50ae3f016022078521afca991ac19d800d132f02e5581d285a390f285e2ad81', 'category': 'Street name', 'description': \"Multiple signs are visible, including '200 S', 'Dooley Ct', and a 'Dead End' sign with an arrow.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 2051.0}, \"hi\": {\"y\": 3071.0, \"x\": 2103.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5303: trackId=t1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f, observationId=o1:68bdbe016398c0888e30dbb698d9c4f6:00110060\n",
+ "Processing image 5303: timestamp=2021-11-30 21:25:04.086207+00:00, observationId=o1:68bdbe016398c0888e30dbb698d9c4f6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains street name signs with the names \\'200 S\\' and \\'Dooley Ct\\'. There is also a \\'Dead End\\' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\",\\n \"image_quality_notes\": \"The image quality is slightly blurry, but the text on the signs is still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38598065671667586, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=113, prompt_token_count=2041, total_token_count=2154) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:02ffc509cd68c4f2e37ab1aa0313e2a6:ffff005f', 'observationId': 'o1:68bdbe016398c0888e30dbb698d9c4f6:00110060', 'geographic_point': 'POINT(-111.867108602528 40.7651415488665)', 'mapsURL': 'https://maps.google.com/?q=40.765142,-111.867109', 'captureTimestamp': '2021-11-30T21:25:04.086207+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68bdbe016398c0888e30dbb698d9c4f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=95a8bada388a8ed34cf8980ec55fea9800e2195bcd9b8f011abe8762fd1361d438d85a5eacbe5d72fc30301c4f09e9923fca819fc7bd1b81559567c572853a7f0c37dddbea118869f0518aeb4df3897d5d957b6e686236e47a118ed99351fc9eef7f5cb2e6252dc61caceaa93bfe62fc1429f8becbbae64716db6db39ae20cb516d504ffb445cf4266f9144d16d3480af8593390ba93fff3d3790e9264dad173e3bca3ac6e73c4edf6e4e1c19f0ce6c30b227440ea83d7850059cf712b476f1e0b32bdf6ad71c21829274ebc2b1963ab0b576e13b2d932d98c24088eda9b3d5439b4ddca3728787b635fa36ded81afb6160fb5b6827ab609d511e7e62caf5f0f', 'category': 'Street name', 'description': \"The image contains street name signs with the names '200 S' and 'Dooley Ct'. There is also a 'Dead End' sign. The street name signs appear to be in fair condition. The street signs are layered on top of each other.\", 'image_quality_notes': 'The image quality is slightly blurry, but the text on the signs is still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3023.0, \"x\": 2266.0}, \"hi\": {\"y\": 3059.0, \"x\": 2337.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5304: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:2255f598f2f5a609bf503dd2bae88db1:00110060\n",
+ "Processing image 5304: timestamp=2022-09-29 17:08:09.768265+00:00, observationId=o1:2255f598f2f5a609bf503dd2bae88db1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names \\'1400 S\\' and \\'1300 W\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15247137650199558, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:2255f598f2f5a609bf503dd2bae88db1:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:09.768265+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2255f598f2f5a609bf503dd2bae88db1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7bc270d4c01bddf1572cb816f7fe519155930e61b8cd58ddba950dc24ff69a02453f239915f2912c4e9418e6e55c20bf210bc2fbd0b90be33d5e9fb764a266a6e9ba728805338d9069ea4bf5141ef508f95129351fc51c1394f147ae03e774babfb68bb996c39f848746b04fd7c929aa8ca9365ef5c0a120efe2d6bedbb058a77ea77e3e935f2333d01aeacdbae54cbbaa2bc1c98cca68a8fbc270f9cd3bfc225d3e8d184dfe247628e90ec1410d86f0bb8602f9cf14a39f35e7a23819a94295c386686511b6f7be56e6a825ae8b638d59d92c287ab9d2ad879a8480ab1e19af58f97aabb79024bdda50c56be10667121eeea9c746076e87411c0e4fb4746e35', 'category': 'Street name', 'description': \"The sign indicates the street names '1400 S' and '1300 W'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2113.0, \"x\": 2672.0}, \"hi\": {\"y\": 2196.0, \"x\": 2901.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5305: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:ecbf31fe3498dc778872be589d309cb0:00110060\n",
+ "Processing image 5305: timestamp=2022-09-29 17:08:34.835359+00:00, observationId=o1:ecbf31fe3498dc778872be589d309cb0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate \\'1400 S\\' and \\'1300 W\\'. The neighborhood watch sign has the word \\'WARNING\\' at the top and includes the text \\'NEIGHBORHOOD WATCH PROGRAM IN FORCE\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2302413298704914, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=3073, total_token_count=3180) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:ecbf31fe3498dc778872be589d309cb0:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:34.835359+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aecbf31fe3498dc778872be589d309cb0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7dc0891dac85cc1a52280b398782b5b3a22d5c41f0475cbcda6eea537e9ae665a9397305d6b2252a97d64982266d3cce6f2451786963e4ebbe4cf64bd2a5f6f39703b29ed38e9792f035fa2c0cd5a9a72b776edb59d5f73e343e9d60d47b443eb77168c3425ab8cdc4ec2ee092dbd39a0ee4d8273aebede4a7731b080d467e8c2146443346b2afbba7afb2e5823a3589a2fd26e775e6cfa0bac42ca55ad24ca8c589e4a6ef76c01ebc80e683f7f0ee797a2ea0a6b4fbce4f1c9af7ff7674413279c1532dc4a17b142a88e3b3d4a0e34048088a9e299de10ed423e4d90b2265916ef41585abff992b0f190d414dfb8c273a6cdec13cb791c73b0ae7058a39fe8', 'category': 'Other', 'description': \"The image shows street name signs and a neighborhood watch program sign. The street name signs indicate '1400 S' and '1300 W'. The neighborhood watch sign has the word 'WARNING' at the top and includes the text 'NEIGHBORHOOD WATCH PROGRAM IN FORCE'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2076.0, \"x\": 1245.0}, \"hi\": {\"y\": 2191.0, \"x\": 1414.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5306: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:82ab291e21cae4ebc60ca9d8a0889600:00110060\n",
+ "Processing image 5306: timestamp=2022-09-29 17:08:33.623301+00:00, observationId=o1:82ab291e21cae4ebc60ca9d8a0889600:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating 1400 S and 1300 W.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12662605617357336, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:82ab291e21cae4ebc60ca9d8a0889600:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:33.623301+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A82ab291e21cae4ebc60ca9d8a0889600%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9148dc396ca48ec0c033d717389709e4cbe5d7c05b8b3f6d088f15632cd50144daf9fa6dadf2576f2f26c2d13e8e5938935d39e7bd9de265dda28285e7b175a6e1adb7d6adf0e685b878a951f5541998bb8d03cb0dff35a5c7f84c49cb1bd8bb5db2d9aef81d4a59227ce6acfd4af18ff53130e92c595cce65abbe6dc5d0f3f0545d39a1b57295fee5417c607878c3288177f1790e7d37ab1359a6c74c2485f4bb5e5417b52b01753772507686123f209962a931c5c0710a3719ef21fa9373521f2e8e5fc7356efee0fcf7de4b71633e2e2d999df71c983edcfb4ecf84542963241102332e5d6999c2f40d569bca29d96c7111d9bc41bc589eb160982c443a34', 'category': 'Street name', 'description': 'The image shows a street name sign indicating 1400 S and 1300 W.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2009.0, \"x\": 2428.0}, \"hi\": {\"y\": 2109.0, \"x\": 2754.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5307: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060\n",
+ "Processing image 5307: timestamp=2022-09-29 17:08:31.995413+00:00, observationId=o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays \\'1400 S\\' and \\'1300 W\\', indicating the street names. There is also text \\'SALT LAKE CITY\\' on each of the signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2280787524055032, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:9fca1a28f1eea82de154e8d69a3fed4c:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:31.995413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fca1a28f1eea82de154e8d69a3fed4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75ed69dba5f0a824127fbe76311bfe2bf7c6efc9a5b3ef9bf2af4d6d8c8915b6c87d6fa761053c2c45bf4bc426b96f55cbf8b57e3a8ab8ba20ec9d2d1087c56764328e46d1e022f7e5270598bf379c686c3041ed52d4e10f2884153af4506c1d13b3d86f1c61a4aebbcf12a969f5b109691f388315bfdaa8614e0e10564fad889b89de479dc336ffb324fdb689c41fdcee9d7b105583e8f6680eef1e002b81998a1455360ef83a96f5cf767fbda7b661f07e80445687d74756535c4ca224a35b7d8f91a601d0c92ef687e660ff96dafea8768d6ce1ea4ced4ddf89491c2bfa39a9dcbf9915bdc688162351433ed1b5e23c3778ca36f07360d36b5d3cda29e366', 'category': 'Street name', 'description': \"The sign displays '1400 S' and '1300 W', indicating the street names. There is also text 'SALT LAKE CITY' on each of the signs.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3208.0, \"x\": 810.0}, \"hi\": {\"y\": 3266.0, \"x\": 977.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5308: trackId=t1:02fffda3d16d620613463391c11ae827:ffff005f, observationId=o1:d2aab661e497c27fbaddb76903371a77:00110060\n",
+ "Processing image 5308: timestamp=2022-09-29 17:08:08.647914+00:00, observationId=o1:d2aab661e497c27fbaddb76903371a77:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are stacked on top of each other. The top sign says \\\\\"1400 S SALT LAKE CITY\\\\\" and the bottom sign says \\\\\"1300 W SALT LAKE CITY\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11449600605482466, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:02fffda3d16d620613463391c11ae827:ffff005f', 'observationId': 'o1:d2aab661e497c27fbaddb76903371a77:00110060', 'geographic_point': 'POINT(-111.928497765621 40.7385547789674)', 'mapsURL': 'https://maps.google.com/?q=40.738555,-111.928498', 'captureTimestamp': '2022-09-29T17:08:08.647914+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad2aab661e497c27fbaddb76903371a77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4f4f6c71ffbba78439a1c9f2fe23b1e4d2dcbe510616066eb57ee26060bee238e6049963e4f1ac0f99e3b72cd8589e7952e16ce08ff4fe7bcdc97b99d07f9604fde6f002abe4221627ea56263be0cfcd186ff3ce63b0ba36038cb1abfa00a551bfbd69a5eb811bc43bc2608f52a99345c053ecb839ceeca5234ecca318ef0995e3b02fcffe07e6301e6154e8022c0a859b34e5acd7b8272684febf237a253f909e3406293f9a22395ed42d70a517a5aaaa61d021363c96a572d5efc73a1b67e497d9bdccd26d3ee5834af9996a0a5bd2ea014514b1fc32b785848b97a5d4323fbfbded4fd6862eeddd39cfc2e042a12479c198ec1bbd466d65ce77fc32bfca4', 'category': 'Street name', 'description': 'Two green street name signs are stacked on top of each other. The top sign says \"1400 S SALT LAKE CITY\" and the bottom sign says \"1300 W SALT LAKE CITY\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3094.0, \"x\": 2735.0}, \"hi\": {\"y\": 3157.0, \"x\": 2886.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5309: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:e10459727b013d0fca9c20cd450e7017:00110060\n",
+ "Processing image 5309: timestamp=2022-06-14 21:38:05.596714+00:00, observationId=o1:e10459727b013d0fca9c20cd450e7017:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'No Parking\\' with a symbol and arrow pointing left, and a \\'2 Hour Parking\\' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32063996350323715, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:e10459727b013d0fca9c20cd450e7017:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2022-06-14T21:38:05.596714+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae10459727b013d0fca9c20cd450e7017%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=76e1aaed2037fc2f0529d5418cee6b0e8f4b1dd31a0c17015cbbdbcac9a06262b1cfee813840fc0a020dfd11b4b3407e97fdfdd601bf4d46d101de9790a4c22fe34e81b462da09c91aeb5c5cbe845ca59710297f9777f9a3f785da34f1c9687ef69109211d7da9881df787158959e86e2e4b7534c1791678489db73cbca02220a92d7c2c02feb79ecbc4c7b079a0a4ab16925ada3509dfbb751b41f19033d0b84a0ea5c5d39f70f8beff839ec636bc7895ec64f49294af8991e26d6296f7e34dc9f3ca1e5bdcfc7a0702dabfef6e5113c6f145e6a7f17cbac277cd807dfa64b8224c90cb4509f8655c088bd37eb919164f4a24a66e8a50cfb054324433a667a2', 'category': 'No Parking', 'description': \"The sign indicates 'No Parking' with a symbol and arrow pointing left, and a '2 Hour Parking' sign with an arrow pointing right, indicating parking is allowed for a maximum of 2 hours between 8:00 AM and 6:00 PM in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3227.0, \"x\": 2873.0}, \"hi\": {\"y\": 3358.0, \"x\": 2956.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5310: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:d3cccf40cf3601dbbd59f91cee458f81:00110060\n",
+ "Processing image 5310: timestamp=2024-07-23 21:35:04.750128+00:00, observationId=o1:d3cccf40cf3601dbbd59f91cee458f81:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'P\\' with a circle and a line through it, indicating \\'No Parking\\'. Underneath, there is another sign that says \\'2 HR PARKING\\' from \\'8:00 AM to 6:00 PM\\'. The signs also have arrows indicating the area this sign covers.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43202989910720685, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=109, prompt_token_count=3073, total_token_count=3182) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:d3cccf40cf3601dbbd59f91cee458f81:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2024-07-23T21:35:04.750128+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad3cccf40cf3601dbbd59f91cee458f81%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4ecebdf4bea60260fa3778b26233468324c8091f630a326eb082f64ca2c5ef0ac4bb3dded64d42d4645c1aea6616493ae19d6d09c9a22d5206f25ab54c5d121efa01a0bcc9482c8c30bf06486384867b4af585546307f3f5d63e881eed66acccbfe5e7796178cb657b0e24ed838a2d6474755aa98f8ed21ae9519aa03138d4c96010be35aba0996b416461badf11a6b5193546bbf0203f20a620123ebb781c15d640e2c812541e588cd08cc20900e3008836cd3cc6582402f153d69f43dba213ee0692f9ea5053a7d5e5f70230185063c97ad5e0e8af299250aebe5b968b4556d4456dc5ab63182d70fb9aff9caa04e9a7c1bc095dfb513e4b1f91653e765566', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle and a line through it, indicating 'No Parking'. Underneath, there is another sign that says '2 HR PARKING' from '8:00 AM to 6:00 PM'. The signs also have arrows indicating the area this sign covers.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 612.0}, \"hi\": {\"y\": 2447.0, \"x\": 717.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5311: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:48886a88ebe9622be41dfc0cee781607:00110060\n",
+ "Processing image 5311: timestamp=2021-11-30 20:47:34.763414+00:00, observationId=o1:48886a88ebe9622be41dfc0cee781607:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a \\'no parking\\' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3042126304224918, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:48886a88ebe9622be41dfc0cee781607:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2021-11-30T20:47:34.763414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A48886a88ebe9622be41dfc0cee781607%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6134d39f170d9888ad8e76e7995f5cb4616036fd2c9abc8b7c7d05deb951394059bed8559bbbbab9eb6aa2e7077b8b354fba401a1965f9921fb449b69fd7f28f479ea590007364983b782c9390c628fffeefa49d9cfef4b00a7c9607c329515e70b5ad948e7a9d0c6238ebed00e9a4d895ff640837ec3a18702cfd55c9ee3e543c2f7843afde1033a1c4f0b0dae14ad8b51276f3c4fc9067e4378914d3b4d5ab38fcdd2b02e304eb29fa97eb7df26c82b7e7d22d029a8dcb9e767365f7dd6a70095c25487b14e0efbdef5607c2667b63bc28c46fbab08fe6120427fd8240b81dfaa0408a9db310accccd67f0a78c315844ed712bf15e7006df19af84fb5b131c', 'category': 'No Parking', 'description': \"The sign shows a 'no parking' symbol, with an arrow pointing left. There is also a sign underneath indicating 2 hour parking from 8:00 AM to 6:00 PM, with an arrow pointing right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2277.0, \"x\": 1046.0}, \"hi\": {\"y\": 2435.0, \"x\": 1134.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5312: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060\n",
+ "Processing image 5312: timestamp=2022-06-14 21:38:06.072792+00:00, observationId=o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19901696762236037, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3073, total_token_count=3174) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:ae1f5ac6ae4a952b35b2c4e5e886287e:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2022-06-14T21:38:06.072792+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae1f5ac6ae4a952b35b2c4e5e886287e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092516Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1e7f188793febf903301898591c119341adc13320cad219d269cb782caf35a2f519738e849d0ad4884eb4a4b820f44bcddb5443cdf0255feec38ee4a99c5e3a5d88378dd203c312a4904b4b0c46aa6a71dd43094d6d3bed31384f7647ffb76314c9261649a31297363e86474ba601a4aaa1f6aa634c5b29b379a0b7d6b31fcfa8e7221521517e87ccf4f9ac5b53ca7f154a886039a04cffb50f9ae9777cc4da7047247f19f7d51cf7b25f9d2dfbc189b143420221c07af88f4c32d6979653a8802f9760762803ddee41a39f0ac7db4bff0c3c019b970cfb9ed774de1f947bc54fddca44f920b7c7cc6b55e23fd2241ab3223b688fb5aa960439e46f70cd20d67', 'category': 'No Parking', 'description': 'The sign shows a no parking symbol with an arrow pointing to the left, indicating no parking in that direction. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM with an arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2262.0, \"x\": 1341.0}, \"hi\": {\"y\": 2429.0, \"x\": 1428.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5313: trackId=t1:0300a216618b7ba1c013449b7290f94a:ffff005f, observationId=o1:cd6c60106edc71747af6613312acc693:00110060\n",
+ "Processing image 5313: timestamp=2024-07-23 21:35:04.025984+00:00, observationId=o1:cd6c60106edc71747af6613312acc693:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a \\'P\\' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40817359924316404, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=2041, total_token_count=2141) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300a216618b7ba1c013449b7290f94a:ffff005f', 'observationId': 'o1:cd6c60106edc71747af6613312acc693:00110060', 'geographic_point': 'POINT(-111.880036848742 40.762940356045)', 'mapsURL': 'https://maps.google.com/?q=40.762940,-111.880037', 'captureTimestamp': '2024-07-23T21:35:04.025984+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd6c60106edc71747af6613312acc693%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5022ea36c0f3abe9b15388c75970e2aa4376b1e7762a0475882424cbc4987fe3c69dee7b9814690b5be9f48804e223f9b39f0baa24d20c1044ec18e9d65818dfea6cb60fc2616f1fc0c039f219c432d69c451722e5acb09f0c1ea7407dd06abcdbd8c1273f06b632b9d8fc066a5d149b337a894aecdecff44bbb95ff140d9c26b1051cca06069e13bb3ec7eea90ce44abb807c339966d42814826241c9158dcddb53c51b88818726f83456fc20550a2b07c79c9aa5f77d51aa9cd929eb96cb8f2a9ec7ae7bb30e1af757a21f92f5de4ce6146ec8c59a64c366543e36274cec559c12614b60fd5efa0c859d502b35a7d57e180422a75076807aac4fe8b7049ae0', 'category': 'No Parking', 'description': \"The sign shows a 'P' with a circle around it and a line through it, indicating no parking to the left, also a sign indicating a 2 hour parking zone from 8:00 AM to 6:00 PM to the right\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3214.0, \"x\": 2650.0}, \"hi\": {\"y\": 3330.0, \"x\": 2729.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5314: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:efbbed04d11d9498e2e35614c7711668:00110060\n",
+ "Processing image 5314: timestamp=2021-04-09 18:36:54.950129+00:00, observationId=o1:efbbed04d11d9498e2e35614c7711668:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22069511857143667, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:efbbed04d11d9498e2e35614c7711668:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2021-04-09T18:36:54.950129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aefbbed04d11d9498e2e35614c7711668%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0b11a8a95c28235a9bcfdcf74a1344d9f23a7e7993c8e2cd4208a757122eac775602f88d1c6759a0f7a01b714db9ec00c04f3776314198050d656c93376379d7f548482ee6329045195a61665ccbd32e70afaa9c4c2a259f4e0e0d9348f5d4f40fc9a4afdbefb7ca09ac46fad6459fd88f2666bfd5655e35d341c3e55bef9d3dd6315fc66b1c43bc103283e5dd2491bb3daccb34908bc863c01d77bd1b070997e108f40a132c14cf50fa675f5ade304f98867468ca14311c2471912bebf55d5b1960ba1d5ec624b74e7f8fc0f1562ba5b0c7442a6d4b71acd700c3007a663a8fa0fe5389edef86fd94bff8055da877a4a46df25424c80f309c99043d45c441f', 'category': 'Other', 'description': 'The image shows a road sign assembly. The top sign indicates the direction SOUTH. The middle sign is a Florida State Route marker, indicating route 37. The bottom sign indicates a right turn.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3045.0, \"x\": 1289.0}, \"hi\": {\"y\": 3220.0, \"x\": 1439.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5315: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060\n",
+ "Processing image 5315: timestamp=2021-04-09 18:36:55.266187+00:00, observationId=o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4422647748674665, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:b8bd72ba9f42f2fbf23ce2ea121417dd:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2021-04-09T18:36:55.266187+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab8bd72ba9f42f2fbf23ce2ea121417dd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fe4ddda1c1cfed7fabff7b4ddcf4faa9283ff102c0d2d6cec4bedfe3d9f96e40885a5faa44fbb81f087e3f3b010b8fa6c6ce66052fecc7bdb6271a4f8ad5273fc32f2619b1ab09823293d7a96797bbb7a1043f58f2edaa32a77bdeeb919c3ad48457c91d2bcedc2d520994677fbc4a3ee27c4d3e7de29566d90cd10d375ea62601ae7960fd8e01d2ca8a4258a519e656c7c80d1697b149137c1959cd000e81dfa0ad4b93977cc6d72689c16d9f7241e729e739ed3e52ffef9c13e3f73d81f917be4d92ffb340e72e34857324273c75921b4ff20241f72da53d617b978b8345951a6a0366241f155ccdb9e5152600ded66aae4f08022acdb5e589acc9d7765e2', 'category': 'Turn', 'description': 'A sign indicating a turn to the right, associated with the Florida State Road 37 sign, and direction South', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2913.0, \"x\": 1990.0}, \"hi\": {\"y\": 3200.0, \"x\": 2192.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5316: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:cc5938179e36e614bc172656fedc0bef:00110060\n",
+ "Processing image 5316: timestamp=2024-01-22 14:58:54.924227+00:00, observationId=o1:cc5938179e36e614bc172656fedc0bef:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a route sign assembly. The top sign indicates \\'South\\', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29380892529899694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3589, total_token_count=3670) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:cc5938179e36e614bc172656fedc0bef:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2024-01-22T14:58:54.924227+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc5938179e36e614bc172656fedc0bef%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=20c10973e13bfc98b71a49b63398a93f73cc209eab17be3be97393dcebf7b3fd6e200b2cfa325c89a493ca835240fef76f9da6bd3cb82c7fe50aabea906edd32c1db3f43e880d081b75321a9c34f3e24073ae5f14fb2d0bfdcbff513750c47d49c5ff28d076de269b2b78bde84b0160fe5c9f75b6bf730206d35c5ee0239f1b1c64b93c025bd3e46995931fe01ba0874a04e144468b8ac1173b61c4f74e362bedf40e08d5707c0c9f66a9a90205725857ae04c00a9233fdba4931cf39752eba085cd63d7765ca9a68873d4bb6afbef46b81cc1a2ac83a1e67d82e0df3cec7f0c35147cb4526faafa50b82c7389cbae2745da715c481ed5f51df2b96043f22c15', 'category': 'Other', 'description': \"This is a route sign assembly. The top sign indicates 'South', the middle sign indicates Florida state road 37, and the bottom sign indicates to turn right. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2833.0, \"x\": 2552.0}, \"hi\": {\"y\": 3158.0, \"x\": 2808.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5317: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060\n",
+ "Processing image 5317: timestamp=2024-01-22 14:58:54.588237+00:00, observationId=o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates \\'SOUTH\\' direction with the Florida state route 37, and a right turn indication.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.365568326867145, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:f56c5526cc95aca18d81e3ca2e0b5881:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2024-01-22T14:58:54.588237+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af56c5526cc95aca18d81e3ca2e0b5881%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=593a1b2dd3896bfa3ecfb86c7b3d277881289b9c3042b8ba5041dfcf614cdc598abd352adfdfb55e64bdaced0425bf293f001bf484007ce169568f92d131fbc59d967accd5b4b15b26d21e9dbfdc49d978d0218eda5898acc4b8812d5cabe239c8f309b9fa17c3acfa52cba14f889d489ab5e89cad806ef48ba3166a15c714f12c3cc0620c68f00e6616ef7f9a8665d89a2f2694ec9eba83c00548155cfe03362aacc50295f3b917fa0824b5e87db3068151ec028a305ae0f4661f11d66c3ba22e75b7db1d9d36d36bc3a506a86144cc57b1bac0b4ca3a50d34a8b696d3e4aa9ea061437c4947d7c92ad815d0eadca8be4f3292e0a1d694f45f51b0b63f4d2ca', 'category': 'Other', 'description': \"The road sign indicates 'SOUTH' direction with the Florida state route 37, and a right turn indication.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 1544.0}, \"hi\": {\"y\": 3213.0, \"x\": 1722.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5318: trackId=t1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f, observationId=o1:60aaadd3ef1001b8089ccb83b954f802:00110060\n",
+ "Processing image 5318: timestamp=2022-09-13 13:26:38.815710+00:00, observationId=o1:60aaadd3ef1001b8089ccb83b954f802:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1885937766024941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0300b1b4bd0dcf103a1a2a073f49f578:ffff005f', 'observationId': 'o1:60aaadd3ef1001b8089ccb83b954f802:00110060', 'geographic_point': 'POINT(-81.9590671560532 27.9957119368067)', 'mapsURL': 'https://maps.google.com/?q=27.995712,-81.959067', 'captureTimestamp': '2022-09-13T13:26:38.815710+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A60aaadd3ef1001b8089ccb83b954f802%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a4174efdea16f033762f926b046f8646a6b9bcf98fb6f9d5b5760e7e595f915bc226780a041ac90b37dd23de75b047384819be864cd55e680b9ec994b405d40a7b7a33a7e18cbd27a27aef2f3f2c3d88bbff59d0772828e569a7298d14e57cb27bc4f8fbda1f68dad02c68eb28bfc1cc20b4813afe0e8c014d4f4960447644f29513670f4f2f5c26c4e966cb6181e22a48ddb2767f9db5181c1a48487102e4e934b6661431ea1d96977557bec10bb659db0a58be4bd202f7f5dcac23beb837fd05d3ca0266c008234d424434bda9fd5ff77191e2423157c03b43cff075df979b9db13c663b00b541974a8c3d00cbedb753c0278791a4e1ec431a72ccbc9a28b', 'category': 'Other', 'description': 'The sign indicates the direction (South) and route number (37) of a Florida State Road, along with a right-turn directional arrow.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2899.0, \"x\": 2811.0}, \"hi\": {\"y\": 3125.0, \"x\": 2971.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5319: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060\n",
+ "Processing image 5319: timestamp=2021-12-06 18:27:09.469164+00:00, observationId=o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07447498699404159, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=493, total_token_count=546) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:b7a0a97a6567b447bd3c8a649d362b0f:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:09.469164+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab7a0a97a6567b447bd3c8a649d362b0f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=683346a7d2d67e03afe5f1cd8ad7640d08b558783e4b846cd5ce15e179582f1612ee58ec041bc551d73b60787a94603316579c7baff34e68aeae8ed5b1101bd29a163adf499dc40559ac30689969379d74f7d725956e0c20041443a149644444ad7c0961d1d5492bb09a16590f441087d9a835047c827bf2ad1185fcd83d8c14f2391917b5bff9a7d143ef74b7ec86d1dd5b7e918e08aa96b9fb6b51aac20ada2d1632de43cf48f6fef64a5c8ff91e1bc86410c7ca3c8ca81a972e3f67850a63c18f1c6010a4b800a8a1b76fd5f7d8d45e9a66d3c84d2956f9c22dadc649cfe77eb323da255047b971d905b12aeba59554f417bb78168ca838cb0e50b8752890', 'category': 'Other', 'description': 'The image shows orange traffic cones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2560.0, \"x\": 2780.0}, \"hi\": {\"y\": 2693.0, \"x\": 2827.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5320: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060\n",
+ "Processing image 5320: timestamp=2021-12-06 18:27:10.265196+00:00, observationId=o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange and white traffic cones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.0970886264528547, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:2fcedeb42b5dad457bc9c395a85cb1bb:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:10.265196+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2fcedeb42b5dad457bc9c395a85cb1bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=57d9469e218b7f27377a4ae6a967807f561d66cfb169f73ddaf827690bcce6b5ce665bc9c5d5e8c9580d0b51c2a3e1fc717954e3ccb3b555afde48a475ac36b56cdcd22ffa730e9a85080f21718eaf447713ec7064abbcfed44c65c88086e58d6d29e53bcdeafb432321f684a96548c8f221fb11ee8766211efed74e6624691d7713b7d21867fb06944607014e076b3028ac98678d76933f182a37ce230a053ba15817e9c21b0f01e4536ba6e651ff159cbbf3039777922b0ad3107d5229ce86b2b322e440d7acc72ffc40c1c78b074d287762f66bce3f42cab95a3d16dec8d1f764247265a35bc993c31fd250bc4f966a47c05eba82d0b49eb3feaca2e48480', 'category': 'Other', 'description': 'The image shows two orange and white traffic cones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2533.0, \"x\": 1980.0}, \"hi\": {\"y\": 2665.0, \"x\": 2025.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5321: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:626f99ca718fc82dc77cae1699f77c7c:00110060\n",
+ "Processing image 5321: timestamp=2021-12-06 18:27:08.501267+00:00, observationId=o1:626f99ca718fc82dc77cae1699f77c7c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains orange traffic cones. These are used to mark hazards or direct traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15888185349721756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:626f99ca718fc82dc77cae1699f77c7c:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:08.501267+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A626f99ca718fc82dc77cae1699f77c7c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=749797f9401309308a3779933a9172b184842cdd3a4f260b85a282b1a533abe745d2494d61777663bfb5db03bfef82f41a1e7d257ac7cf22e5c786721012df3f81585764ff55d41d99638a3762fffbd1149700bdf493136f4a3159ca7d731455216fdfcf82f34045f3b046a38ae83e219b148e7ca089e31f3b98544a76a69113c1a43f45a3b910e2745ea6228a76c3b0864625c31b34563b4e37fa0f659dc5a0f0d089a867a3553710d7ee524215b05fe0836c87284896ec0739aeb2e60bb6c52bef2f994a4ef8ff76d39097845164356b60925be720b6475ae47e5911856288b70ae17ebebfe0245d160dd62a7763201f06e97bc213c5208f891baf13cd295e', 'category': 'Other', 'description': 'The image contains orange traffic cones. These are used to mark hazards or direct traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3467.0, \"x\": 406.0}, \"hi\": {\"y\": 3580.0, \"x\": 442.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5322: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:97fa6ec6c17562652e5a8a8b72803838:00110060\n",
+ "Processing image 5322: timestamp=2021-12-06 18:25:55.879225+00:00, observationId=o1:97fa6ec6c17562652e5a8a8b72803838:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign\\'s exact purpose or meaning due to the image quality and obstruction.\",\\n \"image_quality_notes\": \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign\\'s message.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5093186054754695, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=109, prompt_token_count=493, total_token_count=602) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\"}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:97fa6ec6c17562652e5a8a8b72803838:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:25:55.879225+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97fa6ec6c17562652e5a8a8b72803838%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc2a67e7872af7610656933902386b4feda01d1d0796686450d7e2f6d88b735570ec33de1aa9762801e8457b607c43e46ea5e090228ccf79dc9ea6b2740fe90b05af8615b207a0505b49dbd6947ba00b1296069cd621c9d0111cd1bd8f845610542af6a13f0ec94dc50b722416f4c7094a41afa1e1cb5d175602a9be49b9bc55553d7c39a2484b8b2cf6d989fc97f9912f2a730a64bf1c3a431f08d87aa46e13037a316e00a7b3a38b9dfa8e0a583bdeca49cfb98b3a88b0f0d7f3be688fc5b32d035e0e581bdc6e432c5341fbf89eeb42afd2e9478049925e3f685e822166eda1ae5694c9adeffb1dde709d4650b61397a8368772d4dab11c922cf0cb478ab8', 'category': 'Other', 'description': \"Based on the image, there appears to be a temporary sign placed between orange traffic cones. It is difficult to determine the sign's exact purpose or meaning due to the image quality and obstruction.\", 'image_quality_notes': \"The image quality is poor, the sign is small and partially obscured by the cones, making it difficult to identify the sign's message.\", 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 3423.0, \"x\": 1256.0}, \"hi\": {\"y\": 3512.0, \"x\": 1285.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5323: trackId=t1:030133824da747970523b272689a5e14:ffff005f, observationId=o1:b796455f570f52cbbb0f34857bb017ff:00110060\n",
+ "Processing image 5323: timestamp=2021-12-06 18:27:08.501267+00:00, observationId=o1:b796455f570f52cbbb0f34857bb017ff:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5369669596354166, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030133824da747970523b272689a5e14:ffff005f', 'observationId': 'o1:b796455f570f52cbbb0f34857bb017ff:00110060', 'geographic_point': 'POINT(-111.896630127986 40.7564970935441)', 'mapsURL': 'https://maps.google.com/?q=40.756497,-111.896630', 'captureTimestamp': '2021-12-06T18:27:08.501267+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab796455f570f52cbbb0f34857bb017ff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93ac4001c941ff852c6752235d97c50e4511bce517e5717b31b8c3d284f60db36efa5031278cd4c27c7b4b3826dcdc6ad7ea93e1a09cb7460e3628d8a7275ee1c62707031662f93e0f06e47f038f88eae4c41ac8d1e5114ea93f0dcf1aff9186b7e29004ae7201bfe05a0e03efad3c3a4291ce122c5f7e6c503a5ac97a3b59bfcdbd33f280614fbdec35112528c73a3856ecdf8a67985382003de46254e94f4039065915d3acc2cea9d2331c41f8fded10cae96fac6ade5aa9624fa181d3ce6cb0dcecb25a821d0376d9f7275088148baad0ff2d0f836b203cd578fc69ceff276c72f2d64ac5845c3c853cc4dd8da5cd81d09f8532ec9269dd22f44a9f5ef7be', 'category': 'Other', 'description': 'The image shows traffic cones and some form of white rectangular object. Unable to discern if any road sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 2581.0, \"x\": 3469.0}, \"hi\": {\"y\": 2699.0, \"x\": 3504.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5324: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:fea505eb137843e8810d18699bca46fd:00110060\n",
+ "Processing image 5324: timestamp=2022-06-30 15:45:58.298395+00:00, observationId=o1:fea505eb137843e8810d18699bca46fd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12547380783978632, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3589, total_token_count=3657) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:fea505eb137843e8810d18699bca46fd:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2022-06-30T15:45:58.298395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afea505eb137843e8810d18699bca46fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c2410baa40d004616dd2e581ab2cc145527d808fcf1c88f570772be14d6df927237fc6f1123454eea92337b3d1912bef278400fdc2338b76449fe414dd701c0fe616784a4c856856b7056b077e7c1e5579f554d817984755a528a98b851d809043404f9b94a31765247dc29080a6b38e0ef915f934b26028fede8049653661909d0c9398c184bead6eeb57aabb94ae1c62705031fd012d916b2eb198b3c2b3ef392ea18d3650e1034c22d547f0228518c7c6794b4dce35bb3e6524ad75e31324b346dbd262aa6fbfdc80dcc5d7f90f39512bcf99a12bb848565b460f4bbc1f58e21a377c9d8cd01eea7b09aef25f2166dda932f9c215d4885adc6d59364e44e', 'category': 'No Parking', 'description': 'A green and white sign indicates 2 hour parking is allowed from 8 AM to 6 PM.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2142.0, \"x\": 2820.0}, \"hi\": {\"y\": 2327.0, \"x\": 2896.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5325: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060\n",
+ "Processing image 5325: timestamp=2022-06-30 15:45:57.998380+00:00, observationId=o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3945590929053296, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3589, total_token_count=3676) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:69e28f5098bfbe49d9bfafc0c07074a4:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2022-06-30T15:45:57.998380+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A69e28f5098bfbe49d9bfafc0c07074a4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47e43fa14435a25d0213ee5f51779446cafc66392109d0962e2f1a1f3a2cdca9fd43d28bc498e3ce597088f5e071a8bd688d5769ad128dee086272dfe1710e39785ddf1f130bba0aefb84c1469a4223ed4512f823223b7e5d6e924743ed8bb9bae8690e842a80fa6a9721ad2c3dc2ecc1b8b1a0fd11d3c4d190cb1482d9e2d1b405a7daa56934eb53ce16d2dc5748fa66125f52fec2bb5ebffc03263da59163ab80cec175b98b46ca49124bbcf674a670704abf0688d4594857b5cc5b7b8ee697a7ff3f6d07fc865ac82476172803dfd007ee6a2ca0b92072c3a2328d3d7010b5be0ee3ea575adb4ff28bd7a75b435008bc4bc9fb52ce91dae3c53513afd2ed5', 'category': 'No Parking', 'description': 'A green and white sign indicating 2-hour parking is allowed between 8 AM and 6 PM, with an arrow pointing in one direction, the sign seems to be in an ok condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2145.0, \"x\": 953.0}, \"hi\": {\"y\": 2326.0, \"x\": 1063.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5326: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:7ff052a67611a1da5f014ee06558e293:00110060\n",
+ "Processing image 5326: timestamp=2024-05-09 18:13:19.258095+00:00, observationId=o1:7ff052a67611a1da5f014ee06558e293:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26104048608054575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:7ff052a67611a1da5f014ee06558e293:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:19.258095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7ff052a67611a1da5f014ee06558e293%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5d229669160a359ff624f550c5a597b959b071158a06f2a2d96f340463dab84786eebc00c39272f2b67f9ab3443360e81b544e6a6eecc18d66d118e185f05ea09784e71f145f4550e329c7f059f720e7039764ee1781877fa544445051e130d949f8a995e7827e159716fc34b84b1bbe30ad0448ac0bcdc5052b8b2420649b40e89cbc766c722f22cd773bfaba89617ce904e3a8591de14960a50135d5571784beeeb450712cf4e22bd908d0a06222be328a5fc5a41e0aaabffb65a85e76eb2dc67ad2bd523c5be056bb4d757f041df898f6d786c549448fea35fb508f1704ab9b7fcb51f3b7fda62e697b7e6ca1894a38055ef3d073761f738fea5a623daea8', 'category': 'No Parking', 'description': 'The sign indicates 2 hour parking is allowed from 8 AM to 6 PM, indicated by a green sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2139.0, \"x\": 1127.0}, \"hi\": {\"y\": 2317.0, \"x\": 1242.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5327: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:8b94532b62125280e733e7e089d4d183:00110060\n",
+ "Processing image 5327: timestamp=2024-05-09 18:13:18.285920+00:00, observationId=o1:8b94532b62125280e733e7e089d4d183:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.\",\\n \"image_quality_notes\": \"The image is clear enough to make out the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4418361106615388, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:8b94532b62125280e733e7e089d4d183:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:18.285920+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8b94532b62125280e733e7e089d4d183%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d23448f5b78f7a9ff9421d917457d4ac8551c38b9a5b2af5e867927c18627ae43b8e454288023a7bdf25a4c9a1e42863ab7c923180e23b2c7054125f49df0ac7d8c97b1c944f0cbc710a768f81cdee8112a2cc9d7f809a62ad1d9bb180cd88c38bd212880d106c51ca1f2a13a149c7823b3d0c7f81d22b4137335be256b0be57caa7c5321612a6a9112b2aa2d69936f673497175b9344627790e6a455f419678ce3e8f17042e18401536357db4030d4cc729ef4fc19a016c144411e176e6b270d4652d24f334c192271cb76916dc7be4e7bf400e22fc4ba9320720ba3f8dfd0420f60d03bcade10b4833ba760dcfa6a137800c33999c6c698b5bee3bd36e322', 'category': 'Other', 'description': 'There is a parking sign on the pole to the right which indicates that parking is allowed for 2 hours from 8 AM to 6 PM. The sign is partially obscured.', 'image_quality_notes': 'The image is clear enough to make out the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3124.0, \"x\": 2803.0}, \"hi\": {\"y\": 3266.0, \"x\": 2897.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5328: trackId=t1:030263360aabfdea1b60f9a320d96dfa:ffff005f, observationId=o1:507d21dbb27c10b973fca96ce35fe282:00110060\n",
+ "Processing image 5328: timestamp=2024-05-09 18:13:20.301532+00:00, observationId=o1:507d21dbb27c10b973fca96ce35fe282:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates parking restrictions. It states \\\\\"2 HR Parking 8 AM to 6 PM\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21255936829940134, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030263360aabfdea1b60f9a320d96dfa:ffff005f', 'observationId': 'o1:507d21dbb27c10b973fca96ce35fe282:00110060', 'geographic_point': 'POINT(-111.886476213241 40.7518156675327)', 'mapsURL': 'https://maps.google.com/?q=40.751816,-111.886476', 'captureTimestamp': '2024-05-09T18:13:20.301532+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A507d21dbb27c10b973fca96ce35fe282%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092220Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9836d0a0e7be988aa97a9a2e17a253a084ae3387d18630acc17d712b15cfd87f1ea489e36adc7c79157ebed0934ea627a6ad173087d5b1cc7eeeec5841e4cdaebc11e1706417de1d3731dac6215fbc33c18900a2b3ed9a39c4981d40f5013ec5d4d18b0fb116a4ed10ecda4708d6f0d1ce3115842ef840871d8da71f3282ac988b3a01cfa641505a49f90b87c3baea79a02a1f64db1cfd1ccb678cfab5a44ad0ced7a452c823e67e026daaa664928e49362e6b12f12e7e1fb084a2d35933413dc48e846ee272c65f592e27801d2c33319bdc80eb162b29afafb496d4de07c7355bf28530e61655f3f352f7a5765e62303964821418e8b0e4926cd9778c817a87', 'category': 'No Parking', 'description': 'The sign indicates parking restrictions. It states \"2 HR Parking 8 AM to 6 PM\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2151.0, \"x\": 2988.0}, \"hi\": {\"y\": 2327.0, \"x\": 3058.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5329: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060\n",
+ "Processing image 5329: timestamp=2022-09-28 21:31:54.665124+00:00, observationId=o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing signal with push button. The pole holding the signal is showing paint chipping and wear.\",\\n \"image_quality_notes\": \"Image is clear enough to see the pedestrian crossing signal and push button. A vehicle is poorly blacked out in the foreground partially obscuring the bottom of the pole.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5609556198120117, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3589, total_token_count=3689) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)'}\n",
+ " Error classifying image 5329: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 419)\n",
+ "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:ec8e4df88d7129203b907fd8e5ffcf1d:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-28T21:31:54.665124+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec8e4df88d7129203b907fd8e5ffcf1d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=69af31461554d0ecf76de9186d7408736d50524042bf9a3f488ad32ebb91c079e5cca33024f39cb4e12d0dfee9908fed825491a5601503f99a66709ca3403c37cffeb5ed141ce33f870b4c79fe642898064162826adadd3243fd88b42d552e87f994de937edce884f42651e117090ffcfea1a9befeaa3ea66721f6825aaf1aedce2424f62d13c3e24e4002653f7e66c70018709595ff5883caa7b445b736e35e180d6d96d1a32b98d20c599318f3533a9dd145d91883d6cb13c8def30bfdad35c9790d99f255da985beff8b118afd72d97d30dde2e87a85d1883f9d6eb1ac70e6f26833897a800bc9b8bdcbb6151028acd6f3059a3a21055d7058897ad42355f', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3308.0, \"x\": 3045.0}, \"hi\": {\"y\": 3362.0, \"x\": 3077.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5330: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:80e79ca99833d7d9d1a7924bb54947e4:00110060\n",
+ "Processing image 5330: timestamp=2024-06-12 18:46:13.968341+00:00, observationId=o1:80e79ca99833d7d9d1a7924bb54947e4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words \\'Push Button for\\'.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2746548384762882, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:80e79ca99833d7d9d1a7924bb54947e4:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2024-06-12T18:46:13.968341+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A80e79ca99833d7d9d1a7924bb54947e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c8ecd80a6416575dd269656b1c5c52fdcf7ad0b9b2e7624c4d74ae5e016be112ee7bea7b4aa0125a7892e146c2e92b935d18e9770081036543384e517c0fc17185ba4e5d7234281373a317458dabafe0fcb51e77bb466df667171bca2e14a9d7827b3ebec9f75c8f6069d62973be11e38fc03c8b78f6892ff1b623324f9409c0aab2633e2ad3b434a5fe28fcfd9e3662dcdfbf3abf2ec4f70cce3877133f9c5d27e2352de8e266f3c6f89ab4b60654074c150bc3874c02d208c5f3b5fa3ad54d10dca1229872b34876b4f0f8e4397850ba207c81d5e25ee71e3c8067d44d31ecda6415ce638391accab25e71ca896ec9d08b3f44c97a595b13049f152158d7a', 'category': 'Pedestrian Crossing', 'description': \"A sign indicating a pedestrian crossing with a button to push. The sign is rectangular with a symbol of a person walking and the words 'Push Button for'.\", 'image_quality_notes': 'The image quality is fair, but the sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3420.0, \"x\": 2803.0}, \"hi\": {\"y\": 3477.0, \"x\": 2848.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5331: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:832a94533069b565e93e0cc2c137673e:00110060\n",
+ "Processing image 5331: timestamp=2022-09-15 20:28:21.102229+00:00, observationId=o1:832a94533069b565e93e0cc2c137673e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6804244995117188, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:832a94533069b565e93e0cc2c137673e:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-15T20:28:21.102229+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A832a94533069b565e93e0cc2c137673e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03de0610be6606d333b4f1fe79d17df6b13950b1efc862575a800adb5990bd6ad0d47c9d731705dd6521ee6c7782143ce5c77d853ae0bae15dbd14abbbf8e2ddd61622c40d473747e1df7f16417c64f45a156909220604e6c44a5b590f59eaab4872e0e83c9836a8a45ab7f7a06f930c0a682103a6aa089af5fa23dc0a678fa3734a23d9b7bc0755fdb7f3e7c173301b3e7ecdf287445e0db298e95437c20eaa41fd6a83a11ab19bab60df78a28e122f457ff2889c220f954f830fca25e89f5e415853feb81a09a777b82f3d8f71193d164d78e0fef004b059efb4656c4143523291197a926c111930541091cd1dc8b8186b896c51386e2c0f61600a897dd950', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing push button sign attached to a light pole with a button below. The pole has some paint chipping and weathering, which classifies it as in fair condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2472.0, \"x\": 1164.0}, \"hi\": {\"y\": 2538.0, \"x\": 1202.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5332: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:eafa86bfa4e0d9123b61f014ce819bba:00110060\n",
+ "Processing image 5332: timestamp=2022-09-28 21:31:54.189114+00:00, observationId=o1:eafa86bfa4e0d9123b61f014ce819bba:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.\",\\n \"image_quality_notes\": \"The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.288662806801174, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3589, total_token_count=3681) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:eafa86bfa4e0d9123b61f014ce819bba:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-28T21:31:54.189114+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeafa86bfa4e0d9123b61f014ce819bba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b581f16334dd85a8627d0fdb0fc86be062dfd887e8243a56c6ba0789c88a48fd13268896eb4bd71a7ee928bd0d9dba7f51e43b77de3be60098164424297cdf887d616316246fd511be706cdb7000e0eb5aa052512cd69678e05ff3c4e3feb989792131fcf81c5534bd788c2dff2eb958ae2e6b7af47ed6c48cda9741ed27bd05352d8664cbd609ccf63618fb2ff3f244dbc23ea3dafff72abee1cc73b396871c1a52c3bc6107b5e443f4d84c3cc0cdc9ee04e48c2482be30a98522d55a32246be5a79f19daa39c306e05744f51c617cda8202d78ca81051697f6b21c8b468432ee4ec286fe630b8b8d720d3c54878e5a0aae6108719cab0ccc2acb39fd9db24d', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing signal with a red hand displayed. There is also a sign indicating a push button for pedestrian crossing.', 'image_quality_notes': 'The image is of decent quality, allowing identification of the signs. The pole shows signs of wear and tear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2398.0, \"x\": 799.0}, \"hi\": {\"y\": 2458.0, \"x\": 840.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5333: trackId=t1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f, observationId=o1:906838db1df3295f78c7f15ac5b1ee80:00110060\n",
+ "Processing image 5333: timestamp=2022-09-15 20:28:20.318247+00:00, observationId=o1:906838db1df3295f78c7f15ac5b1ee80:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a pedestrian crossing signal with a \\'don\\'t walk\\' red hand symbol. There is also a sign indicating the presence of a push button for pedestrian crossing.\",\\n \"image_quality_notes\": \"The image is cropped and focused vertically. The pole has wear and tear, but the signs are visible enough to determine their type.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45340659731910343, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=3589, total_token_count=3694) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)'}\n",
+ " Error classifying image 5333: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 424)\n",
+ "image_report to be inserted: {'trackId': 't1:0302861a60bb31cb502b0ef43e1d16fe:ffff005f', 'observationId': 'o1:906838db1df3295f78c7f15ac5b1ee80:00110060', 'geographic_point': 'POINT(-111.902702669402 40.7564645222097)', 'mapsURL': 'https://maps.google.com/?q=40.756465,-111.902703', 'captureTimestamp': '2022-09-15T20:28:20.318247+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A906838db1df3295f78c7f15ac5b1ee80%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa2ab15e9c04cb156f7b35d31a8042a5a1693291004b2a817f8bfe5ceb6c6dde342a30fdf1cf73839d9b6ec81e8e0f04b44f5eefacc69e4234426ea4fd7b7da268be6eeab269d575aaf8f01e50311c3cd2fa7f361eff922abb49ac1b00dfa10be5eb93ed24c4f58ca1bdc14cd092c4142b0100f10a6fdd48f5f7f67b63357300ecde9fa2245cebcec83628e020a1f2ab56df31b1fa51e096bee78d153a6a807ba8107138fa3bd37999cffcf7bc8599ee646c2c4fabed98ef1f0299430a088981cfe62b376cca972626588a518a37ddaca05d58c3473e1a79b17ce98c6c434e371173ab03b55b58a5e119485b7321110a030d0386253e20f88eea43253c95398e', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2430.0, \"x\": 1540.0}, \"hi\": {\"y\": 2497.0, \"x\": 1589.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5334: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:5a4b843e2cac6baa084dd3c5306e0521:00110060\n",
+ "Processing image 5334: timestamp=2022-06-23 16:39:55.229268+00:00, observationId=o1:5a4b843e2cac6baa084dd3c5306e0521:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text, indicating a speed limit of 25.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11711576581001282, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:5a4b843e2cac6baa084dd3c5306e0521:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.229268+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a4b843e2cac6baa084dd3c5306e0521%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b3ce0e0a61cd2b03527350bd814e8eb74b74cc024d6c0653dfe4ffac98d340935d00580d49ef643eb5d729045ae2f670ca610972ac3d2bf25b483545c4fb20c84338f06c5f7e4863c6dfcec83797a967817735e8da835549cac8a542983cc741b77ffb6a18a40ec038292a412d8b5f877016c480625a35531b81b6c26b49324c771e8b06395cfc00212959b71d034f3a9d8962159b2b0da6202203a6c4038f876af2a3a140c08fb4efa3d955c783eb36306ff9600c3c46e2b4667a3c0bb6b888c3a873e2529f78741f28324502c201008874a596bda9afea83ef7b366a701559d7da4e5164a44fa2c273c72bab131d1eb8e3a9fc1be0a49a11b8a25be9531c0', 'category': 'Speed Limit', 'description': 'The sign is white with black text, indicating a speed limit of 25.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3082.0, \"x\": 2067.0}, \"hi\": {\"y\": 3267.0, \"x\": 2203.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5335: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060\n",
+ "Processing image 5335: timestamp=2022-06-23 16:39:55.845264+00:00, observationId=o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign with \\'SPEED LIMIT\\' at the top and \\'25\\' in a large font below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12807474002032213, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:417069acca8c7d5c8fdfcd265cb4cd55:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.845264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A417069acca8c7d5c8fdfcd265cb4cd55%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a4f0fab5be9177913e4ee3d42f4e54a2850633c36788365cb5dc13e56f85f780facbbe36503a0ac0729c4bfb3f1ea4070bbba74b32879571fc94281e0565521a9044ab7ab86cd836e7c9978a4d9bfc5147a34e669fb368924ed5c9b0fbb816b39e76a133abd4db940c1136b7d1d0cff43b7ae58ba9bfb761f8a7006e6146e4759b824ed42f5a93f099ce1092752c46c7c94bb4d21db45d3689a2a23b36c5a3cc9809bd08e743d3fe248df47f45e2b2b210a45489346971fa37e7ca67c09314db82f5469ba6be9d8a61b6fa28f8296813cce2e3f65ac5d476728f18c45f82fb672a2bea74bd3e710f80e35549cb4c41d65d4794045627bcd78b13cecd042775c', 'category': 'Speed Limit', 'description': \"A speed limit sign with 'SPEED LIMIT' at the top and '25' in a large font below it.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2073.0, \"x\": 21.0}, \"hi\": {\"y\": 2356.0, \"x\": 173.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5336: trackId=t1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f, observationId=o1:f963810dd7053d2acba72429e6e79970:00110060\n",
+ "Processing image 5336: timestamp=2022-06-23 16:39:55.845264+00:00, observationId=o1:f963810dd7053d2acba72429e6e79970:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a white rectangular sign with the words \\'SPEED LIMIT\\' on top and the number \\'25\\' below, indicating the speed limit is 25 mph.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14561170484961533, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3073, total_token_count=3155) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0302f8e28e395f99d60d3f9b0a16ec44:ffff005f', 'observationId': 'o1:f963810dd7053d2acba72429e6e79970:00110060', 'geographic_point': 'POINT(-111.900356328975 40.780316957025)', 'mapsURL': 'https://maps.google.com/?q=40.780317,-111.900356', 'captureTimestamp': '2022-06-23T16:39:55.845264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af963810dd7053d2acba72429e6e79970%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=354adf603f9d9d62691bbdaff4247dfbdbadf2d08339e1892039c7a1a902438edb88fc50e1208471914f82c1e2d86a2fc48c293a34fe99716002a3a26319f1cb187767d10aaecb2ce9b28d40cc2f9368ecee7655f1bc5be9ecf1aa32102ee81b931400e2a7d5ed96f318372f4698d17da7880af640c02efec53bc728a457e4d8f2b5c2ac0f0d1c9493f26f9bdbad51bdf8186e49fca183c4afcff9bc46d9ecdf7b155786e0d81b613ad3f1a6e9e4cfcb6f9faaa785651554764e528c0052fdae0bf253372c3b85daf3fed0abf75efc5882fd986f3d73cd3af2ca18dee60b823a7007c03d72a183e861d98fd8207ef33d26f373c19b17f559478d2fbc37899869', 'category': 'Speed Limit', 'description': \"The image shows a white rectangular sign with the words 'SPEED LIMIT' on top and the number '25' below, indicating the speed limit is 25 mph.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2968.0, \"x\": 3050.0}, \"hi\": {\"y\": 3237.0, \"x\": 3206.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5337: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:c9440b08a6ce67da4566647140f0b19d:00110060\n",
+ "Processing image 5337: timestamp=2024-02-01 21:41:12.952004+00:00, observationId=o1:c9440b08a6ce67da4566647140f0b19d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign with the name \\'Hallam\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12342483766617314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2557, total_token_count=2619) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:c9440b08a6ce67da4566647140f0b19d:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-01T21:41:12.952004+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac9440b08a6ce67da4566647140f0b19d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=686e3d27914bd09552aa69bac18d7e43a7ffca53c52829978c29a0f157dcedef0e2d24201676d7987a7d406986d801e24ab3d0ec0397a32477d482c8bea3c84e36f9b2b13df4443be5f5eebd3ec2881dc46b8bfbf7e4aaf349530e9ea6f8609befea4f0282c9dfaef4d28ebabc5b7c73fc808ba3001659fb6b85a37aef8b9131c194d2d3c0b0be05818dc492bbd50604878029a21aafe74635f1bf7bdc6b6944ee42151a0ca0299c06f6a9604e3f095c905b3f4b345bad288e59fa7ceeacce938fff4b3001306610d182dcaf02bee71829f54aec27f0082fb46d604fe187c010483c087f9bde2c25da01efda4213a9727c5ab99bf731a30919c5432c02845ff7', 'category': 'Street name', 'description': \"A green street name sign with the name 'Hallam' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1502.0, \"x\": 1205.0}, \"hi\": {\"y\": 1712.0, \"x\": 1600.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5338: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:6a015935e7f8be85d12a402f5f079b49:00110060\n",
+ "Processing image 5338: timestamp=2024-02-02 20:31:38.744431+00:00, observationId=o1:6a015935e7f8be85d12a402f5f079b49:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green sign with a white border says \\'Hallam\\'. It\\'s a street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17422355822662808, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3073, total_token_count=3140) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:6a015935e7f8be85d12a402f5f079b49:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T20:31:38.744431+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a015935e7f8be85d12a402f5f079b49%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=914f1fbf810ac4c66e9d89d99e838dc0c59a417655005a8bbadebbb3201d0076cc08e70eb0958c7137b1a6e45447bfa92e2292a89314070cc1cae07b61c50785e4c75b48ec757ef4e7f0126fca9a46e301dea9c6a024af591d229e2db96bef54646345088f1849e94771a01047b74950acd2b1ecfe2fcc76bda222d323bf76b9a0ad725060e96c50020fe336e72465c488df39562edf42319f0e0e3883498a6bfa1727b4077931c7e02460d5690d7db44e0fa729d6c1f739b9e99ae7828fe3603a153b4c06c6ce1e99d4cfa55bed2c3e47ea75286204e1faad6e8b68f631b5e4ff7c2cffd7b13daa7eb27c4d3daf2030603743659d26f8a5b21af0014ad342a3', 'category': 'Street name', 'description': \"A green sign with a white border says 'Hallam'. It's a street name sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1758.0, \"x\": 1140.0}, \"hi\": {\"y\": 1934.0, \"x\": 1484.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5339: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:edb9fee316b3f1ff7c550626fd58a359:00110060\n",
+ "Processing image 5339: timestamp=2022-06-16 16:58:52.407727+00:00, observationId=o1:edb9fee316b3f1ff7c550626fd58a359:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that says \\'Hallam\\' in white letters. The sign is mounted on a metal arm.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19980801327127806, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2041, total_token_count=2112) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:edb9fee316b3f1ff7c550626fd58a359:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2022-06-16T16:58:52.407727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedb9fee316b3f1ff7c550626fd58a359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7ab51a45193bbfd9ca90eef9a208bebe4d2afd69149c4634352dfa252c5b7eefeb660e7db4bca21d958939fa8e2696c1f9f3bc19df8c81acd82f91124d6d907259938b34ba5d0344b4d6d2708fd727e9ac1841b89daa9d183c3b27d570b68c80cabd076f208b734c65e0d06bcab92d305a7f3f7b0e22635b7a088994bc6cafbe665bf288ec50ddfcb9519772fd28393dc4b0a60b16fc97c64f1006689aa00ecedf5609324458a288076188409b4f3cac96b46954b3ffd10233732d337c3ec5792926f15ebaa8a2f1c23606641f025b5ce9c3bbcc473e4784f440fbc569dfcf415471b1452944c80e9544b065dc74b0dcbebbc3076660df3beb2c30fd3c14c57', 'category': 'Street name', 'description': \"A green street name sign that says 'Hallam' in white letters. The sign is mounted on a metal arm.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1390.0, \"x\": 1434.0}, \"hi\": {\"y\": 1669.0, \"x\": 1779.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5340: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:544e27ddbf2ba8988331df148eb50220:00110060\n",
+ "Processing image 5340: timestamp=2024-02-02 19:02:54.402264+00:00, observationId=o1:544e27ddbf2ba8988331df148eb50220:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign with white text \\\\\"Hallam\\\\\" is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14180621793193202, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:544e27ddbf2ba8988331df148eb50220:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T19:02:54.402264+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A544e27ddbf2ba8988331df148eb50220%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c8698a65bc906fe9ba9542eb975de3d5570c0f0e269b9f1be8f28b9c613d98c6412aed3f9d6a0a0d2201797ab7604fb6fe278c135f4ddd01e8c53f17fec05e45f2844df8cf6273149ccf3e433af03a75fd0b4fad8bf33b048a722f74f58187df0faea45bc9061d07bfe218488acca4eb9a124cc419a6526c70bfe2c5c4c726dcbe564b049551320a3d00291fe4382d324ace541689640a41136f89e72084dacdb97e6123657299efe6855e85ff9a094c5ccfaa4f65565793d08c1544a29334704ea53716e6ffd058089ad2e2d8010a351a047801aad3084f15d6cd01573d7b13e4c29c5e2f7564a00bec97f8748d043d2fc306b41b855594a876afa1720eed6', 'category': 'Street name', 'description': 'A green street name sign with white text \"Hallam\" is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1194.0, \"x\": 1570.0}, \"hi\": {\"y\": 1342.0, \"x\": 2096.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5341: trackId=t1:030399186a0fee1e471bc2ba7c954c5a:ffff005f, observationId=o1:a94e400cffc48ee40df8e5f7f50266e4:00110060\n",
+ "Processing image 5341: timestamp=2024-02-02 19:02:53.602312+00:00, observationId=o1:a94e400cffc48ee40df8e5f7f50266e4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green rectangular street name sign with the street name \\'Hallam\\' in white letters is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1450332954748353, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030399186a0fee1e471bc2ba7c954c5a:ffff005f', 'observationId': 'o1:a94e400cffc48ee40df8e5f7f50266e4:00110060', 'geographic_point': 'POINT(-81.9485961161296 27.9819636483127)', 'mapsURL': 'https://maps.google.com/?q=27.981964,-81.948596', 'captureTimestamp': '2024-02-02T19:02:53.602312+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa94e400cffc48ee40df8e5f7f50266e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=583bc93f0ade2539484a22f2e3869b3ef4eb6366fcb09d80fed087433059b942258a523b8ff802d486c0952467688d97a8922285e48599dd4961b7977371cc6a24f76d0883a97e42343aa2265bb7b82fbd01934747a17a79c1488e6207253e6405baad441d7404983f14c238e93f5b215420aa7d6336dc6def87cf60aa199785879dc46958cf667429245b6d94a37e5f62b2af14795926192426a1791110fa13802df897a1a3716c65e6e3cd12a37d17ef3974c055f43061a8381bb4ea3c879df284cd2c013f448ea5fbbaac32e0adc1cd32356f8c03465373d84b469f6f379fb5a14cd295dbfafec3fb9e1476d2608feb5493b4d563835b96deff419e3e878f', 'category': 'Street name', 'description': \"A green rectangular street name sign with the street name 'Hallam' in white letters is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1986.0, \"x\": 1673.0}, \"hi\": {\"y\": 2139.0, \"x\": 1986.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5342: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:88f2e235b3e71874c3d18e1978ca818b:00110060\n",
+ "Processing image 5342: timestamp=2022-05-19 20:54:37.934988+00:00, observationId=o1:88f2e235b3e71874c3d18e1978ca818b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a \\'No Parking\\' sign with a red circle and a diagonal line through the letter \\'P\\', indicating that parking is prohibited. Below that sign is a sign that states \\'2 HR Parking 8:00 AM to 6:00 PM\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2587195377723843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=3589, total_token_count=3691) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:88f2e235b3e71874c3d18e1978ca818b:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-19T20:54:37.934988+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88f2e235b3e71874c3d18e1978ca818b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=798487212a4d41ed6ac1d55d377e2ad93fba82d918248c63c092d0681e4c28759c9ad7fc4324eee56491254689581c82796a5b3920ee3be3beae5aef7cb416cfb2386ba5df5b9669f950e3eb4658b0b713e00fd303258a19e60b9bba5b185bde5cf8506e77c73fc3b66a483bb72c842d08e1ab9fff14b2d4bfbb253970232aaf0b76a62fd80be9d8a9a8ed7aea3e39c799c917cb61d41f3141a7c2caba2f6d6ce6e6a8e5955ba12610040d2531544651e51efecb56a69ef6eecacfa82a03c79aa2bfb6c4c6d1d460803a25af64480c02f44342c2b7cb2fc1ba19671e021493e6ebf130aa42c21341cf677792b7b24f2aae9fb6858accfb2393470fcb161efdf8', 'category': 'No Parking', 'description': \"The image contains a 'No Parking' sign with a red circle and a diagonal line through the letter 'P', indicating that parking is prohibited. Below that sign is a sign that states '2 HR Parking 8:00 AM to 6:00 PM'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1830.0, \"x\": 1251.0}, \"hi\": {\"y\": 2108.0, \"x\": 1442.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5343: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:ae551da6f82a179214e756082fbfdd6e:00110060\n",
+ "Processing image 5343: timestamp=2022-05-24 20:55:46.020440+00:00, observationId=o1:ae551da6f82a179214e756082fbfdd6e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking\\' sign with a red circle and a diagonal line through a \\'P\\'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2985882077898298, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=112, prompt_token_count=3589, total_token_count=3701) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:ae551da6f82a179214e756082fbfdd6e:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.020440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae551da6f82a179214e756082fbfdd6e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9c6b33057ddba606e259351f8e21836cc15e8314ee2eb59ab0b872df77f6c740737a273ca4676488041541c7bdcb078740511132df9a4e8e0a4e63541f7e985da072a04d162b48881c9afd430977c720c0167f0479df7298127779e9bf5e27c02614d9b588eb9d2d7b42a33e5231da386ad61283abd609d05e3eafa8dcb338b1e5dfa0e202d6dba20b48758b1e9746daca63731aeb71c1951c71b8d8f55ff1d82ff382df4ca3815c3a9244f52abb7be01c5a6d56fd747715ff1b11c200c74ec6fd8c2622c6ab4dfe61ab07792e4ddbd60a53b9d20b81d0520453539c3cddcd53a12ab55d6e3a64b349ef2c64e4cd00b3e7a22f5bcd9cbe5715a01de3ddf36247', 'category': 'No Parking', 'description': \"The image shows a 'No Parking' sign with a red circle and a diagonal line through a 'P'. Below it is a sign indicating 2 hour parking from 8:00 AM to 6:00 PM. The upper sign has an arrow pointing to the left indicating the restriction applies to that direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1904.0, \"x\": 347.0}, \"hi\": {\"y\": 2181.0, \"x\": 526.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5344: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060\n",
+ "Processing image 5344: timestamp=2022-05-24 20:55:46.020440+00:00, observationId=o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating \\'No Parking\\'. There is an arrow pointing left. The sign below this one shows \\'2 HR PARKING 8:00 AM TO 6:00 PM\\' with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3034714363716744, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=3589, total_token_count=3700) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:a8e70c476875b4f015dd5a73d4fa6b04:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.020440+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa8e70c476875b4f015dd5a73d4fa6b04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=479a44ee1b8823251ba23e6cfefa7bcc575b1a241a9ab20ad02726c8e4b2155546c0036b09a9d030f7799c873472b4d51b15741bb0800a833f0c61755c91e726d5a40526081349be3900d60e551ec82042a6468cde45e299d599249f9e5ec2177ac6ef8ee61199d16add33687840fe30376d4e0fe29905b77e94eaee7f8dd526b90b5473df4983d02ea65257becd27d2ea916081fef2d928def02bb3e181e3962f2192a325c748d127a705ec4d0be83ec7b4c06df0751ccc7d5abf48f335fa73519e207b3db8168f6cd97f9905242cb732c56853cd55140717500c2b24435478dea5bbd133df34a492bc48da64f57131e16fb82a9b86ac376224dc01ab115aa8', 'category': 'No Parking', 'description': \"The sign at the top shows a red circle with a line through it, and a P in the middle, indicating 'No Parking'. There is an arrow pointing left. The sign below this one shows '2 HR PARKING 8:00 AM TO 6:00 PM' with an arrow pointing right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2798.0, \"x\": 3324.0}, \"hi\": {\"y\": 3071.0, \"x\": 3501.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5345: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060\n",
+ "Processing image 5345: timestamp=2022-06-14 16:54:11.307610+00:00, observationId=o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM\",\\n \"image_quality_notes\": \"The image quality is fair.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.42366532825288317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=3589, total_token_count=3694) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:8d7a329ab7a36639d36cb6e7b7a5ff52:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-06-14T16:54:11.307610+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d7a329ab7a36639d36cb6e7b7a5ff52%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3dab002e981d411ba78aa6cf733aac58701d97be47f0d3013383bf501de2f92d5c8ac561166589fa5694af01340289e1a0ce84b8b69aaac8c628e82e46141b60b4fed697a4a96875510b27fdde1f90ba750875544b1d06b2aebe741c5a2d452d11f08a7b0ea75464aaa1828ba7f098da47e25b04ca595521f987ccec44d68b2dcb3305eea3d470ad090bc0df5914db46298fd3762a730649be9952b980f4fe926e8983cb2c22e46072d86c92ef9393f2ad120a241754cf82f347cdad5bcfd953d8afd4874eb2b7d1dc0f9dcdf2e7f7c64d273fc453be9755cf5a35429f454306665ca39a6e79e78c443517cad9e687449147b04fc1b335e4730945ac088c88a2', 'category': 'No Parking', 'description': 'The image shows a red and white No Parking sign, with an arrow indicating the direction in which parking is not allowed. Below this, there is a green sign that indicates parking regulations: 2 hour parking from 8:00 AM to 6:00 PM', 'image_quality_notes': 'The image quality is fair.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2059.0, \"x\": 1937.0}, \"hi\": {\"y\": 2231.0, \"x\": 2052.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5346: trackId=t1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f, observationId=o1:196d145aeabdb4f604fcf294e35cbd04:00110060\n",
+ "Processing image 5346: timestamp=2022-05-24 20:55:46.600406+00:00, observationId=o1:196d145aeabdb4f604fcf294e35cbd04:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking\\' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33006194542194234, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3589, total_token_count=3676) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0305aeb11ab4bc5a878a18675fa8e3a6:ffff005f', 'observationId': 'o1:196d145aeabdb4f604fcf294e35cbd04:00110060', 'geographic_point': 'POINT(-111.880485159239 40.7780317107768)', 'mapsURL': 'https://maps.google.com/?q=40.778032,-111.880485', 'captureTimestamp': '2022-05-24T20:55:46.600406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A196d145aeabdb4f604fcf294e35cbd04%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0578ceed647c5b95cf39854cd6d4465d8c24c4e31013849f9d1e183e79b40d467cf5d080b5d6ebe50dd133755faeaca8160209f2f35c57175ad7454b18df291e76f8e147a20bd35030ebeeded1f0987568c203ece13e37003efad676cf20d627c6b5f5656644b75b2e7a349193a2b751d8cc30780270d6159d7f8453abee974efcbb20dfee69d34d4b65e8010819df0771ed2a290352321a5144e3752bbdbe2b3aff0311a9d30aec055771eda4a9017bb30405109e4c727af01eab890eb681defc41e9f20e87fd41b3b16eb80030a8380458c15333df8f0a96bb3ab5a991c272c15957afe6c64bfebd3cf8e3d95ea03a772a5f2ec7a401be10219106a08ed584', 'category': 'No Parking', 'description': \"The image shows a 'No Parking' sign and a 2 HR parking sign with the times 8:00 AM to 6:00 PM and an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1892.0, \"x\": 3175.0}, \"hi\": {\"y\": 2154.0, \"x\": 3318.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5347: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:031f7b260dc4efc93460a622a507345b:00110060\n",
+ "Processing image 5347: timestamp=2022-06-14 15:41:07.324630+00:00, observationId=o1:031f7b260dc4efc93460a622a507345b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road signs in this image appear to be a \\'ONE WAY\\' sign and a \\'Pedestrian Crossing\\' sign. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.27470870756767163, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:031f7b260dc4efc93460a622a507345b:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:07.324630+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A031f7b260dc4efc93460a622a507345b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b43a36bdd21fbccd608ee5e262481188e16b25c35789086d191cb0f6e4dbccf9f7484bc6933296f72b2eb28ce973bb1a1ba24409d78e1fb1555091a5976753034ac1df1d21ba70ba26713929a51d7aa7ced51762906ef407428a88b6c003191dcd883953cec989b7d095e6334f87c5945cb83cfc024c06ce1ce50dd70cd49eae37280366c33acfb0d2bf639cefee7df2d126a221adb34554920f7bcaaf73f46868df0d2146e0701c7e402c46f4e204e283c5d419b9fdf709f2d3ab96e85fde5148759ac29dc7d0dd9a322e3d51d5400558d0e84c0b497e9ee80b2925d5a891867cc3ddaee5d781f091901873259aa579eadb8853f0379b9bbccef7e44ed9254c', 'category': 'Other', 'description': \"The road signs in this image appear to be a 'ONE WAY' sign and a 'Pedestrian Crossing' sign. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2210.0, \"x\": 1297.0}, \"hi\": {\"y\": 2329.0, \"x\": 1544.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5348: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:f0641b309c2810a745acbea2bb9849be:00110060\n",
+ "Processing image 5348: timestamp=2022-07-11 21:48:54.292865+00:00, observationId=o1:f0641b309c2810a745acbea2bb9849be:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a ONE WAY sign visible in the image.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19276879963121915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2557, total_token_count=2614) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:f0641b309c2810a745acbea2bb9849be:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-07-11T21:48:54.292865+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af0641b309c2810a745acbea2bb9849be%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aaccb995692a6b0b3d6eae74bc78ebbf1244032b4e581b98dbdfff3b2ee5c3becb4fb8e0a1f58823ed01274884ff95e09f290017414956170b00f160bce8f62a639452d551311503fe1cd52f18efd39bd9171e7e8c82e83ea8144bcaf52679bb1c42cffabe70acade772c0601197cb8345d2495112e2150d6ceb9ac63fec63d3927164523d4fef01d73fbeaecde7a2deab16c23cd267505d5937ee5add5d3be02afc7a5f7c2cd88cc582ba628d0116222bc19c77af2aae719c27ab48735040d60d565a78630c713649aa1009f838e838ef0b019b77a6b08af987e374a17a884ff08148dd5f0390b670ac0f67340fe0f6c9bcbf836557597d8bcc6387158bda26', 'category': 'Other', 'description': 'There is a ONE WAY sign visible in the image.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2136.0, \"x\": 1183.0}, \"hi\": {\"y\": 2230.0, \"x\": 1378.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5349: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:ba71762b65e74921f5bde07f2259eee3:00110060\n",
+ "Processing image 5349: timestamp=2022-06-14 15:41:07.688585+00:00, observationId=o1:ba71762b65e74921f5bde07f2259eee3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4838205102371843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2557, total_token_count=2630) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:ba71762b65e74921f5bde07f2259eee3:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:07.688585+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aba71762b65e74921f5bde07f2259eee3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0019d5982255a33737bc09e97804ae7c06fdb1a54eaedb525a902b8f112e2d774b12b9059a4ec3fdfa8e9f6042398cd3a4a3e4e3be1e3722484538b7fd96f79ff567d094837b9a826a46c7b61ac584157b87642a2653b23a2633223c5193268374cc83f7db53a8d4c1f13eafeb67030f2ec49a0934d748000574d1648c7be9bbd9dbefd5420c442f4e2e9bd9206a280b208839f43223b0bb04a8e8fb042eaf9ec66f4b325c11e2d587cd28e655744e166810d819c02341d9420d4bcd60f0d4f3925e83ba4895574b00be13414d943c92f1daa2686b12231cb85fdeac798452367f0d8107aad10e40d7a9d2ceb5a1c157d103d3e5c6483890249e2af8bd0fc0e', 'category': 'Other', 'description': 'The sign shows a red hand indicating pedestrian crossing is not allowed at the moment, and a One Way sign with a left pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2173.0, \"x\": 2471.0}, \"hi\": {\"y\": 2285.0, \"x\": 2684.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5350: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:59664dbe4a934486ad3582ea5326bf26:00110060\n",
+ "Processing image 5350: timestamp=2022-06-14 15:41:06.956554+00:00, observationId=o1:59664dbe4a934486ad3582ea5326bf26:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"One Way\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A One Way sign is visible\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16492241400259514, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=3589, total_token_count=3643) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:59664dbe4a934486ad3582ea5326bf26:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:06.956554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A59664dbe4a934486ad3582ea5326bf26%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b37e47bb7def2a36583eeab0c58684d01a28e5a2fdc22f8702f4b45266805fe18136c4455eae8023bd139373535181069b238f52a16810efc770f25df0ade773f5d38b7d97617e16a442f501081a16877893c406794ba103c1df48c9281e4745f40fc4233ae3974a7f287858dd1a2d551a0031d87d3fda4ad3c5f2136f516945c9f4fbcc79b43ae0b7c80cfcd3e0efeb0f233af6d970f8ddbf2262af079f966c697847c8def9458e04982226f6200f5f4b4968c48b55d58d9804d8a0ac49edd06cf7d678f0d9af4f751c90024a7aa42563e33a6ada6f3309550d7804e84733cbcc974c30902bdb78b0235ebfa9bce0bd7af45e91dc753b97083e2409d8c95f85', 'category': 'One Way', 'description': 'A One Way sign is visible', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3139.0, \"x\": 3293.0}, \"hi\": {\"y\": 3250.0, \"x\": 3488.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5351: trackId=t1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f, observationId=o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060\n",
+ "Processing image 5351: timestamp=2022-06-14 15:41:06.956554+00:00, observationId=o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a \\'ONE WAY\\' sign indicating the direction of traffic flow and a pedestrian crossing button.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2155742787603122, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307d7745bb4daefb4b6f41dd8ec0c8a:ffff005f', 'observationId': 'o1:68f9ed0e40f5b9c6eac2c1dfe0b6da15:00110060', 'geographic_point': 'POINT(-111.882275489659 40.7561790446011)', 'mapsURL': 'https://maps.google.com/?q=40.756179,-111.882275', 'captureTimestamp': '2022-06-14T15:41:06.956554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68f9ed0e40f5b9c6eac2c1dfe0b6da15%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=33296adb7dcf47eba3f90f0aa42bee2214cb978491d3d66592b727983398f085aaecfc3436610ef51f50f0dd6d8023f9fee78d7087d2aff2efaf6ab971e15289e1540bb32fd55095795e2b28785664272fe5e387bba054ad9afadc02270f9a102c456f3886df2e7c6a473db6a72815050c0ff708be4dd80cf10f253df4cae5f6e056747ee810a03c45d9c531957ae258c44cb6222894ac3bb714eac05432ec1fcbac5809a48dc6f5188fb78e68d04661dc55d045e4354d8abdb8432e0389acf90d3601f13e25baafc7530e932376a0463b76feaafb4601df37b340d610039d6097baf2618da46101eeab7d8efe6988dc00c64e6a3041d7c0013e8f2d978b80d2', 'category': 'Other', 'description': \"The image contains a 'ONE WAY' sign indicating the direction of traffic flow and a pedestrian crossing button.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2256.0, \"x\": 275.0}, \"hi\": {\"y\": 2369.0, \"x\": 480.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5352: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060\n",
+ "Processing image 5352: timestamp=2022-09-29 18:13:29.434536+00:00, observationId=o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is yellow and rectangular, with black lettering that says \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1642235264633641, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:e6ddaa89b1e88d22a6492b0f64d98c35:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2022-09-29T18:13:29.434536+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6ddaa89b1e88d22a6492b0f64d98c35%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=48409dddbbb4a9d1c16713caca25133f75f1c0e31045386076ac39f071f438c36eb3cf52fed9f37b8ea64457144592f6b090ca2d94ef2ea4fc3a96369efbae3e04ebd4c2c0fac74418aa4faf94fe2ff0438f6762bc68898e65a519723e4da2941365b6582dd0c275065bc2c6bca5e0dfd72ce7a1b5df051240d0d95259936f84637cd0a316d73e7c15d8860109b25c5e39c510350d2785c4f0b4c39a875979e91025ade9931f6ad05d249551c825808a4b0b8cfefab760eeb84beb5f88717d19816e0feb93951165166cc6ec6ac3976bed33a81105d851ec5a877a04e68f7f5f145d5e70e31a1c48be2799b5e0927bd1788f6f8ff0c47ec4496e1e6e67068dc3', 'category': 'Other', 'description': \"The sign is yellow and rectangular, with black lettering that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3243.0, \"x\": 996.0}, \"hi\": {\"y\": 3299.0, \"x\": 1049.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5353: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:e1d9e4575b67119577685d2e28971e15:00110060\n",
+ "Processing image 5353: timestamp=2018-07-10 18:09:34.370317+00:00, observationId=o1:e1d9e4575b67119577685d2e28971e15:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow rectangle, and it says: Caution Forklift area\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18110318337717363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:e1d9e4575b67119577685d2e28971e15:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:09:34.370317+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae1d9e4575b67119577685d2e28971e15%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2bb6a340e2d63ce4cf8d3c79bd3052f7b5cddaa7b3d6f4301b99622695bcbd696687fecda1b877dd40481cd61e39754b66af7c40728889e205f1b84b81add2491e306321af4b9e2367763afa1df538ed7c9a427eea9e33d0f4325b3f95df22073b66013310649ac3cc0f4b6a693f85c35d54d4144023105be0adc7de7234e5114be65b0adefe57f5d01b420b108e8ba963d623ca7f1e2ba5b5f46e9e2c73e3e22d5a71a15701f9839bb497c7a37ab5f5e90d0c8d6c7b63a84a5543a46d18ffa4eae7993e6b796a8876c51de2145d3228080f5b5846cafea897cdaa0e5f57476cba05b3f6e68c23db66897e6e72ad14c4f35d8f0b2ce70aa759a573d5615d945', 'category': 'Other', 'description': 'The sign is a yellow rectangle, and it says: Caution Forklift area', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 877.0, \"x\": 445.0}, \"hi\": {\"y\": 931.0, \"x\": 503.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5354: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:19eba6478e9a2e72b820100f9c0004cc:00110060\n",
+ "Processing image 5354: timestamp=2018-07-10 18:09:33.488369+00:00, observationId=o1:19eba6478e9a2e72b820100f9c0004cc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"The image quality is low, but the words on the sign are readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20553789419286392, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:19eba6478e9a2e72b820100f9c0004cc:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:09:33.488369+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A19eba6478e9a2e72b820100f9c0004cc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a00a56a73c53544b43e42bb9fcbd8b3f1c3222ee5558496284892f9b8dc8e2901e7d9426c7e7b8bfa0c0936a8093960f0a340a44a129b4684a5fc5d83ee210712efd1170318b7b2be72fc639912cf9ace059596290f0a1ab9313128de2bba74d8ec955cc790c3ae90125094210e1ad0549ce246514efbfc9a040f0d837f5468f262178d4b4e0ec26d6c4bbb1870f9f18510e1d223e29d4b6e4aa21b6d9a5e44739aa7581e2af3c967be6f6a64910a30c0b1d042d9b5e8e0fff53bc9c70039fb0efae5da375ad932ec7e1b8085bd7f2656f40b41c506b06ced5de1824b69ab446448e7e7b6e17606eb8df8eb3b970061370dd5cad1d1b4bfe49556831040cb74', 'category': 'Other', 'description': \"The sign reads 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'The image quality is low, but the words on the sign are readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 834.0, \"x\": 1072.0}, \"hi\": {\"y\": 876.0, \"x\": 1112.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5355: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:52b39067d9379a5e0f8aab6a4cffb108:00110060\n",
+ "Processing image 5355: timestamp=2018-07-10 18:08:56.453815+00:00, observationId=o1:52b39067d9379a5e0f8aab6a4cffb108:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Yellow sign that says \\'CAUTION FORKLIFT AREA\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2795034277028051, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:52b39067d9379a5e0f8aab6a4cffb108:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2018-07-10T18:08:56.453815+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A52b39067d9379a5e0f8aab6a4cffb108%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=142c84f7c104c622c8792f55496b4d5a5b9a5abeb15226b72bddd21cf3a32d2a4654b619580978881514dd7ab73054a5e54b3921e803a20dcca5ade9d6d60880837d5d01aea231cfc443bc426367c39667049d21697f6883f07f27dc733e9ad9cfa67a62fd48e90d44115319008f2f269ae32056515f2559f5221951bded4f7475572cc1f2c31c340887784f0b1f4f988a96aebe8aeca53aa04b745a843505d9e823a3160f7b4514c37813cca7e9bf7be26d241345df438a284083f255a6e5720e61f5b929efb0b6bba6e78fa51d37a7538417306ebf7808eb7d5ac6d4fb13035f38d8dd133e04dadff75334d6ae3cad7ec9475dde14bb315ed4674b011fead2', 'category': 'Other', 'description': \"Yellow sign that says 'CAUTION FORKLIFT AREA'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 863.0, \"x\": 736.0}, \"hi\": {\"y\": 909.0, \"x\": 781.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5356: trackId=t1:0307f59a2e586260d11d0c26976656f6:ffff005f, observationId=o1:807214284a7266f20e9a1e0cde945f9a:00110060\n",
+ "Processing image 5356: timestamp=2022-10-11 13:56:18.307338+00:00, observationId=o1:807214284a7266f20e9a1e0cde945f9a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates \\'Redwood Rd\\' for exit 15C. The sign also shows directions to North and South exits. It\\'s also an exit only lane.\",\\n \"image_quality_notes\": \"The image is clear enough to read the text on the sign, although there\\'s some pixelation.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5892288589477539, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=1525, total_token_count=1625) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\"}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:0307f59a2e586260d11d0c26976656f6:ffff005f', 'observationId': 'o1:807214284a7266f20e9a1e0cde945f9a:00110060', 'geographic_point': 'POINT(-111.94444458229 40.7241206281869)', 'mapsURL': 'https://maps.google.com/?q=40.724121,-111.944445', 'captureTimestamp': '2022-10-11T13:56:18.307338+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A807214284a7266f20e9a1e0cde945f9a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ce80d5a35056d25a2d90130a495f268dd554b57d0c4f60c7f1e4989d20ba47494784fea3b74a4c12e72b04516821d8af78b9e25f78243f983da2b74dd81a56e3c100ee6ae69962e1fc0ff84eeb43d8ceec57b1fbbc4b9239fd07bbee164d8ba1329ee108dcc76924a2103b88853aae949e4c309d7b8f5f58f6db843469c9dc34313c946a39c1381566d081a9bc45482cc38ff4766c2b055876b8529289764c9cbd18fd8c2dd5d46019f23706884e99c11414b60694c1d1aeb49d7e8389f5a1bb5348e99e8d9029718e834b5b8c73b67eb7ad31ec4b1fa8a366c2938a2a04755796f63dd548183d27590f2fc289de292a96d4a6cb3175a67b5bfe434092c4f30', 'category': 'Street name', 'description': \"The road sign indicates 'Redwood Rd' for exit 15C. The sign also shows directions to North and South exits. It's also an exit only lane.\", 'image_quality_notes': \"The image is clear enough to read the text on the sign, although there's some pixelation.\", 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2978.0, \"x\": 238.0}, \"hi\": {\"y\": 3004.0, \"x\": 307.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5357: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060\n",
+ "Processing image 5357: timestamp=2021-12-01 20:10:05.650021+00:00, observationId=o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A blue street sign with white text reading \\'300 S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18675087344261906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a3b2a2f7ac47514464a9f6f1582e31da:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:05.650021+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa3b2a2f7ac47514464a9f6f1582e31da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091517Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=14d101719d2c0b721a15bac4a60404b8338a832ff2724a51e6f6dbc586a77a23ea002e1f9789df3fc0cdb27f50bb8dbbd2bb3b2fd224e68d4915dc9154ff79411d32fb91463caadf25da0546000922a1a345d6ffadc3fd6b4513a1ffffe5402df7e606db7e2fe8d6dac359b2c110c84c6e993ade2c41ea271bca69c044746caeb492b4854c15835c5c40491e62b45e204201b038750b3e7ebb4c964b41326fe78a739157fe9aac4dbec09978bddef9925aae1e91ef55000dd5eaf3d6a0fd31d2e7db256bdbe4e568c259f3c0f78b89969eec595475fc2649c83af374bb1849930a1b90a56c12bf89046e6777150b62a0dad5f26f61c2b48b7ffc00e10868fd2a', 'category': 'Street name', 'description': \"A blue street sign with white text reading '300 S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2113.0, \"x\": 347.0}, \"hi\": {\"y\": 2255.0, \"x\": 597.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5358: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a4ad47bd403450a274ad8174bd472302:00110060\n",
+ "Processing image 5358: timestamp=2022-10-07 20:29:30.596593+00:00, observationId=o1:a4ad47bd403450a274ad8174bd472302:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign that reads \\'300 S\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12855152929982833, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a4ad47bd403450a274ad8174bd472302:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2022-10-07T20:29:30.596593+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4ad47bd403450a274ad8174bd472302%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=206ebfbfc03ff3a36c83b335e1b86e146798fb972c981b8dc274165c6d8a8d459878ebb4aa1d6ea24105f7fddd75d76498c2431375b497024aafa13d8689529367465dab14b40cd8488db74b003c9fdc04e45711e35e5ddbc519b650b1b03c58d9f064e01f3269bd51cce2768a191178d57ecb1f788b3f8b573520bd226ef2ae8bc39dbc1fde7cda80df3d57ba361c401297b0d693bf3778116e41607c02d34d1e3d7d706aa585c79062c78ca9b5f4529807a92d80a46fc9132be3570410cb3dc001deada81e7f0627997b6b5298047a4bea7965228de215dcbada9d6b97a7047cf6292ff3e8b7dd408e3cdf3f4e6ffde2483b48d58f73f123d8dfd5f82b4596', 'category': 'Street name', 'description': \"A green street sign that reads '300 S' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1709.0, \"x\": 2275.0}, \"hi\": {\"y\": 1922.0, \"x\": 2537.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5359: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:a540dde54b5234110a51d5122a0780d1:00110060\n",
+ "Processing image 5359: timestamp=2021-12-01 20:10:06.093919+00:00, observationId=o1:a540dde54b5234110a51d5122a0780d1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.\",\\n \"image_quality_notes\": \"The sign is extremely blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3742363022034427, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:a540dde54b5234110a51d5122a0780d1:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:06.093919+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa540dde54b5234110a51d5122a0780d1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a12ab89e074d3dccfdb5447f9ec3b1da11588b78dffeee61becd2d6adf677ac0146158845b183ea55846c25beba0e9db82521710f24a263efde1dff67f8cb2b4490283ad4354b8732833ea4d311f88c9e11b9185c4f72611557721850d33a0e98db4d2f6cf5f90d26c48c760e8a7f85222f4be8a8e526f331744321203f4cbd6fa2feee5b83bb8d9cecfbe66892533fefb3d26b45ce95c7d1c0e4ee677a92fbead9df06a9f9ac686b4e322e1d8794cfdc1c2469cdae835c5767bdd62af967182e2099a1879504c70791445ddbcd0456ff779a4602ddac7954cbbb80a3560d09fc40c25cbe23e2221f81bc2d729e075c45d9c7eefb53d8b6698f1fabed330f621', 'category': 'Street name', 'description': 'There is a rectangular sign, likely a street name sign, attached to a pole. The sign is badly blurred, making it impossible to read the name of the street.', 'image_quality_notes': 'The sign is extremely blurry.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 1440.0, \"x\": 3142.0}, \"hi\": {\"y\": 1630.0, \"x\": 3544.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5360: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:586c469171528cfd3b44f774d5a95510:00110060\n",
+ "Processing image 5360: timestamp=2021-12-01 20:10:05.650021+00:00, observationId=o1:586c469171528cfd3b44f774d5a95510:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign that says 300 S is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17902565002441406, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:586c469171528cfd3b44f774d5a95510:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-12-01T20:10:05.650021+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A586c469171528cfd3b44f774d5a95510%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=265fcd6b07573876fe64496a3cb2370e619a04f89add8400435c82f70c31aebbe8f6d8d261ec07c123250970fb38fcc3b71edf59c5e8f89f3dc911a6bdb447f309ec3fc4ea8649714c8b719e09f3a9b60799722dcbda8fb3e18d01f21a0ef04aea0f06fb531341777a8cbc719d7519c8e3272e25570004495d99d9636bd772485047e436b2b6dd813bde871e2edccda9ab51ded46acdaace709e2723d3e9aa0b2a3737e716d5bdefeeddbafbfd361ec41613c6b178ba07ca63571e3323a0573d9762f94fa94daefc5be1efa3da469f84604eff70b3d5ca74e9553f174a709b5f63e243cd372f0d611a191c04ff21e452698f79aeb811a7c5157d4832c1aae7d9', 'category': 'Street name', 'description': 'A street name sign that says 300 S is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2093.0, \"x\": 3286.0}, \"hi\": {\"y\": 2223.0, \"x\": 3536.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5361: trackId=t1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f, observationId=o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060\n",
+ "Processing image 5361: timestamp=2021-11-30 20:37:25.918887+00:00, observationId=o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is green with white lettering and reads \\'300 S\\'. It is attached to a traffic signal pole.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1725797518877916, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=2557, total_token_count=2628) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0308e9288bd1b137a8d7c39d02f18ea6:ffff005f', 'observationId': 'o1:f4d2c0e1197a759bab4f4cd9fb84ce5b:00110060', 'geographic_point': 'POINT(-111.879614738167 40.7629722986384)', 'mapsURL': 'https://maps.google.com/?q=40.762972,-111.879615', 'captureTimestamp': '2021-11-30T20:37:25.918887+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af4d2c0e1197a759bab4f4cd9fb84ce5b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=24187013d193c8a170834d112fd358335eacdb20ea5d618d19b8cb3dccabc8dd97fb4c7c89f5b0961f2ceed93561e0a6029e4fe2a358109d13c7dfeaadd972178f2136ff1c3d7ae1e2bda62868e0b33c440356bc22e8bcec993a7068846b517e308a37765f79d76302dd8641defb7ea84761666bd025c3ebc23e204b1766f7dcc73053359ae60c65cc01c9bb779376babd93c9621f73592661dff80055e8777c031f3968b005ba17edc75e6774a5e3995c70a592db1661aee78115ba76aae0d2e90adbb1171d26fde43b8799810e756ed39bb703a7eb530f9f7af563688e27cc9dab811b7a6a615e50b9e8940a54295c5ca89396f65a77739ad45c7720e7ad42', 'category': 'Street name', 'description': \"The sign is green with white lettering and reads '300 S'. It is attached to a traffic signal pole.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2016.0, \"x\": 1915.0}, \"hi\": {\"y\": 2176.0, \"x\": 2141.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5362: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060\n",
+ "Processing image 5362: timestamp=2019-01-16 16:51:32.782530+00:00, observationId=o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters is visible, with an \\\\\"ALL-WAY\\\\\" sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11935279846191406, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2557, total_token_count=2632) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:9ae60f0f737cb16a4af8a2566b1c393e:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:32.782530+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ae60f0f737cb16a4af8a2566b1c393e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0ff381f3476e3c5c5a445665f84fb1526e66c5122ac4364e7c678c50d0b1841fd2b49d76dcd29ac4543b84c1baba90d575db0aabbf79573250ce24d4154c15ff16c6641d256e2f94278980a0ecbbd87ddac210a7d53068a8e5e3edc00484673872734b19d9bc24fff0a52879985755f8b644eb0f7618f0dcac6008a626e664ad791f603babf3df86755aa1b8348e05edae48c07ade3a28ab13c5da99d89e31eb62d3cc804a85d8998ba7a21f599463ec2eb99f19fda98c35ff175b822856739656e744f17370804239c836c6c0ac3d0043c1af6d5dcb1a78bbdfa4c4d7c9d9e66615b205ce5ec8639fff73db2e6b850484b32084e56f619f42ddfd9b1c508443', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible, with an \"ALL-WAY\" sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2940.0, \"x\": 1142.0}, \"hi\": {\"y\": 3188.0, \"x\": 1377.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5363: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060\n",
+ "Processing image 5363: timestamp=2019-01-16 16:51:33.170582+00:00, observationId=o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a standard red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24498757755055148, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:aad63b6e44d4d4bf86fea1fa5f804354:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:33.170582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaad63b6e44d4d4bf86fea1fa5f804354%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a6be928524b7aa149ac4054c681c237f63a94d2662267ee30129a8ec9086047628b5dd957445b7512d9d05ea0691712749e6c8c6017449e12f425052a9b5ec3c7f8bd70b161b2b1c2e45686f5729aa2302c9f13bbc8c2994a2498581d368d645c556213019f39129ad5c83f2ff4c6974dc7e335771ecbf4299de5d9e56db81f14d5f096fd9288169b588dab7bbd54362acc2495bfa9a9a7f480fd5b2a6da1e9d87681864acb5cabcbdd46e6acbc83aea2cc7e6551b79055f79d166b07214e1ffac464c1ab84060b52e9805b6cf39633aa52e8f4cca4c3f0f1699dc7bbc617f22a3dbe2f1def8f50f9eeb4692a5cc4dbcf3512f576fddb353e530ee8a5fe1ca5', 'category': 'Stop', 'description': 'The road sign is a standard red octagonal stop sign with the word \"STOP\" in white letters. There is a second sign below the stop sign that indicates \\'ALL-WAY\\' stop.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2795.0, \"x\": 1812.0}, \"hi\": {\"y\": 3220.0, \"x\": 2161.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5364: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:d768670befda156a513bdb62cc365261:00110060\n",
+ "Processing image 5364: timestamp=2021-02-05 17:13:46.637666+00:00, observationId=o1:d768670befda156a513bdb62cc365261:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows a red octagonal stop sign with the word \\'STOP\\' in white letters. Below the stop sign, there is another sign that says \\'ALL WAY\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09603022366035276, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:d768670befda156a513bdb62cc365261:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2021-02-05T17:13:46.637666+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad768670befda156a513bdb62cc365261%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=972a8d5dbc340b6f29ac5ac836498bad4c3482bf1195396b2a3b230cdf3950b0582fc182fb732785d235bb442b6b6f717699cacc75f03a8f7f67219c701d267dce82bfc860ea32320431aec8e40e0b81865480bf6ce25d92c72fe4b012efb6260a2382b6b5297a8c3542c2d51324faa074a3d8b74748b200c6edeecc590b2f34c86e6e51fb9a567c5922e37d9821d534539e0a62252f3968d2c885190ed13f8c05bad8e2be822226b23fe45b76cbe250a72ce3632466dbe89df5c3e3e1288437daf4cf6813a896061d36ac1db4a08aa98c07a7c135ed1c39fbe3b42f76218100279a20a93902086992a9339a28ce89fa92620094ec142255ad711f62dfff0aa1', 'category': 'Stop', 'description': \"The image clearly shows a red octagonal stop sign with the word 'STOP' in white letters. Below the stop sign, there is another sign that says 'ALL WAY'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3040.0, \"x\": 3091.0}, \"hi\": {\"y\": 3334.0, \"x\": 3266.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5365: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:cab33d272ab97f5a1713e7d793713944:00110060\n",
+ "Processing image 5365: timestamp=2021-02-05 17:13:46.637666+00:00, observationId=o1:cab33d272ab97f5a1713e7d793713944:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible. There is an \\\\\"ALL WAY\\\\\" sign below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15820761694424396, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:cab33d272ab97f5a1713e7d793713944:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2021-02-05T17:13:46.637666+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acab33d272ab97f5a1713e7d793713944%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=41e9f3034d23290c047467502061f7d537e8329b888caa4f0e2f0ed7c8c5cb17cda39bc2466b1fae2a4471938ca586ff3ff139c7f85fe84abebf4fd545dd12cb665195b1c723975efd30636e90619df2d228715e9a5b495798d554187587c08dcc3db068d9ac0e4f9426c9442afe2f927c6c1a8855008588d2755d22d0833ddf530960ebda19368b691642a352ccbfcdd37fece015ee2e3b540d0519ec0db8aa5378fef09ec2012f9d80e9ace9d6676c3fa001ebcb315b33658b27b1d197b6b5b11e2735ffed7b8d396041f61a004e538719eac86f9de2e857c0a7e72ac705fcd7906c3dce1b7ef4b5838b7596a23cec144f5eefc992d7dde09039e0e2555481', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible. There is an \"ALL WAY\" sign below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2129.0, \"x\": 99.0}, \"hi\": {\"y\": 2434.0, \"x\": 270.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5366: trackId=t1:0309091db1858bf501a1c625c2920fb4:ffff005f, observationId=o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060\n",
+ "Processing image 5366: timestamp=2019-01-16 16:51:33.586755+00:00, observationId=o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \\\\\"ALL-WAY\\\\\" in white lettering. Therefore it\\'s a All-Way stop sign\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2928845909204376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3589, total_token_count=3678) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309091db1858bf501a1c625c2920fb4:ffff005f', 'observationId': 'o1:6a8651c3e5a5fae3c6512d20e2beb4a6:00110060', 'geographic_point': 'POINT(-81.9320673850755 27.9707611055662)', 'mapsURL': 'https://maps.google.com/?q=27.970761,-81.932067', 'captureTimestamp': '2019-01-16T16:51:33.586755+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a8651c3e5a5fae3c6512d20e2beb4a6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c682c6c6889025edadcd36e6df8390d8dda219386443248360df86ac013083f62dccb4214ad07f544c88d4b583fad6f54f513cfcc0955b2c72dfb98e5560e80b76052f90f1d8f6fd2bed2c55f7d7cbc0c1283d6cb52aac922b98f6a250cd0905984c4624b2fed4f3ad70869bc63ca59b65a0cc48c06a521e9e1861a096c1a29cec85c289c92f88920fc3e2b439610903143d4095e1be7528d976f1b8e8a32338148dbbac7b47eaa52ec2ecdffa381924227a376b80157365572a23d4676153e670a9b128f4a74ee42ba02c889a77fd0dcdafd6a493106f60451b79d71c499d458f78c49e918c62e8ba1addb426f8665a00b1faeae1366f6e5bea0a198fd8731', 'category': 'Stop', 'description': 'The image shows a red octagonal stop sign with white lettering. Below the stop sign there is a red sign with \"ALL-WAY\" in white lettering. Therefore it\\'s a All-Way stop sign', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1584.0, \"x\": 881.0}, \"hi\": {\"y\": 2164.0, \"x\": 1115.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5367: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:ec36ead4d30d3c04f875c91a76304682:00110060\n",
+ "Processing image 5367: timestamp=2019-01-14 20:11:15.822632+00:00, observationId=o1:ec36ead4d30d3c04f875c91a76304682:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06335116665938804, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:ec36ead4d30d3c04f875c91a76304682:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-01-14T20:11:15.822632+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec36ead4d30d3c04f875c91a76304682%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091029Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=553d33031e252009a0679a37d20a921e63c07aff6d04775c2614a819138ecbfca24868892a10395437d3179a24e962f598938d4498fed54ffb9b447dc5433a75064a3abdcb9a659ed5ea197a2d352a64658bbad4877f01a7505d3a4432bb64c22368ac38a072f7ecb46398427eeb62c3dde07abe815482533676778e421eaeffcba818f0d104079f1235b1c08fc2024fc853e0d596651cd4445db3dca69a88ea5b1513bd76c732d96171470f74cc3d24e23c5dea4161f2d4bc6b85cb2f4751ff9aa85458ea542cbf7412d4aca7eeaf508a06b4876a68df8a273fde11eb9a677a480950be0738c1b15007df7a337174a80617c6343cb5151a190a343a92a18a42', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2323.0, \"x\": 1992.0}, \"hi\": {\"y\": 2429.0, \"x\": 2127.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5368: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:0d36f5efb71bf52346662b9331501443:00110060\n",
+ "Processing image 5368: timestamp=2019-08-13 17:30:43.066151+00:00, observationId=o1:0d36f5efb71bf52346662b9331501443:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'.\",\\n \"image_quality_notes\": \"Image quality is fair. The sign is slightly blurry, but the text is still legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20812651846143934, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:0d36f5efb71bf52346662b9331501443:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-08-13T17:30:43.066151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d36f5efb71bf52346662b9331501443%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13f75265a26f041087ce544dede953e3ca80f98977ce3bd972869f9d81b228e9350390571f9411ec68ad462fc4b807409e91ce5ccbd2b3b22b69ddb2bba7f636b2cbd69fa54e128724f6bff060145ae195982b6aaeecb985a79317cc032c61606e7225fc1982f51cd31495e8a87a001c9e349ae12f4b936594c259fbb15c86c4fd1bd9d46726409161986fa9d2a333cbc61325c2fdb4beb8acadb09153842dcaa6de7700d3f1ebc5d251ac9cd4ac5a4759f2d7d95f840b623a0cdc2cc6bd87db18cf0a9005a0b531e38429b12e4cd77830cf99924a6a1780b975555234c937002e25d2425a5fdd0c85b9eaf2b8a777ccd1dea6bb81dfe864d2bbb64d927c2aa6', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'.\", 'image_quality_notes': 'Image quality is fair. The sign is slightly blurry, but the text is still legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2335.0, \"x\": 2325.0}, \"hi\": {\"y\": 2440.0, \"x\": 2455.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5369: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:b8becdad73fcd14818aa8db5cba9724f:00110060\n",
+ "Processing image 5369: timestamp=2019-08-13 17:30:42.766133+00:00, observationId=o1:b8becdad73fcd14818aa8db5cba9724f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"NO TRUCKS OR TRAILERS\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.061131004559791695, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:b8becdad73fcd14818aa8db5cba9724f:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-08-13T17:30:42.766133+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab8becdad73fcd14818aa8db5cba9724f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=398e5f33cd9cc6010557647f90a9c05e4eea9591fb9176534fa36f7aebb7f27e862a5d4f33cda4bba4c032ed7078fcea824935de9b21434820680529dc4d8be7132e2113020df0c5de5255849c4325a42d298c4bc2b5cc79b028784237a350e031ad6dae16248e9fc9b6bbe9548747187f8458d57b3ec6bb0e16aa1aa40f5c8b503dea4f654a0c966e5f841652dc94728af90304701f0bc027558572b0528830dbce3db2bbf644aae197ee15a3ff2ad1dbb4da08a43188317616716dad16cfd31030c90e43acf9d1081ebb4f44c58f7e3e4163a71f9bfd3a75a2c17d5d313fd92cf46e1ff205b2f54d2dd9b255371f000f7845c1cf7dda9ea223fad53ab616e6', 'category': 'Other', 'description': 'The sign reads \"NO TRUCKS OR TRAILERS\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2329.0, \"x\": 1234.0}, \"hi\": {\"y\": 2432.0, \"x\": 1361.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5370: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:b2e9aaf06de0e96af0138352587500d5:00110060\n",
+ "Processing image 5370: timestamp=2019-07-26 15:15:40.262357+00:00, observationId=o1:b2e9aaf06de0e96af0138352587500d5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'No Trucks or Trailers\\' are allowed.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08343212357882795, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:b2e9aaf06de0e96af0138352587500d5:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2019-07-26T15:15:40.262357+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab2e9aaf06de0e96af0138352587500d5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b41ddef7393ececedcd0c9895383d4fe273946ffc55c01060ffb883b3de11c8e57b2fdfd09a6c80db85c738321737dbf91945b14fddbaa55a421ef36a1c7dff07c94a396ed359071b9f6da2732bb821f78f469123fd800c2966d71562a38e8d9d7422565f0af2cf940ec6aaa08d16adc861079eea685b366dc3cd42410e6e3de49a8c02d4c5c3ae6c319292feb360d387b9e4d98105c4825b0be391d0fa2de2345b22638a529a592b712420e97cc682dfa933c03339d423d55f91c5a2164c8d4f037f8f23ff5629fcac1e17eaa0f5b071400fe2b4a215ca91467b356b603a2767383e1c72e23c6212c92c6e6ced704b0dad081bb6e35d6bc2c221d84b3f86acb', 'category': 'Other', 'description': \"The sign indicates 'No Trucks or Trailers' are allowed.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2329.0, \"x\": 1479.0}, \"hi\": {\"y\": 2434.0, \"x\": 1608.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5371: trackId=t1:0309b764abbcd1dbba0d718650d17296:ffff005f, observationId=o1:a4a4be1dc525edbd410d56abd6334cc5:00110060\n",
+ "Processing image 5371: timestamp=2024-02-06 15:46:59.936271+00:00, observationId=o1:a4a4be1dc525edbd410d56abd6334cc5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\'NO TRUCKS OR TRAILERS\\'. It\\'s a regulatory sign restricting certain vehicle types.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12709935973672307, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0309b764abbcd1dbba0d718650d17296:ffff005f', 'observationId': 'o1:a4a4be1dc525edbd410d56abd6334cc5:00110060', 'geographic_point': 'POINT(-81.8801735185883 28.0113574175913)', 'mapsURL': 'https://maps.google.com/?q=28.011357,-81.880174', 'captureTimestamp': '2024-02-06T15:46:59.936271+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4a4be1dc525edbd410d56abd6334cc5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c0a3059655ee006a6906af8c9c1b40f15a1308862c788a57111a47dc0b8c7916cd2e7124f3fda73957b6c43053898a23a8391a8dc4fd2aaa12d2f1befae550b7ed312d8dd0b8d5c7aa40c66680fa233989f88c4e37208cbd430bfc04c86f4acd08fbda9c992ff850fc0c9ae4cf04e9ac84e55ceefd004d7cf9affc6486463ee413193ea082bcdb92d70fbe2b2616236cf0aedc7392bc91da837e8c1272581d4591d3b35f7f0b82a56fb842dfce05cc9241f007f8732a8398e2530c7c96dd357d816299a900d66bf900c88b677a04f309876374291aafc9b3f2c1ccc416ea049d3033eafc61c0c3a11e0ee821b1ce0b045c48e3552a7d3d089f8b6ca3f7aae42', 'category': 'Other', 'description': \"The sign reads 'NO TRUCKS OR TRAILERS'. It's a regulatory sign restricting certain vehicle types.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2325.0, \"x\": 1866.0}, \"hi\": {\"y\": 2433.0, \"x\": 2000.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5372: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:012ad906352e2c1e58230c62f0a957da:00110060\n",
+ "Processing image 5372: timestamp=2011-05-10 19:00:19.287057+00:00, observationId=o1:012ad906352e2c1e58230c62f0a957da:00110060\n",
+ " Error processing image 5372: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A012ad906352e2c1e58230c62f0a957da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e18ede15437b4240b11ea85e6727841a4f03f4dc9495e9667ecc78524b58465517670191d94df22905e179704ec570611c8b53fd152327b626a5c854cbde6e72f1f4c69e03fd43a546e46519aa84985ba5a53ef3785e8b13585a25185d806875b049410baa55ddcff66a1d45cc05bc88657e4e4c37f692f7252ae79d7018aa26e081967ff9c2b9c4a16cfc86d3dea8f3cabe3cfb425b7f3477cd38e798049816abb1505fbce162501fff4150ed4b9c8b465984fee6d4de363d9d499f32245056509efb0cfb0649b1e8b469a4b92a141707d3b86a57a4250185e33f91961ab03c55bbd79fc0b217c70b78b4133dd4155c94b259b9f2a8d597e45e7a105e8877b\n",
+ "Processing image 5373: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060\n",
+ "Processing image 5373: timestamp=2024-01-25 15:34:45.766201+00:00, observationId=o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.028340466951919815, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f', 'observationId': 'o1:4ccb7ed3efef1927f0e856cae1efd0b8:00110060', 'geographic_point': 'POINT(-81.9096554011258 28.0343724682606)', 'mapsURL': 'https://maps.google.com/?q=28.034372,-81.909655', 'captureTimestamp': '2024-01-25T15:34:45.766201+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4ccb7ed3efef1927f0e856cae1efd0b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=626940cf483bfe151d6f748841971d0595bc4fb7185567189a67ecbcb8fdca8ae69af044c804f7f97a44d9c09f4d27e30b0600db3b8c502a545dc7e391d45ddc9037e3ac6aab2c4de4ae6552b06b607533caf8b6f90e85b770bd221360622309880405800465698775442a1a49b3d628ba322f96f79e2a22581902deaad66f03b8ca905060e32643417ba10ff4c7151578e2a2f0bf7cda2a55bf4bfccbef3983de73e1be67d5f9c807c03b88d09e8d4f08962db57aebf2f0c6d008fc5f14b0f0206685c888a5160ea3e349dbd53d30be18356b306126200c7352b3e59ea50639ef9d6de7a9f6480f09d33708c0441d2f82a209bcf05cf26be6b60eb991658ccf', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3066.0, \"x\": 1621.0}, \"hi\": {\"y\": 3339.0, \"x\": 1894.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5374: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:ebaf7546c8ab9d55493a8dc82d3755e6:00110060\n",
+ "Processing image 5374: timestamp=2011-05-10 19:00:21.612488+00:00, observationId=o1:ebaf7546c8ab9d55493a8dc82d3755e6:00110060\n",
+ " Error processing image 5374: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebaf7546c8ab9d55493a8dc82d3755e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=18d52784d8fbf56ac3f8bd4722275784f796b7fbe4bf4506e2fad6c55e5b4c4c1c0f14d61e056afbeee3db3be8f6473ae8618b00ef8df29b46fd0e7b0ef801b48f0ada7291070d541eaf78eff37d332a05bb93e64f4c45df1e757a5f3e92bacc9c4e156c128acdbcc0caab00a78c8edb7a09e0ac0a4c36fadd824e952e28f869b67133c4d584e44e4829708deeb2f194ca51c5b694725606e6971e46bc3c5b88c36cf36d3d64ceabb97db31aadf89856dc10d5ce10883e326aff439c28d62c97c4707a4b95821b663cb40a751cb6adceefb37fdf88a6c6cc7dd64eb660afeff7db4769ef86b604087749348da5ddaa7a6f504b1813ee6e7e392acb6ebfc465a0\n",
+ "Processing image 5375: trackId=t1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f, observationId=o1:f43b6cedf643126a6339cdaacd40b296:00110060\n",
+ "Processing image 5375: timestamp=2022-05-26 18:49:37.433184+00:00, observationId=o1:f43b6cedf643126a6339cdaacd40b296:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\'STOP\\' in white letters is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09993963688611984, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=1525, total_token_count=1589) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030a1f64eeacdb61b6ab1bc54210f251:ffff005f', 'observationId': 'o1:f43b6cedf643126a6339cdaacd40b296:00110060', 'geographic_point': 'POINT(-81.9096554011258 28.0343724682606)', 'mapsURL': 'https://maps.google.com/?q=28.034372,-81.909655', 'captureTimestamp': '2022-05-26T18:49:37.433184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af43b6cedf643126a6339cdaacd40b296%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b73367f459346283e00d3791133c3fc5b7b8aeb455a33ad1c691fc51247c71267ab003229fde15865f1075307d0b990444664745e3678abc8ca73eb32270f82979792fdf9dcb6a3e8e2d630cff5f2f922db26b7ce22bb301ce3c9948d164b304373622b20da56b6e134b8aba796d354bdcb2274a69a63cd40aa9bb4324fafc39450a97dcfc1d184958f0d219272f8481a40ea1c2c64e33c204678d875ef4c09c29949d7c35c16bb565c6beda0fea92e797fd2396180d630d2ce85dd607c4682f429e9a4bcd2fe823bd04b5d6bff12303e38ee0f63eadea787da166cc93315f7339bec7fcfef3ffd16a795fa972800accb313274d7736eadf96b11b43e96fc306', 'category': 'Stop', 'description': \"A red octagonal stop sign with the word 'STOP' in white letters is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 561.0}, \"hi\": {\"y\": 3188.0, \"x\": 616.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5376: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:a166e32b507ab89b25a88c33c3e37335:00110060\n",
+ "Processing image 5376: timestamp=2023-12-26 14:24:38.523902+00:00, observationId=o1:a166e32b507ab89b25a88c33c3e37335:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1947809440502222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:a166e32b507ab89b25a88c33c3e37335:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.523902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa166e32b507ab89b25a88c33c3e37335%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=467da44f71918fa93767c65073dbf25aaf8231831ed2f52f73593bf4d9d7b0f1eaaa6b95008183206b656243d1dcb2aea079b5903d9dcf2b13db1a539e260dcc941f9cd819b4271a25b99d98d5466a5dd8460d89b3998e82bc26d564aa6c6c882f1e1fb88c3d55ca3f54b4a0b3598e4e8cd7b27e3154277b346b39f8a28c6884203fd6eba88633c03c047a4092971673bd077c103b9bd93e7b44ce2c907fac6ee8804f2406a32f3e0b95ab10a99f029d23c7452325de10aec4288797d56957b749d04ce90b6daa93d1248bc3fad2f9cfb20e3a4ae5145c6794a9b108e73a151d8d79398b13746f4bff37ef4f3526055088457fc5e0c702bb78bb0e9c36f7e392', 'category': 'Yield', 'description': 'The sign is a yield sign, which is an upside-down triangle with a red border and a white interior.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3145.0, \"x\": 337.0}, \"hi\": {\"y\": 3171.0, \"x\": 369.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5377: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:1d430c43d24701146d1923cbfe90c818:00110060\n",
+ "Processing image 5377: timestamp=2023-12-26 14:24:38.223894+00:00, observationId=o1:1d430c43d24701146d1923cbfe90c818:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white triangular yield sign is visible. It is slightly blurry.\",\\n \"image_quality_notes\": \"The image quality is fair; the sign is a bit blurry. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2494634708888094, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. '}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. '}\n",
+ "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:1d430c43d24701146d1923cbfe90c818:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.223894+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d430c43d24701146d1923cbfe90c818%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=512a01a88160976826c20e18dac491708a96ec2e08c2cbc69b879915f87d5905b53ad42a1c8d658d3dfcf8b0345ae15cd89d438e82fa891d849011a62c6e38e8d7075086d1332e20f41a6298fe4d4121c2f3e73f066873e16fe23c4851f7ee1561be65bf9aaa77376ce638227f793d792c36726196363ed6a0a13545e1cee54c2c9dfdc3c751e2bfb7f06c5fda295213f300e803a825f446e000f0e61f1d27c9dc3e2ab0d1b5444a49f825d5e2560da018805a3accbcd35fd2ab284ad8b24cec4a0ef0f5ed22650b1da43bc583035d68d1e143a97da47a773a01f5b42936a03c89f4a1f871bd01e601b7f750f06714950a1490df320d6c1c24c7b75e026f3a03', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible. It is slightly blurry.', 'image_quality_notes': 'The image quality is fair; the sign is a bit blurry. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3135.0, \"x\": 3462.0}, \"hi\": {\"y\": 3168.0, \"x\": 3491.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5378: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060\n",
+ "Processing image 5378: timestamp=2023-12-26 14:24:38.223894+00:00, observationId=o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A triangular yield sign with a red border is present.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14325760958487527, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:4ee1d72f9ea3989abde21f4bb1be883c:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:38.223894+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4ee1d72f9ea3989abde21f4bb1be883c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6f37009713050b9a47c21a24b160b92e01b296d9cb058c8713ce4cca609f65b09b6625c3cbe8e927dce21ab506d02f4262002429cb80295b9dba92de55e67e2b26c4e729e98c2d1b9bf6bfd167808df38fc88bba10a5e46a5c43f91169d50f52d40aef0daaf69d3c1849b5b9136aad0559bca60882b0da3bf18fd0fdfdf47b729f8a81eb73a3f4121151556169693641615c75535e6f6c2e3c5480c277af70813bb174a1d953cd2599222a8967665cfde6938d14e1ee337ac559c859caa389cd5ac8237040d7fdcb2805a491d04083d72cb869484af0c7a9691e0fa827f0c164d0c04b41ac6f7ef3c047215496d96ed88dfba54afdbdd982d494da47a945cfa4', 'category': 'Yield', 'description': 'A triangular yield sign with a red border is present.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3158.0, \"x\": 373.0}, \"hi\": {\"y\": 3191.0, \"x\": 402.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5379: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:dbf4d0960251bf53653609fa12a85125:00110060\n",
+ "Processing image 5379: timestamp=2023-12-26 14:24:37.923870+00:00, observationId=o1:dbf4d0960251bf53653609fa12a85125:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.\",\\n \"image_quality_notes\": \"The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.43885050064478165, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=493, total_token_count=610) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:dbf4d0960251bf53653609fa12a85125:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:37.923870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adbf4d0960251bf53653609fa12a85125%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e3a17a787df429c4831ad46cf9284cb512f29f0fdea8ae55c0b41d2ea1f815243c9e099d2d02a5be449e019c334b5a8943aed014336358563fe3de8759cbc95d4c9ace9a3581cbcefc7c5b6fe673f4f5b21497de8a4b8837a787aefb5f04cd43b3fbf39efe187fa5c0149f5ba941500f7d5a6ede7adecad2b91ca8d80114dc6df5fb8ff2747e534e478cd36c9dec04e22066b9a285bf771a8ec38e929f62d25fd57e744bab03b345251b8fc6ca59cd3283ba351c3e92c74f7206e9360dfc96ae7c45bd9842c9d7beb15d46fd1212eb0dbec6353c1546c3a31061d78a2d1565de8bc93414927646a83d02a3aaf871557b9619e19d64394ca7a3181fd671636f2', 'category': 'Other', 'description': 'The image is mostly obstructed by a large black shape, making it impossible to identify the road sign. Only a small portion of the bottom is slightly visible. It is not possible to classify the sign based on the current image.', 'image_quality_notes': 'The image is of very poor quality due to a large obstruction. Most of the image is covered by a black shape, obscuring the road sign.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 3177.0, \"x\": 663.0}, \"hi\": {\"y\": 3208.0, \"x\": 697.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5380: trackId=t1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f, observationId=o1:10166932b967ab6eef2f4cbc371c2ca0:00110060\n",
+ "Processing image 5380: timestamp=2023-12-26 14:24:37.923870+00:00, observationId=o1:10166932b967ab6eef2f4cbc371c2ca0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white triangular yield sign is visible. It appears to be in fair condition.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the yield sign is still identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17953946139361407, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Fair', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030b352f0dfa692903d86fb35bd4a7e7:ffff005f', 'observationId': 'o1:10166932b967ab6eef2f4cbc371c2ca0:00110060', 'geographic_point': 'POINT(-82.0156021267805 27.9966702964132)', 'mapsURL': 'https://maps.google.com/?q=27.996670,-82.015602', 'captureTimestamp': '2023-12-26T14:24:37.923870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A10166932b967ab6eef2f4cbc371c2ca0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7b78712ee56c4adbd31cda70ca376d284bfc30fc2931c79f96f0757fa3b0b6a2c92c3ad1a9b66ec0510e5acb0aecd10587cb3cd45f6e4b0cfe5913574b39c7962baf4ed72a5e74ce46b0264f37e87d67ad57f3c4c4bbbbe8c618c3f8e358dbd072439e33085c9ae889c59627fb4be4d2d0067344f05c0de096b2e1cfdf71a3969e8b2ba515edcdf13de6c7ce07e5f59cafc5489a210de6969b18275ae638e68ac69cbbc7df890a58c6227563b21655e164f853bb892a8d6efecc129c5534e4399c926dce5eeee710f0e71dd190017dc280a3ccd684613521da681e7222ec9c4f97eda4eb697efc55aa3dfe11830a02d5cb7f4700c4ecef92e36433c65629602e', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible. It appears to be in fair condition.', 'image_quality_notes': 'The image is somewhat blurry, but the yield sign is still identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3132.0, \"x\": 3484.0}, \"hi\": {\"y\": 3166.0, \"x\": 3519.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5381: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060\n",
+ "Processing image 5381: timestamp=2022-06-24 20:26:58.396259+00:00, observationId=o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It\\'s orange with white reflective stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1816991728705329, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:8c8bd0e6f6ff075f49300e7b9bca0ac9:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.396259+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c8bd0e6f6ff075f49300e7b9bca0ac9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b411a603dbf55f9f559358cb50059dbcd5a2a0c286fa73e1eb0fb2fae29c46a42e55613cf3d69f5f461b5bbf6a4f8db5741eb63377162d84e249a0f69f0c9f0f9c7221ff358181e5a2639eef87d7a8d9f62f5ea5cd812ed33a12c36aca927658879e1a7005d0737e8d84d6c49641cc37d419eeba68349d303967c491a810d08b42d8eb94e709b941c5af197a1b9f5f8cd878e4ee143c57e32ee64bb7e3fb8a2e636f7d4fd160403427d0a07c00312e6d4db28d24a1b4c33c0bad8dd5a5ddeb9f7d7256fcb27d04571a53e38497703a41530926f042bf6a9dec56bb41b2b77ef290c05040645b1471ef1d99ff29d458835cc456d3d184e367b808dc8c6510034', 'category': 'Other', 'description': \"The image shows a traffic barrel, which is often used to direct traffic or mark construction zones. It's orange with white reflective stripes.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2584.0, \"x\": 1482.0}, \"hi\": {\"y\": 2803.0, \"x\": 1597.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5382: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:edf8612e536a807e50f717ae9a7b3aa7:00110060\n",
+ "Processing image 5382: timestamp=2022-06-24 20:27:00.884269+00:00, observationId=o1:edf8612e536a807e50f717ae9a7b3aa7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'KEEP LEFT\\' with an arrow pointing to the left. The sign is associated with road construction barrels.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21206561497279575, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=493, total_token_count=563) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:edf8612e536a807e50f717ae9a7b3aa7:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:27:00.884269+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aedf8612e536a807e50f717ae9a7b3aa7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e81737e8d9bdc4e8da66ae967c733594769cf712da40f3cbc66d33e8ace7c9708a08f0626f3d9ace68c8c660127ad212d067f7eb7980b1511c5398747351bcbdae41dd179080f20c829266f2afe148a7cc855a26e09a95999a20ac34bcb3986aa176e709bca54ac13ec10b99a2f0ad27b856c38ee73a78e7e3d25a5c74a2bcc2763994dcbe7f49d62b4472c9e2012adf52130eff0c98a75e4b540d6a501710b042e297cb138fda1441c837f10ac5390f76837eef786723337f92aec31b6317892c1754b6230ead3f2d0913e422a9e52325b7660e7c80c985c4fb96a058f7c4b9509d7a854ab55c75631b14c926f78b859efa9a1975b93bf1fda50f0cd715e71', 'category': 'Other', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. The sign is associated with road construction barrels.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3329.0, \"x\": 1266.0}, \"hi\": {\"y\": 3398.0, \"x\": 1308.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5383: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:8712f0c6362bed799e4c1fd7569e206a:00110060\n",
+ "Processing image 5383: timestamp=2022-06-24 20:26:58.756211+00:00, observationId=o1:8712f0c6362bed799e4c1fd7569e206a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows the text \\'KEEP RIGHT\\' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15525826654936137, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:8712f0c6362bed799e4c1fd7569e206a:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.756211+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8712f0c6362bed799e4c1fd7569e206a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bfa26ace3bc4d650175044e621a9bfb697fb33d61bdfec8c1bb3ab936f4187e34a405394728c642e9cb1e520c47dec989bd97147b6e3ef156260866ffdc759851ac36c6b8292e04b9b11ae6356069362a464aeeff3eac82749a851fce1cde2f5a578d37532388eea936a0d1957016c788e0583dc23775c64a50c47a9822177244d1f2d8be788da2cdee5d3a281076536e02e8cc9912b4f58dd3f00ba6e5a63fe2759928133812fe202c5585250642360443c2e00ee68ec685e6dc039f53052e190e95a57078bb820e7f7597b2caf799f9cff4fb527ac26217005a51d631685ad8919abedffd9dd7e53435983a6f7342bd60356c9d80ccc38bc9c81ed9ba4526', 'category': 'Turn', 'description': \"The road sign shows the text 'KEEP RIGHT' with an arrow pointing upwards and to the right, indicating a direction to turn or to keep right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3498.0, \"x\": 3011.0}, \"hi\": {\"y\": 3671.0, \"x\": 3106.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5384: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060\n",
+ "Processing image 5384: timestamp=2022-06-29 17:11:13.219151+00:00, observationId=o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates \\'KEEP LEFT\\' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\",\\n \"image_quality_notes\": \"The image quality is poor, but the sign is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28938253066119024, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:a29f031dde36b2f2a627b9d5ec6721ae:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-29T17:11:13.219151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa29f031dde36b2f2a627b9d5ec6721ae%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b78a03dc2068cbe075de2590dc5788749b2fbdc47ee0096eb293ce210a0a1b3db3733246271a78995f6f963854e4cf393525748484112f746d43333c23868766a6e285acaaa0acef869039e7c6610c72f055f28914816e8c461656a2b42ad42406a0fbbfcb77a5a5afed6a2bca48c9035a99c8ed21b1293b9726015f15f3ea6ac90ee5add831d86c96c2d5df4093024903bbd512b011e7f56c142d12890f39f7ab0d99daeda238b764b2f003b97f71764e06eec9d5e5126e9f7f3c46a219e2185500f27eaee125e1192295cae40d290e8081cfa343d4fabb8dc12173a1aa1ce71968c61ad61126d5e09c81762f5e68d7f2b90da959df7a8077cf8759952a140', 'category': 'Turn', 'description': \"The sign indicates 'KEEP LEFT' with an arrow pointing to the left. It is likely used to direct traffic around an obstruction or during road work.\", 'image_quality_notes': 'The image quality is poor, but the sign is still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2328.0, \"x\": 1243.0}, \"hi\": {\"y\": 2400.0, \"x\": 1288.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5385: trackId=t1:030c125419a4ca300db4883458c1574e:ffff005f, observationId=o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060\n",
+ "Processing image 5385: timestamp=2022-06-24 20:26:58.756211+00:00, observationId=o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'KEEP RIGHT\\' with an arrow pointing to the upper right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09923730358000725, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c125419a4ca300db4883458c1574e:ffff005f', 'observationId': 'o1:c80ba80cc66e3d12a277816fb3d96cd4:00110060', 'geographic_point': 'POINT(-111.899762465921 40.7494891315104)', 'mapsURL': 'https://maps.google.com/?q=40.749489,-111.899762', 'captureTimestamp': '2022-06-24T20:26:58.756211+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac80ba80cc66e3d12a277816fb3d96cd4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75a7d79b0d9140bcec7fa98fa532bcd8849a6168c2682abf97a50ded1c6ec0c8f4e9335a649c68cf9385900e6d146f6efe2c6774447b289cf1197b460f3901d94555962b0b481a2f5cb4211f90963c5d21f73165d3346335af0f440c43983dbe95f301c72a327610edd8d3ff71c39627586cf83bd7f3dc4842bcb32b87252d573972121a438eb2481dd3d0ce8c2c72def04756e0acd11863eae11cf91afbe4ae0055f33d7a60a51f4960c453b6c689e776d7596bb380505c9472cc814ea074e3a4f08f51dfa3b95a2a5d817afb1aa35222312ad8eba1f9eb59703ea2b16aa73ef8d17acc243c9b90f20ced3f84740f318d7f81d7f89a10e06633773fbd0f9065', 'category': 'Turn', 'description': \"The sign indicates 'KEEP RIGHT' with an arrow pointing to the upper right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2642.0, \"x\": 20.0}, \"hi\": {\"y\": 2818.0, \"x\": 110.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5386: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:65012f18b375d444f982e9063fc72696:00110060\n",
+ "Processing image 5386: timestamp=2019-01-28 14:46:05.258082+00:00, observationId=o1:65012f18b375d444f982e9063fc72696:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with the text \\'DOG ON GUARD\\' and \\'7 DAYS A WEEK UNLESS WHICH DAYS\\'. This sign warns about a dog on guard. \",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3882954679889443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:65012f18b375d444f982e9063fc72696:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2019-01-28T14:46:05.258082+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A65012f18b375d444f982e9063fc72696%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=672a5783961e3ba434d2bc36cb00818cc6a7ea53af8be12fc6e926f7f695dc370aeb92028d113ef17768bb84cc3ebcc1adfc2ba2581df367f3949187af108666b1aec9cdf66b0d011c7e8d57c4d5a18f35d6ebddf8c837cc61cb78429df5dd560d8f319c7997553d58a5c2b06ec3ee6b9e010e2b653477f2f4723769e646167e44e69f125ea0d47975751b2e8e5b4ec1c2f6ebfcfc94d83ffa2609ad5a60c03c3249e67c29f9839678a875921ba1cdbadb82853489d3175ac0707d3b9075689677f4f3746a5280fb9349bb48a529ff1800ac745b9ee7047286dcbecf09055be0390bce359106bcfd97cd0f62e24f3df2989feccc9125ea3f546bde6db110b159', 'category': 'Other', 'description': \"A yellow diamond-shaped sign with the text 'DOG ON GUARD' and '7 DAYS A WEEK UNLESS WHICH DAYS'. This sign warns about a dog on guard. \", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2720.0, \"x\": 153.0}, \"hi\": {\"y\": 2895.0, \"x\": 292.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5387: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:de36bee118f2b11cdf0cf5116b7d2453:00110060\n",
+ "Processing image 5387: timestamp=2011-04-29 19:49:19.219666+00:00, observationId=o1:de36bee118f2b11cdf0cf5116b7d2453:00110060\n",
+ " Error processing image 5387: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ade36bee118f2b11cdf0cf5116b7d2453%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8579b5f540190b02384adaaec912cc0c1fd576b518829843972638ec9ab1eb691d40444143ca83889b7c97eeab9ffef415361c8343f1e346296fcc50a73affad914a81811bebfb718652c14958013f300e6d390bd4d8e3d50c0bc09a873cdd532581c1b277bec61b3ecedd0a501a62b5c14a883db31f5299e1f005720c244256f9d0e598a5d50e9d4ea7cfc5cac9f076039d4adce64c57d09317d23b5ad45ebfa95169653b030fc2a3a90ada089003481bbef84606a18feb58ba69cc3eae44a0cb338f6076de69800d97ac372b9290852d951fbab91776b09d64729fd9287863031ae81d71a628eb4b03f6711535822e8d8d197918226c5606594100c67de039\n",
+ "Processing image 5388: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:4f67b36f408d7acfb33f8999ba4424a6:00110060\n",
+ "Processing image 5388: timestamp=2011-04-29 19:49:19.927889+00:00, observationId=o1:4f67b36f408d7acfb33f8999ba4424a6:00110060\n",
+ " Error processing image 5388: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4f67b36f408d7acfb33f8999ba4424a6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1b08e2537b45a64bbd4c5765fe50d1cba46fde579d1fc75241ba72f5cbf064907d8c9b3e7eb4a51b65c9e3c1236bfcd4475475f81c1589d5caa07483e62da0ec9f1ed22d4b9c78db1c2c2417055983f8d978facfba610f3e2e916bdbcbf80535a3c34294a870cc6cf227d03156a8711b18a5629616ecd2f038de6a227cb07e78bf3950848e1783c1c7f0694b017b960a09c3ee6fdd5f260b4fc3c5392a784790d453535d549c5161e65374b239098191babc51a9e9a74b2a182749628462ed7105c739ad04be28e33c1a035b17dedf865d044667212dc63337774b4fe86117b509cadea30bf35317682237bb4690f1fe5a029ebacc2e3494296fe77612baaae\n",
+ "Processing image 5389: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060\n",
+ "Processing image 5389: timestamp=2024-02-12 21:37:01.976850+00:00, observationId=o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with the words \\'DOG ON GUARD\\' on it. There\\'s more text below it that is difficult to read.\",\\n \"image_quality_notes\": \"Image is somewhat blurry, making it hard to read all the text on the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2998682300696212, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:2cdf637fa7c109d07e0812ae2ea45c6b:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2024-02-12T21:37:01.976850+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2cdf637fa7c109d07e0812ae2ea45c6b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4657bc59e802d4f0033a028c15caaea42f27452760c4389ba2b4cbbb93388adc3d48bd0b82689c562949acdcbb8348d739aad9758d63229280e69e14afe52ba02b14dd2981d1fe4a005191f1944abb79e765490ad5e780790fda5520b8b5fcddc86761d0da482b046066e5a6694870c9e6e79c031d9a0c395de8d3f7e8da33ed01069720c7bf563fbcb5f9d0610f2cac8f42d2404668a2817a09b8b3faaabb64834b6ce12961a7fbf9d3190bb5eb2ed1b07f2c49b298ba368f8a522d862fd175fe8e13fe781b7f96a2052f8d552109cbe5e0558acb4e10436baa7beb525d2fc4e32feed0a5032df56fd6d4b9ea10530ce100c29d6ad5a7ad54f1a2075ec12cb7', 'category': 'Other', 'description': \"A yellow diamond-shaped sign with the words 'DOG ON GUARD' on it. There's more text below it that is difficult to read.\", 'image_quality_notes': 'Image is somewhat blurry, making it hard to read all the text on the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3551.0, \"x\": 1171.0}, \"hi\": {\"y\": 3704.0, \"x\": 1288.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5390: trackId=t1:030c307a6c71d4bbaf167fa5759f040b:ffff005f, observationId=o1:7e3e165d3c70bba6deefd307f893cd85:00110060\n",
+ "Processing image 5390: timestamp=2016-06-15 20:54:57.795572+00:00, observationId=o1:7e3e165d3c70bba6deefd307f893cd85:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is yellow and diamond-shaped, with the words \\'DOG ON GUARD\\' written on it. Below that, it says \\'5 DAYS A WEEK GUESS WHICH DAYS\\'. This is a warning sign about a dog on the property.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign details are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2331846493941087, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=104, prompt_token_count=493, total_token_count=597) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030c307a6c71d4bbaf167fa5759f040b:ffff005f', 'observationId': 'o1:7e3e165d3c70bba6deefd307f893cd85:00110060', 'geographic_point': 'POINT(-81.9718242736212 28.0378087349348)', 'mapsURL': 'https://maps.google.com/?q=28.037809,-81.971824', 'captureTimestamp': '2016-06-15T20:54:57.795572+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e3e165d3c70bba6deefd307f893cd85%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6de23f6a8c2fcf3d68e09758a8f9d59fbcbebffb0013d36cecab9b0c60712f0f2f4afddb14c16583ef7c43249ade6eb1867adc28fc2fd1bb51052cc1644f186b77e49c60d9c320b1d2caa1e2a1d877d08a77f1f8e7c17dbb1315f0bd873567140c60a3f96c261b4d0901f41034be0c84716341d3cdb339eea73f9142246d4aa9bb75c2256c7b95fbc9723a9b00a5f0a87d139d67f2a0138e708530fabbec790c52bf72f0ad4b94dc9cc5129e6f5681fd402337329e139240f9a7fb87df17fe2ffb51c97c740ae7b9310ca46f4cf164ced9dcf7505a66723a74f83f65a2ba26d7d7d297fd8ba0955ffa240f097ce4bfb1d9762ecfdec711776a10a6d0fd50d2d4', 'category': 'Other', 'description': \"The sign is yellow and diamond-shaped, with the words 'DOG ON GUARD' written on it. Below that, it says '5 DAYS A WEEK GUESS WHICH DAYS'. This is a warning sign about a dog on the property.\", 'image_quality_notes': 'The image is somewhat blurry, but the sign details are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 738.0, \"x\": 1432.0}, \"hi\": {\"y\": 917.0, \"x\": 1588.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5391: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:ee1db258177276e51477eed1ed018772:00110060\n",
+ "Processing image 5391: timestamp=2011-05-04 19:35:48.791195+00:00, observationId=o1:ee1db258177276e51477eed1ed018772:00110060\n",
+ " Error processing image 5391: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee1db258177276e51477eed1ed018772%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=acdea24066fe5905b836d6e2c4b124005de37114201dd7cbda34a3f00f30171b0742d990bb03f73935f20766bf40e8df569158f9dfc28ff7d960d5c147e141bf999d0bbabdcef741a87f80d09d7fb97cec7adcc701b06c0f72ffb1113abe5d77638f4523b47d61597f33fceeba609a19ad0509da12c58118e11abb853418664e7775612dcbdcd4dda4c523f9d117d8bdf77d713a4ecd2062909319476a377e879e4bf852a014e917ffa60e8d50d8f0406e0183d98569a56c69ac73bea738010ab5da244b1b14c6d445dc9eaf1a7b1a7810f47fb01f4ef7e0c6abda0a21c732cbd5252153f69ee23b12df3dbd28ebaab6e5a6a01f8d29e97c05613c9f1d2ecb2d\n",
+ "Processing image 5392: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:ffad0b1fcf02d7ffbdae7613e49a695f:00110060\n",
+ "Processing image 5392: timestamp=2011-05-04 19:35:48.113147+00:00, observationId=o1:ffad0b1fcf02d7ffbdae7613e49a695f:00110060\n",
+ " Error processing image 5392: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Affad0b1fcf02d7ffbdae7613e49a695f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=69c1aa0b74eaf259d24b807b3b33c958c6b77f5f593abe22b17d722c24922d013389bad46348cd496fab468f1f585a976e5de4b6115cc9c2767c3a86b939879c96ce1869ab12c9ebe4937ff50a37dda928e9920b75125d0e875fdaf9607bb36c6b634256ce51ff0f0ce5d65f3a4e2b67e90913ff74a8d1662a3a3a160fbbaadface3a8e87739463be142eb442b02effd36da76f3699fdb3454c792ed1a20b54e1fb10b7a752a585f3e5562fb56dd12e31841bee6e129103d612543620a44fcf645a4796eb58f3b9164b886a5cdef01f2d05a67448ab43414e914fceee37f2f1aad170a9a72892507694a73eca210caad2199c0978979cc0e3fb592bca9b03aff\n",
+ "Processing image 5393: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:3efbffef357a3f730caec37bde6b2666:00110060\n",
+ "Processing image 5393: timestamp=2011-05-04 19:36:52.182055+00:00, observationId=o1:3efbffef357a3f730caec37bde6b2666:00110060\n",
+ " Error processing image 5393: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3efbffef357a3f730caec37bde6b2666%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b68187b09560e174a8d109b5b7179ce51478e1c7bf96a0d15b0d512771193bc59604d58c11c4b5961ea002aec6952bf939b28fc0c41adf038f662c0175905772d20d3e03baddf158a8be3f5c662691ef71cc7e49f00eb31da0bafef02e16527f8fa7adc18bdab183df33aa9c79244b962747a290ca83c9bd8cb49417e996b19ed82918330f5c2483e92c34ea3524ce98067cf8ba7aa5bc161789b151c37fe43ed77369aeb20d82551f0f2c6f7b343efc0a22cdcd9d33ff61848fe50b2cd1c88965886be2154313590e8a133a9f796ce3c1dc5c2bf3a9af2a418a39d8b757b73983f740ff055513fb19bced6cfc932ec30ae8b66ee129f6ea793c0786ef7e27cc\n",
+ "Processing image 5394: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:7f77caf9c94ea977a9061a66591b534b:00110060\n",
+ "Processing image 5394: timestamp=2011-05-04 19:36:51.251670+00:00, observationId=o1:7f77caf9c94ea977a9061a66591b534b:00110060\n",
+ " Error processing image 5394: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7f77caf9c94ea977a9061a66591b534b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73f38a68979956b7a8a515a23cb46903a8555703e8a60d0b2182b70ee67e30aa0871e92d4773783dc0086155c4ffcbfeb9c88317b9078a48ce0b8074f4f6ae48aae3f77814d1f053f20dd7fe37f583f9f351c8449a557047c7866025602f2eca8a9fd94fed2395019adf6e00e9e0e8cbe45896726739df68ef3b72e1461b386f12f8c2a63da83fa06e7a217a8a6310f614eabbc7e71c997065d9162a68521a29d32493d6d47335668e193783281f96799ad8b8bc439c782aabe90587051dc195e03fdb8228bd418223672102ebebb3b73688282e05b10994792c9fcf58bf3c9f8ba68f8fe0a0744f267b8d191cf7c4fb52b95ca56af36def7beaea99d3575f92\n",
+ "Processing image 5395: trackId=t1:030cc545197d9cae85e6bad3781f8965:ffff005f, observationId=o1:dd068945296c713cb29c424061ef60bc:00110060\n",
+ "Processing image 5395: timestamp=2011-05-04 19:36:52.182055+00:00, observationId=o1:dd068945296c713cb29c424061ef60bc:00110060\n",
+ " Error processing image 5395: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Add068945296c713cb29c424061ef60bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7d6cfebcb9843a893a7b39ae477fd7be3850c4555d496dcf9ec8028fff867bd8236ae40eebbe159015d438708353cc7012098c52c0562702dbc3dc6c863b2845368fc549c4d51a4d2a61cd0b2967a04229d8dfd84d2855400f331a172468cae8124ece0a8b94bc7cf563ea65c9f853711df22a07d082ef8416c428a27b652a6be3c22b7caef4b35320d59cbe2137afce1b515333633991f0f72cc8a99e15bd56552a8baf4f5ccc97bbe1832848534e8839ed544e7d416f5668caf64e9eb37936d01ae2bd83e9be1e9c89e911f6b460dd0a15c2c457f1b1c22fb54cf0b718eb22c03e889147ac947410e3c4a7fdfa722a923c529de1746cb38aff4bac3b581716\n",
+ "Processing image 5396: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:68706cba9cdb0ff962783674ec037d42:00110060\n",
+ "Processing image 5396: timestamp=2024-02-20 21:13:26.496263+00:00, observationId=o1:68706cba9cdb0ff962783674ec037d42:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The street sign reads \\'W Memorial Blvd\\' with a directional arrow pointing right. The number \\'200\\' is also on the sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22486347901193718, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3073, total_token_count=3149) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:68706cba9cdb0ff962783674ec037d42:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:26.496263+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68706cba9cdb0ff962783674ec037d42%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b40479267afc8ec2c7c3dc3e3482684cba55a90d053ea7376eee6bbb108c23b570b4cf2cd2dd99335de8507eb6cc0392953aa265e61182c08c5c0cdbf22c9d744cb2ce2f1afde941032c7dc4c6269bf6e10c601bdba0e340e29683b336f60f8372ed56bd079709fa2b2f73697e9b1c3f7d1b1e73b18220945cd1073c89607fa91bdd9e98dd32d12b0d43ab27d400d2d611176d3f91f1d1b08fa03e3f708963ce8e077d7e29adb00db3824f82837c5d58b7d28a561b0db9bbf78e213df0e6a8332397fcb6426e84a257f6b7045483ec6f642e982380e0f268f39d41fb99b8892fc16017006ef20bc1ba8c63b3c2d81dc8419882103b26f6fa159d9cb63c28bb90', 'category': 'Street name', 'description': \"The street sign reads 'W Memorial Blvd' with a directional arrow pointing right. The number '200' is also on the sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2248.0, \"x\": 1345.0}, \"hi\": {\"y\": 2342.0, \"x\": 1722.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5397: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:518f000324af718b84923fa563d9b30a:00110060\n",
+ "Processing image 5397: timestamp=2024-02-20 21:13:25.972607+00:00, observationId=o1:518f000324af718b84923fa563d9b30a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs: \\'N Missouri Av\\' and \\'Memorial Blvd\\'. Each has an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17515701717800564, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2557, total_token_count=2629) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:518f000324af718b84923fa563d9b30a:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:25.972607+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518f000324af718b84923fa563d9b30a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3eb37a26d969249205ebcf1ab280b7c0b32973f771e4476b6b58ed0af23fb44e3e22d9c72c8bf76c88c42895ab782b65b47acb6bdbe83b88fef61726716a5cbfa9a74b56dbf05ed393057d0319ed6c5dc48ec8340edc0ff338fa008878da7da5fd865a4908cf293d0e9d5d12d610fa0f8edc2834fee4037e54961ef0b145c46bf7fd9ed28f5a1f3e97dea7f73a4071f1ea6e01e292339639b4ade6d3a19e2ce2919e125455ee2e5648001cdce66a948d73b308fa627fb00f83a30adb4d421c268fe5fa4e5f25857e9594560829a0518148a5fd54e5a18127d3b69e67b9e1d9c5d2d90fc34a7c6eaad30661d152fb210a2d5ce4a7ea72873dc18ccb4f7b007ceb', 'category': 'Street name', 'description': \"The image shows two street name signs: 'N Missouri Av' and 'Memorial Blvd'. Each has an arrow indicating direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2321.0, \"x\": 0.0}, \"hi\": {\"y\": 2412.0, \"x\": 249.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5398: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:5a091596d4386863fde88a6b404ed3cb:00110060\n",
+ "Processing image 5398: timestamp=2024-02-20 21:13:26.996289+00:00, observationId=o1:5a091596d4386863fde88a6b404ed3cb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple street name signs. The most prominent sign reads \\'W Memorial Blvd\\' and has a directional arrow pointing to the right along with the number \\'200\\'. Another sign reads \\'N Missouri AV\\' with directional arrows. There is also another sign above the street name signs.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4069038966916642, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=2041, total_token_count=2147) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:5a091596d4386863fde88a6b404ed3cb:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-20T21:13:26.996289+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a091596d4386863fde88a6b404ed3cb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b9ee7b1c816309c21c0a8e9e5b26b64f7627141dc0acbfa055fd242c9076a8ed25a4252e665a4e89dc153cbaceb5fe175a3d5aa2c20eb6e00e0914553d46eb47687d02599f25b80a642f485836efa188e3712791dd10581cafc509d72d5fb76b2089312fb1c6821c1acdf2f46df81a2f2e03baae3d4dd8dedffad82d1e3f5b6bf153cbe1649bd6d8ebd4d80db2387f2d60166e88097d4565cc376d3e7acbcd53ca04e5bf98fb00a6d050dc74bbf359d40fe21f78381ab30a71341a3a9e5abd25f12c8ce8e346f53ce0b71002ae3265035888d1972d16121ece20924f2c991e97ddae78107ec2c62f4b90115b02f2d5087feb4db5151abc480b2ddb4e6e6ca11', 'category': 'Street name', 'description': \"The image shows multiple street name signs. The most prominent sign reads 'W Memorial Blvd' and has a directional arrow pointing to the right along with the number '200'. Another sign reads 'N Missouri AV' with directional arrows. There is also another sign above the street name signs.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2268.0, \"x\": 2943.0}, \"hi\": {\"y\": 2341.0, \"x\": 3255.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5399: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:56cef3e1006f2487ad4dd0c8594c6555:00110060\n",
+ "Processing image 5399: timestamp=2024-02-15 21:18:35.797129+00:00, observationId=o1:56cef3e1006f2487ad4dd0c8594c6555:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating \\'W Memorial Blvd\\'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3191196860336676, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2557, total_token_count=2639) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:56cef3e1006f2487ad4dd0c8594c6555:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-15T21:18:35.797129+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A56cef3e1006f2487ad4dd0c8594c6555%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=807183737b22ee1c73388e3522a5b250571d08602ec8402e2394376d46e2a505f83f3dbf7e71868eb8d0baabfa183db39bf2abf6e3affe2815ccab4a569d6d5da560aa0f13852504add60b4eb46208823ac8406efd9ada0291c5251c1088b3ff65314efd1ec63b55684db9189e4a0ffa8a85773a4e395ae6152f6f357531703817b347a2343e17482a406c9388b7fccfda853ae968f44259bba0c07b5ac8fe5639f6d201c328bce149da0db761f9ad9b8c2e0f168f8304c5f433119edf8d12771c1af9d0edcd4a9623c28da042ac59c15a0e329ce95b10dad10bbecfc7ba93e0322aa869ef10e6714b683236e444a9df0c28855d593ab52d179435e44c291382', 'category': 'Street name', 'description': \"The image shows a street name sign indicating 'W Memorial Blvd'. There are other signs present: one says Missouri and there is also an octagonal stop sign in the background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2250.0, \"x\": 2029.0}, \"hi\": {\"y\": 2336.0, \"x\": 2429.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5400: trackId=t1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f, observationId=o1:a86f946504b23ccce8cf9003dc5bbf91:00110060\n",
+ "Processing image 5400: timestamp=2024-02-15 21:18:34.969168+00:00, observationId=o1:a86f946504b23ccce8cf9003dc5bbf91:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows street names \\'N Missouri\\' and \\'W Memorial Blvd\\'.\",\\n \"image_quality_notes\": \"There is a significant obstruction partially obscuring the sign, but the street names are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3828965700589694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2041, total_token_count=2119) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030e0a3ee7b2126376269a4a6da3a4be:ffff005f', 'observationId': 'o1:a86f946504b23ccce8cf9003dc5bbf91:00110060', 'geographic_point': 'POINT(-81.9584119280871 28.0548101270734)', 'mapsURL': 'https://maps.google.com/?q=28.054810,-81.958412', 'captureTimestamp': '2024-02-15T21:18:34.969168+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa86f946504b23ccce8cf9003dc5bbf91%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a81a0a7d6f6d598be8c108a57f369eaaf1451a0884a9646d13ea35725fc045d734b1ac27a218ec323231b56a7775e8fdeecfdc69d72861ae225b8225c9c826cff1c17f1622f6a75c656f8cf06f09655e74893a38c1a3d658f8c2b965244412586e30f298116c1e5aab8a761734e5f51c9a6e2d1d44157ddedecd00c018f792cc237174173fbf371d324db5ab4b4a4cb03290036c76986f0dba797feb1929e9716d06eb937946ed658e4ae0d2c40a6b7ae1eaf0825490f1245023ca9df115ccd94c2c5f0e42c875d1bb38221b5fd886dbc3ddcb701907ec11880c7546549302651765a6caa36465ba1eb4f276f6b42f3b32859b3ec422e6f53137f3e41adefed', 'category': 'Street name', 'description': \"The sign shows street names 'N Missouri' and 'W Memorial Blvd'.\", 'image_quality_notes': 'There is a significant obstruction partially obscuring the sign, but the street names are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2261.0, \"x\": 631.0}, \"hi\": {\"y\": 2358.0, \"x\": 992.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5401: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:d9d81f625b02b1ec149fd115d2f0301f:00110060\n",
+ "Processing image 5401: timestamp=2024-02-02 21:11:24.652071+00:00, observationId=o1:d9d81f625b02b1ec149fd115d2f0301f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.\",\\n \"image_quality_notes\": \"Image quality is good, the sign is clearly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.426362551175631, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:d9d81f625b02b1ec149fd115d2f0301f:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-02T21:11:24.652071+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad9d81f625b02b1ec149fd115d2f0301f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a529d105b1ab407b6532881d87d784465559a025aa88ed1bfa94e64ea1031f36b660d4f41747745ceb80e0bb57fdfb8240e992d0b3bc69fcdbf29cb33c7cb56062beeeda1102a4feb1f76d80c6d07732491a1c281d36f233a3fece6365d2a38b32643e80e2a2412f00fadf62ce14bd86cda92b2f8684134d16cc94892601581d144c1f3c643398a46246703719a070cfb2752220169462c224fbd7374a92b065df273570b625e90650186e72d83682c4db72ef6f465c4d0b54fb76e22db54f39ee0c149c2f21cfd41cd9ba2371f3eafc1a7075ccf45d304da6fe4e0fb841bc514eb406c579143e10b42d9543007e041fa3158b61ea47fbe2eb054bbac41654d', 'category': 'Other', 'description': 'A diamond-shaped warning sign with an image depicting a vehicle losing traction, warning of a slippery or unstable road surface ahead.', 'image_quality_notes': 'Image quality is good, the sign is clearly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1815.0, \"x\": 715.0}, \"hi\": {\"y\": 2397.0, \"x\": 900.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5402: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060\n",
+ "Processing image 5402: timestamp=2022-09-21 16:23:38.703051+00:00, observationId=o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24677621865574317, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:09bae1ed4ff10574e9952fb4bdb31fa9:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2022-09-21T16:23:38.703051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A09bae1ed4ff10574e9952fb4bdb31fa9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1c5e3c886bcbbe9e1afa4f615b7a7f5c871f3249375bb630c10d28ad166cbec6e1a9d46bdef72900a7e6d0de26a8f02d520c7ce4ea71276136a961a02c772322e0118abdb11dac38917516bca069b3515ebad888bc7f6b8f2cf688ecd7c53b477f6a8816ce29a0fb4ccc9980d89bdc99f0003f9695718eb3f15d23766b680fb1e0c022b6836c631ae02bdbb391bef9cfd86ed6332ed84d135d897a439e8f60619281a3b3c0adf39994fdfda7fa8e254df1ea28fd8eadd5466f62173f0228d8f54e0eba33a0f96172a5b1a904c5e8b2abb2e8262c5c45e3f6cdefdb92aeee4c1c93da36ce25aea5e27c3db2f27828fc8b0bfe804ed7b162cce3c31ff5c0d17bad', 'category': 'Other', 'description': 'The sign is yellow and diamond-shaped. It depicts a car skidding, indicating a slippery road surface. The sign is in good condition and is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2827.0, \"x\": 2676.0}, \"hi\": {\"y\": 3270.0, \"x\": 2941.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5403: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:9483ba267d384134b277d59a0670cee6:00110060\n",
+ "Processing image 5403: timestamp=2024-02-02 21:11:24.172040+00:00, observationId=o1:9483ba267d384134b277d59a0670cee6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1793665689964817, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=3073, total_token_count=3146) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:9483ba267d384134b277d59a0670cee6:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-02T21:11:24.172040+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9483ba267d384134b277d59a0670cee6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=685b70ada892367b3cc8e2cfb20b8a6261142ee4ad8da5479941715eb5e8efc27d77ac426466762d17001f054b6d436c7a81c935c7b40542424b9539408a53200e266dd5bbd028640b8248dff2be7af4d45d740e1569860282a031c1240fe2c66c6fc7ad50323e0f00d7bd53d8189b9d14480dfcf179561137a72bcfc447382362e1ca79e9ee87a5ddcf5c02446a8000420fb407f161bf997c083a3d670a018ebd08dd6dc9a9173b9dac4d529fae91f73971d5757f9d006e0afe6784216456b3fe277f6fd706eb4af9f91ab73562df70184b67887a60f682f2cf830c3c352ada0e776d509566bb3650d8e8ac9382bc771bb060e7f7187cbdf576c6e3070dab9c', 'category': 'Other', 'description': 'A yellow diamond-shaped sign is visible. The sign depicts a vehicle with squiggly lines beneath it, indicating a slippery road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2969.0, \"x\": 2032.0}, \"hi\": {\"y\": 3329.0, \"x\": 2314.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5404: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060\n",
+ "Processing image 5404: timestamp=2024-02-06 17:45:41.585160+00:00, observationId=o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14305689599778917, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:0eddf0db5d04d0cd2f9a19a9a5392dd1:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-06T17:45:41.585160+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0eddf0db5d04d0cd2f9a19a9a5392dd1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091419Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4fbad96d49f256d9ec3ef38fe0563794d89ffd2d8587547ee171127374faa41626c9dfa698c837eb9a91ac317c5352b3371830289c604de40dba43b9dd5c162852a4c0c57f6ed8695219d1ad81a10e28bb8f9cc803dcf8b021a1a0fee311c5325d3a51f797e9d7a88efbc0d25ee914609eaec15bf9fe4122bb4eb1442e40efd0edcbc414678edb7102368985a4ecdef1bb109bb7096716396d665779f163399e73b5bd1f196d20f119ede7776f501ff017b1573a35be9601a146b09410aa604e37d27ba7dcba3e670725363738f6cbb1a1abfa636dec304e5eebbee3ae14bc2d539ff879eab082a318f9a8d0a3c6b3aca591735e7eb004139f8ed3c3ad57ac0f', 'category': 'Other', 'description': 'The sign is diamond-shaped with a yellow background and a black symbol of a car skidding, indicating a slippery road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2960.0, \"x\": 2159.0}, \"hi\": {\"y\": 3328.0, \"x\": 2435.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5405: trackId=t1:030eeee64143afbd56fcff250a496787:ffff005f, observationId=o1:20672b69d0607d6ecdeb07691a1537fa:00110060\n",
+ "Processing image 5405: timestamp=2024-02-07 16:52:04.490836+00:00, observationId=o1:20672b69d0607d6ecdeb07691a1537fa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2743416083486457, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030eeee64143afbd56fcff250a496787:ffff005f', 'observationId': 'o1:20672b69d0607d6ecdeb07691a1537fa:00110060', 'geographic_point': 'POINT(-81.9076990210296 28.0150329864357)', 'mapsURL': 'https://maps.google.com/?q=28.015033,-81.907699', 'captureTimestamp': '2024-02-07T16:52:04.490836+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20672b69d0607d6ecdeb07691a1537fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091651Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=968a70c8c5b252c6e4f88235b93d8426bb38910868788e3edb2022d2842bca1da14268bdc247f06ca23f0bc4159c0ebeeadc690e97b2e4398f2a6575f8c2c181888153c5d92004c6a2e45475d07f5e4dd19b1dbb39f51fc005322093e5c9af2821cfa711945b61959439187bbb9b68f14c91ccd27eabd29fd3acef734634ef7b8a490c79d7ad61d3c8e2f1bec6cfddb898d746093fe1b62a9a607120ff3db6353569cf8356e2e44d9e2b2442b2ad22b96004bb2c6865498abd7c30de8d1d7d12f07999517eca07017b964264eccd915185ca330186a28ae6c900d047fa6f59a13d51cbfbffdbecb12a966082534ac5fa5686dad09cc659d98e33f49ddef5a027', 'category': 'Other', 'description': 'A yellow diamond sign indicates a slippery road ahead. The sign features a car symbol with wavy lines underneath, symbolizing skidding or loss of traction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 2662.0}, \"hi\": {\"y\": 3329.0, \"x\": 2928.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5406: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:004c11dbdc069abf70543f10d20caae4:00110060\n",
+ "Processing image 5406: timestamp=2022-10-07 20:48:56.818270+00:00, observationId=o1:004c11dbdc069abf70543f10d20caae4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23445744300956156, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:004c11dbdc069abf70543f10d20caae4:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:56.818270+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A004c11dbdc069abf70543f10d20caae4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c23baa00258f343c08aa77c3c2ec9d9b91bc8c18e095af63362bc4650885f0314026bd72b0fd6cc2a6fe18c1ce480f487ff51f583592ae4aa46a62b39edb19b4f816efe3d1e285de849e233d288e8999e4d0ee1f564dd6b0b4bf8fccf98c63281978e4c73b1fe6d6dcb103207a257a11fdc32b353ccce3412f02d22b46ab8b5bd66b0e09eac80889f94ed67eb3592242700847499f45ed719aba634fd152c43c03026adc3a2ebff8ca8fadf073fd144fadd1da078ea2c1d007b33eac1e0fc00a5a6dee5d353f2673de8ffa18ddcf7fe65e26baa1a7d85043b5315cf50e904e7c085e0b8c2926ce351fbc8fd6b3a5c94172b6984a1d3e8d5053f84bb053b5341', 'category': 'Pedestrian Crossing', 'description': 'The sign is diamond shaped and yellow and depicts a person walking, with an arrow indicating direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3012.0, \"x\": 2404.0}, \"hi\": {\"y\": 3217.0, \"x\": 2595.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5407: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:3ec8764de20bb11762434861fe06a463:00110060\n",
+ "Processing image 5407: timestamp=2022-10-07 20:48:58.602272+00:00, observationId=o1:3ec8764de20bb11762434861fe06a463:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4114599330450899, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=3073, total_token_count=3166) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:3ec8764de20bb11762434861fe06a463:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:58.602272+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ec8764de20bb11762434861fe06a463%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a6be22d3f4624428c3935dcc5775b8b889f6072f19ed30a90f74e7e9babe5ff753bc8654753cf6196968a45dbba224ccfe09b82cdc867d42ee8b07173e0e257bc9ce28a9bd7efb34993fff6f1016a158b1bffa07150e1a26f30b3a4302c998736c92081c13550db57b1eb0d30a258eaa1b878d1d4d7846aa87349e5ef048361d81e3cb09eaf9fb70cf87d3d8fd3e6592df5b92a8c53285fbc1cc8fab3e875a3f8fd06e0aea996a7f7fdfdaf33c6f05edf6ba58779b2d61ca7d7d53962c513c05ed81e4c917f4a37975b38400f0c4d90091d471820570f113e317a77274698d3e45e2d1c7ff49bfc473e306b3cde63b858f853fac6e24a22b89b30ae44982711', 'category': 'Pedestrian Crossing', 'description': 'The road sign is a yellow diamond shape with a black pedestrian silhouette in the center, along with a lower yellow sign with an arrow pointing left. It indicates a pedestrian crossing and that pedestrians crossing will be approaching from the left', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1985.0, \"x\": 1013.0}, \"hi\": {\"y\": 2277.0, \"x\": 1195.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5408: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:9f477b324e128eb595bf4228b2be9f1a:00110060\n",
+ "Processing image 5408: timestamp=2022-10-07 20:48:57.610208+00:00, observationId=o1:9f477b324e128eb595bf4228b2be9f1a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18180437648997588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:9f477b324e128eb595bf4228b2be9f1a:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:57.610208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f477b324e128eb595bf4228b2be9f1a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10f88d87c7f60b71f9f6c1908ef1e06dabb1731f51027c2aebf16ed67b3ebca7ed307a1de62df0d917f57a6e8328fac7d0aa2eebd4daa68346b9fe21e213940e1c7405ed188fedacf42e99ceff03b2185d462f975f68afb7ecc260672ca9a50f8f30e39b86326b1f038d309e08902aadcc95002353b2d6c6100be0928bc0ed8b589bae15dd4d8a58827906f862bd69b97ee84012df6d5e6a5584c3b8898faaab77e96443775f81ce8295bda39829506f15984d07c9eb730c5725855919446df6ac30e8bb66c0f84ca182d815a1ce6ba8ca4d17de9e773d18afe42a32a7280363ee2d44a10ac0586f489b864c5de3ab58a080abbb4d916b960f8eb5d07d67593b', 'category': 'Pedestrian Crossing', 'description': 'The sign shows a pedestrian crossing warning with a supplemental directional sign indicating the crossing is to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2057.0, \"x\": 60.0}, \"hi\": {\"y\": 2324.0, \"x\": 268.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5409: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:0b83430a0d98e057114e9b83256a2eb1:00110060\n",
+ "Processing image 5409: timestamp=2022-10-07 20:48:57.610208+00:00, observationId=o1:0b83430a0d98e057114e9b83256a2eb1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24002270314885282, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:0b83430a0d98e057114e9b83256a2eb1:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:48:57.610208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b83430a0d98e057114e9b83256a2eb1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b56d84efca5e4c309a029e184fa3c95b778b8d944b7b494e72b0650c2ba7eff526cfe54ea1951c01972052b7823bec129929340b8601dc4ac056f9231612f25f0e2ff2442e77c4ae7290894e1205035cbc51a4cbb93a6adf277572c5bcab38eb992652707c0d955027636300f10fe089968022a7a42efa5b97af278459f1318d2a5231ea36757fe4c0f1c4a958013d2527cfefeb7c9262e18676ddf799cd9d36c96a1ef1acb5784e3a06bdcddb561594b89c7f797cf7b33b66ee8f0fe97d00db39d229160cc24705e45a016455043b886cc479dde5b3f420ca92a87584aef059b664621c8c773637af6780c4ab7aa8ae382fe532bcb3a04e752586fb98ca604', 'category': 'Pedestrian Crossing', 'description': 'The road sign shows a yellow diamond with a black pedestrian symbol and a smaller sign below with an arrow pointing to the left. This indicates a pedestrian crossing ahead, with the crossing to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2946.0, \"x\": 3135.0}, \"hi\": {\"y\": 3204.0, \"x\": 3340.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5410: trackId=t1:030ff9daaa5d9b80425e81ef883a3722:ffff005f, observationId=o1:22920f58e7e885160917da2dde39f932:00110060\n",
+ "Processing image 5410: timestamp=2022-10-07 20:49:01.118684+00:00, observationId=o1:22920f58e7e885160917da2dde39f932:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15941347592118857, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3073, total_token_count=3142) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:030ff9daaa5d9b80425e81ef883a3722:ffff005f', 'observationId': 'o1:22920f58e7e885160917da2dde39f932:00110060', 'geographic_point': 'POINT(-111.907960097171 40.7498666223389)', 'mapsURL': 'https://maps.google.com/?q=40.749867,-111.907960', 'captureTimestamp': '2022-10-07T20:49:01.118684+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22920f58e7e885160917da2dde39f932%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093019Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=32dcc3a8543d9a74dcc26d163b1602ccacaa874dfaf6776129545a72e5d24f8b8c59ce90ff715d7dc1cc9cb82202791c04064a7c7063e6f85aa5687e7c626dad6a0669ecb141ff974618ec2d62850d7cf3ed2e50099202e6753a343496aeee6eb64f41b60ddc8febfc6335be875494974d632de9019a3692126b28b637f29f15e095b87417e3e026ef312e6c75b971c9b4e2034288b312710b176f5ca2a6f23a4e0ed5c7511b7a74fcf66ec11c242155892e42f9025025f52026ca1e9fbd4b282afadaf597ffa0a249f203b87085f0f8f66c81ebc1dce0f17f27699513cc8079fdfd5df00ef72c5d2cd967f4808b9874ed4533710025d0ffcfb32b76552af6af', 'category': 'Pedestrian Crossing', 'description': 'The sign features a diamond shape with a pedestrian symbol on top and an arrow pointing left on the bottom.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1970.0, \"x\": 2049.0}, \"hi\": {\"y\": 2270.0, \"x\": 2149.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5411: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060\n",
+ "Processing image 5411: timestamp=2023-12-27 18:56:16.971557+00:00, observationId=o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"One Way\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.616730462937128, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'One Way', 'sign_quality': 'Good', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:d8ae3e3bafdcdafa10edaa976bca4baf:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-27T18:56:16.971557+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad8ae3e3bafdcdafa10edaa976bca4baf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6572e9a828a3b4c6e2836d259e945a35970db49e434541cd6462a520f09480eebbff1acd445378b80593843a47b951f1921c2f6e4290ba5a4afbfa3c6b15e7ff5578eea2ec39065be7d0ceaab74bce11bdc25e147f098e08e218b63dcaa23c7437817d4851c31e0357a3822abb0e68cfbb98ca7273e660b6d82da0b6435d05bdef8371b5e042064bfcd3e9568400d6ca0647f81372e5be8c51f3bb72963af0d9c1b5ea7addbeac2c12e3e8271c8ab7156a0447fa1d4894579985f44cf443d7f57fcfd46269e4338d32b96b5f9216da28972ae40c6942d41d1bcadf25e24ee8f26b6070d9eea602ec79e777c26f2ac67ef079d159ec01446b5f865a5779e556b5', 'category': 'One Way', 'description': 'A One Way sign with a black background and a white arrow pointing left and white lettering is visible. Additionally the back of a second sign is visible, which looks like a Stop sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1615.0, \"x\": 812.0}, \"hi\": {\"y\": 1769.0, \"x\": 1107.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5412: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:309bd50928f2b226947c0588763e4b65:00110060\n",
+ "Processing image 5412: timestamp=2024-02-29 14:46:17.975139+00:00, observationId=o1:309bd50928f2b226947c0588763e4b65:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a one-way sign with a left-pointing arrow and the words \\'ONE-WAY\\', mounted above what appears to be the back of a stop sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2278000631450135, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3073, total_token_count=3154) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:309bd50928f2b226947c0588763e4b65:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2024-02-29T14:46:17.975139+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A309bd50928f2b226947c0588763e4b65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92863443814304c327d930e8070c73f347d96f316f070141a0408ce400c7e90b76eef61eff59a5a54cbb306925e30b9ab79025b97523f83d33b8df6e2aeec0fb81c93f1e3098b7e4dfe3afda955a67acbcd67c1c2c225a755d34a20f0281bf1a05656d46a2ffaa6c8c3c2c4649d0e7d4681f2632106aa9ad86268fe6f891fcdd92b2583c5c609f23397b43701d2309a80f26e66827123a59cf144f91b6c68015b1fa9d3da8094d834cf92986107536e0cf90ad483a42f8e4f37cdd0859e76c17b0b09d9c2d79e1b4e48351f42b51075f4e096cfff6a32d907932dfa1b0a90a1556a4c099bf0b08ecd6d1f3e1ee8b52e53001a626912ae48ca760256d66727825', 'category': 'Other', 'description': \"The image shows a one-way sign with a left-pointing arrow and the words 'ONE-WAY', mounted above what appears to be the back of a stop sign.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2545.0, \"x\": 175.0}, \"hi\": {\"y\": 2695.0, \"x\": 455.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5413: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:da0c150adca5fb1da01e266c338183c5:00110060\n",
+ "Processing image 5413: timestamp=2023-12-27 18:56:17.271544+00:00, observationId=o1:da0c150adca5fb1da01e266c338183c5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"From the back, the octagonal shape confirms it\\'s a stop sign. Additionally, a \\'One-Way\\' sign is mounted above the stop sign.\",\\n \"image_quality_notes\": \"The image quality is good enough to identify the shapes of the signs and the text on the top sign.\",\\n \"secondary_sign\": \"One Way\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.45096602529849644, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=3073, total_token_count=3179) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'secondary_sign': 'One Way'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'secondary_sign': 'One Way'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:da0c150adca5fb1da01e266c338183c5:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-27T18:56:17.271544+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ada0c150adca5fb1da01e266c338183c5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a59e10dc71ccbc556a587fcccd6e5dac451b4a23707b1220328595f6a41e21678c757fbe7e4c536c0ad4be069b97adc7b222999e202a6620e494b2bed931f3d2ca7544b93651600ed7341ac19ead0bd6387f64a172ebdba90cd4a73f601ce598ec5f63bd3975559eda787ba73e2644ebd572924de4811a14576237a05fe4fad578bcb876ea2e1c1e0c65ea367688229adf500aeaaca3d0ad352c5c8b627eb20e5880b291f36346c41b62b2c745a779d6aa1c53e89b397c1657daf93e5c453265be9cca7f86917b1bfef88aa607d9c7358f903ef5d2ae320a5d8604ff547e22b69447d21b9fa900ab3d6e2b3acecd0e8792b76686735adfc022b5e7d95f0d0cf', 'category': 'Stop', 'description': \"From the back, the octagonal shape confirms it's a stop sign. Additionally, a 'One-Way' sign is mounted above the stop sign.\", 'image_quality_notes': 'The image quality is good enough to identify the shapes of the signs and the text on the top sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2541.0, \"x\": 134.0}, \"hi\": {\"y\": 2689.0, \"x\": 415.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5414: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:66f7dac30bbccbf83b74984d0a1f8417:00110060\n",
+ "Processing image 5414: timestamp=2024-01-10 19:23:34.999755+00:00, observationId=o1:66f7dac30bbccbf83b74984d0a1f8417:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street sign with an arrow pointing left and the text \\'ONE WAY\\' is visible. Below the street name is the back of what seems to be a \\'STOP\\' sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38498474029173335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=3073, total_token_count=3156) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:66f7dac30bbccbf83b74984d0a1f8417:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2024-01-10T19:23:34.999755+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A66f7dac30bbccbf83b74984d0a1f8417%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091721Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5fafe02e5d381335cfcd14a26cd08548c43f0b4c877e2d7c3a14abf498f45482719469d66f2cba984f6861bf3cba7d3c1d9d314dd8607de13f782d564ed48814ad6a419eccfac859aa274c9061c81ab0bc8b051bef08e5514b4d3423b38fdbd78302a34749a184bb9244ba6cc9011c3fd4aa69912bc85543204703091d643a8265499b5210335d9edcbdeb4e602b7ba445309d234aa835ea555c0056fad8bc7e5f6c5b5b50992081de10babeb19d54390bcc75fd86d33fb217f8a702b392aed56f666f2040bc3ab603aff6f0f7c1a1fe65c7e65afc762a6f1c3ded45336e6b1e74080ad69d3442700bffd7f62293a23369efdd4c9136601e2f1a4c3ce08bd8e9', 'category': 'Street name', 'description': \"A street sign with an arrow pointing left and the text 'ONE WAY' is visible. Below the street name is the back of what seems to be a 'STOP' sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1561.0, \"x\": 1449.0}, \"hi\": {\"y\": 1708.0, \"x\": 1796.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5415: trackId=t1:0310305949c98c217988b1ee4fbe1496:ffff005f, observationId=o1:eb9111514b0093d11220d34a4f4e6f69:00110060\n",
+ "Processing image 5415: timestamp=2023-12-21 21:01:41.257848+00:00, observationId=o1:eb9111514b0093d11220d34a4f4e6f69:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'ONE-WAY\\' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The \\'ONE-WAY\\' sign indicates the direction of traffic flow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.310911219170753, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310305949c98c217988b1ee4fbe1496:ffff005f', 'observationId': 'o1:eb9111514b0093d11220d34a4f4e6f69:00110060', 'geographic_point': 'POINT(-82.0033824633231 28.0538794753448)', 'mapsURL': 'https://maps.google.com/?q=28.053879,-82.003382', 'captureTimestamp': '2023-12-21T21:01:41.257848+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9111514b0093d11220d34a4f4e6f69%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=222740977207fcb01c8a6e278fb770b5f226f0b66db8b44374c1de13d27ad114c560ed88e21423e86ee8d3e875467a3e7490e50f44d3b211a7c831213f6e7c6a1647ab5704a0a76730e8ed9c728dbf5d055f967a7150126534620a776f93aa6e643c804b2fefc97abe70503c6c148d900a4eed93ca86a1fcec0ce4f3ad3069053de911833c86fd63cc976562ad561cde01af68415ddb4d32e984a37505603e1080c9a4d23886f6a0842f696ca0c84959620be3cf9597da12379842c1679495deae5afc4f434a3e5c0ef97cf3dc5b2929b936ae3854cf1a50cc9c6b6b4d1e1e2a296a433694d2d09bf0261d74382cab8a2041e48a5b6cbdc22e40919e13929ee0', 'category': 'Other', 'description': \"The image shows a 'ONE-WAY' sign with an arrow, mounted above what appears to be the back of an octagonal sign, potentially a stop sign. The 'ONE-WAY' sign indicates the direction of traffic flow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1623.0, \"x\": 2508.0}, \"hi\": {\"y\": 1755.0, \"x\": 2827.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5416: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:150743f466623330da76a748c2def945:00110060\n",
+ "Processing image 5416: timestamp=2019-01-28 19:35:35.111535+00:00, observationId=o1:150743f466623330da76a748c2def945:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that reads \\'EXIT\\'. There is a black arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1858656406402588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:150743f466623330da76a748c2def945:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2019-01-28T19:35:35.111535+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A150743f466623330da76a748c2def945%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=41f5a74d716349850535855eddb417762a3f14518ecf44f0588c4a10e7466b5bdc8004673817e5e5847962c4454b9763fdeddb2f8f89267893c95f672e425feb29914314cba474229a1bac1a19d0878f3d9df1d89ca8a23e4b2b84fb6b37ecc5da74a3eb054e7d0764a373ab698495b4c6f772b8a190a719d355c322e98f3b8329e1ca8ab454506f73b65083322f576037bd51edbea943b6ed81cf5fe3dcc6551a68ca32ac8562d1d82c98026a75b8f96cd694197dccef3f112726ccc886cc9d4eeca8e6b308a066e9ed8f38311e1c15762ac1161450400d03065d2a456b5a10f46b9b6f58902d91df1dc4d38ac6cb4408b500e44878c2fc8e17274357d8a028', 'category': 'Other', 'description': \"The sign is white with black text that reads 'EXIT'. There is a black arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2200.0, \"x\": 2729.0}, \"hi\": {\"y\": 2303.0, \"x\": 2865.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5417: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:3a28581adb09a74eefc239335b06f1cc:00110060\n",
+ "Processing image 5417: timestamp=2024-01-11 16:57:50.198184+00:00, observationId=o1:3a28581adb09a74eefc239335b06f1cc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that says \\'EXIT\\' and has an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16619528256929839, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:3a28581adb09a74eefc239335b06f1cc:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:57:50.198184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a28581adb09a74eefc239335b06f1cc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bbdf3fa321aa010bffafd8902869ecb1b6ac953bf925e8f289e09543030ab06ae9ca28c8517a1fed62c0b4259749399dc4f47a3eb0dfa43df6a3f0c203a5a1758c9e5765fba634d7388de4156e423bfe9bc1aacc981f751d19573ff043162d3be47788f67eb26be8857b717abc5812d3eb11d198040800243efc73cc8b656992397e7857cdf379be3231d76b19378b566aac9419cb3f6b4a5e226b7e2c04f63eb129cba074e26ed66c671fbe79b5fe3b0e5073e2daa3e00597f0bc157c96902e1e43851265d1f809be43a971bea32d9300e982372b5c713118e3a8a9aafc8f91c0642c97e9f71d740cf27a5bee8630a071388e753274fc2363774f78a7decb2e', 'category': 'Other', 'description': \"The sign is white with black text that says 'EXIT' and has an arrow pointing left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3106.0, \"x\": 2681.0}, \"hi\": {\"y\": 3238.0, \"x\": 2900.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5418: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060\n",
+ "Processing image 5418: timestamp=2024-01-11 16:58:04.322092+00:00, observationId=o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates an \\'EXIT\\' with an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19840725397659562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2041, total_token_count=2100) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:fe2c6c599f47571c4baa0d205db4f4b2:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:58:04.322092+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe2c6c599f47571c4baa0d205db4f4b2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0df9336c94d0eb18c84391cc79c7535000a9e63c92d6527051ce7d4f82a6cda839fd5438cbe6cba77dd736d5bbb9599be2fbc4c86c19bc2e8960c9d9cf7fc5b3cf0aaa82f27e2c37e64fc98ed269b7adac2be0d82ca5f08937054bf8229a36261f128d840844c9f919149b176cd44a896e80f81d523f36706942e045d6c83146ef86740fe5374503097f2f3917eeaab1395da7ecbe6258726eaddd866c477000a35d52965bafa955bec72a4226f1fab88fee1d85b1f4426eb0790ecc8931c46ab21a296dd93eb30aaafb4a54e941708d45bba4c6a35975de42f1debbcbeafa44531e98a689a07ff2d1f6a6ae385daf34405ee912eb41ed48568a53a66e444864', 'category': 'Other', 'description': \"The sign indicates an 'EXIT' with an arrow pointing left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3111.0, \"x\": 2915.0}, \"hi\": {\"y\": 3204.0, \"x\": 3033.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5419: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060\n",
+ "Processing image 5419: timestamp=2019-01-28 19:35:33.887548+00:00, observationId=o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is white with black text that says EXIT, with an arrow pointing left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1893918022276863, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:9021987f23a5a6d0b8a3bcfb2fc40197:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2019-01-28T19:35:33.887548+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9021987f23a5a6d0b8a3bcfb2fc40197%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b5420023081033a6eae0a52cc19664d9442eb996f0f39c0c11d691f0246e72ebdc8ca28f5b58215daa52a0662de4dc13ad99b0e9f8912dbeb4e5c8fac094a6f5eeecbc03a60840b35224918496852424c634c4ada0288ba93fbc5fd2134233a83de85381bbb2123b16f47ffd170d6268b0f2e349fd6ed6088ff029d28f9683517c0f107cbe4e4ac84fc528944a40dcfa1f3d5d2a7d1c3a200bc9e11b156e16dd6e4aefb6e1ddd825efd50849695cfe6a890cb1c9a2e73aa6cc7bb1cc4fe016e4da6d2e0440e41068e1b60c18a19a1d289c3e56d6b7078e848bee44f89cfc517fee67495003264b3d4ca82123cf9f59ddf0b4fdb1dd08eeb572d7ffa5db37306', 'category': 'Other', 'description': 'The sign is white with black text that says EXIT, with an arrow pointing left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2173.0, \"x\": 532.0}, \"hi\": {\"y\": 2259.0, \"x\": 690.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5420: trackId=t1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f, observationId=o1:11e7d54b39941579e64a1834cfdfcdcf:00110060\n",
+ "Processing image 5420: timestamp=2024-01-11 16:57:58.598110+00:00, observationId=o1:11e7d54b39941579e64a1834cfdfcdcf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign says \\\\\"EXIT\\\\\" with an arrow pointing to the left, indicating the direction of the exit.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18557024002075195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03104700ae9bf2a3f5e93d1d5a190eef:ffff005f', 'observationId': 'o1:11e7d54b39941579e64a1834cfdfcdcf:00110060', 'geographic_point': 'POINT(-81.9572532787446 28.0058290021434)', 'mapsURL': 'https://maps.google.com/?q=28.005829,-81.957253', 'captureTimestamp': '2024-01-11T16:57:58.598110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A11e7d54b39941579e64a1834cfdfcdcf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=590eb2addf88462fb0f6658497a75f7d6d07964dbb71100291e3468673a935af1d053b863f28ae05c097e5c9568bd0214ead41346d5d7b53b127f056bfe811c94db0e454a6ee6c5671f34cb82c0c4e455d44db60fc07a1ca31668638e1d33a85e304fc1c5c2dc05417933a70a7b0933a235e9bb87de061a12e2a25a150fd3381f9804a91a77ba21c4983b7d501e2d13f789890268d96db93a90c7a8915b6b898587f3b7261b40ee13a5368e5d1ec859b3a757701dcc4967ae8ea1fd6d150589ac31119f3d16f09a0d7e36b29085c519f55f4d5c8a147802b4b8f73082dcbe037da48f3254b56f3eefe3e6425077ec71999f723e1acc06c665744890b995235ce', 'category': 'Other', 'description': 'The road sign says \"EXIT\" with an arrow pointing to the left, indicating the direction of the exit.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3137.0, \"x\": 2468.0}, \"hi\": {\"y\": 3232.0, \"x\": 2609.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5421: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:87dbad9f8d6e8416f25aea01898a5e38:00110060\n",
+ "Processing image 5421: timestamp=2022-08-30 17:04:40.301973+00:00, observationId=o1:87dbad9f8d6e8416f25aea01898a5e38:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a \\'No Vehicles On Trail\\' sign. It has an X shape with \\'NO VEHICLES\\' on each arm, and a separate sign underneath that says \\'ON TRAIL\\'.\",\\n \"image_quality_notes\": \"Image quality is a little blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3475870980156793, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:87dbad9f8d6e8416f25aea01898a5e38:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:04:40.301973+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87dbad9f8d6e8416f25aea01898a5e38%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3529fd14c05c7fc766a8a90a3c892e7a5afaabc2e60c3d3ef321d5edc84c8ec47ea9643e4456822e68b2769972c7bf2174fe7acb95f00b959db1ed2eb181da5de6fb361264f71e526c782fe19dace16fc8004855922cd1068da9ae9297ebe120600c7e6a160e68eab4a77f8a7b24c7f508257d8eaadb37f95a8f21413f901126988fab1a89262ba3ea0a2c081f10b3e14a9d7f4bcb6f19dfbb2d97d60c793c54332ae9b18664b8794596daa35897933f9a3d4aa3d1a2b712fb706e00fa7d998a6b99edea0cb67b208b604add4ab6dc302f114ddd8e8f8b06f6a367a4b7ff3275aba879de18b8f5f48473fc0e6fe331239c60227f45367af72d45108a7a42a631', 'category': 'Other', 'description': \"The sign appears to be a 'No Vehicles On Trail' sign. It has an X shape with 'NO VEHICLES' on each arm, and a separate sign underneath that says 'ON TRAIL'.\", 'image_quality_notes': 'Image quality is a little blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2236.0, \"x\": 729.0}, \"hi\": {\"y\": 2297.0, \"x\": 802.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5422: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:0f477622f9b439ba23e67fdd6805defc:00110060\n",
+ "Processing image 5422: timestamp=2022-08-30 17:32:37.692260+00:00, observationId=o1:0f477622f9b439ba23e67fdd6805defc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a railroad crossing sign, indicated by the \\'X\\' shape. Below it is a sign that indicates \\'IN TRAIL\\' \",\\n \"image_quality_notes\": \"The image is somewhat blurry.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40460016757627076, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=1525, total_token_count=1604) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:0f477622f9b439ba23e67fdd6805defc:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:32:37.692260+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0f477622f9b439ba23e67fdd6805defc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=035fdd48ca5ae425e6a4412fb9c3aa916fe7909b79c44c2969418939f2e83357e4f01be0a7f9ec13053dcfcdc2d40b3e4afeaa476f7be4047fb5de2fafe8427f4f5bd29e78ca1e6e50df86df6dfb28581c0a28306a235e17e253e3cc485795c989f197a45c1e1dd18db30403c77ae709345e2b536a157b838a735d6e928c1a43a075455e48b16f7ba83a67e4620ca781ee3c27dd6b78d06be2e00a6aef1ad364435c6ced9c070a8af5aa3749f18640fe2e10debe9e50ab90f603260e4d008910a93375ed8192f58776857825395afd477a5b0e083ec94e4b2d5f0a69b1366aa77f48d79e1100df54845bbd1386246c7eeec8dd2dad74a8722fb864a22dc7f517', 'category': 'Other', 'description': \"The sign appears to be a railroad crossing sign, indicated by the 'X' shape. Below it is a sign that indicates 'IN TRAIL' \", 'image_quality_notes': 'The image is somewhat blurry.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2300.0, \"x\": 1080.0}, \"hi\": {\"y\": 2359.0, \"x\": 1142.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5423: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:86cba27e96d201dc0e142920b707eed4:00110060\n",
+ "Processing image 5423: timestamp=2022-08-30 17:32:29.008832+00:00, observationId=o1:86cba27e96d201dc0e142920b707eed4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words \\'RAILROAD CROSSING\\' and below it has another sign with \\'180 FEET\\'.\",\\n \"image_quality_notes\": \"The image quality is a bit grainy, but the essential elements of the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3847057492125268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=2041, total_token_count=2143) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:86cba27e96d201dc0e142920b707eed4:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:32:29.008832+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A86cba27e96d201dc0e142920b707eed4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0474f4effbeb44c35ff69667c77bb55d66e39a8ce2616e53a4b24fd26dcda91b55a2a1c9f4e31c26fce9012e23b5d6f4bfc9eee23a63a4a91a807eb688d0d890c7fbd9ad250048cd0a12bff289d027f74546b68af90a60549ea57af843bdd69d1c569d81d52724f5b782070b7a94aaedf30bf7b34a497fb10a8bb2b318b03f62912bd1727fce42e7e910349de554ac7f76946fefed16eaa3d7c822b76e0f2b9064f4de8941a9f055485993ad39c625d6724397504a22c3415e4c458e32e1108d5cc1150b6c2b2acd0c9eabfb7083ba14c5fa4d7c0fcdfa458f2874cbbef507147bcb8bb6d8135c637377c9266068effa8266897cbb8078657d6aecdf8f554438', 'category': 'Other', 'description': \"The sign appears to be a railroad crossing ahead warning sign. It has a crossbuck shape with the words 'RAILROAD CROSSING' and below it has another sign with '180 FEET'.\", 'image_quality_notes': 'The image quality is a bit grainy, but the essential elements of the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3231.0, \"x\": 1854.0}, \"hi\": {\"y\": 3322.0, \"x\": 1936.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5424: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:657f3d3e66b0517403d4f896c1f7add4:00110060\n",
+ "Processing image 5424: timestamp=2024-04-17 20:39:21.497025+00:00, observationId=o1:657f3d3e66b0517403d4f896c1f7add4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a railroad crossing sign with the words \\\\\"CAUTION\\\\\" on the crossing arms and \\\\\"80 FEET\\\\\" below it. This sign indicates the distance to a railroad crossing.\",\\n \"image_quality_notes\": \"The image quality is a bit blurry, but the sign is recognizable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35743758989417035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3073, total_token_count=3165) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:657f3d3e66b0517403d4f896c1f7add4:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2024-04-17T20:39:21.497025+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A657f3d3e66b0517403d4f896c1f7add4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f2fc89daad63e3171a10421106a527fdd89d38642aefab2033b59ecc555b59dadbd4f044f01bf2b451b89c730a7ef036ea26d34fcf329e838d876842c16e0a073fc3c3fa28e4437d27fba41dfc70ad2e6e6fd6a5636fc4be25f34c0020c2f20b18008f31902b2d8cfcd7622439ea5b849c32095bb89259d0de0ad66b32e8421532d5a760da47c4b57aceeaa3985d63e38fad1a9c63b11346dc8a57dbe841aeb4b51c63467a8105d4dd1ff00600432314e3a67a776637b364fac9941aa9e63451113a2e3ebd6a0f0dc19b2cbac11c171ea2b3a283e52ee7c6b0343c6b377fb3737889642e270f0125fe1dc58919bdbf0f41f8218a91b939967f0cdbe9fc26849', 'category': 'Other', 'description': 'The sign is a railroad crossing sign with the words \"CAUTION\" on the crossing arms and \"80 FEET\" below it. This sign indicates the distance to a railroad crossing.', 'image_quality_notes': 'The image quality is a bit blurry, but the sign is recognizable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3284.0, \"x\": 2497.0}, \"hi\": {\"y\": 3393.0, \"x\": 2594.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5425: trackId=t1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f, observationId=o1:ff7cc22e16186a668029f84086226351:00110060\n",
+ "Processing image 5425: timestamp=2022-08-30 17:04:39.493974+00:00, observationId=o1:ff7cc22e16186a668029f84086226351:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to say \\'NO VEHICLES ON TRAIL\\' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\",\\n \"image_quality_notes\": \"The image quality is not high, but the words on the sign are decipherable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3438459460654955, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0310c34fa1ae4df19ace61bb4e35f63a:ffff005f', 'observationId': 'o1:ff7cc22e16186a668029f84086226351:00110060', 'geographic_point': 'POINT(-81.88792436677 27.9805865025268)', 'mapsURL': 'https://maps.google.com/?q=27.980587,-81.887924', 'captureTimestamp': '2022-08-30T17:04:39.493974+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aff7cc22e16186a668029f84086226351%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d83b9f521a3fb35f67aee905b4a1ccd74f53e393f590f73abe6bfa9781078a2c965d2d50c11233f96a952814a840c9e52a8bc0adcb561dd5728453c0d07efd9629b35ffbdf13fe2c3f636347de1b0227c5b0019be9fa3f4d3663bcbb6232b204ff1c84ff2bef91de340749b8c48652b78c461cb26acae7eafd638df5674f9354c501492679dd145b364cfdec9edb2e60a32891394d0ddadf9d4f7a02d5699412262e9e7186b9d3207bb7216dcd9bb09054a4751bacd58ac3edf20c22ed7a988d5e788d77e08d1875acd668c65a00aeab4dd8e65223a1673c5e10a223d57cc1d03cf2831dfefc28afbbcee5004dbf4eb76b5e6ba588761dcfc584c44e53ecd47', 'category': 'Other', 'description': \"The sign appears to say 'NO VEHICLES ON TRAIL' arranged in a crossbuck style. This is a regulatory sign prohibiting vehicles from a trail.\", 'image_quality_notes': 'The image quality is not high, but the words on the sign are decipherable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3156.0, \"x\": 3454.0}, \"hi\": {\"y\": 3219.0, \"x\": 3518.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5426: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:7a0f4d0a187bd3c8e9ab2fefcea80408:00110060\n",
+ "Processing image 5426: timestamp=2011-05-12 18:36:29.025045+00:00, observationId=o1:7a0f4d0a187bd3c8e9ab2fefcea80408:00110060\n",
+ " Error processing image 5426: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7a0f4d0a187bd3c8e9ab2fefcea80408%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=45dc5e04e6a1a66ee07b97292133f9196699a1687653c045294085a51d05d583215ea223140ae6c8d48c9dc15ff74513a2d995f5c30e0cb734db267a864a19d321ae3740053bbf50e04031acc8d6c7dc386ae29293b93f314c130b4d8aa809417d1963b4f3ae0d13c18a694d5a8a0b3484d778689d061c84ef481f0558e158e756f8bf90edaa467c6fdc10700786e5536e66a5f57e1c9e8e9704dd6eefa18509ccfbf6f19282a53b79a1e757101e5885b790640ef2ea9a289b1f291a44659d212cd9d5ca30bd30de6f4492c25f9d22e56ba1558bd926a4122c7f4c0e2351c26467f1a6aa48b00a911f6eb70ddb2ac1842dd61881dcc4faee5519c8502d5ff561\n",
+ "Processing image 5427: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:e61c5054c23010d410bf645adde8f81b:00110060\n",
+ "Processing image 5427: timestamp=2011-05-12 18:35:09.282518+00:00, observationId=o1:e61c5054c23010d410bf645adde8f81b:00110060\n",
+ " Error processing image 5427: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae61c5054c23010d410bf645adde8f81b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=358a399bb042260c26d4253fd68ddd25779a5240fd7a0fe2adcce14298f25978d257ab2d593c334a4e504a75ca2b3db3d7025a9bf5a7c4684eb90b16b7cb529321295652c139c2fa030841d30a3cbe5cd5be196008eba4a63d6eadac5c3569ed80da3a0c8947a7fc374f0845b8a1e1878523253b63d4c5a483c85137c338636e3d0d51b2065ebe91f216582ec2ba93f392db9e41b5fbbaba3eb62bff4e5d683180213f99b7115d08cbb732be5f0b8d901072a86e2f2bda9131a910125be5efe8d5cad973cd42c9608f9468b33cad08e82609819924e3e6efa6b1f13ca1e51f25382fee568055f8374dfaac2a940f60413e471f95e391f5e941d039470daded51\n",
+ "Processing image 5428: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:55c7905730aab14222ed7b52eafc5047:00110060\n",
+ "Processing image 5428: timestamp=2011-05-12 18:35:10.769898+00:00, observationId=o1:55c7905730aab14222ed7b52eafc5047:00110060\n",
+ " Error processing image 5428: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A55c7905730aab14222ed7b52eafc5047%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092818Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a082461399106d1809ba3b439c4ed5bb7f65c9f938b165c56a6cabccece4b89c59b7b05f0086b68da645083a562e64c5cc1f9a4def31e10f2053b89bacc55023e37e5055d4df2423d6efb70a724fb3d1706972226aa2be952b1e7eba3a51fa20e0a0e46672ef22f6d6aae1395bb9cdaf0422d6402a609f7cf9e90483a4d96c12eeb4c7f03525172e6a153304fc22ab31d77fd3068f5dab8d0d9f03090f7a260d6e9a8e1bfcf894b5a43eba071eff383731eec4d3c761cc11965e3d17137de79d0e183f1a30cb00888f24a4d5f0565753569f5b6372944f3c3e98eec03febfda1ba97a138533f081b11346c848680a8c6d0efce394578c9a6e5b9ac300cde633\n",
+ "Processing image 5429: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060\n",
+ "Processing image 5429: timestamp=2024-02-02 18:37:13.391654+00:00, observationId=o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates street names as Orangewood Cir and Orangewood Dr\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1390256100013608, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2557, total_token_count=2618) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f', 'observationId': 'o1:7ddf9e10e0319ca52cbb219a40318b3a:00110060', 'geographic_point': 'POINT(-81.9337513354101 27.9848358519561)', 'mapsURL': 'https://maps.google.com/?q=27.984836,-81.933751', 'captureTimestamp': '2024-02-02T18:37:13.391654+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7ddf9e10e0319ca52cbb219a40318b3a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bb5178e61c252d5d381fe5e7dc5596fba7dba9c48754d0f787649ebe47206659bf06c46120b97d3262969d1965ec3fda2942913f614ac01a45154f7cc530adefb1e64bb5890fbe33af45502d431629d6e97671f1fa3cafe7551875191c84f4cc5185c89a0b53c8dc8c7ffc24c74412e8971005835e646ebae08378e23a803fe8d55e8d3504000669ece26b6a65396010bb70902b79964d419dd63bf33148019042ac80a9158227041009fca5e11b88da5db3851721a6c1f2008f9b1367d3ae1137e8a189b6455306f4a95c2f0c46c744392f46dea282ab9481ba733c31da3c8c25bfb32e35be4047f0ab60dfb8a56782b5e60517717c291b10d66e88832808e', 'category': 'Street name', 'description': 'The sign indicates street names as Orangewood Cir and Orangewood Dr', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3050.0, \"x\": 1764.0}, \"hi\": {\"y\": 3100.0, \"x\": 1937.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5430: trackId=t1:031258a87dcd69d97d9f4696f8ca90a9:ffff005f, observationId=o1:b3214cff42c65befab9f39fae28491d8:00110060\n",
+ "Processing image 5430: timestamp=2011-05-12 18:35:36.906553+00:00, observationId=o1:b3214cff42c65befab9f39fae28491d8:00110060\n",
+ " Error processing image 5430: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab3214cff42c65befab9f39fae28491d8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b36d98ee20ffea0b69939a2957cc8aa8a6011b6722863cbe951034f786546eff8f271c3b568da112314fcbabaaeb0034d8dff284fa20f7456d4261ac35273e938891423d457f51c10095ee0f8c330d670a1714e8ebfa2e2dd739932694382fc263985291efcc90a5b147ed74fb603af67490e8823008e2194d41ab915af7532c6e523ffeedbbbb4c6b9ea2edad69871bf5ce644eb8fc9e0a10ed7f18dc5929d40f8513e6cfdc4305b7945ba466e26ac17eed6a9e90855a8d71589ba09b06f9e970e7697eb40fa2d0ae81240c5d9be6c32099f7421f8e2b75435f859b796fe59ee34fdded70739e5307a4f92b8221f11f8ccc37baca7f39a48e76e5e65d524863\n",
+ "Processing image 5431: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060\n",
+ "Processing image 5431: timestamp=2024-01-24 15:14:26.610221+00:00, observationId=o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The most prominent sign is a diamond-shaped orange sign that reads \\\\\"ROAD WORK AHEAD\\\\\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.\",\\n \"image_quality_notes\": \"The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4965702434917828, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=111, prompt_token_count=493, total_token_count=604) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:bb15d9e2e61c9c14d6c5e5d69d8f10e9:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2024-01-24T15:14:26.610221+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abb15d9e2e61c9c14d6c5e5d69d8f10e9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=358eca943513d00b00f059d6059703253b1f608c3b66a40b1e452e402669ce5758fba379f56a173813b4b7edb611728e294f6605383050ffb90378631f96dd681c6cddccf3fa10ed3199d4df522c58d7da0de98243e62f86e08ce010e043c6d42cf9b2a6827353ccc9e075ae4d8e9b660d1d61895ac1c10d2613c2e205e85e547cfe727399ecc2ded68dd1a373af64f970318a72902db43c21d9cb4c909c9f6b7c323fa14796fda66382988d5d1260ea5edf9550cf212571605f9da2733b0a1a5406cb78b4f08ac4d8c41ed1333277abd77f4bfef36a8c45ae4749cb5e99bb6dc4c45b325e01132e4c62707c9273f82c1689e4607fda9f300028f9694f13a7f1', 'category': 'Other', 'description': 'The most prominent sign is a diamond-shaped orange sign that reads \"ROAD WORK AHEAD\". There is also a yellow sign with a cross in the middle, likely related to railroad crossing warnings, and another yellow sign indicating a turn.', 'image_quality_notes': 'The image quality is low, making it difficult to ascertain details. The colors are somewhat washed out.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 3497.0}, \"hi\": {\"y\": 3264.0, \"x\": 3524.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5432: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060\n",
+ "Processing image 5432: timestamp=2023-12-15 16:38:54.186885+00:00, observationId=o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is round and yellow with a black \\'X\\' and the letters \\'RR\\'. This indicates a Railroad Crossing ahead.\",\\n \"image_quality_notes\": \"The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31234254729881716, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=493, total_token_count=582) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:c7eb9e73d50b1c990dfd3b78a8609bb7:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.186885+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac7eb9e73d50b1c990dfd3b78a8609bb7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091453Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=243b77ae21d8e561ea3468a816374002ca963aa87f8bcdef6681d07aa57d82665ff37a885e91bf5422cfc7d04edda70ac5b7551f43c3ef1fbedc1fde046683dac6839ddd0aa462d027a7106561c1257148bd94ffac68d77eda5c1083cf1c9cb4da804324be37440602c92718bcbe63ba14ec982eb800b6feaccbc4b2e248fd107db5ba2d1c9f1d269ea258cbca08b1415646124d1c7550f137533c44a98050921c10d1c1c916b03a8e3a62df6a2e85aaf7d1c37757e9fab4e9ceab13e969c66e49bf63175a0f3473a2a432f2c0241d71acc82ca6e83d7b1b834bc4561e87667e2ced1e6e98e3efd30040d58bd11134156eb4f9ce0d847a1a6dfcbb1c6754fc35', 'category': 'Other', 'description': \"The sign is round and yellow with a black 'X' and the letters 'RR'. This indicates a Railroad Crossing ahead.\", 'image_quality_notes': 'The image quality is fair. While the sign shape and colors are identifiable, the overall clarity is not optimal.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3219.0, \"x\": 613.0}, \"hi\": {\"y\": 3275.0, \"x\": 650.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5433: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:336d695305800b0b6c350885a37d29e4:00110060\n",
+ "Processing image 5433: timestamp=2023-12-15 16:38:54.938893+00:00, observationId=o1:336d695305800b0b6c350885a37d29e4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.\",\\n \"image_quality_notes\": \"The image quality is acceptable. The road sign is discernible, but the details are not very clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6692086185317442, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=493, total_token_count=576) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:336d695305800b0b6c350885a37d29e4:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.938893+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A336d695305800b0b6c350885a37d29e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b47397c69cd39be450281e5e2eb35043b1c9a36042561d178b89f85f766f799b4fb19d2aa5c5acd29ad0788a44482ba92f60e64368c5d8c60e58d8b0b773dc5fef899c0cc4fd4519013e08a5388d1fe5e53a7262e6445771672208f2a9a6d493f58eed1f53e28821500fcb0e91c8538e23d0fca2a01ade1c38f97ad914d919972c6895cfde9a5b44576a6ea2890b09b4bf32cdaedacdec4ecce44477735f111aa329b7dab1a14a0c76825e22594f9b7bc7aaf514fc54f45b368573961263b620d79d53d18278f919202e10faa8aadff64530ce5a0406cde4dc096ac483a31aa4c5b4c8c757773e7169092acd2ea42736aee67262c1ded2cedf15b0c19f50824', 'category': 'Other', 'description': 'The road sign has a circular shape and displays a symbol. It appears to be a railroad crossing sign.', 'image_quality_notes': 'The image quality is acceptable. The road sign is discernible, but the details are not very clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3200.0, \"x\": 312.0}, \"hi\": {\"y\": 3243.0, \"x\": 339.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5434: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:f5f988cba5bc6703537a90704524bee9:00110060\n",
+ "Processing image 5434: timestamp=2024-01-24 15:16:19.418864+00:00, observationId=o1:f5f988cba5bc6703537a90704524bee9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a diamond shape with the words \\\\\"ROAD WORK AHEAD\\\\\".\",\\n \"image_quality_notes\": \"image quality is low but sign is recognizable\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3009901758450181, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable'}\n",
+ "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:f5f988cba5bc6703537a90704524bee9:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2024-01-24T15:16:19.418864+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af5f988cba5bc6703537a90704524bee9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092220Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98ebcf7e07574a1f68957370e6e8bb966a78602ef36832aac90a848fb7d4c2ea8f21a6c8a8982f99117fe40bca832ae9d03c5fa567dcfa40b426e8241be95ad6400c0c0afd1930d13ddb3731b407d68a949bcf0009a9c9e5cb246278db86733511a865bd331179d382c927fcc55aaf6895e593d8185144359b6d6aeb20fa45e8cb141c09b54778ac8cb1b4dd5098ce8800da3556e14a77f37687b249f835d5f8394b2dd302d076a8ddb539f522550f161e648342de885cb48a78c98678431a819e416bc8143e32285d09e5e4f60b65dfdc0cd820a11c35b094e979498671e5cf673df1cf3451e4b61fa99e005503edf8173996e5aa6d7a40998864176e803558', 'category': 'Other', 'description': 'The sign is a diamond shape with the words \"ROAD WORK AHEAD\".', 'image_quality_notes': 'image quality is low but sign is recognizable', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3195.0, \"x\": 363.0}, \"hi\": {\"y\": 3235.0, \"x\": 397.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5435: trackId=t1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f, observationId=o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060\n",
+ "Processing image 5435: timestamp=2023-12-15 16:38:54.562904+00:00, observationId=o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black \\'X\\' and \\'RR\\' inside it.\",\\n \"image_quality_notes\": \"The image is of fair quality, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24460669926234654, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03129ad7740f5caf21fafea6ebc7c93e:ffff005f', 'observationId': 'o1:3ed8eac0a0cf95e600abe3367b3c5041:00110060', 'geographic_point': 'POINT(-82.0151337135178 28.0307726792258)', 'mapsURL': 'https://maps.google.com/?q=28.030773,-82.015134', 'captureTimestamp': '2023-12-15T16:38:54.562904+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ed8eac0a0cf95e600abe3367b3c5041%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6246535f345e810af4a1707988c687def790ab5953f6a06191ba453134f7bbb6ab5e0c0adb70018a467513b9fad9247a56a4e232d8f379875e29003adfb913a0acfb983def4faa79fded4ffe4ee42fd9269a329af8eff3cfe7a888bfd66c31530b92d078db2a09db3e0295032bae12fa13a41f4a167990950e43754854a54c6881b7cb02acad5698e3de143a1d6cccf3a72fcbf9ad75b7cb93519645b959f9496054cdbe597f7b2f2540ae7a5d39e8b4558bb9c92459ffae6c1e896a489b94376df674c77c5832b92dd53c1c1c3bf65c4df5bd0fb292f492630e8d7e627db96be2b9f227f818e7279cf5f5150e153022bd3ed49ce886dc94e68b196628f13ea5', 'category': 'Other', 'description': \"The sign appears to be a Railroad Crossing warning sign. It is round and yellow with a black 'X' and 'RR' inside it.\", 'image_quality_notes': 'The image is of fair quality, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 466.0}, \"hi\": {\"y\": 3263.0, \"x\": 496.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5436: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:65007016be2925082bf3ef6987e328b8:00110060\n",
+ "Processing image 5436: timestamp=2024-02-02 20:14:37.642705+00:00, observationId=o1:65007016be2925082bf3ef6987e328b8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white construction barrel.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12362411388984093, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=52, prompt_token_count=493, total_token_count=545) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:65007016be2925082bf3ef6987e328b8:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-02T20:14:37.642705+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A65007016be2925082bf3ef6987e328b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b4ab8ca0f40f259711688030e126a47b9593cc84c423f67040100f5fc226a757de7b6e0b556bedfd370ddb8b41a177a9b54020bfeb96d30cc9e35867c2c5317b77ee25c0df7fa173c387d4143d68cc31efabd46d1d3803bf46a92bd22f708f5d785a950dacd05787ef70f5e68f70cda6eaec6c7a222c6378cb2f543029ede9bb9bcd9f393e00d5bac3f38c201ca48825bb079e772b3eac960efe13748fbf38eb2b289c178f68a9124387ad945db8edea889d1d40679e52ddfeff1c0715794716cef7265d6bc74083117f19549501670af2cd48583c9d7f9482714c97cc064b5fdb9a501984aae4e36083d37fec07cf776a1ee9d7234949e8e2f5abd58057c66', 'category': 'Other', 'description': 'Orange and white construction barrel.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3472.0, \"x\": 2930.0}, \"hi\": {\"y\": 3648.0, \"x\": 3029.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5437: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:6f57f37d2fb271de9248e2d09bad01fd:00110060\n",
+ "Processing image 5437: timestamp=2024-02-12 14:09:41.349780+00:00, observationId=o1:6f57f37d2fb271de9248e2d09bad01fd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows traffic cones, which are used to direct traffic or mark off construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1308518648147583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:6f57f37d2fb271de9248e2d09bad01fd:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-12T14:09:41.349780+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f57f37d2fb271de9248e2d09bad01fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a48a38dbb97b8498279ff2b96ffdd3fc5b908a7c4149f03f30762af6ed9b49c36b37eb6dd1b593ee7506a4fb2c8f262f5c41b4da0ccad67dbfeb16d59088b53c1508dc379613208269666eb62c1498b94b4a46a86b2f16a5ccd4829df34edf3562bec0ca868ab0b0ee6a6082323ccfa836d2827976b31478716179b056bb295e56a7a06380cdb6ffa9ca662ea6b744a872ec08da1e14cd02a3b307b87b6750acf99beacc89bc182f07364ccf593e99e4eb1d16f6ce573d3d4f600286ef9a9167f2652028a7187187956a7b14fe0939e4040d936fa2ffc7260dc5356edd208bf9ab64355fa03346784d24a2166fb601a44d204fb742544cd2c13953ca90804745', 'category': 'Other', 'description': 'The image shows traffic cones, which are used to direct traffic or mark off construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3353.0, \"x\": 37.0}, \"hi\": {\"y\": 3461.0, \"x\": 100.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5438: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:8b4c2dae357255735fe7113192342bd2:00110060\n",
+ "Processing image 5438: timestamp=2024-02-02 20:14:37.342720+00:00, observationId=o1:8b4c2dae357255735fe7113192342bd2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19253662470224742, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=1525, total_token_count=1599) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:8b4c2dae357255735fe7113192342bd2:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-02T20:14:37.342720+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8b4c2dae357255735fe7113192342bd2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab81ceaca93cc1110a69b991cdb776112586ab7f99631b7b916b0b927db3e8dabdaf311113a967a6e1e9c29670295d5fc15b19ef42e9cdcb78e783fca6cb2aaed4d258d95f36d9499f5ec11e2cf2fe879640300478dba525421c43750a9177d1ec9efa41bf927145bd9dab61b69d4de06d190bdc00bbb2252b5bbb7c5721afb2d9b352373a60f919e628ed2530096f13804502a0a4b1e29b0ea6e25c8b936d91ce36b0bdd2c643163df33e3a8d22e4eea3e29fda68da940dd7fd5a9f9be1e3130f0bdefbc0a69daf69e1c68c66b5314ed7684928488ec539fd4065c92f1108d55f3823d700a60d6095170ea8863cab24a5f1e5805124139afb02e30a7ea381cf', 'category': 'Other', 'description': 'This appears to be a traffic cone, which is not a road sign as defined in the categories. It is orange with reflective white stripes.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3619.0, \"x\": 2702.0}, \"hi\": {\"y\": 3875.0, \"x\": 2850.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5439: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060\n",
+ "Processing image 5439: timestamp=2024-02-08 14:31:50.753553+00:00, observationId=o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange construction barrel with white reflective stripes is present in the image.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25967318216959634, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:9ba543f1828ace7b95c1518ac8bbfb85:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-08T14:31:50.753553+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9ba543f1828ace7b95c1518ac8bbfb85%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b519dbd0fb4fec469045448aa28f6de5364c4d6d50c648b0af6fd6f21faaf9e368c347094357fcc424320373c38c74d97f727cc5bce438e5049892e43a2503e2c75eda1bbe796f12d640db4ec473899a7101ae8e8de82fcae424e85806b20316bd0ab7878977c51a482b310afefcad70b4829b049636ae82a3fb8fd718861c1659e753eaf2e9de3c37c027a7af818585083c56dee2327503e37c5d00b1600fffb87a1f929eb6404e91ad99d34527bbd0391d76b5fd75c20d5a639f0d4583e10cfe95fbce2e9584902fa3ad910c7534840fdc61d08f5b68a4266c95aac533e0df13be51af10339d06f9e20faac28c5e9a2a5aeb99dd6d969e7c8ba93e570cabed', 'category': 'Other', 'description': 'An orange construction barrel with white reflective stripes is present in the image.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3378.0, \"x\": 3017.0}, \"hi\": {\"y\": 3484.0, \"x\": 3076.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5440: trackId=t1:0312b0ba89d0b209769e559318257d87:ffff005f, observationId=o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060\n",
+ "Processing image 5440: timestamp=2024-02-07 14:01:20.254935+00:00, observationId=o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image depicts orange and white traffic barrels commonly used in construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1505050818125407, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312b0ba89d0b209769e559318257d87:ffff005f', 'observationId': 'o1:8a4d669a53dafe09ff45f5fee5e8c60a:00110060', 'geographic_point': 'POINT(-81.9962456044944 27.9748382818423)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.996246', 'captureTimestamp': '2024-02-07T14:01:20.254935+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8a4d669a53dafe09ff45f5fee5e8c60a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=351c365abfb0d21a29ce8c3f1d66e9868ba8bab5cf6e9e464b0597af5ddc473101a177b7a63ced4dc4493cd405cc243b3f98f9edaa41a6ba4f191e78ee15a2f1728234e24c21b481d26082bef904bfcea9c08f8986ed10f12eb860d34f6078e5afa1af915f04db873cc74db88cd9f46e75c17612c16ddc3217e669efdb1ccbd886e3d54d4aea3c8cdbf910a0e019a27cdf77a0a21b0f050b813dfdb384266b82a942604ed15ac4d70d990f9e0fb594bca6c270868dc39a091b284fb64a3f278007ebcc99da00297916e910e79dfbe491cdf37b48b37b725282c73b9c252a8025fcfb34fa4accf44b8428e84d5783d67389035a81b05f7f23470eaf012052084d', 'category': 'Other', 'description': 'The image depicts orange and white traffic barrels commonly used in construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3338.0, \"x\": 34.0}, \"hi\": {\"y\": 3440.0, \"x\": 96.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5441: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:ebdc66895e7105aca79a2bbe23777d0b:00110060\n",
+ "Processing image 5441: timestamp=2019-06-04 17:36:30.839113+00:00, observationId=o1:ebdc66895e7105aca79a2bbe23777d0b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign with the number 1140 and the letter E is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13334230943159622, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:ebdc66895e7105aca79a2bbe23777d0b:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:30.839113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebdc66895e7105aca79a2bbe23777d0b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091041Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a6e03414009286bc3ad9833ceab0916f5665840afd7c4a808f06d1553001eb54a75ed24741540e1c90edca49fcd587bd9bb192337b55c78664d3b45044bd8f376106bf5a36611117bd7767877b9430a4be59e45c955c4768c44b21364c9435c448631d2f62ed9e5ac03273d75a35e2f68eb73bf92e32cf32ba73d4722f83e22d385cecbdd858a3c4738aac74b497172f59650fbfdd84b6cef9b34f03e73c6c5606630b408d3292ce71e4eca8f5c53122474eb525d8e6c98eac652854d27a4d0cfb1da83f12e728e8b013c1e6b60d4c51659d12b1306c050b2229f496998fa13c66c1956492bbf5754fbeb1f7917430155af689824555d9c13443e08b7cb5769d', 'category': 'Street name', 'description': 'A street name sign with the number 1140 and the letter E is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2309.0, \"x\": 1.0}, \"hi\": {\"y\": 2538.0, \"x\": 128.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5442: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:90953891cce6c0d637651f745b9db95a:00110060\n",
+ "Processing image 5442: timestamp=2022-06-30 20:38:47.007458+00:00, observationId=o1:90953891cce6c0d637651f745b9db95a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An octagonal sign is seen in the image, indicating that it is a \\'Stop\\' sign. There are also street signs indicating \\'600 S\\' and \\'Elizabeth St 440 E\\'\",\\n \"image_quality_notes\": \"The image is somewhat blurry, making the letters hard to read and assess.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7560880256421638, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2041, total_token_count=2140) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)'}\n",
+ " Error classifying image 5442: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 329)\n",
+ "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:90953891cce6c0d637651f745b9db95a:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2022-06-30T20:38:47.007458+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A90953891cce6c0d637651f745b9db95a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7848ba847ca2d23cc514fb8cc541702d9598454fab093f32f090a8a5078f67a56392b171565da2573110eafaaf88cdf0838018717369d5d4647907e08703f5cc701378aa70fca369ef0c54a13ba7600e664811582c28915b8709c5eaa96bb6874bf8ccd913ff652a2ebdf44f5024418a0339794da48b63ec219a609acbe9f4462653819d0d5ce0e612e87ec600381aa7513bc7ed5cec7500e17d841ca7464bcebb917274368f95ab9ee77cf8f60931b55c6b27d675658fe63ca74aebea2af7cd2ee75ad9c93e7dba98255cb64495caad69dbd94372807426b727129ae580c7c3dff5aa3b24859025edf7b076170a2c731a6973a240d3a3f3202b3fe6da4232c2', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2161.0, \"x\": 965.0}, \"hi\": {\"y\": 2208.0, \"x\": 1085.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5443: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:2219605d5a176bd90226719239972fe4:00110060\n",
+ "Processing image 5443: timestamp=2019-06-04 17:36:29.559069+00:00, observationId=o1:2219605d5a176bd90226719239972fe4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible, indicating \\'1140 E\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12174851447343826, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:2219605d5a176bd90226719239972fe4:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:29.559069+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2219605d5a176bd90226719239972fe4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87103cb733276f7b48b38fc4ec3733e1289dde5a9f5a6cda67f2205a6cc800589c509779bc54cccccfbea82ea916a5797779a2f8ab5f284b9d51c0f31fdded769b34bfff55982fdddcdfa18ac61505da9b513cd6932f5007beec73b694ce3c1c475e9b04edf30d84abb75e53cfb0e929171fb3ddf4fdda015d882a64e51f25612ff123751a66cb1373a2f8176f4c3ae125631dc497dc1749f887b14ce4dcc3cf75b9ac318739ea2c7e074f9d5fb4f652e12880af41dcd78b153ba9e9d1d120cb5d929fda5689866ff65e654d293f3a8d9c5127ef13c209b87df665e744088c438cdbd748c2bf31e04b0b86369cffcc78a84fd4d00e87b23b05ddb354eabf05c2', 'category': 'Street name', 'description': \"A green street name sign is visible, indicating '1140 E'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1609.0, \"x\": 1.0}, \"hi\": {\"y\": 1781.0, \"x\": 148.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5444: trackId=t1:0312f5833ad8626de5075fbf845ed282:ffff005f, observationId=o1:05e1b2e94a3de7694433400102408f25:00110060\n",
+ "Processing image 5444: timestamp=2019-06-04 17:36:33.282976+00:00, observationId=o1:05e1b2e94a3de7694433400102408f25:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.\",\\n \"image_quality_notes\": \"Image quality is acceptable, but the sign\\'s color is difficult to determine precisely. There are also street name signs at the top of the pole.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5219541063495711, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=2557, total_token_count=2659) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Poor', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\"}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Poor', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:0312f5833ad8626de5075fbf845ed282:ffff005f', 'observationId': 'o1:05e1b2e94a3de7694433400102408f25:00110060', 'geographic_point': 'POINT(-111.858107424163 40.7562253761133)', 'mapsURL': 'https://maps.google.com/?q=40.756225,-111.858107', 'captureTimestamp': '2019-06-04T17:36:33.282976+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A05e1b2e94a3de7694433400102408f25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091454Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a73b381ce0cb883344f8bf511d6e532546c5f0abc5f3841fecbae390eeb3324dd328939f809223ad77eba6a00a127999072bf33a88833fbfefdc0b4263fd139f55a9635590d8fcfa7eabc3a9bc3646cfc66bf1d8665797d512c635c06f44d3c8841d88118152134225588151ceb1b152fa69abb5c0c0ab78d7a6954294934ddffcd78aa912a8d33211af779edda416f1f32059455a28dbb4eba8cb16676f74e2f4af54c8f43288a4cae8f6f8e0f973a675bf750eaac0d0eb627813b399787c13f4764d76488fbd5a56a7f0bbf53f089a25cb84c498631592e60d5cfc161039892374a058946b04099a18f4c4016e20f6bf7141cd519682aa96974b3a227cd8bd', 'category': 'Stop', 'description': 'An octagonal sign is present, indicating a stop sign. The sign appears to be white, possibly due to fading of the color or sun damage.', 'image_quality_notes': \"Image quality is acceptable, but the sign's color is difficult to determine precisely. There are also street name signs at the top of the pole.\", 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 1492.0}, \"hi\": {\"y\": 2972.0, \"x\": 1685.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5445: trackId=t1:03131e5c1dca01949ee534494fb9c8f0:ffff005f, observationId=o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060\n",
+ "Processing image 5445: timestamp=2021-12-10 19:46:28.522057+00:00, observationId=o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green and white sign indicating \\\\\"NO ON STREET PARKING ANY TIME\\\\\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28955170348450376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=3589, total_token_count=3680) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03131e5c1dca01949ee534494fb9c8f0:ffff005f', 'observationId': 'o1:2672ae6bc614fcedb5d2143a6ce1e421:00110060', 'geographic_point': 'POINT(-111.874010852563 40.7411901253303)', 'mapsURL': 'https://maps.google.com/?q=40.741190,-111.874011', 'captureTimestamp': '2021-12-10T19:46:28.522057+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2672ae6bc614fcedb5d2143a6ce1e421%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=07b34a0ab5a58fc805e3e7e86fc3e3c2377183ed194ca61190d124c9bc585ce9884b2d3ed76c374fbda6d43664d518684eb8dba972db41b3247bf154d1d794f42f90041a685e7ceae6f717db1e5c00d65f7cb4c3c3804273835590af7e62cad9466304b9904c16bc1a3dc7adb2086f5728d005cfdbb2c388015e33cadca4394af33ce549981034cb4d52927d64b0680f510939bca5bd40cb8bc2de0744e753ea6e832a464fbe077b3646534f0cdb568d3cd2f2c2ce5409a8eeabbd04c51db729eaaed9aaacc87588374374409c7028430cb309112181c1f16744e9392d383ae0862f71278d667a0f7ab2254ada6b0e5f5170e44dd7141983c0e5446f2cdf17a7', 'category': 'No Parking', 'description': 'A green and white sign indicating \"NO ON STREET PARKING ANY TIME\". It includes a graphic of a car being towed. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2588.0, \"x\": 51.0}, \"hi\": {\"y\": 2789.0, \"x\": 171.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5446: trackId=t1:03131e5c1dca01949ee534494fb9c8f0:ffff005f, observationId=o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060\n",
+ "Processing image 5446: timestamp=2021-12-10 19:46:29.410092+00:00, observationId=o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green sign indicating \\\\\"NO ON STREET PARKING ANY TIME\\\\\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3440292201091334, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3589, total_token_count=3686) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03131e5c1dca01949ee534494fb9c8f0:ffff005f', 'observationId': 'o1:ae29b3a9f8e7dbe9de7f16ea8de44c93:00110060', 'geographic_point': 'POINT(-111.874010852563 40.7411901253303)', 'mapsURL': 'https://maps.google.com/?q=40.741190,-111.874011', 'captureTimestamp': '2021-12-10T19:46:29.410092+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aae29b3a9f8e7dbe9de7f16ea8de44c93%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1c49b13873a16feabd2a634c256119d388deeb8877258e7a91f0d6beb37abd7dad29c4388fec810017ed9f7c33ccc5b552b9ab0084fdc1197e3c43a7c0e7cb7b387d55613562898f0b8d87d3b253734aec06d708a3203c1393f3542b80e8ec6c44899510f33e852d07033a7971c7d935f2a1229dd6ae37326284ad7a13aa6c11f0f254fa4a8d8309804eacdd0fc6261f4fe543e49753344e97a2c3e97601738e552ff20a03d16366a5f16cec26cb72b76f7d99ff4b59aef6d05553e4663931019bf4cacdb495e48798a19f68a09f79b4468d9c27443942ebbf9a57095fb98c272dfbf0b6f73312aef197671d74701f7ed443d8ee54561283aa410a00762164a', 'category': 'No Parking', 'description': 'A green sign indicating \"NO ON STREET PARKING ANY TIME\" is attached to the pole. It also states that unauthorized vehicles will be towed at the vehicle owner\\'s expense and illustrates a car being towed. The sign is somewhat faded but legible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2567.0, \"x\": 2226.0}, \"hi\": {\"y\": 2795.0, \"x\": 2369.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5447: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060\n",
+ "Processing image 5447: timestamp=2022-06-22 16:49:51.761278+00:00, observationId=o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with a red circle and slash over a black \\'P\\' indicating \\'No Parking\\'. An arrow pointing in both directions is seen below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34237517319716415, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:d2c2c45839cd5afd43c4e27256bfb4b7:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.761278+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad2c2c45839cd5afd43c4e27256bfb4b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06ee08eda66a18a13363f942aea5e498c222048b39bcba1633a91b4af2719efbd7f92eb74076ca7a37e6b94ada1671f23c7a56cd3e3df6665066f17adec78f58fb3ded1ca78c8214f967f405b6755d39103858c9759a0d937b1438d09a9f276a2f49934dc7fa3d2d07b933a04da28c1c643e8c3a8f89eb4aa6c3e377430d36b54feb0bdb5a36dab4360743343f64c41d6e52e414b3db5d2e9715b7b80f5c12f81c991edf747a9192eea7dfe5a65532832f683cfdd4b542d151f1a92a5716465323b644c3a1c419ef8a3234692b4812a98e8c88cc2140514ddd8ec7069e9e8cfba85be4c52da84d6e96d3230593da159baa688f93ffe6f48bb38f2749a8559f33', 'category': 'No Parking', 'description': \"A white sign with a red circle and slash over a black 'P' indicating 'No Parking'. An arrow pointing in both directions is seen below.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3027.0, \"x\": 20.0}, \"hi\": {\"y\": 3253.0, \"x\": 97.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5448: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:3ac1d26fc88946b1fd840b620025fa98:00110060\n",
+ "Processing image 5448: timestamp=2022-06-22 16:49:51.761278+00:00, observationId=o1:3ac1d26fc88946b1fd840b620025fa98:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red circle and a slash over the letter \\'P\\' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49321702469226925, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:3ac1d26fc88946b1fd840b620025fa98:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.761278+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3ac1d26fc88946b1fd840b620025fa98%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093113Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a5e8ae75f63ad8e3102e43e41cbf59a05e587cfbc6f075f367e525b881f9e3fd21d6d7371359ea3a331a146b866d69b886dd4e5192db179b028fe0d9ea7d4c463489aeb1c6a01e37e4538a0c7e8552ac2812aa7b874ba4fdabe5daa390fbc498e24048e23e7f2020968c98b951d90a4f379550dc5ebb866dc5dde8c4d8657da03d2662ff42b3a5ff6d72c48abaad115d9f4db6ba344e928c207dfeb00b8ff938763938744e3c460c103d4a38879a5aaf62397aaa61c9c047328e67a967cdda91b81cf4d71d644bd90ad89453709e247d30287b8c1140cae4ba3bb36aa6e9f7c41c802269d889d76ecde407af6c7dd528597aa671e2d0efbe4ee6a650744cb758', 'category': 'No Parking', 'description': \"A white rectangular sign with a red circle and a slash over the letter 'P' is visible, indicating no parking. The arrows underneath point in either direction. The sign is in good condition\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2131.0, \"x\": 2918.0}, \"hi\": {\"y\": 2357.0, \"x\": 3003.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5449: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060\n",
+ "Processing image 5449: timestamp=2022-06-22 16:49:51.441331+00:00, observationId=o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a circle with a diagonal line through it, superimposed over the letter \\'P\\', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3929918422255405, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:a4876b6fad2a79f0d26adf31b55cdbc7:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.441331+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4876b6fad2a79f0d26adf31b55cdbc7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d4c7e19a672319d3715ff1db1e483d6842e6c392c0cef537316ad6f5c5ddd5d777a104760ba43e4c18ceba54ed88f991c2148f1f77c642a4432d53cc95f649d52ca1500fa2bc2a77b1f1249431fc9f61308141e9c30d1139490401d71029239f07248c59a5b49e7738425f2ec3c50470716105c8481acdddb5f9ff547da7a62b23c8b1853838aab4149eff2ec3d490244d2478656e93946540e08c947bfa668b6850f30b78ed5cede35d6725e587dc0208d582fa8263e211a2ab433e04c59756ac75c80daa65911f0c0f800601449dd198974a3a2d546318151c5ca0e094ac0a7b9d9b53c6754cd24c5abfe466dd0b4aeca6450258bc60bdc957496f5dd8041', 'category': 'No Parking', 'description': \"The sign shows a circle with a diagonal line through it, superimposed over the letter 'P', with an arrow that shows parking is not allowed on both sides. This indicates a No Parking zone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3038.0, \"x\": 3523.0}, \"hi\": {\"y\": 3266.0, \"x\": 3647.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5450: trackId=t1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f, observationId=o1:6a653216abb8ebb9b960de2b8f7625ec:00110060\n",
+ "Processing image 5450: timestamp=2022-06-22 16:49:51.441331+00:00, observationId=o1:6a653216abb8ebb9b960de2b8f7625ec:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter \\'P\\' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2962929023491157, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=3073, total_token_count=3164) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031355e14bc86bfd7d17b8a00ba3410f:ffff005f', 'observationId': 'o1:6a653216abb8ebb9b960de2b8f7625ec:00110060', 'geographic_point': 'POINT(-111.905904868761 40.7334071179333)', 'mapsURL': 'https://maps.google.com/?q=40.733407,-111.905905', 'captureTimestamp': '2022-06-22T16:49:51.441331+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6a653216abb8ebb9b960de2b8f7625ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ad360a00ada8b17ebf429d7eaebb9a0e7564fea41b07db3874da3c18001b0561522f9c327a0d137cd12888facbc044fe4f5c6b1483ff5e7fe5c65555f10fafaac6bfacba0d02591fcb3f68c9b8ecbe17f5727d64637935cb330e7269e2cfa13c5fef17158735c149a46135b300edcea824106c0c8e954fe1406b56cb95d78f7fda7a6c901c813ac22ba797a4b49be47c4c15a5728a69c76e45065d08455272d07b29a7fe1cd189eb72ea4f58b1d833c6b38cf6fb8f2e58b9c974f8fde74fb670809500d856142f9271f730ae9610bea0fafd485fbc14b99092cbe42e08687187a5a757f2fa1d878d8ebdf61d952600969ea726d7250566b329312ed67c00fc6c', 'category': 'No Parking', 'description': \"A white rectangular sign with a red border and a red circle with a diagonal line through it, superimposed over the letter 'P' inside the circle. Below that are two arrows pointing in opposite directions, left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2138.0, \"x\": 626.0}, \"hi\": {\"y\": 2366.0, \"x\": 761.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5451: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:1a7feefe5424e526112ba5a956b9cfad:00110060\n",
+ "Processing image 5451: timestamp=2024-06-13 16:29:20.888517+00:00, observationId=o1:1a7feefe5424e526112ba5a956b9cfad:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2980148460291609, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:1a7feefe5424e526112ba5a956b9cfad:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:20.888517+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a7feefe5424e526112ba5a956b9cfad%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7bbdef3f8f6b178c977f4e3e5f1b4711fa6213db969ce18de3ee6263a6e2beda8753263511f468fb313e126ff413a45c70176df3cd3d5e516a81a99930781bfeb32d4fdfb30f44e11dded0e905fb153665a5d3218aff593989a2ad82d776a9f4aef764c1cb556a36d1816c6d3cff5d094cfa5687f8b75b9f83b1929a5b63dd4810203e117b123ce3107a98908312de3fb98ca37544f79d45c98262889bf5637ae35d9cdb5b76fb4d5f261f9b81f93d994dea1ff366f409759e86e3160ce208f3486d5ed3a50f33614ff23fd97fbc714d6dea675e5f46a6c1955b3b693363076e5343867b8829007b00e3bef8dcfed390e90ab58efbcb4e24170e005011f7588', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond with a black silhouette of a person walking, indicating a pedestrian crossing. There is a second sign below with an arrow. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2886.0, \"x\": 1932.0}, \"hi\": {\"y\": 3150.0, \"x\": 2152.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5452: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:1b96c7add324b688697614daa93615f7:00110060\n",
+ "Processing image 5452: timestamp=2024-06-13 16:29:21.192438+00:00, observationId=o1:1b96c7add324b688697614daa93615f7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29122736287671463, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:1b96c7add324b688697614daa93615f7:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:21.192438+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1b96c7add324b688697614daa93615f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1bec62a4ff859bb8c5858ddc2d247a4367048c2faa48ff039a369226448a46153bdb432ac564752eb492c9c30331272a0a137f44cf9d8d936fbb6a2405ab70bf347c35f327848b2c829714277724090a8d6fb67989cfdade26470e7c8eeb518fb9e0e687ec6015dea0e3c5b8da291b2393b437aa00f0e809e5dec29e05bfbb8539215519b96248c07c4afbe58d2e8e146d94f0b76abfbc2080fb21bc45940ab8e9d3f6b169c412cc77dc539a7ff2c453ded743ac038a63e9c173f1c229149c0650e14b1b7fab9a92bf67bfd5490e8e90412f00c5fd581016e82054ae5c657399638a73628476c32a91c67ab5ebdc012d01984a72a8e003c07e293021abad259b', 'category': 'Pedestrian Crossing', 'description': 'The image shows a pedestrian crossing sign (yellow diamond with a black pedestrian symbol). A smaller directional sign with an arrow pointing left is below it. The signs appear to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2733.0, \"x\": 2668.0}, \"hi\": {\"y\": 3088.0, \"x\": 2904.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5453: trackId=t1:03138c37e46559c8667e14c57d9db2d9:ffff005f, observationId=o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060\n",
+ "Processing image 5453: timestamp=2024-06-13 16:29:21.492525+00:00, observationId=o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36838472806490385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03138c37e46559c8667e14c57d9db2d9:ffff005f', 'observationId': 'o1:d45c2bdbab7280ff6d3b2e18b05fe953:00110060', 'geographic_point': 'POINT(-111.947917473862 40.758553387579)', 'mapsURL': 'https://maps.google.com/?q=40.758553,-111.947917', 'captureTimestamp': '2024-06-13T16:29:21.492525+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad45c2bdbab7280ff6d3b2e18b05fe953%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=62cbbda699c5f07c9cdd1da250a6b67a5ab5a4efbc848a34438c99ba5fb1f699ffda15549909aecc7758b56a2e8efeaac716f875b26440f7f0c43fbcc192b30fd108ffb6fe9e34b7a5e0b4e266887cca4961464a042cf8c23bd6edde004f62def148a7ab2ab6c07bf441431c4d39a14eb52c38365103f4886e558881e102efdbf5f73c52a949230fed55da6a8a8437aee1b6bdf6e7d0536e76b12b1c135b2bedd44ae0be87b0a0ecaa64e9984513a1a44fd2267e23d34ae5e7fcd4c924e6d11ce88fbd6d7906b7dc4352ce13789a45050307caf1358c0406a5eaef932d71c1357da9e0130fa739bfa80ca003e4cc0f4f672ca23af8c4283ca3f245c7aa7f2f52', 'category': 'Pedestrian Crossing', 'description': 'The top sign is a yellow diamond shape, indicating pedestrian crossing. A second sign is mounted directly below, showing a directional arrow pointing to the left', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1661.0, \"x\": 1083.0}, \"hi\": {\"y\": 2113.0, \"x\": 1205.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5454: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:4991d54eb921b933823802419d0c93bc:00110060\n",
+ "Processing image 5454: timestamp=2024-01-31 20:41:35.018528+00:00, observationId=o1:4991d54eb921b933823802419d0c93bc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image contains a clear view of a red octagonal stop sign with the word \\'STOP\\' in white letters. Below it is another sign which reads \\'CROSS TRAFFIC DOES NOT STOP\\' in black text on a yellow background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18846277090219352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:4991d54eb921b933823802419d0c93bc:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-31T20:41:35.018528+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4991d54eb921b933823802419d0c93bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092317Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0f5695702eb26eb9eb288f28399c5aabaa729111336d284249320363da348fdf6da1e826446d23fe456b41462e8cae579c960dadc3426e9094af652130ae0dd0529ec072f62bd844d584f86b2a9fac5a3760c51ce29e8c09e052abc952b885c67c4b498a788a60138f040901efc325478d480758a29ef442df70d0569f39ae8ff44934e50a0696054f7db85c4a642fe75b792b72e71924b844c9aa5dcdafc0283e1ee727295227c04c6e0688b88f92f71dfdc2f8f3ff6d6d026a4d754aaaa4af6fcff0837b20608fd6152c3341cb5b28aee3d15dc70bdd1f534959e5931ab452bb7840a7f359927d181989d5414e5997226c634a488fbf6f886ecfe1a20b0cee', 'category': 'Stop', 'description': \"The image contains a clear view of a red octagonal stop sign with the word 'STOP' in white letters. Below it is another sign which reads 'CROSS TRAFFIC DOES NOT STOP' in black text on a yellow background.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3410.0, \"x\": 1036.0}, \"hi\": {\"y\": 3509.0, \"x\": 1217.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5455: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:7d17803b115fdef3d71814013dcbbff0:00110060\n",
+ "Processing image 5455: timestamp=2024-01-30 20:04:40.102151+00:00, observationId=o1:7d17803b115fdef3d71814013dcbbff0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads \\'CROSS TRAFFIC DOES NOT STOP\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20191690656873915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=2041, total_token_count=2113) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:7d17803b115fdef3d71814013dcbbff0:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:40.102151+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7d17803b115fdef3d71814013dcbbff0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31a2afd7375bd9c9d8c49358bff05f90b65d115fc2cf7b0ea2a8e455706f0021ab4f0dd0c25b12f9326d0ea70f4eb349b079fb89a9d380e71406d14b8bb03b876db6c8b412391720cc202597fe1890bf16dbecaa6d8c30823674e6c49a9cf6926b94c2bbd69fe1c8359f03074fa32b3b931963611fc24be627bcc5ff1564fd1cbbbc86855b92cf25715e20342552de9c124be25758019c76e07f674ffcb69bc086a6b5c6241ed6f115c978770e00e88364cf47e36144c89ab1b3787bda62102812a9f3d082b32969a669734f6387e8c467658f51da99848eb7018c38c2f15a61e4b22b416113d3ba9338e6a16e86c752abdefe51fc10ae41c9a76c0065c4ed55', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible, with an additional yellow sign underneath that reads 'CROSS TRAFFIC DOES NOT STOP'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3352.0, \"x\": 1171.0}, \"hi\": {\"y\": 3408.0, \"x\": 1275.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5456: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:8c6d917946f4b066d8286d0de26c0895:00110060\n",
+ "Processing image 5456: timestamp=2024-01-31 20:41:34.287022+00:00, observationId=o1:8c6d917946f4b066d8286d0de26c0895:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with the word \\'STOP\\' in white letters. Underneath it is another yellow sign that says \\'CROSS TRAFFIC DOES NOT STOP\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.292046770637418, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2041, total_token_count=2122) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:8c6d917946f4b066d8286d0de26c0895:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-31T20:41:34.287022+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c6d917946f4b066d8286d0de26c0895%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3bcb2432adcded85f87384f2689fcfb20420492732ec103b89eec5e12cd63114885cd0436d04bd2605d89df878217e919e9862caef8a18690e6fc7923097009556ddb71bc3127baca43da5b547602d36736983045407ccee04b04314cdb676e9960010595e3c5e83134f492be285d1ce16af7b0b3139dca24f1a33b177e9524360a9840010348ea903bc04984f2d2d2c29198fb9853c6f4cce3e2dabc3f99e36e6bea69696738b62dbb8d55da3c3782a7c00846c2c112fa737cbb2000d4c3572cf8e209985845b283723a5afcd87264dba1f3659b8c2936cc2cf30de36d0cb6d1638c40a5b9cb0152cbf4856dd6699f6a7efeed78dd33a72576c9623168a0576', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters. Underneath it is another yellow sign that says 'CROSS TRAFFIC DOES NOT STOP'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3379.0, \"x\": 796.0}, \"hi\": {\"y\": 3442.0, \"x\": 917.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5457: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:c3bc1038687ca713f37893396fb47fe1:00110060\n",
+ "Processing image 5457: timestamp=2024-01-30 20:04:39.430227+00:00, observationId=o1:c3bc1038687ca713f37893396fb47fe1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. Below it is a yellow rectangular sign that reads \\\\\"CROSS TRAFFIC DOES NOT STOP\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15833808126903715, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2041, total_token_count=2125) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:c3bc1038687ca713f37893396fb47fe1:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:39.430227+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3bc1038687ca713f37893396fb47fe1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d86413ec031d74499a1c342b04cfe1930f1be491a405b167557a3303a7b365af6782018ca984085e9821b1e67e41390b71f000db6d375c5bb1ddadd5b0b4740e2b7fd30914acb6632a304a31e5f73860d2c7b569048ef50d5e21fa44db489ab963cb2ad50e92711fd494862963c7510d4bc7b92eddc846246366118100f2b985a28fb1da69b923908ebb9ad7e04d82fc18d4536c108998b3691bdcac2e9920c8634f327767ce07abd8819e6124f3a00ee5881f3790c86bc388f01b6e11aba2b23c849d207dbdb719459201682afcc83ed29c7250263dc233c8947ccd4cd2fb4a1131be8b63684444998d655e4525ef7cf1c5c1dbc5c134d75f58afb40411528', 'category': 'Stop', 'description': 'The image shows a red octagonal stop sign with the word \"STOP\" in white letters. Below it is a yellow rectangular sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3414.0, \"x\": 1488.0}, \"hi\": {\"y\": 3487.0, \"x\": 1623.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5458: trackId=t1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f, observationId=o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060\n",
+ "Processing image 5458: timestamp=2024-01-30 20:04:38.738189+00:00, observationId=o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters. Below the stop sign is a yellow sign that reads \\\\\"CROSS TRAFFIC DOES NOT STOP\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1226445304022895, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=2557, total_token_count=2638) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313942bcd1b396e7d1cf9e6ddbac2f4:ffff005f', 'observationId': 'o1:3a94f5f82fa769e6ee1f4d7da5a99fd6:00110060', 'geographic_point': 'POINT(-81.9328214372913 28.0479558216347)', 'mapsURL': 'https://maps.google.com/?q=28.047956,-81.932821', 'captureTimestamp': '2024-01-30T20:04:38.738189+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a94f5f82fa769e6ee1f4d7da5a99fd6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ae021f06f0d6c0c22213c906e54f7a3ecee12eb3c9464bfbf1527f64660220dcc7b2b8595284b435a0954ea7fe8c361474ff5522219ab8fdff89db43258f15a267a2e9ee3939125ea59ae549622cebd269b81fd704255f66ae30abd92983530074263e82b299ffa338d90219bc9869ed1f0491c0ee562e50c565bcb4662eb5c39090f98e40ce080110e96fd372738f07e71bd3b3317eacfb35163166573d5feb8b1bd57e81ec78ffbbdfa586670f64ebae257182c9cd9d2c97befa745054e6a36f5681bf434d6fd6b18983b263fdba7fe7b8418405692bac75afb483106bc734e9180c9f9c80821e309cce07baed7e6db6ab499c588a13b151da47339d02589', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters. Below the stop sign is a yellow sign that reads \"CROSS TRAFFIC DOES NOT STOP\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3434.0, \"x\": 2143.0}, \"hi\": {\"y\": 3533.0, \"x\": 2323.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5459: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:35ec6f2eb716d0cd015571850cd34969:00110060\n",
+ "Processing image 5459: timestamp=2024-02-20 20:48:13.826131+00:00, observationId=o1:35ec6f2eb716d0cd015571850cd34969:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12553760970848193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:35ec6f2eb716d0cd015571850cd34969:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:13.826131+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A35ec6f2eb716d0cd015571850cd34969%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=924137801e5ff7c88fe51df417316fded9650626bd4c9df372a0122bde2cbc4e1e7a4e79be710378de7e22cb65fbff0781b2a6eaa098c6230b69060a39c65d189a7d9a296b89ea5aa8dda50ad3792d46088cf5cd9b02ce8809d0689f76583e75c2f0f9ea80903123402f9bb5ec8859e99f9d45d851a3cf7fc2524c7696e0868fdd9d167dec7d9bec235be244d494d598e32aacd91fd50b471a8333d446ffd603a69addbe035919a533ddb804c0b04dbe4c8c0434d2ab83478c60ddd2a142eeece7e8b48d65c774d8e674924a98a7aa100c547a32644a1b5caac51dea3c578863889422811d5debd0e99ae3ddfe2468b2e412eff3c6e2fffea4cc68420208a29a', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing to the left is visible. This indicates a sharp turn to the left.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 1049.0}, \"hi\": {\"y\": 3267.0, \"x\": 1136.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5460: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:5c81399d118b47d0ce489714e9765c27:00110060\n",
+ "Processing image 5460: timestamp=2024-02-20 20:48:14.738198+00:00, observationId=o1:5c81399d118b47d0ce489714e9765c27:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing left, indicating a turn in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10559913847181532, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:5c81399d118b47d0ce489714e9765c27:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:14.738198+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c81399d118b47d0ce489714e9765c27%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=769afa5e41f367cc5f58b6af2c29aa66c206ea3f265bfefa4e21d24f603c5274db1c63e0af7e228c5d17f616a34e5b7558d20ef7811291d78f91dbb0b5b463450c6c8e4c752c4e835d2082baa545bcf71f055f2e7d4921b4c3047b634fd32a7619a916d320550a2d7737e5a05fd519a3c19dec9715e9d14c63b4ea4c3539cede1db06333e86f4bbe961426911de9c08bc4860a4e8f0ce0206c028a611a112a6e5307b95e04cd64ce00c9d62855b9b91a3cd6f711701696443ee48fb74f90ef29845815fb88315e3554b0810b1e550b5a6b2cd8c003b5f508bbe675a24baef783142d68db601fa9b19f812f69cfd5c3fa15873660493b76279d4a0021c44c524e', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing left, indicating a turn in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1952.0, \"x\": 1837.0}, \"hi\": {\"y\": 2324.0, \"x\": 1925.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5461: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:c75c47160d2a66937d2e33b7d3efa825:00110060\n",
+ "Processing image 5461: timestamp=2024-02-20 20:48:13.521702+00:00, observationId=o1:c75c47160d2a66937d2e33b7d3efa825:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10264655127041582, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:c75c47160d2a66937d2e33b7d3efa825:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:13.521702+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac75c47160d2a66937d2e33b7d3efa825%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f43e0e7c4a0805ea5cb89d1bbd867e8f7f483eeb4d154212bd6ac1be872eecce7fd3a67ac44a1da1e6f9b28f5bccb871a3fce138e4b6ed62545cc6ed772de5a8566634984864116a9c72c4a9cfeac5ee7647bd21d055de28382d025356b144259ee23b7a545de99426acb575af480c0eb1d52bfc55850c22b9234411af630410793786ecf5452d3bd5add93ef4ac073dde366fb1b6dc6e275c0936fbad414c719de7d5ae62086c357f078a370176b42d09c1ad4d9fb7026f4e8974a6ebec59aefd62e2d9bb3a81fad067d51104c45f16c2ad0f77bea82e9fdabd626a4343571ceaee14b8da10232ac831286a1d966724f3cbca6905dfb480afa98fc1423c35e', 'category': 'Turn', 'description': 'The sign is a yellow square with a black chevron pointing to the left, indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3166.0, \"x\": 796.0}, \"hi\": {\"y\": 3256.0, \"x\": 867.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5462: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:fad2c9a629960dadb2a12eee614dfc9d:00110060\n",
+ "Processing image 5462: timestamp=2023-12-21 15:53:16.607397+00:00, observationId=o1:fad2c9a629960dadb2a12eee614dfc9d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24994848668575287, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2041, total_token_count=2105) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:fad2c9a629960dadb2a12eee614dfc9d:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2023-12-21T15:53:16.607397+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afad2c9a629960dadb2a12eee614dfc9d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7271b27b414502ea5b2381fb3e782883b478dc52f61edfd4e2f35edec7059d6f75c648f6d3446aa98bed3dca6aff91d18781f4a82f1da7d9c19861e6c9c1407cfd27cfc50e97bdb93a4e7ff29dc5aa4303fc2e141827be047a22aa602d5d303be2b9f92503bab1aa34ce637d4feb19ef8e8fa4d667d4ab80e284b77215c39436f8c21390941b39a796c32c5070d481ce0e92c0186212acd03746ad0e329c034e11c352412dcfc4b5faf0214f54ca82415db98103825409b4bfde8b28df09582e2dfe7a08601ff60358435088678b8bb049199aa4389df489a97d11cf28a1e5b91005390c419c9b84fcabe7b5b487c4f4cc653a41b17bec5b4d86815cbe89f360', 'category': 'Turn', 'description': 'A yellow Chevron Alignment sign with a black left arrow indicating a sharp turn to the left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2225.0, \"x\": 216.0}, \"hi\": {\"y\": 2328.0, \"x\": 274.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5463: trackId=t1:0313fcbf740c807200a138f207688766:ffff005f, observationId=o1:a18d01bbd1e844014ccd12dd9ad17165:00110060\n",
+ "Processing image 5463: timestamp=2024-02-20 20:48:14.129896+00:00, observationId=o1:a18d01bbd1e844014ccd12dd9ad17165:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13416793942451477, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0313fcbf740c807200a138f207688766:ffff005f', 'observationId': 'o1:a18d01bbd1e844014ccd12dd9ad17165:00110060', 'geographic_point': 'POINT(-81.9716964472837 28.0590548595962)', 'mapsURL': 'https://maps.google.com/?q=28.059055,-81.971696', 'captureTimestamp': '2024-02-20T20:48:14.129896+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa18d01bbd1e844014ccd12dd9ad17165%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a70b95604b8dfd08e0443c773467e2f87e3d681ec186fe66df61ff3a5e54b7592a74c7501b565c98e72209db5ad961e5257d2a3c62a1a71ddbe2ee85f621c1f487aee664ee040ee6f0350d931898af6bcea56224c8aad69e77d88d3d9fc5db3896018108e20a951d49fe0a72f234e81a7d806ac2c1cf36048707ba04eddd5e34af3363591058948965804d6b8fa3a80b85cf832743887ed154ffe0cf5158656039343b0efd805baff0c385e324a6e5c7298a867deefe376077148b7983315854194a9af63567992933e9492fba74e6726bc4e767e13fa8b40f09d5b6778456bb9d90659ba65c47346850272f3edeca273e963e157f82100f85f4d5eef7e42da', 'category': 'Turn', 'description': 'A yellow sign with a black chevron pointing left indicates a sharp turn in the road ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3118.0, \"x\": 1484.0}, \"hi\": {\"y\": 3279.0, \"x\": 1599.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5464: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060\n",
+ "Processing image 5464: timestamp=2019-01-29 14:14:28.520574+00:00, observationId=o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A construction cone is visible.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1369324464064378, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=52, prompt_token_count=493, total_token_count=545) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:26c0814ba9e5ec2ac8ad38681da7e309:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:28.520574+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26c0814ba9e5ec2ac8ad38681da7e309%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=484cb552fde8e5c4f64d00674fb7a8c7c1526876de24e2a65472279ea6dc278365ba52a9e7ca90315d8d499699271bfeec42f16ad085b87b71fabeb516fed00920f3544769abd660e32034d1574cdb388893e2512e3e873e35c152edbe175c091a797c5ca5bab274e878e5e6add6675d55e16f8ded614d47a3e72591d1b28f8dcf108e4587c92105fb6e653957ea5a58a336c6ccbd756cf333d2bce2a67adeb41a86e39bfac053c53e0e69296a34287067e1bb0a4168a4c135165b5dd604283b21106d3ab2e4a6bd071a62d7b3f5f7e8c382a73008fed03e0dc6e69f663791a5cafaf8c578bb11f9c8fb44c4e43753e9a7190c615bde706a5b2eb8903f784272', 'category': 'Other', 'description': 'A construction cone is visible.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2457.0, \"x\": 2012.0}, \"hi\": {\"y\": 2548.0, \"x\": 2042.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5465: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:6add22a20a28444d34971d350d8f0241:00110060\n",
+ "Processing image 5465: timestamp=2019-01-16 15:48:21.321996+00:00, observationId=o1:6add22a20a28444d34971d350d8f0241:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20538519410526052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=1525, total_token_count=1593) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:6add22a20a28444d34971d350d8f0241:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-16T15:48:21.321996+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6add22a20a28444d34971d350d8f0241%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8972f92c3a6f6174c43ae301d9187e6aa65078032441a13603aefd2295465391c1387c8b287927cc4d3a65b20aceef291612ce191d51d00d8b513969b1a0fe68fa349b1e6179ee5347dc84dc30ebacab8935a78e98e265d00f39972379dc16b9ebd070f3b4e8c0ecf373726a5a61bc74b97dbd8d6b88c2d61c8f0f113a8c2fbee1ea17b42c6d410af631b5b4c3683cd3e6f6ee4d9e3c47fe7eebbb328c9218ec85b3d1a77b5dd854c412f69ddfd93380010405e0fafe4f7aeb6c40f07171d73dc276682f71ee4964c5738cc1c97ee75e3eff448c8553cb89bee1207455ad8d569c1b23238b4c42fddf08dec2093a597f505bd68d222e14b860b7bb33f564ac84', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic management, but not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2535.0, \"x\": 1828.0}, \"hi\": {\"y\": 2754.0, \"x\": 1901.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5466: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060\n",
+ "Processing image 5466: timestamp=2019-01-16 15:48:20.722033+00:00, observationId=o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.040648269653320315, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=1525, total_token_count=1580) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:d818b78ad2692d1cf3d87e3de72d6d4f:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-16T15:48:20.722033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad818b78ad2692d1cf3d87e3de72d6d4f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=96fa17adf7102636c4ca8c49088c21bf00d70c2a1716380898467021bef19d64bb4aed1eb5621df08a7e6d694747a187587ca8e6df16b54bd01ffac6ffd910646098b5650f1b9b619033b3f638d902bcf750aa21ce4bd2a7e31e5615cad49d40fb38d33fe5d9f86de495536387a200221aa9f29e798e829ec08271ce7724d4c41546b3b1a08933832e8fce9b35adb2bc4953ee4fa0d06177abadb1033f2f268ace1a4cd90ffa49d3fc1a9d92b8127bb67542f627de84a7b59c4eea9c4b4176e7a799170c0a57b2cdf856e85510dfde9a1f2258f8bad34265fb320db116c2d81f772b5dc2e60b4735e5ac29ec4edcf6e987a8ffe5ec39a2859631747437408f04', 'category': 'Other', 'description': 'An orange and white traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2516.0, \"x\": 701.0}, \"hi\": {\"y\": 2725.0, \"x\": 766.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5467: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060\n",
+ "Processing image 5467: timestamp=2019-01-29 14:14:27.692612+00:00, observationId=o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24579327727017336, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=493, total_token_count=566) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:77e3b368e59f8ec69531c9dd7b0d5057:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:27.692612+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77e3b368e59f8ec69531c9dd7b0d5057%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=87d21a3bff7294a16a61d89fb0aebb8daa0f6d29ee7879efcc1e3b1412fea6ac5b7e3b149cfdda99a40cb3f3792b81fb404c5c7ea90f5ba26b14500fa7b2ce59295c09c4033cc48c12e31b7735fd0779d2eaf132d5b6ff7a9ef256a5a2364d1f052367372469276475dbd293d1de775ed748cc88cdd5da62f5aeaeb18a97210347e14f02213bd8e861418b10dd6c9e97bb6887e5107ed88ffae220a89341767bdc54c27886f56b0e5e6ad63ddcd26f6ae8e3123732eaed407deb95ac5d4bb969a3679b3080e99ad1657a49e1e10b5b5fba4f50272e0a01c515c079892929fcc3002f74f5b60b2d9a0f7f987846b5b7619a397f07c90115723f7d4cb4754e97a4', 'category': 'Other', 'description': 'The image shows orange and white traffic cones. These are used to delineate traffic flow, warn of hazards, or mark off construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3362.0, \"x\": 3249.0}, \"hi\": {\"y\": 3447.0, \"x\": 3281.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5468: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:1b9efd924a47270acce471975e6d02ff:00110060\n",
+ "Processing image 5468: timestamp=2019-01-29 14:23:21.433027+00:00, observationId=o1:1b9efd924a47270acce471975e6d02ff:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21707302973820614, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:1b9efd924a47270acce471975e6d02ff:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:23:21.433027+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1b9efd924a47270acce471975e6d02ff%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0492fb362047bc2c74a365530d203c67b122273dac6bfdb83320f82c59c51fee2488ad3cf40f35aa18cdaf5519fbf1c841816d61509d5ec538e1b0df54d5a751360333b8563560fba2f9f8a13409d51ff500b996fbb029b663064881a2974704a04159a868e0d89c7c13259d8dca54a1bfa941f82eb25e4bcc0de288c8e1b1c428f6f79e9947e8da4123f170acfe42e93f5d29a67a96900d50af351c0469091f4f6f6dd1d0ec2cbfce8c42a2dcc87aef5cc376244fe57178b7e1c577319a611b073c620c871ff6296613224189e898be43f423c6dfbdbda0e349a56dc205cfb18040aa22a36ebec383417da8f119e998d5eb5e92260ab1e0caea30eaaf62ac26', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used to temporarily redirect traffic or to mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3556.0, \"x\": 2775.0}, \"hi\": {\"y\": 3664.0, \"x\": 2819.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5469: trackId=t1:03154734aba5385e968750d9033d04f5:ffff005f, observationId=o1:43d7a363ccca633f55ea96d7365b3319:00110060\n",
+ "Processing image 5469: timestamp=2019-01-29 14:14:27.692612+00:00, observationId=o1:43d7a363ccca633f55ea96d7365b3319:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.\",\\n \"image_quality_notes\": \"Image quality is good.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21656819464455188, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03154734aba5385e968750d9033d04f5:ffff005f', 'observationId': 'o1:43d7a363ccca633f55ea96d7365b3319:00110060', 'geographic_point': 'POINT(-81.9561931649312 27.9926043281828)', 'mapsURL': 'https://maps.google.com/?q=27.992604,-81.956193', 'captureTimestamp': '2019-01-29T14:14:27.692612+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A43d7a363ccca633f55ea96d7365b3319%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ea573403b988392a6a287d3dd56cb7bea670fb617b2b31e22a8920a43b47aa557cc7900f692cce1418d8865f68ff8371ce084c96edba3dc0361e971e336c6415ceff51dc82721d8f1bb6e2a1eec8c98fd6f9289fbd762e1a7c1962dded478a5ad6c506efcf920ce96127aef8ae438f5a724c272a7ad33d44a8edf350ecbff323cb495546de71093075b40e2d7260d40bda582c3523c2853d7c07af9bc728773750b7492d75e0382db04683e25b53a2e32c344cec1a8ffb45bcb7427fd74781d9cf2ca40b0816746b6d8c9a6fa3eb2907d593bb78cfa96c95ffbdbf26de16087aa25fee9dd08927d34a9a4db4291ae6185452abd7ff72517e03933e9e4b9ccb2', 'category': 'Other', 'description': 'The image shows orange and white traffic cones. These are used to direct traffic, mark hazards, or designate construction zones.', 'image_quality_notes': 'Image quality is good.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2479.0, \"x\": 196.0}, \"hi\": {\"y\": 2568.0, \"x\": 226.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5470: trackId=t1:03156def3e14da09e890db764df4e934:ffff005f, observationId=o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060\n",
+ "Processing image 5470: timestamp=2019-06-04 17:44:44.429466+00:00, observationId=o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'600 S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10968517866290983, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=1525, total_token_count=1586) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03156def3e14da09e890db764df4e934:ffff005f', 'observationId': 'o1:15f9bea5d9aad9e115ea484204b2b7a7:00110060', 'geographic_point': 'POINT(-111.86388890747 40.7562271642333)', 'mapsURL': 'https://maps.google.com/?q=40.756227,-111.863889', 'captureTimestamp': '2019-06-04T17:44:44.429466+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15f9bea5d9aad9e115ea484204b2b7a7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6d70f793b0e4382191b7beb29b54a30ee5dc3b16716a2454f19ff55f95e5b7f25e3d7afdab7854019938022d3f3357de24421363c56f4b730154a4f232a2e758da6d759ce9e1af93e217e96443781b4e1ff859ee4107dd5eec600bb8c0f9912276f342993f40647fcc155275d523bc82331582b725005093a99ccbd1f9a1fdb98961543c0f3f2937798f9a0f18bdbc18d01edb66185a76072d03551e1d082e52fedd736286714591f86022e06a7839c158a3cead155f61079b4fb39129834f89d0027b860f45d8087f12b5e343574358e2163ee87dc60e250045b639d177671e83b61d546bf65412daf157fa8a14ea23bfc65eb2ceab92b4454345f099f40823', 'category': 'Street name', 'description': \"A green street name sign that reads '600 S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 1268.0}, \"hi\": {\"y\": 3238.0, \"x\": 1348.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5471: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:9fb96ce10c69862263203e1434044261:00110060\n",
+ "Processing image 5471: timestamp=2011-04-28 16:32:56.701181+00:00, observationId=o1:9fb96ce10c69862263203e1434044261:00110060\n",
+ " Error processing image 5471: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fb96ce10c69862263203e1434044261%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=65b554430684648815f88d2cf710fad7f919fbb87061b5e9a3dbbe26276dea3708ba563260142c879c61c9717f657c0d5d8b021bbe252345cabe419a3e88cea2f21317d148950490ec569242b91f13afc7e002e1a7f72f90b088f151fba043e01f9be7a5c560d1db7786cdcf0dd870e8e11ea7aaec5b53fd49b6d0fa7137fbefa8f5a7847c03f072f6534cf49c8fb4f9507f1a86716678715fbdf13431323efdf5cdc13f33fe9e5025d64d45f0bd19a686e721be2ac1c3dd7faf93d93e748a9cb8d8308e38b359c543f29737188459d35a4d63f50894146d206ee680e9aaa15edb976484a807c9db33e96b3bfd6fd2509e4bb1119e614f6eb0eb4a33315901d0\n",
+ "Processing image 5472: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:0ad69e8c984ad989056733f4b7bf629f:00110060\n",
+ "Processing image 5472: timestamp=2011-04-28 16:32:55.191856+00:00, observationId=o1:0ad69e8c984ad989056733f4b7bf629f:00110060\n",
+ " Error processing image 5472: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0ad69e8c984ad989056733f4b7bf629f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092643Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=350baf48b0860d86575de914850e9d78e67acbbbf37f66a65a36108e8b9b926d6dd352643c1b6924be80eac39cb6f562a43c2ba39bc5c02677cb596b8f3d6f31cc67484e656b4410ccf9a84f329aa4fee5a98227e7a12dff7069aa42cc256abe524226f3ff7b9edc81c8e890243deb41ed0cf4203ef3df71d55be3f64369311f5b381a60e1e212ee38a72b53c6a2b28d643d2d377ff2c2aa8b356d5ace4ce36c114350a08a3c225b97563dcce6eac5f21d3c54fb0d571dab7543b8360510d8a2628c9091a136115d2cba405863805fee9e05812c49cbc45571d6a40334d3e1a370947f209e494baab9e840d22eb72f3326d0ef10167b6a42f3e7b82f680cd9f9\n",
+ "Processing image 5473: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:adc9295499f2d6f46154d7ed5fe31452:00110060\n",
+ "Processing image 5473: timestamp=2011-04-27 19:38:18.964102+00:00, observationId=o1:adc9295499f2d6f46154d7ed5fe31452:00110060\n",
+ " Error processing image 5473: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadc9295499f2d6f46154d7ed5fe31452%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61662b2de8ccc5947a9c8ab1c26e17b77121f6b8dca8ded591048a096fe34778e96fb5656cce0495d8051aaa718c04c314f9e54b5176617d6b8b5e97601b0bce256fd710d3bf379161a38c3191d2c8c12873dff105f7954aa453ed6998cf93760d4421cbcf1e1a2ed766473edd673dfeebc36d8d6ed560996b8d7e11fb2367c33b6ca1a01b4df26d0c4f2d3a6d37121661996cec924b82923fab17ee3ea42ea8864cea3727fca6faf3c23574591226a9619df369131da86c4839ec7348e07376f22f37a363b1bd76144cc80fdbded046939d463ca485a5839f518e42e472734efd8f3969e6a13428c1fc8cf7f8a2627e71828d51357118c23aec72113fbb5dd0\n",
+ "Processing image 5474: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:eb9d2dfde713c395731aabd9d0edeba8:00110060\n",
+ "Processing image 5474: timestamp=2011-04-27 19:38:07.869979+00:00, observationId=o1:eb9d2dfde713c395731aabd9d0edeba8:00110060\n",
+ " Error processing image 5474: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb9d2dfde713c395731aabd9d0edeba8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8a82b22d5181cd08bddddd8e3a5d47a8b1bfdac283914c8f34a3cb95e6a229e538c30df01fe99aeb7ebb2cc04eeb15bd799bdb1e7beda9373842536480bdd1e3528ed3292f12156f291b76f60a3a5b1e8e74b6c72aeaac1b95070075f405649aae43a04d6301909c2f25f7a693e3e0295c163ffda61e9cb92bd26fc80659085b20e6277f2b6714b71da39ae8c501a7e03fb5af59a56f92df754aa2c2eaea3693639146e0aa93eca60297994c0481064448e8a81b4502d524114f56f9e336e4ef233bf587e5e64f3860e257ef532c7bedbc3899d0a6d1c9568d3ed042053727627c72ad454a00131c23e2fcc3901db3fefb5ec4a050b6b4e0a454fecf2d36451\n",
+ "Processing image 5475: trackId=t1:03167c3625845b054eff9a1f62b2758e:ffff005f, observationId=o1:679eabbecd55a1aa0611b8bfb6e15462:00110060\n",
+ "Processing image 5475: timestamp=2011-04-28 16:32:55.842623+00:00, observationId=o1:679eabbecd55a1aa0611b8bfb6e15462:00110060\n",
+ " Error processing image 5475: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A679eabbecd55a1aa0611b8bfb6e15462%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=006582d6bdc526774a53b5357761ab32d5d17f3b57f433c7babecc094c32156d848d2d4e23f9bdd2539fbe464861e8fa45562e12960334be1bf4de7bf02aea28cb009413a60fb2b81db785670717ee28823fe1e970d959e0637fca81a1725ca7a2a5830a87d8f0a32f96b033e785418b27fd8f172eda4998a1becb89ce907a55ec6970c4a3cd8b73bbba66d89e8e93e3e8c8a7998d75cb731e3b13370ae71404888254afc1566427c9434e6c4abe8d64e11f1c8d1e9f897dbc654c833fb6eb7439dd86533da52a0ba0971614047d752cfdaa6c8e5a2e316f3bb866800c9c581160f99a4fd072bbf854bcedfe784fbb1ee547741233fe5c4bb0fe7b24cfd7bb03\n",
+ "Processing image 5476: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:5720208fe751d61c92c652a53f8d44fa:00110060\n",
+ "Processing image 5476: timestamp=2024-01-22 16:35:35.595061+00:00, observationId=o1:5720208fe751d61c92c652a53f8d44fa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a \\\\\"NO STOPPING STANDING PARKING ANYTIME\\\\\" sign, with a tow away symbol at the bottom.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19978004612334788, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2557, total_token_count=2630) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:5720208fe751d61c92c652a53f8d44fa:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:35.595061+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5720208fe751d61c92c652a53f8d44fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=718bcbd79f8f1ccd5f3c3a733dfcdac5fbcd34d478e93f8ff24488c09476444bed3bbe520613b0a05ddc747bef06f74328dc67e49e311bc60b9e6a5c3391e7a46c23338ddcd4d374aa51dd464e34b61c206535aab206cccfa19b16cdee0fcecbb2a795739cf036b5f78358c018296d21ab0dfd603d748ccba45b6ffcc775eb065f95d969d41f9f0f575f7f52a0a5ee30c2629f8614671b54614662cef979fccb6a698d36ffee642f56395ca16a2dfb0acfd01dc8c29f0a671421f899e38cb778ec1b1c36517a05a9c4cf6e5c8c65959b0518b73747ccb1b6b4fc5ce6d42c5e202e701c8187184bd335fb0ae27b482e837c2c4ff08170f736309752ca3a9ae142', 'category': 'No Parking', 'description': 'The sign is a \"NO STOPPING STANDING PARKING ANYTIME\" sign, with a tow away symbol at the bottom.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3148.0, \"x\": 2007.0}, \"hi\": {\"y\": 3282.0, \"x\": 2133.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5477: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:f472927cfe1fce8e866ba58720058507:00110060\n",
+ "Processing image 5477: timestamp=2024-01-22 16:35:36.639115+00:00, observationId=o1:f472927cfe1fce8e866ba58720058507:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO STOPPING STANDING PARKING ANYTIME\\\\\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3180772712431758, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=3073, total_token_count=3156) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:f472927cfe1fce8e866ba58720058507:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:36.639115+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af472927cfe1fce8e866ba58720058507%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3ad5468c803fe7658318f40b32f54335c72a02bf45dd1906117f97edbd2c667ebbdd706c6f839ee05eff5538b9f6af840cf885f294a2ac75a5afd604e54c5f009c15cfef784940cb3fd385ae1a3c02964867c3bf3af9911931905f2c0edaa8f33e0ca75e153244734fa3644094011516782f94b7286903e1190d78bbb91cb34c53da47c18326a80efb3bc4bb46f46bfc83e0df5c261aab836515499c7a2dcc10405dec7fe39382a276e67242c2d614452929bb35696cc93c6550ff5219796a163e21a726b4b18af1360b6ae886cecf220fd5b7730098ce0d8f2e58b788f4ca819aa31369382483c1e80f52f44e22a3ad0d9f6cf0d4535b0df536c189e41ae9d8', 'category': 'No Parking', 'description': 'The sign says \"NO STOPPING STANDING PARKING ANYTIME\" with a tow away icon. There is also a sign above it indicating Rental cars and an arrow showing direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3062.0, \"x\": 1261.0}, \"hi\": {\"y\": 3265.0, \"x\": 1413.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5478: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060\n",
+ "Processing image 5478: timestamp=2019-09-27 17:38:29.420156+00:00, observationId=o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a \\'No Stopping, Standing, Parking Anytime\\' sign below it.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30072805358142385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=2041, total_token_count=2123) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:d6eafc5e7fb1b000f116ac3d2515404f:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2019-09-27T17:38:29.420156+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad6eafc5e7fb1b000f116ac3d2515404f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a7b47f507d9250a9ed1e862f3ab1e2984f488127a5cfca0300ff00a1471f0c2235359f2b036a5ddc0e10c9614077679aea3415705c2278e9f3ed337ac94d1778e0edf959ed428fea973d63217cf6d897892d36559a6f72ad39b4628760459e809ab60e44a63660473302c543bbdceebc068ff050ba195763977337ea60bb605afc747e0c7bb50a8b92212aa65bdf80387b0c8be5668682c668b8f9cc383a494ee63525afbfeb06c35570da00e9dff3ef423491fca3babf25cd71a05068d89212337aa3be33237e1e4dd7b31387b1851cd4b3ade23c685e4a07f7ee7a5a1c00d4ce08f9f74b7446e5ffa6df852c4ec1289607249cf5920f8be40e234dd1662209', 'category': 'Other', 'description': \"The sign indicates the direction for Rental Cars with an arrow pointing upwards and has a 'No Stopping, Standing, Parking Anytime' sign below it.\", 'image_quality_notes': 'Image is slightly blurry, but the signs are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3122.0, \"x\": 2142.0}, \"hi\": {\"y\": 3241.0, \"x\": 2246.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5479: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060\n",
+ "Processing image 5479: timestamp=2024-01-22 16:35:37.627028+00:00, observationId=o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is blue and white and reads \\'RENTAL CARS\\' with an arrow pointing upwards. The bottom sign is a \\'No Stopping, Standing, Parking Anytime\\' sign with a picture of a car being towed. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16549806496531694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=3589, total_token_count=3686) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:5bca4d92cc3a449ca2cd8a25863472b6:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2024-01-22T16:35:37.627028+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5bca4d92cc3a449ca2cd8a25863472b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3aed7d264980c11ced0c3d079e353fe11a88599c1670e75bf4e7c5c8076955001a3a03ab46bfa55f6c1dece6f553b5d5458289c8aef6ed2f789a535c089c428466125a3f41ce357f2bee5a2b8f6cb2dc442493c1f38a54f3b7bf00d1f7865b029da983bcb4edc1ec739fca2f8a19a09318151a8c89250450fe0d9ec4658f12ffe3b24e5e620371e4fd1a84fbc5cccd28588e815876806bcb52847daa331464d268bc8d4364f9c4caa588131720b6155911ed41d8af8f34aec5b1c9cb07b394f7cc1d57aad244721ac8a715a289295ba9bd0c777fc1180743c0fd6cb2a43af53e4f9335ba21c043bd85cb0bbe2b6cd69734a64a7e6e7ae367e253fce48227680b', 'category': 'Other', 'description': \"The image shows two signs. The top sign is blue and white and reads 'RENTAL CARS' with an arrow pointing upwards. The bottom sign is a 'No Stopping, Standing, Parking Anytime' sign with a picture of a car being towed. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2027.0, \"x\": 2683.0}, \"hi\": {\"y\": 2327.0, \"x\": 2776.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5480: trackId=t1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f, observationId=o1:2178bf6187950c70963111a902c578c6:00110060\n",
+ "Processing image 5480: timestamp=2019-09-27 17:38:30.368235+00:00, observationId=o1:2178bf6187950c70963111a902c578c6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'Rental Cars\\' with an arrow pointing straight ahead. Below it, a sign states \\'No Stopping, Standing, Parking Anytime\\' with an image of a car being towed.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18895724841526576, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2557, total_token_count=2641) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0316b1b7c902fefacaa55d88f6774d8c:ffff005f', 'observationId': 'o1:2178bf6187950c70963111a902c578c6:00110060', 'geographic_point': 'POINT(-82.0141835704355 27.9946195893913)', 'mapsURL': 'https://maps.google.com/?q=27.994620,-82.014184', 'captureTimestamp': '2019-09-27T17:38:30.368235+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2178bf6187950c70963111a902c578c6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=22f05d336e4d9fd7bfabeab37941c0bf2561f06bb249f130542ac6b54cf8b3009e369a46401117271381b4db8760c54979d61d7cc10fc7f80a299fe3a31b4a10fbfb3053e7deeb45f05b70a638dacf92d278690e785ee03d8f65d6d4f60bddd9150328ec3e52cb008836587bd25360c53c819020497a5f1ae2bbcca65aca1f039b5f409c9f694ceae4106f3bef123f10c43650c535e6b2267f670ad3cb93da1982cf401f10aad4788d9974d002cf8fde2ed879491c6f14a25aadd912e151af4958ab740f636e5cf6fd01d30447446db2984926cfebe799b8569246b5ee0a78f58b8e9202ad8ef9ac16e0147ce1b3a2ff5d7db85cdef83e6e8bad4100c14de4e9', 'category': 'Other', 'description': \"The sign indicates 'Rental Cars' with an arrow pointing straight ahead. Below it, a sign states 'No Stopping, Standing, Parking Anytime' with an image of a car being towed.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3076.0, \"x\": 1647.0}, \"hi\": {\"y\": 3233.0, \"x\": 1778.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5481: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:9f486115537db84b7cba395bdfa11915:00110060\n",
+ "Processing image 5481: timestamp=2024-01-25 20:33:35.252138+00:00, observationId=o1:9f486115537db84b7cba395bdfa11915:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign contains two street names, \\'Parker Pointe Dr\\' and \\'Edgewater Beach\\', they are green with white text.\",\\n \"image_quality_notes\": \"The image quality is ok.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3727870374112516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:9f486115537db84b7cba395bdfa11915:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:35.252138+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f486115537db84b7cba395bdfa11915%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1eacd633db473e0d678dfc1b35e8a9c32002ac9f10647c082c28a7b3a1fbfc079e6584edf24bd1cb5ba5313637fc5440ba2b600429cf8cfc6dd973b9218561b59c2d7b5044a12fe99d38cffc0947723f4b19a0f7c35541d647e55a9f50506f8ad9c0aace83f0976153b85205a254158594b87fc336abf76355f61c383d580f7061a4eef520775263315e9d2707236b93db4fba6c014d285174eaac30eef14b529701656a99274937506a88c19453798afa3f86132cb9169524d51d6e8244f14c99a9e9dfa64aa33c23de9138551e7a1ce4c1acc6496320b8229f79bccc08b2347dcae11450f05fcd95d5d51232dd298f63fe08376f0167984f926078774a21da', 'category': 'Street name', 'description': \"The sign contains two street names, 'Parker Pointe Dr' and 'Edgewater Beach', they are green with white text.\", 'image_quality_notes': 'The image quality is ok.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2370.0, \"x\": 549.0}, \"hi\": {\"y\": 2775.0, \"x\": 1270.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5482: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:907b8197f01462936b13df5cec479386:00110060\n",
+ "Processing image 5482: timestamp=2024-01-25 20:33:36.104069+00:00, observationId=o1:907b8197f01462936b13df5cec479386:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with \\'Parker Pointe Lane\\' and \\'Edgewater Beach Dr\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06900579789105583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2041, total_token_count=2109) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:907b8197f01462936b13df5cec479386:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:36.104069+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A907b8197f01462936b13df5cec479386%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=160bd4bbd851b63ad522f2238f4651a20e562839896d2dffc1130250efd5aa59ba576c1c49e4fefa452970ca83f438b4f8b4ecdbf22af46fa9aae1a66ea1e777fe06c4c9c6caa8d87594d5b54386b9138f676ad42c81407cdbf3b26b7bcc52f102551769edd3f50a761f663d7f3656c1579af61a7376b9ff3e462f87e25e3f972c793b5b1fd05a1d3a33db94eb33374de13f9b4f1dd2f75f774706ea96e6c6082de70f31e54afbf4799a226950143fc1d442ca23cb7d194b89c3914955657091df6b8e7317c5b712a0cedd4386ce4c755a13210f46e20edf4145418ea15e7eb608c4efa16118046a339c4cd787d7419f532749efb03ec080532df1de84c1e01a', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Parker Pointe Lane' and 'Edgewater Beach Dr'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2824.0, \"x\": 1947.0}, \"hi\": {\"y\": 2958.0, \"x\": 2493.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5483: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060\n",
+ "Processing image 5483: timestamp=2024-01-25 20:37:48.712006+00:00, observationId=o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the names of two streets: \\'Parker Pointe Lane\\' and \\'Edgewater Beach Dr\\'. The signs have arrows to indicate direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23899946714702405, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2041, total_token_count=2117) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:8c24925601a267cd3e1b0bd6bf1c927d:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:37:48.712006+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c24925601a267cd3e1b0bd6bf1c927d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=af8b3aede5fe8f0ef177b9cb659fc0839cabf94c1c72cd203a08b50a3dceac1319822985919641b1fa7a0d7ff49173cfad2b26bcdb490140f507ed82b7c027ba1b5b251e5f249f0ffba470bd7de12fe54b98797f3b88a54b4fd6559a0df3e07aca1a8e2c54b1095e947fb1bd90e106e0365aae05b6a0d353d7cd4d324d4d2468140dbedee1546d0cfd7dd4848ac6b976d125fdfab2a868348b2ab18947d2b4d380f0fa4ee60f0aa1f95aab6f2f9532ca1f8868a9690d4f1d5c04843ca6700fa33071c00bc3f537f4e7281d0e6fb876aea4205ceedb49e05f64a125b9d474a8e04120b7ba1ea7ba209b99d02b1b762c40c58b4a7566d62dd3921fd0b6e5fcd7fc', 'category': 'Street name', 'description': \"The sign shows the names of two streets: 'Parker Pointe Lane' and 'Edgewater Beach Dr'. The signs have arrows to indicate direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3119.0, \"x\": 518.0}, \"hi\": {\"y\": 3173.0, \"x\": 765.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5484: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:36baec66d8d86e1368a269b77ccbcc8e:00110060\n",
+ "Processing image 5484: timestamp=2016-06-01 19:10:46.323563+00:00, observationId=o1:36baec66d8d86e1368a269b77ccbcc8e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street name \\'EDGEWATER BEACH DR\\' along with a direction arrow and the number 1300. A second sign below shows another street name of \\'Parker Point Rd\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3931295221502131, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:36baec66d8d86e1368a269b77ccbcc8e:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2016-06-01T19:10:46.323563+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36baec66d8d86e1368a269b77ccbcc8e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81379c56eb60f96ff02027eac8936f0b46c967befa22a15ae87eb942947f3e32185c52530716fe63678e7af7084e3803d35e54b7ffb22b064e289832a1e914e721ec76b1c8df2bb7354833e4f98cc93c89d4d241ba4efb72367f87953dc5a4ae04237a3acce3d3153cc793927427de33c2e163be91717602828870def67b1831524fd0bc3869a0796e022133a6d7642504f9c5a6d2e7fccc70471fab4594bf75f6ea567edc803b72837639c1d0bdcdf5c6e09980e0fddd3b955ad09bd3c1c69a4384f0529afce8633f29fa59077102836de55d562ae416582569badf2d5ab5f02d374abdd4873e80c46f9a553cbf8a415e284af87be9b6b6c8a102efa971bfad', 'category': 'Street name', 'description': \"The sign displays the street name 'EDGEWATER BEACH DR' along with a direction arrow and the number 1300. A second sign below shows another street name of 'Parker Point Rd'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 594.0, \"x\": 1070.0}, \"hi\": {\"y\": 680.0, \"x\": 1313.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5485: trackId=t1:031726471d10291da79fbad03c8efb79:ffff005f, observationId=o1:cd4adad192503e93517b09ccc350c770:00110060\n",
+ "Processing image 5485: timestamp=2024-01-25 20:33:37.771958+00:00, observationId=o1:cd4adad192503e93517b09ccc350c770:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Edgewater Beach Dr\\'. There is a street number \\'1300\\' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6485415006938734, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=2041, total_token_count=2155) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031726471d10291da79fbad03c8efb79:ffff005f', 'observationId': 'o1:cd4adad192503e93517b09ccc350c770:00110060', 'geographic_point': 'POINT(-81.9391945971694 28.0595241938085)', 'mapsURL': 'https://maps.google.com/?q=28.059524,-81.939195', 'captureTimestamp': '2024-01-25T20:33:37.771958+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd4adad192503e93517b09ccc350c770%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5195297ae226fd848dacd709e00b38950c4128a390cbefaed725ac610673ca4a89d853c9bad6bdd9402b06ee8a6ec36d8b8b964c2fb336ab16a773700bf4b35e33261a182cbb4838ad5e101bbd6fd4b9d836350329a38f783e4fe7ce38fe4d1eff151710e1b1aed640f101da96c179f2ccfe38eff3459d69ceca21169d3e138636a7f22ba2b3a722cfb9d767eeecb15b7385a413f89e6d6760b7264de6c58bd36713c7e22094c4409de485f4cd659e1028176d3414aae1fdf3792a13ae5b256932fc30bbb6392ffecb71d3a02906aa72c7a792694a1346280c89b023d213de3eb65b4c003249313cd90eb52d7c0471a2ca63f2b4721e4cce6d3d33d0621d2bdf', 'category': 'Street name', 'description': \"A green street name sign indicates 'Edgewater Beach Dr'. There is a street number '1300' on the left. There is also an upside down white yield sign attached to the pole underneath the street name sign. The upside down Yield sign is likely attached to this pole to provide additional support to the street name sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3020.0, \"x\": 2358.0}, \"hi\": {\"y\": 3067.0, \"x\": 2623.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5486: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:31e8b2603a897c49768a98f39e53f715:00110060\n",
+ "Processing image 5486: timestamp=2019-11-06 15:55:43.004157+00:00, observationId=o1:31e8b2603a897c49768a98f39e53f715:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. \",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.37103381437413835, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:31e8b2603a897c49768a98f39e53f715:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2019-11-06T15:55:43.004157+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A31e8b2603a897c49768a98f39e53f715%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8568a333b49d10b6ef072e7b87c069b0f0625ed1503aa33e2b22aef562043d4e83b3d366f51d27cb2f183173844b50d4ad96fe15bad3b8fe0576f4f78f7174513ba06127c92992070503828e00a533b74c1c11b4c94b628f471a33dac958f24bf1da18ee2f1b99cae4d0196f8ca698e9f9df05307204be48439ca67bd281e8de0d007a60e3fd14a9e8b225c7b69fc8317e3706332b1315ca2ced3c306104d75f4eb1fe238ad72b3be656c547f23694e0ae611cb2969e747f4ab490a65d8e049875d6afa3ffdfd9b1be664f82fc4d048a76341d117dc387d2e811050ddb9feb15b51463083156b90072b4f52724e42fd891cd1925d19a04210f259d9713069f88', 'category': 'Other', 'description': 'The image shows a collection of signs indicating directions to Polk Parkway and Florida State Road 570. The signs indicate that 570 is a toll road and provide directional information. ', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2950.0, \"x\": 973.0}, \"hi\": {\"y\": 2995.0, \"x\": 1046.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5487: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060\n",
+ "Processing image 5487: timestamp=2024-01-30 16:46:10.061162+00:00, observationId=o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates directions \\'TO\\' Polk Parkway and Toll 570, along with an arrow showing direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2371234621320452, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2557, total_token_count=2627) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:4bf430c22e30edeb3c7b2e2f7aae4070:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:10.061162+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4bf430c22e30edeb3c7b2e2f7aae4070%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1d89e74936fd7be8a870ec340b4fff2049aaf2328dffa120576f54de76922bef0490a19f213c09fe0a4f6055e76b4972caf5b5504005c49b3e44942568adc3bdf1aa8991324f075e7eaa4ffcef55168ca3b673e21202f136c658595966f82e301b8788399f7449780ba2b90ca1b2ff1ba84faff8e3509404aa5c4241ad749ff00afe187a8a0ccd90cda3d8cd5b29906a3071c708030dfd36cf1ae39887aa2ead2e1785f96488fc1be56008774c7c3e7b5c2df9e6e46066bfafb5d3a0e56a6d173597a2728a2c30aa7cb6944cdd8d9cb322e273f6a95e90dcdb409f93fbaca1d6ec5a296bc4dfd1bcf300d42f3e0e7e7747e6a3a4ee1be43a6b3429c74f4cc267', 'category': 'Street name', 'description': \"The sign indicates directions 'TO' Polk Parkway and Toll 570, along with an arrow showing direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2916.0, \"x\": 1937.0}, \"hi\": {\"y\": 2975.0, \"x\": 2023.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5488: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:8ba34e5500b79863ab643d7ad8917f72:00110060\n",
+ "Processing image 5488: timestamp=2019-01-16 16:26:19.853172+00:00, observationId=o1:8ba34e5500b79863ab643d7ad8917f72:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15561399459838868, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:8ba34e5500b79863ab643d7ad8917f72:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2019-01-16T16:26:19.853172+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ba34e5500b79863ab643d7ad8917f72%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=291d28ffb445f5a7b03542636b69bd0fa71d1e4228a82d83bb44bd9277fecbb1535f57b1172465285c04a2f0f63433da3e53692d3cdb2c5c7f41e9a9869e5b5fc9b7575b68d497afebbe44b5b5eb56c27497094a2706695bea16497289957d2a3b53d5cf69f92c5d2423dedded6bfb397f7628eaff39bbc9ee4581bb280f283fee0bf596580a0e13184d3f1652591acaac3f45cecf20aec3a6f77c627db46daf4192212c72f2327a782cd1dec7d777f8c7768bc6ddb322416f4c153a0044b0a50c51d1b2bc5787a776e29844a4062e60e1b148334d1480b18b1e15523d5d136ef07aa0b127baa454c2773340831035c78f52d4965442f0ac44f655785c761a29', 'category': 'Street name', 'description': 'The sign indicates the direction to Polk Parkway via Toll Road 570, with an arrow indicating the direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2882.0, \"x\": 1022.0}, \"hi\": {\"y\": 2930.0, \"x\": 1102.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5489: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:ee40da5d4156e1cb644da52af749857e:00110060\n",
+ "Processing image 5489: timestamp=2024-01-30 16:46:09.701150+00:00, observationId=o1:ee40da5d4156e1cb644da52af749857e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates directions \\'TO\\' Polk Parkway, a \\'TOLL\\' route, identified as 570, with an arrow pointing straight.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2730316063026329, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2557, total_token_count=2634) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:ee40da5d4156e1cb644da52af749857e:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:09.701150+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee40da5d4156e1cb644da52af749857e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091338Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d52bd941af463a44895c47b55576d9708839521cf6fa041755353071c07e73c79003017e39014ffd20a7eacbbebb6ebc4724de14e97b609b8300520f9711a2611b625bbf9866a71f816d41a14c5f10c3d0b2143121a06794df7e95d026d2a75dd0ce7d52826d94cacc237feb0324f2164bafc54ced7c18e362c3e2eed784cd47491584fe84d022627bac7dcc54bd20cdc9c98ca6b5c78b0379b6987e54cfecc04813c0756a79e1d27973c557d124775d27106f05b4d91038f8514a5aaa86662ddebd59823b2a0e89ec4b5051160b5cfcfb5f4229e349f3b1a6d7266f356a773daee9d70aebf97b23df1919d5cfac359659bc1e0e0b9f9a7e92b4ab4d808edd7', 'category': 'Street name', 'description': \"The sign indicates directions 'TO' Polk Parkway, a 'TOLL' route, identified as 570, with an arrow pointing straight.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2994.0, \"x\": 1562.0}, \"hi\": {\"y\": 3040.0, \"x\": 1634.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5490: trackId=t1:03187a769136be195b8ed3a7e72b6893:ffff005f, observationId=o1:9f98d5374a2cc6393d7628746ae362da:00110060\n",
+ "Processing image 5490: timestamp=2024-01-30 16:46:09.341200+00:00, observationId=o1:9f98d5374a2cc6393d7628746ae362da:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.\",\\n \"image_quality_notes\": \"Image quality is good.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31494151524135044, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03187a769136be195b8ed3a7e72b6893:ffff005f', 'observationId': 'o1:9f98d5374a2cc6393d7628746ae362da:00110060', 'geographic_point': 'POINT(-81.9601458720941 27.9745655182935)', 'mapsURL': 'https://maps.google.com/?q=27.974566,-81.960146', 'captureTimestamp': '2024-01-30T16:46:09.341200+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9f98d5374a2cc6393d7628746ae362da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=587f650d02de6843703c316a0e9ff834f060a9a52d989d8998e6161d4a73f9e21624f7b554b87cf705a580ba6fc54354280cc50d854f2021e830d8e8c47e3825b87cff1179a8180744966c6a0be4c9d9e24b632f2ed796ceed852a521a46ab518079625c43bda5675decc34a0dcb1e50f14dd6e1359cd607b85d184fb287927e8a0525ddc771a5b9485e4ff069e8bef08a3cc3ab6bb5b0d444b5e360e5fa36dbd2af09423837bc5cecd1afdaaed94b536da72f47a2f204764ead72e05f0ad0261e959801e52b060f32104e73694ff145d4e8f7a177f93aeb3c832533431d4327c5d45462e1dbb6083860e84495d00dee37ae3e5016e4926cb77adfd268438770', 'category': 'Street name', 'description': 'This sign indicates directions to Polk Parkway (570). It also specifies that it is a toll road.', 'image_quality_notes': 'Image quality is good.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3015.0, \"x\": 1314.0}, \"hi\": {\"y\": 3055.0, \"x\": 1382.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5491: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:67128c1f53c65807a7e0806027bff0e2:00110060\n",
+ "Processing image 5491: timestamp=2022-06-17 17:18:43.408690+00:00, observationId=o1:67128c1f53c65807a7e0806027bff0e2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two green street name signs are visible. The lower one says \\'Mandalay Rd\\' with \\'1900 W\\' underneath, and the upper one says \\'Arches Dr 50 N\\' or similar.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32588819835496985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=2041, total_token_count=2133) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:67128c1f53c65807a7e0806027bff0e2:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-06-17T17:18:43.408690+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A67128c1f53c65807a7e0806027bff0e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092218Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82140a2b5a05e750499f69dd64055069c84af3dc20838850126fff87af9421a7f9fa3ddf155d42fd84ae36c6ff0ce5a85e0d428849001dd5dc6a9d56083ca117402b59a2d989886633d6dc25beb5537068629fba4800cf669e569532bfacbd807784768c89e965b459e05e4bf9e4adab38fa7090b783f6cea2fcca204d226cd1add0df06eff23df6e92987a414eef8536f55c6931f69afd2ef1ea8c4f7b0aab5d64443d7089ee3a6eec811b98de03a285039584fb7c8d7e1a2f9079c82f9fbc76f016713bdf51daf000d1cfad369ec943cff8a0dc37657664434a83825be6aaf17f11f528df7579ef09ff83610ead9c8a572b4bdf708c4bd65cfd1d29bb6ae70', 'category': 'Street name', 'description': \"Two green street name signs are visible. The lower one says 'Mandalay Rd' with '1900 W' underneath, and the upper one says 'Arches Dr 50 N' or similar.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3196.0, \"x\": 880.0}, \"hi\": {\"y\": 3239.0, \"x\": 1022.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5492: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060\n",
+ "Processing image 5492: timestamp=2022-05-31 16:35:12.442531+00:00, observationId=o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign displays the street names Morton Dr and Mandalay Rd. \",\\n \"image_quality_notes\": \"The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.49144812191233916, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2041, total_token_count=2126) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:0b9c6bf699b41b595062bb34bd9b27d4:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:12.442531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b9c6bf699b41b595062bb34bd9b27d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6de113eea1d08aed25fc40633402de2b1594023cfa9e1749d12fc758285304e30b9e4fb02f10c49ac881da35c0f69a3a8fa439819f1698812810f312f4348be46668196309bd50a5f662a8a19d453610a486febd31d85f932f87495bf3603b298157add5d08bbb46a48c3065c48f4658dbf56cff910522376a155f563f9e58e965cfa9c4ec14301440edcdacc9d1612028ee2bed70fab91f0b5008e79fc4e2514ccf698fa43f812b1f8d16f9590b00ae096b3fbbe2c21cf8fc6fb57343fd9c8351ad8f98029847669a0e1b0925464e5b4fcf93e4132a22009a6d065a22d6a7d20ce28e0ab9cd54f0638bb45124e3e35304e6fcc4ac0bcd30b172d03432e8ddb7', 'category': 'Street name', 'description': 'The sign displays the street names Morton Dr and Mandalay Rd. ', 'image_quality_notes': 'The image quality is slightly poor, making it a little difficult to read the sign clearly. However, the street names can still be identified.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2194.0, \"x\": 3296.0}, \"hi\": {\"y\": 2245.0, \"x\": 3454.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5493: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:e092f3364cb8f9757cf667bec4e4c40d:00110060\n",
+ "Processing image 5493: timestamp=2022-05-31 16:35:11.590638+00:00, observationId=o1:e092f3364cb8f9757cf667bec4e4c40d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two street name signs. The top sign reads \\'Morton Ln\\' and the bottom reads \\'Randafay Rd\\'.\",\\n \"image_quality_notes\": \"Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5181917231133644, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=2041, total_token_count=2135) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:e092f3364cb8f9757cf667bec4e4c40d:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:11.590638+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae092f3364cb8f9757cf667bec4e4c40d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a0b2d7b9256310706b71c8aec06430604c98171e461dcd88306b6094ead2b17a46089979c09eb946d665104e7d358969c064a84ec35c37d38d3b676ea97aeaeebbba7a890d18dfe5cc203a995ae3f6da8ecdc23a0e04a39c44092d0cc229b7a5b37c98777996bb68350ddd4d4d2b946a2a44a1901c6b03ba144a4c02e2dce05158173bf76f9d295f66b609319c790b383c5b58757adbbb1c4bc78de00caab0257c96161c71717144638d4df76b65b90589b837b6f305cdb04521155f7d2946dd9bb0d19e28dbc795d488101776634a235288703bf7ff4e70b414d0358e0fb2d98f9408d37a9dc3ec7ec558b0d269e4b66ff8253ba685391e0165300554aad5b', 'category': 'Street name', 'description': \"The image shows two street name signs. The top sign reads 'Morton Ln' and the bottom reads 'Randafay Rd'.\", 'image_quality_notes': 'Image quality is okay, but there are shadows and partial obscuration that make the signs slightly difficult to read clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3164.0, \"x\": 1009.0}, \"hi\": {\"y\": 3202.0, \"x\": 1129.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5494: trackId=t1:031912264bea15059e8a3ce6795c897a:ffff005f, observationId=o1:317ff257a849e3136f446739b6915505:00110060\n",
+ "Processing image 5494: timestamp=2022-05-31 16:35:12.442531+00:00, observationId=o1:317ff257a849e3136f446739b6915505:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with the names Morton Dr and Mandalay Rd.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.061883594840765, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2041, total_token_count=2105) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031912264bea15059e8a3ce6795c897a:ffff005f', 'observationId': 'o1:317ff257a849e3136f446739b6915505:00110060', 'geographic_point': 'POINT(-111.945655582596 40.7988209044597)', 'mapsURL': 'https://maps.google.com/?q=40.798821,-111.945656', 'captureTimestamp': '2022-05-31T16:35:12.442531+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A317ff257a849e3136f446739b6915505%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5e1cad77ef783f5f59a420219f61b02dfecfd75d709498dab0087fe2bcd060573d80d67f03bce3b4d32c24b08aba45df87dd4cfa5aa80bf91c5438c00aadb57532271074deb6034fc60eb04a62f09893a1d31b6c50a457d87509592bb35c51cd7a20cfbb4f79e1bdb022a8a22c77952e9dae414bdf9b9913c84ced03d58f4a057acf57879f2d5125bc96be4d3b4ba511cbc5bca4fcc9cc6a3320bcb280d6cc6d633aae2003c538c59da0f9e046ee30380fd757f58f0a0de04b84896e1dd21d76ae3508ca6501df8632918ca134c9f275953b53bf5161b3587dae5150b930e63fc5baf1e5ccce9b0d1baec60332c75f355052a830fee3836b6d9fad1977ba6f4a', 'category': 'Street name', 'description': 'The image shows a street name sign with the names Morton Dr and Mandalay Rd.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3071.0, \"x\": 216.0}, \"hi\": {\"y\": 3126.0, \"x\": 383.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5495: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060\n",
+ "Processing image 5495: timestamp=2024-02-16 19:42:36.099082+00:00, observationId=o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a yellow diamond that reads \\'DEAD END\\'.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20337727110264664, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:851d61daf04ee56fb6b67a8bc2d8d582:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:42:36.099082+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A851d61daf04ee56fb6b67a8bc2d8d582%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9aaaae4c8548afd994255123a8ea0152b3940ae6e835e7d6c69a7f16b14abf2407d552dd6fe587bb1b15dfba673a7b3aabf0306697a0d6de1598f862fb4dcb1ef61825b04831cb69fafb58d4acad5c4fdfc0b9b12fd8a0407ed886b5cd85b6777d94fd65c60f271ba9a94633c3f6b48347f3b50ecfecf93f9ba0f0647d3ee6f5bc79ce9eec388b915238815c237136420effce0192f89753204d04bb0f075ff9a033ee3d1541584f0f64e9b6af03941ef1ada7eb12ba6a157b5729f37d16eee98ee933f1d8fe231eb49d7cd8de369f3467ebd7b5a3171a695f5cc53ae801e1f169959cb609ab8d84f3e17f1ccc6c05a572ea7ed9f23583f279a674bfe6ec5395', 'category': 'Other', 'description': \"The sign is a yellow diamond that reads 'DEAD END'.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2903.0, \"x\": 1257.0}, \"hi\": {\"y\": 3299.0, \"x\": 1630.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5496: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060\n",
+ "Processing image 5496: timestamp=2024-02-16 19:43:05.445741+00:00, observationId=o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign that reads \\\\\"DEAD END\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11722292105356852, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=3073, total_token_count=3133) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:45d17ad32f79cb263aab8cb0d369d4ca:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:43:05.445741+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A45d17ad32f79cb263aab8cb0d369d4ca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3b66df92d1ff5cd64e136359666dfa5024319c0d3a9002301e6f5c14d52a1e832e80712c8782c105ba56802aa50f5ed5bf88157a7624e90abe2ce5f8bfee29063ead71bc3d4efba78009717f6575af54bbefa2480bccbe1218b22a14d56e481a4dc6c443031018585a928e04fa19a2408967907fca510c1965840a11880ce5ffdf84fd2c31d8d0c73a65cb04e2bdfab52e57ee0de7da6cb19abbce3cb9a7ceec50b96d7c9b5be2b566a0808b470389e0741a00de169c1e0217043c9e3bbd8e56bb743dc50ba431b568bda2950ce648685882af687164d882e9c2fcc082abef9b173e6ed524a1ea159e7dc03cd0fdce8ce80ec6d4b6076cd24c00a9a71c2575a8', 'category': 'Other', 'description': 'A yellow diamond-shaped sign that reads \"DEAD END\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2942.0, \"x\": 2887.0}, \"hi\": {\"y\": 3336.0, \"x\": 3191.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5497: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:83d34b6c94a56bfd008340a045e720f6:00110060\n",
+ "Processing image 5497: timestamp=2011-05-05 16:56:15.813349+00:00, observationId=o1:83d34b6c94a56bfd008340a045e720f6:00110060\n",
+ " Error processing image 5497: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A83d34b6c94a56bfd008340a045e720f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2b8d09ad2dbe41918ea7fffc25d4e61e08c55f40da541c9abee720f861f10441722380bebc389a769e83be10d10c18b5745583e4c69d8dbeb7c38bc3ca2b79fea772b146d05727450b821b452da304186b502899f497b322d2001cec72e86ab4dd7d19c9ed139d4045618ce8e296968d0164c023c8bc593e515ea04670866eebb1fc6bc368390fae07950e6105958eef86c3cbc32ed4cf44fb20e616212c38b0a45c493eb601837a5bd87eb52fab7f002c60e168f8701ca4ffb247bc35482a5e9511f8f9ea3e78e02c190f16c772fe94e3e2d8f2c82555e5470114f7037cbb3a20bb923337186469c875d212eec1957b08208191c7d11034ca3d9ca5b234e76b\n",
+ "Processing image 5498: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:5247003533c2c8dfebde9a4d133f4093:00110060\n",
+ "Processing image 5498: timestamp=2011-05-05 16:56:37.950214+00:00, observationId=o1:5247003533c2c8dfebde9a4d133f4093:00110060\n",
+ " Error processing image 5498: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5247003533c2c8dfebde9a4d133f4093%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091014Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5a7b00907f8abca8d73d1dd465c072611593a93b5e51470169271e8d2a6c18ded8e941989252c63e62dc348e4a14ed8e92113f16099b4ca359e09c1f92aeb4ab56b223e53d708120e8395d4bedf2cd2c753dc1a25a30a84eebba6d71a513db0fff5df61504f33878101e4294a544103387c51bce102a93a09c8a62ef468e270ad9247dbbca5ed391e968623f9de4e20a5ffacf04721ca22dd247d40b7e717079e9cc1065793633fc101079415c5456b6c1c81b24b9869c9c2fe8efc2c39949dc6bee536e08db7a3cefac8e7640b492a4e84d229d34a3082d710d3656c5dc4bfd413f54c221fe86c1c1f148cb1962ff4f926d375adc50d38f7e711bde28e35a24\n",
+ "Processing image 5499: trackId=t1:031ae56620479ae3704c0668d50c9c95:ffff005f, observationId=o1:28c047b76604ab4b8e8f5acfb08f891e:00110060\n",
+ "Processing image 5499: timestamp=2024-02-16 19:42:37.014657+00:00, observationId=o1:28c047b76604ab4b8e8f5acfb08f891e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond shaped sign with black text that says \\'DEAD END\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09206191047293241, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3589, total_token_count=3650) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ae56620479ae3704c0668d50c9c95:ffff005f', 'observationId': 'o1:28c047b76604ab4b8e8f5acfb08f891e:00110060', 'geographic_point': 'POINT(-81.9532631213521 28.0501786913979)', 'mapsURL': 'https://maps.google.com/?q=28.050179,-81.953263', 'captureTimestamp': '2024-02-16T19:42:37.014657+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28c047b76604ab4b8e8f5acfb08f891e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73dd5f5a2eb9d3d6671123762d09eff82c06c368de2819879d3a49f7bdcca4646b8cbe565a07ac933a3410d05fde6b02f6bbdc131e1c60ade3345a024682a848a891bb26f51ca7b539b97ed0b5b212481063e470d50e1e8adac4f5cc8744645527af4144056c129a77c7ab49dbb81eef6a5a3463a29071a1be49d94f3067e4007837d4bb250985e7959c0cdbfe822771045531ff1e47a32daea38ac097df4e04087f211c80d0b38c82a3969f02e8f6fa59caee1a17b28b35d557e683667ad06fdd76a07414ce297a78e4d8ef4d766c91ea251e2b53dae3941db7b6630465c62b67cf7bd544db001a03d78059c11a417a7d46d3cf8159a5b67873fa73178e93ec', 'category': 'Other', 'description': \"A yellow diamond shaped sign with black text that says 'DEAD END'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2520.0, \"x\": 2818.0}, \"hi\": {\"y\": 3346.0, \"x\": 3333.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5500: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:7b95ba93a6789d75647671b06ecdc539:00110060\n",
+ "Processing image 5500: timestamp=2022-06-23 19:57:09.082178+00:00, observationId=o1:7b95ba93a6789d75647671b06ecdc539:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22332483927408855, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:7b95ba93a6789d75647671b06ecdc539:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-23T19:57:09.082178+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7b95ba93a6789d75647671b06ecdc539%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61e66a7901d88a256faeface1d21689ae3d5234136ef39233848881c79f05c7bb5e340cf7f484783d0fcac9793ea76c6f0e5d747eb8a00b9a294e26622d30befdc6ab83864c708c0b6c316959410a6ee7834ba7a72141560b83545fa190a0ef0758b32207bb67469e2e6a3093198b25860927aaa91b02314520785e172981f4d5c0e60f0e31974f46d0994e6f352d09d83dd176145891a9421db8b89fbe84ffc9394f2be9fcf0bc1c1acdd36eefb2d5587a15010317a0bfc548c819079d30796709a2073cde6ec1d275b23dacc155f05c1d12dcd834d487ee1c84e1fb4a686c5038440d5d323552bd5c2a1aacd5f58c9155cf5139681f57c8ee95d89fdc9c35d', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing. There is also a sign underneath it indicating to turn left.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3255.0, \"x\": 1802.0}, \"hi\": {\"y\": 3281.0, \"x\": 1845.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5501: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:f7960212c5caa156bd97fb08a9393421:00110060\n",
+ "Processing image 5501: timestamp=2022-06-23 16:26:42.021902+00:00, observationId=o1:f7960212c5caa156bd97fb08a9393421:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped sign with a black silhouette of a person walking. There\\'s also an additional sign below it which could indicate it is a temporary crossing.\",\\n \"image_quality_notes\": \"The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5400326522355227, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=493, total_token_count=590) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. '}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. '}\n",
+ "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:f7960212c5caa156bd97fb08a9393421:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-23T16:26:42.021902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7960212c5caa156bd97fb08a9393421%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=861a207192f61d31d3e7853a4365b5c657000d6418fd31433385e555fdbd15e4e507c6f0b65c7e77c1e411bc467eac5dc7478a0b6996189802ac8445b8adbdd242f69d6ec4021392fd315b11bc1fbe48402a215da000c34d91631cb43ef8c6cf24a021e6b7546df30ca7bdc637d4e198f75d5edb0f506f3efa95f522c34b1d20757b1754a684860af47caeb5e7f7df12f8106754ee66f5c00a2ca77c8e6ff8b5f364154c5894fa1edae01fddbc28aba5a5f337979b1c01c111c9eb63a7e7a62b201a2c41d26b2945d2bf0c8f5f84ae1cb53e0865dab29659932f388e68fbf7a21db2254cb1b13cf8b68620abaca81d3091a85602d94b0ed756a443f7e95148e4', 'category': 'Pedestrian Crossing', 'description': \"A yellow diamond-shaped sign with a black silhouette of a person walking. There's also an additional sign below it which could indicate it is a temporary crossing.\", 'image_quality_notes': 'The image quality is fair, the sign is somewhat obscured, but the overall image is acceptable. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3251.0, \"x\": 1836.0}, \"hi\": {\"y\": 3277.0, \"x\": 1881.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5502: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:f7c62e8e8ae483f8467008312efab9f5:00110060\n",
+ "Processing image 5502: timestamp=2022-06-29 17:58:40.996844+00:00, observationId=o1:f7c62e8e8ae483f8467008312efab9f5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the sign details can still be seen.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5295241860782399, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3073, total_token_count=3158) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:f7c62e8e8ae483f8467008312efab9f5:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-06-29T17:58:40.996844+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af7c62e8e8ae483f8467008312efab9f5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a34ee215e957a1acc27c4207876f05ce2d40a872d43f3124cdcfa3001f4f8e9cac1708831cd816fac42f8ecef66256db84bea06c87022ac8029dccf682a4b02835d1fba045503b49749886e098c2143a19ead85c08d6f01dca176bdb43f014a58f895f876e7fb295e3dbdccd8b1e3037d14f3f9ccfe070887c9f11a9f88f71a4004bfd6cf28ad275b9c67fb3a46635c0dca8c1a3688476c6b68ea6c2a65b4313fbe1e641db3240fc85ad628efeb61d55b3253e10bc6b5e74e946e3afa9a19dc2709a8866da2d4958b9420f127fc8495b1f1401b7dc28f2f41347557b681cdc5a533f7367e67f0643ba776972cdfe327c5357f1813667f26c25c505617bc432b9', 'category': 'Pedestrian Crossing', 'description': 'An orange diamond sign with a black pedestrian symbol is visible. There is another sign below it. The sign looks faded.', 'image_quality_notes': 'The image is a bit blurry, but the sign details can still be seen.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2317.0, \"x\": 932.0}, \"hi\": {\"y\": 2390.0, \"x\": 970.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5503: trackId=t1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f, observationId=o1:60217442e77e0d7d62ea75deb005dc09:00110060\n",
+ "Processing image 5503: timestamp=2022-05-18 21:49:10.815573+00:00, observationId=o1:60217442e77e0d7d62ea75deb005dc09:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.\",\\n \"image_quality_notes\": \"The image is reasonably clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17951003925220385, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2041, total_token_count=2115) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031b1542e50c93d65970c3a7e4a25f8b:ffff005f', 'observationId': 'o1:60217442e77e0d7d62ea75deb005dc09:00110060', 'geographic_point': 'POINT(-111.896999837142 40.7640181135955)', 'mapsURL': 'https://maps.google.com/?q=40.764018,-111.897000', 'captureTimestamp': '2022-05-18T21:49:10.815573+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A60217442e77e0d7d62ea75deb005dc09%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=166aad8487d573bcd66c4581331e37f6ced04973f79c434b02c2817c2835245c2008068619d6f42c10bc4e8346c48063b46de3d306013476f65081adf4578ab00345daac77d867bd02bf4a21a07d101ae45e7be5b3db4b3069f3a14cf83b8e1caa97622a1c02210e1eb0eb8e1240b1b2dd26430f6223ed06e57a0fcd43e993fc566024cc919f328d6d6aa41999eaacb2dd35d6bc9451586cd2f0dfca10264955f46e4fa882ed6371c348fb8c6223aee45c244e82d31500ac5b1dc095c56edc1e8653b23c144b2518b3a6d2d94ef8048c85410a9e3a2caa676753c836bd612967a221d1685989259bf018c52e0519d3262500c7191e6d97568dfeb535b2e96307', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped pedestrian crossing sign is visible, along with a smaller sign indicating the direction of the crosswalk.', 'image_quality_notes': 'The image is reasonably clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3243.0, \"x\": 2756.0}, \"hi\": {\"y\": 3300.0, \"x\": 2822.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5504: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:681dfa8e39de747284e795451ae12b65:00110060\n",
+ "Processing image 5504: timestamp=2022-11-10 23:26:11.908867+00:00, observationId=o1:681dfa8e39de747284e795451ae12b65:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with a white stripe. It is sitting in a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1639501480829148, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2041, total_token_count=2104) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:681dfa8e39de747284e795451ae12b65:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:11.908867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A681dfa8e39de747284e795451ae12b65%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=89b4fe6d35f1bdbf7166b832c9286cb882409ef0f18cccbb2b15899d3170f78d81c9bf901c01371bd2d4e750bddd13edb949c9a3e4bfb400e3cd105a38932db173974bc4b4333a0ccddae1353e8cb1f9ca55be726f12711b3799ed414759e8538bd8c906ecbd2283e64d469f9d5d96c26d4deaa4700eaa63af83d4cd739e98719420d6d4509db83eb7aedaded698388822295cbfafa2a31c271776409ba91f2a0ffcfbae77da65cf5a7bae150bdb7cd5c67f6bf98896245ff82187a46dc16b12975ecd51b0ed3bc4130f5917b6bceae9c08b1f7db2ceae5ef05613db026cacfea5b60ce9618d628e700cfb735134b2233fbb53674bbefc46cdbec9bf0d81ed43', 'category': 'Other', 'description': 'An orange traffic cone with a white stripe. It is sitting in a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2711.0, \"x\": 1811.0}, \"hi\": {\"y\": 3031.0, \"x\": 1871.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5505: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060\n",
+ "Processing image 5505: timestamp=2022-11-10 23:26:10.016835+00:00, observationId=o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21247810930819125, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2041, total_token_count=2115) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:3c81f736a8abdbf1a1af5b9efc61250b:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:10.016835+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3c81f736a8abdbf1a1af5b9efc61250b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=82caaac57edcb2c24f389ea317b34f3b01285c4118705868a32b4dc0f4669aae64c8f8c7107a583eab4903107208393d70da7401024fe0774d4fd715797f0370958d2a38e3b8e250aad6e19fe6acd59ce83b64298671814f13ef1a5989dfc96fc9555c70eddc30fe27fc9bd690599b79b8117efc986eb04c7b818069de70a96491601648418408cdcdb3938024db38536767d3a8b3f7093bad37d4dd463c534b3f010ec979c39bfd89e6eb78f3621d32fb95798937770b8b3ca233d209eb911f893e0d0bb98d6e2da026a61b8b6139df69ded2a1214c5e39aa3cfd870ed5a3b6abd36ff1073cd8c8eb82d3aec91cd922119153854c86677f497c5292cdb733cd', 'category': 'Other', 'description': 'The image shows a bright orange traffic cone with white reflective stripes. This type of cone is often used for temporary traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2685.0, \"x\": 1102.0}, \"hi\": {\"y\": 3031.0, \"x\": 1159.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5506: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:cb90021de777abbb209c1f79b1c68062:00110060\n",
+ "Processing image 5506: timestamp=2022-11-10 23:26:07.932988+00:00, observationId=o1:cb90021de777abbb209c1f79b1c68062:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22055630317101113, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:cb90021de777abbb209c1f79b1c68062:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-10T23:26:07.932988+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acb90021de777abbb209c1f79b1c68062%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4fe3a3bc2ba8f041cd63f527152de3cac31da599782a27b3049b00baa66f2bf70b0ef6d7e35d13cd44ac17663fd0c76854b78b6a579fa65b20b1757b4c820d03de2b0beafa3ed598230a9773670a4cd38eb9b07dadf956c018cbb1d0b6aa8d34f05e999a874047cd06d9467e6ce0d06c119009f0295dc7d8ad8b6117e166978994a095abf754aec57f55f7107a909ad4b4fc4836e17cf2f64321bd9e46bb499e332c9950c3a4deec97673f1d315f39daa3413ae985cb3c41e57bacd37bdca25ba300f54e4de3fb2a00ec7b1e1465db735a4fcda5f72fe090ad45ae16e99ae2429ec4b8467bd38f25ea1c45fb4c1f4feb45ab34e56609e5c524a6f2877b18ec46', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective strips. This is used to redirect traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2697.0, \"x\": 950.0}, \"hi\": {\"y\": 3030.0, \"x\": 1032.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5507: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:eca0148da08f93456a7c47b0e0b5f650:00110060\n",
+ "Processing image 5507: timestamp=2022-11-09 23:43:13.539295+00:00, observationId=o1:eca0148da08f93456a7c47b0e0b5f650:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1680365668402778, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=54, prompt_token_count=2041, total_token_count=2095) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:eca0148da08f93456a7c47b0e0b5f650:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-09T23:43:13.539295+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeca0148da08f93456a7c47b0e0b5f650%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=19144b72a9e983bf1831badc6d5910059cda87909ce1ab7d790eaf03a637af88118bc654573699e69abfeae6068ae162612c87fdca22dc215c3945cf8a57baea17ce1d83a37f9513adea5e3eaae0a9ac353204c0b5ea8714e7962fb50fdd79adb9c20a4318b847425230fa00120b61ccb32884d0db069730a74ff9b485fe8137b45f62b2f164501b8e814a26298792ca89ada1f940f863607569bb9683937df1141f183b6dd805de32589ec259c85212b222b5f8e42363e9a11463bad207a386969e44fe7a0776392bbdb6baa2b6597364745741738981f418da14cd69ea6546f5647340117f934cdb42020c0d912da072ec912d58f1934ad40db39d22061082', 'category': 'Other', 'description': 'Orange traffic cone with white reflective stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2690.0, \"x\": 759.0}, \"hi\": {\"y\": 3023.0, \"x\": 821.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5508: trackId=t1:031ca3a3d1519ef3de6f521f85694c08:ffff005f, observationId=o1:eba501aa27c46f44b58498e968481a1b:00110060\n",
+ "Processing image 5508: timestamp=2022-11-14 23:10:32.675302+00:00, observationId=o1:eba501aa27c46f44b58498e968481a1b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone, placed on a black base, is in the middle of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25433692932128904, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ca3a3d1519ef3de6f521f85694c08:ffff005f', 'observationId': 'o1:eba501aa27c46f44b58498e968481a1b:00110060', 'geographic_point': 'POINT(-111.900132174793 40.741427703998)', 'mapsURL': 'https://maps.google.com/?q=40.741428,-111.900132', 'captureTimestamp': '2022-11-14T23:10:32.675302+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeba501aa27c46f44b58498e968481a1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=80ec7b3e400d470e41eebd01e899129252b3ccd647a743661d7292745536219c78ce8be8e8f231f42f70aaa5e5c7b9d1ca16a37c85c3f7927e8c871a245c680ffc2c523f9ce7ffdeb86568126f4c1f276e80b433fd2db96c7e41ce6bffdbcf813f9f8bd74e9267c0fd0d85de329987ad95bdbcce64c140b61f9a805bcf394aa9a035ea032a7c826eda4d52581a7ec3da637402dba1733d83f657dfa746079166515428c6fad63e267bcbb5172d9ecc081106baf66d1437a1b85691230b9b698b678f7ffbdc9d9cb429bd8f364533e53f288529b2dc482d2940af08e43337bd1d084111c33000468c498c2ba5e2ee3a4a3791f4c4a378766336a9741e065996da', 'category': 'Other', 'description': 'An orange traffic cone, placed on a black base, is in the middle of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2744.0, \"x\": 1866.0}, \"hi\": {\"y\": 3133.0, \"x\": 1922.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5509: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:bcb358d30afe98165e9a8ed740d959cf:00110060\n",
+ "Processing image 5509: timestamp=2019-06-04 21:35:53.768778+00:00, observationId=o1:bcb358d30afe98165e9a8ed740d959cf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \\\\\"500 West Street Commons are closed to the public from dusk until dawn\\\\\". Another sign contains restrictions against certain activities\",\\n \"image_quality_notes\": \"Image quality is ok, though zoomed out, detail can be extracted\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5662267421319233, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=123, prompt_token_count=2557, total_token_count=2680) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted'}\n",
+ "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:bcb358d30afe98165e9a8ed740d959cf:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T21:35:53.768778+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abcb358d30afe98165e9a8ed740d959cf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67dabe3e471e7e1c1d6b0c02b431aefd2396e503e8aad416ea3b71b4eb6280b21d908c2c89b89d15486fedb1d6c565736d11a7e6f67efea56234b00d3124f4213dafb8903089e46a8d3535dec439d347aa5e580a8132a3ab4f01f970fd8ce41fa1203500d3d85be48b9eb0e3e93413f55c138141227e795b0dd4c0060b30123b318ae3abc560dc2ef7750220d19de15fb79c485a9c1d63202a77712d814adb08e928749c895ae67bf170e73051f4dfea089aebe3ee68479307394e49b0ca11d98c61aa59280d2e857faa57401c95b448420e0f51571dcbf23625636e84a1c8dea0c8fee4ad477d990477bb8231e4c019535f482dfe99ca92b903cb6bed8aaf82', 'category': 'No Parking', 'description': 'The image shows a combination of signs. The top sign is a No Parking sign, indicated by a red circle with a line through the letter \\'P\\'. There\\'s also a sign that says \"500 West Street Commons are closed to the public from dusk until dawn\". Another sign contains restrictions against certain activities', 'image_quality_notes': 'Image quality is ok, though zoomed out, detail can be extracted', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2214.0, \"x\": 1938.0}, \"hi\": {\"y\": 2359.0, \"x\": 1987.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5510: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:568ce4fe06b04271161ca07c2727ecdf:00110060\n",
+ "Processing image 5510: timestamp=2019-06-04 21:35:53.052854+00:00, observationId=o1:568ce4fe06b04271161ca07c2727ecdf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The top sign shows a \\\\\"no parking\\\\\" symbol (a P inside a red circle with a slash). The middle sign states \\\\\"500 West Street Commons are closed to the public from dusk until dawn\\\\\". The bottom sign states \\\\\"No camping, lodging, cooking...\\\\\" and is also written in spanish. \",\\n \"image_quality_notes\": \"The image is somewhat grainy, but the signs are legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38351370493570963, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=120, prompt_token_count=2557, total_token_count=2677) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:568ce4fe06b04271161ca07c2727ecdf:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T21:35:53.052854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A568ce4fe06b04271161ca07c2727ecdf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=912e2fc845ad9b65d011adc2720bdb980d333452f94d3a02a58e4c9fae687e25d89e53b9d4e2fcedb0d7f2258b8e6f1cc42760acffca53052b4a994d6fb49377ec2b72b6f2aa3fc082448d072d650875209080b76f0a86bc33fd36afdeb998d470ded382f352bbd2ea93f6bfcfd604a59df99357ae7a2661bbaa2842422fd620612d1c295a1086af9cb2da6b2cac0b87371b13540e04f0ae966612289420b0e42744a887d83a2058fc5d3d7d261ae2731cbb8df0563c79318c4da948ddd0eaafe4409f6a41ff9b66c6c5b29e0267cd92f9d0849e235193ec887479a19ffc23fd3a332b4bfd458e7a216b52f14512546fa07e7f36ecf88bbe42c921f1906e1abc', 'category': 'No Parking', 'description': 'The top sign shows a \"no parking\" symbol (a P inside a red circle with a slash). The middle sign states \"500 West Street Commons are closed to the public from dusk until dawn\". The bottom sign states \"No camping, lodging, cooking...\" and is also written in spanish. ', 'image_quality_notes': 'The image is somewhat grainy, but the signs are legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2266.0, \"x\": 3369.0}, \"hi\": {\"y\": 2401.0, \"x\": 3438.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5511: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:b5dde438963a11a7b92a3392042700fe:00110060\n",
+ "Processing image 5511: timestamp=2019-06-04 19:57:46.659132+00:00, observationId=o1:b5dde438963a11a7b92a3392042700fe:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5000316720259818, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=2041, total_token_count=2117) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:b5dde438963a11a7b92a3392042700fe:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2019-06-04T19:57:46.659132+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab5dde438963a11a7b92a3392042700fe%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=695132b6e42cfbd3b2117d2d37f8635aa2611162a07c49ee840a7295ee870c7e955ff29617be5334bf66d9fb41dd05c4d09749b5a0eb19bba04821a4a0bc01876155eb7e24c3ab3c09ff345e678de363179ed2baeb4a800bbc169f38cc6236cd40cd2730af0abf5635174a7d821b65b61eb4a93fddfbb60f971d7e80441978dceed4c0e6d2dcb1c90206687d733355f93c50c79985df229997fff89195dec80fc932fb1225e88615536a59b244941e9d29e0c1a531c35435ab7e4b5a2e74bf6ce2b55715da6e38ba9673991b34f799078157724511cf00a06169e312f5d8d75043f0c9c3d94bba6573d9dd86ca9b301fed4c57f5ba6b681bbc5124ddee0c910c', 'category': 'No Parking', 'description': 'The topmost sign indicates no parking with a crossed-out P, and arrows showing this applies to traffic from the left and from the right.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3173.0, \"x\": 2934.0}, \"hi\": {\"y\": 3269.0, \"x\": 2995.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5512: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:e229037fccc2c7e2b14fc7bea64235f8:00110060\n",
+ "Processing image 5512: timestamp=2022-06-01 17:18:29.504938+00:00, observationId=o1:e229037fccc2c7e2b14fc7bea64235f8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a no parking sign with a \\'P\\' crossed out. There are also supplementary signs providing additional information about the area\\'s rules and restrictions, including closing times and prohibited activities.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.39970601991165516, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=2557, total_token_count=2643) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:e229037fccc2c7e2b14fc7bea64235f8:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2022-06-01T17:18:29.504938+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae229037fccc2c7e2b14fc7bea64235f8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7c0b27c1f05fcf4220476dedd5267ecf09a3bebe30e1f3898622159c8cb572f312f35886ce53d8779513578287929fbd226b112f12cf3b62c59acf4c4053d702eeb43a6569674ef0de2217c3c5c6d9a455784405079c70dec6f94436378246012e071a63d80df401212d21ae253c8f794c609c449e1440c0ea71e3ea20c218fd4539d5d5e9237d30a18bce21852a1f4a68d1c81faf5a6892f6ab4fefa7e5694f4a0144f7ac0841500bcde620bd80b268fe2b23acdf59bc2318832fa88856c5c9c6bf6b6b22d169c8785977a47c6111f5b1c9c64bea5d1bd67339a8ada178caaad9e91a63a85cf7a270e7805077c7b620a74254ce6f0b7e65f522b9ba3175597e', 'category': 'No Parking', 'description': \"The image shows a no parking sign with a 'P' crossed out. There are also supplementary signs providing additional information about the area's rules and restrictions, including closing times and prohibited activities.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 789.0}, \"hi\": {\"y\": 3298.0, \"x\": 852.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5513: trackId=t1:031d4299160939f875350b5d028bde16:ffff005f, observationId=o1:ebbc97f5d8498814d64a590e7fc6251f:00110060\n",
+ "Processing image 5513: timestamp=2022-06-01 17:18:30.800903+00:00, observationId=o1:ebbc97f5d8498814d64a590e7fc6251f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign with a \\'P\\' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\",\\n \"image_quality_notes\": \"The signs have a high resolution.\",\\n \"other_signs\": [\\n {\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a stop sign to the right\",\\n \"image_quality_notes\": \"The signs have a high resolution.\"\\n }\\n ]\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3744292198857175, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=158, prompt_token_count=2557, total_token_count=2715) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'other_signs': [{'category': 'Stop', 'sign_quality': 'Good', 'description': 'There is a stop sign to the right', 'image_quality_notes': 'The signs have a high resolution.'}]}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'other_signs': [{'category': 'Stop', 'sign_quality': 'Good', 'description': 'There is a stop sign to the right', 'image_quality_notes': 'The signs have a high resolution.'}]}\n",
+ "image_report to be inserted: {'trackId': 't1:031d4299160939f875350b5d028bde16:ffff005f', 'observationId': 'o1:ebbc97f5d8498814d64a590e7fc6251f:00110060', 'geographic_point': 'POINT(-111.905377961589 40.7691228881939)', 'mapsURL': 'https://maps.google.com/?q=40.769123,-111.905378', 'captureTimestamp': '2022-06-01T17:18:30.800903+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aebbc97f5d8498814d64a590e7fc6251f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=016d903a729176244641b8f35d9736b43bb1b3ed111e32ea9f1267c2e4f01a6d8af1a7e0cab82aab96fd62a2d1328aa2ed5f31107990d719604f3d570406dd3661d8b89e293ee4fa8887cb31ea65c483034da7517db3593a73a6abb6e68f84847da4e7f1a13d048d9d06dc1fbf00e75f52fca45e284e17f95dd6b0d65e22319685f8c545d99694d7b284586bf4c52fed43a75f6977c941019a515de0be9f21769bbbe0a069bdc02632cca019760059dc2ded17909be78ef6998f5eeb89249f1ff3c9b31bb49aadb38af476efcba171164517d6fef51135a38ee0941663da74e44784cd0ab569f8846893b4f2df896f773578eb029bcbcbb8d474b2759c6da6df', 'category': 'No Parking', 'description': \"The image shows a sign with a 'P' in a red circle with a line through it, with an arrow below it. This indicates a no-parking zone for the area indicated by the arrow.\", 'image_quality_notes': 'The signs have a high resolution.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2242.0, \"x\": 1419.0}, \"hi\": {\"y\": 2370.0, \"x\": 1454.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5514: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:3e264802e3d94a2401b665462bbd3f70:00110060\n",
+ "Processing image 5514: timestamp=2021-05-06 21:04:38.113876+00:00, observationId=o1:3e264802e3d94a2401b665462bbd3f70:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24896561015735974, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:3e264802e3d94a2401b665462bbd3f70:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:38.113876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e264802e3d94a2401b665462bbd3f70%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=36faa031a37cf574ef6cdc3609df48b5acd6b06d1bd0d2e153136636674755ed74569a5bd1af231c3a22f92de58823bd1f2873bc1e82101ce17876649d15a79f3df22d9388d91530b9a2bbcfc2fb7a22c34de1c34c931628fffbc6b7a126fbb8ae51edca564b82c67fb1db738b167b10d11c5955499635c1cb7ea7ac363a046fa035f64383db255b22c46dbe340f54abc736c6cde33b1a7310c55d7392448f688ac29772580ca3875d4250070e6d40ddd201513d1b14ff069d781063627a71c12aa43225439a1f0668ac74865c6de7a6fcf7075496a77786444b948912a3332298963fc0a45fede41a074e463bfe022ee0f106a0f6fdb069695ff0cae1e8c715', 'category': 'Other', 'description': 'The image shows several orange and white striped traffic cones. These cones typically indicate construction or road work.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2511.0, \"x\": 354.0}, \"hi\": {\"y\": 2646.0, \"x\": 386.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5515: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060\n",
+ "Processing image 5515: timestamp=2021-05-06 21:04:40.973854+00:00, observationId=o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a construction traffic cone with white and orange stripes. It is a warning device.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3111141498272236, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:520d8c2f64306fc7da31aef6d0baa9e2:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:40.973854+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A520d8c2f64306fc7da31aef6d0baa9e2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a1cd5562643422daeb5a43d05d2821cd5690699931a7e6e26d589556b44cf9469fe563b999ce461bd1f210dfed0dafd91531df82cf2c9d12132eb4b79c580727592c372c4f015b5ab4159cabb146afa278bf31f7e43bee627760ae31715e62dc15f1f6193658715f65f23076a99be1b50ae3a36e1b19a2930cf781d803b0f39db9e3e069893bba52a71b57004599bb9e3b901f79aeca878d1a5f2783523c4e80ffe9a5c7139b068dd2f3d0f9a8fa7c62fae93b35ab20bccfc41f26cccd061ca55c55d0613482a3565d6c5c4a28aea1caab59aa2b4ae66d436aa045054d8fdb36714da48d7dac9048797ab1b0a01f0c2a19f9b5b1f29422c2ed4b2fed7e0a9dc', 'category': 'Other', 'description': 'The image shows a construction traffic cone with white and orange stripes. It is a warning device.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3386.0, \"x\": 1295.0}, \"hi\": {\"y\": 3531.0, \"x\": 1339.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5516: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:c684b4170c13b85c4639ce033c5af47c:00110060\n",
+ "Processing image 5516: timestamp=2021-05-06 21:04:38.113876+00:00, observationId=o1:c684b4170c13b85c4639ce033c5af47c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the objects are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2641092852542275, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:c684b4170c13b85c4639ce033c5af47c:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:38.113876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac684b4170c13b85c4639ce033c5af47c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9bbbaeb154ba201392d9a002754cf973efa2470c7af9daed76699b9e0ceeb8c88360f8d15d8389c514afc250b41ddf75bb19eee9f6d7ca6a5e24f9271b4a119b500a995dbf470240dfb73cc39252280a7f735f910923e50d615991c9c1b1da6501dd0404032d1f8f78a2a5742c383dc05e3d8997f0803efd37cc92a79a768f160121f0a90f17635926e67157117dfc2e918c0a8fd74a10c17f1c86cea76ec4155c53cb4cc08bbb3b2b022076454f891a6f343679e2851520a7d5954688c943d52cd91369370193fda721873b78cc58b37dd612c3dda7a03cc840ce4081dbd4040fee194e12c97fe6cf5e5f02be969daae6f2f20d221f8904e6b4c6ac33eb8d8a', 'category': 'Other', 'description': 'The image shows orange and white striped traffic cones. These are generally used for temporary traffic management and hazard marking.', 'image_quality_notes': 'The image is somewhat blurry, but the objects are identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3389.0, \"x\": 3423.0}, \"hi\": {\"y\": 3525.0, \"x\": 3453.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5517: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060\n",
+ "Processing image 5517: timestamp=2021-05-06 21:04:40.333891+00:00, observationId=o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange and white striped traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11047308399992169, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=493, total_token_count=546) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:e88f695b6b1fa5f7f2d29f2946f48541:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:40.333891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae88f695b6b1fa5f7f2d29f2946f48541%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092718Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=144c8f539d4370d8d9d19e330ae7ea40c11264fbaef8dba73d5e22fd18d7cbe3fa5e2a45981c1e06c92aa244e09b86b00756187cdfbdbd78b053181205d8ab6bd367a3d16164633160ae64354a0eef4d34827f2804522e2d315a8fb6e8893ea5ffdcd08bfff8578aea8d4a4431b77285a0eb98ccc14f1112563d360d9f419b9988ab1e7b8324997741b5b0225a9ae909f8dc429a96a8788d0d6f4998fff39ba822fe993e9ebecae7faa1453143fc57f1dc986e33dd7089f5fc8e70540e84e03a277a5eaba00b3b9f31650795623171a7d8f5e04e55890548c5452ef72f0fe9306893253f1ac437975c55a56e947046cf38adb18084a025c3cee41604cac0b119', 'category': 'Other', 'description': 'Orange and white striped traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3441.0, \"x\": 1573.0}, \"hi\": {\"y\": 3621.0, \"x\": 1624.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5518: trackId=t1:031e3c4d23bd12959f08301079665d2a:ffff005f, observationId=o1:73686145b56cdfefec124e30d9949111:00110060\n",
+ "Processing image 5518: timestamp=2021-05-06 21:04:41.581933+00:00, observationId=o1:73686145b56cdfefec124e30d9949111:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29229505134351325, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031e3c4d23bd12959f08301079665d2a:ffff005f', 'observationId': 'o1:73686145b56cdfefec124e30d9949111:00110060', 'geographic_point': 'POINT(-111.914055909938 40.7497439313716)', 'mapsURL': 'https://maps.google.com/?q=40.749744,-111.914056', 'captureTimestamp': '2021-05-06T21:04:41.581933+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73686145b56cdfefec124e30d9949111%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b09bf6c6f6a03be6e562efb2d94d41be74a63ee708ff0c8e80ed9e44139a881a076f840e54ac9ee8a26cf1a68fb6daabdd2ffdd190dd2698c2e42ba9b1dadb6ebf175cb1ac135d508febe9a959a7e60a99419de8629646c37a2271060c9528608191b25ff206d0726972866ea200b39efb17cd94713602cc2341e6e162ab83e862617b198ddf29fd66cfe6fb4ac281c1aa7ba3e6e689c6fd819a0d6a2ddd6c441dc5ebe73f1704a275f46821dd6c21dda3f86c5ddb72bc0a3828419e5b6b34bce9bc1695bcf3a45fc76dcdd559d125b274ccbd0c2a505358fed9a32186f818596fea2b25c44fdf3ab887084a5a53d76f6d40b348c00ec58fb803c216f1f2f8a4', 'category': 'Other', 'description': 'Traffic barriers and channelizing devices (striped cones) are visible, indicating road work or construction zone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3358.0, \"x\": 1114.0}, \"hi\": {\"y\": 3474.0, \"x\": 1150.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5519: trackId=t1:031ee910c2dca3306fa094808e502721:ffff005f, observationId=o1:97c5d8304e0f3e76b9d25730732c59be:00110060\n",
+ "Processing image 5519: timestamp=2022-06-16 17:33:53.327130+00:00, observationId=o1:97c5d8304e0f3e76b9d25730732c59be:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two green street name signs. The upper sign reads \\\\\"11th AVE 550 N\\\\\" and the lower one reads \\\\\"1 ST 680 E\\\\\", indicating a street intersection in Salt Lake City.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22736782723284782, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=2557, total_token_count=2651) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031ee910c2dca3306fa094808e502721:ffff005f', 'observationId': 'o1:97c5d8304e0f3e76b9d25730732c59be:00110060', 'geographic_point': 'POINT(-111.871481096179 40.7820102953996)', 'mapsURL': 'https://maps.google.com/?q=40.782010,-111.871481', 'captureTimestamp': '2022-06-16T17:33:53.327130+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A97c5d8304e0f3e76b9d25730732c59be%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=81c068cea077be054aeb1a9f1bb6fba99f1ab8672f43a562952a638b14a1be47b09e71a920e4a655abbe827b1a2f7902d1ecafe1e94d697941f0bcc4edfb61d9ff02753a18f1ed96e42f9bf5ce29a8198920c24917923954a1e4e122a0bfc2af38cd39ec348798068f6aa9c426a9194411a510388ecdec76d26f450652098c804d2d16ef5704f06ef873f51891026578d79af9194660e6fd17177237a81ecae2cd57ba818ba4b304b679b958fcb58073244210a3717116c26c3ee6d86f5732bf6ba51fc3d87e29e3fa2ed7f8b995471d50d35d6d6b03329707fbcf2e353a03c35b8a33e7e6f3bb2f158f046998366297e067771c04a312d25c53321ea2a6730f', 'category': 'Street name', 'description': 'The image shows two green street name signs. The upper sign reads \"11th AVE 550 N\" and the lower one reads \"1 ST 680 E\", indicating a street intersection in Salt Lake City.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1916.0, \"x\": 3060.0}, \"hi\": {\"y\": 2038.0, \"x\": 3386.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5520: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:0d041396d96bd429debf5041e69044eb:00110060\n",
+ "Processing image 5520: timestamp=2024-01-24 17:32:50.328924+00:00, observationId=o1:0d041396d96bd429debf5041e69044eb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign says \\'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited\\'. It appears to be a prohibition sign for certain types of vehicles or users.\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the text on the sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2737287621749075, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=3073, total_token_count=3168) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:0d041396d96bd429debf5041e69044eb:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.328924+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d041396d96bd429debf5041e69044eb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=46191b7690e0dfd9f668859d5bc2708813c5a669b7705d541b7121fc9bf6e0daa6afbe5f8d7c16773401ded78bd87e4ff41852e76d6aae1d79f450b547cfa28342b57afe97c2b2bbee8c6f064ea17a5d72aede950523b76a7629e9f8103f01af48267c35092d51faa0d812856ba3f5e1cf4369a26b7fe2d80d28d5a70748ee52d178306a1235634fa1b28f458b5bffd8bc7de7cda2d68fc34afe5f576570ecd7bd8f744b6016eb77b2c3f8a84fc0b097bc2b910fa059bb5f20b8970f40d3c2504150f087f64c94ec6d1eaba27fe6df565b90d825b30a96f99ac5efecfa164f997981ef64596cd098a6f4de32654b96d1b14e672f9ac8775162213d99357a194b', 'category': 'Other', 'description': \"The sign says 'Pedestrians, Bicycles, Motor Vehicles less than 5 BHP, Prohibited'. It appears to be a prohibition sign for certain types of vehicles or users.\", 'image_quality_notes': 'The image is a bit blurry, but the text on the sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3085.0, \"x\": 3375.0}, \"hi\": {\"y\": 3277.0, \"x\": 3453.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5521: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:e2e95553cd58c1a222b8633784d40988:00110060\n",
+ "Processing image 5521: timestamp=2024-01-24 17:32:50.328924+00:00, observationId=o1:e2e95553cd58c1a222b8633784d40988:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign stating \\'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED\\'\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15477224806664694, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:e2e95553cd58c1a222b8633784d40988:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.328924+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2e95553cd58c1a222b8633784d40988%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091141Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8a339fc597783a2d03f25554d49b7a71326de144addec286a9cf2edbe18a2a03ae0f9be39738580de494bee45e0feec01b6721e89cb1a10fc0e86a3fb0be21522a195c1f5ef07ffa4635497f57367be98584c399e9ac81278d4e5ecd8e2ee00a90af6fe2bb4647c2f1de09d145e6ce703640f4ec2bd140e65d8007d67e39d71c1fd9cefcfd7c8da0da1a8441f87b26665d73ab7f4fd85873fbee94ebb4dc9b0b30211e6e1aed697fa53601ecc332065cf5cc978d9445e1192c3320b67ddd4abeae38f23d59f861d12961643ac813c2f9c4a24d0920588eab55b5be6de9e1d9a9b3696e980b90c8470f561300ec7ffdabacc67d610333f9ac4051f89a1c487186', 'category': 'Other', 'description': \"A rectangular sign stating 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP PROHIBITED'\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2211.0, \"x\": 324.0}, \"hi\": {\"y\": 2404.0, \"x\": 403.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5522: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:efa0b83c12a2d0774e36262cd54395fd:00110060\n",
+ "Processing image 5522: timestamp=2024-01-24 17:32:50.948881+00:00, observationId=o1:efa0b83c12a2d0774e36262cd54395fd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign states \\'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED\\'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19213235257851957, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2557, total_token_count=2656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:efa0b83c12a2d0774e36262cd54395fd:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2024-01-24T17:32:50.948881+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aefa0b83c12a2d0774e36262cd54395fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=67f288f2570cecf1409f84d5ff46572d7dae9ac98649ce4013a7f0020f52bee5fc1bdcc5e5d419f9224109f9fed6ba72148a88264a34878ebff4c17be681c396e651b892d165f0261bbad8cf907522eae13d64c0bde4fe63abdd346a534fd320cd5bdfe3f9a6af0bf42e6322787ab36a23fd75e3f008e1ad9723ca6e904a38b4cbd35725833d52c0273f957092704c40ea9ae55b92f76c7604cd1ad41333f88373e2feafa2f4f6ec72208707b45416230f79ffc9bfd5511763626a0c44e8c237cdc7189b59fa9035287c521129bca6aefda11e873bb1c26dffd06cc3eb86f708f38a4bfd629d3b1a942057c20e103c8e1d04e9ec8b7dd8d8302fa8195c408410', 'category': 'Other', 'description': \"The sign states 'PEDESTRIANS, BICYCLES, MOTOR VEHICLES LESS THAN 5 BHP, PROHIBITED'. This indicates that pedestrians, bicycles and motor vehicles less than 5 BHP are prohibited from using the path or road where the sign is located.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3138.0, \"x\": 2517.0}, \"hi\": {\"y\": 3294.0, \"x\": 2615.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5523: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:3a4555b802f6aeefcbd1550f172688b6:00110060\n",
+ "Processing image 5523: timestamp=2021-02-04 15:42:45.268601+00:00, observationId=o1:3a4555b802f6aeefcbd1550f172688b6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.04097314614516038, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:3a4555b802f6aeefcbd1550f172688b6:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2021-02-04T15:42:45.268601+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3a4555b802f6aeefcbd1550f172688b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8c192f28e113f95a36643bdd66f95b754e70c0922ad19cb67fa2970f3f9b7ce326bc5a45d6a4b2c19e4127c89097ea081909b4b687cded0be164332ebcd1e6915a264ec8dc4b120da6c0cdae6aac60c3a4c2fb89e0af51aec212e2c48d08e8262b1ff863d00a6c72072bcad52d2f7ba08798d25ec0745f7a1fcda27a1c2a367acf33d261b5856714e26314ffd76bd2c56db351c0322e3fe50297ed9e86a2536555ba0f2c12465b840e7a6c6135766611593d2e64627064c6556af3a3b8a0acf7890021e0d8aba4c59cfa6529b356ee616c86ddcb1fea7180a4bcb364b912cc5d3e8251201fb129d10c05b064dd604f50430b3ad3a26e0ffff5e173778fadbfa1', 'category': 'Other', 'description': 'The sign indicates that pedestrians, bicycles, and motor vehicles less than 5 BHP are prohibited.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3032.0, \"x\": 2504.0}, \"hi\": {\"y\": 3301.0, \"x\": 2694.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5524: trackId=t1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f, observationId=o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060\n",
+ "Processing image 5524: timestamp=2021-02-04 15:42:44.296659+00:00, observationId=o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The sign is blurry and it\\'s hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\",\\n \"image_quality_notes\": \"The image is blurry, making it difficult to determine the exact type of sign. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5734641033670177, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=3589, total_token_count=3681) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Poor', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. '}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Poor', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. '}\n",
+ "image_report to be inserted: {'trackId': 't1:031eff93b3e17dff0a9ae5eb6dccb195:ffff005f', 'observationId': 'o1:74e0e9ef6cdc215696fe12b6f42206bd:00110060', 'geographic_point': 'POINT(-82.0395510124214 28.0291300566832)', 'mapsURL': 'https://maps.google.com/?q=28.029130,-82.039551', 'captureTimestamp': '2021-02-04T15:42:44.296659+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A74e0e9ef6cdc215696fe12b6f42206bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f74bdbb2a4e6588f8426889b82c90df963b9d633e34bfd3601b2e570d6de2073f5bb5f7ca2df17fd32aaf9bf1f0f6991e4f90e49eae2a778ad1b2c2e4b17bf1dc5a57609aa22c5ced967a51d65306c45451e9be2ebc5b33cc627df560ef71cf491eddbde8a521b03c116fae19d3b555c175e3412117bda4ae03d19fd236234b1662efd5258634ba5238667a546344894931691aaf3fb6cf845540a2a9e3c067fee63d1255667ef25f7af98d9c08c371487cbb87cf941a4be1e651fe642f416a9ac09d7594dce2ae6081f901a2d71f75658a75fdfc2434b31ce2244cb67a365ce447a4f36d386255cb77a6c5df2183293a09fbfc770429d4a228bc83df4ff4b1', 'category': 'Other', 'description': \"The sign is blurry and it's hard to read it, but appears to have a rectangular shape and be a street sign or some other type of informational sign\", 'image_quality_notes': 'The image is blurry, making it difficult to determine the exact type of sign. ', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 1996.0, \"x\": 1521.0}, \"hi\": {\"y\": 2369.0, \"x\": 1569.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5525: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:ad8981d4af5026722a3cf34548028f86:00110060\n",
+ "Processing image 5525: timestamp=2019-06-05 16:28:32.850415+00:00, observationId=o1:ad8981d4af5026722a3cf34548028f86:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2438055185171274, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:ad8981d4af5026722a3cf34548028f86:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:32.850415+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aad8981d4af5026722a3cf34548028f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=40f7b4220f70a0aaec335853c499fe08b501cdedee2ae7e0de66d0b3eb3b59a59ab043d4e8de29940538e37f38876ec90517ac3e1f72b53c2c0a6a72b166f0aae9826eed5f0bfe9e908f3c8deeeac4b7a75e5acbb6b7204480d6dad90ab53a4c56b0cff7a33c288c3eb6565c1a9054a78bd9297c084632913cdbeff20cec96e4a6fa24dde3c9820f3f731c2a25c88876440316c70c26984baed5a0cf2bfbb74bcb7084f1241ee0882f10538e333def457d3ac0a0263c39dba43ea249387cdf7790747543760c6f8c2ce595ed6243a816c3e89b349ac7c4ab4ec36116fc9e6f52f9faa9fe16284a0ab9c10ad1e4bc6dc62cb60ea81c8ad9addef052dbac98d78c', 'category': 'Other', 'description': 'An orange diamond-shaped sign with two black arrows pointing left and right. Likely indicates a split in the road or a detour requiring drivers to choose a direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3344.0, \"x\": 2266.0}, \"hi\": {\"y\": 3519.0, \"x\": 2489.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5526: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:f6f1dd0b520079a981490edcebe04113:00110060\n",
+ "Processing image 5526: timestamp=2019-06-05 16:28:32.226357+00:00, observationId=o1:f6f1dd0b520079a981490edcebe04113:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Orange diamond sign with two black arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15347722481037007, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:f6f1dd0b520079a981490edcebe04113:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:32.226357+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af6f1dd0b520079a981490edcebe04113%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92f786fe783366b517ee863720f1a50ccd643335353aa54116a4dcdf4ebce5822b438b4379ad7093f7fe7e978aabe3ccee27e0f5782c01014f8a0675d14d99217b8b2b183c00dcfa0a4add56edad1a579ab711223edce910010bfaf6107cf2d53b918abd02d0063882e1b621312c5a10c6b32ca00ca53eab4b80733b49ec59c44019b61cb6e949ba93111ebd2d2cce6303740fd6d904c931981ae322f7d6d840536056459895b978ad6daef784beafc2bdf8ed1b18b57ef027655dbd09612f0068ca45602ab3a1ea06c51c50aaccf8d3df546d3b4f54aace691f5071e2e64892373cb359c48174b1cceb10f852d425d077a820aacb4ff5580e575e02be716503', 'category': 'Turn', 'description': 'Orange diamond sign with two black arrows pointing left and right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3299.0, \"x\": 2605.0}, \"hi\": {\"y\": 3467.0, \"x\": 2763.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5527: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:5963e8c940edf71e98103f2689c2e741:00110060\n",
+ "Processing image 5527: timestamp=2019-06-05 16:25:50.924378+00:00, observationId=o1:5963e8c940edf71e98103f2689c2e741:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31980435848236083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:5963e8c940edf71e98103f2689c2e741:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:25:50.924378+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5963e8c940edf71e98103f2689c2e741%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a51ec90cc176779c7eb9ae853418e22b6403739ad98b05eb6a29eec812ada46f348d864700cc2d6ec365b7c17f02f9cd8dad6facfe163b5dffc79e4e20a9b0409715bb89789dcfcb9130138e497d4c909be47e48692a8fb0316609830ff4d6d4ae1a9b66b6ca97459b10e32c3e3ed8d2a4abdaa462cdb8b76cbfdd9a3f75f70b0497e8c222492ac03337d2f6bf14413785f041beed248457644ffedcef96aaf722b4fd9e881cbbc6a6edc6dae269557923c1f978872a354b328e4d6f7334bff7791236f5afdde8cd468fcca5a92efb5fadebaa62123904e3b8a59258d8a14ff6370a6144a1586f1144652e39c751496ce04bb21c86af9d8d8cb76d4363d6baf6', 'category': 'Other', 'description': 'An orange diamond-shaped sign with two black arrows pointing diagonally down and to the left and right, respectively. This indicates that traffic should stay to the left or right.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3342.0, \"x\": 2250.0}, \"hi\": {\"y\": 3588.0, \"x\": 2495.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5528: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:77306bb569517a6c87ab51e75ee509d4:00110060\n",
+ "Processing image 5528: timestamp=2019-06-05 16:28:33.486327+00:00, observationId=o1:77306bb569517a6c87ab51e75ee509d4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17203687521127553, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:77306bb569517a6c87ab51e75ee509d4:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:28:33.486327+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A77306bb569517a6c87ab51e75ee509d4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b603a2be9e36539e6104dc5b2df7e8831c317d8a2303ab6b1cb02c3a136e51fba496641a28a5dfcb698fb9912e0795c3ea241dcbbf117d33742ce1f5b0f551450c401e6a415399c717bdfb9a35348106c50f1cf029316a24ef9de2718897ae33d81382825a1ed610546eedb26badd20f476c707ce88b44548cbd9b1caaa2cbee6b4881476089d14fe3011120f942f2283c7d4d454f585bf4370f42ec34bf4771506940b1909b6f0eba355a029321c52359753ed0dcd4444d5b0b6e06929af5ec6d2001229a130d0804836c77a74b88b4bb71d6593382d8172e5c6774f18cf823603e2690b78f9d83b38713fed807d0c418100e553317b4eef3a88b93929197b0', 'category': 'Other', 'description': 'An orange diamond sign with two downward-pointing arrows, indicating traffic should proceed on either side.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3442.0, \"x\": 1403.0}, \"hi\": {\"y\": 3831.0, \"x\": 1739.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5529: trackId=t1:032073555fdb3fc48db4206d2632117d:ffff005f, observationId=o1:7b615ef57579718526589c6c232129bd:00110060\n",
+ "Processing image 5529: timestamp=2019-06-05 16:25:51.476361+00:00, observationId=o1:7b615ef57579718526589c6c232129bd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35669874843162824, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=1525, total_token_count=1604) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032073555fdb3fc48db4206d2632117d:ffff005f', 'observationId': 'o1:7b615ef57579718526589c6c232129bd:00110060', 'geographic_point': 'POINT(-111.899282135446 40.7672292362447)', 'mapsURL': 'https://maps.google.com/?q=40.767229,-111.899282', 'captureTimestamp': '2019-06-05T16:25:51.476361+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7b615ef57579718526589c6c232129bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=208e60d0cee4314d01c9a0c1c5e9501c02b48f910d0ee6194241a233327286fc8cebe529f8be7531c84bb4b1fc3c4f0cbf916c1841f1a6486995cf21b49f9733220c5e35103e421c30b2ccb88f054eb041e30cacc90cc247d4af0a963cf2685466caf9a38983b02e01e478512fa46f31fa2f0116f11ff0dc13abdd35d6d5f69717f48f100149a2e5d76082e804e8343844975fe555dbbbee1ed04c59534e48b2a3168f66268c41a2ef7a8a1b9b4c9524424893bb259fb160482a998ab45b094e440c2c49d6b4b65e8c66a50d404d181ab3b17e52db402c90aa09de5bac008a94ce5d09a85c8a43bf5a254fa0f873e1c31b5dcd072ac9518bf47c90304b28763b', 'category': 'Other', 'description': 'An orange diamond shaped sign with two black arrows pointing down and to the left and right, indicating traffic should proceed to either side of an obstruction or temporary road configuration.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 1316.0}, \"hi\": {\"y\": 3862.0, \"x\": 1679.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5530: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060\n",
+ "Processing image 5530: timestamp=2022-09-13 15:57:42.085431+00:00, observationId=o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign clearly indicates the street names \\'Lowry Ave\\' with a direction arrow and \\'Crystal Lake\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16431045532226562, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:a7566f6c30baa40c9530dd7b9bd275e8:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2022-09-13T15:57:42.085431+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa7566f6c30baa40c9530dd7b9bd275e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c5fa4a3c4bfa5c88d7efede67a33b0ad6b6478f244d09156a4b9bcd9a1aed6056d6180d4d3d254f67b6db012bef4cdb8e72355aefcc31ef3317c82d5991d65cb293cab65d3eec03ace84f0ee654a42ff059c26faee4f501f7f8fd3948bb41f842aa44f0d80eadcfa8301e072dddb2c74ed2d680c6aebe94886ad512bbd2faf21ee162c88087842797711c9f8b66e4425ad5d01d2885270e3e1bb7001d4666b80a8fa82c68d060e6000e61e141595260c29be77bef21e63345d4e3171f73f90577bb291d5b4dbf816f55960432958448cfb4fe40c0c778399bb8748a2b5a9f64529dbdfdadfc39af02fae805339176b87e9cde0070d179c7dc6d36c696f3c6c5', 'category': 'Street name', 'description': \"The sign clearly indicates the street names 'Lowry Ave' with a direction arrow and 'Crystal Lake'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3072.0, \"x\": 1379.0}, \"hi\": {\"y\": 3108.0, \"x\": 1500.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5531: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060\n",
+ "Processing image 5531: timestamp=2024-02-02 15:48:02.241206+00:00, observationId=o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows street names \\'Lowry Av\\' and \\'S Crystal Lake Dr\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17014290392398834, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:4dedf23eaf69e3fbc0e6ad6d7358c534:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-02-02T15:48:02.241206+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4dedf23eaf69e3fbc0e6ad6d7358c534%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0068d6361359e10bca42f2d7b773ef134ea91a4ba0b99967a233d9fa7a3a47ae0556b897591611ba8af1c2650949f7d87b5fc9736b90136104e0e8def4f56cb97e3d67172614a52077d116ba22bb6d48b6299c9afb46a383dddf31b832ee1c961228ec3694166b66446a96d4b6782cfd7ca552e8ddcb368cf4b3696b7cf24ecd677c7c92fc9055e69293cbae2c36bdf60e8e66dbb8145a733f9a269b9bdc59a96f5dac21f1506d9938d000cb9f529280323fdc79daa79d4d472422f07508083d054947312a45d78d11b5202fb60e9b660baeaae6c59ddbf97bf26c3d6748d71e1dff5b4b51338b66f244674e6c8b61b1df1a2a1befec50c12622bf197ab55f76', 'category': 'Street name', 'description': \"The sign shows street names 'Lowry Av' and 'S Crystal Lake Dr'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2969.0, \"x\": 899.0}, \"hi\": {\"y\": 3052.0, \"x\": 1053.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5532: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:87a906101211edd3e107b27adc862eba:00110060\n",
+ "Processing image 5532: timestamp=2024-01-31 19:21:03.918435+00:00, observationId=o1:87a906101211edd3e107b27adc862eba:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two green street name signs. The top sign reads \\\\\"Lowry Av\\\\\" with a right-pointing arrow. The bottom sign reads \\\\\"S Crystal Lake Dr\\\\\" with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"The image is a little blurry, but the signs are still readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28336850561276833, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=2041, total_token_count=2140) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:87a906101211edd3e107b27adc862eba:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-01-31T19:21:03.918435+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87a906101211edd3e107b27adc862eba%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ad162557fae1126ef97881ce614fd27958e448c532b269d1b7e8a76a78ab8ea888b5ed6e01d936e637bbee139c54c7b568f60959be4245c4160067ec826c6b63d4221aff1cbb78794a0e6c351f7a4255939db92a6cb7140dbeb9232607dd71ef52500ffe0d4b7830d7aad5af26ea16039daa31aabcc92986a7329faa61f1ff82725418be2f69a805eb804b97c53974154f065a0eb4f925b7e03071796bfbb216a3f23c0a3c5dd587a91f99cae58961f3f4d93dab04a347ff1083d25caf31dc9bd9e2e2261a0128624d1aa47ad1b1528d355e410d05775ba7c5c7bd9ed796689d59c7654fe7d552e19e34b83ba46c77faddbc60506459a09b15b125ea7ef4ef2e', 'category': 'Street name', 'description': 'The image shows two green street name signs. The top sign reads \"Lowry Av\" with a right-pointing arrow. The bottom sign reads \"S Crystal Lake Dr\" with an arrow indicating the direction.', 'image_quality_notes': 'The image is a little blurry, but the signs are still readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3104.0, \"x\": 2318.0}, \"hi\": {\"y\": 3148.0, \"x\": 2436.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5533: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:f1b47d3e3542845bc9c08a29421b39ec:00110060\n",
+ "Processing image 5533: timestamp=2024-02-02 15:47:56.277206+00:00, observationId=o1:f1b47d3e3542845bc9c08a29421b39ec:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white letters is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09917433787200411, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03207d558c55089861f7086b95bce3f3:ffff005f', 'observationId': 'o1:f1b47d3e3542845bc9c08a29421b39ec:00110060', 'geographic_point': 'POINT(-81.9163983783985 28.0240436411466)', 'mapsURL': 'https://maps.google.com/?q=28.024044,-81.916398', 'captureTimestamp': '2024-02-02T15:47:56.277206+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1b47d3e3542845bc9c08a29421b39ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2f652a0e97ec00a28b56d2ba63846b05dd783b57c4a8eea8198c76b90eac970556e356d93a899925e171ed5a7c143b487d87831e155b3c71a51db294d4472c5a77b49cfb44a33a653782e000055408d99d1ff5ce25986641c6c6c382787c9b2e31486a6ee47f74a51e4c6a9ed2899719d422f06c54440e3bf172ad571f733498e6061d98aac34d6531303760c79980cb1829bfb262bd7129f1bd08dbaab26c2145a08bad5190d5fc08fd7d12beacbb43b6ce0b6a8289f8add73681a0b7c1869054d9d3ed25e58e15dadb214879adeb7be55d70fcc723ecc628d731a3db9adf47a7eccff23e128a18bc91327a3c177ec2da8a316619a20b5f10e4966db6f08f89', 'category': 'Stop', 'description': 'A red octagonal stop sign with white letters is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1514.0, \"x\": 397.0}, \"hi\": {\"y\": 1761.0, \"x\": 1153.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5534: trackId=t1:03207d558c55089861f7086b95bce3f3:ffff005f, observationId=o1:152b8b983a1742b9b6cad06e15a761b8:00110060\n",
+ "Processing image 5534: timestamp=2011-05-04 15:29:56.827666+00:00, observationId=o1:152b8b983a1742b9b6cad06e15a761b8:00110060\n",
+ " Error processing image 5534: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A152b8b983a1742b9b6cad06e15a761b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=24553c21f1a5111bf5974805bede540df4948cabb88656fe952fde3f45a348a8eccefc85f35ca995427670191de3cef817b702dac8824d51898f4887b5935ccd564d0b7589f85d88fc4f9efd1c19685340427dcaa8fe4de94b0b7793a0bdb3d6699c0a5fad916eb37e108e3009bcb711ca28f324ec0becf51ca016edd0dd80efb24a104e90cd1c1ec6fe8627137a1156ec59e43c00ba856db56f122f454b90f3a6e2294f174d5ca8c60a840c5d1b38d37e39088878aafb67080e5c3225603cff3d1d9c058613b20ae6eec9e98189bba549cc927273c1c68b1b2c02b441228627cc7ee92dd583456cbc41d1f387336e963543b9a41034566d5b42e6181c237cb9\n",
+ "Processing image 5535: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060\n",
+ "Processing image 5535: timestamp=2024-02-08 20:48:37.350980+00:00, observationId=o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4327173011247502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:2b60adfcacb17dd4e1a8e6ca2ce9ec64:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:37.350980+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b60adfcacb17dd4e1a8e6ca2ce9ec64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=361f43ac5850c24396f822c05a475ca54d3be9e08c019b34bf0a15413c0175bc95ecb1e1faa64fb13959dd25ad4570a7afdd276daf3b43d847978e0d3c2667276ddc9ee6c9699345b581beea85a63969d384ab99d67924d2237106fb25d5e5dfab51f0a454e4416b2c1f566dc2b13962041a613ad0b8b8eeb4a4e798d001bdf195de0fc01c4dd9a55414f5615d46f5eb3794a11d109bd27bac297a8a2886097b40ca2b90fc44ca07081d1b7a6e9a57eecea313c7ea6932d754b422597f9b5f5bd59f308d92dc3c466d192a33c889d6cdb2fdbab275365efd9c89f8fc36a719bc66b2038384c47b9e6ff7e67cc6e139d077d97ea94544696de34837fed2fb87d0', 'category': 'Speed Limit', 'description': 'The signs indicate a speed hump is ahead and a speed limit of 10 M.P.H. in the area. There is also a parking regulation sign. The signs are readable.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3305.0, \"x\": 2093.0}, \"hi\": {\"y\": 3447.0, \"x\": 2208.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5536: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:2d2c103c68784b05af6cb0d0d51729b5:00110060\n",
+ "Processing image 5536: timestamp=2024-02-08 20:48:39.679473+00:00, observationId=o1:2d2c103c68784b05af6cb0d0d51729b5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.\",\\n \"image_quality_notes\": \"The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36166793308900985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:2d2c103c68784b05af6cb0d0d51729b5:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:39.679473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d2c103c68784b05af6cb0d0d51729b5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc6c896cce2d4d4de4c7c0cee012cabf60eeebdcd1afc1d161923e562d0f50d241100bc37bdfa6bdda2fd64ff5b2de6493814d70f4fb882a1eec98f4f2dc2e030826c8b63379db6e89a8fdba5d27bf9c729593eef47df715c3f4063cbe6731ef306d460de68f764ab10c855f2508de069b320b0699f98737e99423a86ef185c053f1384d1cd911640bc2009f0062342393baa698fe4890d1011503fe544ebe22056706863bf99e5b0494616094f760ad93ddac8ac790f8474e5cec298936c55491561658af1e0716ef410fedcfe59a4d74c7b5bf8f11c6ab407ecf855b4358f1ca52ad7f0d3af6873a9e59f2c0848520f541f4c2a27dfff7382a4de9085b285e', 'category': 'Other', 'description': 'The sign indicates a speed hump ahead and recommends a speed of 10. The specific unit of speed is not indicated.', 'image_quality_notes': 'The image is somewhat overexposed, which affects the clarity of the sign. However, the text is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3255.0, \"x\": 907.0}, \"hi\": {\"y\": 3316.0, \"x\": 966.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5537: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:4cf38220015e74e72188d8932f424d55:00110060\n",
+ "Processing image 5537: timestamp=2024-02-08 20:48:36.139414+00:00, observationId=o1:4cf38220015e74e72188d8932f424d55:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The signs show a \\'Speed Hump\\' warning above a speed limit of \\'10 M.P.H.\\' and a \\'No Parking\\' sign below. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19991182979149155, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:4cf38220015e74e72188d8932f424d55:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:36.139414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4cf38220015e74e72188d8932f424d55%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3381c64b9c3823dc34aa793b6d7efedced8ecc2006ad98a902c5d4d2051da20888083ce15bec7731a92718bb2867c61efec6cd6d60e72cebf9bd236c6b20d288c560bfd3ce3470bb91b2aad6b33642a3b127f01d15565a7b6a1904ae78f5765844b3e534cc057b431e9b2061575174aa5020e5f12adec57d433543f7e067f341194e1f10c3781539b743673dc5997340231690c28ff28a8a9fbb98c6dbda8877119b366613ae48dec395089840db03962c78d209937914360f033d58c6c2bba48af8f463bf132d2af494fc59df0608d175845947c7e0a6a7033f26f0ec32f7e61a0500a798aa2e09ee9790fa71d3614309f9c64bea37d44443185e70b806f3b7', 'category': 'Other', 'description': \"The signs show a 'Speed Hump' warning above a speed limit of '10 M.P.H.' and a 'No Parking' sign below. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2438.0, \"x\": 795.0}, \"hi\": {\"y\": 2682.0, \"x\": 880.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5538: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060\n",
+ "Processing image 5538: timestamp=2024-02-08 20:48:38.251389+00:00, observationId=o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a speed hump ahead. The diamond-shaped sign says \\'SPEED HUMP.\\' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3140508211576022, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:f09dbef8e41d58f2847fdf0620f3c8a3:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:38.251389+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af09dbef8e41d58f2847fdf0620f3c8a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b95f728b23deccfe3c004ba25c2ce461be9e2aa014b5786d721807d8bc208b85e3907d37d9e67d91cf2e42d26e3e7c90d52920b771390c40369f357851041dd7df4e5e06474b5bfc1636e768fdec9374f087e96e8f599452dc8aaf9c2ab856c6ac635b29f3d078b96b3b77552fb6a4895fd88979d23563fb875e091095cd341244de558fec2c444f7d427d03ed189c84c839ab72c2119878eaf3c59eeb81f286a625cce295bc4f2a9486fc1cb2bb5581e74a0a0d52e6dad5ccb32271d010dc98a80049f63592b05330ff2d4061a62f92770642da21dbfa8da332b2c8396ab5f72ce52936308998600a1d6d32e9096ac5993971776703a31e49dd40ea3532562', 'category': 'Other', 'description': \"The sign indicates a speed hump ahead. The diamond-shaped sign says 'SPEED HUMP.' Below that, there is a sign indicating a speed limit of 10 MPH, and below that is a sign indicating parking.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3286.0, \"x\": 1426.0}, \"hi\": {\"y\": 3383.0, \"x\": 1517.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5539: trackId=t1:032254e7bbde90e5f275918bf14e5548:ffff005f, observationId=o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060\n",
+ "Processing image 5539: timestamp=2024-02-08 20:48:39.011400+00:00, observationId=o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow diamond-shaped sign with the words \\\\\"SPEED HUMP\\\\\" and a rectangular sign below it indicating \\\\\"10 MPH\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17311082567487443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2041, total_token_count=2118) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032254e7bbde90e5f275918bf14e5548:ffff005f', 'observationId': 'o1:c3c92a315d13ac11eec0bfeae794e5a1:00110060', 'geographic_point': 'POINT(-81.9510894851179 28.0616168070453)', 'mapsURL': 'https://maps.google.com/?q=28.061617,-81.951089', 'captureTimestamp': '2024-02-08T20:48:39.011400+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3c92a315d13ac11eec0bfeae794e5a1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9c63d15ed6bf7f2eb67855b2832825fec8453bb5e1055b6e0d05ff93aacb8c817b8036d5169ecd67016ac87b9538aa0c47cf0bbbc21529696f89100b0416d9e30eede4c7ad46364717cd0999beab2994264d42d4aa82f39988134b28b87d56fc242c75f7fca50ad58e3c2b583b53fe0a098655bdf253db372be2d2e015399c85796fd285919422aac5295865d4dfc6fe8e8504cdbfa6b9d26f186a0b3627493c0cb9485caaf5e84ea56647d929f6fa9434c5b94fa1039d5ea1e1b3675e337d5a85d7bbbe1a2c83814d617b7af7ef27018ffba6d4dfc545e573e358057f1458fa83d1a75cfacc1e513436cba345a554ed3282b802287a8134b7926dad935437f2', 'category': 'Other', 'description': 'The image shows a yellow diamond-shaped sign with the words \"SPEED HUMP\" and a rectangular sign below it indicating \"10 MPH\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3272.0, \"x\": 1089.0}, \"hi\": {\"y\": 3346.0, \"x\": 1162.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5540: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:b15eedb4aa07358e5fb07b3f72660716:00110060\n",
+ "Processing image 5540: timestamp=2021-11-30 22:47:21.130464+00:00, observationId=o1:b15eedb4aa07358e5fb07b3f72660716:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" written in white is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.05594087764620781, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:b15eedb4aa07358e5fb07b3f72660716:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-11-30T22:47:21.130464+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab15eedb4aa07358e5fb07b3f72660716%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091415Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a01b4517e7bef27442ce7533d815b19f6c5f84404683ac30bee7ec7370ef5df1dc1cd2e82b97b8fdd5b229d97dda976bbe05588e6a67aedd166b63f66454d5535700b3775d1cd474012616b135761c75082e9b3d8d9881c2d1734f7c9c811676e08860e2a7bc8337a9e54c3bc0270b901dba972991a3de0cc4fbbba0a2d9a5c9b55cf1387eb6f1e445a92dd3454a21d75b154d0abb8aa382abfb6cde109feb90e2035eee2e155ce1e162d111f8e3694bc6c509bb034a903c0700c19e798747ed50d2460f302bdd4172947f9c97b1bb883fdfc159534624ac6829249865f667e7b82657f6e4668e387483b1160adac2d0d2b019d17866358f37dc3f7dd36193df', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" written in white is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3133.0, \"x\": 756.0}, \"hi\": {\"y\": 3189.0, \"x\": 810.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5541: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060\n",
+ "Processing image 5541: timestamp=2021-12-01 20:01:16.299339+00:00, observationId=o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with the word \\\\\"STOP\\\\\" in white letters is visible. The sign has an \\\\\"ALL WAY\\\\\" sign underneath it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1878079991591604, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=3589, total_token_count=3665) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:1ecd4cfab6c483e4743c5eeca2266b5c:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-12-01T20:01:16.299339+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1ecd4cfab6c483e4743c5eeca2266b5c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=59045f298eeb80ee46d1c1012d0ae55fcc44629bfbb0b2f83cbeb36899787feef1a07b26ed691887bfb6036596aaa59ab1045de334f0f4f4eaf299c7a96893a472d73bb501a8bf781499911c4fbcf7d9e56c06b19a8d35d809092c2527a62a7a156096feed5f5a26c2f234a9a83691100a85bba97b28ae4db4061eceec96b8c2c67159bec8c67ac3f39515f565190c3ab30fc64a40da2b67b1627b12cdc627dded0cd92aa778b03209e7baff64c84c58f58d55e09f1a947123018f7c8e14f098b1381d85d243eb1c2743d0e7b8436c4e460798a280109d3430c5dd703da60e13a438731bdbcd6e228c072728a9ca1f4da65fd057ab097ea0f95917a751985470', 'category': 'Stop', 'description': 'A red octagonal stop sign with the word \"STOP\" in white letters is visible. The sign has an \"ALL WAY\" sign underneath it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3071.0, \"x\": 3294.0}, \"hi\": {\"y\": 3268.0, \"x\": 3411.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5542: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:a509c6e4f7234af8feadad6c2511c2ce:00110060\n",
+ "Processing image 5542: timestamp=2022-10-07 20:31:26.402678+00:00, observationId=o1:a509c6e4f7234af8feadad6c2511c2ce:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal sign with the letters \\'STOP\\' is partially visible through foliage. \",\\n \"image_quality_notes\": \"Image quality is fair; sign is partially obscured by foliage.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2447569105360243, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:a509c6e4f7234af8feadad6c2511c2ce:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2022-10-07T20:31:26.402678+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa509c6e4f7234af8feadad6c2511c2ce%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3ecbf32bbc2bd5fa6ba91a7d02799537be3dd3941655e51bf4133d0114865809b1b80d043c6705dcdac1246c7adaf36288576d261e2f800fc71b897643678ab8785fb3ecd8c7b1f2af0ee54d4f2f0cb06155269a5213e25cda4874291a96b2987bea183a17bccec0579bc8050204b1f7b022b17b60621f9825bb594ef6411bef67619cef7b32c0b9b728679e86b8e46c254ba75e4c5c1dc9fdefba187a85de92494f7b8eb6458652ebb63e28c26a7c0b327822e1d3aabb99b2a2ebef10a261c264d71713003b721f3adc8066ce6285373719877959e896a85690165ce19c0848ccf804853f6b707e8181809e86a30d5a3a10a1c852e7d468164741ade3b85613', 'category': 'Stop', 'description': \"A red octagonal sign with the letters 'STOP' is partially visible through foliage. \", 'image_quality_notes': 'Image quality is fair; sign is partially obscured by foliage.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3129.0, \"x\": 617.0}, \"hi\": {\"y\": 3175.0, \"x\": 650.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5543: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:34d559c440c4678c224550793d2ea541:00110060\n",
+ "Processing image 5543: timestamp=2022-07-01 19:51:04.346130+00:00, observationId=o1:34d559c440c4678c224550793d2ea541:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"The image has moderate clarity, but the sign is still discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2689192295074463, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:34d559c440c4678c224550793d2ea541:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2022-07-01T19:51:04.346130+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A34d559c440c4678c224550793d2ea541%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ea9a7bea644f017f35bef8adbfaa95676f4bce812906f3c54219cf04dff9c36c3a6753db5fe7e4d7d11a39a243d5487aa26211f51011c30c2807fb85ae810927a671e497d073d02dfda762f9b31cf8797606271c1ed0cb612e9a503b0931621997a8254e03d87968dff2101efcc14aaf77750b8eb92776d05df639dd0ceca420afb739107e2ac91638f330c216de6d214d6ad434365af6a7c105b795a956fea4d234247f385fd2cf5e89f23fd9f46b8db30edb98df858b3031f89a03ba0887b737d7a1024c0799c95ec502440504d2d63fd464d159389fd6cf47c3d4542fd5f700009da21428b08463e5cbc7736e13700a7a876aebeb0ed720efed22641b3a6', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'The image has moderate clarity, but the sign is still discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2254.0, \"x\": 869.0}, \"hi\": {\"y\": 2293.0, \"x\": 910.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5544: trackId=t1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f, observationId=o1:33fc91b1542463e5832721ca43534384:00110060\n",
+ "Processing image 5544: timestamp=2021-12-01 20:01:25.659302+00:00, observationId=o1:33fc91b1542463e5832721ca43534384:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03475111084324973, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=493, total_token_count=549) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322b02e6620f0b315bbb94e3dd8c9ff:ffff005f', 'observationId': 'o1:33fc91b1542463e5832721ca43534384:00110060', 'geographic_point': 'POINT(-111.882255111919 40.7542252061921)', 'mapsURL': 'https://maps.google.com/?q=40.754225,-111.882255', 'captureTimestamp': '2021-12-01T20:01:25.659302+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A33fc91b1542463e5832721ca43534384%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ae77d16efc9e2c168fb45ae9febde806cdcd01d9364a8e0402c127af8aa6b8724388f15cbbaf4da73c93d97a63411dde5118ed1c79440e3ef6716a5a74a6e5b681ba977bccda34cb17c19dadd87af67dde38eb87a8c09f01cfec55b1a4b8144b11187f36afbe315940d20242fc5b15cbd116a82edc29390fc0fddfe6d7d1fe2d5f30fb73ee5649c00c016c20fbfeadb06b1290ad96d916a4bb019b94f5cd638c127147724fd8a7c0daa135e1b9fdb443331dd20aea87cacb2286e3b0b8e046eeca21173df0e0beef0675d37f7642aacfef4e2855cecf2b97cd5e32914a03c9a362d2186a906fbd766960a475cac5b48b63a10b420da395eb1e5be94632f6dba3', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2217.0, \"x\": 1120.0}, \"hi\": {\"y\": 2256.0, \"x\": 1158.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5545: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:518403302b091e3951a19a8442e41eec:00110060\n",
+ "Processing image 5545: timestamp=2023-12-19 17:08:14.657353+00:00, observationId=o1:518403302b091e3951a19a8442e41eec:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'Wabash Ave S\\'. There is also another street sign above it that reads \\'Old Tampa\\' \",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22897410074869792, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=3073, total_token_count=3148) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:518403302b091e3951a19a8442e41eec:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2023-12-19T17:08:14.657353+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518403302b091e3951a19a8442e41eec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=222143ac2816d527c71905c7df35851843c096aee8040b9bb256b2445a831a89eb05ee93b1a99bd12b7211e9a49c4299e22e624af21df8e23bb445867f618ac76b9080854d7ae34baacac135763741b413fed27a4d93e54de5ba3c9a8474f7d99605cae860f30a0cf50848a61a79bbf7acf48fe30f7786f7a0e25cd0118f5dd8a9fd121152f5af284809ed29aa314155cfefb915ec5121232772c34b5b9bb44b9daf3de91f7d0b5f0bef0f1b93ee12862154a293bbc608c6678ad929f9eda730fa7ab376cdcd67fded23917efdbb0394dfd70a592d0289259f513def08e3216099ef9e4b4b59ec60f047bed91f947003e290b7cab0fa0cdd931cbdcfa995e915', 'category': 'Street name', 'description': \"A green street name sign reads 'Wabash Ave S'. There is also another street sign above it that reads 'Old Tampa' \", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2078.0, \"x\": 1018.0}, \"hi\": {\"y\": 2187.0, \"x\": 1110.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5546: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060\n",
+ "Processing image 5546: timestamp=2024-01-24 15:00:32.249410+00:00, observationId=o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays \\'Wabash Ave S\\' and \\'Tangier St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23539544641971588, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:05ac30aba0cdd2a7b26330fc59a7a2e8:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-24T15:00:32.249410+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A05ac30aba0cdd2a7b26330fc59a7a2e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e556b53a57a8e7cad1adc8b6f6c8cabc1ecc91a7da10bd4cb7e9a94b779e4c78d08075d1aa607aba5ed8ce01b41a5a06f776b12170abef217dd794ce51ee2ecd46822fef66fc765d0ee5668838d3fdec5a27b2e28aca0f8d76e804ad914f183a531fe29bfd71ff28c4c98562755cee8b58cbdc1249d127f9a1ef9a0810bdaf8f005f5613eab7ae6d5d7888a6aa0c8d09f470394fd6527fb9ef6ac32dc9cc9cba1caec76775c3e4b9ba48ac4bd8c6ab95ee81527005533c0cccf441eb1e23b23ebe001b0256bd09a49f97a9c2b6e49f665b3958932f9e99e86bb61a4f2f9ebd337a12959b6b0737530e059f6066ff61b6421416887f6b3aaf4e213112b8a7de4', 'category': 'Street name', 'description': \"The sign displays 'Wabash Ave S' and 'Tangier St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3231.0, \"x\": 2672.0}, \"hi\": {\"y\": 3257.0, \"x\": 2755.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5547: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:59b5a70632efea208a96e212af2d3c9b:00110060\n",
+ "Processing image 5547: timestamp=2024-01-17 19:29:05.323505+00:00, observationId=o1:59b5a70632efea208a96e212af2d3c9b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Old Tampa Hwy\\' and \\'Wabash Ave S\\'. The sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1881484587987264, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3589, total_token_count=3661) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:59b5a70632efea208a96e212af2d3c9b:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-17T19:29:05.323505+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A59b5a70632efea208a96e212af2d3c9b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ee2d41e84e02e10465cc35b9072fc69d6f1126c8984e6bd5fa1640207952eb94d83fe17b08fab5b4959ad81899ed44039389791f83aa5228efb94918f1c73c6969f38ea7aa0508c6802ff44d796053dff08df1730779051fa82f7bfe56c1c9e04a44fbd49adcb6083ea61f8521d67a0f76be323925dff20aec473ca9fcbef30bdf0ec05c02e7c31d7d773aff4f23edb96f6d49d25e82ef808443b578a5b0bc99a98d6c972b860cce76df9ba419779dadb91747302ca33d86a6991c602a81079be74931ecbe655d7dedf71bdd5a75d52ea8292cc0d9ae7ada151621b435b8fe308cd4a20d3fc47bc9c9cf4ad70ee223439bde345568a7421e44931bc247741c3', 'category': 'Street name', 'description': \"A green street name sign indicates 'Old Tampa Hwy' and 'Wabash Ave S'. The sign is clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3168.0, \"x\": 2825.0}, \"hi\": {\"y\": 3230.0, \"x\": 3032.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5548: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060\n",
+ "Processing image 5548: timestamp=2024-01-17 19:53:28.540511+00:00, observationId=o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the street names \\'Old Tampa Hwy\\' and \\'Wabash Ave S\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.046933547774357584, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:1c27f9b70bad1d7f9a1586d3ca31f1fc:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2024-01-17T19:53:28.540511+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c27f9b70bad1d7f9a1586d3ca31f1fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b06d109edcdb48202c4bccb02ba882daddc42b0e982b82698fe4b9e61d71798fd70c7176cc7e41fe9160c059c5e468c6e8f5b57fed65e95a0625d01abcb5936b1d3a4619fecd82875d0467480d80215d6b3ade2cb7514e3a6dd3f7e713c015c3b4df6ad8cf74562141a0eba1300cc27c7d80668e2e86032f666f73e0d3dbfd76cdd7a371d15fc3e2a4fdc4eda595905f4bf17ae5c7063f0318efa49b40699a975cff8a238e6cca4af58717ee6991794242f7fa6387d7512dd4606b7b80f759e1147bbd8b4fa2191187dfa18e24a0a7d067421c7e40038eaaeedeadf6330dde3dde07d61a4a3bf6ef6299ed611b9570c21fb960e0f11d22947d2f96e8b10dcbff', 'category': 'Street name', 'description': \"The sign shows the street names 'Old Tampa Hwy' and 'Wabash Ave S'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 2611.0}, \"hi\": {\"y\": 3219.0, \"x\": 2762.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5549: trackId=t1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f, observationId=o1:7901fbfec899a58c7fa17ba012a83154:00110060\n",
+ "Processing image 5549: timestamp=2022-09-12 16:23:15.039051+00:00, observationId=o1:7901fbfec899a58c7fa17ba012a83154:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible reading \\'Wabash Ave S\\' with \\'Tampa Hwy\\' above it. There is also a Speed Limit sign (35) to the left\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2527235816506779, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=2557, total_token_count=2642) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0322c86f39e1f64fd1fb60c2f5fe3f67:ffff005f', 'observationId': 'o1:7901fbfec899a58c7fa17ba012a83154:00110060', 'geographic_point': 'POINT(-81.9901543583267 28.0384087902063)', 'mapsURL': 'https://maps.google.com/?q=28.038409,-81.990154', 'captureTimestamp': '2022-09-12T16:23:15.039051+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7901fbfec899a58c7fa17ba012a83154%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70f9050304d2742680748839c7af7219bfee971a0ace3984bee052d54a37d2d49ee578b38e5b6c0156c169b922d1066cfe8cf09213bc91f7bcd026bd4dfe0d008e3ef6cb71b8ee7e5a1206f55b6f37fc31d2277ff6c16d1c4a2bd15cef04e626fe05679a3a0624fa53ca10ce0da502ec562df9a76a5b375a1ad39a577ff725dd0fe4cfe114a0eb172f4fb340030ea0d656613b4d380788c1f5a3e06370fc081771c0cba2117a2029804781198ab99a418cf0356c213b1c888e80cf3ea463f2b01a6f3a52957ca4177b72a3553f1fd6b58a92f6b466c9cdb9260668ac5e677a4f75300e14946e61e001e80173c99b14404ad2205f85e15a4db578532c979dccdb', 'category': 'Street name', 'description': \"A green street name sign is visible reading 'Wabash Ave S' with 'Tampa Hwy' above it. There is also a Speed Limit sign (35) to the left\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2141.0, \"x\": 2050.0}, \"hi\": {\"y\": 2240.0, \"x\": 2464.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5550: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:04796929cb8d5d5f7cb981612d63039a:00110060\n",
+ "Processing image 5550: timestamp=2024-02-01 22:16:52.752294+00:00, observationId=o1:04796929cb8d5d5f7cb981612d63039a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \\\\\"LANE BARRICADES\\\\\". It is sitting on a road surface. This is not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30466758811866845, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=1525, total_token_count=1616) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:04796929cb8d5d5f7cb981612d63039a:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-01T22:16:52.752294+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A04796929cb8d5d5f7cb981612d63039a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94a0bddc54f2745f3f78cafdc204bf3fe1e05ebb38ceaf195749691bfbbd4edabf02f5696f30c37339f2fb3cfcb74e466af5e89c5b7c333df5f929697c5ec858e9d73d0ba6c9f77e3ac7d2690bd3ed5e3cfcb9599bd000dd1dd1b12332491309565fcb57e04e03f7ceb1749f8da1fabc356eb047315362444521b65ecbc632a52cba7c038d3de5987ef571f414a1577f0a9b35f126e9ce4dad0a77c30261309bc1533e1a5e97878a5c44b7b95b6b6bf28b60536e60049bc75cba65601bda684f64575952c55357f7528bd8811b50c354ad02b1446ac3c3cf8dcc4f6ff3307f2b41a9e23bd62960466a63278ffa83de98e9b2ec998ba5493d893496e9f39c3fe7', 'category': 'Other', 'description': 'The image shows an orange construction barrel with reflective stripes. The top of the barrel has some writing which looks like \"LANE BARRICADES\". It is sitting on a road surface. This is not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3521.0, \"x\": 1967.0}, \"hi\": {\"y\": 3791.0, \"x\": 2109.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5551: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:58eb00c1cea1d84b1ad35bf348203f61:00110060\n",
+ "Processing image 5551: timestamp=2024-02-02 20:16:18.619818+00:00, observationId=o1:58eb00c1cea1d84b1ad35bf348203f61:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18822423149557674, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:58eb00c1cea1d84b1ad35bf348203f61:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-02T20:16:18.619818+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A58eb00c1cea1d84b1ad35bf348203f61%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=48c4471c19b883e1c84490aeb90843e3a21b5562d82251ab8cab4fef9e74aea30e5ab20ae78051956ac104d30c27bbb52e3c81bcaf06b53c24eb1463672f70ed952edde59c5c18895eeb50991e1a5cd3f30ad7ac3b00ee2a0b73fc040aed12062e5d8ff442d5ccb78f267ea6b37e1870f0e6aa5a0ff8964c07f0b3b0aa22730c2382e01eaa3679753ff64b097fc6801af82990ad970e9d1472286bf4cc3cacf2b0c604da3ee1ba5b4ccd85963f3fb344b0b679508cb3c60c7144bcba27cacfb5181002567f88b6a57728558bd26a07d57cff441a17ac50ebd2eddef26714228f2e857d550cdc5e2f53680f4488586cb595c2ef3b795e0f4259f9a3b843d1f76f', 'category': 'Other', 'description': 'The image shows a construction barrel with orange and white stripes, typically used to indicate lane closures or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3375.0, \"x\": 3084.0}, \"hi\": {\"y\": 3498.0, \"x\": 3155.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5552: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:fde6ce72ba630e853b07e0715cb9e141:00110060\n",
+ "Processing image 5552: timestamp=2024-02-07 14:03:53.802725+00:00, observationId=o1:fde6ce72ba630e853b07e0715cb9e141:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15700253573330966, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:fde6ce72ba630e853b07e0715cb9e141:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-07T14:03:53.802725+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afde6ce72ba630e853b07e0715cb9e141%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2d2a57771440f72636f29df8a34c48c1dd52c4c04c6b526bf3f38bdfc5709947b4d519c9a9e3093d4cba555a004a45780c557d3594f17198eae07abe39f8e9dc5eb32b21d22fe1c839382baaaa522e36d030494b79af313d13c23c89aad8ea647bc6d582666b1207da748496b2492121d07e1b6d7f54461dc5b024a8daf38a9b702332ac719a97c466e4d1d951d06e4c3085871ca8cd419812b824d34c45763d614c1310921936bb5ca970f36a16a474acc1d303fd941380842bb11d13d8b1fe0f9ea9bffa68f57e035883b7609b94005dfd674696fa9beb1c5717fade00edfbc99fe885d2d1362db52a4116f0e9092e62173231aeb07f8b74f7158e7fc5951b', 'category': 'Other', 'description': 'The image shows orange and white striped traffic barrels which are commonly used for traffic control or construction zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3408.0, \"x\": 3032.0}, \"hi\": {\"y\": 3541.0, \"x\": 3107.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5553: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:9c0f976479862cd667191eeaf68ef185:00110060\n",
+ "Processing image 5553: timestamp=2024-02-01 22:16:51.292208+00:00, observationId=o1:9c0f976479862cd667191eeaf68ef185:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with the word \\'EXITING\\' printed on it. This is likely a directional sign or part of temporary road work.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3710267430260068, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:9c0f976479862cd667191eeaf68ef185:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-01T22:16:51.292208+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9c0f976479862cd667191eeaf68ef185%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52fced5cd714fbb926d2f2bdc71a532e2030e8d42c9b749d924168e14ac268e1bc6190b6cf68597017ba348fba6272cad3021629863f5d8892d5999bd6c0bcc82b8d0dea273ec0568dfbcff696f9371181b4912badc21d733254d7cb811782d8e7eac50991ae244923d8d6e55f9b18c1bc7f8274bd116e5361435de3181c6a29f0cc64625d4c46900daf586a60df392b240892066598a90eaed78aa5045fd425c4eda52d674d1ab5cf08b77148b9a4af4dc394dbe8d4a911086249887981e4d84e549db7dbd07ecea696ecb40d7ee4dddd3c58471dd44891eaa91a92c4beef6df06b3f84a9f0c55c96f6f859486388c4398bf6b25538e64cba594477dd7eaa6e', 'category': 'Other', 'description': \"The image shows a yellow sign with the word 'EXITING' printed on it. This is likely a directional sign or part of temporary road work.\", 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3307.0, \"x\": 2856.0}, \"hi\": {\"y\": 3416.0, \"x\": 2915.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5554: trackId=t1:03237d4340496feb8f1c156ad486dcae:ffff005f, observationId=o1:a5991523440482ee08c4174de1dce01d:00110060\n",
+ "Processing image 5554: timestamp=2024-02-14 14:14:08.830256+00:00, observationId=o1:a5991523440482ee08c4174de1dce01d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13830741246541342, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03237d4340496feb8f1c156ad486dcae:ffff005f', 'observationId': 'o1:a5991523440482ee08c4174de1dce01d:00110060', 'geographic_point': 'POINT(-81.979240477021 27.9748379524378)', 'mapsURL': 'https://maps.google.com/?q=27.974838,-81.979240', 'captureTimestamp': '2024-02-14T14:14:08.830256+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa5991523440482ee08c4174de1dce01d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=17084de399f1ed0e830166146925107ad3a9e7f59a53a8daae207c44efda418f72eb56bb460870ed8cf1afa374b72105aa1ce7db38c1282f8e552d897ac0857297bc1d6e83d5bca1afe8e35dfd6934e2affc243178b5d0bd30e713d6fe67fd1a8bcfba3f49297b398e164f78088981b606d68b847386f7c56f0d909aac83dad6b55a1f766b4f8bb7314760324bd6293f92dfc848b2928b06127666a835b0ef3b59317e3628d4da95c53c1e8c2de4ee55860d0e83be4a27f4214bd959e70aabbb59111229efcc554bf55846b9203d805bbf7c38d5b12a6a4c7727a9f5d4d24d0a6b7fa6dea49b5e85b6e432fc50dc5640f855d779029c66e825d7da385d9fdcda', 'category': 'Other', 'description': 'The image shows orange and white striped traffic barrels, commonly used to indicate construction or road work zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3365.0, \"x\": 3122.0}, \"hi\": {\"y\": 3476.0, \"x\": 3177.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5555: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:c76b5c683a7d17533c7953c128e46e25:00110060\n",
+ "Processing image 5555: timestamp=2011-04-26 18:15:52.319815+00:00, observationId=o1:c76b5c683a7d17533c7953c128e46e25:00110060\n",
+ " Error processing image 5555: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac76b5c683a7d17533c7953c128e46e25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090822Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06fc4e484b13039a10e7a6ffa43c8e16d16bd3ee017d0a382fa57c80d6117698976723cdf098f7657d6b62b8a675430b7fa655d70a78dbf5afbb0083b1de777437d2516390747c58dcaa5c7aa4133b576440bfdb9233421b970f25f72905e3874d8111784793cff98c07df803608b2ca5ae57814cffc2c2e7009d442d48d4acf22f0feae74222d2b5d39119d98ead8e867759139d8068d7b6d4285234c1368d3dc8432c5fe6885f249877082a7ff1581a0a1eb1e6c334f8c6354a7168eab95ecd93055535d74659db64e6c71d56c3626a0cf7a41d29224718be98d177750e617af345226064820ef09640c408834c39d907121f57724ace33e0b2fb2234940ae\n",
+ "Processing image 5556: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:038012266d6540b91a31308495774dc8:00110060\n",
+ "Processing image 5556: timestamp=2011-04-26 18:15:51.252261+00:00, observationId=o1:038012266d6540b91a31308495774dc8:00110060\n",
+ " Error processing image 5556: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A038012266d6540b91a31308495774dc8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab51c861076636cddcb8e68427e2ee470312e11584eadd5d52e1b8c73ecad65f3d5b529a19f10a01ed83d2926d11d7baddb23eeae74da65b56875b82a43ffd3af50e63071dbfd56044c06b60714215e18b91350ce8bdc9917b18490979f34eb6aa15f2339e140684a57c47a89f5a4adf9a56de7ccc1db35c43420157aac4b8e26d1f4cae2c4600c0456ce41945686399616d2c8cf34598cf40b35208294b311dce0f88c18d12dfd7567f54ec109dad0bd2e3b00d22dc0cd66baf30e49a35e3b02675db2695ccee1c9a0154a967a4041e1777dd5276767f3fadbdf25eb399638130f00b89867c2bcb9a857f92570b0b5cd4c1d1e8333b10313a79e7cd698f5202\n",
+ "Processing image 5557: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:e139b290f3f4b6bafffb18456370d3f3:00110060\n",
+ "Processing image 5557: timestamp=2011-04-26 18:14:35.877094+00:00, observationId=o1:e139b290f3f4b6bafffb18456370d3f3:00110060\n",
+ " Error processing image 5557: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae139b290f3f4b6bafffb18456370d3f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a4eabcd5176377b9e3255945dfa743ec8526932eff63b5c30537302e2b9d074da2fefb89476f1a45f761eb0634e7540c77fe2016a46fb69901d24048321bf29b5c7ed0534c19f08113812da25125c60a2c9290e77308c554f8cfcb3bc26966b0ca42d5a18f3d42972bd1e7e8c51dcb431cf971fb42f37dc791d2c7a5bad289859cd66fd526701070eab00ca983dc474fd0198067ca3dee6bf34d4fa84ab2184601d7ebdc5740ba4dc8d819f5515a2560f47fa17be61f224e4c492fb707d39aee6e8142956f32beebf885e653451bc0f27ff691ec00ce88e46b3ba0c7a2cb16ff9757729606e13a00b9ab2f2f3cd724ea981c8307aeecd3d89bdb4403111c873b\n",
+ "Processing image 5558: trackId=t1:03240f71bc90ee783239ba2e783946e5:ffff005f, observationId=o1:23559351bc77cc1405de8fc1d3309b57:00110060\n",
+ "Processing image 5558: timestamp=2011-04-26 18:14:36.717897+00:00, observationId=o1:23559351bc77cc1405de8fc1d3309b57:00110060\n",
+ " Error processing image 5558: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23559351bc77cc1405de8fc1d3309b57%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091017Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8f893c6cd46eea4846e9983509eae0610ac66adaf2a79cfe023409e08215bb46de669322eba11d969b481d7f4d9b0447b8ec916950762ad13c4294dbc6f143a3f2afe9bcc0b0346a3bc71f04023497d91834946169cb0786c2436531e222e661cc3d5491c263f0a748e7ca7a2beab796fb074366d195d31cec0cfe5e4a59f773fd9c1e22444ba0130c995dc73428b23bc5b04b6b0451e4780a590120aca00a1982d06e55dea2c575999d093e1e421c94c598599306c21f9808e9c58e2eb56819ad0dc692eefe2c302e305c50754447c881fecd5a9ac9df1ce06059bffc0266b1bbcb53ace216b510e40e3c27810c000390efc1280321998db705d3dbabc2ff30\n",
+ "Processing image 5559: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060\n",
+ "Processing image 5559: timestamp=2024-02-06 21:27:20.514204+00:00, observationId=o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a Bike Lane sign. It depicts a bicycle and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13643545179224725, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1009, total_token_count=1076) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:8c70c10de87cfa5ca002c1a97d61cf0c:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:27:20.514204+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c70c10de87cfa5ca002c1a97d61cf0c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5b4155e2db35066b9aeb4a03d07ce8e373fd7919b8e1a0bb62402b1735707bcf79b216402f1eef11a5366d4358333ead4882f51c9d9b89dc54b95df1e9119194c1a2c15e85e872bc7d452c0f879d98290b665f068a314e4cefc58b2a8732bfc06522351c5b6fd9f131e828d5cf9025d0ba7c4681c7b2364af4f7e3a49a76813c34065f12fa2968c001d7e1be517b9c9db35537775f53b73a7ea0673885082de713e4c2c912dfdc0ed68426ae1d7e9fdb703008536548e38bf06622d9ed2ce7f4e1f03874aca0a3cdaf0f4f4d84ae0ac449dc1f09746f5e181dc835568c7de11f9e07c3f64228127c6e1e2031704a370b2bc399b939359d3e9666332d120765b2', 'category': 'Other', 'description': \"The sign is a Bike Lane sign. It depicts a bicycle and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3233.0, \"x\": 2379.0}, \"hi\": {\"y\": 3272.0, \"x\": 2432.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5560: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:88563f59e0b5f244b0986cf5b3191bbb:00110060\n",
+ "Processing image 5560: timestamp=2024-02-27 17:32:32.709414+00:00, observationId=o1:88563f59e0b5f244b0986cf5b3191bbb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign is black and white and contains a picture of a bicycle, below which the words \\'BIKE LANE\\' are written. This signifies a designated lane for bicycles.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the sign\\'s content is discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4600002454674762, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=1525, total_token_count=1617) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\"}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:88563f59e0b5f244b0986cf5b3191bbb:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-27T17:32:32.709414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88563f59e0b5f244b0986cf5b3191bbb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091320Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2f4a9c7dc06eb34cf6d0d896132aac04725fdb67acc37d34f9f6e1db41f7f3ebfd45cf16a1fccd1a72fcfbda6129f59b29d89a70023c1e8f06ff0325ad33f138fcdc6fb4e072de411e41d13085d038f8411fbf38973750b8892213237afa40cdcf175996039699c93c8e1f58fdd012bda2d81268c0da6770f0750255e4cc1f5e9d6fceeb9e0995752103516c73acf89ca5d35f8355cfd2379f5f86f6e769db2d2e686427032488784f3e8c75a0df9743bfa339e2f09b06cfe170d9ed4d2478115fc69d89adb6c5c8836d65ecf45b6e3e7944db0091fd045e1716cc0133e51f921efaf31d01d3fe09fb51f8f8e2cb4ac522211ce1295d9c4dd4d55e6b1e96a23', 'category': 'Other', 'description': \"The road sign is black and white and contains a picture of a bicycle, below which the words 'BIKE LANE' are written. This signifies a designated lane for bicycles.\", 'image_quality_notes': \"The image is somewhat blurry, but the sign's content is discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2142.0, \"x\": 380.0}, \"hi\": {\"y\": 2182.0, \"x\": 433.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5561: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:87fca1cc8da93963a59f96ab46b60981:00110060\n",
+ "Processing image 5561: timestamp=2024-02-06 21:27:20.214140+00:00, observationId=o1:87fca1cc8da93963a59f96ab46b60981:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a bicycle symbol and the words \\'BIKE LANE\\' indicates a designated lane for bicycles.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10960003155380932, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:87fca1cc8da93963a59f96ab46b60981:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:27:20.214140+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87fca1cc8da93963a59f96ab46b60981%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73be83bf8f2dfc02cf92c424cfc20a58e841160296dca5593fca918ae3a0549ba5e1842ae975f33b6ff5a36aefff845c5ba23e9ae552abd653e4a95954035e5899125c370bc00611d907f7e42b5be950dc967becacee08391d4d4bd0eed482cd36e68a2e8de5f6bba8c1aebf177866513290b8b36b987cc6016747ba3ae31fc696690a5230e198f5af76765387d4a5434ebbd47b496f1cbfad1743310eef5c15a17a732317d3e49674019ef4c0612cff8656b6a57da4de8e149d002a46f215ce0185065564949f589d826e44eed0c25cf99d98b9ea422232a9d5934a8c112f6024646b4f033ca6a025adfae9341b05ad17e92c707a0384fc074a3e9dcdeb4a71', 'category': 'Other', 'description': \"A sign with a bicycle symbol and the words 'BIKE LANE' indicates a designated lane for bicycles.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3216.0, \"x\": 2703.0}, \"hi\": {\"y\": 3254.0, \"x\": 2752.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5562: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060\n",
+ "Processing image 5562: timestamp=2024-02-06 21:35:55.728939+00:00, observationId=o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13778446031653363, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:7e2e670cddd3b1cf3cbfe45bcfc6e664:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-06T21:35:55.728939+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7e2e670cddd3b1cf3cbfe45bcfc6e664%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091624Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4e4d876b5b8e7a912d9d1edd1a36dfc2287d4ba756b6750ffb1a80c43034263bdacfaa2b4f6eb3d26900a1ec6a953e539ef794920520a6164a0edc73cd9653634ffe7651624ad23dae40bf3cdcc0ca8347d9c0e9f0ee5e4e531ce340bc4c7ddf0df867f23a7a004d5fe590713d9add0ec6dfa45787a8aef8e4157db7c74d3d8767e20168836867672db4ebd525c47e320876dbc3405f4b4dd82b2d9b6dd794c3837f1f9b51eeae46bd53566bc154c83c67b487863753c4bb9da7ae09e31fb0773baf594b05e8f4396fa21f16535e832051b7f1a67ee99c97d1c30093ac28d7d7236793e767fbf150808929fecb2a3c1041bb39116970ab3864687e49f22a146', 'category': 'Other', 'description': \"A rectangular sign indicating a bike lane. The sign shows a bicycle symbol above the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 1093.0}, \"hi\": {\"y\": 2332.0, \"x\": 1133.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5563: trackId=t1:03241656a3fdc32a878a1093a8684a4a:ffff005f, observationId=o1:6d817c8970d0289d0c1a43984f9e966e:00110060\n",
+ "Processing image 5563: timestamp=2024-02-27 17:32:32.709414+00:00, observationId=o1:6d817c8970d0289d0c1a43984f9e966e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a bicycle symbol above the words \\\\\"BIKE LANE\\\\\". This indicates a designated lane for bicycles.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1358029047648112, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03241656a3fdc32a878a1093a8684a4a:ffff005f', 'observationId': 'o1:6d817c8970d0289d0c1a43984f9e966e:00110060', 'geographic_point': 'POINT(-81.9239988021224 27.9799517707907)', 'mapsURL': 'https://maps.google.com/?q=27.979952,-81.923999', 'captureTimestamp': '2024-02-27T17:32:32.709414+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6d817c8970d0289d0c1a43984f9e966e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70e5598b8cb6a7273dd543cfce1431a0de4f957ef41912885060a0303d662733b316f7afd3c19f95991b61eddc4afac239371c4ae8f7c6b1667bfe87c2c5ef1a7370f150cf38145b232417f07f10051dce898b823e476ccd5262d4037aa779780dc2956d1577cda10bb91fab3bcb256e066061c84525cafae7c6b6a9e5157553c93f06e3f37004eae923961c2e7b5bf5ce2ee31a115f33ad329945f73abc142614a150a9c6036ec242c4a5c7e8b3cbad758c950c013d91fce0dc67b59e3f5bb798a75c01616b176e4ce9395bfd0d986f4358091cd2c1b57599b834111b80c7e679ec7246089fac9f5de9df9081a092a08f1ac0997b67e44f079d03d83c072a77', 'category': 'Other', 'description': 'The sign shows a bicycle symbol above the words \"BIKE LANE\". This indicates a designated lane for bicycles.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3021.0, \"x\": 3457.0}, \"hi\": {\"y\": 3060.0, \"x\": 3509.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5564: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:c174412994341e5e4984105753a9cf8d:00110060\n",
+ "Processing image 5564: timestamp=2022-06-10 21:12:28.505579+00:00, observationId=o1:c174412994341e5e4984105753a9cf8d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.100011840699211, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=1525, total_token_count=1588) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:c174412994341e5e4984105753a9cf8d:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-10T21:12:28.505579+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac174412994341e5e4984105753a9cf8d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2247955e0fc0e8305cd78e1117a02620d38ddfc13864dd93420fea55713daa0e3c450199989c987c7371cc1380b1d07373aed9da34c1ad248c2d85beb7f02bef31a0b906ddb0687e8590c90b71198656d818e804b46589f18553ec7f1b14474359b8af04e0153fce6a4fa390bdee143ce6440c1d9155223c7107933bac15c19d47b598fc0930a13f93cfd426eec2cadff4bca5accdd6510755598ba4524b8f6172e914021590b85e1a70c2872236b3b50386fba70ae24cd09d7f9484466ffe23b8522dbcfec6d8aa7cd3dc822c8b38b20a5b88d18aa78cc92b021424c601d24d2309133eb561b42d2956be25ae4936a1c4e82d4941e88e52cb36939f8387b099', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped sign with a pedestrian symbol indicates a pedestrian crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3164.0, \"x\": 611.0}, \"hi\": {\"y\": 3238.0, \"x\": 683.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5565: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:e6c15383b49f2034a416cdc450633d64:00110060\n",
+ "Processing image 5565: timestamp=2022-10-07 19:54:34.325775+00:00, observationId=o1:e6c15383b49f2034a416cdc450633d64:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5224881975838308, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:e6c15383b49f2034a416cdc450633d64:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-10-07T19:54:34.325775+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae6c15383b49f2034a416cdc450633d64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=252da164f585981d1a21e3a57ceb8fb090ab749bae3083db79a9669d33386d29c4c7f5502e5cef72397cf6ab1bf14dc5ce0c0683d90fb90f30767d817c338daa916c7a519cc6f768846232f8ea489c39ae68d3e7730a48e2b0b5074ab97620c150714adb134a4416d4aac0aaf29f925c99052f045048f112677f7867d087d6a91ba32ccd123422a88801fb7e6f99399e4b0189144d44976deb78b8dd3fe446616d165dc2dd7ad7fcb5f426d0541a75e3ad5f9c503219b3c81ac001151bd5be80530876b1dd1518ef7e647e92e1d14c5d133094cb89c3d3a7a500d178453354eb5d4c155cae5fd472feadae39a2782506e48b50d74d08762a16efe23565312a5d', 'category': 'Pedestrian Crossing', 'description': 'The image shows a sign indicating a pedestrian crossing with the no parking restriction below. The top sign is diamond shaped and has a pedestrian symbol. The bottom sign is rectangular and says No Parking for either direction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2030.0, \"x\": 1352.0}, \"hi\": {\"y\": 2290.0, \"x\": 1452.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5566: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:518abbf918e9944583b83ce304d7c44d:00110060\n",
+ "Processing image 5566: timestamp=2022-06-10 21:12:32.121548+00:00, observationId=o1:518abbf918e9944583b83ce304d7c44d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29088460895377144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:518abbf918e9944583b83ce304d7c44d:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-10T21:12:32.121548+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A518abbf918e9944583b83ce304d7c44d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=40eb4e950dc8491614abd8a9d7651a45361b80242dfd03acd23908254ef3868ef08eecb407b90c0ee051f904456098a2a570a0292308b093e0e14e91847bec1422d3a94032c6d9340aff9aedc2990f5170218286d06d0292fc73caee2fd544e7818d3d44f357e4bf69d00c6f29e67434304646fda02fa4157d3370c41a2b7ee99ef1a41d33a5cba05447517e4f61fee93d0f66acbc9c0aba9cb1a156274bf342b78da864743556c233206a9c4b86255b04588f0e1571227fc52ea5a61bcdc2e684b7da45c1eb792124c4c04f1c4c01db81e9f9536f82dfe6335a02c6a567f6458aadd09e3bd1c2eb12a905c0c5e8dd9e4b8abb9ee60595e6520889a7bd0b2f1d', 'category': 'Other', 'description': 'The sign shows a pedestrian crossing (top) and a no parking sign with arrows indicating the no parking zone (bottom).', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1897.0, \"x\": 1685.0}, \"hi\": {\"y\": 2325.0, \"x\": 1809.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5567: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:5d78ac13b294198875eb1cf7ea38c648:00110060\n",
+ "Processing image 5567: timestamp=2022-06-16 18:59:30.683547+00:00, observationId=o1:5d78ac13b294198875eb1cf7ea38c648:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38940383727291983, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1525, total_token_count=1608) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:5d78ac13b294198875eb1cf7ea38c648:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-16T18:59:30.683547+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5d78ac13b294198875eb1cf7ea38c648%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091717Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=86166a1a763be5121f0a0538af1312cdb79c52fb63de9453465cdc5d09906fc885d829feede6e77cbcd0266b13a6b8235593d6c84ed90c0f1c2b467aac8fcea528ef45bc2a6413427ccaf4575fec94c49e8639ec19ebbfa696ddc271af4d82ad4f3b97916eee0ecc391ec11118ac6cab10feb699d08a6c2800d44e5d060f9792ba2676aa90c7773dfbc3e4d0cbbc6c2523243ced472a3cce289d57bdac7f8f2f2b7c657629f07a5e1522628d033fb235da045a1fed6030e2225423224e75d96f690915325a2a7dd15cf1b2324a947a9cb50173ea44a8ee1fc8a9cd6cf5b16c24998e14e6c4c5f4ae52b860f3ae8d53218a55835a8f1a6b5209f1a73d8c6447da', 'category': 'Other', 'description': 'The top sign is a yellow diamond shape and depicts a person holding something, warning that people may be crossing. The bottom sign is a no parking sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3142.0, \"x\": 1135.0}, \"hi\": {\"y\": 3237.0, \"x\": 1227.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5568: trackId=t1:032493b99cca9f2b0ea917a3040ba28e:ffff005f, observationId=o1:664536699272a5917ca2f65144b70f86:00110060\n",
+ "Processing image 5568: timestamp=2022-06-16 17:37:21.128125+00:00, observationId=o1:664536699272a5917ca2f65144b70f86:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a \\'No Parking\\' sign with arrows indicating the restriction applies in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10487739338594325, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032493b99cca9f2b0ea917a3040ba28e:ffff005f', 'observationId': 'o1:664536699272a5917ca2f65144b70f86:00110060', 'geographic_point': 'POINT(-111.863705507051 40.7818677917801)', 'mapsURL': 'https://maps.google.com/?q=40.781868,-111.863706', 'captureTimestamp': '2022-06-16T17:37:21.128125+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A664536699272a5917ca2f65144b70f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5dab7401d848cbd0fa7a1e354bc73b2a90972004ea4e7bf8d01ca11b97030a3d8a704f6c43afcea785060ec8d6146160335b4b6e693bdbd80fa718a8271d1df8c276589fe3611a0774fff77237b81665140a936ffc9da89df997ad9d05771154f956d826ae30005299f34e1bd63e0e2fbd500f50c96c8022a1fe766bca8b8ab3d23c4852571f0219a99a4f6a7835f44d152d0c028a57d454f905fc7928f2ee320e0f734b85cc01e7e455f3b310b53eeb0ee745a365ff398ed9177368302c5910f026631a10ad8aec201c47995e8b1b4e6088f892b6c64d15aa12be1a35a56d41f9250f1a30c6cb3afd414be39790b16138ea854158028d4e69cdc96fd606e7dd', 'category': 'Other', 'description': \"The image shows two signs. The top sign is a yellow diamond with a pedestrian crossing symbol. The bottom sign is a 'No Parking' sign with arrows indicating the restriction applies in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1919.0, \"x\": 1260.0}, \"hi\": {\"y\": 2335.0, \"x\": 1432.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5569: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:bf2f0e22556522104567051ae5659a8e:00110060\n",
+ "Processing image 5569: timestamp=2021-02-04 17:34:43.751986+00:00, observationId=o1:bf2f0e22556522104567051ae5659a8e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20224972845802844, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:bf2f0e22556522104567051ae5659a8e:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:43.751986+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abf2f0e22556522104567051ae5659a8e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0aa971ed25b123711dfbe0d63538b5c7e5199ea3e27011b2e53d57b232d34695da52719c592b4e8b8e5d7b558932956924f76c38b41b4d11c839c7490cd301d8322838b552f7c1a404bd1bd0f537b827f48445cfd7efc5dcd55a40410e4d94a28bf7e10346abcbcfb4961c144f5b3fd3ad4f0827b82a9f7cdc9774514f7ca0145232f6d6b7a282f796d4b1d3501255baf332510a7865b1f3a7acb66ef270191ce7e2852469f444c67e32b96f1f28b7141ecb31e979b5bc1b46720a505cd5c9edbdfb6c71874693b34b79551b2464391a1b8800cf4dd3e5ed2c48c6723118f67c94cd62471d4a916e61e41295e4dd63f0a67c602ced33f43b55e7b2eaa3fd4d49', 'category': 'Other', 'description': 'The image shows a barricade with orange and white stripes. These are typically used to indicate a temporary road closure or construction zone.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2514.0, \"x\": 1485.0}, \"hi\": {\"y\": 2545.0, \"x\": 1581.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5570: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:1f14bc5cfa8622519cd891607bc3b929:00110060\n",
+ "Processing image 5570: timestamp=2021-02-04 17:34:09.172828+00:00, observationId=o1:1f14bc5cfa8622519cd891607bc3b929:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a road barricade, featuring alternating orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24598892529805502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=60, prompt_token_count=493, total_token_count=553) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:1f14bc5cfa8622519cd891607bc3b929:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:09.172828+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1f14bc5cfa8622519cd891607bc3b929%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4e463d6945fb3c2f948b600b57303d515c09183ec64fea7886f3eaa024d84f2cdec8bf38eb0057104cceaba3d4b1aaf22e950de3ce20035054030512cd4bc86edf1ec68a574d149bba858143a97a431dd12c3c3ec73fe7d742cbfcb2b7f5dfd113395ccb3f14e94134df0a27c73f2b15a07979b554fbe6bb4644273917e57bf12b9edd2d9addd81647ab34970202de03198c68ef19d868ad393164ff6ac858d35e772a1f426d973aa98910e4a3b87e4b4d6b9502cf9dea0a8a20bb69b2f0f76832f77556c282b51a1c6043d58ae5a40ac7dfd27b077d014c949d74e7468d31bd6037147fe56d48ee1d3fdb301b46d8f15b1d0c8c58dc50975650de2365419eff', 'category': 'Other', 'description': 'The sign is a road barricade, featuring alternating orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2559.0, \"x\": 869.0}, \"hi\": {\"y\": 2597.0, \"x\": 977.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5571: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:2f5a202cc46237d89727ee2a26343c1d:00110060\n",
+ "Processing image 5571: timestamp=2019-01-28 13:25:40.557411+00:00, observationId=o1:2f5a202cc46237d89727ee2a26343c1d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32610331354914485, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:2f5a202cc46237d89727ee2a26343c1d:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2019-01-28T13:25:40.557411+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2f5a202cc46237d89727ee2a26343c1d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ab75b17be2b1c3806bdd52c91f1d7ad6002074981ec451699f1fd0d4ca76f1945f74c7f82545d726f2530b042e7157a6fb878bc84c0af948337a1b0b037a4c30ff96ea6b339d90273da3452c8a115eadd9e8aa07dad2679e655603ecf77ac395414959200d6e3dfad77e806bebba0c466b51be5d13b2f2078e2ad03b00648445c537024b113d707d283ca7863bd380d5672599f82c56372a138271325192cb140c79a2de03d70b48ebfa7870383b79c468c52bf153df61359c02934862d0c412ab99780e7bf19539e500c26de9854c1539392223b65676d40b4fff2db6c8469cdc63f89f2f5eaa633585e420bcd8948072a2d37afd9c82e9042fa8e7754fd1d3', 'category': 'Other', 'description': 'The image shows a section of a guardrail, featuring white reflectors with red centers. This is a typical road safety feature to improve visibility.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3056.0, \"x\": 3043.0}, \"hi\": {\"y\": 3098.0, \"x\": 3202.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5572: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:f912f40a699d0d94b972601b53fe27d7:00110060\n",
+ "Processing image 5572: timestamp=2019-01-28 13:25:15.214120+00:00, observationId=o1:f912f40a699d0d94b972601b53fe27d7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10918957354074502, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1267, total_token_count=1350) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:f912f40a699d0d94b972601b53fe27d7:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2019-01-28T13:25:15.214120+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af912f40a699d0d94b972601b53fe27d7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6848572749590c1c91f2bc40437fa0257834e9bd8acc2d8a7ca0981e3777dd61f988bbef808e30afee634d5d1450431bee0ecaf7c9a8e56f51a47a5e9294c633e05a8b53928e311555a0d995d1dcb782c0c20fc295500dacbfe53b7b320e49ddfee59b340027d0e4c2e5fd860f345ca12d9e65e85d52991354955ea3beeaa3cce03e73e27b262cc1d0ae4a668c81c6b6e2444e813562dc629908f3a9a8161bb0b37a5f72a9081deb953dbc1774c2069c5f756459479dc074a364b48dcf05b566bd5575cb19167658c379a3f330193bc3be8253ce9dc1e46b49049d97f903c49ea0b8be4a2d9703ca647e1d81c7f2d4d623c3c62c7c17abe5f452ffd4ca6b3447', 'category': 'Other', 'description': 'The image shows a guardrail with alternating red and white reflective markers. These markers are typically used to increase the visibility of guardrails, especially at night or in low-light conditions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2868.0, \"x\": 881.0}, \"hi\": {\"y\": 2917.0, \"x\": 1400.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5573: trackId=t1:0324b9a0451ab2159725509cc4a48c24:ffff005f, observationId=o1:a3b00fb6c011475f113703ec368dc39f:00110060\n",
+ "Processing image 5573: timestamp=2021-02-04 17:34:10.428898+00:00, observationId=o1:a3b00fb6c011475f113703ec368dc39f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be a construction barricade with alternating orange and white stripes. It\\'s likely used to divert traffic around a work zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2463801873696817, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0324b9a0451ab2159725509cc4a48c24:ffff005f', 'observationId': 'o1:a3b00fb6c011475f113703ec368dc39f:00110060', 'geographic_point': 'POINT(-81.9735951777373 28.0269296381928)', 'mapsURL': 'https://maps.google.com/?q=28.026930,-81.973595', 'captureTimestamp': '2021-02-04T17:34:10.428898+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa3b00fb6c011475f113703ec368dc39f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091415Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa87b20bfe185c4412f155cf6c1697cbf82158d2fb37406268217b2a02193b17f48a5bd8e313dc7aba80d3beb9fc3c7e7ac1c5c397555683f8d3d7bb08fd4a3d10c43efa616cf406c3c0e2ed9c4bd00bfdeb03e2b553bc453d509e03eaf00a414bc26fcfe1d137ab6c75734c22b1f3c1f0542cd573aecda6e50306aad6ec99bc7e6a14927222b9beb8b14140d3b3dd56859ccaccb38cff4f631e3dd3a627d1e9c5fe9ca95e4fe3d7a0f334f571b55bbb3bcea380364aa52014acffb1cb8b5e9851071de594d6ea60e2851957424e47c62cddbdc4719d7623ae7cea93ca9a29f88f4fe297ad631078678b9d5de35b524d872cb56cfa7ada2bdf8621ac2ac87616', 'category': 'Other', 'description': \"The sign appears to be a construction barricade with alternating orange and white stripes. It's likely used to divert traffic around a work zone.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2509.0, \"x\": 2521.0}, \"hi\": {\"y\": 2546.0, \"x\": 2621.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5574: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:c438473421282b5ef919ef0282865089:00110060\n",
+ "Processing image 5574: timestamp=2022-09-13 15:41:47.767277+00:00, observationId=o1:c438473421282b5ef919ef0282865089:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red stop sign with white lettering, clearly visible.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2744874954223633, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2557, total_token_count=2614) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:c438473421282b5ef919ef0282865089:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:47.767277+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac438473421282b5ef919ef0282865089%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092516Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7132438a66f33b4c7195fb515c633395b7d8cf3d0e17d142fd9a89f9830f5d1417ffdbca3cb72437699fca79ce562a6ea666bcf04f621c064b9969cf22f47c5df6ac4620e3307503f70829a04b8fb36a28a4d30d40ade74cba2f144a51f6dc02b8c6ad6c7a5ec4649d2d49a5156f854eb2f92beb857e67a87931080d7a719ba162cac47c804cb757dd4d17e14ae45cafbdcda31efb0d67df69b88fd979f9ed7db2b5203fd9ca01451f1537660acae42b622edad2e18505fab7f8404ca06901683400e6a00ab01adef6da5290572f570f9724e18c39250f36a4b5bd8e1fe08b4a00da7d68f2082d33d7cd4c35753fd78ad58f20dc9832c25e30984ef6bc101761', 'category': 'Stop', 'description': 'A red stop sign with white lettering, clearly visible.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2130.0}, \"hi\": {\"y\": 3349.0, \"x\": 2382.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5575: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060\n",
+ "Processing image 5575: timestamp=2024-01-31 19:12:24.074979+00:00, observationId=o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a red stop sign with the word \\'STOP\\' written in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.134448608985314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3589, total_token_count=3654) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:20e7ed68ff27bf06cda1f4caadbd8746:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2024-01-31T19:12:24.074979+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A20e7ed68ff27bf06cda1f4caadbd8746%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a35733f9b63967743de88b6f43c66666fd47c10386c8139e3eb87f53d39e9609ec3b7d91556b385322e924945fb4819897a239cfcd1b477fb6e165e391b4879167b960b98c4af6dc6a7f78efee817f6e2acf7ca32aa2e82fc92bfc260868543eeb2c712154e771da8b9a30992b79d8b3a9a70d7d9a82ac642f0845e16f8112399e49fd113381a70f23bd942b96913dee2e68213bab3a8b3b9837018228934a693c660c7358eb555e410edb93cd45012ba28696e9ab8531ee62c40a89b1a9d2c7f94cce06ef5654f55ba3d367fd83e9b0f1647ed696a5be142a8a791e90c2a96e7554f3ee594283115671da62f7572da383b31558b2f7b87b2845d2538b0b02f4', 'category': 'Stop', 'description': \"The road sign is a red stop sign with the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2111.0, \"x\": 1140.0}, \"hi\": {\"y\": 2519.0, \"x\": 1334.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5576: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060\n",
+ "Processing image 5576: timestamp=2022-09-13 15:41:48.659233+00:00, observationId=o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with a white border and the word \\'STOP\\' in white lettering is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13192765609077786, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=3589, total_token_count=3658) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:dde1ceeb4707abb63c7ec6c16e11103c:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:48.659233+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adde1ceeb4707abb63c7ec6c16e11103c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092316Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a151cf6f6e2581f2022328a6122a75101f09e2701a6fafbe3a1659c3a29c655f5f4e0180b94a897b0b45684057378cbbcbd76c4cb9d146513cb9519cec92348654687fa66fa3961ff2920151fc13fad4d31cf1a0a660284fadc994b22a852575da7f5e29c7a4526bc690b4bef7d2e2a6e9e203808349e2588939579c21da4228d3466a861e4f757e6d90bcc34c25da774b5ed371ce91113ec19622a1f7285ac0cd8a929b235e1b1d18c3b28859bdb916970c3903036663ccb3e4b1d4ba26110a9f240b8a5b6e746612241ad6b1266301af1a7ec33a173ae3a361455bb7499151446a442c2f2a714456e6cd1fd8de585d74a04c6fb6e9ea1881e7715e73b8ec75', 'category': 'Stop', 'description': \"A red octagonal stop sign with a white border and the word 'STOP' in white lettering is clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2085.0, \"x\": 114.0}, \"hi\": {\"y\": 2565.0, \"x\": 362.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5577: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:120edca293acbfb3dbb9bea06e8f60e3:00110060\n",
+ "Processing image 5577: timestamp=2024-01-31 19:12:22.927066+00:00, observationId=o1:120edca293acbfb3dbb9bea06e8f60e3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with the word \\'STOP\\' in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06723222732543946, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:120edca293acbfb3dbb9bea06e8f60e3:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2024-01-31T19:12:22.927066+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A120edca293acbfb3dbb9bea06e8f60e3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98cf779286c5ee7ab29d837d13ddd948bf6705cec76bf326c7f270db10b066f220974ecdd4030ba735e243c730f25578511c35e8c0a08a70b2c0e20b704b8ea8765246d908653a8e1e7595408774e81b2fa47d5ff3c978e1d982bc4f4de0946071b36d1e97d47043cd94f58fab50beb36a0b6c6d7b2d1b720bf73bdcebd977dc21d2728f7c593fbe98b2c95731066804c6faf4751dd6c77f8c4a83a132dab404d37e182ae66385cc6d7b1c341b9b80e68dfa9dd655b5af60519415e2c71f8e7a7412141e1cb75f5c04cd4e146c4609709daf1325be8bd0ca1368c22c9f15f8eb1779e0fcb28cfe3dadc57fc8683ebc65e3d19e3854515283c4986bb5b44e29b3', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible with the word 'STOP' in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3094.0, \"x\": 2503.0}, \"hi\": {\"y\": 3389.0, \"x\": 2752.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5578: trackId=t1:0325a38d0488f540b76777b56382bcb0:ffff005f, observationId=o1:22b9cd818f9f6b28cee3d144b810e383:00110060\n",
+ "Processing image 5578: timestamp=2022-09-13 15:41:48.659233+00:00, observationId=o1:22b9cd818f9f6b28cee3d144b810e383:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15045557449113078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a38d0488f540b76777b56382bcb0:ffff005f', 'observationId': 'o1:22b9cd818f9f6b28cee3d144b810e383:00110060', 'geographic_point': 'POINT(-81.9154442718085 28.0281638923231)', 'mapsURL': 'https://maps.google.com/?q=28.028164,-81.915444', 'captureTimestamp': '2022-09-13T15:41:48.659233+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22b9cd818f9f6b28cee3d144b810e383%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=203e5e07d4410eccc58376e457b9165c76f593c5564ce97140fd43d30b72c5ad6ad5ec137f23cf92ec26e698c52bd30edb5c4ff5ba5463e6d5338022425b6a82cd025014ef7238201b5f676dad2cab34a069a609adba7ddcb9a0bd3be6fc75e6632ced5e262b575d48bbe147f8051c6141164154e22948c1de7089295a350ab0168b685e425ac581c06acd8686fe26c51a26cb9f802ede08d32bce31779503d0dcbbaa0ee1cd61d9ec15a8439e7ac1f3ab1e51d09d7ea4fd7da5fb956e29600c11fcd4da4216e0fcedab93351a6653392fc6eaef556de9be262d7b63168568070dadcaafce3bf5b140bbf81ca65930178d143d03a10196be178181e8674117c0', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible. The sign appears to be in good condition.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2968.0, \"x\": 3193.0}, \"hi\": {\"y\": 3438.0, \"x\": 3443.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5579: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060\n",
+ "Processing image 5579: timestamp=2024-01-30 19:30:59.319123+00:00, observationId=o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a road sign that includes \\'Howard Roberts Rd\\', \\'Fish Hatchery Rd\\', and a yellow \\'Dead End\\' sign with an arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2169649941580636, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2041, total_token_count=2118) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:7cd39f8ab3913d3da7f0e5fa3c536b7f:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:59.319123+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7cd39f8ab3913d3da7f0e5fa3c536b7f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=71651ec553cabc2068a3aa5a788719ff7a497478b3c9803f07d2ead58e0217822bae70d4bf46bca61d1e25510e125d04916c955d7248191b3f9426b588688d547c11469e83b3c9f62feaa35207c59feba2091776d79fb7cafc3310d2787f10c52c149776350510f002d36f89207b0c0730d9d59dbf92d555a2e91df1b2c7e2a52c64c12d1f313fb4d7b56cfd066cfb456bae1e4425b49153a43bb396d40b71071e9360e784bb04e98586f9b97c4f27ac3956f0e5cc740994a4c909b1dec1159589d46a3e5a44a60b2eb0c5f9562393d272d9d0470d16763c691582ec52620bc581d4fbbddcdb17c0223f8b1b14bca08d130331d2ca28d861bb1b9934836331ac', 'category': 'Other', 'description': \"The image shows a road sign that includes 'Howard Roberts Rd', 'Fish Hatchery Rd', and a yellow 'Dead End' sign with an arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 3122.0}, \"hi\": {\"y\": 3345.0, \"x\": 3404.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5580: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060\n",
+ "Processing image 5580: timestamp=2024-01-30 19:29:05.338677+00:00, observationId=o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a combination of signs. The top two signs are street names: \\'Howard Roberts Rd\\' and \\'Fish Hatchery Rd\\'. The bottom sign is a \\'Dead End\\' sign with an arrow indicating the direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16269395639608195, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2041, total_token_count=2132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:3bb86d1694df2edd21aad3c0b7d77a9e:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:29:05.338677+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3bb86d1694df2edd21aad3c0b7d77a9e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091727Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=801c3db73060fc1871915e33315a323e858b21eb770753c75ecf067847aab3c2a48adec4f79ae9832968a1660256c2ff38db3a1062dac2d35cea912ba4f9d75ae00ecd6189778d5ab241ab0af8020554753051749882284cf606d2df154fbf10f0e039e41d0e1198a8afb1e76fd72f90ce2b529c4a254b620b1eea58722ec12c55c7d40c9647a3fd1bd8b026b8e344f72e20996645e3af17ee0174685f5b4e60e71d30e478a8b1f558bdfb5b813e64cb1dbfa329a2662200a8b3808b44c754125cee9aa76298a1c32b3f8e01f42ee69c47e8043c581db645128b377010be982a5fa2d0c972f37fe6368513e4b127901d63c6a2bc4f22175333243782b387e33b', 'category': 'Other', 'description': \"The image shows a combination of signs. The top two signs are street names: 'Howard Roberts Rd' and 'Fish Hatchery Rd'. The bottom sign is a 'Dead End' sign with an arrow indicating the direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3178.0, \"x\": 2671.0}, \"hi\": {\"y\": 3265.0, \"x\": 2935.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5581: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:600371cb6b1724d34707d04ae80cf126:00110060\n",
+ "Processing image 5581: timestamp=2024-01-30 19:30:39.192178+00:00, observationId=o1:600371cb6b1724d34707d04ae80cf126:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible. The sign has the word \\'STOP\\' written in white letters.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17544765748839447, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:600371cb6b1724d34707d04ae80cf126:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:39.192178+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A600371cb6b1724d34707d04ae80cf126%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ca723cc93f7cffef7af21666980f051a4d9d3afbd6a8de3531fd23071670ffbe71d72bdef490694e3783e03e0011b0f670d3341afe67ef5e6bf12b8d93106a82da49c769371d95f01c28ca857db1baf94fc072a85897945a48844d44d7674f0487dcb334293d0facc0076a7ce63ddf215f2d6cb081dc80820d3a90019c70eefaa0d59f5d4b3e30991dc0384e5b7388994736d252f62656e6a816963798b2884aa0d6ca4a0ef542783644b573519362bb1bce8ea38a713c0023adb95faf223984cecc681a331ab221e625b083e9f5216e9ffc63fd9693b2399c26ffda3ff864d06bd50f6e29d5f084da81948223526039d79609e01df440b11c5555e4fa324d1', 'category': 'Stop', 'description': \"A red octagonal stop sign is clearly visible. The sign has the word 'STOP' written in white letters.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3261.0, \"x\": 1959.0}, \"hi\": {\"y\": 3335.0, \"x\": 2214.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5582: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:bdaaa57890798fb8426c61a35aa1e49e:00110060\n",
+ "Processing image 5582: timestamp=2024-01-30 19:30:43.319554+00:00, observationId=o1:bdaaa57890798fb8426c61a35aa1e49e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are three signs on the pole. The top two are green and white Street Name signs with the names \\\\\"Howard Roberts Rd\\\\\" and \\\\\"Fish Hatchery Rd\\\\\". Below that is a yellow sign with black lettering that says \\\\\"DEAD END\\\\\" with an arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29233184370022375, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=103, prompt_token_count=2041, total_token_count=2144) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:bdaaa57890798fb8426c61a35aa1e49e:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:30:43.319554+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abdaaa57890798fb8426c61a35aa1e49e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092218Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6fec00725933ab41a82a6bd8fd978be8cd5661c0c7063ac0ea45f19856c6c86caafc3c08df6b021eddb5bb0be1da23bdce2a899324199c76f88fdf21a28246cbe34ee0abea0f8af8a9c09eeaee99159b1dd327f3132fbebddb7281317d4938c9e1454154e006f9c548424979186aa2ec3bfef39c4bf82d8499be2f65e75b81cfaa63dfe1c09cd3edbe0802e14c7d318b2c2505e4d83b09bc7c328b3acb4577b7eae347e6adc269509c5203ba42a2c7e35e33ba5e68269fe8de3663a5efa9a74d02c964021dda35478c8ad0f898f9a475d3dcd723aec88adb1f7cf963a93150ecd6e366865eb288745853a3d0aa1afd46d5ec94b3dcec1befca203b77f576427c', 'category': 'Other', 'description': 'There are three signs on the pole. The top two are green and white Street Name signs with the names \"Howard Roberts Rd\" and \"Fish Hatchery Rd\". Below that is a yellow sign with black lettering that says \"DEAD END\" with an arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3294.0, \"x\": 2632.0}, \"hi\": {\"y\": 3393.0, \"x\": 2942.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5583: trackId=t1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f, observationId=o1:bef030ff7a19fae76a0ceb677594218c:00110060\n",
+ "Processing image 5583: timestamp=2024-01-30 19:31:31.317945+00:00, observationId=o1:bef030ff7a19fae76a0ceb677594218c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street sign with multiple signs on one pole. One sign says \\\\\"Howard Roberts Rd\\\\\", another sign says \\\\\"Fish Hatchery Rd\\\\\", and a third sign says \\\\\"DEAD END\\\\\" with an arrow pointing right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2317783649151142, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2041, total_token_count=2132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325a40e1b00f6603a5b8cf5e93edea4:ffff005f', 'observationId': 'o1:bef030ff7a19fae76a0ceb677594218c:00110060', 'geographic_point': 'POINT(-81.8957357042754 28.0520998426119)', 'mapsURL': 'https://maps.google.com/?q=28.052100,-81.895736', 'captureTimestamp': '2024-01-30T19:31:31.317945+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abef030ff7a19fae76a0ceb677594218c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=99907d2fc8ae2d6134664d7dc4523d442ee6a6236e894d86ce2e10f577ae635d9c7576e34c0baf8a7543e1dd39e2629fdccaedba0069ced536b51ef0925268805500d8d81698976f96bccaaa9f74492ab7653924b9f9281fedfbafd76c302e94aae3c8390fee26070af4f798ca1c67ec4970798529d2ac15b4189051ff15b4fc05542b5518c7a6430e684eb348cfd3cd57c0131bd8af56263f1bb31b31d43e52ec10a4054e1bdedc0c6c83ce10244136a53d845dc8bf3ae6aedb4a87a8def5358febcaa2c20bb8101d299b8f539f976176fa4ec822899955c8a01b854cade946be6da0673fe717ac24cb2fad5fcf9cd005ef8099a0d88dfe4dfe1707c347f235', 'category': 'Other', 'description': 'The image shows a street sign with multiple signs on one pole. One sign says \"Howard Roberts Rd\", another sign says \"Fish Hatchery Rd\", and a third sign says \"DEAD END\" with an arrow pointing right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 3122.0}, \"hi\": {\"y\": 3345.0, \"x\": 3404.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5584: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060\n",
+ "Processing image 5584: timestamp=2022-11-30 22:57:53.070110+00:00, observationId=o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a designated bike path or trail and street name Parley\\'s Trail. The other sign indicates the address \\'300 West\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.48031083131447816, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:dc8e1b70a06ae7e62e20e7ff4503ac00:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:53.070110+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adc8e1b70a06ae7e62e20e7ff4503ac00%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=99fe6d14a3c916f747a207521dae46eba1eae706b2582eee2e78647044022494cb4752c03928e911fa567f25b9bce375f6441ea50dfa6e17811ed60bb39166ac0adbaf32645ebbaee0871f7f6d34bcf0968de57bd95a909a454a5883cb5d4cd97f6b35e317d4fd542a1ab1743e44e2745c461ad2b3e5f843983cf6277ae60eb86c64355ecec80278dd64b4dfe1eb9df0985477a6a3ae7fb7f5ecefd5c64d9f142f694670df4f6a778d3a4dde0e4010b3ba8c2fbcc55aee6f8667b1dc165c6d6db627d74bd0db5a34c3a1107077ed6d2199bc3947051c1de0f959354a3101659955ea9b3e25fc51da283da5447845745474e2fd9520024e734180711adee5e29e', 'category': 'Other', 'description': \"The road sign shows a designated bike path or trail and street name Parley's Trail. The other sign indicates the address '300 West'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3186.0, \"x\": 271.0}, \"hi\": {\"y\": 3254.0, \"x\": 342.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5585: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:519bf31b0e2a0843737e9dc5a997c01a:00110060\n",
+ "Processing image 5585: timestamp=2022-11-30 22:57:50.338113+00:00, observationId=o1:519bf31b0e2a0843737e9dc5a997c01a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign shows \\'300 West\\' and a sign below indicating \\'Farley\\'s Trail\\' and \\'W. Wendover\\'.\",\\n \"image_quality_notes\": \"Image is partially obscured. The sign details are somewhat clear but resolution is moderate.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5527307298448351, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:519bf31b0e2a0843737e9dc5a997c01a:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:50.338113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A519bf31b0e2a0843737e9dc5a997c01a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa3a13deb25d8ff6f3e57b3ec0a7aa87254627834d7cde7e3dccd912d3da0e951cd39b763d93bf728e1a3a27d66dae5c06119430c9f7d9d5db1af1de50ef9fc28a4b8e157c3e6f7a491bd3cfc7c193ffe9ac244d5ac54a3f139d16efd5740888eee4fd4f44cb7cd4f6a490d384db2e70590529b7623546131cde17be3d99d94b8dca02dcddc8d98469875797e7111933d0d9584bfea4c2a8a4836942965a1015ebfbc5ec4326008bc52843848ee1dc4e863fc058fc47fc07f8de35e4d325f66b65e814356f2f154ca139051a960c9d4cda3bc910b8a1dd030321db13026427d86869c72b8280c1c2192d4f4ae556f8d4afc7e87b4dc6fcbfeb505afaaba67393', 'category': 'Street name', 'description': \"The road sign shows '300 West' and a sign below indicating 'Farley's Trail' and 'W. Wendover'.\", 'image_quality_notes': 'Image is partially obscured. The sign details are somewhat clear but resolution is moderate.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2253.0, \"x\": 342.0}, \"hi\": {\"y\": 2346.0, \"x\": 416.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5586: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060\n",
+ "Processing image 5586: timestamp=2022-11-29 18:25:47.609339+00:00, observationId=o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a \\'do not walk\\' signal.\",\\n \"image_quality_notes\": \"The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4281504839316182, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2041, total_token_count=2128) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Fair', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:84cf474b8a067b65b2200f9fad6c0ac8:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-29T18:25:47.609339+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A84cf474b8a067b65b2200f9fad6c0ac8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52403681d705836f05868eb932c60dbb884de243893674f3b170ba6679c29cec2047700450d17a61c4555fcb3b72ca18193c7975ee904e833ea3c355b2b772895b62833ecaa8a38c449dc3c03e2c1ed8d0baf343d3b8a9c885d268bbb1109d81a7ce640de17af2c4124516c5fd367ceab9ec2b2f3e87dc5650c5cd7eab62927463d8f9f51820bb9550aa4f378c4041264fd279751d34fde765e87b55da6cc0858aa485542490101db4c1979251ebddce8a5f0c4bbd543ce9448e67081bf9ae16a92c30077575e56a95353848a817306009f80f1f8a67d2910fe01c847d8e2c2824a8bcb5effe3ab3300e3f540b7e36f3f5c6bbe60f43fe1dbfd3c2f161ddc963', 'category': 'Pedestrian Crossing', 'description': \"The image shows a pedestrian crossing sign with an illuminated hand symbol, indicating a 'do not walk' signal.\", 'image_quality_notes': 'The image has some obstruction due to a large black rectangular block, but the pedestrian crossing sign is visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2373.0, \"x\": 801.0}, \"hi\": {\"y\": 2447.0, \"x\": 859.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5587: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060\n",
+ "Processing image 5587: timestamp=2022-11-30 22:57:49.450111+00:00, observationId=o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text \\'300 West\\' and \\'Turley\\'s Trail\\'. This appears to be some kind of bike trail directional or street name sign.\",\\n \"image_quality_notes\": \"The image quality is poor; however, the sign is still recognizable. The content of the sign is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6190322742127535, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=114, prompt_token_count=1525, total_token_count=1639) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:ddf0e0afc5fd9ec846b167ff7ff0873d:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-11-30T22:57:49.450111+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Addf0e0afc5fd9ec846b167ff7ff0873d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091013Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3fe23f3b9fa5031862a45357baf1d2978aa536cb167ca807299ac0e4da1a79450d8e192ed19996c9b36f97b9b1f7d7cfabb3dfb295716daca92cac69749a0f8486e41573ae26efbdeacff3c7b614bba3b437b7343c31c8a74145669bacb3c81acd1a867e94d306399be609b0a81995d3057da9dc26d0ef687a619b518df27fec402433e8132ef586d6663d591ade625617a49518ad4f206d56756685c00ebdbbd5182ade504905321896d5ebbf009b7917f114fa696d40c3cbbb15875dd54a9d9bbb28cdfcce7e2894db5cc68da6a8a86cd12e0c018ac4f704622efe19e2e6d3ad567ace565dd6092778f3d4eeea5ef4b7669944f74867776aed07ce8846cd58', 'category': 'Other', 'description': \"The road sign depicts a bicycle symbol, likely indicating a bicycle route or lane. The sign also contains text '300 West' and 'Turley's Trail'. This appears to be some kind of bike trail directional or street name sign.\", 'image_quality_notes': 'The image quality is poor; however, the sign is still recognizable. The content of the sign is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3181.0, \"x\": 2877.0}, \"hi\": {\"y\": 3255.0, \"x\": 2933.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5588: trackId=t1:0325acfe3801485b134acae8e1cdaae0:ffff005f, observationId=o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060\n",
+ "Processing image 5588: timestamp=2022-12-09 17:34:47.362776+00:00, observationId=o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40977894632439865, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0325acfe3801485b134acae8e1cdaae0:ffff005f', 'observationId': 'o1:fbfa7d8704cc177b5a5a41b2a894f0e8:00110060', 'geographic_point': 'POINT(-111.899861443103 40.7413635570829)', 'mapsURL': 'https://maps.google.com/?q=40.741364,-111.899861', 'captureTimestamp': '2022-12-09T17:34:47.362776+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afbfa7d8704cc177b5a5a41b2a894f0e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a861850b97c1a296195da4e2d84d165a375fbb8a9d6545d344341cca69d3e2add1faaa7e95d94a06798324d8a62574dc7385e6e8ff334a47267139a48fb6b317f6730f41efdb7b2b3e1ddb0a5848df1ac0a92c98b729a64312f741a23917f459579bb66f760501a00ef4e75d028aa10a3ac069aabe3f353b194e060ae23dcde64163f8f71fafa6bfa892e544dd6d06f9c9052c9085d560162d9523c316d9db07332fa302ca3c3f19b7db63e16caee8e23c71650277b89186fe96cb4df2998fb06e75bba809b2f8cec63b451d254576e8f7ee2dc09b18e21b3fde42e8a4a92c9376a9d19a154b2bcd8b9d7f93163bba76f02c548cd62d196ad12b40ef1dda525', 'category': 'Pedestrian Crossing', 'description': 'There is a pedestrian crossing sign with a push button. The sign shows a white human figure, and the traffic light for pedestrians is red.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2325.0, \"x\": 2411.0}, \"hi\": {\"y\": 2401.0, \"x\": 2479.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5589: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:ab3bf0f554f88dd2b8ceedf0c8cd4291:00110060\n",
+ "Processing image 5589: timestamp=2011-05-06 21:53:17.282788+00:00, observationId=o1:ab3bf0f554f88dd2b8ceedf0c8cd4291:00110060\n",
+ " Error processing image 5589: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aab3bf0f554f88dd2b8ceedf0c8cd4291%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092616Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=913355bdb2b2fb124b14d06464fdb08a54fc4d81453ed73d42285edb28a171d376eb116e2cddfbcc3bf42a59bcec7a5409bfc06a6d833ab014dfc2869501df580800bd72c78a949125338cc3764379aa61bb89d5415efdfae5c8c33fe2fe6dd73397d976dae4286d40ae069d786ab78e39b103dc698242adb6f6da3a617a1aa6893dc84bde63d43bd3c3ce1053a07f558e78bcf0a2b9089d224bfaeeccb0b7cfc30ba6888631b0bfad1b0d9b7c1ec2e943b4ade22be9cf05aa9f93e2a24aced9d64047668ec3ed383b038e4b037f0eaecb648a2bf3cccede7e4e29502379097968544a4cbb8180ebda109c27e15effbbbec7667613890aaf14364c3a5f5dbe67\n",
+ "Processing image 5590: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:0e68d6eca2d74b5b138b675133c425bb:00110060\n",
+ "Processing image 5590: timestamp=2011-05-06 21:53:18.954660+00:00, observationId=o1:0e68d6eca2d74b5b138b675133c425bb:00110060\n",
+ " Error processing image 5590: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0e68d6eca2d74b5b138b675133c425bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92f5d3b1d5e29f92823d60930e81e0025dcca7d10dbe1f91a0e1ee7bfd819576f5e7ef0e7e8131012600bc7c4c7f9360ca216e5b4b3cc2615c805cccbaceb38267c5b1388c8ad96e5f56351aa39e5901360f4ed3043d68fa21170b8debd49da86294d8cdd48bd5bf8c6b43444fe204bf7b833c17fe31de476d077915698b6d79120e32d2ac60dbc7512d5b5d669a20ce9f81fe7d9d631f1c3c15088f4fa16caf56a2a96efc5392f173b8dae08d473313c9408c1b6e2f63aca26b86c3d729739f4a3fd5be397510aaff4fcbfdb818eba670056fbcd2258acf397f23b1395bfb708043cd50b9473e1fa71941754ded95791faf0ea44e48bfda5a21783e5f3ec009\n",
+ "Processing image 5591: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:9fc850b0a729aee985a3248864271dc3:00110060\n",
+ "Processing image 5591: timestamp=2011-05-06 21:53:17.709391+00:00, observationId=o1:9fc850b0a729aee985a3248864271dc3:00110060\n",
+ " Error processing image 5591: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9fc850b0a729aee985a3248864271dc3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31dfaac8bd64cd2adbb8c82917e3dd9b8b0830260b26319a471023e75b3badf94fb687427d306e472a69caaf5cec1a3ec8553d1067df5cb4717c2d38b1ccbdd5221976e0574ea963b6734c22c04a0ddd285acc6866e4e8e304f496d2d22cdef8a0d454a3caef34af6d4374846dc60687f277933c9435676829dfad7d56104507977fcad5b6e1c852e2aba9d83f26be22f075951a914a7aa496c6952b7f8290193e5e7bdbcf5684858e2dfb1652a24144b783f5834b46e3c412c54e2e0dde8577397ff55ec03f9f2b3776d413a7e2c8d0dcbacd9ecf35d72402161d8ede271993ce4d5ea3f3033c6df8eb5368c1712c8e01ceb2366b81396470f0e11a2447da12\n",
+ "Processing image 5592: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:1f838f53a1fd32c0318b328940d8cdd4:00110060\n",
+ "Processing image 5592: timestamp=2011-05-06 21:53:18.545253+00:00, observationId=o1:1f838f53a1fd32c0318b328940d8cdd4:00110060\n",
+ " Error processing image 5592: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1f838f53a1fd32c0318b328940d8cdd4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090918Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1a9b80a3e970ba13890c19a7949d4e97aa0aef964ab75e5241dcb264bb0c353add45325cef8b97b8bf3c75d567ff8b7de0e2fe1d859ceb727261318ab3f8a26759fc67f7e2dde9605bb874fc39d8b0d1439027e0ad09a2d5664d422a0577c1a1345eb2379a96744b4615aa2607637fb8e7856e03c52eda3f2494c3d63e57348ab84d929465f538ebe0e628a8f889e874386082e892df4d8259f4731c3ebada9d9494dd17d259afb12534bf4b5a0467f9afc969038295988bd5b94830a09332de1d7ddbb6b2e93cdeb05e444e038e1a71d6cc7d1b561b9776935b382e047b0109714fb6b96c72ba6969607c4cbd169af1a02ea04b7233e9e4d240ec92774d79f3\n",
+ "Processing image 5593: trackId=t1:0326c117d85095fc26c8151272d9d99a:ffff005f, observationId=o1:f03a31a47971a987b3a5199fc6457394:00110060\n",
+ "Processing image 5593: timestamp=2011-05-06 21:53:18.136021+00:00, observationId=o1:f03a31a47971a987b3a5199fc6457394:00110060\n",
+ " Error processing image 5593: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af03a31a47971a987b3a5199fc6457394%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=459e38d17f9c83437ef52ade5fdb5c496d8c466402929caea66119ae01272b40f15d92807ba2787df1fd7d50a6b3bfc2cfa7cea972d719c276564837075e007b7fc9b4d38118b2bd0b5168586ae40f1daaa213daa4c4cbe710524294c1081f304515c8652a84326fba2048ac1347aa696db49be5019682dab7b78861f6d737851d8fc53f5d378df82794366758f042febda80d850ff7ac2460b80b3064b64c9e8548b7c51f80e33b0ed0bf5b5f033fdec5f24891ecf8937034bc71faa1d525a57482918d30cc46f00a3706ca83f9c0042a1cec0b96757f57b244d7ffcc949b5d9abc592dcaabf93d6b1588232a19e2cf6717050e0cf494b0c77fb326ecf4a425\n",
+ "Processing image 5594: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:7af7f6cb11617f5d3572b54c2816154a:00110060\n",
+ "Processing image 5594: timestamp=2024-04-18 17:35:14.855802+00:00, observationId=o1:7af7f6cb11617f5d3572b54c2816154a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange and white traffic cone is visible on the side of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.03282162009692583, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=1525, total_token_count=1586) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:7af7f6cb11617f5d3572b54c2816154a:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.855802+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7af7f6cb11617f5d3572b54c2816154a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091625Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=50d519dbc2982f039f699f1f32cc6ad8f6e12c8d8eea822eb8441adeda06f853ada040c4f74899cc04715919b13a35e35436ab6e79e7d21e36f206c91e8f2b9a40b14b324b5c1fc417da9f7c5f2e7b0f4b245d9fe3a0c654eb4fb7ddcd23bc3eacf5938a34ce88533235fe834cbe2ba622e73e8866c918af2babf5689bedbef5165b8a9365f398c154e365f575d8dd7be72e9bafa5e087feca0874c5b3b3d7befc96c2d840150970327ba944334ad1b9aeae56c9fdd6e84d911a2a3c28d5d5e52d21c4727f3151c7942d744a01380350eec66fc01b79c08aae8f87e2e4aaa5d320fb2c6ea134ab938980e3fa9a3699ae0c330bc67f1427c832ef92d3d5501338', 'category': 'Other', 'description': 'An orange and white traffic cone is visible on the side of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3577.0, \"x\": 2002.0}, \"hi\": {\"y\": 3767.0, \"x\": 2069.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5595: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:26e715e50258c73b0b3221fc77e37ec4:00110060\n",
+ "Processing image 5595: timestamp=2024-04-18 17:35:14.111720+00:00, observationId=o1:26e715e50258c73b0b3221fc77e37ec4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with a white band is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14799082906622635, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=2041, total_token_count=2098) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:26e715e50258c73b0b3221fc77e37ec4:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.111720+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A26e715e50258c73b0b3221fc77e37ec4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=047c2a591776a94fc62de5fd8a0f2329a48163e99e1b2f42c587a13adaed34e3f1f6574714cdc8758c2756d7af0ae714b79762447bcad291c9d89bd15c603d92563fd2ec0a5f5727af4e957f5fb8d69e717b81159e8259d596a71568e254aef6e70245a8fd1ddcf323b5d3ac1f58cf526db98355e7611b143dc189b64f1b01e7d62f7614a8e81598167bb8a9e2c6d5c1d4128c7ab2f200be9b038d5f288467236fafa91037c93668fec13c7f99a91ae723a5e7158c61bd6c3e2fdb66e1d547472835ddc0c921a2b5e753f72d1bced82ce2a2f7a7e888e3a148a9279251573ea2ebcd86f032f805fb03d8ebe94fd4d847c8975f80fcdf5f5d6d2822d9036fff34', 'category': 'Other', 'description': 'An orange traffic cone with a white band is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3065.0, \"x\": 2551.0}, \"hi\": {\"y\": 3445.0, \"x\": 2671.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5596: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:adbc06dc7a380b37bb10f7050911a8a8:00110060\n",
+ "Processing image 5596: timestamp=2024-04-18 18:21:23.010406+00:00, observationId=o1:adbc06dc7a380b37bb10f7050911a8a8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is not a standard road sign. It\\'s red and white, and appears to be in fair condition with some dirt or wear.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.296492243922034, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=1525, total_token_count=1611) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:adbc06dc7a380b37bb10f7050911a8a8:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T18:21:23.010406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadbc06dc7a380b37bb10f7050911a8a8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092423Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03cb7712f6363d6a47b9f96573100a5bafeb4366e79e1264d7540a513e8a87859ee7bf047d03a3b1e6a0e48bad05ca38d9a951a1e130ccdc0b7cf91f3644a37fe0d9d46d0c8f8b9ec4661a83559be6bef1f2ff19e03e3158fba21d6648a2665dbe1d763a4a853d1b1f06838338bcb10888f9b7ecafd96791c7a8154e73880c810dc609bdea3c6e286543609df159a4aede807ecf5929e6be9b79f32057ba2350b0d4d9f9dcfc54faeb46af643bf36e374ef7ad98bf8a40e96c8809f94ad1a288e765ff302da47db7016bd37077a59809301267974b9ee6dc9366488f24e0853a94f583a99554ae8e2a4e0a1a62800c3a128725ad2eb7ed5887d0664a53c38aa4', 'category': 'Other', 'description': \"The image shows a traffic cone, which is not a standard road sign. It's red and white, and appears to be in fair condition with some dirt or wear.\", 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2729.0, \"x\": 2155.0}, \"hi\": {\"y\": 2932.0, \"x\": 2218.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5597: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:b27ba615afb48192d151972195234c4e:00110060\n",
+ "Processing image 5597: timestamp=2024-04-18 17:35:14.483794+00:00, observationId=o1:b27ba615afb48192d151972195234c4e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"Orange and white traffic cone. This is not a traffic sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17139675657627945, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=1525, total_token_count=1584) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:b27ba615afb48192d151972195234c4e:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T17:35:14.483794+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab27ba615afb48192d151972195234c4e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091817Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1e09319b22bcf4088a7317bc5974131114811740c68f2513fce209dafcfa6c34ad62a40c5dcf4b72c577cc00c40d4e7c6e779c96567d17c687e6811a85d536d401e1c02b71b294a5f1c9c7d46ad91e92135f8dabd350f1cef70b202a5430671a36979d7d4cf9fb2f76e5c5f51f905d47968da76e64eb2e9333a74155d6703628dd743170df19c0def7364b103a18e8f050574cd6594b6d90842bb643a4254ef645d84669d855bc69057e6cc31dc926412dbda0e51abeb3ead5a585da42d67784281dc552be15327c6fe04bd382e14b66b31aa68dc32e81b99eb97bbba609f0135f17538945c958a35564e85d51f1a8d4414f5b3d15ce5f346df647d854f60f23', 'category': 'Other', 'description': 'Orange and white traffic cone. This is not a traffic sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3742.0, \"x\": 1252.0}, \"hi\": {\"y\": 4021.0, \"x\": 1345.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5598: trackId=t1:032789852f5521733daa992e8b6be9c8:ffff005f, observationId=o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060\n",
+ "Processing image 5598: timestamp=2024-04-18 18:21:22.686395+00:00, observationId=o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic control or road construction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19159318506717682, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=1525, total_token_count=1589) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032789852f5521733daa992e8b6be9c8:ffff005f', 'observationId': 'o1:22f3c8a1e44ebcffa9e9a90a720abc45:00110060', 'geographic_point': 'POINT(-81.8900705686203 27.9967374588683)', 'mapsURL': 'https://maps.google.com/?q=27.996737,-81.890071', 'captureTimestamp': '2024-04-18T18:21:22.686395+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A22f3c8a1e44ebcffa9e9a90a720abc45%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e93d3afd45973f4f0f9536cfe0e27d1881f68ede9f06dd7952562c9bbb744faa73b64574e5aacd98de641fa01a0bd72b89321b2cd87a9f5b5d1d0e9ed1301420b99b5800e94560e5888c2331343f8b21be6484c34051ac5e72ebf622bfb4127855b8e2baa9eee79ef601ff2f95e1857149d2a9dd6307f5e33d99b46c0966b1fa733285ad2d5b6f1c413a9a3a053e9780eba459b878a336739be265562d853c15ff3a9a7c70537b20894775a0f881839eaa0848e95b8fc09588eeeb75176ede4f8ef9bd0a660d98159f2e55872cb69ba451eecd1e5d0c5158ddafbaf124184aa4c5d83b98c66681bbaefd4c7f8a8d04cb1bb5033d2af6ba6dd251048084e7184', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic control or road construction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3623.0, \"x\": 183.0}, \"hi\": {\"y\": 3810.0, \"x\": 248.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5599: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060\n",
+ "Processing image 5599: timestamp=2019-02-14 18:53:50.267547+00:00, observationId=o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign appears to be a \\'Visitor Parking\\' sign.\",\\n \"image_quality_notes\": \"The image is partially obscured, but enough of the sign is visible to identify it.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20303213092642772, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=1267, total_token_count=1338) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0327b24885a6db71f0e84c26dcde149e:ffff005f', 'observationId': 'o1:b4e7aae3c9e2ce373197aef6dd8360dc:00110060', 'geographic_point': 'POINT(-81.9751876228692 28.0179646265678)', 'mapsURL': 'https://maps.google.com/?q=28.017965,-81.975188', 'captureTimestamp': '2019-02-14T18:53:50.267547+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4e7aae3c9e2ce373197aef6dd8360dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8e2314403a002ccdcddea18166ebff5ef6b777181f9ce6a6e12e63755918a08dd0e22e87c6f7928fbbe769428c9b978db3e2bc1c0f5bd4055a52cb29397fa4b4dc384afaddf565bfdbe4389ec32db811bf854a88b3e4c7a7281228c027f3dfc2511de8a3062c271d116ec08d2ea3dafb4f7042360ebaeb6d92684349a8330133494ed45779ab5b3a10e2fa48b0708a8afb8a78a1a316ddf5ef9a4b6d3f387c2ce75b823584f8205123da735ff1f0c383eda87afde9eb1ee9e0e4684c74a89f40ce47e6c92c0108dbbbe365ba62217706b5186d4d6b0fdca4c6eb1ea39d00766d30aad5b71bbf26dc5e370c198733cbba206a3dc7bed2e142e22a9cc14961cb65', 'category': 'Other', 'description': \"The sign appears to be a 'Visitor Parking' sign.\", 'image_quality_notes': 'The image is partially obscured, but enough of the sign is visible to identify it.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 0.0}, \"hi\": {\"y\": 3226.0, \"x\": 48.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5600: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:480537dae17f240a6ea91026cd715d95:00110060\n",
+ "Processing image 5600: timestamp=2011-04-28 20:53:58.936054+00:00, observationId=o1:480537dae17f240a6ea91026cd715d95:00110060\n",
+ " Error processing image 5600: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A480537dae17f240a6ea91026cd715d95%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5be4f7c209dbb182faa7f70dcfe140b7726165bb69219a0e2b9552fd5d2d62619a97e046ffc8e0bb2d92325b10e33147b8530200e32d0b9f61b7d048a286ec3f00450711160a1277a02991c473abc885670661d1d20bbc3be7ee7885b9933b474220f4101dcebd759622c831df9cc9304dffab1ab5b1808634273c77437f8fd9dc156764f7c052f8d8360e071452fd8c4f2037426251acff2a41dace87ab1baa0fb2fa62d3b7a76770ab170d42baf88f19caa150bc2e7340ddc68e3a9beb77c85a853c10d3d0df9569e394d3ad2ecba71a32a32edcb905957f4218c761b6d2f142e10c1add925d81ffb4cb5855d2b15fefbfe91a871746b8aee246cd4d81f69b\n",
+ "Processing image 5601: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:613b4d3fb7b3b24820754c4fe04397bc:00110060\n",
+ "Processing image 5601: timestamp=2011-04-28 20:53:59.767109+00:00, observationId=o1:613b4d3fb7b3b24820754c4fe04397bc:00110060\n",
+ " Error processing image 5601: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A613b4d3fb7b3b24820754c4fe04397bc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=78b3591b161b69c878e61978ae87bb55c6f03b9184058b46f53c77a0137ceab37763a76fed01933aeb5b741a265bb75511bef936eeab88d428abbf6c1015531750895aada9373e01c530074d2539ed922954500a92d51296ef375e28b21576a2b674a0b7adae90c6d20c945db87fd116359c324c9d5e6693cb6b420ef59f300eeec26c22feae9e6173eda9d7a6aeb31f5afe46d874391a0a4601e6b140ca6ec0d07cca64609589e7bea2e7621b9af0ac9677601e43c47bf2b35e9cf4807a434d6b55d78ad4cb3e9180eeb3b4dbca4d293c87f09d4962c88e907628e3846736a111b9d95e9146d6abf9f352107c5afb57a6963309178140f24421407569c2cea1\n",
+ "Processing image 5602: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:7055825f2978e310ef6fbb0959d0a2c0:00110060\n",
+ "Processing image 5602: timestamp=2011-04-28 20:53:58.148699+00:00, observationId=o1:7055825f2978e310ef6fbb0959d0a2c0:00110060\n",
+ " Error processing image 5602: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7055825f2978e310ef6fbb0959d0a2c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8af9e3f257663a79d5fac11fe9db9607cdca1926f6ef63fdfc93fb06a1637fbea3c6b393a1d081cf1a1c7dd8f3b90f13cd0f1128335297efbb86f9302e3d23abf32481a65890d331445053506833bb8f12925764e28434165d17462af68ee1056e3e3eabf2e72b2906fa53b64ac1b794e0893366662a15ec96538d6cc2da52a239d0ce00b97d2180e4c7e7990bc0a017372eb0b60549280f5179c66adfe9a66b7eda0be94fea3a0ae34511551a1f0c251c7dfc0b7b8cae043bff79611115bdb62398f7505921182aabbbaa3357ee28841ca43f246e9e23fdf9b85828ccbe579c7150ebb8b30f38ef7b9144df15e10f98819c66996ec437e3cecc2a55927ec8cb\n",
+ "Processing image 5603: trackId=t1:0327b24885a6db71f0e84c26dcde149e:ffff005f, observationId=o1:96b1cc0d01f6a84aa1287516ce971445:00110060\n",
+ "Processing image 5603: timestamp=2011-04-28 20:53:58.148699+00:00, observationId=o1:96b1cc0d01f6a84aa1287516ce971445:00110060\n",
+ " Error processing image 5603: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A96b1cc0d01f6a84aa1287516ce971445%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a687a251c4e2b8f1bdcd1846e80504ac9fe26046fc85239deb551f53fe88e9e74a47a1337902e6b768f81999e42860a4a04fff127edb7fe6065ad2aa8a7502a1406b9051dd0cb07d3cf0aa55f2500d2d30e22bb3d38c6d4183a8250190109efb0c97da5e51441733517937abb3698a685c1703c0cfd584acd0a645b429aafd81f64f8223850fc60b859789ab4f271d854cb487b341932d5ef498943abb6b76b6d71eedf3f66d4133b1a71f40b9f87801799355fa3ae6743bed3a172cbdf00440f9880e48441b4b94f9c9590450d1a58d837c04d9904618d261d9bf8236ba0289730b9b5c6386c0d4b0613e5add383f237ec51190a3f03191b3f073a8c9ed6e0\n",
+ "Processing image 5604: trackId=t1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f, observationId=o1:36ccc08998734fc6148fd284bb02aca5:00110060\n",
+ "Processing image 5604: timestamp=2022-06-22 16:31:01.415867+00:00, observationId=o1:36ccc08998734fc6148fd284bb02aca5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A street name sign indicates \\'Jewell Ave\\' and \\'900 W\\'.\",\\n \"image_quality_notes\": \"Some obstruction hides a portion of the post and obscures the background.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.44718098958333335, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=1525, total_token_count=1600) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f', 'observationId': 'o1:36ccc08998734fc6148fd284bb02aca5:00110060', 'geographic_point': 'POINT(-111.917060146508 40.7287722908176)', 'mapsURL': 'https://maps.google.com/?q=40.728772,-111.917060', 'captureTimestamp': '2022-06-22T16:31:01.415867+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36ccc08998734fc6148fd284bb02aca5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0242bfce48c75fdfe132998595e5db0c4e279b70d7d078a8429bd31910f58392b5cfab7394a99f57ed65aff0950c24bc6bec73e4e38211dbb767abb3d66769569aecd189dad7ebe97a858980a1843378d42f674b7dbe763a086fe2a901236d7376594cd56e8f3b0b33e696ed2c34ed1e2b7bc9004ee9cf97a15b44c72355ed19cbc3137c21df29723182dee46114fb8b6ee13ec47a86bf06b7e35a09c9a3512297ba639c9d942375497934a622791b2954434bb372cb11d9b40b96bf04d04757bf2542c51d4e34b6d329374511db20be6e38ffed196c5f0375b04bc44188bdb53015bfdec259de10951ebde0dc501eef32c3436bc8a784dc7486af9877de2798', 'category': 'Street name', 'description': \"A street name sign indicates 'Jewell Ave' and '900 W'.\", 'image_quality_notes': 'Some obstruction hides a portion of the post and obscures the background.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3140.0, \"x\": 1060.0}, \"hi\": {\"y\": 3175.0, \"x\": 1175.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5605: trackId=t1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f, observationId=o1:0b342da631ac3618b388776a195bb719:00110060\n",
+ "Processing image 5605: timestamp=2022-06-22 16:31:05.139805+00:00, observationId=o1:0b342da631ac3618b388776a195bb719:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.02374148802323775, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=2557, total_token_count=2612) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0327de2132a5a3faae3a7bcccd87faa6:ffff005f', 'observationId': 'o1:0b342da631ac3618b388776a195bb719:00110060', 'geographic_point': 'POINT(-111.917060146508 40.7287722908176)', 'mapsURL': 'https://maps.google.com/?q=40.728772,-111.917060', 'captureTimestamp': '2022-06-22T16:31:05.139805+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b342da631ac3618b388776a195bb719%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092929Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9f3d0bbe40b1d211e45810ac57e4dc95732eec7bf4f1c3013290c249f219a6e1a1af32f01cc5042cd0e824bb5cccefa071db712e72245d2b36bfcc57f557a4330a065dfbb3b545ff716dd3237175553c5b3a78c48418333bf86960996df0f5ea701f6762532a9424a8e3fc17b8e36b5a5e0b53bbac6a37886479b517846629b32f953e947ea29712ce9de3ed2c203bb23bc885c30ea4882256a80516ba883a8cc5de5c904615ebf1d62f50118712acf1eadf1cff985e8578eaabe41ba463f309923469d5be90868ea825fa0cefa0a6b9e5e17407d12af31e4061914d4bd91f69c0e95f16d00e87c11f44cbb47a60ecde179621b8b57cf854bd6f9103ab5cc7a2', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2136.0, \"x\": 1687.0}, \"hi\": {\"y\": 2204.0, \"x\": 1950.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5606: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:777b24ceae30e31599f9c35099f435dc:00110060\n",
+ "Processing image 5606: timestamp=2024-06-12 16:42:58.551490+00:00, observationId=o1:777b24ceae30e31599f9c35099f435dc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17046989094127307, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=55, prompt_token_count=493, total_token_count=548) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:777b24ceae30e31599f9c35099f435dc:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:58.551490+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A777b24ceae30e31599f9c35099f435dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=38d7d534716c40cd56775ea6f43e46fea8a61293dc0ffda3c90f4447a41ce8f9f5bbb0ded4cce38b415701c34569575b92d8b0835301cf25ae4b703571fe699621699c831eff48395597fae2695f329cccc9ef604d1aa683875e2054dc11512d7bafa8bdde3fad28bb52369f66cdd5bd8e0657d35313b587f5a4df1f378ea6f0ccecb7a21f9274256495c19de130dc68c25da627b47fc37a5bd6232fd0fe4180b9792c929d6fed8cfa11e87dc7c8795ce3e76a0944c098581a972e093f923be336891bf0dfbcf7cd6b300523150492a83e05f96a4cc739dbdacd981f6eb7f6f40314b46c0012af5683714d012b87305ec9d6c3c0c428019c01c3f2b47c8e24a4', 'category': 'Other', 'description': 'An orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3388.0, \"x\": 1083.0}, \"hi\": {\"y\": 3518.0, \"x\": 1116.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5607: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060\n",
+ "Processing image 5607: timestamp=2024-06-12 16:42:57.351494+00:00, observationId=o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a traffic cone with alternating orange and white stripes.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15583587905107918, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:0582929e8ecef3b0c3debc24b1f45ed1:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:57.351494+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0582929e8ecef3b0c3debc24b1f45ed1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6a0ba03ad6b7af10cd4b61265b78d4fe037f61c2ac9c176652e9728a47c74b6099d3e0df5755604ade135febe8f37361c18162044134584fc9d6e81f9c99b3df3f42750d6b1bd0d1c6c2f6ebd8038226e49723b4b9ebe7abf5d1ef9af6fe33aa8b50df02f71c3d571bb1f9233c3b54d5fa18b3e5b932e1cbe143588e882df2632a0a740e3a79465aeea55905eb6de7abde6c3083de1f45736e6659632452b5bf4bab461705d669bf0d58226b2e7cc280c921adf07aeacbeab723fe663ca029af991fda4712b596d3d5caf97665edaeae0254bf47fdc35aa5da84d0f7409dacdfa07327eba6632a1cae8b5eade055a51ee52d191e0c7a4f8f44c740788736d1c7', 'category': 'Other', 'description': 'The sign is a traffic cone with alternating orange and white stripes.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3316.0, \"x\": 2124.0}, \"hi\": {\"y\": 3391.0, \"x\": 2149.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5608: trackId=t1:032974ff937747e431144340ff7e9923:ffff005f, observationId=o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060\n",
+ "Processing image 5608: timestamp=2024-06-12 16:42:58.851413+00:00, observationId=o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows an orange and white striped traffic cone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.06479380005284359, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=57, prompt_token_count=493, total_token_count=550) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032974ff937747e431144340ff7e9923:ffff005f', 'observationId': 'o1:68a3a9eea77910e1154acf5c27d0c0f3:00110060', 'geographic_point': 'POINT(-111.939155184223 40.7418417784546)', 'mapsURL': 'https://maps.google.com/?q=40.741842,-111.939155', 'captureTimestamp': '2024-06-12T16:42:58.851413+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A68a3a9eea77910e1154acf5c27d0c0f3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c5926890357a23dbdf9007241da46c697ec9465eaa1cea440eebd2cf87d62a5604f074a9e573811c582b82716f65f9bf75ff711f8aeaef3816a901aeb428cf5df82c9299f3aeec9fd990fa89bb21e23220f1368c2b33ca2ab2f9408a757d99b456fb8ac7d3a34525b7e911927cb769697cf74053179731d36f0b6c374cc6c6b5813197b11cf96597c899f4a2a4618c1b0c67b7ac34f4f706d362378362c9ae7b202f35f97606f2e8d4b034a4cc95b545cbcccd8c3fc3a8c1bacd6f301be90b2eeea5d9d9e8e3b93698df212a3b1d89d146eb1214673ed5e0e029aebcbe64c10f49d006a1a97a8d18857de2b8ea31e6770243a7825b22a655c774a23fdc7a93a', 'category': 'Other', 'description': 'The image shows an orange and white striped traffic cone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2553.0, \"x\": 3610.0}, \"hi\": {\"y\": 2706.0, \"x\": 3645.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5609: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:fe8fd5f14dbda5ff947516c15bcdc41f:00110060\n",
+ "Processing image 5609: timestamp=2011-04-26 18:04:28.804994+00:00, observationId=o1:fe8fd5f14dbda5ff947516c15bcdc41f:00110060\n",
+ " Error processing image 5609: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe8fd5f14dbda5ff947516c15bcdc41f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090834Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7a584e5a1eadc5ea6bc1fefa8f3524efe8ac093d88bc55bb9272ebf7379d111aeccdc1dba8e671a91c0cd101fae9bb7ce35e580dffe3eb02fc4ea1ad24023b38f2af355c2cd9878a1d35eb99c60bc43b77a3fde138b6642293c3e63a219edb8186135c485ef3a5f8332cec12e96d281ab206a4705d3ddfdb76895a4164980308b46d77441033e62257799eabb7af276a82d90c0704c999b648aaf3a83c54e08b05e524fb32e160c4f6553f4ec9d566ca3bdad202124593aa7e5c6227d237b758dac4fe32819635edb0664aa119d5d2f69e2fc8ef18b73b3703171bec355208fa08692420a9ffe07b181fc3c06e844dec76e67f7a36f93aac6ab9f5a85c619fa3\n",
+ "Processing image 5610: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:101b6dd350b993dbb8e4a90be822b799:00110060\n",
+ "Processing image 5610: timestamp=2024-01-09 19:58:16.515213+00:00, observationId=o1:101b6dd350b993dbb8e4a90be822b799:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates street names. The top sign says \\'Pipkin Rd W\\' and the bottom sign says \\'Kensington Heights Dr\\'. The pole appears to be slightly bent.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.24354371679834572, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:101b6dd350b993dbb8e4a90be822b799:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:58:16.515213+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A101b6dd350b993dbb8e4a90be822b799%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=27356f7e4d0c061c8352770ba0d26628ea07758f38e0da33de9acfae317f1d0b3cab87d7e0682a1dba8f47b9d1f8fbe75eaae0f6fea32f8a15464ad4b6cc35a87fb1e9b2e1148f32faa2e125cc5c430102394559b3bbcb5be8d01bc225a18249558a2c3269f4b057359885129e19407a977c3fd41c5187428b6762de1bb402b882a18235da076d7ed0da33a88b5bf9b2c1a2a7fe0b9c6a981074707623df23c5e792a6cd62bc960323e6c8313e66645fd962ba209346785ef6e01ea351cb53a04823e6db0bd623f3eac786f5afdbcd2b74f805ab63f24022c6336c50a202ecd3ae1c1e5d0ae558d36206cb56a11795f0b8b50be46958dded6820131f02261d8d', 'category': 'Street name', 'description': \"The sign indicates street names. The top sign says 'Pipkin Rd W' and the bottom sign says 'Kensington Heights Dr'. The pole appears to be slightly bent.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2277.0, \"x\": 1703.0}, \"hi\": {\"y\": 2510.0, \"x\": 1995.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5611: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:329771adc7dbf030369ac8b931aa9961:00110060\n",
+ "Processing image 5611: timestamp=2011-04-26 18:03:02.560067+00:00, observationId=o1:329771adc7dbf030369ac8b931aa9961:00110060\n",
+ " Error processing image 5611: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A329771adc7dbf030369ac8b931aa9961%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090832Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bfa84f6fa9268a95ac45c53f67808feabb5cd66e289339c7946c366b68454ef8cc53f4d86b0ec607f4e215ccafcefb60dfddbeb3ebe8c175b693f644c51c36309978fac4a855496162c7ee80aa59e9a8d8f81c6cd1592ec3ea9d6b17a6c72545f78ad90851336ee63c848a58566ed076d143f663f6b798b5b6ecb871e9554acce1103e53eed5b1b6e0f085916744593ee5367553f8b95c286d97d092bd407295037de551ac917fdf32a802ecdad995a0d3d4ab7817c870837924b3f1fab1c6ceb4a9d06e625cda854ff7605b94e901658a8daf9e9002983dcfb282397032c58a5783ba6a74b296526cae34a2b469106202f8bd1d9b880d8e04e2169eec76aa5\n",
+ "Processing image 5612: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:16739eb43a5a8272cbc788013a877ff8:00110060\n",
+ "Processing image 5612: timestamp=2024-01-09 19:56:59.932899+00:00, observationId=o1:16739eb43a5a8272cbc788013a877ff8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street name sign with \\'Pipkin Rd W\\' and \\'Kensington Heights Dr\\' written on it. The sign is green with white letters.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the sign details are discernable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2588581720987956, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:16739eb43a5a8272cbc788013a877ff8:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:56:59.932899+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A16739eb43a5a8272cbc788013a877ff8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b0c432875356f98e4f02d4aa13f762ee045e4391b277b75b9ddcd5f3b32ef927b03fdc81ed0d459ae78198cf7f7769aa2b02e7e15f98c171945959eae649b554e28506f07aca3a37fc7018a7bf4f3224b7ab37efb397913b3cadcf1dc2d932e15a57b1cca7abbf58a5c61af43872fcdd0b4f018281cae52d8eb79d1246e10f241c5d908dd30e2fa8e7366fb1a3c9bdb9b7d31d1dedf235af343b90d02cb513d92c16e33ad674ad62e2b5f5e5d9cf7691b89ea3c6ba3949177a580629ae3a759f2903a3796c5016625617c6df7e3402229c8138a2b988eef5a567760ad20efe9c540ae28896444aa5afd9d5b7f687157010c77d4fe306627600ff84257c86590', 'category': 'Street name', 'description': \"The image shows a street name sign with 'Pipkin Rd W' and 'Kensington Heights Dr' written on it. The sign is green with white letters.\", 'image_quality_notes': 'The image is slightly blurry, but the sign details are discernable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2376.0, \"x\": 1780.0}, \"hi\": {\"y\": 2684.0, \"x\": 2134.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5613: trackId=t1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f, observationId=o1:cb4b58ce644543c4f9e7e205c9399860:00110060\n",
+ "Processing image 5613: timestamp=2024-01-09 19:57:02.280890+00:00, observationId=o1:cb4b58ce644543c4f9e7e205c9399860:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs. The lower sign reads \\\\\"Kensington Heights Dr\\\\\". There is a smaller sign above it that says \\\\\"Pipkin Ct\\\\\".\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32819957267947314, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=1525, total_token_count=1607) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0329a8b0a52dfaf20a837c3e65f23ac3:ffff005f', 'observationId': 'o1:cb4b58ce644543c4f9e7e205c9399860:00110060', 'geographic_point': 'POINT(-81.9784443035185 27.9747573894533)', 'mapsURL': 'https://maps.google.com/?q=27.974757,-81.978444', 'captureTimestamp': '2024-01-09T19:57:02.280890+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acb4b58ce644543c4f9e7e205c9399860%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a0fb940d6f63bfb6765d5e92e603fcade616d91df8f408dadfd55b5f114f64841687504c4c44b5eb9b4e873917a8bdecec2c2e06969583c605442bbb4af1dcb5251fbaa684c7247cc4980dbab8e45c73874c193e98e891cad3035b452380cc59075bd2f06fa7ef69f8c298537d7ecbda50a045515b4d46703345a2f36db9501be23da8fbd3a7de7dd0f60f9c999a6e5a410f0e5bdc3d131d194199e77f16349d990ab9c60b99770f4064b4c6492914f2e489caaf4a04adea3841fd65844a5e4d289fac51bef2815659636df3d730b194be2139a8093c3e56a9d2a476c525bf7b9c3e96201bb7ed4467150a3f65001c2020ced00b11853b6a2a2ae2b89c81bdff', 'category': 'Street name', 'description': 'The image shows two street name signs. The lower sign reads \"Kensington Heights Dr\". There is a smaller sign above it that says \"Pipkin Ct\".', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3299.0, \"x\": 1796.0}, \"hi\": {\"y\": 3421.0, \"x\": 2187.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5614: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:f8dfa1479e28620da803f831fc4ba77c:00110060\n",
+ "Processing image 5614: timestamp=2021-05-24 17:16:11.699236+00:00, observationId=o1:f8dfa1479e28620da803f831fc4ba77c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5186366766271456, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=1525, total_token_count=1596) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:f8dfa1479e28620da803f831fc4ba77c:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:11.699236+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af8dfa1479e28620da803f831fc4ba77c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9239a782aecaaea2f6fec9345ad6c8743404517b51d8406ba486565a3f8cd52a150dbd45bb86be7f4d968e49492bc225ec708e054ad4d266ca42a23a5e8758a33921ec846352fb818c4e0ec83e33b82c698358f552fc20e6084b1ff1430f2c391abafe7e44d6b450a79525aa934bcd4555406e1f1c5799b2842e0928e3b3f2ec7b9b0759cee5c0e54e794516b2b70c5205adfaa0da50a774ea83283afa8f56813a73b11d376cf0e9e1bd08df467d11e59f77512f3846ad6b7fcae30fc1035beb8f80958f73142d4baa4fd8ed0951c9113f58249666f6e483fa7971b6f68a927caf3dcd709ff1d4c8453f9bab8274d0b1734503c1cf9597ce4ed03e5c84d081ed', 'category': 'Other', 'description': 'The sign is a traffic control device, specifically a white and orange striped barricade post. This is a temporary warning device. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3648.0, \"x\": 1727.0}, \"hi\": {\"y\": 3912.0, \"x\": 1804.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5615: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:e857e1d7d33ecfdc404c073db6459b35:00110060\n",
+ "Processing image 5615: timestamp=2021-05-24 17:16:12.151282+00:00, observationId=o1:e857e1d7d33ecfdc404c073db6459b35:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2669039045061384, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=2041, total_token_count=2111) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:e857e1d7d33ecfdc404c073db6459b35:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:12.151282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae857e1d7d33ecfdc404c073db6459b35%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b4229d39e85cf5b27c80c387ecdb6362c1fdb9b4bbb2cd385ed5946ad529de21866ad2425ca0f1c8e9f8759ad1a4e58cfda95a7f1e94c0c635183d57bc9352e21ab570021f6e0dd69ce12e381b11b024372ff4655ddf533a0988a92e247a71ee232ffc6e1b2382ba7117b054ef4b8b5d37f86169b8fb27f0e0476b0f35115d4ed8fedae9755ef8b481a0038b60d3536eae23a34adbfc9f1877d0802f485e37f69b8b9da130fd0663ef3f90f31b78d6b04e3d8b225ca392fd152859bec49061ac1dcf0ad74b8f57d5f2fdce85a6d0d1c692855fcdcfab90702628bc0d3953d211183f81eb6a1f345497e1cd98e515df2cca27c8e4779d25dbfb79ece6bfee94ca', 'category': 'Other', 'description': 'A white sign with orange diagonal stripes, likely indicating a construction zone or hazard. It is sitting on a black base.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3823.0, \"x\": 572.0}, \"hi\": {\"y\": 4257.0, \"x\": 695.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5616: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:15a8313773faa46a3800381994c03b77:00110060\n",
+ "Processing image 5616: timestamp=2021-05-24 17:16:11.243288+00:00, observationId=o1:15a8313773faa46a3800381994c03b77:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29689242234870566, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1009, total_token_count=1076) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:15a8313773faa46a3800381994c03b77:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:11.243288+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15a8313773faa46a3800381994c03b77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4df91aa56cc228ce6035a1e094953ed11d08b337bb1f0ca20f2ad67ea256b2831f35ce90b00427a99cd1c6cf2074130e6ecad281e3aad937b7c227d7e9cfc46e339da41ed9b14ac779be39cfb14374eb41d2ea11163d05d4472e97ec93bf652e2292b9be647e48d0437451f285961524d68df339e9b1ed836b866542a040a3da320ac103834949f13204cf37e2185a1902fd7cb38788a4c4f5b6ce6ae00be9302bc881d33b044b61d86d474153700e7c084c7701204901a833fa2c253d8a83dde21d6911e7a2db86cc9b7db7cc6ae7bb3201093abf2c3589b558acbedbf3e55977d805fba98eb9829554839ca6736384a878e7b9e9299bb024c79e014885b15d', 'category': 'Other', 'description': 'A white construction barrier with orange stripes is visible. It indicates a hazard or marks an area under construction.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3505.0, \"x\": 2262.0}, \"hi\": {\"y\": 3701.0, \"x\": 2316.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5617: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:2e618f1865da5da51903263c28872b16:00110060\n",
+ "Processing image 5617: timestamp=2021-05-24 17:16:10.783238+00:00, observationId=o1:2e618f1865da5da51903263c28872b16:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33095462286650246, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=493, total_token_count=560) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:2e618f1865da5da51903263c28872b16:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:10.783238+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2e618f1865da5da51903263c28872b16%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091724Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a41f40f4d9e0bb44a5b38fed9cfaecb8085114c059311a4437f27e917f805555ba2ae3445df207dde6ff0decf68c3a9a9a00edba073405200fdf21b6248b5b3e8f209e9c852bc1161c99e960e751b65a45370f0a5e3fc8299d63b5922f5591cf466fc77e75fefd5e8c79fac26ac3e9c31c82fd97fdfdb27093c6952a898f70217b92da6a590fa3256e1f0ee5bb2e192a7db958dff178df3ba71936d4126dc29a4ea27194b732c460f9a27e570887f98376fba3ba78cd9e4027e407f02d3e20301348339c980a7d000c3bc78e2d7454a7594e27585b5c980a400f2119873550f4f6592098388ea219090e5a762c255b471555515a94b5c75674ab7b62a00f5e9', 'category': 'Other', 'description': 'A traffic warning sign with orange and white diagonal stripes. It is rectangular, not a standard road sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3444.0, \"x\": 2546.0}, \"hi\": {\"y\": 3606.0, \"x\": 2592.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5618: trackId=t1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f, observationId=o1:012269ba671f6155ab73211560b5ab1b:00110060\n",
+ "Processing image 5618: timestamp=2021-05-24 17:16:12.151282+00:00, observationId=o1:012269ba671f6155ab73211560b5ab1b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A construction barricade with orange and white diagonal stripes. Indicates a construction zone.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22349446718810034, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b15bf6051e77198fc85cc4b53f5e6:ffff005f', 'observationId': 'o1:012269ba671f6155ab73211560b5ab1b:00110060', 'geographic_point': 'POINT(-111.882537489171 40.7553886786723)', 'mapsURL': 'https://maps.google.com/?q=40.755389,-111.882537', 'captureTimestamp': '2021-05-24T17:16:12.151282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A012269ba671f6155ab73211560b5ab1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7778b47e8478a24af21b6a8e64b47d7bafca69806a9384a49cff09be7a7b2b1933083954fe0297d083d67cfd37cb79001c57b64f180da88053c0a18631d1396f880b68ea050474bf3f22d7c237175818a2c70b7b3672cbd9d44378cfc84da8a7337d4c49174da9ffaa820d73a3b018b2e2e8edf4e810f82d4574a861828ebe7ae0dcbd44055f5f6994bca82ec42851e691348276e07059b58da87a35947921629116b14b6490fbf68095adee570fc3a7d13559fe4d131b2ecc14f410530336bf9d1d023c8d8706cf13efd96e0c6c98708f7d5c7669fe5d3f1d19d02df215d08110ca7bbfdb5a200d3eca4d43dc6894e820dacc4792d7cbc7e3f6425969f6fcd4', 'category': 'Other', 'description': 'A construction barricade with orange and white diagonal stripes. Indicates a construction zone.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2955.0, \"x\": 3411.0}, \"hi\": {\"y\": 3437.0, \"x\": 3590.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5619: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:b71fb0df0487d276a6779f983ab33ca0:00110060\n",
+ "Processing image 5619: timestamp=2023-12-19 21:22:51.177702+00:00, observationId=o1:b71fb0df0487d276a6779f983ab33ca0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'U.S. 98\\' is visible overhead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1613591078555945, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=2041, total_token_count=2107) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:b71fb0df0487d276a6779f983ab33ca0:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2023-12-19T21:22:51.177702+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab71fb0df0487d276a6779f983ab33ca0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=769502bdfd6ff5375a16c8bd58d17030f9bddda624335836b8d6cf2c7ba5d494297bb5e9a0975b533bc44c8619559cd40649ab6bc819b901a4e43e7169006cc71cca4e13942b8c22bdd4ce76f416c8f9765c012f02b218b3ba5a2aab4bdafb10506fd892e8d86d94fdf576a22aaeabbb4d013f1e693496207ad5afc6d88aa54ab8fa8f2bb3aaa715301f04eef0c4bcede739ddb166b5037b08dbd031b84ab025cccc5e9364f1137325c61b3d82763a601253d88de66d0e399bbbef6d9b2717d0c21c654d51dd2620fe878e94def05b862c7039abf4bc198c731feb4409d5d2259b3a5939db93e721759cc3b6d744c1882699569a02662292bbb1acde76445a37', 'category': 'Street name', 'description': \"A green street name sign indicating 'U.S. 98' is visible overhead.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1866.0, \"x\": 799.0}, \"hi\": {\"y\": 1932.0, \"x\": 995.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5620: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:075d2262b48dbbc0994a566a38c6185b:00110060\n",
+ "Processing image 5620: timestamp=2024-01-24 17:58:00.192095+00:00, observationId=o1:075d2262b48dbbc0994a566a38c6185b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates U.S. 98. It is placed above the traffic lights.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2952854322350543, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:075d2262b48dbbc0994a566a38c6185b:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-01-24T17:58:00.192095+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A075d2262b48dbbc0994a566a38c6185b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2be3e4ce75fcd2b9d7ad9249fb5ad5528ffccf2e521b1c8d904e2de1f8835c2697c73011a14fe7a981a178cbc0885e7a6ad5a3ce2022843eb4db59d4d6177e491579bf14a1e52e721645079a88d0517c14b5152488685c8dc8cac7eed021bedd1dfe27c0e51126935f733dea08a3bc0aa86601f038b817db709a47ef190ef11d0affbaae48b46203637e8c7da4f85b7891eb97cbd73d3885b90041b6a98cc12b1c447bdb28cf42ecc82a9a75298086004117efcae98f7c6f135026d7f8e57eaca75c9d93c1ea2c89710803256163314088d24d92e943e5c77dd5320052c6d399588c34d875b5fa8b43c84bf2c999a4ec89983a39bc8bcc0dd17c03673d11cc33', 'category': 'Street name', 'description': 'A green street name sign indicates U.S. 98. It is placed above the traffic lights.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2727.0, \"x\": 3055.0}, \"hi\": {\"y\": 2827.0, \"x\": 3260.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5621: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:fa3075027ed4fc64ed750ffc2b97c064:00110060\n",
+ "Processing image 5621: timestamp=2024-02-22 14:24:20.109521+00:00, observationId=o1:fa3075027ed4fc64ed750ffc2b97c064:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign that reads \\'U.S. 98\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11205178499221802, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2815, total_token_count=2879) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:fa3075027ed4fc64ed750ffc2b97c064:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-02-22T14:24:20.109521+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afa3075027ed4fc64ed750ffc2b97c064%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a9d40708d53aaec53f1dd9d278462014afabad769d20d934d49083a6ff9d5aa65994eefdddaa88bd337466fd9db1445dd7b5b763cd048511a5d092f583e85eee78d138ffd1066bf01f41974bc7478d7b37e8f4b8745ebeb71484a9ea760ff2a0444f30126d5cec1f1306f18871dbd8b7a7335a9e2f98faa8e8bf5aff2f550849b25542d5c5ca9c88214b821e6cbd329052e94c292d49aacc899dbd00c1902b5b5404d3c92a9ae9253d3c3326ab65ca94863b4a42517c0d4f13b8b2117c3a5a349db1db11f9236294c108a151ca542bf8935aed1c64420dd2e6b67c4e79ce7f293adb4b286de6f15c631c42ce4d36aa3e23084a9c4fcea8343d5f13a9ddee454', 'category': 'Street name', 'description': \"A green street name sign that reads 'U.S. 98'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2484.0, \"x\": 1124.0}, \"hi\": {\"y\": 2621.0, \"x\": 1348.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5622: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:61cb122246bf00c2630892c578fac097:00110060\n",
+ "Processing image 5622: timestamp=2024-01-17 18:21:00.238965+00:00, observationId=o1:61cb122246bf00c2630892c578fac097:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There is a street name sign that reads \\\\\"U.S. 98\\\\\". There is also a sign that indicates no U-turns.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2554795896852171, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:61cb122246bf00c2630892c578fac097:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-01-17T18:21:00.238965+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A61cb122246bf00c2630892c578fac097%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5c6388ebde1864f3b27048e65d74a1d5da294e577a49edb3fedf4128cc08ddb979e4a0b3024c85e24e67a45719d29023044f4c7d1b073936e1daae01f77f5359d0cabec159e348873c9c1db7173dbf70bc9d4e176c399024c50d1e3933b4b346c906ac2541f7bfb620e8096912b442155c6b42f095b82102edbf60ebfd9046d30fdd7fcb5ddeccae0756420db8a89a2fba730c9a706a0eaf077d1419868db4c8516c1d6bb2169919c5403f16a66da9ba7e865481f6b9949e65ddc6eb0ff7f35e477f803dee95fc9e0ddcf585a92d472d2c877310056961aa63c5d09f93f2898dfcc543ccb87446355c80d7c0a492127e25ac5a1e667871e536f29cd4a42c79df', 'category': 'Street name', 'description': 'There is a street name sign that reads \"U.S. 98\". There is also a sign that indicates no U-turns.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2684.0, \"x\": 3262.0}, \"hi\": {\"y\": 2792.0, \"x\": 3485.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5623: trackId=t1:032b71a7718fd4d950c6f2bd51753122:ffff005f, observationId=o1:f123095a05d549fbb15f86e074295f32:00110060\n",
+ "Processing image 5623: timestamp=2024-02-22 14:24:18.909504+00:00, observationId=o1:f123095a05d549fbb15f86e074295f32:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicating \\'U.S. 98\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.069695311326247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b71a7718fd4d950c6f2bd51753122:ffff005f', 'observationId': 'o1:f123095a05d549fbb15f86e074295f32:00110060', 'geographic_point': 'POINT(-81.9543499149921 28.0494759182576)', 'mapsURL': 'https://maps.google.com/?q=28.049476,-81.954350', 'captureTimestamp': '2024-02-22T14:24:18.909504+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af123095a05d549fbb15f86e074295f32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1fad178757cc6ecdf54a36edb966a9254ffb4f900b18eb814ec65862b3bf6818b926018c99659d18f242c76fc3ef63972de4232524991665160add91b61351be351257c11f637428778eec052957ccb4b41e452e9ba970d5962c41a137cebce85107e0ea1e039d8b720f4ec5e858ecc0489b03b434c40045832bf0e2c6b5acd4eba177a7136a859ad8c726fdc6eccda0581093364244da9df509ad972cfcd368b985f856e710b461b7c88e2dba174bab4a094a8c7668b8e8d486f5a5e81c791fad147a9d152a1035ddf05d0743a4371aa0871a29341a190f5f93eb9d647a0ef87c8d58914f4f418ac9950fd9a37ea5392e73f5fef1b20f4bba5cacd2a8c57a6a', 'category': 'Street name', 'description': \"A green street name sign indicating 'U.S. 98' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2293.0, \"x\": 2771.0}, \"hi\": {\"y\": 2480.0, \"x\": 3067.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5624: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:75226daade2e85e479b8bf4b34dc7b0e:00110060\n",
+ "Processing image 5624: timestamp=2024-01-31 19:43:37.839380+00:00, observationId=o1:75226daade2e85e479b8bf4b34dc7b0e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to be a disabled parking sign.\",\\n \"image_quality_notes\": \"The image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.251945823431015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=493, total_token_count=557) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:75226daade2e85e479b8bf4b34dc7b0e:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-31T19:43:37.839380+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A75226daade2e85e479b8bf4b34dc7b0e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b76df8e9675f2529240dfd9040e391b7da9df916a72ead85b1cd8b5e3decb43ca443a7c0440220cb5d9de976c9c85b2425b2ecfd258e81b5715535f80fe747e981bed97536620f3f8503b650ffa71e9bb51a68eba1e1fba396481d602c7c6f2d2b36dba0ac298d88a7b6af9a3491163529324c6ce10af4bd271e032c1f4cc4c110cdaabcfa9db389609c59b39495b92bbbf6a7a1e4e638b9161609a16e52a9ebdc19e03991f937613c458999a2c3f41d158d41cd969560422d5f68ebf3291532ffc5b362294fe327782a8b208ce01a5533cd2b733b1aaa6b0f640d071cc91e4a3aa5c11fb8ef4f6e36ce1d7ea5fdcef8165480584eb96ea19925020be6e9b766', 'category': 'Other', 'description': 'The sign appears to be a disabled parking sign.', 'image_quality_notes': 'The image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2232.0, \"x\": 1477.0}, \"hi\": {\"y\": 2272.0, \"x\": 1521.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5625: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:600f1e5f8a78a755e5e6ef455b090461:00110060\n",
+ "Processing image 5625: timestamp=2024-02-08 20:02:13.152662+00:00, observationId=o1:600f1e5f8a78a755e5e6ef455b090461:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34052479572785205, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:600f1e5f8a78a755e5e6ef455b090461:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-02-08T20:02:13.152662+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A600f1e5f8a78a755e5e6ef455b090461%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5066264d8e85e07d8bfeada9bb31f0e902c331a956f713723f1cb9ea206e73edfa5e9684dae260bcf4c8e907fec699634bcd6426fad10a78e9d0248d288004ba771f7ace6137b5f5d04f52cc1d0e41812c051ee916e73e7f867273985e9aae053dce7c68514feb7f062a839246ffdcd54b5dff1f4bbfea2459de38d872f91bf87ea3cc9d9fc385e01cffdff1b5704d420a4a382e34e798816242ab39f2bfd989f72809c4ab0021731b0470e5d7e13cf64c9f1d6bdee010433311082d85ae0c25112e18e4e0a4e3ef48ad04c592c8b0e225a0db7e21690b51f08ff0e959ac049f654925e0baf9a794bfd24d0600ab9cdcfd494c76a924736695b3330097fe5fae', 'category': 'Other', 'description': 'A blue and white sign indicating accessible parking is visible. It shows the international symbol of accessibility (wheelchair symbol) above text that appears to be parking information.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2231.0, \"x\": 1389.0}, \"hi\": {\"y\": 2270.0, \"x\": 1430.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5626: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060\n",
+ "Processing image 5626: timestamp=2024-01-24 19:29:01.259997+00:00, observationId=o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.\",\\n \"image_quality_notes\": \"Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36440342870251885, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:ac1dc1f73a0b2de1c7e701800db6407a:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:01.259997+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aac1dc1f73a0b2de1c7e701800db6407a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091127Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6ce8378c3489e7b3cbfa6aa03186d376f56ebd0761175d7aba512777356d2cf051c74715f45ecb277e205a63e487f52bdff1b9e7dd94f7b9ac3ea0652ef8b8f16e73b2d11a9d24dab9e2b4a1c6ae423f7a3f928252512237712eb93617a6a44373d504ad709ca2fdaa193fee35d9c7d75ed44c9f1896acc0070ddb1350188ca33f2c6c36353e6665160ce37ac6d9cc7ea7e773eb4e728de1e978e7d5caba11d8ddb8535834cfd7ec94ae22286d55757bbc26dfd04a37b818f75b96b9dfb2e3ee1ab996626f96c1bffc8d68ddeb3a98a3cbd321a2e5759795e30a217b303f9c110e2d656741e86bf4c9fc3f8e98a58c07509e1fe37426b5c29d7643c509fa46be', 'category': 'Street name', 'description': 'Based on the limited visible information, the sign appears to be a street name sign, displaying a partial street name.', 'image_quality_notes': 'Image quality is extremely poor, only a small portion of the sign is visible. Analysis is highly speculative.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2247.0, \"x\": 3354.0}, \"hi\": {\"y\": 2290.0, \"x\": 3393.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5627: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:a33075d4374e92406b4f65bf791df09f:00110060\n",
+ "Processing image 5627: timestamp=2024-01-24 19:29:00.264023+00:00, observationId=o1:a33075d4374e92406b4f65bf791df09f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the sign\\'s details are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.294104082831021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\"}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\"}\n",
+ "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:a33075d4374e92406b4f65bf791df09f:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:00.264023+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa33075d4374e92406b4f65bf791df09f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091310Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=825be62d38c1d7979ba4a34bdc181c1064fa9bc967cdd118786ae11808f7172b22eb89688d99fc037b779c69825f0570d1256cf09392961430725dd56e79261a0345c43b112387183e2bcb71e7186789b4fad46f16deef1f6d40ffd418084fed848a05ef6e5ee40af1d020f28cd5ec80fa65cfa6531fc3309c86360e2675c513834c6998a50105d79e957c3058469fe17eda76d0ea4edeff53325e7b6a82ae5ab69838623096cff9c9d146dd2f17ab234d6b0dee0a4b34eab8c2e0286180becc508278901a536d7f68992ef46ddfb0101600b8ee9a2c987607366fe649dffb315436dfaba45f68633dc78881f5d8d15d79aa10516166dc7f4f7ea00b4043bb90', 'category': 'Other', 'description': 'A blue and white sign indicating parking for vehicles displaying a disabled person parking permit. The sign is rectangular and features the international symbol of access at the top.', 'image_quality_notes': \"Image is slightly blurry, but the sign's details are discernible.\", 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2218.0, \"x\": 973.0}, \"hi\": {\"y\": 2261.0, \"x\": 1021.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5628: trackId=t1:032b9bf41e42d28895387b6ae91c50d8:ffff005f, observationId=o1:772ad9ce5dd1edca9a19c497374d6601:00110060\n",
+ "Processing image 5628: timestamp=2024-01-24 19:29:00.924114+00:00, observationId=o1:772ad9ce5dd1edca9a19c497374d6601:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying \\'Parking By Disabled Permit Only\\'.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the basic details of the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3467108109418084, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=493, total_token_count=578) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032b9bf41e42d28895387b6ae91c50d8:ffff005f', 'observationId': 'o1:772ad9ce5dd1edca9a19c497374d6601:00110060', 'geographic_point': 'POINT(-81.9406039703238 28.0534496092714)', 'mapsURL': 'https://maps.google.com/?q=28.053450,-81.940604', 'captureTimestamp': '2024-01-24T19:29:00.924114+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A772ad9ce5dd1edca9a19c497374d6601%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8514867c4f2cffc06c0b2009d77b8c8ff9b332a4d4873b89e78b3c04ed793a721061f6a711a1a14f140379b7be8747b8654ef4aa8c44a1eae05aa303c64f97c02704740ca024812ed98826c3d45c4ea89d6f98c91a009a16104484b22200bdbfddac676e65a713b186f672d5f74ec9913e87b04f39763166907d5dbdc9273155d3e6482ac9bdb4ce8ffb65984c3192b5cf3d19fb908c00ffbbc85545df0b8500a14f242b903747f5766c0111006978d6a5dcc75ccd177c9bd2fd200fc059e99e1a50c69c637edda97368405eb57a8ab68f071fd5fa292e3f36e434beb643026cbb9c8a47d1d2731e164c8f0e2d4b86d9357ff3a0e82f3cd2ddd78225efae72f3', 'category': 'Other', 'description': \"The sign indicates reserved parking for individuals with disabilities. It features the iconic wheelchair symbol and text specifying 'Parking By Disabled Permit Only'.\", 'image_quality_notes': 'The image is somewhat blurry, but the basic details of the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2216.0, \"x\": 2623.0}, \"hi\": {\"y\": 2258.0, \"x\": 2670.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5629: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:a506eb4d81eac147010db90012b43e4c:00110060\n",
+ "Processing image 5629: timestamp=2024-01-17 15:21:24.856306+00:00, observationId=o1:a506eb4d81eac147010db90012b43e4c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.\",\\n \"image_quality_notes\": \"Image is clear and the traffic cone is mostly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3301129913330078, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:a506eb4d81eac147010db90012b43e4c:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:24.856306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa506eb4d81eac147010db90012b43e4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0303863e299d07c35d828ba30e61ad6fcdc8f7f35b6b8e1df7f0b1e3990c10bf2d7b5a2b6144831c72105aaf17e84fc298bb343577c8df90d19210827ec9cc0bc08de57c1336cf429c8a88274f430cfa1dea50ba9cf4578b0c0cc0e62e42bd5d8301bebaabbf922082165bb852e3137681b9eccd4e74f4725344a18cc306b655f65a16c1656d006848f617ce70187b5115432cb6cf7d22d16fe2e34f6e960e205c67e5adda4bef10ca3388498706d5a5d9ac6a8fa1b90fa7b066f0a482dc1c6937c0549fa43ee8958fd3054b3d4a03a4f8254b0f65c5990703b3f52f90a7e2eec7d4b535338855f092702f42d91297b6a7f625b3abd2e55a728d7834c5106a79', 'category': 'Other', 'description': 'The image shows an orange traffic cone with a white band. It is placed on the edge of a sidewalk.', 'image_quality_notes': 'Image is clear and the traffic cone is mostly visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3276.0, \"x\": 72.0}, \"hi\": {\"y\": 3793.0, \"x\": 258.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5630: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:08b52f6fab60c7c0cea36f2b03439582:00110060\n",
+ "Processing image 5630: timestamp=2024-01-17 15:21:26.348209+00:00, observationId=o1:08b52f6fab60c7c0cea36f2b03439582:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with white reflective stripes.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1367532549233272, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=2041, total_token_count=2099) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:08b52f6fab60c7c0cea36f2b03439582:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:26.348209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08b52f6fab60c7c0cea36f2b03439582%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091914Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9e92b383d16a3722322fa23e0eb218ce6cc22b7b9d969f3de9297dd9934dcbbc9bf6927559484a15d9afffe3ceb56a8087fd087b9ddfd679a2c69d80670564a5c51394acb27928d297f0d90f34a691c46412b846bd9b54995bf4fbca93031cadf4454d3cede7a8e9dd447903ffee14b73ed6d098f184e22d7458c11fa9ea165771c32a9ae9c4dbd3d58084bf9f4e79810f43ec3ecb2d3b49e7c0d62b11ea898450d3dc56c9eb90e03b9d8e506e8652c4d248806d8092981a82c0cb864f698187505a2046194d891887a7440bb13cc0ec99d1ed8c3da0aa7baebce29c068d9ea2c61d85fcaa72a9d3509e6e54d96cda98b91876f874ec4c2896e464322cafe618', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective stripes.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 3445.0}, \"hi\": {\"y\": 3722.0, \"x\": 3647.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5631: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:2d911a1a05733d58b0afa5c6f69eb580:00110060\n",
+ "Processing image 5631: timestamp=2024-01-17 15:21:26.348209+00:00, observationId=o1:2d911a1a05733d58b0afa5c6f69eb580:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An orange traffic cone with white stripes is on the side of the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17391095395948067, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=2041, total_token_count=2102) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:2d911a1a05733d58b0afa5c6f69eb580:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:26.348209+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2d911a1a05733d58b0afa5c6f69eb580%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=980e19ee4f9e14fdec37aa0e7297faf8b071b41f1d2ee9cb6d20fd4d71492d76c0da66c094b8755d909206faa35a660e1caf40f698c0cbd5c03191c12bb29580e5c3a8697e435476a78edef68521aa1e9f8f4dee0218bbb2dd934706a325db3370ae595688d64eaec21afce074863618f8b2064e7469cc9887ab5e2454b9eb1d5b460935d1a26763464ebbadacd8dd2ff330603a80a3f4d0acfd8b5f701556cb9ccddd782bc294cad0b60c5e197f8f997dfc09c2c49ea81af7aeb2b54788e5757b2615210af79bb96f467553cea1bb41e64a49c498566297e7cc9f24fbd2aface27c7d7acd744c8641fec012fb48c51e060a2d18783d3375ede16e99b9650713', 'category': 'Other', 'description': 'An orange traffic cone with white stripes is on the side of the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4056.0, \"x\": 612.0}, \"hi\": {\"y\": 4537.0, \"x\": 779.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5632: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:78caf1c61d5d45a78cb5b62f818c08db:00110060\n",
+ "Processing image 5632: timestamp=2024-01-17 15:21:23.572876+00:00, observationId=o1:78caf1c61d5d45a78cb5b62f818c08db:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21098742340550278, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:78caf1c61d5d45a78cb5b62f818c08db:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:23.572876+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A78caf1c61d5d45a78cb5b62f818c08db%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52fb9eca943b7f047930f06c3ccf81bae6bd31b9e822a37f097243d0442954455d5424bcb72c466def75e22cae9e3129c6eff23c3f9f2f46d40613b7682b1aaf72264327d390c0880a92081c35cfe2b3b4b5f4fe1a4e5c97f27ed21051557278674febe961859df1471477a41e3def7d6c0d1c1e3309a9921e66fb18c42a86fc68f37253ebfea9b693106cbdea6bb0b988321066e0070f88f40caed4ac55ea1a50fcbcfffd37ccb7cc1f6c347b897f614d5eb5e73b79400ca886e5fe355e46f12330cae75cacc77b347d53aeb6fd1d89738f4b758abd7dfe4d9a6b8cf3fee1f06b3b348b20e0db111e0ee950bd6429a6f0c01032b53ec1659e83722711cf2e0e', 'category': 'Other', 'description': 'The image shows an orange traffic cone with white reflective stripes. It is used to temporarily redirect traffic.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3707.0, \"x\": 2008.0}, \"hi\": {\"y\": 3999.0, \"x\": 2101.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5633: trackId=t1:032cd69960b73e8c62b6991234b6d672:ffff005f, observationId=o1:887005a7e57ef348391ee266f167391c:00110060\n",
+ "Processing image 5633: timestamp=2024-01-17 15:21:24.856306+00:00, observationId=o1:887005a7e57ef348391ee266f167391c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28259635298219443, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=2041, total_token_count=2114) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032cd69960b73e8c62b6991234b6d672:ffff005f', 'observationId': 'o1:887005a7e57ef348391ee266f167391c:00110060', 'geographic_point': 'POINT(-82.0040292977319 28.0086662442271)', 'mapsURL': 'https://maps.google.com/?q=28.008666,-82.004029', 'captureTimestamp': '2024-01-17T15:21:24.856306+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A887005a7e57ef348391ee266f167391c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=77fbd28457ca7928f1a4e6ebab082fca68c88c12293b9578807a3a7eb443e7b143597dbc7bb2c32413b86f6e656a382a2d803049839c55207505cfd402d5157ca6b5a9cb11caa0790eee1b53e54e80bb2dae24c76458bf502dd84309afed8bec91c569606be0bd1f34de8a0752be4ef70c263d4f131113beaef6cfeaf17a76661806080bd59f37b7c524e97789aabced0ff857bde366af853bae680a77a653f16a63287397506a1ed917b9b643a9a5c5b5cad1e5b996540a84cf19e304330839d397ce111a1cf6baca0e2517d0a4debf915a36d58b9d42333878f3c2f9113ebc3a6e7b0ef691772fdfd539eff18faf16955e1708dfaba9c42e12df6ff26d1822', 'category': 'Other', 'description': 'This is an image of an orange traffic cone with two white stripes around the top. It is placed at the edge of a curb.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 4120.0, \"x\": 2936.0}, \"hi\": {\"y\": 4599.0, \"x\": 3102.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5634: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:345f79411c43ac1970c0231dc26d6239:00110060\n",
+ "Processing image 5634: timestamp=2024-02-29 20:02:10.090888+00:00, observationId=o1:345f79411c43ac1970c0231dc26d6239:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.\",\\n \"image_quality_notes\": \"Image is clear enough to identify the object.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30523982800935445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:345f79411c43ac1970c0231dc26d6239:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-29T20:02:10.090888+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A345f79411c43ac1970c0231dc26d6239%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=431e598b8773d24737801c6fbed942d441cd8227c2743d870fe485e287d20134bf6e988191e3778860849fc21e89b2e42e1352cc38260727eab5d941e5264dfcc9ef7e97b3cf69cb8aae074250db13579de74a0c46a31249d9494001a3837440bb8224e5d7e5e8322a459c0bf6da2ab3d1581a0254257743eaf2025ae85e4b6ef4c454fbc76439d30c60497e09071b762689a4f3443b767374428334f51ce0786559e8de69fb529f5b6a0e0ced5d74d5669e1f83e947dd1686bc93e80b07be1c6654a71b305d6a038a707f466b8c3539c062d21cd77eba39faeb30da484a59d4cc1a783e3609bda406a9befa5feddd84551b8b1882a59c9b9a4171badb2d9970', 'category': 'Other', 'description': 'The image shows a traffic cone. It is orange with white reflective stripes. Traffic cones are used to redirect traffic.', 'image_quality_notes': 'Image is clear enough to identify the object.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3581.0, \"x\": 3269.0}, \"hi\": {\"y\": 3756.0, \"x\": 3321.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5635: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:94b81b9b6e2336e3f30785966c5671d7:00110060\n",
+ "Processing image 5635: timestamp=2023-12-27 21:06:45.128960+00:00, observationId=o1:94b81b9b6e2336e3f30785966c5671d7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31228494024896003, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=493, total_token_count=570) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:94b81b9b6e2336e3f30785966c5671d7:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2023-12-27T21:06:45.128960+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A94b81b9b6e2336e3f30785966c5671d7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=13f172c6aec39c54b3b9a27bd99fcd354eec945a98bc4a4eac827df9c9308f8f3a17da2ba7fac3304e024874828398bb5ddb4e51bf327ddf6c25ec75ef20a93bd7cb7dbcd346373667aea0132ed009d915f913faefd8035c268b39c5cd18dd047b6f11774152f0f58891ce3a8352c497243c0c3a60392d573961ee1fbed25cab5d9bbf60c272068c5baf6102dfadf1952f8a5a5d7b3a41c3f9f56bd7844e2da1b3721c605a539cdfd0c7489ba07434d60f28cd4667df51be6784eefbc70f9cd5615600ea3518f76cb007cef76f852f2b2fc3cc9d815a4cabbd2ea0741052299f02db6a030e9a58b233e2cde6eddee6a80ead7e553890df092398e95bd23e9467', 'category': 'Other', 'description': 'The object in the image is a traffic cone. Traffic cones are usually brightly colored and used to temporarily redirect traffic, mark hazards, or delineate safe zones.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3415.0, \"x\": 1954.0}, \"hi\": {\"y\": 3498.0, \"x\": 1983.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5636: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:e51f60022ef28b667a52840d87713f47:00110060\n",
+ "Processing image 5636: timestamp=2024-02-14 18:06:22.855475+00:00, observationId=o1:e51f60022ef28b667a52840d87713f47:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a safety cone, typically used to indicate hazards or guide traffic.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25769616711524224, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=493, total_token_count=555) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:e51f60022ef28b667a52840d87713f47:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-14T18:06:22.855475+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae51f60022ef28b667a52840d87713f47%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=663cc16d523387d38774ddd30d2c009551f362bfcb325a047a7b80eabe06ce5178b1429f2d4515da26e5643309a69bc281b5334e8c8a90716a84d2b022a1ba573b82ad22c4261c77c66d1e7884457aeefc1155977814c46fcd2985cba2855070753a8cc555eb02f30382872afc73125e97b42e7a01ab975600aba1289b9db49656e89756f78eefb906b0969fcfdb6027da0a6e5552ac0890c7fffff76258a0eaabea397569afc81387a8bfc0066fa6e97b9967ba7ddb90240773a3434717cfa07de59316590bb223bb57d52187abc362cbeabe5d7b3f4582522400df579e9e4e7d7caa1a92eb2e73886e4d3b4abb96d7358933d28163bd06fcf6bf7914359e7b', 'category': 'Other', 'description': 'The image shows a safety cone, typically used to indicate hazards or guide traffic.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3469.0, \"x\": 2358.0}, \"hi\": {\"y\": 3561.0, \"x\": 2388.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5637: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060\n",
+ "Processing image 5637: timestamp=2024-02-14 18:06:22.555116+00:00, observationId=o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, likely used for temporary traffic control or hazard marking.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17328392513214597, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:1c3a85001e7ec56e3a04173a4f63e79b:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-02-14T18:06:22.555116+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c3a85001e7ec56e3a04173a4f63e79b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=29803af2bd173edafa8e56c4de0393def706fbb28c11e234dc7411e15c9fe71941d121329b46d1a3817173016d12bdae7a83d7c0c2c9bb4e0aa51bcf0b8e037fdbd78ce6d76a01e7f9bacd374c6e1a29ab26d8f8ac7812b820e42ece8498f41fd7bd97f41d3275a756a38217fa38d1aed4a1e243beb99ef951655031be643ffb7ff630a456e5566395b9c218d6a9a8796a2aa74fe677dde55946992efd60f20ab7a4d0c3b8ef6ad70060aebc3ed99c4bfcfc828ed0366c767373c0904c2733ac1038d83b9164ecf85961aaf2f448adc495d7a8e4b51e0efc20acdfcf7edd51af5fea9e5707ff0b19ed9e47863841f6714680ba0dfb8c9ee81dfdc22d74404624', 'category': 'Other', 'description': 'The image shows a traffic cone, likely used for temporary traffic control or hazard marking.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3512.0, \"x\": 3114.0}, \"hi\": {\"y\": 3635.0, \"x\": 3154.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5638: trackId=t1:032da6fdcd92e4130580b0357d4eb53b:ffff005f, observationId=o1:0d12709b528de8ab7d2e699c938fff03:00110060\n",
+ "Processing image 5638: timestamp=2024-03-01 15:20:57.132109+00:00, observationId=o1:0d12709b528de8ab7d2e699c938fff03:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. \",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the objects can be made out.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40666121528262184, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=493, total_token_count=577) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032da6fdcd92e4130580b0357d4eb53b:ffff005f', 'observationId': 'o1:0d12709b528de8ab7d2e699c938fff03:00110060', 'geographic_point': 'POINT(-82.0158443165333 28.0513006122347)', 'mapsURL': 'https://maps.google.com/?q=28.051301,-82.015844', 'captureTimestamp': '2024-03-01T15:20:57.132109+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0d12709b528de8ab7d2e699c938fff03%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a97cc445145bfbdf791b2b082467ed77dc1d485a6c6b0b72bd1339fe44aec02086b5ff718243ce2d124f9e580287d02fc4ac393e41154a38dabea1a5ddf4c529b2bc70784858cc72ae929e6d87b98343124cdf77954a30548fa917e1fc6c3af57f40bfb8115e1e98a276e28813bb57cd3fd6f26384a71db859faf67673ae545f8799f039d323197e4d7cdd81409b9d2db758efc22c165aedd387b7b0711be50d5003a0ca1805341f7562c3c86db00dcf8017676991c102997c7a2e4c031b9cc88b67e05593838e5de709eb696d254b9b292980eaca442c4eb16352bdba27dd8f65bf64fc734624429609bbd766c15e50ec0de80626c1d1fb6dee84e0d915c6f', 'category': 'Other', 'description': 'The image shows what appear to be orange and white traffic cones. These are usually used for temporary traffic management, construction or safety purposes. ', 'image_quality_notes': 'The image is somewhat blurry, but the objects can be made out.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2526.0, \"x\": 3514.0}, \"hi\": {\"y\": 2618.0, \"x\": 3544.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5639: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:250ed9bc24ff6e62dd50da555a65cb63:00110060\n",
+ "Processing image 5639: timestamp=2021-03-08 18:15:36.193782+00:00, observationId=o1:250ed9bc24ff6e62dd50da555a65cb63:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15502393749398244, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:250ed9bc24ff6e62dd50da555a65cb63:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2021-03-08T18:15:36.193782+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A250ed9bc24ff6e62dd50da555a65cb63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=738082b5db8a961dd482f59dfac25e0719f0077d6bd3a224bbee9b69a7eec7d8054c6ae1ca42f528649ec65fdc32bd5f802be62112df3d84ba48799394b108af8e744605381802a07b382a4e2c45dff9b7d0ce9863da73756a5c10c99b52598208e7e7582dbf7221c4b5754fc36cb7aae57ca568a846c428a2554aa35408f551e4975d03d11229b1685c5ca0a7b54328fc365c06102cde5b83a1a23bdcb421cc3ae2a94b92ef7680a89d4504f32f4ff9be69e13a95d5d481acc9d11f98e34f3cbbca09ac42b5235f50b22eedc474293e9538f39c7395e001dbf75367f5600764bff640f5137ea64eaffad615b4c94d10c6b63b9ccd69f3d17c27f26a2ef7a3da', 'category': 'Street name', 'description': 'A street name sign indicating directions to Southeastern University (3 miles), Lakeland, and Downtown Historic District (5 miles).', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3020.0, \"x\": 2984.0}, \"hi\": {\"y\": 3051.0, \"x\": 3071.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5640: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:cee15ff02cc1fa2259d1014710f2b646:00110060\n",
+ "Processing image 5640: timestamp=2020-03-16 20:19:23.863621+00:00, observationId=o1:cee15ff02cc1fa2259d1014710f2b646:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.\",\\n \"image_quality_notes\": \"The image is blurry, making it difficult to read the exact details of the sign. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.610545115037398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=493, total_token_count=581) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. '}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. '}\n",
+ "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:cee15ff02cc1fa2259d1014710f2b646:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-16T20:19:23.863621+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acee15ff02cc1fa2259d1014710f2b646%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9132db8bb7fec91e205c3cdf4d12c1fcaeca750df5e9ed1c529a621de32f9e40e118f49399f72f6e689fb12590d8fb5acc627906e0fcbf3e0199dd9c5c80a2ab502e4372f7a1d341dcc7093e9a3077cca8b291a537b01c2b4251775db41c8b7defc8f73661d5dda1f77089457db7adad1c279008378b1da36ef2c89cbc59371fdc08535f7da7c107f396337ef7bff90765105770ec74c58dafd8dd57d7de7475100722a2a575f2d3fbd551b39b0384983c303e3d82b1b3d2a5d1026d14ac4aa1e7f22b25c421e7f0f9347603d139f5c1e35b11e269a72b2b27c73988b6a3dcc206a90a6d415ee891ce5bb161396ff008ef8097dc7b9649ec59b6a33f082b9137', 'category': 'Street name', 'description': 'The sign displays names of streets and distances to Southwestern University, Lakeview, and other destinations. It uses arrows to indicate direction.', 'image_quality_notes': 'The image is blurry, making it difficult to read the exact details of the sign. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3029.0, \"x\": 2627.0}, \"hi\": {\"y\": 3066.0, \"x\": 2703.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5641: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:5919eca242b80e32ba8149882f3dff88:00110060\n",
+ "Processing image 5641: timestamp=2020-03-11 20:24:04.892365+00:00, observationId=o1:5919eca242b80e32ba8149882f3dff88:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign provides directions to Polk State College and Bartow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.27715178667488743, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=1525, total_token_count=1584) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:5919eca242b80e32ba8149882f3dff88:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-11T20:24:04.892365+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5919eca242b80e32ba8149882f3dff88%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092826Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=255a1df6ac044e702f3a7b3427798beea7bd648407c3908957108d066a5b3e22e36747a922a16db650ea9656503314ba170665e973a7e8cc26bf20b135e1f62b19e26389701e1f4e8513228de2a42ef51f9a957bdc8b5704df00181a366568ba563d5f9114cd19656402bee76d3ff3c9320597f865b04c4fe1e056637ca70ec5b7ef7d6b5b3d50c170c3a46dcacee093d0f0fd5b4f6a3957a80853bd8ec8644144cdbbb8bf717c3b2f75a28bd8f3155ba1832605784aa524c677179c48b697c912b62a269b4ba65f58843060cd61d090ace108c3503d4f99e05e7a8bf2c5080236d58428aceda8da4fce74f87153dd84d9c786c6d436a9da4f65c0a989c56918', 'category': 'Street name', 'description': 'The sign provides directions to Polk State College and Bartow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3047.0, \"x\": 1891.0}, \"hi\": {\"y\": 3075.0, \"x\": 1973.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5642: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:1a678897cb53563225a584f652a456bf:00110060\n",
+ "Processing image 5642: timestamp=2021-03-08 18:15:37.545584+00:00, observationId=o1:1a678897cb53563225a584f652a456bf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicates \\'Polk State College\\' and \\'Bartow\\'. The sign shows direction and distance to these locations.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33814427624010057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=493, total_token_count=566) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:1a678897cb53563225a584f652a456bf:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2021-03-08T18:15:37.545584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a678897cb53563225a584f652a456bf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4a1ac2cf1bdade976489bfbf29da1231bd6bddcf3f8297b7702878699f84ca1795bf9ad32269e4dff0ddb4d5bec748b0889305c2b53344e8f05dbb6707c003e633eb195a2658da0d762831ddb1b320e50f73333316a61e274a9b3f5cd68b4233049775f2dc4741d6728a0017bdc86b028153d1441836e46fdd3e4a4aa63dc3637b1cf0f8c3ad3fd96d26eb25d5e7d8b14fd8022ced31a2f15c4cfd300e09cf9794e64dfc5d741cc188a4f44bf5a176b57c469d512bef6267e458dfd5879dc3d9781ccdafb954425f32c51ae9c7bd7e2f8703981d1c554cbbc64149370f865add96917783d15b3771dd0d563cce8f78a1d163b8c6a6c80961f9e5a05c79ab93b9', 'category': 'Street name', 'description': \"A green street sign indicates 'Polk State College' and 'Bartow'. The sign shows direction and distance to these locations.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3041.0, \"x\": 2035.0}, \"hi\": {\"y\": 3070.0, \"x\": 2114.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5643: trackId=t1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f, observationId=o1:7fd8c990f059a05880d050ca02865647:00110060\n",
+ "Processing image 5643: timestamp=2020-03-16 20:19:23.563627+00:00, observationId=o1:7fd8c990f059a05880d050ca02865647:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"This sign seems to point to locations: \\'Southeastern University\\' and \\'Lakeland\\'. It also contains distance infomation.\",\\n \"image_quality_notes\": \"The image is a little blurry, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.556495475769043, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032dbe9b537ec4dfc38f0d12e1aa70f0:ffff005f', 'observationId': 'o1:7fd8c990f059a05880d050ca02865647:00110060', 'geographic_point': 'POINT(-81.9013684112099 28.0025750881846)', 'mapsURL': 'https://maps.google.com/?q=28.002575,-81.901368', 'captureTimestamp': '2020-03-16T20:19:23.563627+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7fd8c990f059a05880d050ca02865647%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091118Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9829ccf3d474aadf3e2dd5df1b06733f8c479a23822115b513462a4baa6454b4d1a905683cff1d2f9abbc6a82605d0811671fcde353bd05575f16ec833f562a7238e1f023b1f54969871cb59c8f57226803f8c76178ff179aa7b4efff6de8992ae1985722499ebd35fb0494283e8e0fa9695b981d602f860cced1fe1b514b8c70674ae3491b64e413835ec04e984d61473d7ef44fd9f1d0de90282ed5625b8811cb42e42527bd3ba17c22c8df293dc278aa0afbaa3f75734461a0b3e385945f04b3cbde9ba6281f07ec9432abd38d0072682debd0d8ce9837361cbba4aa0b83715e6e7321a11425eec38880c0aafdc8265064b862a75954152046e3fc93accae', 'category': 'Other', 'description': \"This sign seems to point to locations: 'Southeastern University' and 'Lakeland'. It also contains distance infomation.\", 'image_quality_notes': 'The image is a little blurry, but the signs are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3019.0, \"x\": 2830.0}, \"hi\": {\"y\": 3059.0, \"x\": 2913.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5644: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:b4ca0fe42d990bcc86af803986294b88:00110060\n",
+ "Processing image 5644: timestamp=2022-06-29 16:54:06.386809+00:00, observationId=o1:b4ca0fe42d990bcc86af803986294b88:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a white rectangle with black text indicating \\'WEIGHT LIMIT 25 TONS\\'. Below that is a \\'No Parking\\' sign with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18375881066483057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:b4ca0fe42d990bcc86af803986294b88:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2022-06-29T16:54:06.386809+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4ca0fe42d990bcc86af803986294b88%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7650602ab62b599d74d32f65757ef9b1977805d5cd07d690df85a206da3a85658d5986d17958cde59b219984fc372d15a1e543d8defd13ed7000794ed0361ece1c464250a4a39a280d88bf8cc4c57ce25cdd16fbebac075c6e6a0ebdfeabee3393a43607eced18a59ba079e7b7155a7963ce86a9a878cd3aac45e09a5a211ee68348cd71ffc3ee2be2688e169a109e69d70dfbf89c117493e4fc14caff5ab350bb83f1ff73a0cefbf180499fb476b794a1ef84d421b23089fd6c52cec77c90e41ed49fae48482f35ace144c17060677f7a0d3549537838a8d1ac3ab9250cdef8ee2eeecfc0c239294cea5bcab9784d4ddefbca6d922a2cecbabf31233ab47f06', 'category': 'Other', 'description': \"The image shows two signs. The top sign is a white rectangle with black text indicating 'WEIGHT LIMIT 25 TONS'. Below that is a 'No Parking' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3089.0, \"x\": 1259.0}, \"hi\": {\"y\": 3214.0, \"x\": 1354.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5645: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:b1de9b930087e481d8e7d6b5968b37b5:00110060\n",
+ "Processing image 5645: timestamp=2024-05-07 19:19:17.372570+00:00, observationId=o1:b1de9b930087e481d8e7d6b5968b37b5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign at the top indicates a \\'Weight Limit 25 Tons\\'. The sign at the bottom appears to indicate a \\'No Parking\\' restriction.\",\\n \"image_quality_notes\": \"Image is slightly blurry, but the text on the signs is mostly legible.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2548780331666442, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=493, total_token_count=580) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)'}\n",
+ " Error classifying image 5645: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 305)\n",
+ "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:b1de9b930087e481d8e7d6b5968b37b5:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2024-05-07T19:19:17.372570+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab1de9b930087e481d8e7d6b5968b37b5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3cd9412f59c37e3913b3373567bd07bccacc4527b5e09631f76682156a88e5a85a987ab8faee37f829f5dcc9f76ccd71dd1474c1e76b29dc0c7dbbf7f0bb084257bbc114737d3563edcad368c2bb35386f1baf5f0b14567b7d2b64b6688ab1c4817e01b27921f4f30412d4744a693aad49d166627842db7ac3687139c3152dd7afc1bdf51ed8f58a8ed3b8877a755f57c93dfb4e7c2599cbbe5b97b17ea31a037595d885c87a41ed0f3ef8c1a8a1228780f3fa8193d8daa0e6a4cf62ef2cf0f344ec926065c3557f73f69776b824d178bffb07a1af356d4c950c8935e0284177b96e592bfe773940fd20b93f4d0437f809f9fe34e2aa987e9315d3b5eec81f3c', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3177.0, \"x\": 1600.0}, \"hi\": {\"y\": 3249.0, \"x\": 1652.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5646: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060\n",
+ "Processing image 5646: timestamp=2021-11-05 17:32:53.482319+00:00, observationId=o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a weight limit of 25 tons. There is also a parking sign below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14988769184459338, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:abb4bbfc08b422c5e8a9083eb841d7fa:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2021-11-05T17:32:53.482319+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aabb4bbfc08b422c5e8a9083eb841d7fa%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0642177f3799f755b2ec616e5d524756df101d64b8b882496feb636c54ddf7cf43c0f03dc756c0342bd71ec14334e65ae6e54fd78a9f7327dd61e32ea6d60d0a43c9a1a9806848490a9e52a9626f5d057ce65dbe802f4e23504ff34ef6862c55375cd6069802fe967e836e5ec1ae5a80b87194cecd4f000d7c1178bc787bf6658b5959ff5ebff3675807fd49dde903513968fc7522f09124c96e1726fbf115bc841f223d9dcf555b2a7a0edfe70e6e3e6f6817d7cb4fa56bd4ea5cd8252e7f601e6f9a5393068c5c9f6aa5fa7e6e35c1ac50b6c69de755cc7c547acb87001ae73107a9e7286c0d39cef6181a8787b896e24964f37185334d538df6d552c251f2', 'category': 'Other', 'description': 'The sign indicates a weight limit of 25 tons. There is also a parking sign below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 1457.0}, \"hi\": {\"y\": 3221.0, \"x\": 1508.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5647: trackId=t1:032eba494656c5f502ba6aa0b1719620:ffff005f, observationId=o1:71cbdebaf73833d63c59010934129c6d:00110060\n",
+ "Processing image 5647: timestamp=2022-06-13 21:01:07.880862+00:00, observationId=o1:71cbdebaf73833d63c59010934129c6d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign appears to indicate a weight limit of 25 tons. It\\'s a white rectangular sign with black lettering.\",\\n \"image_quality_notes\": \"The image quality is not great, but the words on the sign are legible enough to make out the weight limit.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3197218788994683, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=493, total_token_count=583) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)'}\n",
+ " Error classifying image 5647: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 322)\n",
+ "image_report to be inserted: {'trackId': 't1:032eba494656c5f502ba6aa0b1719620:ffff005f', 'observationId': 'o1:71cbdebaf73833d63c59010934129c6d:00110060', 'geographic_point': 'POINT(-111.92397686818 40.7605741728126)', 'mapsURL': 'https://maps.google.com/?q=40.760574,-111.923977', 'captureTimestamp': '2022-06-13T21:01:07.880862+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A71cbdebaf73833d63c59010934129c6d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b5b18f9d51240f1d1a8696945595511d8cb29b55b7d16104168ec78eb35a10f8850f6a021a693e3a1033676301ed75dc990c7859e03083ee7f7e149e9c5205af3a7baac42f24de28ac77611d821ad1f394b77d780afef7585658ee43cfd4b0bb9600c653fb5ca9f5b19df00abbb9445e317f41fc079df7ce573fc7886cb5b28851d611c7267704da3f05bc77b25e1363f4df19135cecb470a06ad34ec7e6d292b8d795f840310c53afeb21a6c8169599ec36f5d76f2ff9093de62b758b9ff711449c16918a59a4474c059fb5e2afae396da637086fb9b6867c9ba12b3377180ef5bd56baddb054196f377df632bde8945e587395eacf88dfd4ef18c8ca571f5', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 3165.0, \"x\": 691.0}, \"hi\": {\"y\": 3212.0, \"x\": 727.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5648: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060\n",
+ "Processing image 5648: timestamp=2022-06-23 20:57:31.019352+00:00, observationId=o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15030600807883523, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3073, total_token_count=3139) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:73b7536f0cfd4574c1c8eb0235cdf7c0:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2022-06-23T20:57:31.019352+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73b7536f0cfd4574c1c8eb0235cdf7c0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b8811712917016c6bb34eab1752ebcc203ede028c0e66cbec547bed677d07b6f4b46bcd9bef19c7fa7efe9a83fee5fc89403881a9b7b074dee074a41da4c46a97025d46fb631980c11ea65915693d6b4d85f5faa34e56681155ea77e392f98c8700017044741c58fb8d8679a8615be7e9f2b020d701f5dadd720fea41feb13c980ebc196d6f901e327cf2e7ab018a5cef6d939f412caca86fad6ae4f0e9ec55f10917c28c65bad23b0dcdc5ddfbbd24c037b7dab2edc79d6f7c842e3a1409802cfa3ee55962c9733630d4aded4d496ea309c85dd43647d867693c08ec5ad444eb95dcaa646d05c701134680c53cca2911a2ff31d320334099748569ab50f6b8b', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible. There is graffiti on the bottom of the stop sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3000.0, \"x\": 2401.0}, \"hi\": {\"y\": 3238.0, \"x\": 2581.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5649: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:f06c6f13666ecf835752670b9aae163a:00110060\n",
+ "Processing image 5649: timestamp=2018-07-18 15:35:53.596249+00:00, observationId=o1:f06c6f13666ecf835752670b9aae163a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"An octagonal stop sign is visible with the word \\'STOP\\' written on it in white letters. The sign is orange/red. The support for the sign is leaning. There is a street name sign above the stop sign.\",\\n \"image_quality_notes\": \"The image is clear, the stop sign is easy to see.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5009193420410156, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=2557, total_token_count=2658) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)'}\n",
+ " Error classifying image 5649: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 353)\n",
+ "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:f06c6f13666ecf835752670b9aae163a:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2018-07-18T15:35:53.596249+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af06c6f13666ecf835752670b9aae163a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0e0f555798609c32adb0bb1b5bf9b5a7d6a15b8ccc693db23a695db35e112b45a812288d523a8bdf4cd35eaad4fd1d492ea806d690bab3b9ee465650fd2617ebace321996d3da9e9e3109cf9ff6cda7241116c0e2b311b807a9ea8c9c872a204b8e5bb2b51a17b087969898a5909513d3a923d6a278f2d7256bbaf37aa2f4e725a242ebd471ecd43956684808020b587f6724583ac0210bbfed45d6f58bfc39e5f8067cfc47f9c881c656c4d75c4642b8b8c3c409542e1821d6ae453e7ab1fb10682073799a95d4fbe60b28de727afb34e6a7ad70a89c251ceeddcb042c11e173e0cf9ded57610be43bd2a4a426801dda46aef45136e8d1c8679b4420f630c0d', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 101.0, \"x\": 129.0}, \"hi\": {\"y\": 545.0, \"x\": 231.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5650: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:76119efe373840f89cee41f21f3de041:00110060\n",
+ "Processing image 5650: timestamp=2015-09-11 18:50:34.267330+00:00, observationId=o1:76119efe373840f89cee41f21f3de041:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal sign with the word STOP in white lettering is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13210260672647445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=3073, total_token_count=3134) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:76119efe373840f89cee41f21f3de041:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2015-09-11T18:50:34.267330+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A76119efe373840f89cee41f21f3de041%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=957504ef68c8a78306f7701db2ab952aaeac562eda8df974df653b33183847687eca9b19d12f6b8b7a78ab07392163f4d5b4e8d0a5d536045b3d4a9c620396690f135178cf5a0e4db8bbe913972d4cbb60663cde01ccbe0e116cbe9f53de5efaada63ff4b2f9fd5600df1e912c2a6d0568146cc9a56a0915e7e70ecefc0359b00c15c7a2e162c06ea755e39a4186c4fd4c110c5865bd6933b3e250acfea7dee892ef08b6ca534149debaf7a631d5f35c17d99be46b91b94bb296c76c30a182fa2b6b7a22f22c7b5f09a40ffc8865e10e079287dafb60ba0b6fb4f3b64d9e350c16c377f85395be6a45879415587b2fe3e53b8bcda3d41d20c191dbd8bc4a799b', 'category': 'Stop', 'description': 'A red octagonal sign with the word STOP in white lettering is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 716.0, \"x\": 891.0}, \"hi\": {\"y\": 973.0, \"x\": 1052.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5651: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:8c25f087a1400184b1e4caa2ad997f86:00110060\n",
+ "Processing image 5651: timestamp=2018-07-18 15:35:52.788120+00:00, observationId=o1:8c25f087a1400184b1e4caa2ad997f86:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1478737361395537, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:8c25f087a1400184b1e4caa2ad997f86:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2018-07-18T15:35:52.788120+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8c25f087a1400184b1e4caa2ad997f86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091326Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=783b59bf1d0e4088bbee806af7a254a5674b9e08e62a4f066683fcc7b731cd35733f0fcca1b06c5f252f430ecbcd3692be1bb12a3a1ed729d1e30e97d8ee081a97adefb804fb6abe2ed09bcb9c72e084a3f58acb27061c4cc25d8cdc6d4a332195166ad76f4f8168e5dbd836cd5e989ab879c167a7c0edd41bdc968e7ca5fff58b5d9f15dbf6bd44570b4e28cff03521b87fd2e11ec6411fb243f9dc344bf34c4e7fb9e1bf9f6fac9fb3dbee772b82f7a20c01eeff5db9b699e1cd1b59ff6e1b436bd477ccd48c3f1e020bc2df646bdf08248ca2decbda54b0a70433cb5fe0d27c86153a4676fde5a4eb22277fab3baafb9b86ff3b4a025533525044061dd8d1', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is present. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 716.0, \"x\": 587.0}, \"hi\": {\"y\": 1010.0, \"x\": 802.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5652: trackId=t1:032ebdf03400a6960b93fa357656431b:ffff005f, observationId=o1:ad6c0c930a77e46184c62d4eec928eab:00110060\n",
+ "Processing image 5652: timestamp=2022-05-16 20:32:30.975064+00:00, observationId=o1:ad6c0c930a77e46184c62d4eec928eab:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible with white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09361289719403801, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032ebdf03400a6960b93fa357656431b:ffff005f', 'observationId': 'o1:ad6c0c930a77e46184c62d4eec928eab:00110060', 'geographic_point': 'POINT(-111.88741358828 40.7892550025674)', 'mapsURL': 'https://maps.google.com/?q=40.789255,-111.887414', 'captureTimestamp': '2022-05-16T20:32:30.975064+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aad6c0c930a77e46184c62d4eec928eab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091520Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2382535b66a54467fa3f5d65c3b2a3918bff519e42059019321d9800a2b77131ce80378163959b07bd0bd89149e8411541edd8af4797673638febcdbad59db0bd626b4ac3b13f6a095a8455fac8b820bd51395f1dcafce6b84628939407eadac047525178b396d379bd5d86f3e46bd5328790ba1068595e9c237ebf335a3440ccda1743917cf8a88b997d37265d612a22559eb4a358f715516dbf9f999afa083fa43569a4c8bd7778d6edc9e2a8500e8ce505f9cbb6c1eb1410d7b1a3f01bb397e63c9e157537d6f48dd8ea04f26802611683b370f285ef9b1fc975a686af966ea449f50a3529c3dc11ab4be9558f254abbc243b2ef667d300b3965e6284cab4', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible with white lettering.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3028.0, \"x\": 1655.0}, \"hi\": {\"y\": 3316.0, \"x\": 1886.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5653: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:3044db8c963641a40dcb849481884b37:00110060\n",
+ "Processing image 5653: timestamp=2024-02-22 17:10:20.335184+00:00, observationId=o1:3044db8c963641a40dcb849481884b37:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner\\'s expense. The sign is rectangular with a red border and white background. A phone number is included. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3701161588175913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:3044db8c963641a40dcb849481884b37:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:20.335184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3044db8c963641a40dcb849481884b37%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091629Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5eeaafa312fab9a6bc16fbeb67b2d40cace8bd228e8faaef6a575a337c33238eb991f2b3778b84a4151c6f8eddd4f9e88f4275e7388e71af8a100b02773d127ab5537544c620d5539f7d3d2e5c3014010875c9200eb94c2e28542b4c30dc3ec80b9f3b1d5a8861f1c4da5eadd6c6c100259ae98f3ebc479d2db06430f173de9c19f294257b5aed76194d0b91d3122362f1116efe4aa66a4621f83a29d54aeb674f9232d9c63cb8013d4c50cbe2a04dc7b95a4ef99bd50bc50f26848fa2c587232d36c77f1498bb5e1b74f4920deac613efd3a6931f6aef978455f89020960845fd751988f9b58b9a4a2f7eac551aa4d52d2e5ebaee8e7e848697209439e3bcbe', 'category': 'No Parking', 'description': \"The sign indicates a tow away zone. Unauthorized vehicles or vessels will be towed away at owner's expense. The sign is rectangular with a red border and white background. A phone number is included. \", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2570.0, \"x\": 2731.0}, \"hi\": {\"y\": 2740.0, \"x\": 2854.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5654: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:ef800dded971d6531a7f416e19499c05:00110060\n",
+ "Processing image 5654: timestamp=2024-01-19 16:47:42.857408+00:00, observationId=o1:ef800dded971d6531a7f416e19499c05:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17416851790909915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=1525, total_token_count=1622) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:ef800dded971d6531a7f416e19499c05:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-01-19T16:47:42.857408+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aef800dded971d6531a7f416e19499c05%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091124Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9ccbb343a2fccbcbf53594128b4facb412f7d5130632e696efd28416cf4d0855a79eb165abaa0f4e162026aee7f97d7a14b83daa0769a0316484a24c2aad93aeee0fa3ec7bc928016099b5dd89f5299a71cf6794cf76ce4fc4557810e77e7c7c5e22cae7671ca55418cbf021959f9fae5ba6dfde68bf8710651078bdf589a915e1e9e4d477a93b93d62f93eca4f230186155388dab1dadf817ce9455b35b12e5f11053de1c96dea49ece8160c086bc6d01a0db3ef1c5ef1cff667b12a2b9869bf3d1de7338a13bde227ca4175e42eee87c9c4cf65dbee8e0820d14ef423d1265ac5f6a2d9f81cc5cfa2c8412d28451d1e00d77d1a5d2f61c6b3ac12897eeb36f', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It also includes a company logo and phone number.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2560.0, \"x\": 2775.0}, \"hi\": {\"y\": 2731.0, \"x\": 2900.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5655: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060\n",
+ "Processing image 5655: timestamp=2024-02-22 17:10:21.518817+00:00, observationId=o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15647600997578015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:2fab4165b332382c5c6a9c4f8ed7ac5f:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:21.518817+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2fab4165b332382c5c6a9c4f8ed7ac5f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=56a7acc02701487cdba77b90b73b476d061f1accbdebe425fe930bce057082bcbb626689901d9a64c5f9314d766ad73dad3325a6f082f65c108eaa060ee7bb6ed6ea995afce734c5a872190a3ab2303a78399b056404b52a31342ab23879cb38dd5e45925a678c98914620990f46f18f05d6ea5c8ed9c3e9264c487a9639f7dab131a5abba9a91996f7bca9a32b215cd6951224330951856b084e7f0372aaf72cb242fa0c6599361fd9233354d7506ebc1df66b06d52c3e58bab9dea361d6f900873a3707572b5c107186f2974ff3f85208afd04c15384f59a0b2dc5b0f5af566ad327427bdc6c87e867292a2432f00765d8be440c263aab41bcf7ba31f2a9d7', 'category': 'No Parking', 'description': \"The sign indicates a tow away zone, meaning parking is prohibited. Unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2572.0, \"x\": 1407.0}, \"hi\": {\"y\": 2744.0, \"x\": 1520.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5656: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060\n",
+ "Processing image 5656: timestamp=2024-01-19 16:42:31.174951+00:00, observationId=o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a \\'Tow Away Zone\\'. It states that unauthorized vehicles or vessels will be towed away at the owner\\'s expense, 24 hours a day, 7 days a week. It includes a phone number.\",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the text on the sign is still legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16000008356003534, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=105, prompt_token_count=2041, total_token_count=2146) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:0bbff260b29d91a83b28462b6cdf9ccc:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-01-19T16:42:31.174951+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0bbff260b29d91a83b28462b6cdf9ccc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092519Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31ead68aebbc715b61998ec13203f468b53e2c043e09b7c21eac520b774b78b69892e9d48816b14d312685bd29955036fc944223daa570aeb3fdc4634b2efeda37f221ff653203937589fd9e60ff81614a254a8100884a0781b3ddaaab3a794f28a5357ffac41e83c536f6880ed35dc57253c5015c26f297b156f5107b498c75981d361dde97544554faa33f048a19b8c46c0cc62f578ce4b3a28e764b1a12b2ca100e3a2eb7eaa3304da48a3dd4b30349e10235e7e6b2443978ef9ab9b211da6d041b59c397f1c54868c5851368b079c65260cd42e3ae7c29a2de89703869ff3b586ab806f418e513e54f6da927cab9f57166793cd654bbe973c77c1d254c81', 'category': 'No Parking', 'description': \"The sign indicates a 'Tow Away Zone'. It states that unauthorized vehicles or vessels will be towed away at the owner's expense, 24 hours a day, 7 days a week. It includes a phone number.\", 'image_quality_notes': 'The image is somewhat blurry, but the text on the sign is still legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3378.0, \"x\": 211.0}, \"hi\": {\"y\": 3563.0, \"x\": 341.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5657: trackId=t1:032fcfd792024718f891f86c4a5e7a4f:ffff005f, observationId=o1:d3c19358c4e13b5910f3af3c4a965a57:00110060\n",
+ "Processing image 5657: timestamp=2024-02-22 17:10:19.171228+00:00, observationId=o1:d3c19358c4e13b5910f3af3c4a965a57:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign reads \\'TOW AWAY ZONE\\' and indicates that unauthorized vehicles will be towed at the owner\\'s expense. It provides a phone number.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the text on the sign is mostly readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21878589283336292, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1525, total_token_count=1613) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:032fcfd792024718f891f86c4a5e7a4f:ffff005f', 'observationId': 'o1:d3c19358c4e13b5910f3af3c4a965a57:00110060', 'geographic_point': 'POINT(-81.9693795557284 28.0385089186434)', 'mapsURL': 'https://maps.google.com/?q=28.038509,-81.969380', 'captureTimestamp': '2024-02-22T17:10:19.171228+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad3c19358c4e13b5910f3af3c4a965a57%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3e7c46684ffa71cc652bff993c01de18cf0eda779561f5b882f42a194588972785286bef89aceede7a77e656dd68743ff471ec610c8dff7ddbf44f070617cdbaa7afd4c6ba382d80277c2d73e04e53e826448bde375e62827aff581b1972c667ddca9b8b492c2f4659d0cdd094e5cc0ee2f4890005edd39bd54a6f1adcbd161c1f92a05e157cd39c73c6a75aec47ed81fa75dc21e192a7b062ca56d3bdca1e9f72c905c584ec35a39ae0d39a64c92d0ade08b98e2ec9ae5f045f70fa00fbd574f329d953c745f5117351b6284bda36e7f700b862ccdf178c1319a469173ee7882848ea9ebf508fe75be5d5b8068588b885e0b1e99bb3ae20616fcb19286f5629', 'category': 'No Parking', 'description': \"The sign reads 'TOW AWAY ZONE' and indicates that unauthorized vehicles will be towed at the owner's expense. It provides a phone number.\", 'image_quality_notes': 'The image is slightly blurry, but the text on the sign is mostly readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3469.0, \"x\": 681.0}, \"hi\": {\"y\": 3611.0, \"x\": 785.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5658: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:24f4558d2b189c966c8cb05a6abb1434:00110060\n",
+ "Processing image 5658: timestamp=2019-06-04 23:46:05.934381+00:00, observationId=o1:24f4558d2b189c966c8cb05a6abb1434:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign depicts a bicycle symbol and the words \\'BIKE LANE\\'. It indicates a designated lane for bicycle traffic.\",\\n \"image_quality_notes\": \"Image is a little blurry but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18938256564893222, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:24f4558d2b189c966c8cb05a6abb1434:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:46:05.934381+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A24f4558d2b189c966c8cb05a6abb1434%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0ef06be7e0246da1ea109ed3b5e71fd0736efc2b9f1ac5945dbcc3793de912ce30577cf75fa88838cab2a290542fcdd3443e1543ef23f606cc810182b399d61a0fe736867e5c469c10e30f1ceb3cbef6a3d0ff4f680f12b159d489e3c7a3c30485f834664614695160f6f82139d300eed896b0f929cc37dad85a4ca1d8630710084dd1eb46ffb120806c1c56e8f2eb07e88bb0a0a4f4cf92d44521aa716e3383d6dabd31c1510213382e3d4d954c0348c10973caf701cbe39e0523c64ac7dab53ab388ab85c8edcf93bee9bf63e1cccd413572a0a226ac7e69499fb0e83e3d932dd3c094f899092ec88bbc9f4000b892c01c67cd6912ba5adef9d27867790144', 'category': 'Other', 'description': \"The sign depicts a bicycle symbol and the words 'BIKE LANE'. It indicates a designated lane for bicycle traffic.\", 'image_quality_notes': 'Image is a little blurry but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 3615.0}, \"hi\": {\"y\": 3185.0, \"x\": 3647.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5659: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:c690527d09bc54eba6f7199967046d98:00110060\n",
+ "Processing image 5659: timestamp=2021-05-05 15:30:16.999462+00:00, observationId=o1:c690527d09bc54eba6f7199967046d98:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign shows a bicycle symbol and the words \\'BIKE LANE\\' indicating a designated lane for bicycles.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2833109182469985, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=493, total_token_count=561) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:c690527d09bc54eba6f7199967046d98:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2021-05-05T15:30:16.999462+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac690527d09bc54eba6f7199967046d98%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1062d8cdc6837e96046e1c3e49c1797f67a5ebca204d205dcc9fd25a49fd53b7382bad5fc1e5197cd1f66001577b0fd8d4bdd31716be35b8337eeb3d581e4760f1399dac3b3f308817bcf876524efdf75da2c7bf37e93c0bc7ce2250436800246bfadab4a417d41c75a37ae5fd4b5cae33b87841d024724a28b9cfbc28a93bd90475a679ed172a4eca8293656555a1dbcab5ca51d2df8477306fb27a0b8dce757532a21f8a05eff2c32ca941f639347800b3bf1a0cf510fdc35e72d55ca68c0ab992402464ec36b4c98ce6ab6dd43f4aaf39a7399a434ebbc0aa1d71d9f078a126e41b5b25147331bc22d096150615031b3de02500699e65345c0501eb826ae9', 'category': 'Other', 'description': \"The road sign shows a bicycle symbol and the words 'BIKE LANE' indicating a designated lane for bicycles.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3174.0, \"x\": 3597.0}, \"hi\": {\"y\": 3203.0, \"x\": 3631.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5660: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:ab6bd063a225360363c27f3e672a31bd:00110060\n",
+ "Processing image 5660: timestamp=2019-06-04 23:46:06.662361+00:00, observationId=o1:ab6bd063a225360363c27f3e672a31bd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a bike lane, featuring a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08538634126836603, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:ab6bd063a225360363c27f3e672a31bd:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:46:06.662361+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aab6bd063a225360363c27f3e672a31bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091216Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa24ec02a33d0e0ffd52d9f9467180f53f743199df2f1d97ee3608cc11dc7e8acc35533057dcca199927adf03afcb200567ad65bf89f8ba828fe1c7a588df2415745c11abc4c90d887d4e418989a2f222f1a4d5a083b669277cef27b49cad8393698bfc4158086de95ae958c68ae2c6292bd757dece289b163b1eb0ff06a5340f22a5388d179b6f7dbce08ee763ca0b7a342ff4191cfb3a58c2d7fbfc0a3dce565e3492e3b3cd7bf58c33238e53637bec7a6e2dda5fc176e74434c90bea62a3909b65b62d352d5504568ecade9c7dbbce92383345fc8ee74334beaf0a8b0db6ab629c035204cbd4e2c6e9701edb8e53a75811f5ab5894d03e16a9870aaccb78f', 'category': 'Other', 'description': \"The sign indicates a bike lane, featuring a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 544.0}, \"hi\": {\"y\": 3190.0, \"x\": 582.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5661: trackId=t1:033012a5ed0c8dbef9d635908583c057:ffff005f, observationId=o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060\n",
+ "Processing image 5661: timestamp=2019-06-04 23:49:20.903279+00:00, observationId=o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a bike lane with a bicycle symbol and the words \\'BIKE LANE\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07985190611619215, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=493, total_token_count=558) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033012a5ed0c8dbef9d635908583c057:ffff005f', 'observationId': 'o1:d45b77d736a44673fdad53aa1a7bf3b6:00110060', 'geographic_point': 'POINT(-111.886042458883 40.7862787546825)', 'mapsURL': 'https://maps.google.com/?q=40.786279,-111.886042', 'captureTimestamp': '2019-06-04T23:49:20.903279+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad45b77d736a44673fdad53aa1a7bf3b6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091825Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=577ea4f1bb7fb2d5021237e9579bb20e30241b54c31f46ccd3bc85573e0eb29879858f700651163416823371f5e8f2d3fca6a98a21464e23c9332da6b91caa3431cbcc38f98319f4a205348b5b97ece0943f4dd9f89a7cf33a4b6e76a891f0c7b225306beb11dd2721e96d4f98938415cbe68797ce1812c2350f4ecb39a75e24930eec8e3be18a9383c208cd4187272d4c0ae2f87b81b2b810531e1d9c62708e0bdc6fefac12152d7b6b8d013652f59616625fb438a67800c1392fd58c2b51eebd072c01a2511d3d76b4c307a960c9af5fce08990001af4d925501f28280ef984a4fed7af65827a240a04827a432a69a4079c9156ac05f8d326534e64835db9c', 'category': 'Other', 'description': \"The sign indicates a bike lane with a bicycle symbol and the words 'BIKE LANE'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3214.0, \"x\": 758.0}, \"hi\": {\"y\": 3242.0, \"x\": 793.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5662: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:c8c4b4944f2c61d76939eae580fb5a12:00110060\n",
+ "Processing image 5662: timestamp=2022-06-29 20:37:53.515033+00:00, observationId=o1:c8c4b4944f2c61d76939eae580fb5a12:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is a rectangular \\'No Right Turn\\' sign, featuring a right arrow with a red circle and diagonal line through it.\",\\n \"image_quality_notes\": \"Image is clear, but the sign itself is weathered\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31668489190596566, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=493, total_token_count=572) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered'}\n",
+ "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:c8c4b4944f2c61d76939eae580fb5a12:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:53.515033+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac8c4b4944f2c61d76939eae580fb5a12%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091823Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b8789a8bcec41febb877f4415e85a048fd57964e82d27b7616c584d51342352ffe150fdaba8796a6cce466ac3893710bbe9fde09a501909577ac3498e18b37b95203534cd7aaedffb100c650bb5ccc2ae5eeb36cc26db26adae646a275ded25939635730e729f83860f93f22efd682ef3c2272b2d3e47d1568e94d5fa13510cc28f7f0a35ecbbee38405dcec85da32e5e97dd18abb7df2c0ee65dfd0beb1ccca01f4dd33bb6d431e2bff2c4be604bfb5531eca754fd41a41565f8995e0b9fae636d4b10abe1ec0e6bbc8697ac9b84bf7143cb66cc9d58f79382cbc1db14f8c1a53e772b89cc41f2ba41414355e7b9d4f2ee5b48c4009f64cb8a45305de32fd28', 'category': 'Turn', 'description': \"The sign is a rectangular 'No Right Turn' sign, featuring a right arrow with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image is clear, but the sign itself is weathered', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3265.0, \"x\": 848.0}, \"hi\": {\"y\": 3408.0, \"x\": 948.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5663: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060\n",
+ "Processing image 5663: timestamp=2022-06-29 20:37:52.782998+00:00, observationId=o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign depicting \\'No Right Turn\\' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\",\\n \"image_quality_notes\": \"Image quality is fair, but the sign is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36191547484624953, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=1525, total_token_count=1609) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:fb3b9dfe2b85d47571ad1d9cb07f39b4:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:52.782998+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb3b9dfe2b85d47571ad1d9cb07f39b4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092240Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=753192a67f328f880ff0b22ee43f5ed92500548859f46237f08b28ac0fb9ef2082e297edcf877bc76d7f05ddc382d80cc2451159ca538b7b5aafd06e22d4ae2a021534e2afa9eb79f67d5c747a393b9e025a4d226ed06aa28890fabf5403546c5a4c3b70e9bb2a3500881508e3c72fe41b84805ac634254974ad3f94fdef66e78cdf50810c9a72b8282888e10170d02501bde9ef89b7715a28a42a351d021bb1bb051990db198b85169f4db70d6eeb5204086835f8767b489c29fa6b24b3b967c9c607c3bf3a6378950553da5d42b86707897bdd844d04e1c79747cf6fd08a4a2730d62351055a2643ab8dbebd9d5ded985a1e4de6bdb7c149ba3acdc5823473', 'category': 'Turn', 'description': \"A sign depicting 'No Right Turn' is visible. It shows a black arrow pointing to the right, with a red circle and diagonal line through it.\", 'image_quality_notes': 'Image quality is fair, but the sign is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2382.0, \"x\": 3083.0}, \"hi\": {\"y\": 2558.0, \"x\": 3162.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5664: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:93dba57c85a9124e8a195a4f91e54ded:00110060\n",
+ "Processing image 5664: timestamp=2022-06-29 20:39:42.301403+00:00, observationId=o1:93dba57c85a9124e8a195a4f91e54ded:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Do not enter\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and \\'ENTER\\' text are visible.\",\\n \"image_quality_notes\": \"Image is blurry and low resolution.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.42108154296875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Do not enter', 'sign_quality': 'Fair', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.'}\n",
+ "The classification type is ##### {'category': 'Do not enter', 'sign_quality': 'Fair', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:93dba57c85a9124e8a195a4f91e54ded:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:39:42.301403+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A93dba57c85a9124e8a195a4f91e54ded%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=06ad8313d0c80c0134af340e016e5d8c886531a0e147eba3bd73b58d2015313bb72c0c722f4e6e75210f66c75f656c8736a3685288a6b5757338feb23c15ff4213135c562a48ddb51bb61574e0e02348a412309c000008ba7319bd2f3bf6ec277f181192b4d1c906968a6294a40b2b780bdf2be7139d4f6db1c3fd02a3d88bc5e325ba5bf79edeb8375c4f6e8e0c3fd58f992eeab056edc58a18b3ddac25555477b78bca531cfa4143f2de7e6124cb8a4da1274b8af6deb861dfaaa523e47e142446f7533e66febe1424628074f1b8f87f89e40590989826d0e603a8a88fc74a706c05f100d27e191b8e2da99446ec1917b78742c4709783c6c46ad48a4ba987', 'category': 'Do not enter', 'description': \"A red and white Do Not Enter sign. The quality is affected by blur, but the distinct horizontal line and 'ENTER' text are visible.\", 'image_quality_notes': 'Image is blurry and low resolution.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3242.0, \"x\": 899.0}, \"hi\": {\"y\": 3298.0, \"x\": 944.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5665: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:814636a63fd3a8f0525f2b645c8d3f41:00110060\n",
+ "Processing image 5665: timestamp=2022-06-29 20:37:55.923043+00:00, observationId=o1:814636a63fd3a8f0525f2b645c8d3f41:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign with a red circle and a diagonal line is partially visible. This indicates that it\\'s most likely a No Parking sign.\",\\n \"image_quality_notes\": \"The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33041065995411206, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=493, total_token_count=586) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:814636a63fd3a8f0525f2b645c8d3f41:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:55.923043+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A814636a63fd3a8f0525f2b645c8d3f41%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=268db02af886b51f68b8a211bf9be3a81598b485ddc093798c1a6a1b27c409376246042f3a36987c7349739a56bf05ee86d26f88722479ea91c837a044d1bb32ea52019ff429ff1f2b41fb58985a0916dfba75319c9213cc1fa97a6d3e1ce7e331769f95d41dc0be21bf3a3ccbcbeb7da301060bf0a399d2473ef18fb9920d44bd420c7bf8cc03203ffeac3952a59b1c60efdae37e568e1cb7c3c41636421c8c96edd8c0f4433285cb19fcad59c6126c2726ec0e81ac422b5d224fcd3033e7a4f89c74f15501befb05a82424d8c6180eb91122708495b16db8e9f081e82994d3992415038e54157175b03c55bd78b4c1c7bc6f3eda057966abaf4a7e6064d828', 'category': 'No Parking', 'description': \"A sign with a red circle and a diagonal line is partially visible. This indicates that it's most likely a No Parking sign.\", 'image_quality_notes': 'The image is somewhat blurry and the sign is partially obscured, but the red circle with the diagonal line is identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3218.0, \"x\": 2086.0}, \"hi\": {\"y\": 3310.0, \"x\": 2155.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5666: trackId=t1:0331d458071225f329efe93c89be551c:ffff005f, observationId=o1:dcc012681f96493c9bcfc7a841e78aab:00110060\n",
+ "Processing image 5666: timestamp=2022-06-29 20:37:54.271059+00:00, observationId=o1:dcc012681f96493c9bcfc7a841e78aab:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.\",\\n \"image_quality_notes\": \"The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4713875452677409, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=2041, total_token_count=2125) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0331d458071225f329efe93c89be551c:ffff005f', 'observationId': 'o1:dcc012681f96493c9bcfc7a841e78aab:00110060', 'geographic_point': 'POINT(-111.890871976378 40.7673184303844)', 'mapsURL': 'https://maps.google.com/?q=40.767318,-111.890872', 'captureTimestamp': '2022-06-29T20:37:54.271059+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adcc012681f96493c9bcfc7a841e78aab%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1ddaa50d0b3611ace4b70d5118cb793f219630ad34bcf41c24ba41e048ff8d099706976b1d460200bea300790dd730de28cbbec12fac947ee6b4e6472d3e792d6462337f7391aa657fae3bb00fc409ffbac53e96952e90fc0f99f43139b19c0153fbe8acc6e70b4427a1704c7a8f84825d94ba5fd89e1bac955ae77d87120199dc875dd4e6a36d69395f88de0a0663b5f8d5f3e4ceb631e88188553dfdbac70ad60479d5c03dfe5874039cf7fe6d42f3284029fbd24b07699fec6534259390da4868f8baae77d5d16f2309bea68096f728de48d72930ef402450cf5361c9f6dfeb918cbd119ab8def5ef65915fcc4c3b7a52038290fc0a3a33a020d4f74e88da', 'category': 'No Parking', 'description': 'The sign is circular with a red border and a red diagonal line through the center over a symbol representing parking.', 'image_quality_notes': 'The sign is partially obscured by a tree and scaffolding, but is still visible enough to identify.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3228.0, \"x\": 1416.0}, \"hi\": {\"y\": 3341.0, \"x\": 1509.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5667: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:5cea590702f06a41f52353623505ba43:00110060\n",
+ "Processing image 5667: timestamp=2022-11-09 18:57:54.656998+00:00, observationId=o1:5cea590702f06a41f52353623505ba43:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23358746846516928, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=493, total_token_count=568) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:5cea590702f06a41f52353623505ba43:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.656998+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5cea590702f06a41f52353623505ba43%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03907e782549c24e9743c4bdcb1eb4b5892482bef0a9ddb5843854538711cfb1119635d6991b01d39e2d27701469d162738c6e3470b0e57238ddba8dab664ab70590b3665161e89770307c475b7f26e892db30b825c29662371bf20bc94ff49a809bc09def066f57c436b3a23f5e27384520cf92c519574b109171b560a2d27c536e71523207926c0ac1a26e7f92be6d2cb69a99310247b4cc1ab80c950ea1d83e2ba86d4a415df4eedc808bebfea5059aa1bcdc6614d97a5998667c98c8fd4dc0d098815d636e624eb9d28ca396121e549aeb83daecbbb5b6ba94d73d8cbc93a312d4662ffad0f7c1d4a165703765b44250a2ad58f536b8b2b79b00ee996f52', 'category': 'Other', 'description': 'The image shows a traffic control device with red and white diagonal stripes. It is likely a flexible delineator used to guide traffic or mark hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3377.0, \"x\": 3090.0}, \"hi\": {\"y\": 3531.0, \"x\": 3131.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5668: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:5c450a7693b4f339f2926cc20719036d:00110060\n",
+ "Processing image 5668: timestamp=2022-11-09 18:57:53.481025+00:00, observationId=o1:5c450a7693b4f339f2926cc20719036d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35045694693540913, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:5c450a7693b4f339f2926cc20719036d:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:53.481025+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c450a7693b4f339f2926cc20719036d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=964cbb43fcb0880f71640ebc40f28a8e01ffb658bac2ebd60756ad79f469a4a8738aa4bf6fcf8f7b44800cefb568ff28c22ef64e6b6356b3c50607aa03216de190b4b6d351aabd69764e2d6b57f7230e94e8e6045382bdbe58582dc7035e8acbada169c773512279811744d6e6ca053cf35af7cd2a0a358d7c34197e2efeee7caa9e2a45b2d7a91e75f895a0a5a269fd698c20e32a373e6e817d9691d313436b3840937787e0092ae67037efca0fb2f1444c0d372f0ade5baefde36ceca01f43858a3b2b62a0575be26736a3c9cd711385bc9368b79ebe28e3827013d8dc8351e0a8ab8d8bd5f5711ab9c2fdc2b38750e97a8d021c2b84e476ff09e0da651bbf', 'category': 'Other', 'description': 'The image shows a striped (white and red) traffic bollard or delineator post, which is used to guide traffic and indicate the edge of the roadway.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3307.0, \"x\": 101.0}, \"hi\": {\"y\": 3415.0, \"x\": 128.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5669: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:048fb5d8f459841808ad2ee6beb1b709:00110060\n",
+ "Processing image 5669: timestamp=2022-11-09 18:57:54.064987+00:00, observationId=o1:048fb5d8f459841808ad2ee6beb1b709:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35443656508987015, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:048fb5d8f459841808ad2ee6beb1b709:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.064987+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A048fb5d8f459841808ad2ee6beb1b709%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091417Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2c349ce5e037f3cdc4bb14933fc2ffc029b4d36541f1a271fa1e543dd7a7bd3b68780aa18162d153046e37fc28deef5fc2202e384dcbb95820a131144df25a26e3d110bfbac43d89cda1c3f35be1bb0c15d5f88a32424c73d9d64b5455a0de8f085f6fea84e21e64a541c5a7a9dfd5a38df55f6190080ae1b9068cc1810943ab846af6224bc309c1143dcddd8eb7e0d4d0266f2404083972613abef9e3edcd6f46172706b2b059e03e4350d19585dbb5c9bc7449ccbeb9d27b8d3d58cd66ddb3f41d2784d455c92d50abee40dc597871936bcf77d709749bb203e6d449561d09cae968bdc7b24e9335daa1b5e3cf509fc4c1021fdb941e556bfa5ff4a7bf0ecf', 'category': 'Other', 'description': 'The image shows a traffic cone with alternating orange and white stripes. This is used as a warning sign for road work or temporary hazards. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3332.0, \"x\": 3157.0}, \"hi\": {\"y\": 3464.0, \"x\": 3189.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5670: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:d7c3f7f1a442cd00a763468664134410:00110060\n",
+ "Processing image 5670: timestamp=2022-11-09 18:57:55.276956+00:00, observationId=o1:d7c3f7f1a442cd00a763468664134410:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic control device. It\\'s a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.34475845888436557, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1009, total_token_count=1092) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:d7c3f7f1a442cd00a763468664134410:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:55.276956+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad7c3f7f1a442cd00a763468664134410%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092327Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5fb389bbbe6f11c4727e08bfb3a2af6c5fd425e42bdcd55ee9fbf3ba9a1ece49f6547da09b81db9cf0ee30d2bd940766bbf4882ebb11dc14b5a12cb7b94805feb2a77f4f58bc2524e7966fdbd39af1460ec50cf4990bdc121379854be876e55cb237d09235447ded0bf485c860ddf3c692021be6493da83c320442f387e0d827e29261a8c8fb2ee1d80f3d80efb6f86a5f8cb5d885c8e4db2f2716aaa12f30d7b0064f852bf0a003aa6238029862e434829874659b3409bae4ad48a577360fb613950f1696f5ce8a8dce8d74761fad3ac2442300bef9c4f25bf1a87d19e8a98b47400349fc14f57b8200ecce8c3c171a41f1ccde3891f423b02647be201178b5', 'category': 'Other', 'description': \"The image shows a traffic control device. It's a vertical panel with alternating white and orange diagonal stripes. It is used to indicate construction, a hazard, or to guide traffic.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3471.0, \"x\": 2987.0}, \"hi\": {\"y\": 3663.0, \"x\": 3036.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5671: trackId=t1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f, observationId=o1:b37a873cfdc18d79004b420b1faaace6:00110060\n",
+ "Processing image 5671: timestamp=2022-11-09 18:57:54.064987+00:00, observationId=o1:b37a873cfdc18d79004b420b1faaace6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A traffic cone with orange and white diagonal stripes. It is used to divert traffic.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22668164873880053, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=493, total_token_count=556) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332536cf68dedd8f9cebc9b5fcd2836:ffff005f', 'observationId': 'o1:b37a873cfdc18d79004b420b1faaace6:00110060', 'geographic_point': 'POINT(-111.89975373264 40.7362226514185)', 'mapsURL': 'https://maps.google.com/?q=40.736223,-111.899754', 'captureTimestamp': '2022-11-09T18:57:54.064987+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab37a873cfdc18d79004b420b1faaace6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a625f75118a83add9d4999e450af3a6248def2ef4ac17e35d1a8e37dcc241e84da0b0ebed2660baea4bbada9c0366e0dd5fe107e915569c4e7a4ab7d7cde2d9beb86daff92df4b11e6eeff3305599d069ec058433b2a8c19557dfc323bc25cb28556add68e3bd871a63e76c4b769fb1473fca5756877299641a55b733e1c004ff89c1f88bcba60664a8b96bc791a5246fea8ef2ece757458e354d65ebe0bb1857ad8b51cb7e3362a98818c5fc086365b9178b63d79f733e0ab7fd15b4219396cd0b49ff3e62f0f73150f44bd0bed7c2dd8d897a8f92590ca5c317a80966dfd532c4daa0a8c5701cce9c6e35dc95b69a67891f5a514845dd15798fc5c2efc59cc', 'category': 'Other', 'description': 'A traffic cone with orange and white diagonal stripes. It is used to divert traffic.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3327.0, \"x\": 48.0}, \"hi\": {\"y\": 3453.0, \"x\": 81.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5672: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:0679209b8a80baae83850d72afd4e4ac:00110060\n",
+ "Processing image 5672: timestamp=2022-06-14 16:58:34.203428+00:00, observationId=o1:0679209b8a80baae83850d72afd4e4ac:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a \\'Resident Parking Area\\' and \\'Area 3\\', indicating that permits are exempt from the time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.22371096403702445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=115, prompt_token_count=3589, total_token_count=3704) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:0679209b8a80baae83850d72afd4e4ac:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:58:34.203428+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0679209b8a80baae83850d72afd4e4ac%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11150ba24e85ddab247717a105f7c06581a0e1186bd70fcabc19979d60f225b881a4f4690c204a6b241470494cbfc7bb48f0a98cbef5ff320c920b7646bd2e85f4653ccb7c788a09bfd73d282997c376c64428f4b191232e994c51123daf411cfeb44d0aab99cdcc2e1d38a2ed0fef050d2d73a918f3046ee63f0af400baff5cd1b09adad6f3ebcb4f082c929121dd0b7305d74042ad48ef60b0523fe5c642018aac75502d04937ede87c45e1b2c3b4b3163d6c6f9eae0e2b6db29b476272f72d39065fb4f514c70a258021bb9722159763d58a7eff53d7e1c011ecab045c2bf6cc01f018fd7a0d2d0d7035c24aefda125ccca138cdd2e33bfc6d90f90f3ab1f', 'category': 'No Parking', 'description': \"The image shows two signs related to parking restrictions. The top sign indicates a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. The bottom sign designates the area as a 'Resident Parking Area' and 'Area 3', indicating that permits are exempt from the time restrictions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3117.0, \"x\": 3116.0}, \"hi\": {\"y\": 3261.0, \"x\": 3241.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5673: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060\n",
+ "Processing image 5673: timestamp=2022-06-14 16:52:52.892906+00:00, observationId=o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states \\'Resident Parking Area\\', Area 3, permits exempt time restriction.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26409608125686646, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3073, total_token_count=3169) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:2cbaf2b869a6ff9decf5cd9b2d40021d:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:52:52.892906+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2cbaf2b869a6ff9decf5cd9b2d40021d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8ee299ad9043ce05b1a86fd0d1ce4f435b9db129f9c84640844002daa2906ec51c615ef6b57dd45f9d9ab23786fb1f81a598869043e94ced8a90dd1a0e3b5128e9509928aad75c1b728cf69274827e137eb51a37f0de47ace7efd2db18083121c2bb5f32f8a4520fd374f20d3eb059229d939806f861c2635cb1574086ed505600926b399bda510a2c153794885358a5f7278e42d3f7adacdb8f083d6864b4e71e318bf4f2afd312b1ed371c04f2db2c7dbd2622586fa94248127d30967966dba9bfa0c34fc313d405bde585651529c50f5831b3370a49626399ae24d979f8f95c3669ad6137422675c6eacd30a6ce5b838712df541dece24c3d595dd762933a', 'category': 'No Parking', 'description': \"The sign indicates a 2-hour parking limit from 7 AM to 6 PM, except on Saturdays, Sundays, and holidays. Below it is a sign that states 'Resident Parking Area', Area 3, permits exempt time restriction.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2281.0, \"x\": 424.0}, \"hi\": {\"y\": 2386.0, \"x\": 512.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5674: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:f660747c3ae6751e9319565e362bbf0e:00110060\n",
+ "Processing image 5674: timestamp=2022-06-14 16:54:55.598829+00:00, observationId=o1:f660747c3ae6751e9319565e362bbf0e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a \\'Resident Parking Area\\', \\'Area 3\\', with permits exempt from time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2628076171875, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3073, total_token_count=3173) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:f660747c3ae6751e9319565e362bbf0e:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:54:55.598829+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af660747c3ae6751e9319565e362bbf0e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a511184f9881953ad009b18eb918bb0fbf9ec708046a4eb308d8078075c9aba77186a519858233f78fe7baa6a1e87bb61f30135f1f15a883faf75c5a1e10de0f275c0800ce5c0f4049458ffd8b5f5e5b20f19f3efc0a0993afc47623ca9ff1401a5331845b9624a95d4bbf16cc436cb22b11617f3bcfe44114d82953d1deca06c1a8a9c8898b729cfe18fb7314ca0fcd35667acc97603d835def0abbfee09f1d1feb874ec55e0d1bfd7ac04e0dd793718c4ddf6e35aaa75583cd950108a6b95f72c1525d7cbecdb851feadbdd0c7f7ebf795efcce556279e11df709fbb8c3b8a41ae2f5327b7749c1b547f5a01d3d3b3d7ebf3535439f5e2dc86cb106a1bed8f', 'category': 'No Parking', 'description': \"The sign indicates parking restrictions, specifically a 2-hour parking limit between 7 AM and 6 PM, except on Saturdays, Sundays, and holidays. It also indicates a 'Resident Parking Area', 'Area 3', with permits exempt from time restrictions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2303.0, \"x\": 0.0}, \"hi\": {\"y\": 2406.0, \"x\": 87.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5675: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:f1ba72a88f8e4434a2cba50b8393babb:00110060\n",
+ "Processing image 5675: timestamp=2022-06-10 21:47:08.021763+00:00, observationId=o1:f1ba72a88f8e4434a2cba50b8393babb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5780382980535059, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=3073, total_token_count=3154) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:f1ba72a88f8e4434a2cba50b8393babb:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-10T21:47:08.021763+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af1ba72a88f8e4434a2cba50b8393babb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=ba5099960ae8d30656c1ad237f2ddd238504ec95178185af0cd322919bb51a4bd19d835a2ac2358dbdf94d6d3f36899d1c6787b88afbc990599c77cd9fad3fb7f8407c86a6a6624785df1ca0d1ac6322192f8035ce78ba479f04819cc4882a19b9d7aed8f257cf12792c2570d6cdca81a978b114427d98493f95aeac6912bcf352a2534f52a3047d6d052ab9fbb7226eb88381f2223cd4073f97e347f501ef3be6987fd232c97a305d06512f0b579a6d8fe6290a390bb2547f7bdd0e4cc454e11a5c761d464ff26e3af4fa6afb3e83e91e204012b6dbec428a5431d930ca4e969315b2cc47b4072ad7862ab9fe59d5a090544edec94dbd5e2ecd7324a423bf13', 'category': 'No Parking', 'description': 'This is a parking regulation sign. It shows the time restriction, and it indicates that is a resident parking area, area 3, where permits exempt the time restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3196.0, \"x\": 2075.0}, \"hi\": {\"y\": 3295.0, \"x\": 2172.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5676: trackId=t1:0332f67ef43114434b68d0d79804c1fd:ffff005f, observationId=o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060\n",
+ "Processing image 5676: timestamp=2022-06-14 16:58:34.203428+00:00, observationId=o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2376795682040128, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=99, prompt_token_count=3589, total_token_count=3688) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0332f67ef43114434b68d0d79804c1fd:ffff005f', 'observationId': 'o1:7c97cd1eb6d9456a563f65b468ffa0b8:00110060', 'geographic_point': 'POINT(-111.882685955554 40.7773210279429)', 'mapsURL': 'https://maps.google.com/?q=40.777321,-111.882686', 'captureTimestamp': '2022-06-14T16:58:34.203428+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7c97cd1eb6d9456a563f65b468ffa0b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091919Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08c617971472ee9f5fbb87b782d0302f5efcf1975c09699087861152c6d1dc04660fb6ded81e33404405012336f855c822d00750c37e03bc4fa727e528087d2f81ca85dd3a6ef1ec07b52542695ebab525882760674a9addacfcaf47bc81d3d225d6fb38f1750adc16b7225273d378cb54f3dc8650eb72bcb41ed744a71969ae557e0d79d6ed4eb07abec996d3d0e8b76c8b5fcbf6cefa6fed8ffde772d1b4557d1000efe66e202ec49b7ab1d05b2767c81c4466dc8e20a8c5fcc29c95e05e0996f63ca9adda5211be09a1a48683f47ecfc4e018189d491a3ab2ab19b44a6f56388edbbe5304fad8d895ced7be4c576ce8f44ce241a9e5c7271a9fefb187f475', 'category': 'No Parking', 'description': 'The sign indicates parking restrictions, including a 2-hour parking limit between 7 AM and 6 PM except on Saturdays, Sundays, and holidays. The sign also denotes a Resident Parking Area, specifically Area 3, with permit exemptions and time restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2229.0, \"x\": 84.0}, \"hi\": {\"y\": 2384.0, \"x\": 213.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5677: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:9099845372a5baf177451a7614d77ecc:00110060\n",
+ "Processing image 5677: timestamp=2011-05-04 19:53:22.561172+00:00, observationId=o1:9099845372a5baf177451a7614d77ecc:00110060\n",
+ " Error processing image 5677: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9099845372a5baf177451a7614d77ecc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090924Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=68640274c4111bffd4e6c8a88ba22e437a3a81f1b24faaca1caf2990faba5f7d10b5f120d034874cb8baaee18920d24b477db4689d544818b98a0bd106f720d4af3a5a65e73cf2dcb0dd0dc4feda39b6f108d85257b1204887e571669dda8fbaff3dfd2408a7a6dae82b03b4622fcdd94879e68c0d8bc6b8c79010ee091a7023c8c118e02ecfcf116a6594a62bfd83b2f709c146dd99a85ad9555f647235a90ed6ac1307e176fbcb86ee05f6f52ebb3dd2ff50dbb520bc972a4346f533852bd83264e6090b03f0054d990dfc49c3d5a69a40105deacd2ebafad942f0c17391e902ec2634b8b3f349c0cacdacdebd6195eb66c9287afb2c33ec77ba552c63a3a2\n",
+ "Processing image 5678: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:35eabc7310a2fe8134274f736c27375e:00110060\n",
+ "Processing image 5678: timestamp=2016-11-16 17:31:19.632889+00:00, observationId=o1:35eabc7310a2fe8134274f736c27375e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white triangular yield sign is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09689750841685704, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=2557, total_token_count=2613) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:35eabc7310a2fe8134274f736c27375e:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:19.632889+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A35eabc7310a2fe8134274f736c27375e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1f6c5cbc011c4d7ec0d847275d2c3a56750b916350ec6a95e33faf57629bec3da4cc3b500d90abe6ba706245d8c31b7a8356f8185b1fe0233f260510f769aae5eb71cc821341dcda68fec45e335f0734ddd2fa7f2d22314bd4f9bc7149340482a5721090a22baeb2be57408f93fe7938b99a5fe28afbf0517f3533b1de71f6d079ca9882e54f50691828157131f8741544f3ca02d5ee2403802807e2bab990180fd8fc50a525767398fc1ef1d69eb4a39a84128907b10cd614276cb93bfe52980fbb26ea414476a47f1c8f2c62d736844b6186782f7a54a66c3687c26a4cf44a1ae8bcbcb783775f01aceb6608551f7e2a521047e74914b738a497b800fdc362', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 497.0, \"x\": 1023.0}, \"hi\": {\"y\": 666.0, \"x\": 1498.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5679: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:d57b4683caba93540ed370e137a56af2:00110060\n",
+ "Processing image 5679: timestamp=2016-11-16 17:31:18.019582+00:00, observationId=o1:d57b4683caba93540ed370e137a56af2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white yield sign is visible.\",\\n \"image_quality_notes\": \"image is clear. Also, a street sign is visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.33757554917108445, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:d57b4683caba93540ed370e137a56af2:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:18.019582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad57b4683caba93540ed370e137a56af2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091843Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0fb3ec8fed4cd5fdbc26215e82f9997b063b8a127e9dd9a4ede74a9c6478f297723cd923967eff2546cacffa9fc51573895097396ac39029c9f046f1505b64d479dc6ab67c5f300dfaf8c8dd94a7ea09c7df0ad7c43f2e751a194ee217d1074cb43624122106001951f6f657d3104d407aa12e2ceb194e5ee2cbab2a4cc6a5ee2f83f1a77849abe35612eda3983a04fbfe8ba9d637b793b2fe69845c6d1a515483a74f12874d0a2455cb705a1b06e14632b5ee1b5dd3c95b5468edb66d1a727196075b19dad92f28c5a512ec572f5608756677f4f6a9add4c68a9d011974898a48a1ec85834c6eb85914123271a83becdb4f80f66e2353e7244e2e8a69ec609b', 'category': 'Yield', 'description': 'A red and white yield sign is visible.', 'image_quality_notes': 'image is clear. Also, a street sign is visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 955.0, \"x\": 1561.0}, \"hi\": {\"y\": 1015.0, \"x\": 1769.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5680: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:08603e95cdf5fa306dcfd0f07e802ba9:00110060\n",
+ "Processing image 5680: timestamp=2011-05-04 19:53:21.664545+00:00, observationId=o1:08603e95cdf5fa306dcfd0f07e802ba9:00110060\n",
+ " Error processing image 5680: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A08603e95cdf5fa306dcfd0f07e802ba9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5cc8d590b05b061f00a5a003cd46515d35ed26fad68bdb96b87700868a8b7f0edab88519da9688a22617ec6e3777ac621de9b1bbf2285eecb31f7771f7c04a7de6acb91b2d180ee214b432c8f28ea761e4cc012fafeda3941934309db7e3110247581fac6284dab888def58558d2cd6ed6597eaf0aa480e2372311314f26519f701378c9a3ae2424faf58d97539719a1d90bab8775afad0c1d640c29a254900e5f720d8d32f6d306459341cfdf6a32d96c704bc4061affcf334c8e7ed70812a6353b84216be33fc54e4dc1f030c6b33eb67ea336a444eb03ce31f70916057bb910a465bdf2675e41a3024a7078c0e33cb5bee05aa1c471dca0e0acc7e5ce31eb\n",
+ "Processing image 5681: trackId=t1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f, observationId=o1:88362a04d50166fe1ca6a916aaa9cc84:00110060\n",
+ "Processing image 5681: timestamp=2016-11-16 17:31:18.747946+00:00, observationId=o1:88362a04d50166fe1ca6a916aaa9cc84:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white triangular yield sign is visible, along with two street name signs above it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1456117923443134, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03335b0876f9ef1b34b1e5fc7fef09b4:ffff005f', 'observationId': 'o1:88362a04d50166fe1ca6a916aaa9cc84:00110060', 'geographic_point': 'POINT(-81.9329866349629 28.0459555619407)', 'mapsURL': 'https://maps.google.com/?q=28.045956,-81.932987', 'captureTimestamp': '2016-11-16T17:31:18.747946+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A88362a04d50166fe1ca6a916aaa9cc84%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=134f1a41135ef8c56cf1b1f95b4d8f4332a99f8d29b42417465d0a5b393e6053259362927dcaf4459c2aab1d5b277c027b03835cea049155c14d1bc208fa4db3c2a41f36700b6923b7176d1281d05e31f3332420530be2180e63a34ef4abd28db7f235f1d3a867caf14aa1488d2749217a49151ce8879c1a4122049d1270dd8af9d771372c5eb07e769dcc145f83ecaa3ac0cf0ea4b29ef8f34fc34f94a9425916a6a627572866535ddd0ea9e0d86af3907673709d58ef5873ac0e318172e24fccb85ed32806ed6119c61771bcfdbba24a408b213e9411804195df5d1d745558c59046851b69f44e0c46a0dc13ad4cfb7ecd860a501c85b91994bb228dc9082c', 'category': 'Yield', 'description': 'A red and white triangular yield sign is visible, along with two street name signs above it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 548.0, \"x\": 90.0}, \"hi\": {\"y\": 658.0, \"x\": 395.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5682: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:6f67f501eb31f103aecfc16b8fcadf82:00110060\n",
+ "Processing image 5682: timestamp=2021-02-05 19:58:57.909478+00:00, observationId=o1:6f67f501eb31f103aecfc16b8fcadf82:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs. The top sign is a yellow diamond that reads \\\\\"PAVEMENT FLOODS.\\\\\" The bottom sign has a red circle with the letter R in it, and underneath reads \\\\\"HERE TO CORNER\\\\\" with an arrow pointing left.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2176712155342102, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=96, prompt_token_count=3073, total_token_count=3169) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:6f67f501eb31f103aecfc16b8fcadf82:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:57.909478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f67f501eb31f103aecfc16b8fcadf82%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091321Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b8af7a5b30a98a6e1f75f198c875e46d19a8d6c3feb06c24b5c24e91501e702749cb1ae55410dc8ef70cf276f37e20f8a1751460695ab9fa8e6abdbbac744b3e8a28a499609c549e3dad91c35e5d952d7fd4017b1f9595d9439a2f26488f042c414dd9054d91b159a4e4b9fb693a763bca917016586631cb5c74c33096aad732d57df2f6d1806c29dbe93ec848f33befd105a33d826838dcf1fae2f8a942aad5e1af5da9c1ad8ce37aea427a228e4639f34a143cc2ae0dfda88bb21444293944786209a424082d486ea5176211c997977cb8e00ced47c94b748c8c7f437e34b15a4ddc9b1f3f48b58a641775a975692d16222c254cbaa22db1f6bbafdda3a9b', 'category': 'Other', 'description': 'The image shows two signs. The top sign is a yellow diamond that reads \"PAVEMENT FLOODS.\" The bottom sign has a red circle with the letter R in it, and underneath reads \"HERE TO CORNER\" with an arrow pointing left.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3317.0, \"x\": 2783.0}, \"hi\": {\"y\": 3478.0, \"x\": 2869.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5683: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:d582317bd61ef6c4d6aef81e881336c4:00110060\n",
+ "Processing image 5683: timestamp=2024-02-28 18:38:33.936880+00:00, observationId=o1:d582317bd61ef6c4d6aef81e881336c4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows two signs. The top one is yellow and diamond-shaped and reads \\'PAVEMENT FLOODS.\\' The bottom one is white and rectangular, featuring a circled \\'R\\' symbol and the text \\'HERE TO CORNER\\' with an arrow pointing to the left. The signs appear somewhat faded.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.35416890081958236, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:d582317bd61ef6c4d6aef81e881336c4:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2024-02-28T18:38:33.936880+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad582317bd61ef6c4d6aef81e881336c4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d3289e5a3336028e48bbdfe12cfaf5f0d363c179ee9609f2d68919fed61957e1ab9f02ff74ecb935b9934694383e24db12c84a2a16605ac0a6168f4f936743a426e47c409fe0355ff9d8e041aa994c010858a6822eef05493bd0d111bcbcbb026ee67329040b2d6ce5a8defc05035d0b54e7d2b52d9a882d553807887d36f0d5ab590e333e9b73b3c57957865eb97f8d28ab3e0d85bb1a7f64570c5193bc8a22f369434c0987f5ee611c266c745f0ef5f3a5275ffe42148e73d5f0078a0ad7aa25a874d30db56bf58eac16b4425bff7983777ada8c3dcd2aef7d632052617b66189b908630deaa3fe7623fccb7804634b0bc7c5147f45497f644c92f7ce90db', 'category': 'Other', 'description': \"The image shows two signs. The top one is yellow and diamond-shaped and reads 'PAVEMENT FLOODS.' The bottom one is white and rectangular, featuring a circled 'R' symbol and the text 'HERE TO CORNER' with an arrow pointing to the left. The signs appear somewhat faded.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3311.0, \"x\": 1779.0}, \"hi\": {\"y\": 3421.0, \"x\": 1847.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5684: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:b3fcb1ba40c8b34b01756501b092aa77:00110060\n",
+ "Processing image 5684: timestamp=2021-02-05 19:58:58.309522+00:00, observationId=o1:b3fcb1ba40c8b34b01756501b092aa77:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The top sign is a yellow diamond warning sign that reads \\\\\"PAVEMENT FLOODS\\\\\". The bottom sign shows the symbol for \\\\\"No Parking\\\\\" with an arrow pointing to the left. It says \\\\\"HERE TO CORNER\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.25908062022219425, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=2557, total_token_count=2650) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:b3fcb1ba40c8b34b01756501b092aa77:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:58.309522+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab3fcb1ba40c8b34b01756501b092aa77%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091917Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=649ff2a6252d3897dfc36e8f96637bd1f3f4bdf84c7d367d5c15c6a8b18c32ee6c47ef83a2db1b747f2a5e61bbc66cb83bbfdd719178a4b0ef207c4d982879601f31b9f211e1c7d83bea811ba23046009dab0f8eadd4aa54d03a3ea5f4a20a56bceb40442df066194d54a13ee603bff1248447526708091d73f28ad42b7430e5359aa28bbb34518871bb39a8fdb70c3a2ab20c4bbbbaceca41661a75255b9e9b94d179c0f4da7b03cb8137949f729f81035a6b6748f03ec2b69a33c4f1781cbf5cac45309dc3a9dc830d85165824ae79884abda03e9eee6fc34574181985db2287c3eb63544abf7b8e17c919bf0acdcda9465c31471d0c08e8ef297912deb44c', 'category': 'Other', 'description': 'The top sign is a yellow diamond warning sign that reads \"PAVEMENT FLOODS\". The bottom sign shows the symbol for \"No Parking\" with an arrow pointing to the left. It says \"HERE TO CORNER\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3316.0, \"x\": 1903.0}, \"hi\": {\"y\": 3428.0, \"x\": 1978.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5685: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060\n",
+ "Processing image 5685: timestamp=2024-02-28 18:38:33.360827+00:00, observationId=o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign is a yellow diamond that reads, \\'PAVEMENT FLOODS.\\' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating \\'No Parking.\\' Text below this symbol reads \\'HERE TO CORNER\\' with an arrow pointing left.\",\\n \"image_quality_notes\": \"The image quality is adequate. All aspects of the sign are clearly discernible\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5756116035657052, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=117, prompt_token_count=2557, total_token_count=2674) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible'}\n",
+ "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:cc608e8ab47e2c849e4ecd60b1d31a5e:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2024-02-28T18:38:33.360827+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acc608e8ab47e2c849e4ecd60b1d31a5e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=31a7b3d6918f347a99ae3518c89f180b566f0056708336fa0d78fbe6d43ee10ad9632329205686b490522b7b406242af542ae337a68bae4e9f056fd496c49fdc754737a4fe8e9a37b918a6d841d89fea14849521b65b541d6c98298b2b864daf0bcb412684e151a544551145fd4f76c5cb0f909b4a433ab8234cf84b4704d763d0d1c63824bd8cadc33c3caa1a19d42d9ea06327281d28434ca2bc3e34a0e2b429b15824b66a766fb01f1c29825904c76b761123cc841580dcccdbc94ee63fd48c9bd1f85a2dea1a8864848bfcb89d91a19f2873853253d5a05879f24582f17ee95b4901a961e61a7a94c41bc43c6950ae342053dbb6f6f3040d9d57a7ca35ec', 'category': 'Other', 'description': \"The road sign is a yellow diamond that reads, 'PAVEMENT FLOODS.' Below this sign, there is another sign that has a red circle with a backslash through the letter P, indicating 'No Parking.' Text below this symbol reads 'HERE TO CORNER' with an arrow pointing left.\", 'image_quality_notes': 'The image quality is adequate. All aspects of the sign are clearly discernible', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3317.0, \"x\": 2669.0}, \"hi\": {\"y\": 3485.0, \"x\": 2757.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5686: trackId=t1:033403e65cd848e07376c0ab2593ecd4:ffff005f, observationId=o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060\n",
+ "Processing image 5686: timestamp=2021-02-05 19:58:57.505483+00:00, observationId=o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A vertical rectangular sign, which seems to be \\'No Parking\\', is partially visible. The sign has red border and some possible text in the center.\",\\n \"image_quality_notes\": \"The image quality is not good, partially blurred and the sign is partially obscured by vegetation.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.707830324277773, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=1009, total_token_count=1100) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033403e65cd848e07376c0ab2593ecd4:ffff005f', 'observationId': 'o1:2a499aeaf88f6df69f80e0a0c9af807c:00110060', 'geographic_point': 'POINT(-81.9456178128707 28.0151422766407)', 'mapsURL': 'https://maps.google.com/?q=28.015142,-81.945618', 'captureTimestamp': '2021-02-05T19:58:57.505483+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2a499aeaf88f6df69f80e0a0c9af807c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092622Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0c24e342b11f505a951b6d9ba7ffd4968f54c1b106b5df4b19b3c9bc533f9d7cc41526dba1d237165389776086c3a27ca53ecf1332d7734315eac267c903de0147b4027e118b39fd8d13ab6e5834cdfe84fa572d5314d5567e85dc909c24768ecef2882a4e62b93c6ffd81fcf28ee4711e40b037369d21b59f6058b9524c2ff05fce9108f6023e0aaac39fd204062755a2111b1b967ab54ada8d6fbd00e3db4249b1dfbb851ab76834a44e08730854f398423922c6598a04258e48f123eff06ae0ba90c18493d04a11cfa31d28565ce4782e79445309fd38003cfe4e7616202251a66dad3e1da0aab8a568f067a76de3d46e3301a376e027c4533c6e3ebd11ea', 'category': 'No Parking', 'description': \"A vertical rectangular sign, which seems to be 'No Parking', is partially visible. The sign has red border and some possible text in the center.\", 'image_quality_notes': 'The image quality is not good, partially blurred and the sign is partially obscured by vegetation.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2439.0, \"x\": 1520.0}, \"hi\": {\"y\": 2643.0, \"x\": 1555.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5687: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:9e1cfb3dae299839f4584144d139a359:00110060\n",
+ "Processing image 5687: timestamp=2024-01-09 20:01:30.559458+00:00, observationId=o1:9e1cfb3dae299839f4584144d139a359:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign assembly includes multiple signs. There are two street name signs indicating \\\\\"Meadowood Pointe Rd\\\\\" and \\\\\"South Dossey Rd\\\\\". There is also a yellow sign with black text and an arrow, saying \\\\\"DEAD END\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2803076292339124, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2557, total_token_count=2652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:9e1cfb3dae299839f4584144d139a359:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2024-01-09T20:01:30.559458+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9e1cfb3dae299839f4584144d139a359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=79f871b26fa4c90f4d5b7758e909a76a8adff9ac304581eedb27dec81fbc23d041b135781ef08d0981342fa131b080860e75f20147df6c244d105470359d8ddf8b5634065465eaf568dbf296b839269d2be81a3fb062a78364ab1c39fddeb2c266cf9975a32905f96c52b139a1bf314f90e1374123e71eaa2dcd8eef1a41cda69a458605ff61918f711d0ed8a9dd91830767f0f23698e25eb72cc75648c5e16ddaa3f3a4ec6495ac499ffa751dfeb7948ba2115f3cb5a2d89d5fe71072986e18634b3ace88031d9f51d4a97e891bea85dbf4603bc19c78abc1df59639a09bb0a8c23a5f689b1cf4bece7a17951a418df7e0cb9f3384062fce609d346ca501ea8', 'category': 'Other', 'description': 'The sign assembly includes multiple signs. There are two street name signs indicating \"Meadowood Pointe Rd\" and \"South Dossey Rd\". There is also a yellow sign with black text and an arrow, saying \"DEAD END\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3459.0, \"x\": 990.0}, \"hi\": {\"y\": 3629.0, \"x\": 1388.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5688: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:a522b228a3ededef482e1304be763d97:00110060\n",
+ "Processing image 5688: timestamp=2019-11-06 13:29:22.509870+00:00, observationId=o1:a522b228a3ededef482e1304be763d97:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2675047436275998, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=2557, total_token_count=2631) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:a522b228a3ededef482e1304be763d97:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:29:22.509870+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa522b228a3ededef482e1304be763d97%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092221Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=75a1bc7065e495f7b907b350eebc9d9340d48266812a1eecc58586c1369c218c34d085e8a18886519898f075707005bc7ade4b29c3a07a485e6b1dbb889f89b5ae8c5d381b0d7d11505985d0e130a451c44a412ed72cf10b571374e8e67f735218da46d01b8559754db051634af5b18cb454d3ffd1ce6e18d54a2e06da0174a0a2be2b63466f84922589666d103c7b312bafd7b4e1df1e024c4dcd632228c9278d7f7e407a05fc3ce94d5c5c61cc44d0e4c8834fdd14693d5914286c356508490b01105584fb1e3e4882a6195868b23a09d7f6be206361018cbd1de0aaaaa27bb55b30ea0e47a2fc387015acf2b59ea3c0cf6594d92dc954e54dafd2be19524c', 'category': 'Other', 'description': 'The road signs in the image include street names Meadowwood Pointe Rd, South Dossey Rd and a Dead End sign with a left arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2451.0, \"x\": 2628.0}, \"hi\": {\"y\": 2589.0, \"x\": 2931.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5689: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:2b49add906b2cf6b54db637b14a1f108:00110060\n",
+ "Processing image 5689: timestamp=2019-11-06 13:27:24.564975+00:00, observationId=o1:2b49add906b2cf6b54db637b14a1f108:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a road sign indicating \\'Meadowood Pointe Rd\\', \\'South Dossey Rd\\', and a \\'Dead End\\' street. The \\'Dead End\\' sign has an arrow pointing to the left.\",\\n \"image_quality_notes\": \"Image is not very sharp, but signs are still visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36672761268222454, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=2557, total_token_count=2654) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:2b49add906b2cf6b54db637b14a1f108:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:27:24.564975+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b49add906b2cf6b54db637b14a1f108%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=937eeb5277f112dc8af943c2dbbc5e6554466fa1785018edfaed0774481114c418cbd90e721068800bcc23cd18d9f29ba8cd7461d34989ec0352cb1b5533c6ae9e7d6292340642090d549e83565bb22571b17ffc305a28dbb2bc73d2e9785ae91a944d1b80350ec8398b1fea55b4161a65c60a0645774683578404ac1bbb4702ae060eb06bd92f4756020e74e1e2ada40edd8b2fd442d2b455d641aa04670791f32b219f6d23a4a906cbf7979b859037853b649190e06f65f8572ee354a567fef4ef9f0801cf4f30b0819f34e1bd5519f0888da04d1ec614491fdc364711b240d2047ebdb69106bd09dcbe210f1909359e66c4bbb154e2c25c846d01687296a9', 'category': 'Street name', 'description': \"The image shows a road sign indicating 'Meadowood Pointe Rd', 'South Dossey Rd', and a 'Dead End' street. The 'Dead End' sign has an arrow pointing to the left.\", 'image_quality_notes': 'Image is not very sharp, but signs are still visible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2500.0, \"x\": 1230.0}, \"hi\": {\"y\": 2702.0, \"x\": 1638.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5690: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:4be24cc22e16adda236f0dbdb316c44e:00110060\n",
+ "Processing image 5690: timestamp=2024-01-09 20:01:29.567466+00:00, observationId=o1:4be24cc22e16adda236f0dbdb316c44e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a collection of signs, including street name signs for \\\\\"Meadowood Pointe Rd\\\\\" and \\\\\"South Dossey Rd\\\\\", and a yellow \\\\\"Dead End\\\\\" sign with a left-pointing arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2326531626961448, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=2041, total_token_count=2129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:4be24cc22e16adda236f0dbdb316c44e:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2024-01-09T20:01:29.567466+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4be24cc22e16adda236f0dbdb316c44e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091315Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55f00e8f9d385d9489e677199c4268526a3fa20860b96a525018748ba9557fbf7d2bc9ff01fadcb64baa1db1855a329f95adc6bc5f2513d5417f54b542188b66219c40ce8a32c94b8ef259647ff6680b41e9900917dda2e7b2053b1df40b9a254cdf496e258c75e0b1ac52ee4830669a35f02c244072d6ffb543d384391884d65d0a3c8d6320a0be1907bfade75c8358e8bc3dbaae3837cf600157803d39be84ed06a7405515aceeb39995abbb0a398bc0676072e2d5fcc2ca2201a5ff848269a1bb7aec5535d3ff29d7f9421b4f7579946aa62e20f07ba3d58c4a843359903d52ef4c7fedd46dd4ba47b76a8029375e5688c9a64e990a7bd7a61a08402b97c2', 'category': 'Other', 'description': 'The image shows a collection of signs, including street name signs for \"Meadowood Pointe Rd\" and \"South Dossey Rd\", and a yellow \"Dead End\" sign with a left-pointing arrow.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2693.0, \"x\": 1817.0}, \"hi\": {\"y\": 2981.0, \"x\": 2455.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5691: trackId=t1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f, observationId=o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060\n",
+ "Processing image 5691: timestamp=2019-11-06 13:27:25.940954+00:00, observationId=o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple road signs. There are street name signs indicating \\'Meadowood Pointe Rd\\' and \\'South Dossey Rd\\'. There is also a yellow \\'Dead End\\' sign with an arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17560322730095831, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=2557, total_token_count=2648) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0334f5d1fe9f420ac3903941fcea02d2:ffff005f', 'observationId': 'o1:e8c4d884bcb3e8718a431d85cc91faaf:00110060', 'geographic_point': 'POINT(-81.9772726609974 27.9815737608478)', 'mapsURL': 'https://maps.google.com/?q=27.981574,-81.977273', 'captureTimestamp': '2019-11-06T13:27:25.940954+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae8c4d884bcb3e8718a431d85cc91faaf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091229Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15b3262d389f51c32c63a1c0f57225ab979c9a35f821ff9c1d4e86caab4e602515e3204daa953cc0c6624f1a9149ae9a16707bc29316066e00f09509b1a75973f44141c8d36fd8c87452aa830867a3da0a30e0e58cc2c20f29b3ea33052c366d28c36063a4a0102375f2d4dd5eb2a7387c1649d7b928a47403f3c1d80d334fb8b63dc83d0ccdf380f2522e83fdf44c04f19353082a7fea0f253d0fc90cf3b600c4b69c1fc6a92ae5a0d5f666c2a65157fef1dcf9c2d21b59ff2600527e4b72af28b49e62597d140470b3fafd9293cffbac178e57e71c399b949fc397d5d7e811a55a657d3581acce0b06215139d146f12ac40d8e1761bbfdf4cef24baeba8d39', 'category': 'Other', 'description': \"The image shows multiple road signs. There are street name signs indicating 'Meadowood Pointe Rd' and 'South Dossey Rd'. There is also a yellow 'Dead End' sign with an arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2523.0, \"x\": 2954.0}, \"hi\": {\"y\": 2717.0, \"x\": 3455.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5692: trackId=t1:03355f514cd2008f6e5239c34dd8d989:ffff005f, observationId=o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060\n",
+ "Processing image 5692: timestamp=2022-05-31 15:51:49.890983+00:00, observationId=o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names Dupont Ave and Carousel St\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1316333140357066, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03355f514cd2008f6e5239c34dd8d989:ffff005f', 'observationId': 'o1:5255f78fdc342bcd2fcab8f5de9d430f:00110060', 'geographic_point': 'POINT(-111.936049078317 40.7978199587734)', 'mapsURL': 'https://maps.google.com/?q=40.797820,-111.936049', 'captureTimestamp': '2022-05-31T15:51:49.890983+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5255f78fdc342bcd2fcab8f5de9d430f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=35f9233009907b82762a90a2bef92650612014944b56603ba11476af7786584b2b625618b14ac173243447c971acf446aca741c4f29f82f601ea643405e78083663b2a1f78d46aa1c21e7bcd78aaeef0902e53d41829e949d19f31c4fd9fe66efd6e5d43c4743c497259b7b175f78a64448518e427f3b379a540e1582dbff2a056dc98c2e9424ffc07092b9b7ec8a3e196944ab09ebadd083d0817187c06f05afd6690e38a0a9f92d4e21452c76aff207f348bc9c0f0083eacb07c0ff549c2db04189e5c3be18173c1a2871d8ec1f6fad7b192f94b8233be77decd40efc189cea6e1b359fee82e7a8e09cb37759c18b2efb1d749a6106cc82ef1d23b15459d7b', 'category': 'Street name', 'description': 'The sign displays the street names Dupont Ave and Carousel St', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 2242.0}, \"hi\": {\"y\": 3221.0, \"x\": 2403.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5693: trackId=t1:03355f514cd2008f6e5239c34dd8d989:ffff005f, observationId=o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060\n",
+ "Processing image 5693: timestamp=2022-05-31 15:51:49.890983+00:00, observationId=o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names \\'Dupont Ave\\' and \\'Carousel St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1095176637172699, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=2557, total_token_count=2621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03355f514cd2008f6e5239c34dd8d989:ffff005f', 'observationId': 'o1:3e0456a75bb616f3ecc5f6e35bfcf842:00110060', 'geographic_point': 'POINT(-111.936049078317 40.7978199587734)', 'mapsURL': 'https://maps.google.com/?q=40.797820,-111.936049', 'captureTimestamp': '2022-05-31T15:51:49.890983+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e0456a75bb616f3ecc5f6e35bfcf842%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b5cb71397c5c17f974b6a88382cb5a0511acf01a0e986c37e362205c78b42d4edd94c508d98baacb20ea518b1136e02e22d11b97db7cf8ed4b155766f2192db6b8405669219cce02aefee527bc26116b5591a8e8c0d0dcd473877b7ea05a9f95ce83ae45804f16e0ce74d4df1ae00c3b500a60b27a083374f0f520b11b21c6c8832197a36e11d4b842e04d49972c8ff3b8ab75486ffbbbe01343a576050b18461654022d8f4ac7fa25aedd245d0eb28288e9120a9c6faf457d931fd3670de0d04217a8cf52aa35aaecea7f2b80aa92798352ea949c0a4ae41c06a7fec38ad0b04b9f8b709177d18a0e2d531da1b98a0eb9b6d6d0a554b78c31870608f2ebd548', 'category': 'Street name', 'description': \"The sign displays the street names 'Dupont Ave' and 'Carousel St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3213.0, \"x\": 2255.0}, \"hi\": {\"y\": 3264.0, \"x\": 2394.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5694: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:03401d599461f0a7314c5b6fb719189c:00110060\n",
+ "Processing image 5694: timestamp=2021-05-05 18:14:21.662580+00:00, observationId=o1:03401d599461f0a7314c5b6fb719189c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.043574616594134634, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=53, prompt_token_count=1525, total_token_count=1578) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:03401d599461f0a7314c5b6fb719189c:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:21.662580+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A03401d599461f0a7314c5b6fb719189c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=01e299132105e92c775947029fb3187966a90a5eedc1b4f93447c1aa5b721157028d916a8a7497d44cd2d4d3b3f7a8923977626c3b6ee51a31bf8196972eef38f7a4c465620aef887ea933b66a738267a10b1627a60a92896efae5b543e6acd735a26e4a8279bcdbad369f266b36ff2111cb3aa89a89f05cb9dfcf7093ff11ce25281681c412550f858fdb811af89e31cbc9dbbd852e8923be9da5e12c6bf3a53fbcd85f34cea36f6cc54b0aa53f8d479c2a401c590cdd2fd7c521f6c072e78e578e0e94a6a2a0a897c2138b93ed5b53385227cb195522e4a5464f2a401ea1c9fa545a4396d6b359e12c48546822552b7a006f6da1df6cfa73f087297d8cefe1', 'category': 'Other', 'description': 'An orange traffic cone is visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3869.0, \"x\": 1336.0}, \"hi\": {\"y\": 4100.0, \"x\": 1432.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5695: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:5c2c1c9b325457c4eb960066dc8d834b:00110060\n",
+ "Processing image 5695: timestamp=2021-05-05 18:14:20.958524+00:00, observationId=o1:5c2c1c9b325457c4eb960066dc8d834b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.28978831951434797, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=493, total_token_count=571) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:5c2c1c9b325457c4eb960066dc8d834b:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.958524+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5c2c1c9b325457c4eb960066dc8d834b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1b18ddf8dce0f4006276583163b00ac8e49cb74b29fc44bcb0d050050fb4e963f5ed96596bb9fcc3cc1f30d9fc9e535b86d55b1c708dd260774745201fb13ad622eab98c6eb3d82726f68a16d010f74a8c0bffc720d1970594636be046db96dd0c8a529a2fec8222712e6388d5a35987018573acdf42027a406901fb31e2b0231fd53556d1b1f131f294c3ffb9bc9ce3df01c221a725c5af80f51cf2b28ad238b243a5329cc2e919e7578a6d775666286294e7233673b00c47f5ecc4a53c94e8718432fbe2d7c4461ec692257efafbe3e573228db742fd07d1a563618267fd25031a3dd677713838be7e522e34a14ec0b8d593726d0f0fcc8c0cef7553df404f', 'category': 'Other', 'description': 'The image shows orange traffic cones which are used to indicate construction, hazards or guide traffic. These are not typically classified as road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3567.0, \"x\": 2430.0}, \"hi\": {\"y\": 3682.0, \"x\": 2477.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5696: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:7209a93adb19c9cbaf5f168feaef3daf:00110060\n",
+ "Processing image 5696: timestamp=2021-05-05 18:14:20.254588+00:00, observationId=o1:7209a93adb19c9cbaf5f168feaef3daf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21206034251621791, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=493, total_token_count=563) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:7209a93adb19c9cbaf5f168feaef3daf:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.254588+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7209a93adb19c9cbaf5f168feaef3daf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=55590627b3ca4bad24b07a4b5880929938923137d02151c6e3a5fb1ace41acdd4f5bf4223d736a943d87c8a6fa32a72526d91b1de14ec2b443633ed47dd41c24a7845885fe3727f527c152377429d9a851bee62abe880adc6bd3c703f7a2e0cd0ebdd38a2cb8b74d94465ef11561590f892bfd07235194e36782290f290d177bce4f758c6461b3494161959755acd417da6b688a76a8e9b310160630a4b6b693ea2998061f21ff0c502eb139839da5655c2f8a9ff086979deaebb81d91296ee370df5f36861aaa2fce8abbd07731073077d132d94b78bbacda24f752d115659534d153bbd2e53b45d766164d49efc214bf66e6ddf662979f37f7e0b0f020d693', 'category': 'Other', 'description': 'The image shows four orange traffic cones on a road. These are used to divert traffic during road work or other hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3427.0, \"x\": 2785.0}, \"hi\": {\"y\": 3501.0, \"x\": 2816.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5697: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:caa4f825d613f68902c9eecc43fb5a4c:00110060\n",
+ "Processing image 5697: timestamp=2021-05-05 18:14:21.310595+00:00, observationId=o1:caa4f825d613f68902c9eecc43fb5a4c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a traffic cone, which is used for temporary traffic control.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11011119748725266, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:caa4f825d613f68902c9eecc43fb5a4c:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:21.310595+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acaa4f825d613f68902c9eecc43fb5a4c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092621Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=15af7778530b3a9a6180bdd07c7712d8c86c159c903c4e32e256e6fb493b122edc68144dc9c61dbf103012c9341b9666afa11a859464cf8341060ad4e69eee137679b7da9042ab74f38e69214cf48a79d363616008db66572177dfc3902c2edf95af3da9cc9c954c679c7684ccf0031ad9ceeb5f1ce51bad235ad83955afb122de5ec88f1227f1eefe406cf6d4eb418b1cb6bfe246ebe2ea34ceed971065c5a7bc31f0ab54206a33d8e7f640f1a25984aa4d85beaeb02305d2e8f24b0d055788a8d87b00b2e32e638fb0269a06178ff2320ecb383c2fb82b3aefe14a7e46049162844d7f044a1026d5a14ac259bdca15679fefec7be490589c8f10bfc983c29e', 'category': 'Other', 'description': 'The image shows a traffic cone, which is used for temporary traffic control.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3675.0, \"x\": 2067.0}, \"hi\": {\"y\": 3830.0, \"x\": 2132.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5698: trackId=t1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f, observationId=o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060\n",
+ "Processing image 5698: timestamp=2021-05-05 18:14:20.606572+00:00, observationId=o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2598769496863996, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0336ea40ff03b2984d6fbdefa8e89ac0:ffff005f', 'observationId': 'o1:1c3b37f06e6348b26a30b2cc2dddee52:00110060', 'geographic_point': 'POINT(-111.923959401727 40.7649921185198)', 'mapsURL': 'https://maps.google.com/?q=40.764992,-111.923959', 'captureTimestamp': '2021-05-05T18:14:20.606572+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1c3b37f06e6348b26a30b2cc2dddee52%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1497f3bb3a6e46e1a863fe60352dbbabfc2159470b4ec196174bcc60448629eea0fde8c728ee1e0f57c2ac2befe46154a2771da0bdfaf3e57d2a990ac5315a8abb2101c47aed4b2e705633865ba6a7eab64c28a3a2fed9fab34c59d260e0a1879832a5efdb3d01281ce30430dde0c259c44b61f6a340ab8e549838a7add6fba5ba6e269db8ac2a07aacc547b922b8346b8bac56f0c1bc25b505444d6ecd42f2dfe370528af1002dee67875708b7d9450e58f498106d9a3eef8d9bf2d2ff176647b92f4b9c54b2daf9abeeb2c4172209a2faec0cb07bde53b070579e06b85200d3b02e957f4c7c644167bb602e1f7062f8fc6d9e40637c2e6e81eb09a1753b8d', 'category': 'Other', 'description': 'The image shows several orange traffic cones. These are used to delineate traffic flow, indicate construction zones, or warn of hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3476.0, \"x\": 2644.0}, \"hi\": {\"y\": 3570.0, \"x\": 2683.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5699: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060\n",
+ "Processing image 5699: timestamp=2022-07-01 17:12:05.662452+00:00, observationId=o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'LEFT TURN YIELD ON FLASHING\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08770329265271203, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=493, total_token_count=552) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:9993ba48001ab4ca55f7aeb7e5049f54:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T17:12:05.662452+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9993ba48001ab4ca55f7aeb7e5049f54%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091720Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ae4057cfd55a264300fefb1b330384f6b999e236e148d6aee244d734bc24549549473b9c132ebead1c5553ae4ebaff9eff3a86de8c303fc2cfaa4140fa8cc11527c706afb561ddb9fba87f8b4ea96cea5c13d273fcb781dec549c2a76979f14f4af00a784e2a0b9e850d933058ee986d69e9798a6a89d64071f1c08873987e60aee8604a9c7e6b7e4c466c3f27d70f9c7b5abfacda7391ebdd28be1ae35d572beda0abe53e9e1322fb2c3e7b125b837c868200f3d6f381e3207e4dabe3c645b1ec5ea3b83132ae4a3a52487ac0831bb1f32376acb1fee6192641c9819308127a4a60c58cb6c09e9d4572d30f025439a9f16a8a45da6a4540a62837691a8572b', 'category': 'Yield', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2976.0, \"x\": 711.0}, \"hi\": {\"y\": 3022.0, \"x\": 745.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5700: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:eb3a489272628d01a6a6807bc85ba529:00110060\n",
+ "Processing image 5700: timestamp=2022-07-01 16:55:44.158106+00:00, observationId=o1:eb3a489272628d01a6a6807bc85ba529:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign is attached above the traffic lights. The sign contains the text \\'LEFT TURN YIELD ON FLASHING\\'.\",\\n \"image_quality_notes\": \"The image quality is fair, but the text on the sign is readable.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.23376476617506992, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=81, prompt_token_count=493, total_token_count=574) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)'}\n",
+ " Error classifying image 5700: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 275)\n",
+ "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:eb3a489272628d01a6a6807bc85ba529:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T16:55:44.158106+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeb3a489272628d01a6a6807bc85ba529%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=547428eebc76459a046fed01cecb09592b46190ba3d9da7b4c8cd43a9b16e172918c6da13d1547348986fd51b7118c62f86cb0728acaf21aee126b72fbc58d45412c97b4d87ead961f1258a1aa808a9f3e4f1b59ff3d6e34d73274488459bd0529869421169948a0e96f6b4026360c7d74bc315af4bf50d91800f7c8eac06f013b017d1dad0843d971c19665358894483addf9b8b3f942cbcda52f1dd3c75080d4cb1e54e7cdd22aa2ccb2123fe5852b69ffd4bb88d744a53c22b2c85ed8483debd56fdd5d827bff9e54f2880cc4997afab1310867f4281f71209c542eb1743a3f98640895c99d14cbc766a9b86331ef831d0bc65c8fe93f853c72b984b2027d', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 2793.0, \"x\": 1520.0}, \"hi\": {\"y\": 2887.0, \"x\": 1548.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5701: trackId=t1:03378485f2b0e399a48614958f2f6aa6:ffff005f, observationId=o1:dcd07bf7557c5005fb52e17906f2db97:00110060\n",
+ "Processing image 5701: timestamp=2022-07-01 17:12:04.842455+00:00, observationId=o1:dcd07bf7557c5005fb52e17906f2db97:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Yield\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'LEFT TURN YIELD ON FLASHING\\' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26699209213256836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=1525, total_token_count=1613) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Yield', 'sign_quality': 'Good', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03378485f2b0e399a48614958f2f6aa6:ffff005f', 'observationId': 'o1:dcd07bf7557c5005fb52e17906f2db97:00110060', 'geographic_point': 'POINT(-111.88518659445 40.7519444656296)', 'mapsURL': 'https://maps.google.com/?q=40.751944,-111.885187', 'captureTimestamp': '2022-07-01T17:12:04.842455+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adcd07bf7557c5005fb52e17906f2db97%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=71551003e823738c9d1dac5155f00400aa043c83a969934c66cf4857b6f5e4686997f4f8ba96b136aa9ca24c6aacded006555c7d41a0bac5416497b0b118f02d0b9c5dab58fbef699d4bd85526754dcad635734fc065063eaf61df6df26edc3c008dec190960a4fd78d4c7a86fe258f1454cfa4869c90892679b2a5de245ecda78cb5e632992ac9ad79bc199bd2e9f4f501eeff085ae5979609a0babae45a193630d496772ef8056bc60fd786ed751bd225e3b602a9022261d4f658c8d83bb1c878d0d68b41bc73d61601bd4c8d3c4c98f5f7b41d737c2192d2b992b00c09f06f4e4ed3cea377665d37b5a2843897cb67886e9e11cc2e05d7fb05dd78a4bce42', 'category': 'Yield', 'description': \"The sign says 'LEFT TURN YIELD ON FLASHING' along with a flashing red light icon at the bottom. This indicates that vehicles making a left turn must yield to oncoming traffic when the light is flashing.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2937.0, \"x\": 714.0}, \"hi\": {\"y\": 2987.0, \"x\": 753.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5702: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:81561eaeab0040b2f0d2728e715ee3d1:00110060\n",
+ "Processing image 5702: timestamp=2024-02-06 22:06:32.141334+00:00, observationId=o1:81561eaeab0040b2f0d2728e715ee3d1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible. One sign says \\'S. Lincoln AVE 2800 2900\\' and the other says \\'Edgewood DR 800 700\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1819179991017217, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=92, prompt_token_count=2557, total_token_count=2649) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:81561eaeab0040b2f0d2728e715ee3d1:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:32.141334+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81561eaeab0040b2f0d2728e715ee3d1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=94f185259901f01a929aaf8861f4616325b7b0cad023b4f566e9fa18726963ebd583dfe52d611f077703ba78b32e1936fed55e733076e1845906c491668c89570b580aa5c8bad70182950c818144447bab345e394cef387aff2a36a3b87a4db0a1d5def4c79b489d5d2449c0cd962d519b563070d24be3575380e789ca32e96d5d925a91623cf9a44258b432e1a6ba936d739e8b47d5415cf9f8ecc5adcee63dbdc3a5fcacc4829e3374a3dc2e36fb05ce5c88bf41061f938c6721e7e52e7fc6bd982d40b381870de03e2566d6633af6ed73cb328c3383c08321c6378d098fb95ef302bdd41c5a286b346cba52bc19a122efffeabbb769cb911e022feff85938', 'category': 'Street name', 'description': \"A green street name sign is visible. One sign says 'S. Lincoln AVE 2800 2900' and the other says 'Edgewood DR 800 700'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2055.0, \"x\": 1898.0}, \"hi\": {\"y\": 2339.0, \"x\": 2445.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5703: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:fe841c734c1f426d302aa1dd7d0ad797:00110060\n",
+ "Processing image 5703: timestamp=2024-02-06 22:06:32.705210+00:00, observationId=o1:fe841c734c1f426d302aa1dd7d0ad797:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two street name signs in the image. One says \\'Edgewood 800 DR 700\\' and the other says \\'S. Lincoln 2800 AVE 2900\\'. They are both green and clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1951912498474121, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=100, prompt_token_count=3589, total_token_count=3689) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:fe841c734c1f426d302aa1dd7d0ad797:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:32.705210+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afe841c734c1f426d302aa1dd7d0ad797%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091424Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=60a4cea8b74e8b63566a40a416396e1d995c27b163bea4af1997598117ecdfccc8fdbda015360380f001bfe514b6e827b5828ec318e6e180e1bfd26b20ba099f7933c5e893a9e7ec6bef9a743f1c5feb1fced594b550a48d35158b30610bd79526ac606b3f07da0eb7f813e259f6eafd0984b80b20ec7070559db6a52010eab97b968fb65197f8964a3ef2475914c882e9ab7b20c08209875ce78d746f43c8793de06d67df4fb98ae87ed360d63229a5c90030f16647ba7ec00ec9aec60274f48a73a7906704cc5809a9aec101840208154c3bc11d5d4fe09bd9191e48ca6ceaef3cdc6843003dfa5f687c957c732d362a838f760c41d8ab70aa11efa1cac324', 'category': 'Street name', 'description': \"There are two street name signs in the image. One says 'Edgewood 800 DR 700' and the other says 'S. Lincoln 2800 AVE 2900'. They are both green and clearly visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2397.0, \"x\": 2366.0}, \"hi\": {\"y\": 2581.0, \"x\": 2787.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5704: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060\n",
+ "Processing image 5704: timestamp=2024-02-06 18:07:43.555840+00:00, observationId=o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows two green street name signs. One reads \\'S. LINCOLN AVE\\' with numbers 2800 and 2900 underneath. The other reads \\'Edgewood DR\\' with numbers 800 and 700 underneath.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1436265529972492, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=2557, total_token_count=2658) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:199f1a81335f7b95f6dce1dbc4a8da66:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T18:07:43.555840+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A199f1a81335f7b95f6dce1dbc4a8da66%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091820Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37d394f2f6ff35d256e1d96b6f178b81843c7ebd6ef58d15279463bef44e4f3daaf540f4f86d8dab2e411f33962b36f529b29e9bf15b8f01e905148bf8f09c80a310f343e6b4ebd6d37b2e64f925620e4739c5363f1a6df2918193e1c54fb0ddb9476e8c9267f9cc2d51ebc9f920efd7a2f7c0d0e616ec26ebaf3a47910e81daf8f43ac701d84cab734f2248d746abfd6e3a8279711b3f06299287bf8f5d79df7872cbd4e1e0a19d48d94d0f6b3473b5986ce97be4d94bf24de1a1c81aee17f4e152957a732fa53c0bef198ce98dca87863e591a194fa9c9fd994adf1c26b86fee2b0ad108eeb3f6ae99562c64f0d8c8b0b7da147ed8ee7e3c0f1bce101a897e', 'category': 'Street name', 'description': \"The image clearly shows two green street name signs. One reads 'S. LINCOLN AVE' with numbers 2800 and 2900 underneath. The other reads 'Edgewood DR' with numbers 800 and 700 underneath.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2157.0, \"x\": 1938.0}, \"hi\": {\"y\": 2417.0, \"x\": 2463.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5705: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:882182347e05981f0ac030c528498c2b:00110060\n",
+ "Processing image 5705: timestamp=2024-02-06 18:07:43.963886+00:00, observationId=o1:882182347e05981f0ac030c528498c2b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"There are two green street name signs visible. One reads \\\\\"Edgewood\\\\\" and the other reads \\\\\"S. Lincoln Ave\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15563036944415118, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3589, total_token_count=3663) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:882182347e05981f0ac030c528498c2b:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T18:07:43.963886+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A882182347e05981f0ac030c528498c2b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091204Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d2fe705a9858fa54358e47f41cde92799985e5808fcfb4a706c09beab4ff0de261f1c09c7ba4c35885eece74e92b44572688e23a7c7d4439590d7fb82269d40b40b73c3683c109b1a5dda590a22d81eb7d4f31887ef1187b5a1829efa04cbf1a2b5da3729e0b983b9d38c25d051779a86c19290d5f27e456b85f764b2f94f43677f48c02f4218c1fdcd23b9b75d55d1cb3095c50a3a23cb5fe0cc0771f1c806248413e8b9bb031ee36db30c0e9b5f29d40dd54549ab244372a6e2d272d5e3c3963c318d0e27b127e6e25414349f4cb2ceab077673a2f32c384b03d0da5ba9396e50d600ac0f048d622271b68f70486398ccd1b7ecfbcaae16dea678c38dea5d', 'category': 'Street name', 'description': 'There are two green street name signs visible. One reads \"Edgewood\" and the other reads \"S. Lincoln Ave\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2438.0, \"x\": 2359.0}, \"hi\": {\"y\": 2617.0, \"x\": 2768.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5706: trackId=t1:0337cf778bff20486f8312f0533949eb:ffff005f, observationId=o1:15c22357d75e6cea75fe6d48050bb9f7:00110060\n",
+ "Processing image 5706: timestamp=2024-02-06 22:06:31.521273+00:00, observationId=o1:15c22357d75e6cea75fe6d48050bb9f7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street sign indicating \\'S. Lincoln AVE 2800\\' is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1101203542767149, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=3589, total_token_count=3655) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0337cf778bff20486f8312f0533949eb:ffff005f', 'observationId': 'o1:15c22357d75e6cea75fe6d48050bb9f7:00110060', 'geographic_point': 'POINT(-81.96520896377 28.011343824574)', 'mapsURL': 'https://maps.google.com/?q=28.011344,-81.965209', 'captureTimestamp': '2024-02-06T22:06:31.521273+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A15c22357d75e6cea75fe6d48050bb9f7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b6263a5da2f047ec903073fd21a800333ee9b2f9b500568279dcf6f4e698a1bfe8647d0a0fcca0fd06c17811ce99364bcb499c6950a7bf1468aea673ae8925c4d787a98f68860bd623ac71a9d6b2e7bd2eee9b7df6b10a0f4741bb633b40e9215a0bf77d4b95dab8f2c3697f662b7add03f32e76a974ba86828a303204eb172e2b2642c623a370d86876b6982dcf535b7650a4bf1a37a53b2a335469126b87405600476c42a3651b4320311f19097d3d1c36f0772d4f961b99c254de7d6800a4943f12d220e35d1f8872f1f224f6a11f9d25820364c2b49511377964266773f687daa07dd060b4a1466fc31251b864fed9f39d4a4fab570b9467747e66648a01', 'category': 'Street name', 'description': \"A green street sign indicating 'S. Lincoln AVE 2800' is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1160.0, \"x\": 835.0}, \"hi\": {\"y\": 1772.0, \"x\": 1548.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5707: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:1efebc04605fa0c692bd374c5d0e018e:00110060\n",
+ "Processing image 5707: timestamp=2024-02-20 18:40:55.152721+00:00, observationId=o1:1efebc04605fa0c692bd374c5d0e018e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a black and white \\'ONE-WAY\\' sign with an arrow pointing to the left. Below that is likely a \\'STOP\\' sign though its not possible to see the color of the octagonal shape.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5394159952799479, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:1efebc04605fa0c692bd374c5d0e018e:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-20T18:40:55.152721+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1efebc04605fa0c692bd374c5d0e018e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091111Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=98261946c7c86fc950c0a5eaa9262ba2bdb96512876eff9062204fe91b56d90bed42ecbdb5b217fc58807b180849a1599cd574ab6acb67bb6532a0af60127bb44b736182a53d53c45b3b300ce9a926b20d94b35ffc1b71a9ee98067dd70e11fd6930115b709d07c12623739497f729d129d524dd8024199230c12fe118ffaf191bfbaf4bcc0c24e439b320a08b6de50e5c2fbbb05643853fb159fd4b8fb2f8a2deba3039ccc5a6562404cceca099fcf6d7f01689804de9776d25e5f8bef3e6a35566c28a505e90eba78fbbc46ffe85c84b2dafed02786a4febd4991ab84989adc5fc6ad6dba92d333c9b067bb0d8dabf072c4c8b3573c63b59b1b043865e5b6e', 'category': 'Other', 'description': \"The image shows a black and white 'ONE-WAY' sign with an arrow pointing to the left. Below that is likely a 'STOP' sign though its not possible to see the color of the octagonal shape.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1653.0, \"x\": 2324.0}, \"hi\": {\"y\": 1754.0, \"x\": 2578.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5708: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:ffc6bbff184ecd39274c099a9e55ed32:00110060\n",
+ "Processing image 5708: timestamp=2024-02-22 14:16:00.275758+00:00, observationId=o1:ffc6bbff184ecd39274c099a9e55ed32:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign consists of a \\'ONE WAY\\' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6974678039550781, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=108, prompt_token_count=3073, total_token_count=3181) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:ffc6bbff184ecd39274c099a9e55ed32:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-22T14:16:00.275758+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Affc6bbff184ecd39274c099a9e55ed32%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=10bd84875588bac289f212e9e8e84e4d33f1ac94bbafb4b9612ce54efdfd12844849bc2b568dc3296911a7e7d3fc4739f11323d13e8c5ffea456af235bdb6a2ead7b36575337755fe12e3336d9d20abe7f8835eb5baeb84506a2619e3f29dac43a4f7154dc07ea518d949b1697d795efaf4c9094919f08fd3d2a3317b35a1933e298be7002b72734af313b197744b67b3f1560b6fc315ea95d5b98b6b2f990fcc0e3196507f26bb569b3cf82956040436da8c883eb07a037affdfb5fdd2816a969e02eddb6c73772ef3ba30250469cac3e34e678bd9df7db5cb8a6768142a2186a9999801281456dc8388990590a4411eeed7bf6961343922de056efa658427a', 'category': 'Other', 'description': \"The sign consists of a 'ONE WAY' sign with a left arrow on top and what appears to be a stop sign that is missing the red coloring below. It is difficult to tell what is on the third sign since it is facing away from the camera, the visible back side has nothing written on it.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1651.0, \"x\": 2362.0}, \"hi\": {\"y\": 1754.0, \"x\": 2616.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5709: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060\n",
+ "Processing image 5709: timestamp=2024-02-22 14:15:59.971282+00:00, observationId=o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is an octagonal stop sign, and there is a one way sign above it\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2608718578632061, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=3073, total_token_count=3138) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:a4c6272bb3bea81cbc3c215cd58da79f:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-22T14:15:59.971282+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4c6272bb3bea81cbc3c215cd58da79f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=859813ee3d16c6f26516c7b977f9d7f70dfb9064eb8083ed42bde49dc23a50e05c2305c337058fa9bdff0f53a43d6a773a28ba8619f0d2896993d7f8a27ceef425689529e12a59046f066d97d46ca3a3304b50dafbd04f86f880f9b4115b26e5b3f95a028ff050323d12a79798e3622248dc30938181cd9e5d69b34e0f231700124f2993539f596895d0115d84857a03dc048fcca0c963443ec0fd6238824cb74d447598ea3cf765b9e88e8baf41817823a5ab628d537daf40beb94c32ff3c934e38999b4b9d1efbd01c249fa1ae496bbbcea94f95e0e85a76efc550abc0fc5fe953ac272ce2890a362806fa286d1e46edc3aef34909d8b7d70dfada55c3f978', 'category': 'Stop', 'description': 'The sign is an octagonal stop sign, and there is a one way sign above it', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1681.0, \"x\": 837.0}, \"hi\": {\"y\": 1790.0, \"x\": 1086.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5710: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:bc567023d8c9905c4fb103564c67dd14:00110060\n",
+ "Processing image 5710: timestamp=2024-02-29 14:32:00.065427+00:00, observationId=o1:bc567023d8c9905c4fb103564c67dd14:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a sign post with a \\\\\"ONE WAY\\\\\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. \",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5458745089444247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:bc567023d8c9905c4fb103564c67dd14:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-29T14:32:00.065427+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abc567023d8c9905c4fb103564c67dd14%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091116Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8a482d43a1fc31f086b9776bc50cbe85c5686eb7a0f4fd87f0bdb0ddbca0b652a035295fea6b79cce98b2254192f7c97b2b842c4c114cf1b357b2613c02e11626ffc7adb2d8dbf260496b921d87aa4977bcd84f4af086b5743cdfaeecb0c4b31364fdddea3864fb5ae21a6e37ab393aa5cf1c74031aee44e3c9be2cb66c737c0f5bbe51f20c4196e0078a50c23a00b9e7c524d1a651b80282982af00b001bb05d75692a24fc593f207140325791b8a177a068fc67da7947f29461c8110590447afe9b3811f69249cbc6a4339053b6748ab803fec65835f7b050c3cdaaf45aba8d6c1bd53db705c3629fc867bab536551a4a0f5531143aad70b77ac178bfc12d2', 'category': 'Other', 'description': 'The image shows a sign post with a \"ONE WAY\" sign (with an arrow indicating the direction). Below it, there appears to be the back of a stop sign, and a lower square sign. ', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1616.0, \"x\": 2046.0}, \"hi\": {\"y\": 1712.0, \"x\": 2320.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5711: trackId=t1:0338326a55b23b81555fa85c6f6b54cb:ffff005f, observationId=o1:29c4c772416f7ba218972493ed8e1af5:00110060\n",
+ "Processing image 5711: timestamp=2024-02-29 14:31:59.753495+00:00, observationId=o1:29c4c772416f7ba218972493ed8e1af5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is a combination of a \\\\\"ONE WAY\\\\\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \\\\\"STOP\\\\\" sign as the image only shows the back of the octagonal sign. \",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5312228109322342, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=102, prompt_token_count=3073, total_token_count=3175) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338326a55b23b81555fa85c6f6b54cb:ffff005f', 'observationId': 'o1:29c4c772416f7ba218972493ed8e1af5:00110060', 'geographic_point': 'POINT(-81.9374921231036 28.0540246711529)', 'mapsURL': 'https://maps.google.com/?q=28.054025,-81.937492', 'captureTimestamp': '2024-02-29T14:31:59.753495+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29c4c772416f7ba218972493ed8e1af5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3f79f68dcd1549742a2be308293fd1fe6e176c0b21c2745f51e190724bc4bddbda4e043f5ef66a16ae04781b60f91e22a6facf10c50e0e969dfd9288ebd57a0fb940a39408fe480934f966f24a9c25675e48327a548dac01075e33fe69f8e677b3064a7c48afa5be83ec2ebe2f299526d48389f746cd12d8fc13e0435749976d2e42709815a6f1359604477f6c49e577d67b97a01d2ade70fe3d5476eb9915ee87b72e741383c45009077299ec415ac820504c55c0ecf498d6c2f74b864880b3b11590d08f103c2037b01d6d9b97f682834b6255467d70490acd6113f6608fc3079b2d9e8c17af02af311557b99a55dc0b72491f9b60119cdb80eb92459e3dd9', 'category': 'Other', 'description': 'The road sign is a combination of a \"ONE WAY\" sign with a white arrow on a black background and an octagonal sign. It is not possible to confirm if this sign is a \"STOP\" sign as the image only shows the back of the octagonal sign. ', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1694.0, \"x\": 626.0}, \"hi\": {\"y\": 1806.0, \"x\": 863.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5712: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:8ecf869bed92a19331c46e3d8caceee4:00110060\n",
+ "Processing image 5712: timestamp=2019-06-05 19:35:12.013376+00:00, observationId=o1:8ecf869bed92a19331c46e3d8caceee4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a \\'3 Minute Parking All Hours\\' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38012074849691735, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2041, total_token_count=2124) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:8ecf869bed92a19331c46e3d8caceee4:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2019-06-05T19:35:12.013376+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8ecf869bed92a19331c46e3d8caceee4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a2aeee2ff76332973dcfbb3518ad8933883b3046310ea89b3051d6c773a5d93863c181a6838b04dc84157f61e9dea568826128226ee1acec739f55d0f9e10ecb8321bbd7ec50646f5cd12886f21bdd424dcad3a4857ff03b963605612818548bc3aec1ec5233ea4a9fa20bd18350e87c9a485d1cea48c98e078a04f5c2a5e392756db68bdec9c158e0721571fb03a92031020c5effb83601b4ebf18ee149b8ccfe81a2ea9b2a4df6ac17951a925d1f0c70da630587949cbe24bc79566b870d1099baf14478a471a6ef946ee15835c6b872ea01dbd36dce0f82b28a8e78f3147fd36e77747b377e52da654d43b5ae9c87330a4bd5ab6af50bf004c096e7a4f9f2', 'category': 'No Parking', 'description': \"The sign is a '3 Minute Parking All Hours' sign. It includes an image of a car with a person at the side, most likely indicating loading/unloading.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3235.0, \"x\": 1724.0}, \"hi\": {\"y\": 3331.0, \"x\": 1784.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5713: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:adb4e6633454791679c266fb307df41e:00110060\n",
+ "Processing image 5713: timestamp=2022-05-19 17:29:23.163969+00:00, observationId=o1:adb4e6633454791679c266fb307df41e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow sign that says \\'3 Minute Parking, All Hours\\' with a car icon and an arrow pointing downwards is visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2898569636874729, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=493, total_token_count=565) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:adb4e6633454791679c266fb307df41e:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:23.163969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aadb4e6633454791679c266fb307df41e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092129Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=03e2bcdefb767b3c75066c2c1767684fc38004511fcf604a595a0bdde3470baec5c9df6065f9607154473bc9ab82f5f4b994f108efdc4322e52df6c6b37996f6b042be1bac90e2538f2e8d24dabcd9aa0935c7b36949fc544074a33c8aafde9da956ce292a8cc4939d8bc0efa3be809b53043bd1cbdfa922f896fdab6d9908312b4e10032e6f15a8baca68287f9640a1c80ca1d2e720adecffe32b63aad6d8a4047591fb381547d627ab99778f20e38f53b9c621ec1ad76f9c2621c81e49ed9352230afe0f39365da0046aeb03df42f315b238fd97c59ce745d133e0821d2d6fe84b8f7be5be649938ba632948e7ffb6bdcac39f2e18574662962c2da21aba17', 'category': 'No Parking', 'description': \"A yellow sign that says '3 Minute Parking, All Hours' with a car icon and an arrow pointing downwards is visible.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3181.0, \"x\": 1155.0}, \"hi\": {\"y\": 3257.0, \"x\": 1201.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5714: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:ac7fa301e180edef748f82e34ac8a0de:00110060\n",
+ "Processing image 5714: timestamp=2022-05-19 17:29:22.584041+00:00, observationId=o1:ac7fa301e180edef748f82e34ac8a0de:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign indicates parking restrictions, likely \\\\\"3 Minute Parking All Times\\\\\".\",\\n \"image_quality_notes\": \"The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3227508783340454, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2041, total_token_count=2121) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:ac7fa301e180edef748f82e34ac8a0de:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:22.584041+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aac7fa301e180edef748f82e34ac8a0de%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c7d2e4780aa3199cb14df30de9091636d912bdbd361c380826e8eba63676af6d212435a2c0cde0af429d711d2b07e15b18310aa33c2d602c70018c29d7de89397ee3c4238df2fd37502eea29d5ac43657bdf84c620dff8374b24eca366763206de7a061059aa7c8826b8813c859ea649856f0fa2d3adc2c3026763711475e2d59726b186622c7915bd7ef817effaa7ff2b48279251b11ab9754bb435491b18b4bf37319a6eb2bcbc9b8d5b676f163dd03395e0e5eb501f6267dd2ac405f27d12fafad8bb6e17c4fd5fd3e28294999184ef9272adff6bc0cbc4f188d575e0e83632fa34071ab486734dc85527bfac4acc4348e7f155f2ef4eb28ea761d350611', 'category': 'No Parking', 'description': 'A yellow sign indicates parking restrictions, likely \"3 Minute Parking All Times\".', 'image_quality_notes': 'The image quality is somewhat blurry, making it difficult to read all the text on the sign clearly.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3199.0, \"x\": 970.0}, \"hi\": {\"y\": 3261.0, \"x\": 1005.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5715: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:6171db56e606bcc10643900ff29dff63:00110060\n",
+ "Processing image 5715: timestamp=2022-05-19 17:29:23.715937+00:00, observationId=o1:6171db56e606bcc10643900ff29dff63:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Yellow sign that says \\'3 minute parking all hours\\' with a car and pedestrian symbol\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29429315420297475, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:6171db56e606bcc10643900ff29dff63:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2022-05-19T17:29:23.715937+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6171db56e606bcc10643900ff29dff63%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091420Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8975e7f3663b2f59336a7747610e8f7a457890cf65ddbc119dde1a2f41781b1aa0b65f5d4b3c4e35413575a26689e96d4dd5d7325e2d451fa8c84094dc1f25d9f8d548d9dcd751a955d1847444585a206dfd6462869bfc37b0de4bb9579579960c36454e9f4119cb2975d097c416544f58ffb381ec217627c4d6305525167ced39c7db34cd252a0773c1c86059f6a6bc66ec2c7e55334b2a8eb668b57ff037d8e4eaf5fce2c55d44f5c5d39cef0974e7ccaa838983aa4f2cdf24c9884c8e518231863fcb823b3cc4ba661a62f51ab334db386ab5868be1c4df27f96aa8075d271832dfeff0badfd45a95dc023175e8cd6f71c17ddfbf0d99be6d245b860647f2', 'category': 'No Parking', 'description': \"Yellow sign that says '3 minute parking all hours' with a car and pedestrian symbol\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3207.0, \"x\": 1473.0}, \"hi\": {\"y\": 3305.0, \"x\": 1535.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5716: trackId=t1:033866c27c17c8bb42654ed0bfd533c2:ffff005f, observationId=o1:f2fb7770257eee552d6204a626f35709:00110060\n",
+ "Processing image 5716: timestamp=2015-09-11 19:54:50.500967+00:00, observationId=o1:f2fb7770257eee552d6204a626f35709:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A yellow sign indicating \\'3 MIN PARKING ALL HOURS\\'. The sign also has a graphic of a car and a person standing next to it with the text \\'DRIVER MUST REMAIN IN VEHICLE\\', and a directional arrow below the sign.\",\\n \"image_quality_notes\": \"The image is slightly blurry.\",\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4308347601639597, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=95, prompt_token_count=2557, total_token_count=2652) automatic_function_calling_history=[] parsed=None\n",
+ " Error decoding JSON: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)\n",
+ " Road Sign classified in: {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)'}\n",
+ "The classification type is ##### {'error': 'JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)'}\n",
+ " Error classifying image 5716: JSON decode error: Expecting property name enclosed in double quotes: line 6 column 1 (char 351)\n",
+ "image_report to be inserted: {'trackId': 't1:033866c27c17c8bb42654ed0bfd533c2:ffff005f', 'observationId': 'o1:f2fb7770257eee552d6204a626f35709:00110060', 'geographic_point': 'POINT(-111.881498224348 40.7739184441902)', 'mapsURL': 'https://maps.google.com/?q=40.773918,-111.881498', 'captureTimestamp': '2015-09-11T19:54:50.500967+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af2fb7770257eee552d6204a626f35709%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52b90d119d53689c1390e4d547d84acc18f0390acf8f3d2d2b0a1942b2bb2724f65bcdcb1442eb97590146bd45e75c36994bc92a5d4e7a0041faaddefc8279a2dbb194088ad1c4e7cc23ea7bc209b576ca1a9d82342f6c9f2d6505aacd23cb30d726e158e7e2d3a3c8b345606ba9ae55de585eaa1177cddc7c44cddff8c88383eabfd819ed03a9b8a45074ea8c2d611fc5cc14c82d8261f068c0a08154e9d09c291c2eff3c7e52c0e35af5d0f9a40a4f27f97362912269f3c27ba48f167b7c28a7056f1f8a3c27273d7daa64ef4c8a2baa9f4b80e7fed3f1e7129dfea840bc2946ca9f5a4a0920b14b0ec1731480918d906702ff5a4ac44a62ce3b76d4269c33', 'category': None, 'description': None, 'image_quality_notes': None, 'sign_quality': None, 'bbox': '{\"lo\": {\"y\": 305.0, \"x\": 477.0}, \"hi\": {\"y\": 441.0, \"x\": 550.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5717: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:5d2114cd284ee9845dd181ab0930d759:00110060\n",
+ "Processing image 5717: timestamp=2023-12-19 19:41:39.672100+00:00, observationId=o1:5d2114cd284ee9845dd181ab0930d759:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"No Littering\\\\\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18540712406760768, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=1525, total_token_count=1601) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338e345851cd9732ecde00a2d763933:ffff005f', 'observationId': 'o1:5d2114cd284ee9845dd181ab0930d759:00110060', 'geographic_point': 'POINT(-81.9876729864861 28.0535673539454)', 'mapsURL': 'https://maps.google.com/?q=28.053567,-81.987673', 'captureTimestamp': '2023-12-19T19:41:39.672100+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5d2114cd284ee9845dd181ab0930d759%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b86eae8130b5ba864b640ef7b47ee0687658f415c2701dc2e14fefae9c3e112edbcc0cb8f05652d917ecb35677e999ed2abd5f6ef253ebceb4e72fe219dabea195d9775fced5487fb394dd838b0763e64fa5974312c0c5ad98a1ed64ccb54e4fc8a90dfcb0a9f87a9f2bbc8b68c626638d184cc6caefbaa4491e43aa3381845852a9a0581974eb1673108d110cff782a9ce2b2c25da1d0e4e28aba8c239d983b9c8b1215fadd5754e2a459768a5e5d7285a1c3ea8705e6c86f6f27e373b561cec8c3aad8980219c3bb53f14314c5665a7f26966d39561a1da06071ddbff4cd4a57e53e3e26a838b5d5be9326a665a7b43063655de7a290436608cfb8c3b7c19f', 'category': 'Other', 'description': 'The sign says \"No Littering\" with a symbol of a prohibited action. There is also a stop sign and street name sign in the background.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 544.0}, \"hi\": {\"y\": 3240.0, \"x\": 586.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5718: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060\n",
+ "Processing image 5718: timestamp=2023-12-19 19:41:11.524902+00:00, observationId=o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.299327248021176, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0338e345851cd9732ecde00a2d763933:ffff005f', 'observationId': 'o1:b91de6b4c4d120ca9720fbbeb5df6879:00110060', 'geographic_point': 'POINT(-81.9876729864861 28.0535673539454)', 'mapsURL': 'https://maps.google.com/?q=28.053567,-81.987673', 'captureTimestamp': '2023-12-19T19:41:11.524902+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab91de6b4c4d120ca9720fbbeb5df6879%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091018Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b08c686001b2c081f5782e5d95f04d3c1987d6011c78c202c2f3d5994e99a3edb5e3d25e95746265ff790ca980f9d65460db54b0809f5919ff2352c81faf9cd7ff9cd2646d5b4eb7938e15976aa8c8357d8e20f97d618344f573857cb2a31b772932e716d9af2433fdccd3d63628e80552de4757e6e15f9f0bfa4583c48452e1ea686b5d933b9063d82a95fe50808910489401823a7ce82a7c34788e3433b4d0cb5eee34ba5586f8c681f859ed1331aae7e99ebaf737699b2bdebf43243b4dbd8d9065f0d542ba69ff123c0af02f9dade00ad46c551396261ed82899da00edb797b8145637116f7c541373c2013487894d310b2ba630cad0d3fa64b4be7f1a90', 'category': 'No Parking', 'description': 'The image shows a No Parking sign, indicated by a circle with a line through it over the letter P. It restricts parking in the area.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3179.0, \"x\": 603.0}, \"hi\": {\"y\": 3222.0, \"x\": 641.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5719: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:1a0f96ed5a3513e1ce977596ee231db3:00110060\n",
+ "Processing image 5719: timestamp=2011-04-28 16:34:40.586923+00:00, observationId=o1:1a0f96ed5a3513e1ce977596ee231db3:00110060\n",
+ " Error processing image 5719: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a0f96ed5a3513e1ce977596ee231db3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090926Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a9cfa9fab981ba43ae29da839de4ffe5551e18f58619dc195064a10c03f7bcd9bba32dc7c259ffccbd9f9494890ed768698f945948be4d81972eaf16ffb38d4d8c71554a854ab9cfce9e1c345e1155e11ef09f698c29d1c6d14e928ed006a3c9e0d9cb1a5602f4e317f14a1b16c71368c20ed6d0e71448265d1402597aaf81f784fcc60e3687c34252ce6330b8834d4d4d998f04c47246b21607d194138fcdd934e1bde8ef038980c3f6e0d4c6ed5d944f43ae478c4123ad46323a9e07f209e9ece7087adec4e0ac8a99fa63f9d0e162e88af25c92bf22377119cea1cfbc95e9322c5a2aceff112c42df0e9b9a84c07e40f03ced44fabd5917e8a69a611b225\n",
+ "Processing image 5720: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:8e6a1187dbdbc551329235c26196e816:00110060\n",
+ "Processing image 5720: timestamp=2011-04-28 16:34:04.620990+00:00, observationId=o1:8e6a1187dbdbc551329235c26196e816:00110060\n",
+ " Error processing image 5720: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e6a1187dbdbc551329235c26196e816%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=64c7257cc944422c909bd1580c23ce5bc9294de6c0518caf8ebc208932fcf602e5c7386c925661821de1d67923515214b4dbd0e994df08069b0a6304ef7dfccb2d2b5b8bc1b85c98758852401d8b8af5ca9fa22d186a50284b2300c3a5ed534743ef8b31d9b2b6a00ed1fa25643951dac2dc7f932dfb95e5db0fbc41afc5baf610acb5db2579e150a3c89263ea375724d966c9a1f5b3749212ae7a68bc3ad5e96c69d681ee6ba699914b33bd38942b173c1277bc5a5f2bae3b0bae6f0c7706b1c12b0eca0dd2ae076c8e275c28cb221473f24c6e4736b3525f9bab5be7d3f9e0e8734a66af53cf702e1fb451d206fe0d860dc86cdcaad22d76b9dbbe98d1cde0\n",
+ "Processing image 5721: trackId=t1:0338e345851cd9732ecde00a2d763933:ffff005f, observationId=o1:900267fe6a7ed1ad0aa5c8eb34ef38e8:00110060\n",
+ "Processing image 5721: timestamp=2011-04-28 16:34:41.077219+00:00, observationId=o1:900267fe6a7ed1ad0aa5c8eb34ef38e8:00110060\n",
+ " Error processing image 5721: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A900267fe6a7ed1ad0aa5c8eb34ef38e8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091014Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4243244399ca628981700c292f5eab10b9862981b7a0e76c7294753c95d73b0fded4788ba8d0d4b514aeaa020e6215cd0f1d441ccad5dfe0899b07c1368e68fbf9da3e4fdd47d5d84ad4cf6751c552fa3462950ba353502e07ed0673a95f39e10477361c00902aaab16e9927a9080c947ce891f3e1873539710c704cd9407720dfe3072711b7723ec2b9dc69f30859f1f1d14f2617aa7c62d3b61bc56de5d254c0caabbad16ca591fd980c94daba64370cb3594cb3cb7ea8511bc8dcb43461c8be25030d7a6cc3cb46dc696b83911c71d46acb712171b81a8d6188bf060784fa72b063f0db32ba6d51f62e5490ca04d3cd40dda67864c48808a7e35f0743a8f3\n",
+ "Processing image 5722: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:fb15285b491fbb6fddc97aae2c4e5643:00110060\n",
+ "Processing image 5722: timestamp=2022-06-15 16:00:15.529118+00:00, observationId=o1:fb15285b491fbb6fddc97aae2c4e5643:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3565064899957002, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:fb15285b491fbb6fddc97aae2c4e5643:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:15.529118+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb15285b491fbb6fddc97aae2c4e5643%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092728Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=11f3305466798fce5f2b021abefef043efa88f3213a181f29fbaaae735fbb86c52bf054dfbfc50a37e8125a3a9cce775e3bb6509d57edc37de4ceae06142189de6d836963aa507af571c0dd742f171f5980d0c612e990b01fccc17159abd6597aecc2e57bce91944ede05065ff37477ae094ecca39bbf028e08e08b1762591988ec3d6f003810a4396b88641f076e91ebc98029fd3ce057404d21d3d0e37e5d1d8c068b1850b0984dd12a6bc38e807d5f44f89749f91407e7c424e267161be88943938a0384c42af60734616596d4a63ad4ec6885b9ee986c0e843ba396aed26bdbcf8302cf5e97145fef6033f88b4cdeec907040b60755143245934e7011b47', 'category': 'Other', 'description': 'An orange traffic cone is present in the image. These are used to redirect traffic or indicate temporary hazards.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4754.0, \"x\": 1888.0}, \"hi\": {\"y\": 5048.0, \"x\": 2035.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5723: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:d36679e13900d0d0420d658ee5e8ac86:00110060\n",
+ "Processing image 5723: timestamp=2022-06-15 16:00:17.725090+00:00, observationId=o1:d36679e13900d0d0420d658ee5e8ac86:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two orange traffic cones on a white line.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09323608464208143, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=58, prompt_token_count=493, total_token_count=551) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:d36679e13900d0d0420d658ee5e8ac86:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:17.725090+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad36679e13900d0d0420d658ee5e8ac86%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091023Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=53aa27973bed560d458b3d7b9e2d43aa67927a4f5e8208ebe5b5e5fbb189823c24909bd48dd7342ced75dabbd00df265c249f4a61e3dabe1ca49d358c39656a5cb78539f882a2ce92b0dc4d2de094675123328aae125de7ecc806c3e2b1f126b5d5d58012ff8d5a6112aadb400e056df29206b35082cb5701cd5e8eaff03b2192927fdef5c7696de9d891d9d30fea6bf4e3ce4d219b7761c4112f12aec24fd0378f3f1aa66169d3969df31d65c972477061f97d9f694eeea393c8269189f12536c396a186e75d24d69754aceed6ad13955840d2d5c4c2fca272e2fd89d812f7e2e3887a5b24fdfcbc8dc1b64c0b87688b2a8456daba8d628973aac88c372085f', 'category': 'Other', 'description': 'The image shows two orange traffic cones on a white line.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3504.0, \"x\": 3120.0}, \"hi\": {\"y\": 3571.0, \"x\": 3149.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5724: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060\n",
+ "Processing image 5724: timestamp=2022-06-15 16:00:14.349113+00:00, observationId=o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange traffic cone is present on the side of a road, marking a line.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2764331878177703, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=1525, total_token_count=1588) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:36b1fc3fbeb42ff223f8433c2754ea6c:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:14.349113+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36b1fc3fbeb42ff223f8433c2754ea6c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a70938af8fee7bb19aea8dceede1951dccddead42e9a036617d9bbe2a81b106f67036206f2f186e5353edaf9fab0c741ea6bf21f639c63e5ba3d8ba1c46f2934303435d80407c31d157ba097721d6cd5b2d1a5fade0ba9fb1dd28f401915720bcc26886977fd9774defe456d117a9300287dc84eb1c7283c12ba4ad7f695cbf5d02dae488fc6665485d75486df4df1fad7233d02d28089fcdd7cc5f7bb133bd85d9a038f0c94f80a15e8e254089f09d0a5b4ebb71204fc0681354499861b7d47940dc23b6b3f079719b27fe2e65fb3c42b29d57bb9bea53a4dbfc9c6ef9114bb0b7cf31f597c03b557f03aacb643739214add0b91cd757b3dbdb9b4adc99328', 'category': 'Other', 'description': 'An orange traffic cone is present on the side of a road, marking a line.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 4110.0, \"x\": 1122.0}, \"hi\": {\"y\": 4300.0, \"x\": 1206.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5725: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:fa794c5efcf1f3df1376d60646d5de9f:00110060\n",
+ "Processing image 5725: timestamp=2022-06-15 16:00:16.897219+00:00, observationId=o1:fa794c5efcf1f3df1376d60646d5de9f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Other\",\\n \"description\": \"Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3152872721354167, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:fa794c5efcf1f3df1376d60646d5de9f:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:16.897219+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afa794c5efcf1f3df1376d60646d5de9f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=627e4e9b0b532dc8338381a4b4c8148f8e91e8fabd08cad2e313c3488c16c11640d2c2e31b03b404adba6de02a8b5acb8d82c37aae15c3187644354eed7a98fd7ad7f0ba83d460f70b2bc4c72f6380ec2197768cb8fe3b24094c80429c191e96162fab4f1210b4d854b62e948bd1fd222c16384d7a149e59775337adb34d9d73f3ad907bc4c2d93ae7c6b6ccddcc64b4b12c4fe5651759a41f7a1c7663f0dc8c01fcde4c380a209aa4b39b570cb18f3dce669eb13805bef4e7451b68adf1555ac48697d8523f83b1c7b42a6ea0b437197e42d4eeb555d35e4827423005c6364b419340c67cdeb80bdc4dc90b2a878225d60ffdcc25b5330933032c6d0cd32716', 'category': 'Other', 'description': 'Based on the image, there are orange traffic cones present. These are not road signs but rather traffic control devices.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Other', 'bbox': '{\"lo\": {\"y\": 3576.0, \"x\": 3044.0}, \"hi\": {\"y\": 3660.0, \"x\": 3083.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5726: trackId=t1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f, observationId=o1:e2a65d640588c7928a3b6ede20c47063:00110060\n",
+ "Processing image 5726: timestamp=2022-06-15 16:00:13.805116+00:00, observationId=o1:e2a65d640588c7928a3b6ede20c47063:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"N/A\",\\n \"description\": \"There are traffic cones. This does not fall into one of the standard road sign categories.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3139677914706143, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=493, total_token_count=559) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'N/A', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'N/A', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033913137dc4f9ff455f7bb68ca9c1c1:ffff005f', 'observationId': 'o1:e2a65d640588c7928a3b6ede20c47063:00110060', 'geographic_point': 'POINT(-111.919683029408 40.7710826409709)', 'mapsURL': 'https://maps.google.com/?q=40.771083,-111.919683', 'captureTimestamp': '2022-06-15T16:00:13.805116+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2a65d640588c7928a3b6ede20c47063%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70e6fcddabfce387c851188152f604a140b540f5fc21c262141890ebf5779d479b56bb0f3e5966b943932751ef230866f4e202b17fbaec1aac6acf70448723d9d31ccb36b44571c600306fc89091f3066f324fc068c9c34b3a7d2f07a895d8c53e1f6f5fadb7d544183ab859e4878d7b93936a1fbbc3c8bac0f01d2e52178ff280d131cf7c8c8f2a79106473f52ccef614f5760f88dc0c7fdc3ab14318a14ba8e7cef96c2f11c498b7da4db521c8f87bbf12a8a504a8d6b198284d2ab40ab3ff5ee800b152a1acec44b60fe3150874612e3c8ca1a048911727ecf161f1544060cbf8605c24e25945cd3ed65d3a7de45b46281a3cc3e2abff9cce818a7ad245e8', 'category': 'Other', 'description': 'There are traffic cones. This does not fall into one of the standard road sign categories.', 'image_quality_notes': 'image is clear', 'sign_quality': 'N/A', 'bbox': '{\"lo\": {\"y\": 3746.0, \"x\": 856.0}, \"hi\": {\"y\": 3862.0, \"x\": 907.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5727: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060\n",
+ "Processing image 5727: timestamp=2021-07-21 16:53:25.667609+00:00, observationId=o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking restrictions. It includes a \\'1 HR PARKING\\' sign with specific time limitations and seasonal dates, a \\'No Parking\\' sign with a right-pointing arrow, and a \\'Resident Parking Area\\' sign for Area 8. Permits exempt time restriction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30096635724058246, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3073, total_token_count=3174) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:a2c6f58c6dd49a01dc7e963c1fc95719:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2021-07-21T16:53:25.667609+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa2c6f58c6dd49a01dc7e963c1fc95719%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091515Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=93f645145998ae45c101e9d5e51cde34cda2c0ee2bf3639b8b89c21898e005ad0ab2df523c1a8b2e939df7381f37d07a9ec15226e7568f9d78304afc2a0944d74ee15fdb9abf5ece6447bbfb7336e9ef3b143f8fcc3edecccde18bedcedbf94f0db8f3bcbe0f9d7b78ef8f42f348940f45b632d2c2260fd1799876e9fdb77e84719622acc1f1b33c7da158485efe3251ba39bcbd83be03d9fed9146f5a66ffa7e53ddf2cd457aece9e11bb6a67cd127a5fb4e30f50b60adc77a335ad45752482730caf5c1cedcd24ac8e281b9cbf9c9b37e151eb04c1668121fbd58f48c6dac03ecd68f3561048e7b4c4a949fce25fe454e979310f7185beb6cbe5630962e430', 'category': 'No Parking', 'description': \"The sign indicates parking restrictions. It includes a '1 HR PARKING' sign with specific time limitations and seasonal dates, a 'No Parking' sign with a right-pointing arrow, and a 'Resident Parking Area' sign for Area 8. Permits exempt time restriction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2059.0, \"x\": 1332.0}, \"hi\": {\"y\": 2245.0, \"x\": 1454.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5728: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:81eabdbc2b0fefcf930994ad55ed963c:00110060\n",
+ "Processing image 5728: timestamp=2022-05-19 17:05:45.959961+00:00, observationId=o1:81eabdbc2b0fefcf930994ad55ed963c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4963952734115276, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:81eabdbc2b0fefcf930994ad55ed963c:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:45.959961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81eabdbc2b0fefcf930994ad55ed963c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=102c5612aaff3e386345e7bfdb079cc0133061693300fa4bdb6109f8f8ca10e451290a1ab2d116160b981744bbe9694a25ec28878be2c5bac41512107d3a6a39c651a0f9edffa27061b5b95938838e837d5556a52070a319008d6eac649b9cc0a56410cd12c4aec13dea2853b35c8071649193bbb061d45557748bf04440c77c80ae4054846ba9d0e19b3cd4c93fc1122daea882a98b8a85dba0b56d795e4b25a725aebd1f0786451c5bc5037fba75dab5db6ca73dfb587424ed277c565c84fd350c559a0435d8b8e31b45ce6d352c73f6a0eef5b807c68bdd00bcd0c90673439bfcacf6bffd042c3d5855ffad8ec01e7000ca48ea49fff9205c9850ab1b796d', 'category': 'No Parking', 'description': 'The sign indicates parking regulations for HR parking between 7 AM to 5 PM on weekdays from January 10 to March 10. It also shows a no parking sign with an arrow and resident parking in area 8.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2662.0}, \"hi\": {\"y\": 3240.0, \"x\": 2766.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5729: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:e65afd49e92ae14b108899b6910e9d20:00110060\n",
+ "Processing image 5729: timestamp=2022-05-19 17:05:45.123555+00:00, observationId=o1:e65afd49e92ae14b108899b6910e9d20:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.264889574598992, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=3073, total_token_count=3160) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:e65afd49e92ae14b108899b6910e9d20:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:45.123555+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae65afd49e92ae14b108899b6910e9d20%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a322265d0412af460ed04d56db7f9c6f9a9897c2a65b533586f07d1491944e49f59cd0282ba186544948631b97aae86f2a2fe80b9543fa79202b308bacb3a987d866d72c00d1c333ba97dd8a623718caa7ca64a1dfa21fa7d67a1a388d7f2b736d58055477508825ec63fd530ee7ff290049fcc6f55bc4dacbc76c975db38ec69b44110e2553b4d838c32b12df9275be366ad52b33308bcb9e2df09f0b8d74c77c886bab48f7910315e9a697c85655a2af6c537f15f6108c2e6b1225dd8a24b31ce02846c48360fb7c7eb0bd32e7524afab6884be4e46f8d3a40af0270070f36f41ae10639e7f52e83af922e43d2b7a42c03860e3d85ddfc94931b4bce20a46', 'category': 'No Parking', 'description': 'The sign indicates parking regulations. There is a sign for 1 hour parking, a no parking sign with an arrow indicating the direction that the restriction applies, and a sign indicating a resident parking area.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2046.0, \"x\": 1153.0}, \"hi\": {\"y\": 2306.0, \"x\": 1328.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5730: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:7039c1a51b7b3343abf0f69f829dd90e:00110060\n",
+ "Processing image 5730: timestamp=2022-05-19 17:05:44.275551+00:00, observationId=o1:7039c1a51b7b3343abf0f69f829dd90e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction\",\\n \"image_quality_notes\": \"The image is a bit blurry, but the signs are identifiable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5682685569480613, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=135, prompt_token_count=3589, total_token_count=3724) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:7039c1a51b7b3343abf0f69f829dd90e:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:44.275551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7039c1a51b7b3343abf0f69f829dd90e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091016Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4147d7009df3a17cb1c9d3d0779b69911f2dd60152900bc70cd0a8ee735440bde9e07ed017ff44d65a708f44a51dffa7d79511dbc9eeee7594b9aead7ec08f9122b2566a272951bd29d701bd36482aba67b8424e76e739b74acdd7546b1d89e297024511d05c9faa055e453c24b0541504b1242a4a92a48c78a90ccbe55f363f648b9faba328fb593b8932c9fc223d5a48e3814faf74a3670252dc2c8da4d0603c5d861298a7ca69facddc9aeabb364bf0834080576fd7d255741a9d67ec9ad1021c9c0f915136e0159ebf5758574110724b815900555ee1126c221d6b91e107e1d6283039660fbff7cbc97de277cbdf2cdb384274ac94622e93b32038af0d1c', 'category': 'No Parking', 'description': 'The image contains a No Parking sign, a 1 hour parking sign and a resident parking area sign. The No Parking sign has a red circle with a P inside and an arrow indicating the direction it applies to. The 1 hour parking sign has the hours listed, weekdays and dates the time restriction applies. The resident parking area sign indicates area 8 with permit exempt time restriction', 'image_quality_notes': 'The image is a bit blurry, but the signs are identifiable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3044.0, \"x\": 477.0}, \"hi\": {\"y\": 3268.0, \"x\": 569.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5731: trackId=t1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f, observationId=o1:f03e1f20d15ae61ffad25187ada73a07:00110060\n",
+ "Processing image 5731: timestamp=2022-05-19 17:05:44.275551+00:00, observationId=o1:f03e1f20d15ae61ffad25187ada73a07:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.\",\\n \"image_quality_notes\": \"The image quality is not very clear. The signs are difficult to read in some areas.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6854481966990345, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=3073, total_token_count=3179) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.'}\n",
+ "image_report to be inserted: {'trackId': 't1:03392dc54a2a464f4fd9ff8406f12df1:ffff005f', 'observationId': 'o1:f03e1f20d15ae61ffad25187ada73a07:00110060', 'geographic_point': 'POINT(-111.889908402201 40.7806466407829)', 'mapsURL': 'https://maps.google.com/?q=40.780647,-111.889908', 'captureTimestamp': '2022-05-19T17:05:44.275551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af03e1f20d15ae61ffad25187ada73a07%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6e3d9d1f6261df3c3391be726d0fdd8d8143ab4f26bd2b1eaab276885d5d153dd6d152057b0e88b57588984655f27ffa31819cf0c971f17dab9c7bc4ab56772d7c27490d0bbf33e85c4734b8118118b4a0fa4e1beb250d1510297d3a4b99b9fef6a178a2b9871f9405879752ac5520701bcc3be8fb73e6dac5daffd1d8ae225ca9577abf038d466005c1cd65f358f17cd8d28d754c215ca153b68611b772161b7f980dbe3007e5559ae936a15a32d0f676e1f15abe6fb5142887339ee589a839b3f478475e16ef56131db1889d24da5025b639cf2ea0253a649997d9f6a49b2577883955e337130776e4ab754d8fa9bc9e61f69a86c9d1ec503c63ef5d4cfdc7', 'category': 'No Parking', 'description': 'The road sign displays parking regulations. There is a 1 hour parking sign, a no parking sign, and a Resident parking area sign. There appears to be some time restrictions or specific rules for parking in the area.', 'image_quality_notes': 'The image quality is not very clear. The signs are difficult to read in some areas.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2154.0, \"x\": 3531.0}, \"hi\": {\"y\": 2389.0, \"x\": 3626.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5732: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:1e284afda1c4a2491cfc424c95e13a25:00110060\n",
+ "Processing image 5732: timestamp=2022-09-07 17:00:38.972689+00:00, observationId=o1:1e284afda1c4a2491cfc424c95e13a25:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign is visible, it reads \\'West 2nd St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09813872850858248, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=1525, total_token_count=1590) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:1e284afda1c4a2491cfc424c95e13a25:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2022-09-07T17:00:38.972689+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1e284afda1c4a2491cfc424c95e13a25%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091316Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=76455bd3d1fd89a959fbf86d9d26a4e61153ab6e91ca2c21763d61246a7840c4573da7722e13e6cd7ab0209c354fd230829ee6ba60130953840f0e86663587bae2d863e4f03ecdb81f9c8afff0e622152845bfaaa7dbacce67591498cf5c18892ac491f7a0f8805822f399acd7caa767c7f33129f932c498c30f051d8cdb7a60219e6ffa6ac5bccf9b105bcabde2beebac6e24352831c0b5a8fb2bce5c12ff9a34cb6e5076ffa578370b87325f37d26ed7a08b2b326a1847e1edc04586197e091564fb075d9fe178130583f5771a00df242c96f9a61ae6636a507405aac1eba547163fbd9b3ed0cfdb508ed63db6084be9e64350f23e1deafc3618ae4c34f74e', 'category': 'Street name', 'description': \"A green street name sign is visible, it reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3133.0, \"x\": 1191.0}, \"hi\": {\"y\": 3191.0, \"x\": 1338.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5733: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060\n",
+ "Processing image 5733: timestamp=2024-02-21 14:47:09.368605+00:00, observationId=o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign indicating \\'West 2nd St\\' and \\'North Davis Ave\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.046450379965961845, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=493, total_token_count=562) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:b4534bdff5a49e47ad180d52dca2a2b3:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:47:09.368605+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab4534bdff5a49e47ad180d52dca2a2b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a09a055925cd44befb6329fd2a293de33718128e10f583be94b2b7ddc3fd164b8b3e0035297a27825aba27412bb60fb32e65addaae749b8c473c00e9a65ce44ea4b8ed4573242c5a9e731e17e5278ad9845aae1ff2e372b70c0a1d4819481f40317e7e88c70a37095dc0d1b37a375bf2a4333fcda0f4a0cc3e63a32ecf586390cea99000deb58abc8cfe11d339e5ba6725d8dc5aaad7f700f66c3061daf8ad704c849b91b2f08d5694c28f3987647a65baaad2261df77c3cc1a7b97ce774dd7dbe2a28778926fe76be7bca80a2ff2dad4bc92601c53fbdf48d45be7679bf34b7ebf2497e3e63b5079144a12e9281de3cabb1e5e240ca203e7ef706f1efc12029', 'category': 'Street name', 'description': \"The image shows a street name sign indicating 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3153.0, \"x\": 1370.0}, \"hi\": {\"y\": 3194.0, \"x\": 1480.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5734: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060\n",
+ "Processing image 5734: timestamp=2022-09-07 17:00:38.320693+00:00, observationId=o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'West 2nd St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11667310996133773, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=61, prompt_token_count=493, total_token_count=554) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:1ecb7c06b4614ff94e3fc6b1255d4359:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2022-09-07T17:00:38.320693+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1ecb7c06b4614ff94e3fc6b1255d4359%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=92935230718caaa5c20360be8aa2f86ec784f5c72c086f0375947b8b2915bf37eb5f1c0ba782fae8f2877adfe5c8dfe99da5ed2ce9128656af4b0cfe1b06e057ebfa4310d16c3e2a33fd9beb98dcb7ad33c6e70591b459c4b4c8cefc97d88e682eee2544be74e166c718c799c51f8cdd44f198bfcc44e999fc7239e1a6274495b1db89bcb2f3d1bfa5c37afcf33b8a1c6d6364b8c652ac227c04397193f345db47ad11ccd19ac09a94ce15e98f69ee94729eca8f13a551ca61e76c4e17cd86e5888958565e4ad8dde4656288dea0cbe841bb530c93c0e911bf6930eee3e43d95c4740581a92412ff08f0f78ea9f84edad7f2dbaf89dc9e55d2c748911a23d91a', 'category': 'Street name', 'description': \"A green street name sign reads 'West 2nd St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3136.0, \"x\": 1010.0}, \"hi\": {\"y\": 3185.0, \"x\": 1128.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5735: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060\n",
+ "Processing image 5735: timestamp=2024-02-21 14:47:07.952964+00:00, observationId=o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"West 2nd St\\\\\" in white letters on a green background.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1916493929349459, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2557, total_token_count=2622) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:2ec38ffd76ff195804fec9fdc569d2fc:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:47:07.952964+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2ec38ffd76ff195804fec9fdc569d2fc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8050ff032e7f2ededaad8a242dfc2c5a5f842350b07bfe03489d445275fb88dd351ef366ba6fb6c4d7ceee54f89a105052fe5c03bdef602d997de0518f4f045d6c9a58c9188e5791cfdf0a66f15227e1812549cacbc4381b9a5fed2a27ea4cb3c25803550116b0f37da993e7653601be064100f820df0b2f2b59465461232873e701692a0fb110f3fe8bcdd0d628a889c0dc702828ea599b9146bf0ab23d1aa1e023fb4662bcebd1e659fc25b3238ee07c6d9f92dafc2163d47cb362318339517ad145c3be4654691f52c6c1df7b421089e8c9809b0877fb4bdbb423bed751b718e9a6d5761209f64b01a8b64bf4172292d13427433ab95768c0566f9e1d5861', 'category': 'Street name', 'description': 'The sign reads \"West 2nd St\" in white letters on a green background.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3057.0, \"x\": 2861.0}, \"hi\": {\"y\": 3142.0, \"x\": 3093.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5736: trackId=t1:0339d1173799b7a83dd92db032ec0349:ffff005f, observationId=o1:ee076333cc84c8a36e83500f030bbc0f:00110060\n",
+ "Processing image 5736: timestamp=2024-02-21 14:58:17.765683+00:00, observationId=o1:ee076333cc84c8a36e83500f030bbc0f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign displays the street names \\'West 2nd St\\' and \\'North Davis Ave\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10881520029324204, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0339d1173799b7a83dd92db032ec0349:ffff005f', 'observationId': 'o1:ee076333cc84c8a36e83500f030bbc0f:00110060', 'geographic_point': 'POINT(-81.9824277459026 28.0570168942847)', 'mapsURL': 'https://maps.google.com/?q=28.057017,-81.982428', 'captureTimestamp': '2024-02-21T14:58:17.765683+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aee076333cc84c8a36e83500f030bbc0f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092821Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7375f5ea866025dffbc18b85037c132d27e0b6e33cc718766616574923e524c5c150757f0c30c1a06c115dcd748a3cfb502a338206cfdbc4e5207eacba5c0d589c0968c144ef9779d1dd034245dcb22829f1813d6bb6bc9bf91c65076196bbaec51157176bdf3410c22a72882f2e037385c810669b1c926e3f2a1705216d633c8253e874bc008ec3fdb06d9072e4f92c0f77c8437a5e5058a11d6b24add44b479f5be3f63696c37c2a82aeccecaf5c8377ebea809c84d338c79e1fededf4b082a03ed57ae580d046aab1a67a8dca3ccc594d620683ece00f1d741e71f2ae3fdd05c7b2284d9f3f9ced702c18b40be537e1d8e4f0d9b98092e1bfc4da89569adc', 'category': 'Street name', 'description': \"The sign displays the street names 'West 2nd St' and 'North Davis Ave'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3172.0, \"x\": 1278.0}, \"hi\": {\"y\": 3220.0, \"x\": 1391.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5737: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060\n",
+ "Processing image 5737: timestamp=2024-01-25 17:04:35.492871+00:00, observationId=o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Poor\",\\n \"description\": \"The image shows two signs. The top sign is green and says \\\\\"Pennsylvania Av\\\\\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. \",\\n \"image_quality_notes\": \"The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.697642027442135, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=134, prompt_token_count=2557, total_token_count=2691) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Poor', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:75d615c0ef1838784cf5e1bd83f7efbf:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:04:35.492871+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A75d615c0ef1838784cf5e1bd83f7efbf%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0389b47622476ba107041d10dd7484ec836a86eec944d1d0c785201303d54b9111e5703487ef592cfbf04ce5ad54cc0299cedcc8b81f1bd633b78b171ca46b65585523d6f134281a1e22f4b1821c87c0ff4c9edd7d3b2141a41ec830e21b71be1f104da656896a15853e7ae93194f6003098b9e8a7654c17608257e708c21b6f41422a95e9e7f4b4a22925a84bad1d2369ad9834ffff946915bb6b6ed4d9da49b81f68a5bb8e4a17677d753b6baa768d2c6b9ca45a2c644c559680ff5ac4bfa82fab23698dd839823a0793d6de018c210582651adb510f9c6fe9fe5a28dad0a5825ea6b21591a52b8239adbe911416a08cd326b1fc858e5912b1bc6acfd7f0de', 'category': 'Street name', 'description': 'The image shows two signs. The top sign is green and says \"Pennsylvania Av\" with an arrow and the number 900. The bottom sign has the shape of an octagon, so it is likely to be a stop sign, but it is too faded to read any text or see the original color. ', 'image_quality_notes': 'The sign appears to be very faded and discolored, making it difficult to read the text. The street name sign is clearer.', 'sign_quality': 'Poor', 'bbox': '{\"lo\": {\"y\": 2610.0, \"x\": 29.0}, \"hi\": {\"y\": 2807.0, \"x\": 755.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5738: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:f6db3c029f25bcb71c9a2d84de605c64:00110060\n",
+ "Processing image 5738: timestamp=2024-01-25 17:42:22.401579+00:00, observationId=o1:f6db3c029f25bcb71c9a2d84de605c64:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The street signs indicate \\'Riggins St\\' and \\'Pennsylvania Av\\'. There is also a sign behind the street names and it looks like a Stop sign.\",\\n \"image_quality_notes\": \"The street signs are easy to read, the Stop sign behind them is stained and hard to read.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.47068851552111035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=94, prompt_token_count=3073, total_token_count=3167) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:f6db3c029f25bcb71c9a2d84de605c64:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:42:22.401579+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af6db3c029f25bcb71c9a2d84de605c64%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091726Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b3a71c89520a6a6733143553f423684e356d9d8fa74d02431dc562463709a5a23f720cc6ff8c19d7bf0434d42bb9d94985d5f68f6071b6267cf7f02c55846a083c16d4297df7b44ee4eb694b616c11cad99316823b9299ce05051c7ff12873f5be1eb203c167112676806f91ac7946c5953ea0bd285175a0364858950ec23dc270ba965e1744cdaaf0404923e8e4d1c13306792e09b86243d0927552188de13e2dfb086245aac7c62b1bb1a217dddf628fcc7f4939a51d676dce4a0646d0e7c41d076d01a71d521045a5579569bb74945528ce7f758a46ac5c2365e3c5121860a61bf7e51f7a33c55fa4bb37d7449e2d1b04e88285b092f5f54975ff7edf557b', 'category': 'Street name', 'description': \"The street signs indicate 'Riggins St' and 'Pennsylvania Av'. There is also a sign behind the street names and it looks like a Stop sign.\", 'image_quality_notes': 'The street signs are easy to read, the Stop sign behind them is stained and hard to read.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 1719.0, \"x\": 2665.0}, \"hi\": {\"y\": 1913.0, \"x\": 3170.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5739: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:f850d6533bcc1535dc50a3b840712b27:00110060\n",
+ "Processing image 5739: timestamp=2024-02-27 14:51:57.999777+00:00, observationId=o1:f850d6533bcc1535dc50a3b840712b27:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Riggins St\\' with a directional arrow and the number \\'300\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19297445324105275, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3073, total_token_count=3144) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:f850d6533bcc1535dc50a3b840712b27:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-02-27T14:51:57.999777+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af850d6533bcc1535dc50a3b840712b27%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=526c897231ac58c6786e6b0624af8afd3d3e46a50604fb3dfd05ec1fad33e944e0943e1e4187daa47902fbab554ff503768073f9565c123d2e8cef2ac9dd3693958cd77ffd9ed63c4c1c26da4c172f5d9fa1236dfeeaf8f061b04c745b4fc4c30ef79bf5c4c6e35d3dc0ff2928876e9365cb87b018bc8b2b44863c140857b8e5eeabfc8dab53c3605698d1d8c7a9d440745bf085eb2bb46e57588fbcc6a21f0e558299f8adf2a482fc1d6bbf3e2fc3c170c6d9b899803f6494744c442ec0fe0bbfbf510a6ed446912d61321b34ecb85cd33d5a76eee4646307dfeebf6844f886be41e348bddfdaf43177d4b1902a05ad066167163e88d6e79d60fe0d0cae8a19', 'category': 'Street name', 'description': \"A green street name sign indicates 'Riggins St' with a directional arrow and the number '300'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1669.0, \"x\": 2952.0}, \"hi\": {\"y\": 1876.0, \"x\": 3456.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5740: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:23aab5de644801e9399d48341faa32de:00110060\n",
+ "Processing image 5740: timestamp=2024-01-24 20:48:23.327473+00:00, observationId=o1:23aab5de644801e9399d48341faa32de:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image clearly shows a red octagonal stop sign with white lettering. It also has an \\'ALL WAY\\' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3463167367979538, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3073, total_token_count=3159) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:23aab5de644801e9399d48341faa32de:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-24T20:48:23.327473+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A23aab5de644801e9399d48341faa32de%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091619Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=577c2f02b00c44a5820f7b238272cc753825f9f30e02e1adebfb124c76f337af9f770cd90793922a347e595feea9ef5f290779bfa4c9245c15d4d6ccce06ebae6e53dda4529f64c5ebc76c5741274ab1ea5c8620396d2700ec1556050f87473dd1ac599c823daaccf392df835ddea37e8e1d6d2dbde9d2cfda0166b7ece1350ad96391169fbca352ec979f9401c737f3af9ea299ee5aaf0ad6c7107f4a34c21ecbb24a6011e87f75884fd5d124c4702517840a43b4b1eccd9c1129f31aad630e82da5ea227dd0000615245b31bc1fd25170e824bd682a11ad3f918d97c1ada349140608965265ad7aed77f08d79d2a983dcef74efde88bdd43fb8f995995b906', 'category': 'Stop', 'description': \"The image clearly shows a red octagonal stop sign with white lettering. It also has an 'ALL WAY' sign underneath. Also visible are street name signs for Riggins St. and Pennsylvania Ave.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1528.0, \"x\": 1215.0}, \"hi\": {\"y\": 1695.0, \"x\": 1784.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5741: trackId=t1:033a40eccf1b652f627a50ce99e98d5f:ffff005f, observationId=o1:78610fc7d7fc9f8dfccff8232217705e:00110060\n",
+ "Processing image 5741: timestamp=2024-01-25 17:04:30.096969+00:00, observationId=o1:78610fc7d7fc9f8dfccff8232217705e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign with white lettering is visible, along with a sign reading \\\\\"ALL WAY\\\\\" below it.\",\\n \"image_quality_notes\": \"Image is clear\",\\n \"Street names\": \"Riggins St & Pennsylvania Av\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3749542690458752, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'Street names': 'Riggins St & Pennsylvania Av'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'Street names': 'Riggins St & Pennsylvania Av'}\n",
+ "image_report to be inserted: {'trackId': 't1:033a40eccf1b652f627a50ce99e98d5f:ffff005f', 'observationId': 'o1:78610fc7d7fc9f8dfccff8232217705e:00110060', 'geographic_point': 'POINT(-81.9549812067458 28.0350873277757)', 'mapsURL': 'https://maps.google.com/?q=28.035087,-81.954981', 'captureTimestamp': '2024-01-25T17:04:30.096969+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A78610fc7d7fc9f8dfccff8232217705e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092217Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7cc0bf8437210c3e591360cb720e8894fa76c252138ed80f12a74398b0bf53ea327a7c32ce55f07a76a18d4b87a5ea984000100d4647010f51553281f680329948e95131bef60eb7857c13f856583c6dffa06905c0a192a614173f803cb4b5a91dd7fabf145c0b8223688570da815ddf827f6304099fc6dd73f5d7c9d418b53cd18bc978e45ebb9464558f1b641f999d04aa84c0e6075ab5eb85c263d339c80da084b663bc9b4a68a28c3485fdafd8a7559898cf4f828714d711d144f405e2085c9350f0be94064ede1ff94db376a9156be4834be9445a6961e9996e53439ed41eaed9ae0fb9120d9be518077ed71f90ffd71b1cd84ee7e8ac65c613b5ed96ec', 'category': 'Stop', 'description': 'A red octagonal stop sign with white lettering is visible, along with a sign reading \"ALL WAY\" below it.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2542.0, \"x\": 2553.0}, \"hi\": {\"y\": 2736.0, \"x\": 3192.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5742: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:e8d865bafefa0ce7043673fe003497f6:00110060\n",
+ "Processing image 5742: timestamp=2022-09-07 21:10:56.255551+00:00, observationId=o1:e8d865bafefa0ce7043673fe003497f6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.\",\\n \"image_quality_notes\": \"Image is a little blurry, but the sign is clearly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26830709245469836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=1525, total_token_count=1615) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:e8d865bafefa0ce7043673fe003497f6:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-09-07T21:10:56.255551+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae8d865bafefa0ce7043673fe003497f6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3c42b2f4af7c5d30b379684e33da38361c15f60b28664ea757d02985481043e59ddcc0e1590e880faf4f171e6dba74eb2b48be7f38fb0e1be36c6b2ec5a084704ddc9449746c47344355af9cacef21740f3e8d3f317e8f9db8d60adb603368bd7de011b9cc11b6bdb088acb273c61e3dd88a42bc88968ce5c20ff9b4bb48bcc0594a42662d029107dd7da3afc2a65bd9816c2ba77e8ede701b39015243b8d545976c8fe9f9d7bc61ed87d9917687e60a60440a8e0b2451676812dcdadf5f87be4b55cf2d6a3dd3d88525f4a157fa111a8061f3ddd9f561338d815f5dab41447eb7ef5b1598d54b570a9ae73a80067edbb6ba2175389e529c3b6cf8f2e6bf5771', 'category': 'Street name', 'description': 'The image shows multiple green rectangular signs indicating directions to cities (Las Vegas, Salt Lake, Reno, Cheyenne) and street names (900 West) with distances.', 'image_quality_notes': 'Image is a little blurry, but the sign is clearly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3147.0, \"x\": 250.0}, \"hi\": {\"y\": 3211.0, \"x\": 300.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5743: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:171208a3592632fed39cb4f180050b48:00110060\n",
+ "Processing image 5743: timestamp=2022-08-03 16:45:23.767584+00:00, observationId=o1:171208a3592632fed39cb4f180050b48:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.\",\\n \"image_quality_notes\": \"Image quality is good. The sign is mostly visible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5358296466130082, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=1525, total_token_count=1618) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:171208a3592632fed39cb4f180050b48:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.767584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A171208a3592632fed39cb4f180050b48%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092314Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=28ae94708882c10ba6833745fccfb1d91830f1a558d966c9d0cb8db3ee96a62a6a8f54957d9bb41ec095dc77d4b4842548c44e2db94afeabef8c6785d89365becdff57bff8d14c0db806c0986a6f6c12c707df9633f64837c36c88337da786ea4aecb1b79ad12c3ca48d9f1bc548d2b235ece8dcfe7f805c1acfae6983d100acc6c3efae8e9c6489fd0f6757ff598d45b13668965948dfa11e19aea349bd228a2e62b686268b26492bc60c94c0393e4907109301397b2940d3f6c8d69d3bcedabd5abfc83a9bb85820fa5b7931ec1da1b8237f19602942ec6b9c2df1f4ea7d7b39c2007480a5705e1af577e3cc33e5d66f39df6929c2785db323fc597e5b42fd', 'category': 'Street name', 'description': 'The road sign is green and displays street names and directions. The visible destinations include Las Vegas, Salt Lake, Cheyenne, and Reno. There is a sign for 700 West.', 'image_quality_notes': 'Image quality is good. The sign is mostly visible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3147.0, \"x\": 258.0}, \"hi\": {\"y\": 3213.0, \"x\": 308.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5744: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:36ab80384c2953c31541e66f347ef7ec:00110060\n",
+ "Processing image 5744: timestamp=2022-08-03 16:45:23.467526+00:00, observationId=o1:36ab80384c2953c31541e66f347ef7ec:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.\",\\n \"image_quality_notes\": \"Image quality is fair, but the signs are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31519864553428556, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=1525, total_token_count=1608) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:36ab80384c2953c31541e66f347ef7ec:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.467526+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A36ab80384c2953c31541e66f347ef7ec%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091319Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a176d9a4a348d35d0bfa7d03cf353a41016f79fa29335de80ddde9e544063a2aae71640e3e1395dc24ba074c7c95725684b426b3a906cf3c01422b558456e80ddaafd0cc0f8e00a7eadd83abc234dadeb61320e11fce331c16fb0ceb2bda6ee823b5d41e19eade0610717937f99173cadd617f2fee6a2fff12a244467e0085944a082639d06e59128719d6d4f14736866cd46de1cd22d87e21c6ca336738cf4902a2ca70307507437ade48497415529b06b4f7eebcf98c6ab9c3d54de4de169c76ca8338de78be565b0ebbb32c19c8cdf76102da3c481618dbc94f129b3124cb036f6eeaec1a0f8002070f67f3c764060bbaffb46c5a3c55a798f7f3491722db', 'category': 'Street name', 'description': 'Overhead sign indicating directions to various cities like Las Vegas, Salt Lake, and Reno, as well as specific routes like 800 West.', 'image_quality_notes': 'Image quality is fair, but the signs are discernible.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3170.0, \"x\": 3288.0}, \"hi\": {\"y\": 3227.0, \"x\": 3339.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5745: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:f87ca873239089559e58eee26ece7856:00110060\n",
+ "Processing image 5745: timestamp=2022-08-03 16:45:23.767584+00:00, observationId=o1:f87ca873239089559e58eee26ece7856:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. \",\\n \"image_quality_notes\": \"The image is somewhat blurry, but the overall structure of the guide signs is discernible. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.40566486011851915, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=110, prompt_token_count=1525, total_token_count=1635) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Fair', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. '}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Fair', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. '}\n",
+ "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:f87ca873239089559e58eee26ece7856:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.767584+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af87ca873239089559e58eee26ece7856%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091617Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a57f47f3153a88bac59f0d4d62d91ec94eef9f6e4615498a9609361a9f5cc7b82f85b388398ede4e3c8ef8b0e0f8b08f411651e91bd7e36f0c9874d0985496b498e4fef3885f3b2bc89faedd57f80d363796b1f73aab6a76450e45e714333e4ecb0df3d0d0398e51370314170a3a3311056937280ac6c5103f909b647dfc1ef49ddbd77a9715cc8dadbc3e6df3145022d8c2a6649d6740a6e106d102268bb71529f9798a47128ac1cab5f1c7d95c4959338ad078425a81b6a75341843e0c01a48dc59094ca9675e66bb1952572204a0a9e1a22a6078e212c8d28946e5ffa1f153c4ffc3f216ec37db5c0280f96eec041203e6bfe3419ff476ae4d8374346f638', 'category': 'Other', 'description': 'These are overhead guide signs indicating destinations and directions. One appears to indicate directions for South (Las Vegas), East, and Cheyenne, while another indicates directions for North (Salt Lake) and Reno, and the third indicates 900 West. ', 'image_quality_notes': 'The image is somewhat blurry, but the overall structure of the guide signs is discernible. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3169.0, \"x\": 3298.0}, \"hi\": {\"y\": 3227.0, \"x\": 3351.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5746: trackId=t1:033abf6ed56aa77e35c7497598325c6b:ffff005f, observationId=o1:a1f20899f64bb63331ef3650350eba60:00110060\n",
+ "Processing image 5746: timestamp=2022-08-03 16:45:23.167627+00:00, observationId=o1:a1f20899f64bb63331ef3650350eba60:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a green street name sign with information about the cities and exits. The left sign says \\'Las Vegas, Salt Lake\\', \\'To Reno\\' and \\'Cheyenne\\' while the right sign shows \\'North Salt Lake\\', \\'To Reno\\' and \\'West\\'.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7016116111509262, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=124, prompt_token_count=1525, total_token_count=1649) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033abf6ed56aa77e35c7497598325c6b:ffff005f', 'observationId': 'o1:a1f20899f64bb63331ef3650350eba60:00110060', 'geographic_point': 'POINT(-111.941076485486 40.7239892915455)', 'mapsURL': 'https://maps.google.com/?q=40.723989,-111.941076', 'captureTimestamp': '2022-08-03T16:45:23.167627+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa1f20899f64bb63331ef3650350eba60%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3708503ece817f0493b0211996a16aab4a1c78fb144dba75ec3b6a5605025557db091ec24ca032da88b7f62733cc7ae2394b1ea99b810d23a72706d8da421b83f0828b9448ff0b407edfb122af7e31f3e5f9c69bdaff1d35b427b33382ab5afed3a16d1159fc69c85bc6f6b32a40e20ac2d0f82d6e813c9293138a20a078e9d87ab0c74d4106f75d7823a7ec6be1c64b87e3b6d7531f6963eb849e2f86b0ebc1f4b6bdfd621694348b8a00f766f2b26d48919b778783fd7224cbe030a016fd1f0056234ee627c95e00711d1274ee2403ed38f52444e481c2c6efe94be13aa3f48a551f7e7a34c830beb1cb33edfa90a80dc5afe94c3086d74938d43a424ead44', 'category': 'Street name', 'description': \"The image shows a green street name sign with information about the cities and exits. The left sign says 'Las Vegas, Salt Lake', 'To Reno' and 'Cheyenne' while the right sign shows 'North Salt Lake', 'To Reno' and 'West'.\", 'image_quality_notes': 'The image is slightly blurry, but the street name sign is identifiable. A portion of the image is covered with a black overlay.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3149.0, \"x\": 184.0}, \"hi\": {\"y\": 3209.0, \"x\": 233.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5747: trackId=t1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f, observationId=o1:81cbe194e4db61805d99e92b6caa6570:00110060\n",
+ "Processing image 5747: timestamp=2024-05-14 18:18:37.684034+00:00, observationId=o1:81cbe194e4db61805d99e92b6caa6570:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign reads \\\\\"NO PARKING ANY TIME\\\\\" with arrows pointing in opposite directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09310654988364568, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3073, total_token_count=3136) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f', 'observationId': 'o1:81cbe194e4db61805d99e92b6caa6570:00110060', 'geographic_point': 'POINT(-111.939120251463 40.7730903292637)', 'mapsURL': 'https://maps.google.com/?q=40.773090,-111.939120', 'captureTimestamp': '2024-05-14T18:18:37.684034+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A81cbe194e4db61805d99e92b6caa6570%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0215a67585f1e05bd41f2c898e0e35df627a9d7c79b3988ca4d6c397f67b27590fd202cba01a29169ec1ade39cb551eebfadc1063aa10f17294514ab435d4c70b01bbc92fba2981c7c92bff818a17e91e658485d760a60f1f92c1cf75495b34cdcbf97bf16e5fcfd8b9237e4e9572ba116f769622a0609132617f36313c0a8a30ef7de7b4ebc938c55e79d56c7195242e0c109b74998290b3160ea3216cf41f74f91117eae67d9b2746660bf2b53f01b22107f7ee883fcdd7a09217ae8882a76c6dbb5f61636367926f941ff1c68a009c2b76961a13dd0bae6410d8bc779d8de4d92b448b56d3d14c72fbcf76d56b96f5400c52c7cdcafc290898d25effcbe02', 'category': 'No Parking', 'description': 'The sign reads \"NO PARKING ANY TIME\" with arrows pointing in opposite directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1966.0, \"x\": 955.0}, \"hi\": {\"y\": 2295.0, \"x\": 1164.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5748: trackId=t1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f, observationId=o1:53de629134b582e9e6ba8b265f32fede:00110060\n",
+ "Processing image 5748: timestamp=2024-06-12 17:00:23.192386+00:00, observationId=o1:53de629134b582e9e6ba8b265f32fede:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular sign with \\'NO PARKING ANY TIME\\' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2353527117998172, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3073, total_token_count=3151) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b0ba2ab2627c7c22b8e469d447c5c:ffff005f', 'observationId': 'o1:53de629134b582e9e6ba8b265f32fede:00110060', 'geographic_point': 'POINT(-111.939120251463 40.7730903292637)', 'mapsURL': 'https://maps.google.com/?q=40.773090,-111.939120', 'captureTimestamp': '2024-06-12T17:00:23.192386+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A53de629134b582e9e6ba8b265f32fede%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091425Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ca1b2b36e23221e69456d8204f5fa9ba09d4b0893d2d941a3687b5d8b423966cf7b8e8d126557fb236050d1aa46de881b8ed71ab95a0487b8c1a1af27208dcbbe5cbac2f3a9e156cfbf87b1dc52d37a53a4b603fe3388fd34bfade9c38288dbe619e5f6c59a7f2405f17761649a14c450dcad8c3e913ed6f89c38d64a975daa9a7a3d63bc4c37d8e994493972f2bcf51b11cb1c1ceb563a341b0d38a4e2961513b559cc622225872ad67634629783a5d3e601ae6f2646ae3419281ae1b525f3bb788d91c2358b4cf9f6fffc974bf9c8cda2c3622811752d7caa1b8a897f2d6d7d5792ff44c3d9576c07ccc6200ff385a4cf8b0e02d7c5418c2906177d1a7c06', 'category': 'No Parking', 'description': \"A rectangular sign with 'NO PARKING ANY TIME' written in red lettering on a white background. There is a left and right pointing arrow underneath the text.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2015.0, \"x\": 1058.0}, \"hi\": {\"y\": 2303.0, \"x\": 1244.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5749: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:7c65a2988d2bde438ef0c5170670b3f1:00110060\n",
+ "Processing image 5749: timestamp=2021-02-26 18:50:12.886184+00:00, observationId=o1:7c65a2988d2bde438ef0c5170670b3f1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates a speed limit of 10. There is a second sign below it that indicates \\\\\"CAUTION SPEED BUMPS\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2516637529645647, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3589, total_token_count=3666) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:7c65a2988d2bde438ef0c5170670b3f1:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:12.886184+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7c65a2988d2bde438ef0c5170670b3f1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091715Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2e2302458c0e8969d0aabfdd1e6480b9daa33bdd8f98c466a2ba5a914ab7bbb8006f5d40d0342ccaaebc98ec8f4a2f0f3db1513bdaa5e9abaff34589acac40e87736b78682073926713d9bad504571bb527ab90816241eb4d91bb49155dd1a15c8f414a3e74853e9e7a7147e1283ae0695d6c8356ff365741252ddcd2310c4d2af781030832779ce8d694728dab476603c1bc45387564161940fb67fe39093f5ddf4200285392a016f6885bf8be4ab8ed21f6957ce5ebf4612c519e0fa5980906cc92f62d8f0dee2dd75f5a94566282eac68f9e6cdd29aeab7cee02770b07e8b5fc35a030c5c1f4db5ad31faf629e3f68de8610c5dac2d8a83423c2cc8b97d7a', 'category': 'Speed Limit', 'description': 'The road sign indicates a speed limit of 10. There is a second sign below it that indicates \"CAUTION SPEED BUMPS\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3528.0, \"x\": 2692.0}, \"hi\": {\"y\": 3903.0, \"x\": 2876.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5750: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:d205e83fa617055fc7767bc018b16cdc:00110060\n",
+ "Processing image 5750: timestamp=2024-01-18 15:08:53.215054+00:00, observationId=o1:d205e83fa617055fc7767bc018b16cdc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \\\\\"SPEED LIMIT\\\\\" and \\\\\"10\\\\\" in large black font. The bottom sign is yellow and says \\\\\"CAUTION SPEED BUMPS\\\\\" in black font.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2252886743828802, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=101, prompt_token_count=3589, total_token_count=3690) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:d205e83fa617055fc7767bc018b16cdc:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2024-01-18T15:08:53.215054+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad205e83fa617055fc7767bc018b16cdc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091922Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0550e2659365b35c177b283c962f14904d45bd5ce01dbbb9509b457f5a8faac9fd20264fc48a6aa78139037956abde83a8e68cfcb4bae3317c33731635364983596347520c1c1814b8654e914c3c60c2c07bae76e6eefa4febba03eabb947e8080d11ca62e4e51ba0c5cb30d469ec36680c5c1877694c0995d903f4a81a055d75c260ee3262221d97f0209920b3cc8f52296f7f5a3086d86728088cd981ef3245884c617c127baf97c7979a5010dc2d42c01cde45fcef126995bed5c524087884776e9319f9aa639de62d3ec05ed84c20be2b87580dd71d352044df3e867a2a35d84cf5a31905e4feea62c16d86d41207f8e4504830f85f362ebd1873fcb0312', 'category': 'Speed Limit', 'description': 'The image shows two signs mounted on the same pole. The top sign is a white speed limit sign that says \"SPEED LIMIT\" and \"10\" in large black font. The bottom sign is yellow and says \"CAUTION SPEED BUMPS\" in black font.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3449.0, \"x\": 2724.0}, \"hi\": {\"y\": 3771.0, \"x\": 2886.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5751: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:a22dae3ecd4395225bb19b6945c37b1b:00110060\n",
+ "Processing image 5751: timestamp=2021-02-26 18:50:11.954099+00:00, observationId=o1:a22dae3ecd4395225bb19b6945c37b1b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying \\'SPEED LIMIT\\' above the number \\'10\\'. The second sign warns of \\'CAUTION SPEED BUMPS\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2992443576935799, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=93, prompt_token_count=2557, total_token_count=2650) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:a22dae3ecd4395225bb19b6945c37b1b:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:11.954099+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa22dae3ecd4395225bb19b6945c37b1b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090925Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=373a3bfbc52bc5b6841dabe2a5f0ca5ab3c5a08bb4bf029276bc6153b692488da496cfb2ee6701635ba03c2dbd55af8febf41bfc68e7a500cc138cfb1298c40868b935744c5c2bca23d2bfe7712a7828c94039d97eb8dc0229067b7d2ec657537191c6c02d9cddcf05cf9239073a647999039abe3d4c9bf926589d5628502f24dbc4c1c2d3eeb8c2b8c08431c84fecc40ff2a3aa6f5f2fb85422e82b2a11866fd70de0d26fab9c41e697a1104c250b2b141f0c4531c2828b90d276f67a749c13f757300103eed88f5141d1911680a19c4ea37bc58223c9f1a78fead7bbf7ed968cde3f686673eb41feb2046dafc6ee2ed4cc254edabc61e74416b27e595079ac', 'category': 'Speed Limit', 'description': \"The image shows two road signs on the same pole. The first road sign indicates the speed limit, displaying 'SPEED LIMIT' above the number '10'. The second sign warns of 'CAUTION SPEED BUMPS'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3395.0, \"x\": 1421.0}, \"hi\": {\"y\": 3580.0, \"x\": 1538.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5752: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:c1334138ae5b952f56514b886469f2da:00110060\n",
+ "Processing image 5752: timestamp=2021-02-26 18:50:11.226157+00:00, observationId=o1:c1334138ae5b952f56514b886469f2da:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about \\'Caution Speed Bumps\\'.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36566169261932374, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=2041, total_token_count=2121) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:c1334138ae5b952f56514b886469f2da:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2021-02-26T18:50:11.226157+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac1334138ae5b952f56514b886469f2da%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=49c372180d7e0071ffb3549bad88fe76c1def58d34cd914a5f9c2a45c2dc797257fb9039f51ab1264b522a2c762cea8e6b41ecae623f17f3aabfe025392994643b5209d42dd4cc8330dd63ed3b533b338728cffa27efd782cd37eb739153acda5815d0bd99dab367854b103b7c542cf67e1211ca0290b2587ff59bc0a229d0cda959d788717124016aca8bf60f11da95a5db7dce17c5cf89bffc8db6e5567c7035778c56f5e14b78755dcfa6d4bb44e0e21e0584c196ae9971a4382b6f35859237032495353a1ef05d26f9d17e346f898afcb24ccbb9282aca28760a1d10abd214fcf713f1f15dd1dc3f5e26b71921ed966d820d2e8cbd40cee1ecd4ab649277', 'category': 'Speed Limit', 'description': \"The sign is clearly visible and indicates a speed limit of 10. There is an additional sign below it that warns drivers about 'Caution Speed Bumps'.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3322.0, \"x\": 986.0}, \"hi\": {\"y\": 3447.0, \"x\": 1068.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5753: trackId=t1:033b335f9444b262f690f35179c524b4:ffff005f, observationId=o1:2b012d3274ea724b821dba74ecc4047a:00110060\n",
+ "Processing image 5753: timestamp=2024-01-18 15:08:54.947048+00:00, observationId=o1:2b012d3274ea724b821dba74ecc4047a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says \\'caution speed bumps\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20581529047582056, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=2557, total_token_count=2634) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033b335f9444b262f690f35179c524b4:ffff005f', 'observationId': 'o1:2b012d3274ea724b821dba74ecc4047a:00110060', 'geographic_point': 'POINT(-82.0210658358513 28.0275965524655)', 'mapsURL': 'https://maps.google.com/?q=28.027597,-82.021066', 'captureTimestamp': '2024-01-18T15:08:54.947048+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2b012d3274ea724b821dba74ecc4047a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=33429f8ed8b790298a790364ded0fcaf5cdd5e8247a1faed52dab5bc7653ffff694662a7fe068ec89961d0add9491eeea87e617e651f27e42ad879835d12f805843ded4257197b23e67f13cd6b61812bc3df5baf9f0b9b988205c62ef284236cafdbcd0f021b02973e80301c39cf273435d93820cafe15f5120753fbe1a990d92cc8591d9c6b2786cccd9777faa25d13f324f0f467c73f7f057e8d14eb64f674abbd31abf0608409c7158c08587f75d7f113097592d01d62b6a8c2c4ac577aea2d1e358d0ef65dba52fd958c0dddb01aee079e13a9fcb12ce106df61dd33d721c84abad2fff7739736dfca3988af9c74252874c6f6d3499ff5d4af0b6bdc61e6', 'category': 'Speed Limit', 'description': \"The image shows a speed limit sign indicating a speed limit of 10. Below it there is also caution sing which says 'caution speed bumps'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3326.0, \"x\": 1386.0}, \"hi\": {\"y\": 3479.0, \"x\": 1487.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5754: trackId=t1:033d4561e7e3b48590d39cd221094006:ffff005f, observationId=o1:3b04441639dd1d45d3b76e90b228b411:00110060\n",
+ "Processing image 5754: timestamp=2022-05-16 20:37:36.330981+00:00, observationId=o1:3b04441639dd1d45d3b76e90b228b411:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NO PARKING ANY TIME\\' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19517605304718016, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=1525, total_token_count=1605) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d4561e7e3b48590d39cd221094006:ffff005f', 'observationId': 'o1:3b04441639dd1d45d3b76e90b228b411:00110060', 'geographic_point': 'POINT(-111.886866301015 40.7760260088475)', 'mapsURL': 'https://maps.google.com/?q=40.776026,-111.886866', 'captureTimestamp': '2022-05-16T20:37:36.330981+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3b04441639dd1d45d3b76e90b228b411%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6b05e15493bd06e68cacd9f87ec1c796637fa4dd1707e268650e2d4d6faa91db9602930204a926db6df9e84af03c591dcacdcf2dd507aa255c5c413046bbc098321dd6961acce77c4e3f47184b4a44b3e99be103d26e7d1825562d428486e39b97ef88d1d6e817dff21d79839788806a014facddd58146f59095d08f6b1f839023df0f8276344fa534ab6ee582317c5e6f417c46b41cf28a8879a0190429ac6be377dd6f2c2ad768f35f38cbfbb6e80f0b500170faa521bfa696426b702eba65a8e3ddab8932581fe1a8147d070deec5815ae418b371541785dc72cee59846b50a04fba450edb501831067ad62f4acb15a091d9d45c8d3b59d9933e940964526', 'category': 'No Parking', 'description': \"The sign says 'NO PARKING ANY TIME' and has a right-pointing arrow below the text. This indicates no parking is allowed in the direction of the arrow.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2102.0, \"x\": 2178.0}, \"hi\": {\"y\": 2186.0, \"x\": 2224.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5755: trackId=t1:033d4561e7e3b48590d39cd221094006:ffff005f, observationId=o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060\n",
+ "Processing image 5755: timestamp=2021-05-05 15:28:28.247561+00:00, observationId=o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign is white with red text saying \\'NO PARKING\\' and has an arrow pointing in a direction.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.32086097492891197, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=2557, total_token_count=2625) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d4561e7e3b48590d39cd221094006:ffff005f', 'observationId': 'o1:af0acb3f54b3d54de5f2aaf54acadcbe:00110060', 'geographic_point': 'POINT(-111.886866301015 40.7760260088475)', 'mapsURL': 'https://maps.google.com/?q=40.776026,-111.886866', 'captureTimestamp': '2021-05-05T15:28:28.247561+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaf0acb3f54b3d54de5f2aaf54acadcbe%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0059eac35e59b0d7d5d257fdf0403728dd60eb9ce6d287953b37cd15c29e1c56a4331f5c448d8405f2a69cadef36f626ba9303671423e0770b8f84a21c51e3a3271b39438ffde7aa061cb204074afa85336c5a38c52b68db18b131e8f4b432e640e6d1b902fb9a527dd10ba90c9cdf4129efc2cc7789283cd25673202c020256c4057603e64e231ad924317b3b924993ba64f9c4d2f98751ec117f2ae8484d377910a7773469a96e198179c4edf94d930197cbb9a4df730f4a3fadd5d4f942077e0fa02f53aefb33bce192fb5da9f8fd48c6c71f176424e509c42191f706d02f21d2fb51b3969c16feb3dd0ad36ea0b0f0f52afa9ccfc90a0c6cb9e30c475a52', 'category': 'No Parking', 'description': \"The sign is white with red text saying 'NO PARKING' and has an arrow pointing in a direction.\", 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2153.0, \"x\": 3063.0}, \"hi\": {\"y\": 2264.0, \"x\": 3106.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5756: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060\n",
+ "Processing image 5756: timestamp=2022-09-29 17:31:30.148891+00:00, observationId=o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white \\'No Parking Any Time\\' sign is visible with arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11190115515865497, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:4d16a7c4815908f3ead4f6d4e87b434a:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:31:30.148891+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d16a7c4815908f3ead4f6d4e87b434a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a8e99dc807943b2e6753dd3212090f68136818de26a5b2a432913f1f0c922eb29017453998456e13adb7c4ca467ff68936c2df6fd594363237ba5fd7d0b8477ce43735f15131d76e2f51c255b718b439c3c8602dd55fc576504bc5fd8a92e74d10abf12adbfed1c40646e6c91635adf51396d3383f5352693ba19347cfc38b14b945f22c9bd2d0f041aae3f17a992e4a6bf5514436a7140c26ed48fcd9e9c7593069b06ff7418efa64c313d2c51bfd5bb98885bbdb506ba5f98c0c883f939755a115000a6cdaeec0d39b18dc0fd617313afe99bced2229fff646e587645b219abc8ce54437fae106dcc4c8f7e35424c8c2a025765574eb7ecfdc0f2aab489f0', 'category': 'No Parking', 'description': \"A red and white 'No Parking Any Time' sign is visible with arrows pointing left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1738.0, \"x\": 1087.0}, \"hi\": {\"y\": 2056.0, \"x\": 1250.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5757: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:fee6fa15976ecfbe067f77313699c669:00110060\n",
+ "Processing image 5757: timestamp=2022-09-29 17:31:29.800881+00:00, observationId=o1:fee6fa15976ecfbe067f77313699c669:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO PARKING ANY TIME\\\\\" and has a double-headed arrow indicating the area where parking is prohibited\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19471116133139166, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=3589, total_token_count=3660) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:fee6fa15976ecfbe067f77313699c669:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:31:29.800881+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afee6fa15976ecfbe067f77313699c669%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a8f2647de1fc48a2d504bcae126628925bfcc1b0100a93138387109bf11e457a652e4deff71b727d4183ce418424c27b76d01cd3e9cd404aeaa1ac03f7a0786cd44210150f22013a1d7b0ff6d86f41e9742494e479d0c93410ffb19c056d1c9203a29b5cdd60abc5f81421f9aa96ea2296f6d2991c13feb07284382168b99a42bd9784ee727fb5a5ffac9e69f3110f1c03b5e98f3a87919a7af203c9aece2ba7058ac5763de99919add982672b823366755efd2a81a052f6b22c030a9d3e8d0c0565a5f1ba55b21988943da0dea8d4b45389af36d2f2baed9ef081e7cd0ba313cda765da111d7285c85b0db6ec279c0cbd8b47107dddfe4e59216018ff62cdb7', 'category': 'No Parking', 'description': 'The sign says \"NO PARKING ANY TIME\" and has a double-headed arrow indicating the area where parking is prohibited', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2927.0, \"x\": 1984.0}, \"hi\": {\"y\": 3113.0, \"x\": 2108.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5758: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:c3a3b9b325e267dbd6c0382800ff707f:00110060\n",
+ "Processing image 5758: timestamp=2022-09-29 17:32:20.075253+00:00, observationId=o1:c3a3b9b325e267dbd6c0382800ff707f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\\\\"NO PARKING ANY TIME\\\\\" with arrows pointing left and right, indicating that parking is prohibited in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14969786008199057, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=3073, total_token_count=3145) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:c3a3b9b325e267dbd6c0382800ff707f:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.075253+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac3a3b9b325e267dbd6c0382800ff707f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091819Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=61c6221500e84197b7d2527ead6d7080c23f756545cfe194b6f867904448d5056dd23d480238fec608fc61413a5f88c251edd1f66eedcf0add9b38a7123700ef9da5d8edcd017f0d277f057112a93248d822e46464d63ed736adc57dbcc55321db2b435ea221914262faa2f32e6dec90c07bf34e0fa4ce1d33dceaf8a7d53c6da49b9537694a448a1562a83c8a17ed95597d45118d2df6757fa4ac52fc79f42aefd55902b02ad85494c45322a5637ad181c3b88939b33fd3ec41145b41ad870535ba44eadb04acdcf2e64d52d06277fe2c15566c588137e9ff7712dc10b9908ad41e12e5bbb8b6abe754cd013dbc6373d1ae6423e8d6aaec0f0ae1557e546ab7', 'category': 'No Parking', 'description': 'The sign says \"NO PARKING ANY TIME\" with arrows pointing left and right, indicating that parking is prohibited in both directions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3008.0, \"x\": 1695.0}, \"hi\": {\"y\": 3155.0, \"x\": 1794.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5759: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:f2d3fd7d8888d37888359632cd8e1435:00110060\n",
+ "Processing image 5759: timestamp=2022-09-29 17:32:20.799912+00:00, observationId=o1:f2d3fd7d8888d37888359632cd8e1435:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A white sign with red border that says \\'NO PARKING ANY TIME\\' with a red arrow pointing to the left.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20080926077706474, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3589, total_token_count=3659) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:f2d3fd7d8888d37888359632cd8e1435:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.799912+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af2d3fd7d8888d37888359632cd8e1435%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091128Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=08a0f145f8c4c479901e4af6244bfbc2b12cb456bd00cc7ba44ab5afdcce904d19ec1af437b15e9b170f982e378a9c390e5ad411128cebee4dd79caead1aa2838569276e1f4794c4fa3235671b619a2e75e16c826def24b98b1b9ad94d041de1e589d8c77b6ef42378266c02a8151be10b0bd2449f37532fa7651c9f00b8b77cab28199cfffc1d41899d0b2108c68421e1561c1755d4e2911ea6428a43939c76a6884f9c096648e8c192f0e62a695c55a4330143e8e614495a3700a260cafa26531fc4fae4e1d6c07148f2f29d6746ed6625a0e5349ad136db9ac224bcb25acce38063b3411e7c978d7cb29366dfe584ef7ca24e6dc3ea7afe9473a2ea68aa4f', 'category': 'No Parking', 'description': \"A white sign with red border that says 'NO PARKING ANY TIME' with a red arrow pointing to the left.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2880.0, \"x\": 3288.0}, \"hi\": {\"y\": 3039.0, \"x\": 3458.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5760: trackId=t1:033d6b4c69968365fb9caa71226432d3:ffff005f, observationId=o1:cd3158841a1434ab77b9990a43d9e00f:00110060\n",
+ "Processing image 5760: timestamp=2022-09-29 17:32:20.799912+00:00, observationId=o1:cd3158841a1434ab77b9990a43d9e00f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign says \\'NO PARKING ANY TIME\\' with arrows pointing left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14028073870946492, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033d6b4c69968365fb9caa71226432d3:ffff005f', 'observationId': 'o1:cd3158841a1434ab77b9990a43d9e00f:00110060', 'geographic_point': 'POINT(-111.939248338248 40.7360367003402)', 'mapsURL': 'https://maps.google.com/?q=40.736037,-111.939248', 'captureTimestamp': '2022-09-29T17:32:20.799912+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Acd3158841a1434ab77b9990a43d9e00f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092022Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7f82bfd8d5edd5b64546dc01200dc529637f65d418782bd1be3047a36a1ab24d7f487588e329bba0222bcca10e6c92966ccf98f8b33a857d21549345f84516f14fe04b3bf489be1076514ccbdfb1189b05924d48b5d07049e1590e9e80337800357fa4b2507937136d7eda772535b7c9fe8cc2f39cfa67127224c7abaa569a93fa0d3fe7a69d01608d591a74c6eeaf47f9742f56548e094e850c20c24e07bf00363ab766ce727470f1a7951fe13c11ca9e0a0291ef5b1ba3b1f14fe6a8de45e5d65f73d3c8f7202d56a8d0df1fdac7f6919dee8efe3d748a19273bbbbb817ec267d4dbdaa5abdac2a7f7d4f1071b8c08e4c22ed733405bcb0b5f877bf36fb463', 'category': 'No Parking', 'description': \"The sign says 'NO PARKING ANY TIME' with arrows pointing left and right.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1838.0, \"x\": 316.0}, \"hi\": {\"y\": 2123.0, \"x\": 484.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5761: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:0fb250694325016e925caefee8b9d8bb:00110060\n",
+ "Processing image 5761: timestamp=2024-06-13 16:25:11.298810+00:00, observationId=o1:0fb250694325016e925caefee8b9d8bb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18497306872636843, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=2041, total_token_count=2119) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:0fb250694325016e925caefee8b9d8bb:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2024-06-13T16:25:11.298810+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0fb250694325016e925caefee8b9d8bb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092120Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=162d5119cbc8ed91fb0d21b2681c19859719bdeea2440933dd9383c561fb2cc19b5789236b63cdb3cf764302c98dbfefd6c5ac2c318e02c088feb1413b79805827f2bbec73d1e8bb5fda95e0d59da7bfea467668123b90502554087262c768dc151c18314308c7b36f0fb34e8db8599ca5ab837936521f18099c228dd6ea4057ed212785af2caed346e07d30d9f78a6aabbd207c98f684010b7cb2493761933a9fdf5630d6e60bbf12fcf0059a6711834220d3700a1d61fce555ffe215aa64e2047cfa54201fd8de3fe818d617f0cc03442fde52417a2e38877f3e603f830277968a0841f0b01aca3a377a5d8aa0cfbcb89707c52461a06969962ee8b813005f', 'category': 'Pedestrian Crossing', 'description': 'The sign is diamond shaped, with a white background and yellow border. It depicts a pedestrian walking and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2797.0, \"x\": 2385.0}, \"hi\": {\"y\": 3077.0, \"x\": 2622.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5762: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:f3d651a4fc06561b3b26f67607eab0e1:00110060\n",
+ "Processing image 5762: timestamp=2024-06-13 16:25:11.606479+00:00, observationId=o1:f3d651a4fc06561b3b26f67607eab0e1:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2644783020019531, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:f3d651a4fc06561b3b26f67607eab0e1:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2024-06-13T16:25:11.606479+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af3d651a4fc06561b3b26f67607eab0e1%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092119Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=45ef55689b3c8fb5ba3078611f2779f17637f32c13be7a50146e1066652525d8797f9ffd203e60ddfa5b33bd2e45979f000730ec131b37978db9a8f6b08fdb7d143c3521cf264591c9dff5ccbf28c1e0dc81f85007a79a9098c0b29cbd4edeaf9def024c7fd08b4d2952f40cae546b4659bbd034862485fde5cbaeba8c29fff418842bd1ee38788c78acaae2bebb6b0a31300c47802dab3c03a55b66e9286e5fd9d749a5ac367033e38ab548545ab4eee2f55e2aea6b23ceb62aa751c20a457fb6eeb907c6593563f6c6cb2078a767b183910f833ee2d8bb12429c16fe7724b141e4d3c3def17efe5edc2e48fffcda1fbc231d1fa08657486b1a3b6219437a3f', 'category': 'Other', 'description': 'The sign is diamond-shaped and depicts a bicycle and a pedestrian. It is most likely indicating a shared pathway or crossing for cyclists and pedestrians.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1695.0, \"x\": 618.0}, \"hi\": {\"y\": 2082.0, \"x\": 827.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5763: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:827270753b65a03317593df29dbcbacb:00110060\n",
+ "Processing image 5763: timestamp=2022-06-22 21:39:36.956160+00:00, observationId=o1:827270753b65a03317593df29dbcbacb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10613278419740739, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=2041, total_token_count=2103) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:827270753b65a03317593df29dbcbacb:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2022-06-22T21:39:36.956160+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A827270753b65a03317593df29dbcbacb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091322Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0aee5efbe14dabfc5948cc0ffc14d7090a9694b0a9aebbb2811f41c04fc7f338e812d6c9d8d9478a4c1806636038099c7fc52b05a70b2c55ff1562cfcbdb209098579fa5d3bb175044776428475b9c674ef6514a367c68612a65424b22e29885d39c5242c947914de2b77fdbdf7951aa459edb0375130449b915170c69e3150f49934935a8b23ad77cf4024f017b85fce9b736dddd92f7ff4e4cfee475eb57d6f148d87059f08212f62a9c4399695d0929a4ab9120a4692c61991938a1535825d3e1b7a904ecb9a01cda56bc22e7bf36cee10391b17c4f0b6c26317aabcca047a6b5cf89769cf148fa4e5ffca3afd33e7c70655d9f76a4fadcab703a605eb0c8', 'category': 'Pedestrian Crossing', 'description': 'A yellow diamond-shaped warning sign indicates a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1683.0, \"x\": 961.0}, \"hi\": {\"y\": 2059.0, \"x\": 1144.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5764: trackId=t1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f, observationId=o1:094872e96b54939c862e66459759b8b7:00110060\n",
+ "Processing image 5764: timestamp=2022-06-22 21:39:36.576098+00:00, observationId=o1:094872e96b54939c862e66459759b8b7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Pedestrian Crossing\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2751568906447467, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3073, total_token_count=3141) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Pedestrian Crossing', 'sign_quality': 'Good', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033ddc2cc82dcff593872b7d4f9b0953:ffff005f', 'observationId': 'o1:094872e96b54939c862e66459759b8b7:00110060', 'geographic_point': 'POINT(-111.925650736196 40.7650798998035)', 'mapsURL': 'https://maps.google.com/?q=40.765080,-111.925651', 'captureTimestamp': '2022-06-22T21:39:36.576098+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A094872e96b54939c862e66459759b8b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091723Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4d523c08338e5f536f73bef5337a3048b3d2559934517f7dcfb0b410b1161987bfe255733cb5502c6e46d01bbf35eeb227af542ccc9a94ba7fccb4e638be7e51dd7c30be32ed941bc0237e8b7e1087434535e30afd76c122b3288dde7f07bbde1e0a841da12aee50438766950cfb671f1f271df05309132b45ccc80b8b2bf98071a0da4e3a20916c9fb7080cfe0a32c5dacd9b0ba4ef83ff2ef034c7b289db38a3cc28ba299d3090411858f7ac10a2b6f2ba75b957ac10ca8eb415dbb4e2fe207f489929b9c87bec197eacbf6d2ac9663e3faa7a31d7ef4f15ededdb257ef45854f26d7cd7c2cdabc4f6afcfe8eb860dc8428a29d74f19a69f130999f81399be', 'category': 'Pedestrian Crossing', 'description': 'The sign is a yellow diamond showing a pedestrian and a bicycle, indicating a pedestrian and bicycle crossing.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2787.0, \"x\": 2565.0}, \"hi\": {\"y\": 3081.0, \"x\": 2808.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5765: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:f8660dd1256fbd938f71592ec869bb0a:00110060\n",
+ "Processing image 5765: timestamp=2024-02-27 15:46:57.674575+00:00, observationId=o1:f8660dd1256fbd938f71592ec869bb0a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2733655036250247, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3073, total_token_count=3152) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:f8660dd1256fbd938f71592ec869bb0a:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-02-27T15:46:57.674575+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af8660dd1256fbd938f71592ec869bb0a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4de24da69f8cc279da40dbaf38a6ef017a77d82e463ab94cc21f26299100a8bf8e30e6814bd6a1e0fd3afbe6a6e2670cdd082daa48ba888355ae1cf7fdbeeeca9af06a349d1789e7946de68844090d767eb61bbfa8818d78252bcd060fd8043f485ad52c3d955cb08c0f9f916aa6ca1179321c38fc1d235f5998a920ad5d1ec7f7d884054dd3a50db1e0492e919cfd4eb69ed5a42ff855f4d3aab1e848b74dbe1acd8e64be4e4e37122449d0cef4f9a96441c1f0b91ecc3ee2fee9ddbb1bd08d0ce835d15869b87fc6a86b0c3fcac9adf8b4bbf25b742cdb72150aa5fc4bea58e257288e94bfb928cfc66f99e086bcb9a6637732506ec32ec4656942fb037702', 'category': 'Turn', 'description': 'The sign is a Chevron Alignment Marker sign with a yellow background and a gray chevron pointing to the right. The sign indicates a sharp curve or turn in the road.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1943.0, \"x\": 2837.0}, \"hi\": {\"y\": 2275.0, \"x\": 2934.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5766: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:4d49dbe80f83135f5e564a1db110d973:00110060\n",
+ "Processing image 5766: timestamp=2024-01-22 15:02:08.869779+00:00, observationId=o1:4d49dbe80f83135f5e564a1db110d973:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1990754915320355, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:4d49dbe80f83135f5e564a1db110d973:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:08.869779+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4d49dbe80f83135f5e564a1db110d973%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8b936bd9ec02172a005d04f3f1da35ff0a82288e41f344afc4eebd0b9e78aaab56e42ec74dd9356f93827ac164aa64ef3d4df432ee8a0936547437ced7047f7a77723e665511b84c3aba965179cdfa82ef1abdfbd61f6e20e08c4cd0afcb9cca8a3860b6689ef2a3bdc77ea547eae46afc5dc4392d09bc402550a6ed0bb76c957456b1c0f4dbfb7f5f7f19518a60978129417af81611001c50f55912810e00aec7c0a8510267a8904a590a41a24f4fc10c96b7da03730f190d77247ba13626d6e6dfc7480cbdc5a1067e983dd2e6743eafc8d30aa6392887ae85fbe7d2d8b0d0fab5e5378e06a63174a2e8a730adcba4a62519ea5e12004ce3ae3490dd443e14', 'category': 'Turn', 'description': 'The road sign is yellow with a black arrow pointing to the right indicating a sharp turn or curve in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3011.0, \"x\": 2403.0}, \"hi\": {\"y\": 3236.0, \"x\": 2551.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5767: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:2072b9e19133a60e77b53eac2bded58d:00110060\n",
+ "Processing image 5767: timestamp=2024-01-22 15:02:09.573768+00:00, observationId=o1:2072b9e19133a60e77b53eac2bded58d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is orange with a black arrow pointing to the right, indicating a turn ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.08473005145788193, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:2072b9e19133a60e77b53eac2bded58d:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:09.573768+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2072b9e19133a60e77b53eac2bded58d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=958fe6f9c7d2a7a2274a2c5c98c2218aa20867036b97d8b27cf5ad72c3cd0f8e18ccafebc5a6392ca9a657688151d25540676bcacbaf251b498208d4a19b93ebece764f1d2a982cecc090b252db84922c6a930a0ef0178bf95aeba7323485ce33aa13174b2865376482da83af8cda3cb7d2dfdc919cf5c92e01931b3435adc735994dd67c413c9c822f616a5d5a442e360e4e569c36ade089d582ae2bf50ea06dd922595d64c0969f11bf17726401d89c46bc918a6223b1248e059ab71a19184d9fe77511a4138452494c1a17993a0df7021e6f6f25b1f46a99e579b1dc7cd18694c89d874cbc217df008de64e7660c29537bf1a64a3e696bcb8a1579b3c5a27', 'category': 'Turn', 'description': 'The sign is orange with a black arrow pointing to the right, indicating a turn ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2813.0, \"x\": 735.0}, \"hi\": {\"y\": 3231.0, \"x\": 941.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5768: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:6f4ae218f0750513918980226c62f737:00110060\n",
+ "Processing image 5768: timestamp=2024-01-22 15:02:09.221658+00:00, observationId=o1:6f4ae218f0750513918980226c62f737:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14377388272966657, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=3073, total_token_count=3143) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:6f4ae218f0750513918980226c62f737:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-01-22T15:02:09.221658+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6f4ae218f0750513918980226c62f737%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091719Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=22f1c1e72fac5ee1a8425d619ab7c5e22566e944d175292027a94f48cf383a10b361379cec10630377c0f2cd2b4c73289548bb3c30b6810627326671af768be63ca5696de51a77b932cf2feb41218b65cc96d6c2e3fc3d5a8c9098c8c4827fa3228783c0cbb5e2329739d34d0e38ec099e74d6ebe48b1e4dd97ee3ef0956ca5223f35ab029d7ea6283d77f1bd8d2116c72711ec4399452a2a1661e1cce46ee9d75ecd42493494e044f9936764b2ae684831064c173bb6768a8094c0c4b11fe3c24fccd856f4bc0e6313ccc40a5a93c62d35349e90ccac4be4607107b26176452f90d815c06545bbf65d4f5a33252afa83c7e4e019c64633ceb6915323b7bc5fc', 'category': 'Turn', 'description': 'The sign is an orange rectangle with a black arrow pointing to the right. This indicates a turn in the road.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2957.0, \"x\": 1791.0}, \"hi\": {\"y\": 3251.0, \"x\": 1973.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5769: trackId=t1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f, observationId=o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060\n",
+ "Processing image 5769: timestamp=2024-02-27 15:46:57.338418+00:00, observationId=o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18991689539667386, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2557, total_token_count=2624) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:033e5ed45b781cc9d45769608d4a9aa5:ffff005f', 'observationId': 'o1:fb55a6dda777840dfd4c8f5d58b0c7e4:00110060', 'geographic_point': 'POINT(-81.95246666173 27.9951889861199)', 'mapsURL': 'https://maps.google.com/?q=27.995189,-81.952467', 'captureTimestamp': '2024-02-27T15:46:57.338418+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afb55a6dda777840dfd4c8f5d58b0c7e4%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0bf88800e2932a8abe79c912a0c14d1f7d06158d04e31656a76b73ccddd5527a9aa85d48c2a4ef23f433b12c64b8839b9098e68d5fdb2066c172df2a5bd897aa327bf30b022e4883ba29f1ae3b98df87fb2218115f6dc2926cb22ecd5cbc6fed837de0f19a39887ff258d7b5d85625e2a06158311ed01b1ba58cb63a1cffe77316b076ff1f5831341daa634825e7dd5659389051ecf0d116947a3c04cd028c9cf2883a41738991b4c309c1eaf44135d54c504b68cd0f108a72b0b80d376e17b841a668b988860524e7f7bc1323eff31de0c8218795273a89d6df5b74199ce64c82b174f9d0c7d95d23b578c6741e9236778e6d67842f1a9f4f0674e8684dc923', 'category': 'Turn', 'description': 'The road sign is bright orange with a black arrow pointing to the right indicating a sharp turn is ahead.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2976.0, \"x\": 973.0}, \"hi\": {\"y\": 3233.0, \"x\": 1101.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5770: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:d214895306e2eb710d4210795223d1d3:00110060\n",
+ "Processing image 5770: timestamp=2024-01-25 15:08:33.232783+00:00, observationId=o1:d214895306e2eb710d4210795223d1d3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows street name signs reading \\'Conrad St\\' and \\'Shakespeare Dr\\'. Both appear to be in good condition, with clear lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17795485178629558, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=3589, total_token_count=3664) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:d214895306e2eb710d4210795223d1d3:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:33.232783+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad214895306e2eb710d4210795223d1d3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091418Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=60c4a83dbfe598cdfc8d0ee55c7c49ad3b635c4b58e32fabf3b1f78603718b0a2fcf533554edc60e945ba6ac5e6ef660022c2b3b968fb69a5b640a1799d26c84e176ec84e36772430f26b8a7b53fdf0fb4ce7a7c951d98623c9fabe894262f34855d8b350094107f3716026c1844853a9281d7e41781a3be27f0c452b0ebc0b98f7ea89725c133de3e8e7e366a3e20c4355f447ccdf8df08bb08f40860b324d1c00a52b87ee5668a2bc5ea61b57e3251fb03d16dd2350fac0cff32da794021c9f47ee904ac3f3c155136f1ec63fce59dcc101b33f7afb7c866f64875dd78fd0ccb0dd35049257a504ab1a768ab5968d04d56bbdfac1f4fe3c681c34bdc40b9a6', 'category': 'Street name', 'description': \"The image shows street name signs reading 'Conrad St' and 'Shakespeare Dr'. Both appear to be in good condition, with clear lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3110.0, \"x\": 691.0}, \"hi\": {\"y\": 3235.0, \"x\": 1250.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5771: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:c76dfab36cafe9504444586a5b2d5498:00110060\n",
+ "Processing image 5771: timestamp=2024-01-25 15:08:20.225262+00:00, observationId=o1:c76dfab36cafe9504444586a5b2d5498:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign reads \\'Shakespeare Dr\\' and \\'Conrad St\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13033916836693174, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:c76dfab36cafe9504444586a5b2d5498:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:20.225262+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac76dfab36cafe9504444586a5b2d5498%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092421Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7eb7585d3334a80bb3320a76653804180721b952e663c61647048476729cb0395a76c8d306203660de3aefcff05202695952d2cbded2585ec7bfce1f1777f546538e35c514011582af8532275e5fbae00c74f96750543bf4a932bb76ec6796a5389cd5d387db6fdda9a22740a54ac23e3e0b5bf02eda0844ac8f1c90bf3e5df1dc1befeccfdbd50b5935b547b40f46522a51eb929f6f639076f2e9113de51d100d0ca772d094cc816d0af25d411dcef29bee2e44a08e5284bd7e2e8c9baf726492aa4b5a30be883af0182ef9d8c4bd59335c55bc37609454aa1dc631a2deb33284256e1ae66d56dc68f2cacb038c2c6b3c9b0c74a0825742d69e7cf58120d91e', 'category': 'Street name', 'description': \"A green street name sign reads 'Shakespeare Dr' and 'Conrad St'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2220.0, \"x\": 1711.0}, \"hi\": {\"y\": 2312.0, \"x\": 2172.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5772: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:f55d6cef70e3e7d16873193a8f168b0b:00110060\n",
+ "Processing image 5772: timestamp=2024-01-25 15:08:26.841255+00:00, observationId=o1:f55d6cef70e3e7d16873193a8f168b0b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates the street names \\'Conrad St\\' and \\'Shakespeare Dr\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09691818176753937, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:f55d6cef70e3e7d16873193a8f168b0b:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:26.841255+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af55d6cef70e3e7d16873193a8f168b0b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092025Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a34f019a5035878d88e91818ad395b01b8c8ae614ac2a4671e1bccedde0e371fb60c98dddfe82fe84500eac0adcb325b9fdebc53fa50acc826f814936529d797f94fb9e0c64ee69e9af6e774908db294c0e0955f446ec37bd0711c25137c64c5c37bbd4daead5bda90cf13ba5c99cfc254201a77e55b817185dfb8c9796dcb989576722969c945fad8c1e2d74c5bc47c39111edcdc09b51d217b0e83822e1ce0f28b404a882d1d084cded3368ca57e183537da9bd92c8b0a63c62a633bc517204a4ac9c978a738b601bcb66157f6113af8c3a5b7ebcbe538e3197c53dc52dec3bc846b44d4e3939a7092286c29151c8f20d6f26e9ee36f84fe32d188ba5359e4', 'category': 'Street name', 'description': \"The sign indicates the street names 'Conrad St' and 'Shakespeare Dr'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2212.0, \"x\": 2538.0}, \"hi\": {\"y\": 2310.0, \"x\": 2978.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5773: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060\n",
+ "Processing image 5773: timestamp=2024-01-25 15:08:16.733229+00:00, observationId=o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A green street name sign indicates \\'Shakespeare Dr\\' and \\'Conrad St\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10483388746938398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=3589, total_token_count=3651) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:579f9b57d3560d931f0aa2c9f7f141e6:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:16.733229+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A579f9b57d3560d931f0aa2c9f7f141e6%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092623Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=260737b8d7b1be8826c582d81290a0f634c4d82cefa3b8d39e6fdd7a250066f1ad8f1bdd2c824303dcbdabd22e84b5fb8ed61b401a6de4021ea92088a590b34ab0ecda7584227f9d10c6bfa8da27930baf2c2da1da97b279735510835521fb7374546dbfb725206452d5e59cffaa0d3bf6bf2fd3bc0beb529d3e07d2e4d82abb258cba2ee6e172dffbe03925b9d848e11744e97d0ce1b36ff1fdda91247f7949124446afd5e15dd05e8e885503a49490b5e858a8155473700d43e9dbce44c2336810452b5419be8ceafb1bb44f2c32a9e4d7239633eccf993a8dd051829f702948f0421cdc791e747a7816dd0b210bce6d19c6914166b6e76071c8857558d7bf', 'category': 'Street name', 'description': \"A green street name sign indicates 'Shakespeare Dr' and 'Conrad St'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3128.0, \"x\": 1277.0}, \"hi\": {\"y\": 3211.0, \"x\": 1657.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5774: trackId=t1:03427e461eb415fc7468f582fe6b1674:ffff005f, observationId=o1:28a92b5036858e4223f02d51ab4db15c:00110060\n",
+ "Processing image 5774: timestamp=2024-01-25 15:08:39.092727+00:00, observationId=o1:28a92b5036858e4223f02d51ab4db15c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates street names Conrad and Shakespeare Dr. It is green and white.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2632504115028987, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=3589, total_token_count=3652) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:03427e461eb415fc7468f582fe6b1674:ffff005f', 'observationId': 'o1:28a92b5036858e4223f02d51ab4db15c:00110060', 'geographic_point': 'POINT(-81.9212913090413 28.037343602994)', 'mapsURL': 'https://maps.google.com/?q=28.037344,-81.921291', 'captureTimestamp': '2024-01-25T15:08:39.092727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A28a92b5036858e4223f02d51ab4db15c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092827Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=37ec236fd7ce48ca81f590a94ec88d46d4ca4e4e8c461e153d9e9c4fec7f3f8e39d714f80adc7bcb9f473724bda9d6a41dfb1e7f5551182435bc90d0c7b8a04d605918074caf08c51b4eb5c2890548d4296a52806e6fbd4faa1207bd5cc24cf3c5843a80b40a4a0e35ecced6a47e147cf9115b494cd7a662503e821778f84451806e304978f8f0cc4110219a4d80df6cb32fe577ff13e23e195e124e71085e22deafe37d17a1259c98e539e70f39682a4299badaa04a997bc1bf3ae1f5bd457edce4c14591ee88ad9c3a19710ae325cc781156a8c29aa74e8e58b9875ac80825bf9d8a3cc2b943675ad75c6130d857b47b47cead1f8f8445549ecace16d44181', 'category': 'Street name', 'description': 'The sign indicates street names Conrad and Shakespeare Dr. It is green and white.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3039.0, \"x\": 3271.0}, \"hi\": {\"y\": 3120.0, \"x\": 3558.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5775: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:3f3d77d167ea60244b6046dadbd30f4d:00110060\n",
+ "Processing image 5775: timestamp=2024-01-08 19:18:26.341379+00:00, observationId=o1:3f3d77d167ea60244b6046dadbd30f4d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign with \\\\\"SPEED LIMIT\\\\\" written on top and \\\\\"25\\\\\" below it.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.17686954896841475, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:3f3d77d167ea60244b6046dadbd30f4d:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2024-01-08T19:18:26.341379+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3f3d77d167ea60244b6046dadbd30f4d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0639939dcd419798f05dd9a5ef91fcbfb2813968b9e1b37110726eacb03d85156c3f018db3e7b43d4714bb4d7e351e746407c562f4b69066abe20936aef91ef0feb16e7c2477d03b2f4d2e2899ce53c5c293b3a471666be62698a2ee203bd31ed178a0ca7b85328396bb334c6f5b5f6cc1cc49279f26e606e98c2497c2f86d16918db2309666b23d4a252634886a3eb816004d9d646f87be23c880998de0f229a90a12f22078fa1785a4bddf486088a38ca9f81bf4e9d1feffe35e978741a520c87a543c517c3146ed7bbd997a0d120ec07b954f920fd9c88ed815a27f53c79348b64085c67b548fb54897812c79fb2cee03a8c43fcb548fdede6c8c92555193', 'category': 'Speed Limit', 'description': 'A speed limit sign with \"SPEED LIMIT\" written on top and \"25\" below it.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3127.0, \"x\": 1689.0}, \"hi\": {\"y\": 3431.0, \"x\": 1904.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5776: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:5945b987ad3ec9059869bc56dcfa793a:00110060\n",
+ "Processing image 5776: timestamp=2019-09-04 18:41:49.818009+00:00, observationId=o1:5945b987ad3ec9059869bc56dcfa793a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16819599883197106, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=73, prompt_token_count=3589, total_token_count=3662) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:5945b987ad3ec9059869bc56dcfa793a:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2019-09-04T18:41:49.818009+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5945b987ad3ec9059869bc56dcfa793a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090927Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7cf611579a5e20553576bc69e325b71c1f4ce718d9c0f67353a31896c0b033207e586a37655cb88a7f049c90b6fd3dff0dd3b94d0b91dca9e16bb503e24cdf8d19b41aab05dcc2c6a0a27fda0f77d1f1f0b2db685d7540023934e3830b88f86eb726d4b0afc6860d25190a18036e4f95a07d0de58f9c7f9adf1881cbfde34ff8a377a69fcd411ca30d28bd586b33fe20fef6b57284fffd68ce4fe3f938995b1d96e6841a391240d23511c6752968d3cab0300b8e84a908b2fa7225d0e053878d1204659ac442ee42f0f21c8a95796c63a697a1e9848bb7c2481356279bc4ad62a9d25271deb9a933bf07f6037fd9ae03b82ce03f6f7084f9451db5d45e8dde96', 'category': 'Speed Limit', 'description': 'A speed limit sign displaying the words SPEED LIMIT above the number 25, indicating a speed restriction of 25 mph.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3024.0, \"x\": 2484.0}, \"hi\": {\"y\": 3474.0, \"x\": 2724.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5777: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:56ee28ca6822c5159c7133340acfff5c:00110060\n",
+ "Processing image 5777: timestamp=2024-01-08 19:18:26.797347+00:00, observationId=o1:56ee28ca6822c5159c7133340acfff5c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A rectangular white sign with \\\\\"SPEED LIMIT\\\\\" written in black at the top and \\\\\"25\\\\\" below. The sign appears to be in good condition and is mounted on a metal pole.\",\\n \"image_quality_notes\": \"Image is clear.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2800474166870117, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=86, prompt_token_count=3589, total_token_count=3675) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:56ee28ca6822c5159c7133340acfff5c:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2024-01-08T19:18:26.797347+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A56ee28ca6822c5159c7133340acfff5c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090921Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2a6d45b6a29c5bc6ef869dc2af236d94d65199140034f78a0b3f29b161cb1ff619d31b80bc098eea6abaf3e5d4fbc0889c5a3f1ed1caaba498e4451710a9bc2b781916af582cbec6e3a8f413aa90578fbef459a448cbb0276d9316a5e50e154061a222ae52573379508a6fc986175cb8c37481ee3b77ece26bd3126c793d43613b1a3f4962e074a81dccbcc7a6e35052fc3f936b1718c3caeaeb184bcdaff84cfdf6a05049e7b18f01021e2beb5f6c74c26bb369031311361632ead35d137bc86320bc1283f331170ab4bb9fc22d29dbbdf0df964be0db24408ef454ab0df56e31d3e41e2a23628694c2c325630f71da49a86e1be9763fa2196ccd7f8296d917', 'category': 'Speed Limit', 'description': 'A rectangular white sign with \"SPEED LIMIT\" written in black at the top and \"25\" below. The sign appears to be in good condition and is mounted on a metal pole.', 'image_quality_notes': 'Image is clear.', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2072.0, \"x\": 683.0}, \"hi\": {\"y\": 2702.0, \"x\": 851.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5778: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060\n",
+ "Processing image 5778: timestamp=2023-08-31 16:28:32.032072+00:00, observationId=o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a white speed limit sign with black text indicating a speed limit of 25.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10950571031712775, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=3589, total_token_count=3656) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:2c4eda5ecb924f6028e4c25b8f23049c:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2023-08-31T16:28:32.032072+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2c4eda5ecb924f6028e4c25b8f23049c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091227Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4932cd5fb31dacb7c80abe625ce600bf36329001f5e7055fa4fda64fb3c64915b64e1000536898cc99c165321f89ebbc5f29792010caac91972af595b84a18df786c862059c6d6a8608d7e645db93af263647ec2152250b7eb27f8d3f7590b6c9fc2a6d3040274b349c6f6ac58c66ba5cc404164ec5b0574428e9821903d6d84a1aad6cdc4a6c559d9d0b826522a858eae3c23675b9b8ebc8156a71d870f6cb5103fa1991c54903bdbffb468a5dcddebbd098323b468479b7374cbf59b8a0d584bdeee49c67afe6893454322b92685ce58f071ffb72758b23dfda4b009dc9645934c9c0e3c6354a23f16246cd19fe8b6541bd439b6830d4b058203185acbe54c', 'category': 'Speed Limit', 'description': 'The image shows a white speed limit sign with black text indicating a speed limit of 25.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3154.0, \"x\": 1938.0}, \"hi\": {\"y\": 3471.0, \"x\": 2152.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5779: trackId=t1:0342a3bff56df8b879ab0ae99d744de9:ffff005f, observationId=o1:8e198d51450fa31df524b3a8863202a3:00110060\n",
+ "Processing image 5779: timestamp=2019-09-27 18:01:14.595300+00:00, observationId=o1:8e198d51450fa31df524b3a8863202a3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a speed limit of 25. The sign appears to be in good condition.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.15314409312079935, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=68, prompt_token_count=3589, total_token_count=3657) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0342a3bff56df8b879ab0ae99d744de9:ffff005f', 'observationId': 'o1:8e198d51450fa31df524b3a8863202a3:00110060', 'geographic_point': 'POINT(-82.010609110331 27.9786055284184)', 'mapsURL': 'https://maps.google.com/?q=27.978606,-82.010609', 'captureTimestamp': '2019-09-27T18:01:14.595300+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e198d51450fa31df524b3a8863202a3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091122Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7ae82fa8310ff65240f0aaa2855d24a2c5c9c6ffb4819b5151aef135ee6c6017fb43a1e24400348c1a99c30b8dd488da7dd7a68dd0de9ab18e7831dd6514368843242104e8c5f86b6f36b294fbaf1dbe3721d6a27eae283f0365e7d4d417faceb1ea982154d4261d32be3ae5aa18b424226fe3ff80640319f10ffc49096e0b311b2181afe201427786ec8daed6980982fdc8ed9b0f0f4bacc7ce28e9b45fa59216e1e8678f733b23024db3cb88cb2532c15df62623895d5d85a94f69c30910678b901e8988c9408b45967813067a0c5e8d84639f42f1ec76db6c9391d006e9981f810e725e0606a6d0f548aaf4011cb93a7d5500dd98955fbc07434cfe767360', 'category': 'Speed Limit', 'description': 'The sign indicates a speed limit of 25. The sign appears to be in good condition.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3077.0, \"x\": 2136.0}, \"hi\": {\"y\": 3482.0, \"x\": 2383.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5780: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060\n",
+ "Processing image 5780: timestamp=2022-06-01 17:24:48.366811+00:00, observationId=o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a red circle and diagonal line over the letter \\'P\\', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14813525767265995, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=3589, total_token_count=3668) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:57fd3c1e0751fdcaca4a4ac3370f592c:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:48.366811+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A57fd3c1e0751fdcaca4a4ac3370f592c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=42265b33142a152febbc32cce17bf5e354ea35f3ac4e309cf50f97dd5a7a6bcb40333cb43ccc5a08ae403f2259075bad0d5a1f1898419c3496fc1bd1d1e293fa2d8bd98fd9d42c862687b0762bde75ff8d4f3f7457988c12e712f0635be0313ee52b0f2f30246335f468c36bf3d28c09f8fefaa2f31e3d2cf10fadc9a9a9ef6106f5325b392f723416e90b9880618d027179cdefcfbe51eb270fae1094a6150e250719163c0e3cf2f70d796fdf4097f93de9c3d5cd0a41657fef7ca8e0f1c0263bb4a242fafccf9de83f34a2c62860e865a8aa52793a38bddaf738a99fdea41b94bd3b720b6c6d15ee8906465e8c1c945474cadf5c944b051a50a8c4fb3b4a90', 'category': 'No Parking', 'description': \"A sign with a red circle and diagonal line over the letter 'P', with red arrows pointing in opposite directions, indicates no parking is allowed in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2168.0, \"x\": 3150.0}, \"hi\": {\"y\": 2441.0, \"x\": 3303.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5781: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:db70d419f8aa3c2b249e7187e8373e84:00110060\n",
+ "Processing image 5781: timestamp=2019-06-04 22:02:04.226973+00:00, observationId=o1:db70d419f8aa3c2b249e7187e8373e84:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign with a red circle and diagonal line over a black \\'P\\', with red arrows pointing in opposite directions below the \\'P\\'. This indicates no parking in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21022042995545923, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=82, prompt_token_count=3589, total_token_count=3671) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:db70d419f8aa3c2b249e7187e8373e84:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2019-06-04T22:02:04.226973+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Adb70d419f8aa3c2b249e7187e8373e84%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=386ead9a0b52e9cc0a9ccc852013389940d07eb1174ce073dd2908b5d1c3578fd76c7b95cf772e1d7e2c8928e4561a32875f04c5d1402d4eb3db76395be6d95a7b7085d98fd067257694109086aa3038e889766c807a18a8ee47d028ea08c3595c823236a6c07808fdd47db2bffa22b87fb8c19b331b5c6d6fd993fc681a7d6d80ac6e1da6a6fb366e24a82610a72caf007b49fed49590cf02ad54e736638d4d27b7b0723036c50048be68803d089ac4bbcd382c63bff6a0e846e031fd5d8f398aaf8ba271920fd2b34f06a2ee55879bcda1821ae48b1fff8f9d7beb3650c422272df710c1d472e0e3c438a7138da1522a265cd533a7dfb9288db5adfb2efe8d', 'category': 'No Parking', 'description': \"A sign with a red circle and diagonal line over a black 'P', with red arrows pointing in opposite directions below the 'P'. This indicates no parking in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3025.0, \"x\": 2250.0}, \"hi\": {\"y\": 3339.0, \"x\": 2425.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5782: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:62438501835678b409815d8738d8c3fd:00110060\n",
+ "Processing image 5782: timestamp=2022-06-01 17:24:49.302735+00:00, observationId=o1:62438501835678b409815d8738d8c3fd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter \\'P\\', with arrows below indicating that parking is prohibited in both directions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3220576180352105, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3073, total_token_count=3163) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:62438501835678b409815d8738d8c3fd:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:49.302735+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A62438501835678b409815d8738d8c3fd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=6d197e7cc79dc7ce28512a719032daaf146819645951333a44c35d094f3f97a2b956a27cee41255b01eba9d640ef3905afc52fe818119fd7d29475ff5a4eb32d1458f3ed45f921fb15d50a14490211622893b5f095f5f9f74498ad8baaeafa2125d47478b261a82a7d8e5920db9245d2b2e1d7d3a55214e9a76fd054a331dd5058050888666bc9b1af901c740b82a6b5364276b3360fe56a65baa06430bd079514d15dedc50e4ff5c9d7634d9f493514bb6bd0db3ed30ed23d2ccf39684739985d66bb9e60c457c16d90f7743eca9f30ec475c98d6aac36faef784c6869dbb5cfe095940c854b1ceca6887ad5620b500d4ccb31f35106cb5eb09afd9ec1e7d91', 'category': 'No Parking', 'description': \"A no parking sign with two arrows pointing in opposite directions is visible. The sign has a red circle with a line through it over the letter 'P', with arrows below indicating that parking is prohibited in both directions.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2147.0, \"x\": 368.0}, \"hi\": {\"y\": 2433.0, \"x\": 546.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5783: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060\n",
+ "Processing image 5783: timestamp=2019-06-04 22:02:05.822868+00:00, observationId=o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36539652408697665, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=3589, total_token_count=3667) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:ec2aefd2b9f8b9f22f67244d60af62b3:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2019-06-04T22:02:05.822868+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aec2aefd2b9f8b9f22f67244d60af62b3%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091121Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=521a744fe48d60d4c93b3adeb1ab58cee8fec514de6d17313322682132dd4fdef83cc48c8e7023294e262479f27789cc0bb60678c7840fa961ff8b36fa44799b06acc7c3a71d4b2da46b70763475820055a5383b2b0b064da1a5b8ebda9b6fe85c626186baf8b2eab7e0d5071386e2ff3d105f01a8956f41c3e65598a6866092eea8050b1a0bdee7167d475229a64c0e157ce31afc7e4de381ce8d117433763e13adde7cb3dbb68cdb042bd283e5c84f16b51b237d5eb3eb27ac50da3a504f86c02cca2ba5982e4a272be1453c16e1fc068297d01049397ee8fa01d749d38349c7d1214c1dc9c35f487a52caeb771dc237da6714cbbccb91134462140b46ad8a', 'category': 'No Parking', 'description': 'A no parking sign with a red circle and line through a P is visible. Underneath the no parking symbol there are arrows pointing both left and right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1952.0, \"x\": 2924.0}, \"hi\": {\"y\": 2451.0, \"x\": 3154.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5784: trackId=t1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f, observationId=o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060\n",
+ "Processing image 5784: timestamp=2022-06-01 17:24:49.302735+00:00, observationId=o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows a capital letter \\'P\\' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.30272657606336806, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=90, prompt_token_count=3589, total_token_count=3679) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344ae88d3553dd28d2a1364c8725f4e:ffff005f', 'observationId': 'o1:1d121203b9825fc22fe4a2a2f5b91ae2:00110060', 'geographic_point': 'POINT(-111.904123281799 40.7698086384677)', 'mapsURL': 'https://maps.google.com/?q=40.769809,-111.904123', 'captureTimestamp': '2022-06-01T17:24:49.302735+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1d121203b9825fc22fe4a2a2f5b91ae2%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091228Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=471fb5ba617ccf81387cc83d6fbfbc566aa21483f394d2c1a9bc4040a1c343ada27d8bf084c9b72579a0626d60208c91cfe1fbad40175c5fe3d97787cdb816540ff44b898d80bc6e55042c9d2f248bbe2950ce833080339db8bfb286c35d38ddd6ff8f8e129fc34bf2e1f28321525c74a42a6bd7fbbdd6f67b16b9ae458d7667c95b315c019d5b86701baf0515bf95f001ec95347ba79fd97818321df2307bf9a6627f3b3c235f4a97f8f2fe2982b6097773eb0dc0464755e5e0094b6f114506cc5a2fa96d8a1f65e02c946953e6c7be793b279fa80323203158aae0797d32f514114ca5e70182465f2e1a1de7ced64f4a491afa915b47ae2aa2779b4c696d69', 'category': 'No Parking', 'description': \"The sign shows a capital letter 'P' crossed out with a red circle and a line through it, with arrows pointing left and right at the bottom. This indicates that there is no parking allowed in either direction.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3022.0, \"x\": 3400.0}, \"hi\": {\"y\": 3307.0, \"x\": 3574.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5785: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:bb484d1eff2abd2af3945eeacb3c286c:00110060\n",
+ "Processing image 5785: timestamp=2024-02-22 14:34:02.020978+00:00, observationId=o1:bb484d1eff2abd2af3945eeacb3c286c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a \\'No Parking - This Side of Street\\' sign. The sign is white with red lettering and a red border.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14710869660248627, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=3073, total_token_count=3147) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:bb484d1eff2abd2af3945eeacb3c286c:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:02.020978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abb484d1eff2abd2af3945eeacb3c286c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091324Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5f56716eb34219c909923081a5e99d49a77c3c03a2cf7d838f376d961f0ab75f3b61c725a1a5506a782c3f17daf773427e74514ef7753d53215be7b83a7a75936ce20a48ae9c4cbbd9fa46d9bd250e846d12008a92d71fa159773538c3c7c880e2423b208b04e12ce20c53b476acf460c3294e8f75e8eae9b826d0b367ff091980b64c59179dd1a1e9c79d1e1ba0d4bd48ad14ec7bd2389bdb6d3df15e540fbdc7e52e0a1ec987bff0442b6c174cf766190f075d0c5608ba1f5253eebcd8283c20d6adef40c211a9d15194e21cced6472070043b2df03b85f88b3127ab7d89da75778a843b156b6568c2abf60f7eca0e8eedeb962bf91f41be9c65dbe59ac1db', 'category': 'No Parking', 'description': \"The image shows a 'No Parking - This Side of Street' sign. The sign is white with red lettering and a red border.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3162.0, \"x\": 2978.0}, \"hi\": {\"y\": 3590.0, \"x\": 3195.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5786: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:8d62622c9423b6ab1bbe962370004bce:00110060\n",
+ "Processing image 5786: timestamp=2024-02-22 14:34:00.917098+00:00, observationId=o1:8d62622c9423b6ab1bbe962370004bce:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'NO PARKING THIS SIDE OF STREET\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11474329738293663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=3073, total_token_count=3132) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:8d62622c9423b6ab1bbe962370004bce:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:00.917098+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8d62622c9423b6ab1bbe962370004bce%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=473f6e28950c46540bb1d22bcc98cdd0cbc786977b4478d191b42712a341a18b208a0aa789e27cdec4ae1d1fad36e8e26f9d24a1ea24114dc4dbd8f915ec1f6cfe7d5ad43fc0471c2d668005712e74575a83f18a77d8dccb03288ba03a94c7a4ff1a3c160b23bcc459e5ad7ea4f725fd6a884649d076c693508039a46808818109678c85f4bd34b4ae72a3812afcb4d52c355cbb62fe44cee3ce9f1dde7a8accb3e4d03477ab71d113ec7a4f1b36091831d11e60bbedc51ee7b73744403266b87c93493749cfc02134392da58a735c71363965f9ccd88c9a31a510181305939c72d115a8601c8c519d0bf6b896b45fdfb258a8187fa3eb9968e5b0e6ad3310bf', 'category': 'No Parking', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3222.0, \"x\": 1365.0}, \"hi\": {\"y\": 3424.0, \"x\": 1510.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5787: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060\n",
+ "Processing image 5787: timestamp=2024-02-22 14:34:02.020978+00:00, observationId=o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates \\'NO PARKING THIS SIDE OF STREET\\'. It is red and white.\",\\n \"image_quality_notes\": \"Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4183257607852711, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=85, prompt_token_count=3589, total_token_count=3674) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:bbf8309ccafc86f77cf79f367cd3b97d:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-02-22T14:34:02.020978+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abbf8309ccafc86f77cf79f367cd3b97d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092828Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=23e68cdcbd5177d46ff8aff3adc7566fa9e2cc05bc8fe781b2710f3d99b6d20f3e598315e30a5f768c946f69b249e3cf2e3562d1d9739697e189cba3b756046ea53e884757a59abb076f6e4602cb1703ccdc923b0c5ef48a9897d5959849ea1d99628e9ce0d6281098669b351d1eb6723c2b57d3ae53ca20d72dc456ec41ffa4b92d3fa4ead0abae9a0e1aa49b8c1c9d50db09200489ec3b9dd728689b0c38bb3a327db185a0174c0a726395bcba106724999759a1da1e1e46df664726dc94bbaf1ed22df1a68efd85142a05ff3b6e91a7d18c4bfa5891d062580d1e6c4f055ec123606ebc0efdd27483796a33f468e2300b3832264424f39a3720d70755b1f2', 'category': 'No Parking', 'description': \"The sign indicates 'NO PARKING THIS SIDE OF STREET'. It is red and white.\", 'image_quality_notes': 'Image quality is reasonable. The sign is partially obscured by foliage, and the pole is more prominent than the sign itself.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2275.0, \"x\": 0.0}, \"hi\": {\"y\": 2729.0, \"x\": 144.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5788: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060\n",
+ "Processing image 5788: timestamp=2019-07-29 15:28:00.204317+00:00, observationId=o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red and white sign that reads \\\\\"NO PARKING THIS SIDE OF STREET\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.12424423545598984, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3073, total_token_count=3137) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:1a01c3b708ed320cd6df09fa0cd46b24:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2019-07-29T15:28:00.204317+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1a01c3b708ed320cd6df09fa0cd46b24%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093115Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=097891a4b2becff1adfce581da46ae7dc3e5acf2645de457c4b1380674b6e997eda34bcf667fadcd74f2997484ae4c8e487b43a99f8dedc6a1aef2882469b46f7909110be8a4f007dea6b99e8c3bb628b1aff08795ec4b62fd4c5395318860969deb89df551b993e9814c15161238b5be35faa678cdabfe2c835c91e6db19832b77960633ce017fb8bcc8564edac376abc8b3ded3a8a55358059b46d8384b91ffd82fb54bad5c4b638a83dd2be84ae1765e7fe4710de5cd0d9f12cfc66307c66e319a0429c4e0994e02f76a73cd474d07e6182f5a77a33dbf62ed92dc6c6ac90fc4604b923d15acd8a227ea6aa037ea4855aeaf631466069ca404cd0f8e0f62f', 'category': 'No Parking', 'description': 'A red and white sign that reads \"NO PARKING THIS SIDE OF STREET\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3310.0, \"x\": 2374.0}, \"hi\": {\"y\": 3518.0, \"x\": 2512.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5789: trackId=t1:0344de575e4816f9b5122e1bb0863d64:ffff005f, observationId=o1:98a80d0085aacc4d05ff23dd069d7746:00110060\n",
+ "Processing image 5789: timestamp=2024-01-25 19:02:38.538004+00:00, observationId=o1:98a80d0085aacc4d05ff23dd069d7746:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A \\'NO PARKING THIS SIDE OF STREET\\' sign is visible. The sign is rectangular with a red border and the words \\'NO PARKING\\' are written in red at the top. The words \\'THIS SIDE OF STREET\\' are written in black below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.16390385578588113, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=97, prompt_token_count=2557, total_token_count=2654) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0344de575e4816f9b5122e1bb0863d64:ffff005f', 'observationId': 'o1:98a80d0085aacc4d05ff23dd069d7746:00110060', 'geographic_point': 'POINT(-81.9489584058441 28.0413351025812)', 'mapsURL': 'https://maps.google.com/?q=28.041335,-81.948958', 'captureTimestamp': '2024-01-25T19:02:38.538004+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A98a80d0085aacc4d05ff23dd069d7746%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090923Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=73205c8bf5882997ec8d2fbd0a7533f6a246ba32f48d43f82d6a7f0708f00839949b872cb0a81f24597cf7781821cffd8f58f08b8d6e906daef4061b3202962282ff38ced6ba95e13e1d111a97f5bd1acd1311244365e63e0f93ca9a368aeeb7da224f90b0adfc1f2022a282477e2294d23e7c10e01a9d1e8616d9dc8a651464b27d3a7fe1950bf5264e3c1abe323cd7c53b465dd4783f073e2bac5f47fa45d4bac07f9b0a65442ac0985d122e717f1eb3bbbfc5372f05488a96c61dd487d359a8775e90befaea195ee497a76a504017ad43880261c74c8d491508a058ecdfaa27f9953a544ec93d994f5a2f3f60ff8ebc1770badaf49461ad2760f22c12e96d', 'category': 'No Parking', 'description': \"A 'NO PARKING THIS SIDE OF STREET' sign is visible. The sign is rectangular with a red border and the words 'NO PARKING' are written in red at the top. The words 'THIS SIDE OF STREET' are written in black below.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3232.0, \"x\": 2066.0}, \"hi\": {\"y\": 3528.0, \"x\": 2276.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5790: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060\n",
+ "Processing image 5790: timestamp=2021-03-01 16:11:26.268286+00:00, observationId=o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.\",\\n \"image_quality_notes\": \"The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.48192290540011423, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=106, prompt_token_count=1525, total_token_count=1631) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Fair', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible'}\n",
+ "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:eeafebcea9c8bbe63f6831fcd92900c7:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.268286+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aeeafebcea9c8bbe63f6831fcd92900c7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=2ebc124007b59af6f70659811d777aa4a2a4b2dda2d2bde0fb4191a78b41977f0d24bf974ea61187d7326ad0110065904f1dfe8c35d0d8f9d79bcafa34c8825b67cf83f7ce1408842367faf51539ed74c1edcd3df3ed09efc1209d04b71d590587ef1b5cd84a3d6d4086af273e64c81c5b5104b0976b57c42866d852644568cd07882f0b1ec1130fcbf45a5111e9cfb1e998b59294caa8c50c471ebc9635e4c444cf71a029c6eed40c5b669e9e976966ffcb5e32f94a54c311f1ef639edc710ed8c25c925278e1fc5e17c50a91bfd1aa4131f4b12d7cdccd6c2d6efa1e7ffb4bd03a6d204a4123d1122d382c00f51b7a33335edcf8ed14dd8f9b35c87e1eb8c9', 'category': 'Turn', 'description': 'The image shows a yellow sign with a right-pointing arrow, indicating a turn. Below it is a diamond shaped sign, possibly indicating a hazard or warning related to the turn.', 'image_quality_notes': 'The image has a dark bar on the left side which obstructs the full view of the road. The rest of the image is visible', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3134.0, \"x\": 16.0}, \"hi\": {\"y\": 3189.0, \"x\": 62.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5791: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060\n",
+ "Processing image 5791: timestamp=2021-03-01 16:09:31.867244+00:00, observationId=o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2609279685550266, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=72, prompt_token_count=1525, total_token_count=1597) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:54e8bd13f46e1c6cc3a9e486163c0d02:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:09:31.867244+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A54e8bd13f46e1c6cc3a9e486163c0d02%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092020Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=429468b1dbf32fdcd1a714bc2f29bf21602965dd98c308db38cf505894e91179556ed230073822f038a2a1cc3b4622ead1ef247e5bb4557354dab42c9fa33a9f4b18d02c276563c73b610cb1ae5d566a00104dda2f4027ae62d867809b17add1c0feac6ef16dedb7619f93d6032e8b33bf4023a67be2f3dcfc078f202eb928eb61be26986a51be3ea562e06cf705ca116d0245fff5b5d38aba0323450ac526d3dc71014b7441f228728fcf90b0c6d2532753d81a991b063b9e614e5bd51ca203cd1d634556a153ff48b3f321c17fe5b96884847891dd9d9dd57a9d0952cd30159333813c475f23040eec715c9e75d816063371eb0775a514f3066aec13cafc38', 'category': 'Turn', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, accompanied by a diamond shaped yellow sign, indicating an upcoming turn.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3192.0, \"x\": 3396.0}, \"hi\": {\"y\": 3257.0, \"x\": 3452.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5792: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:d36796942b09113eb5fbc7b88f1b1143:00110060\n",
+ "Processing image 5792: timestamp=2021-03-01 16:09:32.207297+00:00, observationId=o1:d36796942b09113eb5fbc7b88f1b1143:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There\\'s also a diamond-shaped warning sign below it.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2708878394884941, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=78, prompt_token_count=1525, total_token_count=1603) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:d36796942b09113eb5fbc7b88f1b1143:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:09:32.207297+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ad36796942b09113eb5fbc7b88f1b1143%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091824Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=1096e8ad0461676d550a91f1cba9fbdb13b2b23278c80576cdc4443f27a59cebdb3ef2ae2b544dec60d29d28739caa5331b774be998856492bc655611964fab9f251bb6565773b91dfdda27223e57451cb42c332f2500ed2016d4f9655abce78fd563bceb3331e40a08fc35947bf051c6dec087c57474131cdf08500f4f12956d31689c11f17324450cee089f3aa53aeb802077d1db3aeb5fb29af17f789ef61430de49c166b0d063bce48cecaa364e2558ab347a84fd7f277f51d75fce84848a2590edd2b813dc5c24f3e51fc1238b0c17b406d78280129fb95d6fdd7edb3303dc0f1b7cbc555a3d3de7d52d83c21f360ac7f43adb50cd7c104f45cc761cda4', 'category': 'Turn', 'description': \"The sign indicates a turn with a yellow rectangular sign with a black arrow pointing to the right. There's also a diamond-shaped warning sign below it.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3185.0, \"x\": 302.0}, \"hi\": {\"y\": 3239.0, \"x\": 351.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5793: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:fc97f8ca63fd181bd6987e71f20ca121:00110060\n",
+ "Processing image 5793: timestamp=2021-03-01 16:11:26.580279+00:00, observationId=o1:fc97f8ca63fd181bd6987e71f20ca121:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a yellow turn sign with a black arrow pointing to the right.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.09946023264238911, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=62, prompt_token_count=1525, total_token_count=1587) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:fc97f8ca63fd181bd6987e71f20ca121:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.580279+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Afc97f8ca63fd181bd6987e71f20ca121%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091225Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9d05f5582303178ed2912774b9fc0d0ac271bd5edba2c192efaa35e52b365390b7fa1f6735a8ef4145edca9f1debb569622b9c2aa18d287483686b60b41d5e12f5dc76fc00055afe67c13b201329dd7911d0e29e7a171c1e9a349e99482ff5748bf865754fc4c1dc62fc0bfdb7f0a1fa340b6dc5f0aa8b5342dac23b3c0dde6f6d4defc4d51e23d14d2df793cf992302cdb935b36620eab2bcb86f168d299281cb98ce05e897840e1fa7913dcc93c8a180cc850e9244169f97ab62035e0e60a9fdd6d5a08fa45274f3c5d2822502f33e627372ff85a67de386ae4d03667130890d0cdc55bd3db276eef2788da14788868d8ed4eea7020a29859e950115755b6c', 'category': 'Turn', 'description': 'The image shows a yellow turn sign with a black arrow pointing to the right.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3186.0, \"x\": 3066.0}, \"hi\": {\"y\": 3246.0, \"x\": 3115.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5794: trackId=t1:034682d5181bfa0fbe506e15494a14c1:ffff005f, observationId=o1:aab61ccc20b716bcabef5f2ec318ad53:00110060\n",
+ "Processing image 5794: timestamp=2021-03-01 16:11:26.268286+00:00, observationId=o1:aab61ccc20b716bcabef5f2ec318ad53:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Turn\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19806501758632375, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Turn', 'sign_quality': 'Good', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034682d5181bfa0fbe506e15494a14c1:ffff005f', 'observationId': 'o1:aab61ccc20b716bcabef5f2ec318ad53:00110060', 'geographic_point': 'POINT(-82.0323219505742 28.05064035073)', 'mapsURL': 'https://maps.google.com/?q=28.050640,-82.032322', 'captureTimestamp': '2021-03-01T16:11:26.268286+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aaab61ccc20b716bcabef5f2ec318ad53%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=aa040d49a822588e0304149e919a7b437c3e3025f8617dd56a71961a57faf5129134d1a6206e2d182f8f8bd76c1aa2aab518278e90c62eedbca1ba378ac40a2f93808705e4cb5fbe47d2e4d3c424d14ee7baf440337eeb86121f8c3930e777773e1a4ad7a7591a8ec1114b93f1fefa0259f61bc35a143318e10d05414ec5db7f4c51b83e4eda19c3a237cd520fbef05a380463d4ad99dbd2375b0834fba4e120d7e9de6670fd6592761c37d1fbe167fcb92f13a37528ff7e7245b071e36853b51fd4ea3c9b69e66d8ea27a8c443e57dc3da6105c7614ba7cabc512624f5b1d15c657fa9ce08ce8629241cd3c4552c5b4b20609d72d8705bd3b0ded75a89daf7d', 'category': 'Turn', 'description': 'A yellow rectangular sign with a black arrow pointing to the right, with a yellow diamond shaped sign below.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3183.0, \"x\": 3122.0}, \"hi\": {\"y\": 3235.0, \"x\": 3165.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5795: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060\n",
+ "Processing image 5795: timestamp=2024-02-13 19:33:52.490613+00:00, observationId=o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign shows a speed limit of 15 mph.\",\\n \"image_quality_notes\": \"The image is slightly blurry, but the speed limit number is legible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.18493905274764352, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=1267, total_token_count=1336) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:1281d9907c1cb9c7bc63349eccd13f2a:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-13T19:33:52.490613+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A1281d9907c1cb9c7bc63349eccd13f2a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=923e815d89cbb4c9b1584f35e6e489a2360bf36161c329f2436c9157c49688de4f15c27c484b2ef1f5e891c23e546e581c6b1bcf339094144fdb76a4cae3491651e18c87be6a755f6cf0a0f1b1f3ad88f8cbb78442f15ca810715f5fcd49e789b48c9d796442a708102c89903842bfdcb22866446c9fb995e7141d8e91171ab4ecaa962a0da3e9bfd57d380f6038735ad612a1eaee59644993fe5ae3bb147e7a5b129a9196b9f579164fc3b9679fb3f75f4a3e2a4fc56a5ade2abc18c20f1e967846d6879a7a66fdb779925f50736ad5025ca51a6bc45ff4147a9f271c26928dca122cde0187c496b5836a5e5cd2f7da16d273ed096ff6a9ca92cebb0401b16b', 'category': 'Speed Limit', 'description': 'The sign shows a speed limit of 15 mph.', 'image_quality_notes': 'The image is slightly blurry, but the speed limit number is legible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3158.0, \"x\": 614.0}, \"hi\": {\"y\": 3225.0, \"x\": 650.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5796: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060\n",
+ "Processing image 5796: timestamp=2019-01-29 14:38:08.813975+00:00, observationId=o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The road sign indicates a school speed limit of 15 when flashing.\",\\n \"image_quality_notes\": \"Image quality is poor, making it difficult to read the text at the bottom of the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.26353878169864803, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=493, total_token_count=570) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:21f32ebd59b6f9e6b1af8a32f7ca5dd7:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2019-01-29T14:38:08.813975+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A21f32ebd59b6f9e6b1af8a32f7ca5dd7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T090914Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=bc833759337630c526a3c45a98a210b4541d37ec7ae7c746126c3f24971d28d148d332223acaf68109c492e5077fced0ac5c822a7e1af35c972950dccea8473ed247816c93084b6a1128ae6c58ae1a130cdcb4ef7e9ef20ff539c5f7dcbbe0cf79b726da8937c653e82a6ff17fee907e8daa3aab9fb3f6da89874b3477ab629c7e4af518bb6f38e3545b2943f99d85c26d5e7c98f0bdb46dbf28951dfeac18625fd55c400c1382090c447a9d67efee59439fa544395104729d89d20cc08dd8bd5092cedaa039dbb5a4ef9e8bef689ec53890b9674ce86c54d8418ad20be18a0f7dcf21aa92fc9b2e3919b9fbcdf346c16dc0e66839f04fce88f07ad63b19ae45', 'category': 'Speed Limit', 'description': 'The road sign indicates a school speed limit of 15 when flashing.', 'image_quality_notes': 'Image quality is poor, making it difficult to read the text at the bottom of the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2831.0, \"x\": 3602.0}, \"hi\": {\"y\": 2902.0, \"x\": 3648.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5797: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:12cb5b221c47bc74a97d9121b486b188:00110060\n",
+ "Processing image 5797: timestamp=2024-02-21 15:49:49.888844+00:00, observationId=o1:12cb5b221c47bc74a97d9121b486b188:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3854707645464547, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=79, prompt_token_count=2557, total_token_count=2636) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:12cb5b221c47bc74a97d9121b486b188:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-21T15:49:49.888844+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A12cb5b221c47bc74a97d9121b486b188%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092123Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=20e200edcaab14d88035bf4499af1bc5af5badebdc0e5602b56ff2dc887b590f21469be96336fbea0da927f263f110912acf84e47af7c986e08d8864946b41ab1caa793e3ae5dbc7420de4898166f29c51552ed71034fe4876484083735a62109b050c49c1c1884c36dd3751a0902187704bd3a497b6b2529ec325c54547f14b7f4dd59843e7dfd8de0e38ee258567e8f4494adfe5e988a2b2f7f6f84ddf60adca46c2b83ed4d71c3136aabd5f0ce8e9c6f899930399b200b6a7aebb094659f64a5baed1a0fde1d671014f29345c3dc564459db0d2fe29eae02a4b8d9e6ae64ea95dfce2e1dc55142fdd83898ef87887241d2a43d9ccad498f25538bae6155c7', 'category': 'Stop', 'description': 'The image shows an octagonal stop sign. There are also speed limit and street name signs above the stop sign. The stop sign is faded and possibly slightly dirty.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3171.0, \"x\": 178.0}, \"hi\": {\"y\": 3234.0, \"x\": 221.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5798: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:305a9f8dfdb32d734f6a841439c37697:00110060\n",
+ "Processing image 5798: timestamp=2024-02-13 19:33:55.002196+00:00, observationId=o1:305a9f8dfdb32d734f6a841439c37697:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a school speed limit sign, the limit is 15 when flashing\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.31288901108961836, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Good', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:305a9f8dfdb32d734f6a841439c37697:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2024-02-13T19:33:55.002196+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A305a9f8dfdb32d734f6a841439c37697%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092125Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=5d244fe6f77895c3295682977d44241f04246445403c1ff3b83284179967dd98b286efa65d5c709244d206f376391f1f5b3207165db3373de39918128f7383e404e638a29fc58d2b1d7c2ef8599e9277b0aea477df4ed4a077c864cbb60b5d7ffd4e95ef71f728808e9bb4b1832cd1203aeeb5eec8bbea4a1e7e959a8fddee6631bcad556bd646b68883d7afdb0632c24f7d4acbbe804099a8b70d7cd45e54c7f3725c3cb5dee41899ea5c59c9ca7879e424c248c03cd8faed1d5a98dc018984f339b94c4f85fa79bf8d0d6debedafe7d716d7a3b149be94ec3a9489ddd3925ebda52cd8f8a147f560b23ad125bd18871a46b90d0e04001bc84ab8240ec7d5c0', 'category': 'Speed Limit', 'description': 'The image shows a school speed limit sign, the limit is 15 when flashing', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2217.0, \"x\": 2699.0}, \"hi\": {\"y\": 2334.0, \"x\": 2742.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5799: trackId=t1:034996f271e0d3f3fb8366d7997cb768:ffff005f, observationId=o1:3e96e8da4e3706614e2a872f0642120a:00110060\n",
+ "Processing image 5799: timestamp=2019-01-29 14:38:08.297994+00:00, observationId=o1:3e96e8da4e3706614e2a872f0642120a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Speed Limit\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The sign indicates a speed limit. The top of the sign reads \\'SCHOOL\\'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads \\'XX XX XXXXX\\'\",\\n \"image_quality_notes\": \"The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. \"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.7798575758934021, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=128, prompt_token_count=493, total_token_count=621) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. '}\n",
+ "The classification type is ##### {'category': 'Speed Limit', 'sign_quality': 'Fair', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. '}\n",
+ "image_report to be inserted: {'trackId': 't1:034996f271e0d3f3fb8366d7997cb768:ffff005f', 'observationId': 'o1:3e96e8da4e3706614e2a872f0642120a:00110060', 'geographic_point': 'POINT(-81.9655924765238 28.0620586054017)', 'mapsURL': 'https://maps.google.com/?q=28.062059,-81.965592', 'captureTimestamp': '2019-01-29T14:38:08.297994+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3e96e8da4e3706614e2a872f0642120a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b7e3f378074681a078982fd1166b067ee7032104e6c8ac9fa3cdb4c6ba528d054856f6c5e6104d4e4f4a1a905114d5a9e10f884452724ff5460a593afa99dcf7cd077b8510506247da57d003dc638f84d438ebe3d08ff193d702588f23e77d678791d20d858350c8794116b7420d0220d861db810c5a3e186e7eb7b5396aa4cbc353a35885d2d461a17d592eb99703bd672d6c45df0d98baea2c2e646fef383788f013f61a6984484d70ee5705e82bb603216b09f723b875851e2ac35af13e241334b3ea35ecd82cf39a289a37dbf8a62afcfcf05396b1f49c72a901a418eee38a574c6ade4bf84c2ca4f661efc3e3de90fd0d0ed248d6ec25a5e17e49cf2339', 'category': 'Speed Limit', 'description': \"The sign indicates a speed limit. The top of the sign reads 'SCHOOL'. Below that is a vertical rectangular sign with the word LIMIT above the number 15. Under the speed limit, it says XX XX HOURS. At the bottom of the sign is another text that reads 'XX XX XXXXX'\", 'image_quality_notes': 'The image quality is fair. The details of the sign are partially obscured due to the resolution and possible obstructions. ', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2848.0, \"x\": 3298.0}, \"hi\": {\"y\": 2924.0, \"x\": 3342.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5800: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:c0612e109608e342227fdfa44f2dcad5:00110060\n",
+ "Processing image 5800: timestamp=2019-07-29 15:37:48.969850+00:00, observationId=o1:c0612e109608e342227fdfa44f2dcad5:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A diamond-shaped, orange road sign that reads \\'ROAD WORK 500 FT\\'. This is a warning sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.10436610772576131, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=71, prompt_token_count=493, total_token_count=564) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:c0612e109608e342227fdfa44f2dcad5:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T15:37:48.969850+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ac0612e109608e342227fdfa44f2dcad5%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092716Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=884f6a9d82189dc5bd1679e0e192a2ba14d52124ef47e1049bb6dfe834e4260c1b06a01cc5fac598694084dab5bd2163211decc491a768cf885c1cc0830e5acb4189a3a24da9062f9d595d48b2508079aee682afdaa93a53042bd0a8ea5ac31508a79fd0c33756c1e46096090f941f61f772eb9c88b00c02302214e637c90f14f164a3a9eb383300cb205e7c6b143e16bd7e7d4349147b06eb325d3e3997bbb965ef291d1cb5fc4da848b444343abe682ba7f7999c135de8acc34e8dc725b7fac97032f3a72b637df448d6dc2ad3edf5e189c64da0be19bdb0505e655f30f5473338ec945a435581a6ae32e0c3c81f87fb0dbde26c55cbfe0b021305a67c98d4', 'category': 'Other', 'description': \"A diamond-shaped, orange road sign that reads 'ROAD WORK 500 FT'. This is a warning sign.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2091.0, \"x\": 2331.0}, \"hi\": {\"y\": 2224.0, \"x\": 2461.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5801: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:378421be5531724c72de166678fa5a80:00110060\n",
+ "Processing image 5801: timestamp=2019-07-29 13:55:54.249335+00:00, observationId=o1:378421be5531724c72de166678fa5a80:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is a orange diamond shape that reads \\\\\"ROAD WORK 500 FT\\\\\".\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1876354506521514, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=66, prompt_token_count=1525, total_token_count=1591) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:378421be5531724c72de166678fa5a80:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:54.249335+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A378421be5531724c72de166678fa5a80%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093117Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=216bb5735484e122ed9bd927fa0c97a4ac05dae255610b39a4e9fccec880fa8d77985735fd588ce5ed4eb318fc8c9e9bdf190e9d97bb4d28cedf0ad8b0ea7b6dc2cd80d4640ba078d0237bcbfef52851cb4cafc9045ca933db1cc463a8106aa6922aed0b2ca510961030724911386ed22387913ca2a3a56f5af1d99c25089404beacff052cfc0ee2ad102cae28f9f60e68955c7c779116d3adc1f5d6a4055b99d3984eb0aac623b02b7dc874fa6e9ac0866defdcec99b128b9df1e1c2e2cd8483b169f01eb86e61429322ffadcd987f0a3dfbfab22d2892361374bb3910bf49bd2af4fb4130b7136f401f1ce0e61047ac8e922564f5247a972fd8e19dcd71a7e', 'category': 'Other', 'description': 'The sign is a orange diamond shape that reads \"ROAD WORK 500 FT\".', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2938.0, \"x\": 924.0}, \"hi\": {\"y\": 3170.0, \"x\": 1144.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5802: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:5a8b622242365c38dbc964d6c803d2bd:00110060\n",
+ "Processing image 5802: timestamp=2019-07-29 13:55:53.560857+00:00, observationId=o1:5a8b622242365c38dbc964d6c803d2bd:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.20054849477914663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=65, prompt_token_count=2041, total_token_count=2106) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:5a8b622242365c38dbc964d6c803d2bd:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:53.560857+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A5a8b622242365c38dbc964d6c803d2bd%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092219Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3a3c951139c6e64de4a6b6317a9921058d7f16e8175b3cca4848fa721ba18c80735f98e158c7b4cc2ba82c3f5d12288c1ab3daedd431761d0acf7f29d1b2ff44f0b3f6e874c47ff8c6abc145c2ca37f36d3830ed822700c282c7480cfd386f24b0e674e20f3b974a7192da6dd56b8fe2435e901e7dc20c893b5fa60cffddfb1c0d22ce7d0f6b4db695c0103f7d4561c23c70d806958463736333830f105fa12990743ebe8097cd97b0c828216f80880c14682a336462a8720197087694012ea02f6078329d9276971115850989524e6f7af7a63c3b277eb0ba38b67aa6155f5c341d315abf2b7908e5e933e8841b29a923fdcd57f7e11d2e45c6701cd3fb44f6', 'category': 'Other', 'description': 'The sign is orange and diamond shaped and contains the words ROAD WORK 500 FT', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2958.0, \"x\": 805.0}, \"hi\": {\"y\": 3147.0, \"x\": 984.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5803: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:12c13acb7237daa38cfe89246c982b33:00110060\n",
+ "Processing image 5803: timestamp=2019-07-29 13:55:52.880872+00:00, observationId=o1:12c13acb7237daa38cfe89246c982b33:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign is orange and diamond shaped, with the text \\'ROAD WORK 500 FT\\'\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14679569984549906, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=1525, total_token_count=1592) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:12c13acb7237daa38cfe89246c982b33:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:52.880872+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A12c13acb7237daa38cfe89246c982b33%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091524Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=075204687b95e10587fdf7c5922355212f2ec72618df9fbc04e817138143f150df6c81a899e3e9b075011d12da5e60777cdd89b7c35521e7947e302c35f57b740fdfe2440b1497d48fffc00e14f6e7e1c3640acfa50811a9b93c1f1edba2a405608f26d83d75f8ff36d2a5a56aee46c7f941ec53cd8da02bdf969a9092a362d5afdab0ad46ca23d31be539d48db1cfe645c983ee6fcba5f8a78c85b1e12a3fdfb06612a699159682f4b8e64497c98b5fe769171d14fd4d04a03a90d9f85e90e942d3e1d8612536c4e1f523aef83bcd9476c051db9ee8ce6b971af842910231ce97994a7025ccbf81085738ba897247cc93114ce7eb6b3f4f682e85330b273b12', 'category': 'Other', 'description': \"The road sign is orange and diamond shaped, with the text 'ROAD WORK 500 FT'\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3009.0, \"x\": 726.0}, \"hi\": {\"y\": 3169.0, \"x\": 881.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5804: trackId=t1:0349d450f8680fe701af1ee0e2983bf9:ffff005f, observationId=o1:6af621d9f6f28cd221297ee21ab83d6c:00110060\n",
+ "Processing image 5804: timestamp=2019-07-29 13:55:56.900855+00:00, observationId=o1:6af621d9f6f28cd221297ee21ab83d6c:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"An orange diamond shaped sign with the text \\\\\"ROAD WORK 500 FT.\\\\\"\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.11920592188835144, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3589, total_token_count=3653) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:0349d450f8680fe701af1ee0e2983bf9:ffff005f', 'observationId': 'o1:6af621d9f6f28cd221297ee21ab83d6c:00110060', 'geographic_point': 'POINT(-81.9531592358114 28.0532727531972)', 'mapsURL': 'https://maps.google.com/?q=28.053273,-81.953159', 'captureTimestamp': '2019-07-29T13:55:56.900855+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6af621d9f6f28cd221297ee21ab83d6c%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091522Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=7e0187ed8eb26e3941f8d3bdfae72dd6646915eaf4f026175dd5768137b6648b5926efea5c237cad6d8e5153da5ae6f28d19cd985116ad624770824ecff15359e707db694b752261f1ef0f025770d74a76c1e0dccb45feb8056dc3ecbb52874d4f72198beb9f1e829d9cc1bdd2c6818f7f905815f58c28199a6a22e88bc2530fff301a50f818b764bcb6858b324154e5691b81138a74ed86007629a44f9099400976b8195a25fa49d6684ebe6d209233574f4798659afaeac30c3b0f9f7a159e4141217e19405003a64933656b20f39d6fecf1fc10e25ce2d42475a350e1b3748b13ccf0235d68c3d1a4717d8a51c5424707ac01031bc85e92ca2dc959604703', 'category': 'Other', 'description': 'An orange diamond shaped sign with the text \"ROAD WORK 500 FT.\"', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 1321.0, \"x\": 915.0}, \"hi\": {\"y\": 2148.0, \"x\": 1189.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5805: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:8e715c027c93d8fc425b72262e8826b7:00110060\n",
+ "Processing image 5805: timestamp=2021-05-05 18:05:34.980893+00:00, observationId=o1:8e715c027c93d8fc425b72262e8826b7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.029648797852652415, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=2557, total_token_count=2613) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:8e715c027c93d8fc425b72262e8826b7:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2021-05-05T18:05:34.980893+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A8e715c027c93d8fc425b72262e8826b7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091523Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3841170f66eb624271fdda3f9d7d649b9458ce21bd70b1a632c8a6ff24219414ca895f7f2bf54142e0a9be9509b68cf98648b9ad58f94fa9da02c4055fb48a3a9c7595d1bbbdc8f8912559d59e939203000b9e104382d1a0e3c77195ccc4f25812864505e830873a7ab589cc0f441d2514bbb28dbb728cf101f89a08f62374992f26bc5ce38dc57d2a7796ea1d9a941596f50434fc83db64bf32819a233e007e65972644f89e568ceba312cee9099af5187eae3a1a77a5899883b19b68159c9e0b0e2ab8fb81e139599b69e0b02a79c83cb8b00d71eb7110d673d4aa6029b15249b52c5429aa8b017c7db30621964396a32bf20ddea688b55874e63df3d578af', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3066.0, \"x\": 672.0}, \"hi\": {\"y\": 3107.0, \"x\": 860.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5806: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:a657d41245903cc1a2d075180ee01664:00110060\n",
+ "Processing image 5806: timestamp=2022-06-15 17:24:54.596529+00:00, observationId=o1:a657d41245903cc1a2d075180ee01664:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible, along with the Redwood Rd street name sign.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.13433073461055756, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=64, prompt_token_count=3073, total_token_count=3137) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:a657d41245903cc1a2d075180ee01664:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:54.596529+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa657d41245903cc1a2d075180ee01664%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=3f9d9dded244a0a0eddb6789a2c0513d1919096d9538dc5f7a12732a4eda7b74a087198d38f22770c1111f6a456690d8bca692f8638e1977e9fa2fd971877017f7c1b4891e2536c2493863f50cbdd27341999bc40213a2ca2e3598f91368c124231da8f4927b58ccb86b26642076e65ba61472a549b1b023c84ef542efa9f3d9dc69044989cdc53b20678c100cb4fcb021019ea502601f05651686bc46541e85814de8ad043703ba8029739620a2585b9f69aea91bd0fbbbec4f492c5f58ee9fb66353db72d56fa6d40e4f4937561f826cb5c0e54a71e6feedc40295d7db08a94c2adfcf03feed777df8062b9b4f4f8ee95abe652f25c2ddcf051eb06f495855', 'category': 'Stop', 'description': 'A red octagonal stop sign is visible, along with the Redwood Rd street name sign.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3014.0, \"x\": 766.0}, \"hi\": {\"y\": 3067.0, \"x\": 1043.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5807: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:92670e3661e7ee6ac2f10d607f25655d:00110060\n",
+ "Processing image 5807: timestamp=2022-06-15 17:24:55.340582+00:00, observationId=o1:92670e3661e7ee6ac2f10d607f25655d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is visible. The sign is positioned below street name signs for \\'900 S\\' and \\'Redwood Rd\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.21524055282790938, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=77, prompt_token_count=3073, total_token_count=3150) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:92670e3661e7ee6ac2f10d607f25655d:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:55.340582+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A92670e3661e7ee6ac2f10d607f25655d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=52c9e126fbf7a474ae0ef93956b39afadd153159260fcdbc5b0c6b4fc4a624b1aee0b9781859193d9ff4b3b66594f505d4c7707156560b18b79887fb07df75bdbf985864dfde8d5b3ac277eb3ae0ec45951a0f77ea8255efcf3e31534c43439fe55fea6547b31fd9544607c5ad057a8f49cf3664d04f13424b0af4e914844766013a38b66fe63af6e59df2e68c34612db04ab543ab32caa9c1bc9877bc7ddd9690301dd932dce39d088d58e0d3134cc15ed703886280570001e31159b2af626bdface521cbf2fe6981000f913393e457738cd9a858a4bbbe023d387964672a62f5a0e3ffa0841937a64fb748f21c97e7c095ccaa23f5201fbefa682a6743ada0', 'category': 'Stop', 'description': \"A red octagonal stop sign is visible. The sign is positioned below street name signs for '900 S' and 'Redwood Rd'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2927.0, \"x\": 1093.0}, \"hi\": {\"y\": 3012.0, \"x\": 1473.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5808: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:3378e56509a4baeef3ed5734dfebb10a:00110060\n",
+ "Processing image 5808: timestamp=2022-06-15 17:24:53.912575+00:00, observationId=o1:3378e56509a4baeef3ed5734dfebb10a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.021941006183624268, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=3073, total_token_count=3129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:3378e56509a4baeef3ed5734dfebb10a:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2022-06-15T17:24:53.912575+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A3378e56509a4baeef3ed5734dfebb10a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=16f68e470bc7f949cd339a2cd1e62b076ec214039095bb6a9c1637cffbc60c41944c6723c15464deda7c1782c3849d7703ccd6b9cdcd699f197a9be8532829dca17b950f99b73b5739518a323fb009d94e4473a068f8ce559574be4c7a2b2c2a4dad9daa76fc9000bdffa0b23e050ef63a1a5fcd6f6f9eedd775376e7c8f680c80e0efc013d5e6eccd1894e5f9afaea9b2db9af4c34edd8923a1c0ef3683491ec11a24130c68ce8915a7e7fe13960a937b45ce49af632cfa2cb43f4764ed2cb8e644a104c9d36a850743249190ae1b348f6314d0b605dd3649a8db71b13fbbcf3d259cb5d6d6b615709163831f00e1de41110d7b1073c2d84c6ce13f5cf13695', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3049.0, \"x\": 609.0}, \"hi\": {\"y\": 3091.0, \"x\": 813.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5809: trackId=t1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f, observationId=o1:a4dacf0c165fc825d2b4487dfeab204f:00110060\n",
+ "Processing image 5809: timestamp=2021-05-05 18:05:35.544478+00:00, observationId=o1:a4dacf0c165fc825d2b4487dfeab204f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A red octagonal stop sign is clearly visible.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.05673427241189139, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=56, prompt_token_count=3073, total_token_count=3129) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Good', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a00e3fa1b5dbd05476a4cf0443922:ffff005f', 'observationId': 'o1:a4dacf0c165fc825d2b4487dfeab204f:00110060', 'geographic_point': 'POINT(-111.9387825681 40.7503105125303)', 'mapsURL': 'https://maps.google.com/?q=40.750311,-111.938783', 'captureTimestamp': '2021-05-05T18:05:35.544478+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aa4dacf0c165fc825d2b4487dfeab204f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092618Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=96cdeaf4a235f36ec6b5d920fd8a35476f24ea1115d781d3d014d3166105d2615238f293290a4f7df081d6020be0a92318a8473a529e452392c8ad1c563a50c4d524141dbbbd3dcc99ac0559ebda2610867ac60b1fb2e0d4b663b8451bd8ce864f526bd39368abf571340c9d062f9a74c89659e1ff38a644daa2d574bfa701edbdfeed6c9e989a48c2f693132a492ef8fb89be2334bd2ccc0df0fd1f84dcb7f57fb6b560b0a2fd1fcc7acec858a372ea18df765a050c123688d69a19bce9e468ff44a3b59a7f3a06c0029b9b260215fc2641e9cafa0617507ed624be2c0f9e270373a8651c389b74336ead5612520e8cde8df41edcc883134170cda97a8e4e8a', 'category': 'Stop', 'description': 'A red octagonal stop sign is clearly visible.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3028.0, \"x\": 887.0}, \"hi\": {\"y\": 3083.0, \"x\": 1127.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5810: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060\n",
+ "Processing image 5810: timestamp=2024-05-14 18:20:03.851727+00:00, observationId=o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street name sign indicating Redwood Rd and Northwood Ave\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1355958873942747, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=59, prompt_token_count=2557, total_token_count=2616) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:4fc9cba4f5eb6aacb75c6b9f6fd60978:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-05-14T18:20:03.851727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A4fc9cba4f5eb6aacb75c6b9f6fd60978%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092422Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0b5f1b1b0dc491d7b069d9a58c93e84c68c074122f863767d57c50b5ed4b9ddbe7e2155c988964e696b11ada076c05fb5ba1472281da3180d28a719400591f7902805aca5f9f2ce9342ee6284cfd97160712f19dddbf9b4a9b372be6c6c5eece722fbdcd94805608b869732b31d0c1e050ac1d0bd91111058a9543222699a6e565f34491424d7638a5273965cdf041040aa3016e3e5ea0718bee7ef60edcea83eb070da16ab3a314f434746625a9a70326425114c894466af45e2d9ae80576fb89e276f3f3e63e0e6f8ff19ac7d4cd6681e6298819002c6d58d44e33fe35bc910cfc2114227bb32223a3057e6df2ddc7c23070cdbeb8e10a61a8b87fa815dc28', 'category': 'Street name', 'description': 'A street name sign indicating Redwood Rd and Northwood Ave', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2060.0, \"x\": 3118.0}, \"hi\": {\"y\": 2120.0, \"x\": 3355.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5811: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060\n",
+ "Processing image 5811: timestamp=2024-06-12 17:01:41.325650+00:00, observationId=o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"The image shows a street sign with \\'Redwood Rd\\' and \\'Northwood Ave\\'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\",\\n \"image_quality_notes\": \"The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.6771404943733572, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=107, prompt_token_count=2557, total_token_count=2664) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:27f0dd1657f5c55edb4a8e430f800ab9:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-06-12T17:01:41.325650+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A27f0dd1657f5c55edb4a8e430f800ab9%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092223Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=574706074b93a0dacdb13eec9fbafb1a1c01b50d4f9568ac1c7ee8035631286990ced4c1ca2455cd6aae52b686d7c0b127eafd3514018f17b29a3c0c7378d9d584da6a47a304955cc2cc032e0a69091405700edcad816a0d7c3aaaa19cef4fec42f8eccde3d73e3335d53f49fd2ce54c32abc62e7ae43dbb8787a827a5d411bb6d573c98cf27b80c8559a263a7be30c76fc14b5ce43a8c7f3461a793f61857832050780bc55a7a8bc2c893a07be1ca93d2b342ef4e03b5d7ed353512d6dffc617d905b777c5ab0794b58cd3d8665c687cc97ff3a4d6312c21fa272495491103d43c6c25d5a4f199358ac0a2e2205b18dbf08c141f38f26e33ba2cda2d15b9005', 'category': 'Street name', 'description': \"The image shows a street sign with 'Redwood Rd' and 'Northwood Ave'. An octagonal sign is under the street names but the content is not visible, it may be a stop sign.\", 'image_quality_notes': 'The octagonal sign is blank, its contents are not visible, it could be stop sign that is defaced.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2084.0, \"x\": 3248.0}, \"hi\": {\"y\": 2141.0, \"x\": 3485.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5812: trackId=t1:034a4f715a7c2cf55cea43199f44c77f:ffff005f, observationId=o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060\n",
+ "Processing image 5812: timestamp=2024-05-14 18:20:03.851727+00:00, observationId=o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Stop\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.\",\\n \"image_quality_notes\": \"Sufficient quality, some items are blured in the picture. Color has faded from the sign.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5820851380797638, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.'}\n",
+ "The classification type is ##### {'category': 'Stop', 'sign_quality': 'Fair', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034a4f715a7c2cf55cea43199f44c77f:ffff005f', 'observationId': 'o1:ff2995ad2509cdfac281eba64ed1e1dc:00110060', 'geographic_point': 'POINT(-111.939181383793 40.7829650133635)', 'mapsURL': 'https://maps.google.com/?q=40.782965,-111.939181', 'captureTimestamp': '2024-05-14T18:20:03.851727+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Aff2995ad2509cdfac281eba64ed1e1dc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T093024Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=970c6947f618669d872875037c8e28b7e6ef057eda98a22fe0a90ae0cce32da5dc16ff8ce1665cd61a70656d68e06cfb764781aa2b79297b5228729991cb3809d6af529773677212808966fcb969df62c67c4a89c832a5f844f481129ad2ac3814b23de10f94e8f217988ca2413ea22df942498d59c6ba214739d7afb596f04f983266cccfee380a0cb5128e5678b3319313373cecb5d713c99dc2f7588ffad788050826c98d97b138ce0ee7af8590daf6d78bdef3466c60b2c7450df416e16c466bd2da3f68daf341c91baf2c18672a8f5acf6116449fc482292a235f903664b3b3fb9b093ab223d2f9b3ca9964023ae7cba840f9bd8b485ac4e0b214e69896', 'category': 'Stop', 'description': 'A white octagonal sign is visible. Although it lacks color, the shape strongly suggests it is intended to be a stop sign.', 'image_quality_notes': 'Sufficient quality, some items are blured in the picture. Color has faded from the sign.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 2931.0, \"x\": 107.0}, \"hi\": {\"y\": 3001.0, \"x\": 351.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5813: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:f67205191517398bd13e8fefefd97b4a:00110060\n",
+ "Processing image 5813: timestamp=2023-12-21 15:53:38.114644+00:00, observationId=o1:f67205191517398bd13e8fefefd97b4a:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign shows the street names \\'W 5th St\\' and \\'Providence Rd\\'. It also includes an indicator of the neighborhood name, \\'Gladys Leggett Neighborhood\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3048822085062663, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=84, prompt_token_count=3073, total_token_count=3157) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:f67205191517398bd13e8fefefd97b4a:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:53:38.114644+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af67205191517398bd13e8fefefd97b4a%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092620Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a68cacfcfcbfdb08ca6af53fe7100fbae051469fc7ff981ec2f7d87b2f73525527a941766026289f2fa5991a89444a6b088ee1405398f60d58d639c4e1ed23c4fdef9087425aaf78ff63fed01df70d21a2615d2293d64672c37927ed35cf7d3b5b9f39e629fc096bd24f28290b8bc96fc3d9446cd09173c1e147367f63b8c8320ff5c522461147a8cc0cf7c1ce2fca609ef298d6558a88f248e727db90513819b419c560d46bf5cbe4b6f6ef0dd29c7b2e8eaf70b707537588dbb091b4babddb882d9df9d3e9e8a6d9ceb2f3b98edc9dbe7c2fc859057161072c7afcc267e01819db0f2f211da9f19da02ad821bdbb87fb61be4d01ab7c7ab62746b76c6b4055', 'category': 'Street name', 'description': \"The sign shows the street names 'W 5th St' and 'Providence Rd'. It also includes an indicator of the neighborhood name, 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2289.0, \"x\": 1509.0}, \"hi\": {\"y\": 2510.0, \"x\": 2140.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5814: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:bdb494c4ba3a163153383d74257b0ebc:00110060\n",
+ "Processing image 5814: timestamp=2011-05-06 22:04:35.132362+00:00, observationId=o1:bdb494c4ba3a163153383d74257b0ebc:00110060\n",
+ " Error processing image 5814: 404 Client Error: Not Found for url: https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abdb494c4ba3a163153383d74257b0ebc%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091026Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=385936a99e29f1dff5354378e2e183edcff06361fb6604edf870e1c501853ab983d7d130b9b2f6c65fecef8f0f991fcc4632352a22e112e9f7210e3a505c76159e59f33f010bbc377d9c7906cb41c9f8f01ffb4382e2929869d9ed3ce4a3e48b9986a8eb69fc69219627a63802e27f282a44ea3eb27c1cca45126d2c69a5281297b0e5fcd3e2750aa6c9b40ba99947ce80d07f500ad4d1b778c75d537b6c9027a4b7ca256e81b28761358bc6c55ee983ae1565b000e8891052a515836ec201d9513f53c399fd8c5fe21f19f36f791386b39039aa388332568f7475a41ce54dc9afad697f3a8bdd093d06fe49522349ea15dd82d561c4b320c63805fba5fd0583\n",
+ "Processing image 5815: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:95370424089a98d7ac76a93ca9b6efee:00110060\n",
+ "Processing image 5815: timestamp=2023-12-21 15:53:37.290765+00:00, observationId=o1:95370424089a98d7ac76a93ca9b6efee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3405760635029186, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=88, prompt_token_count=3073, total_token_count=3161) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:95370424089a98d7ac76a93ca9b6efee:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:53:37.290765+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A95370424089a98d7ac76a93ca9b6efee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091222Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=158d8b4587fa4898ec1ecbd5a1751ed1f16faaa488335b142af7864ff801e721eab56180355ca6b66c8dab71165dbdbbd4d2c092e08472b83916f46a2847a6d40a5e9b0ac693445a2fc50245aed5d70c05df5d33324834d2a9761037423956adcfe1c55d427d6d6661d985fbcebcaebad49998e0aff41417fbb0ab1091a5e159fc2ef37666e09c0834ba82b6913328557039f5e5c4d20fe0bce71727e5569afc204288f2fa48bfa054c988bb6141122e8ad0c466eadd779eda9b71b6059bea95dad662001fe4cfb43b236d6925c02c5d35e24af8cbe60bc362b3b70c16d1784b63644be110eb92ae18e22ae7590a6908574e295599a2867281686c6a7d4db387', 'category': 'Street name', 'description': 'The image shows a street name sign with multiple street names stacked vertically: Gladys Leggett Neighborhood, W 5th St and Providence Rd. Each street name has a directional arrow and the corresponding street number.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3300.0, \"x\": 2519.0}, \"hi\": {\"y\": 3462.0, \"x\": 2853.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5816: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:6231b287d74fac13cc9442396eb83ba7:00110060\n",
+ "Processing image 5816: timestamp=2019-01-21 15:37:01.593862+00:00, observationId=o1:6231b287d74fac13cc9442396eb83ba7:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A street sign indicating \\'Providence Rd\\' with an address of \\'1100\\' with arrow pointing to the left, indicating direction. Also includes sign for \\'Gladys Leggett Neighborhood\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4334026205128637, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=87, prompt_token_count=2557, total_token_count=2644) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:6231b287d74fac13cc9442396eb83ba7:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2019-01-21T15:37:01.593862+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A6231b287d74fac13cc9442396eb83ba7%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092318Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=21c1c6523b5c4e5ab427dd72caa30cc975411e784309ecdec37465ef84f42f07342575f35caa5287d0b9bb4feb2983702b7547f42b5971f1550fee355b28dd649749f708c81419fdc717906b7ab83888bd39eca1ce357cb0e00f195658e7ba9b1ee25a56612efb03c2022e476d6e5e27855ad4ae1ee6c6bf78ff21939452ad3de73d567d6ebc73c22e6515f0165073bae82a00bc7bdd2c8e576d9a7f791b2c3fdb092ebd336cc4c656a8054cab4588ac150be4dc906f13976e9a6b5438c45491cf348cd0f5e4012be56787c421daacdeb6292950a7634c72548ae1477cb08d8f1999b7ba48c5ebf8ba646af4c46203be0d2f3b75653e5830d7f0516adb8281cb', 'category': 'Street name', 'description': \"A street sign indicating 'Providence Rd' with an address of '1100' with arrow pointing to the left, indicating direction. Also includes sign for 'Gladys Leggett Neighborhood'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3403.0, \"x\": 463.0}, \"hi\": {\"y\": 3604.0, \"x\": 842.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5817: trackId=t1:034ab9974ea698745762036f1fe95548:ffff005f, observationId=o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060\n",
+ "Processing image 5817: timestamp=2023-12-21 15:39:07.420990+00:00, observationId=o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates \\'Providence Rd\\'. The arrow indicates the direction for the street.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3304991646418496, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=63, prompt_token_count=2557, total_token_count=2620) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034ab9974ea698745762036f1fe95548:ffff005f', 'observationId': 'o1:f0985eadd99cfad7faeb4f141fbe43ee:00110060', 'geographic_point': 'POINT(-81.973619144563 28.0586507239268)', 'mapsURL': 'https://maps.google.com/?q=28.058651,-81.973619', 'captureTimestamp': '2023-12-21T15:39:07.420990+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af0985eadd99cfad7faeb4f141fbe43ee%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091617Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=151c7b1462b9239bd2e190647051c46fdc667e32fbeeca700b8437b22a1706b9beff9a756794ea91463d1fe3057c6ef04a54c835e4277f9dd0a99736aeb49cd135baf70e2254f68121dfec2720cfa17cb0467d880fd850bbaf908b149a28a535c90fef2ac4b414e840bc76deaa34f71b9c840be86e4404b200f4d6537d6691412d847c76f14cf65bed8f84e8d58481a57c173e07ba3bb0d007a622e294d09ae6722e714b5e339a73799003a8b9685ac1eaea903dd09e131096a78565133ac7dda709fafeef772946a811dc35ec5dca69478d5a50012a9459312efaf07a9547f5d6a314df19a1517d19840d4dc0d137096229f06c4d202b66f6cebc67cd0d8399', 'category': 'Street name', 'description': \"The sign indicates 'Providence Rd'. The arrow indicates the direction for the street.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2542.0, \"x\": 2643.0}, \"hi\": {\"y\": 2666.0, \"x\": 3091.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5818: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:9dfd03a0953ae78b84ef609cde83a063:00110060\n",
+ "Processing image 5818: timestamp=2024-01-19 18:35:04.846961+00:00, observationId=o1:9dfd03a0953ae78b84ef609cde83a063:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \\\\\"Parking by Disabled Permit Only\\\\\", and the bottom portion specifies a time frame or other restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.38620209426022645, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2041, total_token_count=2130) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:9dfd03a0953ae78b84ef609cde83a063:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:04.846961+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A9dfd03a0953ae78b84ef609cde83a063%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091725Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=024caf9679f0b343a7de8bfc2971c72ec92217c2221b76d86fa84cb882d4f52081acc484cdd2b840c90c0de478a79f3e8b8ade0dbbe06984f77f20998a2c82769ab3228a650c57c0f180e842ceb9ab15aae6bdc492347bce2307e04cbe4891c9890ed7466ebf57839aeb749d7f4e0059d318c2e2135d510f31974db150c894e063495564aad0e7262f5b9e95b110dde8fcd930d4cd6213d8d2a64ed6fbf2f87bfc8e15c3bb9f11fe842cd6a4b4f5552e1b1402eb502f9c6c291485019e9e7c2b4c1487f6bd74fbb0b45c02dc0eba3fb57608772c7da2da272a314ca67f4e5f49d9ba5112ba1fef41aa44d027bceef1b0cc124541871d873c746f5a6ce2bce4f4', 'category': 'Other', 'description': 'This is a handicap parking sign. The top portion has the handicap symbol (person in a wheelchair), the middle portion states \"Parking by Disabled Permit Only\", and the bottom portion specifies a time frame or other restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3030.0, \"x\": 3412.0}, \"hi\": {\"y\": 3080.0, \"x\": 3465.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5819: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060\n",
+ "Processing image 5819: timestamp=2024-01-19 18:33:42.049351+00:00, observationId=o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying \\'Parking by Disabled Permit Only\\' and a fine amount.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2889211723603398, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=83, prompt_token_count=2557, total_token_count=2640) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:e2ea2c370f4fdff4bb8e6183e04f03eb:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:33:42.049351+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ae2ea2c370f4fdff4bb8e6183e04f03eb%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092325Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=62f42c73ff2a5d773e2033db584f7254f1e39e04b255680adcdba0713350b2043e45d27e22ac0018bccfe1ea963459eed02f9c38f8a38e8dcb67b4ceb833d08955fb8328e4edbc976be927d4ca312efd4cedc5503747715bc31ac701371d79b4a04219662d6eb58a12e1530dc3f9ac31ef8704ba5ffe8e8a9e6bf8d3294241ccc849a689ecd7833e39ae6f4186b478bdba2d28ac4998fe1af096de40a39805b8a7b5678cc2244812aedc19af2c1f311ed6c6fdc1ca85594b9b046650be217db3e5b18b6c5a795e479bbb869bbaedb81cc6fa0f30c66df43f9ef5b31f028857e64c939572cffa86f0929d4a9ed3ae522edf377bfa7c495d3b76a6043a2d57bcfd', 'category': 'Other', 'description': \"The sign indicates parking is reserved for disabled persons with a valid permit. It includes the international symbol of accessibility and additional text specifying 'Parking by Disabled Permit Only' and a fine amount.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2192.0, \"x\": 1933.0}, \"hi\": {\"y\": 2246.0, \"x\": 2000.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5820: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060\n",
+ "Processing image 5820: timestamp=2024-01-19 18:35:02.355086+00:00, observationId=o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Other\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.4488532511393229, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=75, prompt_token_count=2041, total_token_count=2116) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Other', 'sign_quality': 'Good', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Other', 'sign_quality': 'Good', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:73d1de3b0ca6dfe63726ed8ee1b38e8b:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:02.355086+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A73d1de3b0ca6dfe63726ed8ee1b38e8b%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=97d3f6946a750b63fe3573a22b6630ce23a86edeaa9dbde472a2033952526e41ba3ec74bbdacb11bb05150be5a02b8510a5928efb3e81aa0641be34238b69579635c65d27b9b6255d28e8da94aacd7993d69ec93a3b5c9b64119012112db0ac9786939bd2ef07d0706fcd1eb418fc6b9aca38e19ba62267efe3431254de4f449a078c359da9c3601f1f3ca905f4e91853e6cc6be1c46517757b8048c013fcd71551840edc965b4dbe30eddfb1b9196998b590eb742b36628486b7da020d412840245eba56a44edfee2d13189e6363bc8ea330ac046c09eaea8ad724c2d99f3d59973f18cacbd00f0341c0c74bdabca56c15942bc6482b3085f0080bf2ff76484', 'category': 'Other', 'description': 'A sign indicating reserved parking for individuals with disabilities. It features the standard wheelchair symbol. There is a sign below it that provides time restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2190.0, \"x\": 3468.0}, \"hi\": {\"y\": 2239.0, \"x\": 3515.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5821: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:2db05857d9abdcdee379c128c00ca2b8:00110060\n",
+ "Processing image 5821: timestamp=2024-01-19 18:33:43.301770+00:00, observationId=o1:2db05857d9abdcdee379c128c00ca2b8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating \\'Parking By Disabled Permit Only\\' and a notice of a $250 fine for violations.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3890236415220111, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=2557, total_token_count=2646) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:2db05857d9abdcdee379c128c00ca2b8:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:33:43.301770+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A2db05857d9abdcdee379c128c00ca2b8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=527304a76b11a15bb64680f6b738ff0134324a3c3c0f849e6c123e0fabb386a9007a55bcfe424b3375afd7cdf8e70fcf48ab6fe75b18414dd128ad4cf3917a06b69b1fb112872d9b4401a0b1d7ae3bdb680334d75d52281a08f35b3b4e28e96f4639882123af320d69c23723e27544e81b6badfab03fe83f930247cd430fd5c6b23cec29e0234c89cf595fa099202aafcbbbddcf1ca22a2265d2684338e8b865808d7a47c7dcf1de760f0ab32ac641c2e0301a342c7f67f608264ce84008dbfbef54678536fa9aebc31b7a287ae1ecdb6714371531f4843d96c29e9f6cfd4d1bf6596c40cbcc8aa40de6d57ca7bb8aadca96abd4c9dc7c1c95a2678378f098b9', 'category': 'No Parking', 'description': \"This sign indicates parking is reserved for individuals with disabilities. It features the standard blue wheelchair symbol, with text indicating 'Parking By Disabled Permit Only' and a notice of a $250 fine for violations.\", 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2197.0, \"x\": 1852.0}, \"hi\": {\"y\": 2251.0, \"x\": 1913.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5822: trackId=t1:034b1944b2732d4af3e8c70863a232a3:ffff005f, observationId=o1:b70287eb0bdd5739065ed6f4571a170f:00110060\n",
+ "Processing image 5822: timestamp=2024-01-19 18:35:03.459349+00:00, observationId=o1:b70287eb0bdd5739065ed6f4571a170f:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.2982615042423856, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2041, total_token_count=2110) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b1944b2732d4af3e8c70863a232a3:ffff005f', 'observationId': 'o1:b70287eb0bdd5739065ed6f4571a170f:00110060', 'geographic_point': 'POINT(-81.9740718497771 28.0245666702503)', 'mapsURL': 'https://maps.google.com/?q=28.024567,-81.974072', 'captureTimestamp': '2024-01-19T18:35:03.459349+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Ab70287eb0bdd5739065ed6f4571a170f%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091518Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=4b91fd06561a34fcc726fde61b15b71cc9f080bb52b8ef51939ce3159a7b4bb252c304c0e49da985aa6112cc6c4e4dd79f83f2bcc80720eb56bfe52d6b5d2b875a8ce286e8dd9610bc63e7053302cc908d22dc65e7a1bce04bfe19e3076bfde8324735f2536721b445425920c11c9952c0cd32a56a23e876dac462bab69e174865361a8455edbd3acb45d2e83239262fada315654da1727bd9fe60efba81aa147e7c94020bb4b541ddc86b6a5b3dc755180676cb6c22d9d74810f5dc2c1db068e204ae09d9ac09e074f588be9e2a7a2ce62e1d5833b74529fa50d5003e7b993fd34ed567f731d68e5c79b5aa0cdb306629a5cf640ff9bc3ca08ee05209e24fed', 'category': 'No Parking', 'description': 'The sign indicates parking is reserved for disabled permit holders. There is also a sign indicating time and date restrictions', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2141.0, \"x\": 2220.0}, \"hi\": {\"y\": 2187.0, \"x\": 2278.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5823: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:bc65c05059d4395af5a4b455b30c1002:00110060\n",
+ "Processing image 5823: timestamp=2022-06-14 16:46:42.175137+00:00, observationId=o1:bc65c05059d4395af5a4b455b30c1002:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.5211028195499035, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=89, prompt_token_count=3073, total_token_count=3162) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:bc65c05059d4395af5a4b455b30c1002:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2022-06-14T16:46:42.175137+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Abc65c05059d4395af5a4b455b30c1002%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091521Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=a426f8a84eb1dc36791a0da2f8e04c4b3bd2eb6fd61c4935615e452e9412fa104de1aa0447c1a15a44e87999d426f568c3d79fbba5611349466c8a34cfdaec6de5255253c22146686f002fc19f0ba719afdb180f4331710c487acbd6ca5bd6dd5a58bdf0e06b74758299be73de5a49cede1c34ef14836115a1e16c9b35f6205d71bf812a7f9c191fc8fd76958e28394f02eb7e603598fa24b1895773846606a2c152d8da424d901aa47c0731b8f9edd4d7f9e16ddedae54d08959f38a13d111bf8c72e18d8ef5f6efbc50e171bf57a3a4b15691225396000efe0a908af4993cc025d8e36a437ad5b1c771301585b7053dce093753458d3ac39e913de8251c692', 'category': 'No Parking', 'description': 'The sign indicates a no parking area, with one hour parking from 7 AM to 7 PM except Saturday, Sunday and holidays. Also it restricts parking to resident area 5 by permit except time restriction.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2227.0, \"x\": 1484.0}, \"hi\": {\"y\": 2418.0, \"x\": 1587.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5824: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:f45a5995046040b2feceed89a3146942:00110060\n",
+ "Processing image 5824: timestamp=2022-06-14 16:46:41.566619+00:00, observationId=o1:f45a5995046040b2feceed89a3146942:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a combination of parking signs. The top most sign shows a \\'No Parking\\' restriction with an arrow indicating the direction that it applies to. The middle sign indicates \\'1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.\\' The third sign indicates \\'Resident Parking Area, Area 5, Permits Exempt Time Restriction\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3598713556925456, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=120, prompt_token_count=2041, total_token_count=2161) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:f45a5995046040b2feceed89a3146942:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2022-06-14T16:46:41.566619+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3Af45a5995046040b2feceed89a3146942%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091920Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=53eee3581ee77a7cd04f1a880be9fc1e050725832bfd5aa2df7304bf8bf0bc8d7961d7c08d577891ced08840e0e6d27fb730ad2772a0840a734e3f0e1b7da4bee7b5a203d567b5be38c3a12204c7a4d13a8ab3429e22865107d6042417d7a75f0e8df944a9ddf387031974755f1ab7a52f88980460d222b661f17c4af9dac921f9b77d68b9d4ce85fe37afaad1f1313ddd194f672af9521de6763f90656806e9222fa9e56a7b00a42f04e10a1a9b5969dd127264073bb004572bb43adf6d5653d7818f37cad8306ca54677967ed1033a4dd4edc2357b2761aa422a38645ed9e8655d1a320c07b8116bfeca1932de2c1048cd08ebe0e78d99938a808e5172dd5e', 'category': 'No Parking', 'description': \"The image shows a combination of parking signs. The top most sign shows a 'No Parking' restriction with an arrow indicating the direction that it applies to. The middle sign indicates '1 Hour Parking, 7 AM to 7 PM, Except Sat Sun and Holidays.' The third sign indicates 'Resident Parking Area, Area 5, Permits Exempt Time Restriction'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3195.0, \"x\": 2880.0}, \"hi\": {\"y\": 3346.0, \"x\": 2980.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5825: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:29092dbbe19f26ac70f249d68bacae83:00110060\n",
+ "Processing image 5825: timestamp=2021-10-18 20:21:13.304246+00:00, observationId=o1:29092dbbe19f26ac70f249d68bacae83:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A sign with a red circle and a slash through a \\\\\"P\\\\\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.\",\\n \"image_quality_notes\": \"Image is somewhat blurry but the general shape and markings on the sign are discernible.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3967942457932692, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=91, prompt_token_count=493, total_token_count=584) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Fair', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:29092dbbe19f26ac70f249d68bacae83:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:21:13.304246+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A29092dbbe19f26ac70f249d68bacae83%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092027Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=9b1728988a96ebd6e12cd218c81e63f8160cb9a9bbb88b3ee68e2982da5bc4f0dafc6b2d238a58792563d950ced2a19de13e0b6f50c91114c94054652eaa5e2c39877e684a67aeaf437dd212b2d55c33df9b6b636c00658fa515292e3d076f3a7e839a7e699d66a0ab2d23af7ec53c7007bca574b3fa302120eb0a58bef6c3032c8f775e0345d42b0eb27cfa210bd77527e8d3e0c76a02d037ba4661dd9f51d44a2bfd10b9ba43d6d3d959fcf38844527acaccca075ee8b4248894623e81a2143c858e498c931770f264196ac23a9f99a7874140a41fc2076bc1a62611cb68aa4b6b3d2ef21533ab2395f04dcc703d0212e920beafe36e0c2055a9d3d7805445', 'category': 'No Parking', 'description': 'A sign with a red circle and a slash through a \"P\" indicates no parking. There is also an arrow indicating the direction in which the rule applies.', 'image_quality_notes': 'Image is somewhat blurry but the general shape and markings on the sign are discernible.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3265.0, \"x\": 1581.0}, \"hi\": {\"y\": 3308.0, \"x\": 1611.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5826: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:939cc76244f5ca579f42025115cad7f8:00110060\n",
+ "Processing image 5826: timestamp=2021-10-18 20:21:12.440325+00:00, observationId=o1:939cc76244f5ca579f42025115cad7f8:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.\",\\n \"image_quality_notes\": \"Image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.29618828296661376, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=80, prompt_token_count=493, total_token_count=573) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:939cc76244f5ca579f42025115cad7f8:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:21:12.440325+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A939cc76244f5ca579f42025115cad7f8%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091226Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=47e592b727b657886475016f70bf7ceb12ea0552394e52240e0502a738e96150ccd913e682e1b0ae01e116bec6f85efccc34fdb55a1d9bae35a90c551986eae6fddb997af656288d352e63c2e39b34ecab511f1e2753d7142eb274c7e0b8580b11c0d4a27bbd145414890858f02a833c0cf441847e7f6b5e3ddcac036877735c2aa1399e903ecd30b3cc0e7d4f354a0ed2111477988da8b8ff7cda8dfb102971c84308361ff1116ef6e235e71ba7de42c087e0c83ff3118aabc6f86536135d34c25af96b5492d4e0ac7b7e20b962bfcb1be3abd7f0450917f9a6f4a79c9bdaba984ef2639e37cf11dc18dff78554e366789a59cd4707ad56341f03fa4335e657', 'category': 'No Parking', 'description': 'The sign assembly includes a No Parking sign, a 1 Hour Parking sign with time restrictions (7 AM to 7 PM), and a Resident Parking Area sign.', 'image_quality_notes': 'Image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3266.0, \"x\": 2226.0}, \"hi\": {\"y\": 3329.0, \"x\": 2265.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5827: trackId=t1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f, observationId=o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060\n",
+ "Processing image 5827: timestamp=2021-10-18 20:23:15.076249+00:00, observationId=o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"No Parking\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.3173505126452837, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=122, prompt_token_count=2557, total_token_count=2679) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'No Parking', 'sign_quality': 'Good', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034b65fc13cd8134b9fa0dfba4de8d1d:ffff005f', 'observationId': 'o1:7cb6e4aff8140750e9ab52c19f1b02df:00110060', 'geographic_point': 'POINT(-111.883745597825 40.7704747428204)', 'mapsURL': 'https://maps.google.com/?q=40.770475,-111.883746', 'captureTimestamp': '2021-10-18T20:23:15.076249+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7cb6e4aff8140750e9ab52c19f1b02df%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092021Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=739b4c8b54df00214bbe247054240be86b7a9d836ef41142d038edd799b2181de82d9ccba81063c780421cbff5b3a42905faa4e01b7c628eff37f9ecc8de212bed68d36508dee0bfbac473b371b55172b3ac0173c12b604febf2f79805fa185010eb6ec25733b1a4113aa0c5059dfbdc1a0485d3ca8f3fb9cca064eefe849fdb0954112f0aef417d0edf2ac137b36932fe56a130e73b1b036b5725c6eb23b384eec594cee92e6e32800c9bb604269448e8f97494f84b598e1fc173746b46dcd672143657ed574f90385b093d206617d86cb3af7324ccb978d02291d9ca823288ca3a9ec6686ae39dc82582f2633af8522f1f2a2952aec7b828122e8e53dadbab', 'category': 'No Parking', 'description': 'The signs indicate parking restrictions. The top sign indicates no parking in the direction of the arrow. The middle sign indicates 1 hour parking from 7 AM to 7 PM, except on Saturdays, Sundays, and holidays in the direction of the arrow. The bottom sign indicates it is a resident parking area, specifically area 5 and permits exempt the vehicle from time restrictions.', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2242.0, \"x\": 1790.0}, \"hi\": {\"y\": 2434.0, \"x\": 1884.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5828: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:87fa2356d88b218f9bf7ca47733b710d:00110060\n",
+ "Processing image 5828: timestamp=2023-12-15 17:13:21.284406+00:00, observationId=o1:87fa2356d88b218f9bf7ca47733b710d:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows two street name signs: \\'Frontage Rd S\\' and \\'McCue Rd\\'. They are green with white lettering.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.07003134650153083, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=74, prompt_token_count=493, total_token_count=567) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:87fa2356d88b218f9bf7ca47733b710d:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:21.284406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A87fa2356d88b218f9bf7ca47733b710d%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092224Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=46f2e7162d0a66b7dc116ff429124db9001b114e1d321c3b9ada6c7f53ad308c377457190e60abc1c28537490b50ebfe270e1aaf6252b26c54860d207626100bdff4fca9f30a71b8109feadcc121f6282a06d7956337501b3c75d47874628ef7a280cf1b74d9281afacd03f3ed766161da1a1cd6b51f54b927853727d26ea33b7b338d165b7647abd530810d4e98f9bf30e54736828a446ab2eb8cb3504d2819837d38bcce86f793dfe93ca7a4a5e054253032f15cc64f21feeab4256dbf3159a30fe73d1c1095e9722fe71d932b7aa5564553f3dd0379cdb1d048889c26ebd473bab668e7cf87b9117a2d6be14568656811d591b88e36cb226ec8ecf04faca9', 'category': 'Street name', 'description': \"The image shows two street name signs: 'Frontage Rd S' and 'McCue Rd'. They are green with white lettering.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 3155.0, \"x\": 3120.0}, \"hi\": {\"y\": 3195.0, \"x\": 3174.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5829: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:0b67cbe69ade7311b72e426aed655ec0:00110060\n",
+ "Processing image 5829: timestamp=2023-12-15 17:13:16.728942+00:00, observationId=o1:0b67cbe69ade7311b72e426aed655ec0:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"Two street name signs are visible, one reading \\'McCue Rd\\' and the other reading \\'Frontage\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.1339773314339774, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=70, prompt_token_count=1525, total_token_count=1595) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:0b67cbe69ade7311b72e426aed655ec0:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:16.728942+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A0b67cbe69ade7311b72e426aed655ec0%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091724Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b7a5e4d71e71da469f1d36917fa71644a09582556c7aef86ffb4ca04bd810ff53dfc3dc1200fda7652992c3c7f4f106e8cbc9851ac9500d159255b1687137270ad03a3af615432cf1a5ea4783dd7e695a2a05a6ba8318976f33dc884a3866a2f6f1f9d8a1e386a543139f5ab7e5526a2c7ef894897fdab5b46f3dc946437b3ec01cd6e5c2d9e5eb2d17f96ea4c25cd13ef452a8cfd11d3bcbcf5bdf86f4a6036b7c95d49c956741228d3490757b745f4b7cfe6e50b307f4fccbeb80d219e8ee720cd6fb4dd767a791ba31a3d9bf2bfd9af636294f39972065ae2888df786e0c612470c9701778b5a22ce86178a3cb0208eea2bd860038f3add469317617505a0', 'category': 'Street name', 'description': \"Two street name signs are visible, one reading 'McCue Rd' and the other reading 'Frontage'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2260.0, \"x\": 2965.0}, \"hi\": {\"y\": 2311.0, \"x\": 3085.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5830: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060\n",
+ "Processing image 5830: timestamp=2024-01-22 15:26:36.431808+00:00, observationId=o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.14168556876804517, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=69, prompt_token_count=2557, total_token_count=2626) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:037c2b33ec7bfd2cd6b23ace5bd0d2ca:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2024-01-22T15:26:36.431808+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A037c2b33ec7bfd2cd6b23ace5bd0d2ca%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091323Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b987935403e81ba7f00e7c399edd1245200b387eb1abee27dcfc31b42c0c1a0a67d9fa4333509f119a1a6282c78e41b6435ad362d76b5b3b22d609eae7aa777ae129447c8ad1518dbc3e7899a53cde3d415435f41214febea33fc2cb71e2bb9bf8724754408a55a6e31894d7d6739a77b7c18d6fa7e02427e54f571fa86f0aa7cd9c2e3adf6e7360330245edbc015767579f1c2670f9726bbce2875512831ba286c6a14d7cd3c987da12a2752cd285b292e4bf2b4c8343626f7fac54daac2544c6d8d73790e2f71c691c6896b2ab2732f74ebe98bbab56a815109bc00b78e74b7b577a4c54f028b70fb312f7398e2485544e30517b527eb595b674bd5c932746', 'category': 'Street name', 'description': 'The image shows a street name sign with two street names: McCue Rd S and Frontage Rd S', 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2199.0, \"x\": 2038.0}, \"hi\": {\"y\": 2258.0, \"x\": 2196.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5831: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:132af582777ba2b46cb0ccad61e82649:00110060\n",
+ "Processing image 5831: timestamp=2023-12-15 17:13:21.284406+00:00, observationId=o1:132af582777ba2b46cb0ccad61e82649:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Good\",\\n \"description\": \"The road sign indicates the street names \\'Frontage Rd S\\' and \\'McCue Rd\\'.\",\\n \"image_quality_notes\": \"image is clear\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.19254920731729536, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=67, prompt_token_count=2041, total_token_count=2108) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Good', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear'}\n",
+ "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:132af582777ba2b46cb0ccad61e82649:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:21.284406+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A132af582777ba2b46cb0ccad61e82649%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T091722Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=b1380e040ed3621af6e4651568c5a5895149ba58bb9f3416c4417524b505862f268a7bdcd96b008859ef5f165d28e59f3379ac1d199ecea4dfe2ed81f34d2a2a0c2e261d0d2b059d3d9e3bb770424c6086bf1a55eb532e2b3408d9978f9970525854095183baf51b9a04ac7af99029adc70bf4e027989cbec76458f9ebc0ded0622e5c1122ab1f95f73b3d24300d5276ca8d7e55e39be10909f56f221bed7af4b9592c78269c241d4ac3f7cb5125357e10177de087a9615df76d5d8539ec8af7d9095dc8019f09bd4665b9e523832963108022fdf5ca96861ca39b3a7fee8defcf97308d8280434b9ee69da60d7b0b3410ede4324ffc591b31e40b540d42a36b', 'category': 'Street name', 'description': \"The road sign indicates the street names 'Frontage Rd S' and 'McCue Rd'.\", 'image_quality_notes': 'image is clear', 'sign_quality': 'Good', 'bbox': '{\"lo\": {\"y\": 2279.0, \"x\": 69.0}, \"hi\": {\"y\": 2323.0, \"x\": 131.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5832: trackId=t1:034bcbb65d71223f835242ad9c3796e2:ffff005f, observationId=o1:7480b6d5a43068d32c832835816b466e:00110060\n",
+ "Processing image 5832: timestamp=2023-12-15 17:13:15.760909+00:00, observationId=o1:7480b6d5a43068d32c832835816b466e:00110060\n",
+ " The raw response is: candidates=[Candidate(content=Content(parts=[Part(video_metadata=None, thought=None, code_execution_result=None, executable_code=None, file_data=None, function_call=None, function_response=None, inline_data=None, text='```json\\n{\\n \"category\": \"Street name\",\\n \"sign_quality\": \"Fair\",\\n \"description\": \"A green street sign reads \\\\\"McCue Rd\\\\\", and another sign reads \\\\\"Frontage\\\\\"\",\\n \"image_quality_notes\": \"The image quality is fair, but the text on the sign is readable.\"\\n}\\n```')], role='model'), citation_metadata=None, finish_message=None, token_count=None, avg_logprobs=-0.36251143405311986, finish_reason='STOP', grounding_metadata=None, index=None, logprobs_result=None, safety_ratings=None)] model_version='gemini-2.0-flash' prompt_feedback=None usage_metadata=GenerateContentResponseUsageMetadata(cached_content_token_count=None, candidates_token_count=76, prompt_token_count=493, total_token_count=569) automatic_function_calling_history=[] parsed=None\n",
+ " Road Sign classified in: {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.'}\n",
+ "The classification type is ##### {'category': 'Street name', 'sign_quality': 'Fair', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.'}\n",
+ "image_report to be inserted: {'trackId': 't1:034bcbb65d71223f835242ad9c3796e2:ffff005f', 'observationId': 'o1:7480b6d5a43068d32c832835816b466e:00110060', 'geographic_point': 'POINT(-82.0350199630312 28.0371050253008)', 'mapsURL': 'https://maps.google.com/?q=28.037105,-82.035020', 'captureTimestamp': '2023-12-15T17:13:15.760909+00:00', 'signedUrl': 'https://storage.googleapis.com/geoai-cloud-sandbox-dev/61dd37bf-8f95-4d1a-9928-53455cbfdb10/0/o1%3A7480b6d5a43068d32c832835816b466e%3A00110060.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=geoai-signedurls%40geo-integrations-3p-models.iam.gserviceaccount.com%2F20250321%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20250321T092126Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=00d408905d3f4ed69f57faa6c47c78f16d11928f563a90211e6c02e8a3d4f3d6026f8ae167ddd7c150570a2fd1cf6324749aec5070338c4b67ec2a8d409a944811ca2ebf8a305d56ed05811f816db2bae8d773f20e2c08ce48143aa725dad7693ee782c2f402c02e5a1de7476fc4d6b8216d36976be07853e65afc7de6a8b3b8d43112db1c76c4a18e520382ba68331b051bca0668bb31e143f3a46b2936c0e7bdfb6c42fc8a26d6cc6335e3d6ccc38923a4038773de7f17d5963f83d0d966b0e70d6757e52081bc4b5ea409abf2c0b987744c22ebcabc02fe9f9a5765b32afa2eb684f55c70a52fcc582f7dfa215d17f6376e29041ecc0f1f04af70a396f5ee', 'category': 'Street name', 'description': 'A green street sign reads \"McCue Rd\", and another sign reads \"Frontage\"', 'image_quality_notes': 'The image quality is fair, but the text on the sign is readable.', 'sign_quality': 'Fair', 'bbox': '{\"lo\": {\"y\": 3190.0, \"x\": 733.0}, \"hi\": {\"y\": 3233.0, \"x\": 851.0}}'}\n",
+ "Image report inserted successfully.\n",
+ "Processing image 5833: trackId=t1:034c0e27e0a66f328f023d0d931b3105:ffff005f, observationId=o1:951aec98c472f4fbd0c044401d1d7f48:00110060\n",
+ "Processing image 5833: timestamp=2023-12-19 21:16:29.770663+00:00, observationId=o1:951aec98c472f4fbd0c044401d1d7f48:00110060\n"
+ ]
+ }
+ ],
+ "source": [
+ "all_reports = process_image_reports(results)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "Pw7QWS_ujcHZ",
+ "metadata": {
+ "id": "Pw7QWS_ujcHZ"
+ },
+ "source": [
+ "# Visualize the dataset"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "M2K91xM6we9M",
+ "metadata": {
+ "id": "M2K91xM6we9M"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "df_all_reports = pd.DataFrame(all_reports)\n",
+ "print(f\"The size of all_reports inside the pandas is: {len(all_reports)}\")\n",
+ "#print(df_all_reports)\n",
+ "df_all_reports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "IuBm-oKwcmr1",
+ "metadata": {
+ "id": "IuBm-oKwcmr1"
+ },
+ "outputs": [],
+ "source": [
+ "# (OPTIONAL)\n",
+ "# You can export the results of the analysis\n",
+ "# df_all_reports.to_csv(\"road_sign_classification_results.csv\", index=False)"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "name": "classify_road_signs_and_save_in_bq",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.10"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/street_view_insights/notebooks/eval/README.md b/street_view_insights/notebooks/eval/README.md
new file mode 100644
index 0000000..f1f899f
--- /dev/null
+++ b/street_view_insights/notebooks/eval/README.md
@@ -0,0 +1,19 @@
+# Evaluating Utility Pole Image Classification with an LLM Judge
+
+This notebook demonstrates a pipeline for evaluating and comparing the performance of two different Gemini models (Gemini 2.5 Flash and Gemini 2.5 Pro) on an image classification task. The goal is to classify the material and type of utility poles from images stored in Google Cloud Storage.
+
+## Workflow
+
+1. **Data Fetching**: The notebook queries a BigQuery table to get a list of GCS URIs for utility pole images.
+2. **Image Classification**: For each image, it uses both the `gemini-2.5-flash` and `gemini-2.5-pro` models to identify:
+ * The pole's material (e.g., "wood", "metal", "concrete").
+ * The pole's type (e.g., "Street light", "High tension power transmission", "electricity pole").
+3. **LLM as a Judge**: A separate function (`judge_outputs`) is implemented where a Gemini model acts as a "judge." It takes the JSON outputs from the two classification models and determines if they are semantically the same.
+4. **Analysis**: The notebook calculates the overall agreement percentage between the two models.
+5. **Review Disagreements**: It displays a sample of the images and corresponding outputs where the models disagreed, allowing for a qualitative analysis of the differences.
+
+## How to Use
+
+1. **Configuration**: Set the `PROJECT_ID`, `REGION`, `DATASET_ID`, and `TABLE_ID` variables in the notebook to match your Google Cloud environment.
+2. **Execution**: Run the cells sequentially to perform the evaluation.
+3. **Results**: The final cells will output the aggregate agreement score and a table of disagreements for review.
diff --git a/street_view_insights/notebooks/eval/utility_pole_eval_with_llm_judge.ipynb b/street_view_insights/notebooks/eval/utility_pole_eval_with_llm_judge.ipynb
new file mode 100644
index 0000000..fe3f114
--- /dev/null
+++ b/street_view_insights/notebooks/eval/utility_pole_eval_with_llm_judge.ipynb
@@ -0,0 +1,394 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "2f8577eb",
+ "metadata": {},
+ "source": [
+ "# Imagery Insights eval\n",
+ "\n",
+ "> Add blockquote\n",
+ "\n",
+ "This notebook demonstrates how to classify images from GCS URIs using the Gemini 1.5 Flash model via Google Cloud's Vertex AI."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
+
+
+
+
+
\ No newline at end of file
diff --git a/street_view_insights/samples/measure_height_from_cloud_run/Dockerfile b/street_view_insights/samples/measure_height_from_cloud_run/Dockerfile
new file mode 100644
index 0000000..02b9e1d
--- /dev/null
+++ b/street_view_insights/samples/measure_height_from_cloud_run/Dockerfile
@@ -0,0 +1,23 @@
+# Use an official Python runtime as a parent image
+FROM python:3.9-slim
+
+# Set the working directory in the container
+WORKDIR /app
+
+# Copy the dependencies file to the working directory
+COPY requirements.txt .
+
+# Install any needed packages specified in requirements.txt
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Copy the content of the local src directory to the working directory
+COPY . .
+
+# Make port 8080 available to the world outside this container
+EXPOSE 8080
+
+# Define environment variable
+ENV PORT 8080
+
+# Run the application
+CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--timeout", "120", "analyze_images:app"]
\ No newline at end of file
diff --git a/street_view_insights/samples/measure_height_from_cloud_run/README.md b/street_view_insights/samples/measure_height_from_cloud_run/README.md
new file mode 100644
index 0000000..43bc519
--- /dev/null
+++ b/street_view_insights/samples/measure_height_from_cloud_run/README.md
@@ -0,0 +1,55 @@
+# Image Classification Service with Gemini 2.5 Flash
+
+This project provides a web service for classifying images from GCS URIs using the Gemini 2.5 Flash model via Google Cloud's Vertex AI. It is designed to be deployed as a container on Google Cloud Run.
+
+## Prerequisites
+
+* Google Cloud SDK installed and authenticated.
+* A GCP project with Vertex AI and BigQuery APIs enabled.
+* A BigQuery table with a `gcs_uri` column containing the URIs of the images to be classified.
+
+## Configuration
+
+Before deploying the service, make sure to update the following variables in `analyze_images.py`:
+
+* `PROJECT_ID`: Your GCP Project ID.
+* `REGION`: The GCP region where Vertex AI is enabled.
+* `BIGQUERY_SQL_QUERY`: The BigQuery query to retrieve the GCS URIs.
+
+## Deployment to Cloud Run
+
+To deploy the service to Cloud Run, follow these steps:
+
+1. **Navigate to the project directory:**
+
+ ```bash
+ cd analyze_images_from_cloud_run
+ ```
+
+2. **Deploy to Cloud Run using gcloud:**
+
+ ```bash
+ gcloud run deploy analyze-images-cloud-run \
+ --project=sarthaks-lab \
+ --region=us-central1 \
+ --source . \
+ --allow-unauthenticated \
+ --platform managed \
+ --max-instances=1
+ ```
+
+ **Note:** The `--source .` command will build the container image from the `Dockerfile` in the current directory and deploy it to Cloud Run.
+
+## Usage
+
+Once the service is deployed, you can send a POST request to the service URL with a JSON payload to trigger the image classification.
+
+**Example using `curl`:**
+
+```bash
+curl -X POST -H "Content-Type: application/json" \
+-d '{"prompt": "What is in this image?"}' \
+YOUR_CLOUD_RUN_SERVICE_URL
+```
+
+The service will then execute the BigQuery query, classify the images, and return the results as a JSON response.
\ No newline at end of file
diff --git a/street_view_insights/samples/measure_height_from_cloud_run/analyze_images.py b/street_view_insights/samples/measure_height_from_cloud_run/analyze_images.py
new file mode 100644
index 0000000..b4ed837
--- /dev/null
+++ b/street_view_insights/samples/measure_height_from_cloud_run/analyze_images.py
@@ -0,0 +1,117 @@
+# Copyright 2023 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# -*- coding: utf-8 -*-
+"""
+# Image Classification Service with Gemini 2.5 Flash
+
+This script provides a web service for classifying images from GCS URIs using
+the Gemini 2.5 Flash model via Google Cloud's Vertex AI. It is designed to be
+deployed as a container on Google Cloud Run.
+"""
+
+# Import required libraries
+import json
+import os
+from flask import Flask, jsonify, request
+from google.cloud import bigquery
+import vertexai
+from vertexai.generative_models import GenerativeModel, Part
+
+# --- Configuration ---
+# IMPORTANT: Replace with your actual GCP Project ID and Region
+PROJECT_ID = 'sarthaks-lab'
+REGION = 'us-central1'
+
+# Initialize Flask app
+app = Flask(__name__)
+
+# --- BigQuery Configuration ---
+BIGQUERY_SQL_QUERY = """
+SELECT
+ *
+FROM
+ `sarthaks-lab.imagery_insights___preview___us.latest_observations`
+ WHERE asset_type = "ASSET_CLASS_UTILITY_POLE"
+
+LIMIT 10;
+"""
+
+def measure_height_with_gemini(gcs_uri: str, prompt: str) -> str:
+ """
+ Measures the height of a pole in an image using the Gemini 1.5 Pro model.
+ """
+ try:
+ model = GenerativeModel("gemini-2.5-pro")
+ image_part = Part.from_uri(uri=gcs_uri, mime_type="image/jpeg")
+ responses = model.generate_content([image_part, prompt],
+ generation_config={
+ "temperature": 0.0,
+ },
+ tools=[
+ vertexai.generative_models.Tool.from_google_search_retrieval(
+ vertexai.generative_models.grounding.GoogleSearchRetrieval()
+ )
+ ]
+ )
+ return responses.text
+ except Exception as e:
+ app.logger.error(f"Error measuring height from URI {gcs_uri}: {e}")
+ return "Height measurement failed."
+
+@app.route('/', methods=['POST'])
+def main():
+ """
+ Main endpoint to execute the BigQuery query, extract URIs,
+ and measure pole height using Gemini 2.5 Pro.
+ """
+ # Initialize Vertex AI
+ vertexai.init(project=PROJECT_ID, location=REGION)
+
+ # Execute BigQuery Query
+ try:
+ bigquery_client = bigquery.Client(project=PROJECT_ID)
+ query_job = bigquery_client.query(BIGQUERY_SQL_QUERY)
+ query_response_data = [dict(row) for row in query_job]
+ gcs_uris = [item.get("gcs_uri") for item in query_response_data if item.get("gcs_uri")]
+ except Exception as e:
+ app.logger.error(f"Error executing BigQuery query: {e}")
+ return jsonify({"error": "BigQuery query failed"}), 500
+
+ # Height Measurement Process
+ measurement_results = []
+ if not gcs_uris:
+ return jsonify({"message": "No GCS URIs found to measure."})
+
+ # Get prompt from request, with a default value
+ data = request.get_json()
+ prompt = data.get("prompt", """
+Follow these steps to analyze the image and calculate the height of the utility pole:
+1. Identify the utility pole in the image.
+2. Find a reference object in the image with a known or easily estimable real-world size (e.g., a car, a person, a standard door).
+3. Measure the height of the utility pole in pixels.
+4. Measure the height of the reference object in pixels.
+5. State the estimated real-world height of the reference object.
+6. Calculate the real-world height of the utility pole using the pixel ratio and the reference object's height.
+7. Provide the final calculated height of the pole in feet.
+""")
+
+ for uri in gcs_uris:
+ result = measure_height_with_gemini(uri, prompt)
+ measurement_results.append({"gcs_uri": uri, "height_measurement": result})
+
+ return jsonify(measurement_results)
+
+if __name__ == "__main__":
+ app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
diff --git a/street_view_insights/samples/measure_height_from_cloud_run/requirements.txt b/street_view_insights/samples/measure_height_from_cloud_run/requirements.txt
new file mode 100644
index 0000000..c54dea6
--- /dev/null
+++ b/street_view_insights/samples/measure_height_from_cloud_run/requirements.txt
@@ -0,0 +1,4 @@
+google-cloud-bigquery
+google-cloud-aiplatform
+flask
+gunicorn
\ No newline at end of file
diff --git a/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.md b/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.md
new file mode 100644
index 0000000..1867e80
--- /dev/null
+++ b/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.md
@@ -0,0 +1,57 @@
+# Export Street View Insights to Vertex AI Manged Datasets
+
+This directory contains `create_vertex_dataset.py`, a utility script designed to fetch Street View image URLs (`gcs_uri`s) from a BigQuery observations table and seamlessly format them into a JSONL file that complies with Vertex AI's import requirements for image datasets.
+
+Once generated, the JSONL file is uploaded to your specified Google Cloud Storage bucket so it can be ingested by Vertex AI Managed Datasets for training or visualization.
+
+## Prerequisites
+
+- You must have the Google Cloud SDK (`gcloud`) installed and authorized.
+- The default GCP Project must be correctly configured: `gcloud config set project PROJECT_ID`
+- The following Python packages must be installed:
+ `pip install google-cloud-bigquery google-cloud-storage`
+
+## 1. Configure the Variables
+
+Open the `create_vertex_dataset.py` script and examine the Default Configuration variables explicitly defined at the top of the file. You may modify these directly in the code or pass them via command-line arguments.
+
+The globally defined key variables are:
+- `PROJECT_ID`: The GCP Project ID (e.g., `imagery-insights-d1xs9z`)
+- `TABLE_ID`: The fully-qualified BigQuery table from which to fetch the raw image URIs. Ensure the table contains a column named `gcs_uri` (e.g., `sarthaks-lab.imagery_insights___preview___us.latest_observations`)
+- `DATASET_NAME`: The prefix name of the generated dataset (determines the output JSONL filename prefix).
+- `BUCKET_NAME`: The destination Google Cloud Storage bucket where the JSONL file will be uploaded (e.g., `god_level_bucket`).
+- `GCS_DESTINATION_FOLDER`: The folder *inside* the GCS bucket where the JSONL file will be stored (e.g., `misc`).
+- `LIMIT_URLS`: The maximum number of URLs to fetch from the table (useful for creating small sample datasets).
+
+## 2. Run the Script
+
+Run the script from your terminal:
+
+```bash
+# Run with default variables defined in the script file
+python3 create_vertex_dataset.py
+
+# Or, override the variables using command-line arguments
+python3 create_vertex_dataset.py \
+ --dataset_name custom_streetview_dataset \
+ --limit 500 \
+ --table_id "PROJECT_ID.imagery_insights___preview___us.latest_observations"
+```
+
+The script will query BigQuery, locally generate a JSONL file ending with a random 4-letter alphanumeric suffix to guarantee uniqueness (e.g. `imagery_insights_sample_10_abcd.jsonl`), and upload it to your destination GCS bucket.
+
+At the end of the script's output, it will print the **GCS URI** of the uploaded file. **Copy this URI**, you will need it in the next step.
+
+## 3. Import the file in Vertex AI
+
+To visualize the resulting dataset within Vertex AI for analysis or training, follow the standard Managed Dataset import flow. For detailed documentation, see the official [Vertex AI Docs](https://cloud.google.com/vertex-ai/docs/training/using-managed-datasets).
+
+1. Navigate to the Google Cloud Console and open **Vertex AI > Datasets**.
+2. Click **+ CREATE** at the top.
+3. Name your dataset and select **Image** > **Image classification (Single-label)** or whichever data type is most appropriate for your application, and select your project's region.
+4. Click **Create** to proceed to the Data Import screen.
+5. Choose **Select import files from Cloud Storage**.
+6. Paste the **GCS URI** that was copied at the end of Step 2 (e.g., `gs://god_level_bucket/misc/imagery_insights_sample_10_abcd.jsonl`) into the *Import file path* box.
+7. Click **Continue**.
+
+Vertex AI will parse the JSONL file and begin pulling the image URLs into the dataset interface. Once the ingestion job finishes, you can explore the Street View data visually within the UI.
diff --git a/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.py b/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.py
new file mode 100644
index 0000000..5f559dc
--- /dev/null
+++ b/street_view_insights/samples/visualize_image_snippets_in_vertex/create_vertex_dataset.py
@@ -0,0 +1,117 @@
+import os
+import json
+import argparse
+import random
+import string
+from google.cloud import bigquery
+from google.cloud import storage
+
+# Default configuration
+PROJECT_ID = "imagery-insights-d1xs9z"
+TABLE_ID = "sarthaks-lab.imagery_insights___preview___us.latest_observations"
+DATASET_NAME = "imagery_insights_sample"
+BUCKET_NAME = "god_level_bucket"
+GCS_DESTINATION_FOLDER = "misc"
+LIMIT_URLS = 10
+
+def export_to_vertex_jsonl(project_id, table_id, dataset_name, bucket_name, gcs_folder, output_filename, include_labels, limit):
+ """
+ Queries BigQuery for image URLs and creates a JSONL file for Vertex AI Managed Datasets.
+ """
+ print(f"Querying BigQuery table: {table_id} with limit: {limit}")
+ bq_client = bigquery.Client(project=project_id)
+
+ limit_clause = f"LIMIT {limit}" if limit and limit > 0 else ""
+
+ if include_labels:
+ # Group by gcs_uri and collect unique labels for multi-label image classification
+ query = f"""
+ SELECT
+ gcs_uri,
+ ARRAY_AGG(DISTINCT asset_type IGNORE NULLS) as labels
+ FROM `{table_id}`
+ WHERE gcs_uri IS NOT NULL AND gcs_uri LIKE 'gs://%'
+ GROUP BY gcs_uri
+ {limit_clause}
+ """
+ print("Including labels (multi-label image classification format)...")
+ else:
+ # Just grab unique image URIs for an unlabelled dataset
+ query = f"""
+ SELECT DISTINCT gcs_uri
+ FROM `{table_id}`
+ WHERE gcs_uri IS NOT NULL AND gcs_uri LIKE 'gs://%'
+ {limit_clause}
+ """
+ print("Extracting only image URIs (unlabeled dataset format)...")
+
+ query_job = bq_client.query(query)
+ results = query_job.result()
+
+ print(f"Writing results to local file: {output_filename}")
+ count = 0
+ with open(output_filename, 'w') as f:
+ for row in results:
+ if include_labels:
+ # Vertex AI multi-label image classification format
+ annotations = [{"displayName": label} for label in row.labels if label]
+ if not annotations:
+ continue # Skip images with no labels if we explicitly requested labels
+ json_record = {
+ "imageGcsUri": row.gcs_uri,
+ "classificationAnnotations": annotations
+ }
+ else:
+ # Vertex AI unlabeled image format
+ json_record = {
+ "imageGcsUri": row.gcs_uri
+ }
+ f.write(json.dumps(json_record) + "\n")
+ count += 1
+
+ print(f"Successfully wrote {count} records to {output_filename}")
+
+ if count == 0:
+ print("No records found. Exiting without uploading.")
+ return
+
+ # Upload to GCS
+ destination_blob_name = f"{gcs_folder}/{output_filename}" if gcs_folder else output_filename
+ print(f"Uploading {output_filename} to gs://{bucket_name}/{destination_blob_name} ...")
+
+ storage_client = storage.Client(project=project_id)
+ bucket = storage_client.bucket(bucket_name)
+ blob = bucket.blob(destination_blob_name)
+
+ blob.upload_from_filename(output_filename)
+
+ print(f"Upload complete!")
+ print(f"GCS URI: gs://{bucket_name}/{destination_blob_name}")
+ print("You can now use this URI to import data into a Managed Dataset in Vertex AI.")
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Export image URLs from BigQuery to a JSONL file for Vertex AI.")
+ parser.add_argument("--project_id", type=str, default=PROJECT_ID, help="Google Cloud Project ID")
+ parser.add_argument("--table_id", type=str, default=TABLE_ID, help="BigQuery Table ID")
+ parser.add_argument("--dataset_name", type=str, default=DATASET_NAME, help="Name of the Dataset (controls output file prefix)")
+ parser.add_argument("--bucket_name", type=str, default=BUCKET_NAME, help="Destination GCS Bucket Name")
+ parser.add_argument("--gcs_folder", type=str, default=GCS_DESTINATION_FOLDER, help="Destination GCS Folder Path")
+ parser.add_argument("--limit", type=int, default=LIMIT_URLS, help="Maximum number of URLs to fetch")
+ parser.add_argument("--include_labels", action="store_true", help="Include asset_class as labels in Vertex AI Multi-Label Classification format.")
+
+ args = parser.parse_args()
+
+ # Construct dynamic output filename: dataset_limit_random4.jsonl
+ random_suffix = ''.join(random.choices(string.ascii_lowercase, k=4))
+ out_file = f"{args.dataset_name}_{args.limit}_{random_suffix}.jsonl"
+
+ export_to_vertex_jsonl(
+ project_id=args.project_id,
+ table_id=args.table_id,
+ dataset_name=args.dataset_name,
+ bucket_name=args.bucket_name,
+ gcs_folder=args.gcs_folder,
+ output_filename=out_file,
+ include_labels=args.include_labels,
+ limit=args.limit
+ )