Source code for satorbis_kit.vector_operation.wherobots_geojson
"""
Wherobots GeoJSON Operations
Functions for GeoJSON to GeoParquet conversion on Wherobots Cloud.
"""
from datetime import datetime
from typing import List, Optional
from .wherobots_config import (
DEFAULT_API_KEY,
DEFAULT_GEOJSON_TO_GEOPARQUET_SCRIPT,
DEFAULT_REGION,
DEFAULT_RUNTIME,
DEFAULT_SCRIPT_BASE_URI,
)
from .wherobots_status import submit_job
[docs]
def geojson_to_geoparquet_wherobots(
input_paths: List[str],
output_path: str,
api_key: Optional[str] = None,
region: Optional[str] = None,
script_base_uri: Optional[str] = None,
runtime: Optional[str] = None,
timeout_seconds: Optional[int] = None,
job_name_prefix: str = "geojson-to-geoparquet",
) -> dict:
"""
Submit a GeoJSON to GeoParquet conversion job to Wherobots Cloud.
Args:
input_paths: List of input GeoJSON file paths (can include wildcards)
output_path: Output GeoParquet file path
api_key: Wherobots API key (optional, uses hardcoded default if None)
region: Wherobots region (optional, uses hardcoded default if None)
script_base_uri: Base URI for scripts (optional, uses hardcoded default if None)
runtime: Runtime size (optional, defaults to "tiny")
timeout_seconds: Job timeout (optional, defaults to 3600)
job_name_prefix: Job name prefix (optional)
Returns:
Dictionary with job submission result
Example:
>>> result = geojson_to_geoparquet_wherobots(
... input_paths=["s3://bucket/input.geojson"],
... output_path="s3://bucket/output.parquet",
... )
"""
api_key = api_key or DEFAULT_API_KEY
region = region or DEFAULT_REGION
script_base_uri = script_base_uri or DEFAULT_SCRIPT_BASE_URI
runtime = runtime or DEFAULT_RUNTIME
timeout_seconds = timeout_seconds or 3600
script_uri = f"{script_base_uri.rstrip('/')}/{DEFAULT_GEOJSON_TO_GEOPARQUET_SCRIPT}"
script_args = ["--input-paths"] + input_paths + ["--output-path", output_path]
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
job_name = f"{job_name_prefix}-{timestamp}"
result = submit_job(
api_key=api_key,
region=region,
script_uri=script_uri,
script_args=script_args,
runtime=runtime,
name=job_name,
timeout_seconds=timeout_seconds,
)
return result