Google Maps Route Optimization API client library for assigning tasks and routes to vehicle fleets while optimizing against custom objectives and constraints.
—
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.
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 configurationretry: Optional retry configuration for the requesttimeout: Optional timeout for the request (float seconds or object)metadata: Optional metadata sequence for the requestReturns: operation.Operation - Long Running Operation handle for monitoring progress
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 configurationclass BatchOptimizeToursResponse:
# Empty message - results are written to Cloud Storage locations specified in the request
passclass BatchOptimizeToursMetadata:
# Metadata for the batch optimization LRO
passclass InputConfig:
gcs_source: Optional[GcsSource] # Google Cloud Storage source
data_format: Optional[DataFormat] # File format (JSON or PROTO_TEXT)class OutputConfig:
gcs_destination: Optional[GcsDestination] # Google Cloud Storage destination
data_format: Optional[DataFormat] # File format (JSON or PROTO_TEXT)class GcsSource:
uri: str # Required. GCS URI (e.g., "gs://bucket/input.json")class GcsDestination:
uri: str # Required. GCS URI (e.g., "gs://bucket/output.json")class DataFormat(enum.Enum):
DATA_FORMAT_UNSPECIFIED = 0 # Invalid value
JSON = 1 # JavaScript Object Notation
PROTO_TEXT = 2 # Protocol Buffers text formatfrom 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}")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)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)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
}
}
}
]
}
}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