Files
boc/iom/sdk/python
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00
..

Landvex Python SDK

Official Python client for Landvex Urban Intelligence API.

Installation

pip install landvex

Or from source:

git clone https://github.com/landvex/python-sdk.git
cd python-sdk
pip install -e .

Quick Start

from landvex import create_client

# Initialize client
client = create_client("your-api-key")

# Check API health
health = client.health_check()
print(f"Status: {health['status']}")

# List observations
observations = client.list_observations(
    lat=59.3293,
    lng=18.0686,
    radius=1000,
    limit=100
)

for obs in observations:
    print(f"{obs.id}: {obs.obj_type} (condition: {obs.condition}/5)")

# Get RGI score
rgi = client.get_rgi(59.3293, 18.0686)
print(f"RGI: {rgi['rgi']}")

# Get recommendations
recommendations = client.get_recommendations(
    stakeholder="municipality",
    lat=59.3293,
    lng=18.0686
)

for rec in recommendations['recommendations']:
    print(f"- {rec['recommendation']} (impact: {rec['expected_impact']})")

API Reference

Client Initialization

from landvex import LandvexClient

client = LandvexClient(
    api_key="your-api-key",
    base_url="https://api.landvex.com/v1"  # Optional
)

Observations

# List observations
observations = client.list_observations(
    lat=59.3293,      # Optional: filter by location
    lng=18.0686,      # Optional: filter by location
    radius=1000,      # Optional: search radius in meters
    limit=100,        # Optional: max results
    status="approved" # Optional: filter by status
)

# Get single observation
obs = client.get_observation("OBS-001247")

# Create observation
new_obs = client.create_observation(
    lat=59.3293,
    lng=18.0686,
    image_url="https://...",
    evidence={...}
)

Missions

# List missions
missions = client.list_missions(status="active")

# Accept mission
client.accept_mission("M001")

Indexes

# Reality Gap Index
rgi = client.get_rgi(59.3293, 18.0686)

# Urban Morphology Index
umi = client.get_umi(59.3293, 18.0686)

Visual Geolocation

# Analyze image
result = client.analyze_image(
    image_path="/path/to/image.jpg",
    image_id="optional-id"
)

# Batch analyze
results = client.batch_analyze([
    {"path": "image1.jpg", "id": "1"},
    {"path": "image2.jpg", "id": "2"},
])

Decisions

recommendations = client.get_recommendations(
    stakeholder="municipality",  # or "property_owner", "citizen"
    lat=59.3293,
    lng=18.0686
)

Data Models

Observation

@dataclass
class Observation:
    id: str
    lat: float
    lng: float
    condition: int  # 1-5
    obj_type: str
    zoomer: str
    status: str
    date: str
    rgi: Optional[float]

Mission

@dataclass
class Mission:
    id: str
    title: str
    description: str
    category: str
    difficulty: str
    reward_usd: float
    total_observations: int
    completed_observations: int
    deadline: str

Error Handling

from requests.exceptions import HTTPError

try:
    observations = client.list_observations()
except HTTPError as e:
    if e.response.status_code == 401:
        print("Invalid API key")
    elif e.response.status_code == 429:
        print("Rate limit exceeded")
    else:
        print(f"Error: {e}")

Requirements

  • Python 3.7+
  • requests

License

MIT