CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-google-maps-routeoptimization

Google Maps Route Optimization API client library for assigning tasks and routes to vehicle fleets while optimizing against custom objectives and constraints.

Pending
Overview
Eval results
Files

batch-operations.mddocs/

Batch Operations

Batch processing capabilities for optimizing multiple route optimization requests as long-running operations with Cloud Storage integration. This allows processing large numbers of optimization requests asynchronously with results stored in Google Cloud Storage.

Capabilities

batch_optimize_tours

Optimizes vehicle tours for multiple requests as a batch Long Running Operation (LRO). Input and output files are read from and written to Cloud Storage.

def batch_optimize_tours(
    request: BatchOptimizeToursRequest,
    *,
    retry: Optional[Retry] = gapic_v1.method.DEFAULT,
    timeout: Union[float, object] = gapic_v1.method.DEFAULT,
    metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()
) -> operation.Operation: ...

Parameters:

  • request: BatchOptimizeToursRequest - Batch optimization request with input/output configuration
  • retry: Optional retry configuration for the request
  • timeout: Optional timeout for the request (float seconds or object)
  • metadata: Optional metadata sequence for the request

Returns: operation.Operation - Long Running Operation handle for monitoring progress

Request/Response Types

BatchOptimizeToursRequest

class BatchOptimizeToursRequest:
    parent: str  # Required. Format: "projects/{project-id}" or "projects/{project-id}/locations/{location-id}"
    model_configs: Sequence[AsyncModelConfig]  # Required. Input/output configuration for each model
    
    class AsyncModelConfig:
        display_name: str  # Optional. Display name for this model config
        input_config: InputConfig  # Required. Input file configuration
        output_config: OutputConfig  # Required. Output file configuration

BatchOptimizeToursResponse

class BatchOptimizeToursResponse:
    # Empty message - results are written to Cloud Storage locations specified in the request
    pass

BatchOptimizeToursMetadata

class BatchOptimizeToursMetadata:
    # Metadata for the batch optimization LRO
    pass

File I/O Configuration

InputConfig

class InputConfig:
    gcs_source: Optional[GcsSource]  # Google Cloud Storage source
    data_format: Optional[DataFormat]  # File format (JSON or PROTO_TEXT)

OutputConfig

class OutputConfig:
    gcs_destination: Optional[GcsDestination]  # Google Cloud Storage destination
    data_format: Optional[DataFormat]  # File format (JSON or PROTO_TEXT)

GcsSource

class GcsSource:
    uri: str  # Required. GCS URI (e.g., "gs://bucket/input.json")

GcsDestination

class GcsDestination:
    uri: str  # Required. GCS URI (e.g., "gs://bucket/output.json")

DataFormat

class DataFormat(enum.Enum):
    DATA_FORMAT_UNSPECIFIED = 0  # Invalid value
    JSON = 1  # JavaScript Object Notation
    PROTO_TEXT = 2  # Protocol Buffers text format

Usage Examples

Basic Batch Operation

from google.maps import routeoptimization_v1

client = routeoptimization_v1.RouteOptimizationClient()

# Create batch request with multiple input files
request = routeoptimization_v1.BatchOptimizeToursRequest(
    parent="projects/my-project",
    model_configs=[
        routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(
            display_name="Route Set 1",
            input_config=routeoptimization_v1.InputConfig(
                gcs_source=routeoptimization_v1.GcsSource(
                    uri="gs://my-bucket/input/route_set_1.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            ),
            output_config=routeoptimization_v1.OutputConfig(
                gcs_destination=routeoptimization_v1.GcsDestination(
                    uri="gs://my-bucket/output/route_set_1_result.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            )
        ),
        routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(
            display_name="Route Set 2",
            input_config=routeoptimization_v1.InputConfig(
                gcs_source=routeoptimization_v1.GcsSource(
                    uri="gs://my-bucket/input/route_set_2.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            ),
            output_config=routeoptimization_v1.OutputConfig(
                gcs_destination=routeoptimization_v1.GcsDestination(
                    uri="gs://my-bucket/output/route_set_2_result.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            )
        )
    ]
)

# Start batch operation
operation = client.batch_optimize_tours(request=request)

print(f"Batch operation started: {operation.name}")

Monitoring Batch Operation

from google.maps import routeoptimization_v1
import time

client = routeoptimization_v1.RouteOptimizationClient()

# Start batch operation (from previous example)
operation = client.batch_optimize_tours(request=request)

# Monitor progress
while not operation.done():
    print("Batch optimization in progress...")
    time.sleep(30)  # Wait 30 seconds
    operation = client.get_operation(name=operation.name)

# Check results
if operation.error:
    print(f"Batch operation failed: {operation.error}")
else:
    print("Batch optimization completed successfully")
    print("Results are available in the specified GCS output locations")
    
    # Access results from Cloud Storage
    # (Results are written to the GCS URIs specified in output_config)

Multiple File Formats

from google.maps import routeoptimization_v1

client = routeoptimization_v1.RouteOptimizationClient()

# Process different file formats
request = routeoptimization_v1.BatchOptimizeToursRequest(
    parent="projects/my-project",
    model_configs=[
        # JSON input/output
        routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(
            display_name="JSON Processing",
            input_config=routeoptimization_v1.InputConfig(
                gcs_source=routeoptimization_v1.GcsSource(
                    uri="gs://my-bucket/input.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            ),
            output_config=routeoptimization_v1.OutputConfig(
                gcs_destination=routeoptimization_v1.GcsDestination(
                    uri="gs://my-bucket/output.json"
                ),
                data_format=routeoptimization_v1.DataFormat.JSON
            )
        ),
        # Protocol Buffer text format
        routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(
            display_name="Proto Text Processing",
            input_config=routeoptimization_v1.InputConfig(
                gcs_source=routeoptimization_v1.GcsSource(
                    uri="gs://my-bucket/input.pbtxt"
                ),
                data_format=routeoptimization_v1.DataFormat.PROTO_TEXT
            ),
            output_config=routeoptimization_v1.OutputConfig(
                gcs_destination=routeoptimization_v1.GcsDestination(
                    uri="gs://my-bucket/output.pbtxt"
                ),
                data_format=routeoptimization_v1.DataFormat.PROTO_TEXT
            )
        )
    ]
)

operation = client.batch_optimize_tours(request=request)

Input File Format

Each input file should contain a single OptimizeToursRequest in the specified format:

JSON format example:

{
  "parent": "projects/my-project",
  "model": {
    "shipments": [
      {
        "displayName": "Package 1",
        "deliveries": [
          {
            "location": {
              "latLng": {
                "latitude": 37.7749,
                "longitude": -122.4194
              }
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "displayName": "Vehicle 1",
        "startLocation": {
          "latLng": {
            "latitude": 37.7649,
            "longitude": -122.4294
          }
        }
      }
    ]
  }
}

Output File Format

Each output file will contain a single OptimizeToursResponse with the optimized routes and metrics in the requested format.

Install with Tessl CLI

npx tessl i tessl/pypi-google-maps-routeoptimization

docs

batch-operations.md

client-configuration.md

data-model.md

index.md

route-optimization.md

tile.json