smart-spatial-system 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/PKG-INFO +48 -1
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/README.md +47 -0
- smart_spatial_system-0.2.6/config/plugins/ring_buffer_analysis.example.yaml +16 -0
- smart_spatial_system-0.2.6/config/plugins/ring_buffer_analysis.yaml +16 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/llm_spec_generator.py +30 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/op_catalog.py +35 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plugin_modules.py +1 -0
- smart_spatial_system-0.2.6/plugins/ring_buffer_analysis.py +409 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/spatial_predicate.py +4 -1
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/pyproject.toml +1 -1
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/PKG-INFO +48 -1
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/SOURCES.txt +4 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_spec_generator.py +23 -0
- smart_spatial_system-0.2.6/tests/test_ring_buffer_analysis.py +191 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/LICENSE +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/auth.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/main.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/data_source_connectors.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/data_sources.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/plugins_settings.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/projects.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/query_planner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/requests_outputs.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/system.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/uploads.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/routers/weights.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/api/support.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/area_perimeter_calc.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/area_perimeter_calc.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/attribute_statistics.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/attribute_statistics.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/band_math.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/band_math.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/buffer_analysis.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/buffer_analysis.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/centroid_extractor.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/centroid_extractor.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/core_vector.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/core_vector.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/crs_transformer.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/crs_transformer.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/data_writer_exporter.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/data_writer_exporter.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/dissolve_aggregator.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/dissolve_aggregator.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/distance_calculator.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/distance_calculator.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/feature_enrichment.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/feature_enrichment.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/feature_scoring.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/feature_scoring.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/geocoding_resolver.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/geocoding_resolver.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/geometry_validator.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/geometry_validator.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/local_raster_loader.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/local_raster_loader.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/local_vector_loader.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/local_vector_loader.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/ndvi_calculator.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/ndvi_calculator.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/nearest_neighbor.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/nearest_neighbor.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/postgis_connector.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/postgis_connector.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_clip_mask.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_clip_mask.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_reclassify.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_reclassify.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_statistics.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_statistics.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_threshold.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_threshold.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_to_vector.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/raster_to_vector.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/risk_enrichment.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/risk_enrichment.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/slope_aspect.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_intersection.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_intersection.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_join.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_join.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_predicate.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_predicate.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_query_filter.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spatial_query_filter.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spectral_indices.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/spectral_indices.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/wms_wfs_fetcher.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/wms_wfs_fetcher.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/zonal_statistics.example.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/config/plugins/zonal_statistics.yaml +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/audit.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/capability_registry.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/capability_router.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/capability_scoring.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/data_source_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/error_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/feedback.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/feedback_proposal_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/input_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/input_reference_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/kernel_artifacts.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/learning_signals.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/llm_client.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/llm_gate.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/llm_intent_planner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/loader_plugin_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/map_layer_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/map_layers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/models.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/natural_query_runner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/output_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/output_storage.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/pipeline_executor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plan_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/capability_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/dag.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/dag_executor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/kernel_execution_bridge.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/kernel_plan_adapter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/llm_query_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/output_parity.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/planner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/postgis_semantic_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/query_spec_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/report_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/runner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/semantic_planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plugin_config_store.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plugin_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plugin_runtime_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/plugin_state.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/production_response.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/project_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/project_store.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/provider_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/query_execution_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/query_parser.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/request_history_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/response_assembler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/response_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/router_decision.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/routing_aware_natural_query_runner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/routing_aware_plan_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/runtime_paths.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/upload_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/upload_storage.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/weight_proposals.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/weight_store_persistence.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/weighted_router.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/_shared/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/_shared/local_path_validation.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/_shared/numeric_validation.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/_shared/plugin_config.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/area_perimeter_calc.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/attribute_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/band_math.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/buffer_analysis.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/centroid_extractor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/core_vector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/crs_transformer.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/data_writer_exporter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/dissolve_aggregator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/distance_calculator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/feature_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/feature_scoring.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/geocoding_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/geometry_validator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/local_raster_loader.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/local_vector_loader.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/ndvi_analysis.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/ndvi_calculator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/nearest_neighbor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/pdf_renderer.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/postgis_connector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/raster_clip_mask.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/raster_reclassify.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/raster_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/raster_threshold.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/raster_to_vector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/real_estate_scoring.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/real_estate_spatial_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/report_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/risk_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/slope_aspect.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/spatial_intersection.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/spatial_join.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/spatial_query_filter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/spectral_indices.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/wms_wfs_fetcher.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/plugins/zonal_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/setup.cfg +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/__main__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/data_source_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/feedback_proposal_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/llm_intent_adapter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/map_layer_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/output_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/planning_execution_policy.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/planning_response_adapter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/plugin_runtime_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/project_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/accessibility_query_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/direct_query_dispatch.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/natural_query_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/natural_query_dispatch.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/natural_query_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/natural_query_failure.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/natural_query_persistence.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/planning_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/planning_persistence.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/planning_response.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/postgis_planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_analysis_inspector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_classifier.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_document_renderer.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_missing_inputs.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_ranking_artifacts.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_ranking_direct_handler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_ranking_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_ranking_query_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_ranking_response.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_report_payload.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution/real_estate_scoring.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_execution_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/query_spec_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/real_estate_spatial_helpers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/request_history_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/system_status_query_handler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/upload_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/vector_display_handler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/vector_geojson_helpers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/application/services/vector_query_classifier.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/cli.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/domain/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/domain/contracts/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/domain/models/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/infrastructure/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/infrastructure/stores/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/interfaces/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/interfaces/api/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/interfaces/api/routers/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/plugins/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/runtime/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/shared/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/workflows/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/workflows/ndvi/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system/workflows/real_estate/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/dependency_links.txt +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/entry_points.txt +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/requires.txt +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/smart_spatial_system.egg-info/top_level.txt +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/templates/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/templates/reports/__init__.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/templates/reports/real_estate_report.html +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_accessibility_query_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_auth.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_contract_smoke.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_data_source_connectors_e2e.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_map_layers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_mvp.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_outputs.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_projects.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_structured_error_normalization.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_upload_plugin_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_api_uploads.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_area_perimeter_calc.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_attribute_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_band_math.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_buffer_analysis.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_centroid_extractor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_cli.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_crs_transformer.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_data_source_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_data_writer_exporter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_deterministic_planner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_dissolve_aggregator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_distance_calculator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_document_file_report_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_end_to_end_natural_query_pipeline.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_error_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_feature_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_feature_scoring.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_frontend_api_surface_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_geocoding_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_geocoding_resolver_error_redaction.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_geometry_validator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_input_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_input_reference_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_input_reference_resolver_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_kernel_artifacts.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_kernel_execution_bridge.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_kernel_plan_adapter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_intent_adapter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_raster_queryspec_normalization.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_spec_generator_prenormalize.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_spec_generator_semantic_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_spec_generator_semantic_query_database_enrich.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_llm_spec_generator_semantic_queryspec_repair.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_loader_plugin_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_local_path_validation.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_local_raster_loader.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_local_raster_loader_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_local_vector_loader.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_local_vector_loader_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_map_layer_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_map_layer_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_ndvi_calculator.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_nearest_neighbor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_numeric_validation.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_op_catalog_semantic_aliases.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_audit.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_audit_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_data_source_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_feedback.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_feedback_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_keyword_scoring_router.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_learning_signals.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_learning_signals_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_llm_gate.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_llm_gate_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_map_layer_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_natural_query_pipeline.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_output_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_production_response.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_production_response_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_project_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_query_execution_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_registry_router.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_router_decision.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_router_decision_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_routing_aware_plan_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_runtime_paths.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_service_domain_boundary_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_service_postgis_dedup_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_statistics_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_upload_service_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weight_proposals.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weight_proposals_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weight_store_persistence.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weight_store_persistence_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weighted_router.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_orchestrator_weighted_router_integration.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_output_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_output_storage.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_pdf_renderer.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_phase3_kernel_registry_coverage.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_phase3_output_parity.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_phase3_postgis_provider_kernel_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_dag_executor.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_dag_executor_async_capability.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_execution_policy.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_raster_op_catalog_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_raster_queryspec_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_registry_backed_raster_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_registry_backed_real_estate_execution.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_planning_runner.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_plugin_boundary_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_plugin_config.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_plugin_config_store.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_plugin_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_plugin_modules.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_postgis_connector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_postgis_connector_percent_escape.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_postgis_semantic_resolver.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_project_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_project_store.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_provider_error_mapping.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_dispatch_domain_boundary_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_execution_postgis_planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_execution_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_execution_service_domain_import_boundary_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_response_shape_golden.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_query_spec_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_capability_registry_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_clip_mask.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_reclassify.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_statistics.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_threshold.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_raster_to_vector.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_ranking_bridge.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_ranking_golden.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_ranking_query_spec_planning.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_scoring_plugin.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_spatial_enrichment_plugin.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_real_estate_spatial_helpers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_report_builder.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_report_spec.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_request_document_download_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_response_assembler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_response_output_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_risk_enrichment.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_runtime_paths.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_semantic_planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_auto_postgis_semantic_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_planning_artifacts.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_postgis_runtime_connection_injection.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_semantic_planning_context.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_strict_loader_contract.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_service_structured_error_normalization.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_slope_aspect.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_spatial_intersection.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_spatial_join.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_spatial_query_filter.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_spectral_indices.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_system_status_query_handler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_upload_service.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_upload_storage.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_vector_display_handler.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_vector_geojson_helpers.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_vector_query_classifier.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_wms_wfs_fetcher.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_wms_wfs_fetcher_error_redaction.py +0 -0
- {smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/tests/test_zonal_statistics.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart_spatial_system
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: Plugin-based GeoAI backend: natural-language questions become QuerySpecs, DAG plans, and map/table/report outputs.
|
|
5
5
|
Author: Araz Shah
|
|
6
6
|
License-Expression: MIT
|
|
@@ -49,14 +49,48 @@ Dynamic: license-file
|
|
|
49
49
|
|
|
50
50
|
# Smart Spatial System
|
|
51
51
|
|
|
52
|
+
[](https://pypi.org/project/smart-spatial-system/)
|
|
53
|
+
[](https://github.com/arazshah/smart_spatial_system/actions/workflows/ci.yml)
|
|
54
|
+
[](LICENSE)
|
|
55
|
+
[](pyproject.toml)
|
|
56
|
+
|
|
52
57
|
**Ask a geospatial question in plain language and get map layers, tables, reports and files back.**
|
|
53
58
|
|
|
59
|
+
**[s3geo.com](https://s3geo.com)** — project site, plugin catalog and case-study index.
|
|
60
|
+
|
|
54
61
|
Smart Spatial System is a plugin-based GeoAI backend with a React workbench. A question such as *"rank these candidate properties by distance to metro stations, malls and main roads"* is turned into a structured `QuerySpec`, planned as a DAG of spatial operations, executed by plugins against uploaded files or PostGIS, and returned as map-ready outputs with a full execution trace.
|
|
55
62
|
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
Real, unedited terminal output from [`examples/accessibility_analysis.py`](examples/accessibility_analysis.py) — no server, no LLM, deterministic by construction. Run it yourself after installing below.
|
|
66
|
+
|
|
56
67
|
It is the application built on top of [geochat-platform](https://github.com/arazshah/geochat-platform): plugins are written with `geochat_sdk` and executed through `geochat_kernel`.
|
|
57
68
|
|
|
58
69
|
> **Status:** published and usable, still refactoring internally. Logic is moving out of `orchestrator/` into the layered `smart_spatial_system/` package (see [docs/ARCHITECTURE_TARGET.md](docs/ARCHITECTURE_TARGET.md)); the `orchestrator/*_service.py` modules are compatibility shims during that move. The public surface - the CLI, the HTTP API and the documented entry points below - is stable.
|
|
59
70
|
|
|
71
|
+
## Why this, not a general-purpose LLM agent with a GIS tool belt
|
|
72
|
+
|
|
73
|
+
The natural alternative is: give an LLM function-calling access to some GIS
|
|
74
|
+
functions and let it decide what to call. This project deliberately doesn't
|
|
75
|
+
stop there, for reasons that turned out to matter in practice, not just in
|
|
76
|
+
theory - see [`smart-spatial-vienna-accessibility`](https://github.com/arazshah/smart-spatial-vienna-accessibility)'s
|
|
77
|
+
case study and [`CHANGELOG.md`](CHANGELOG.md)'s `0.2.1`-`0.2.4` entries for
|
|
78
|
+
five real bugs this surfaced and fixed:
|
|
79
|
+
|
|
80
|
+
- **A deterministic path exists alongside the LLM path**, built from the same
|
|
81
|
+
operation catalog (`OP_CATALOG`). The same analysis can be run by rule and
|
|
82
|
+
by LLM, so "is the LLM's plan reliable" is a measurable question (Plan
|
|
83
|
+
Agreement Rate, Rank Stability - see [docs/CASE_STUDIES.md](docs/CASE_STUDIES.md)), not
|
|
84
|
+
a leap of faith.
|
|
85
|
+
- **Every LLM-generated plan is validated before execution**, not just before
|
|
86
|
+
syntax errors: missing input roles, an unchained multi-factor scoring step,
|
|
87
|
+
an asymmetric CRS reprojection, an untyped scoring factor - each is a
|
|
88
|
+
distinct, previously-silent failure mode this system now catches and raises
|
|
89
|
+
a specific error for, before spending a single second executing.
|
|
90
|
+
- **Every plugin carries a full execution trace** - which operations ran, in
|
|
91
|
+
what order, with what parameters - so a wrong answer is debuggable, not a
|
|
92
|
+
black box.
|
|
93
|
+
|
|
60
94
|
---
|
|
61
95
|
|
|
62
96
|
## How a query runs
|
|
@@ -265,6 +299,15 @@ Full deployment guide - environment variables, authentication, CORS, PostGIS:
|
|
|
265
299
|
|
|
266
300
|
Full request and response contracts are in [docs/phase5_query_api_contract.md](docs/phase5_query_api_contract.md) and the other `docs/phase5_*` files.
|
|
267
301
|
|
|
302
|
+
## Research and case studies
|
|
303
|
+
|
|
304
|
+
Looking for a study to build on this system, or to see one already done?
|
|
305
|
+
[docs/CASE_STUDIES.md](docs/CASE_STUDIES.md) has a catalog of suggested
|
|
306
|
+
studies (accessibility, risk-aware siting, vegetation change, zoning
|
|
307
|
+
compliance, and a reproducibility-methodology replication) plus what's
|
|
308
|
+
*not* a good fit yet. If you use this software in published work, see
|
|
309
|
+
[CITATION.cff](CITATION.cff).
|
|
310
|
+
|
|
268
311
|
## Development
|
|
269
312
|
|
|
270
313
|
```bash
|
|
@@ -272,6 +315,10 @@ pytest # full suite
|
|
|
272
315
|
ruff check . # lint
|
|
273
316
|
```
|
|
274
317
|
|
|
318
|
+
Contributions are welcome - see [CONTRIBUTING.md](CONTRIBUTING.md). Found a
|
|
319
|
+
security issue? See [SECURITY.md](SECURITY.md) rather than opening a public
|
|
320
|
+
issue.
|
|
321
|
+
|
|
275
322
|
## Author
|
|
276
323
|
|
|
277
324
|
[Araz Shahkarami](https://github.com/arazshah) · [araz.me](https://araz.me)
|
|
@@ -1,13 +1,47 @@
|
|
|
1
1
|
# Smart Spatial System
|
|
2
2
|
|
|
3
|
+
[](https://pypi.org/project/smart-spatial-system/)
|
|
4
|
+
[](https://github.com/arazshah/smart_spatial_system/actions/workflows/ci.yml)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](pyproject.toml)
|
|
7
|
+
|
|
3
8
|
**Ask a geospatial question in plain language and get map layers, tables, reports and files back.**
|
|
4
9
|
|
|
10
|
+
**[s3geo.com](https://s3geo.com)** — project site, plugin catalog and case-study index.
|
|
11
|
+
|
|
5
12
|
Smart Spatial System is a plugin-based GeoAI backend with a React workbench. A question such as *"rank these candidate properties by distance to metro stations, malls and main roads"* is turned into a structured `QuerySpec`, planned as a DAG of spatial operations, executed by plugins against uploaded files or PostGIS, and returned as map-ready outputs with a full execution trace.
|
|
6
13
|
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
Real, unedited terminal output from [`examples/accessibility_analysis.py`](examples/accessibility_analysis.py) — no server, no LLM, deterministic by construction. Run it yourself after installing below.
|
|
17
|
+
|
|
7
18
|
It is the application built on top of [geochat-platform](https://github.com/arazshah/geochat-platform): plugins are written with `geochat_sdk` and executed through `geochat_kernel`.
|
|
8
19
|
|
|
9
20
|
> **Status:** published and usable, still refactoring internally. Logic is moving out of `orchestrator/` into the layered `smart_spatial_system/` package (see [docs/ARCHITECTURE_TARGET.md](docs/ARCHITECTURE_TARGET.md)); the `orchestrator/*_service.py` modules are compatibility shims during that move. The public surface - the CLI, the HTTP API and the documented entry points below - is stable.
|
|
10
21
|
|
|
22
|
+
## Why this, not a general-purpose LLM agent with a GIS tool belt
|
|
23
|
+
|
|
24
|
+
The natural alternative is: give an LLM function-calling access to some GIS
|
|
25
|
+
functions and let it decide what to call. This project deliberately doesn't
|
|
26
|
+
stop there, for reasons that turned out to matter in practice, not just in
|
|
27
|
+
theory - see [`smart-spatial-vienna-accessibility`](https://github.com/arazshah/smart-spatial-vienna-accessibility)'s
|
|
28
|
+
case study and [`CHANGELOG.md`](CHANGELOG.md)'s `0.2.1`-`0.2.4` entries for
|
|
29
|
+
five real bugs this surfaced and fixed:
|
|
30
|
+
|
|
31
|
+
- **A deterministic path exists alongside the LLM path**, built from the same
|
|
32
|
+
operation catalog (`OP_CATALOG`). The same analysis can be run by rule and
|
|
33
|
+
by LLM, so "is the LLM's plan reliable" is a measurable question (Plan
|
|
34
|
+
Agreement Rate, Rank Stability - see [docs/CASE_STUDIES.md](docs/CASE_STUDIES.md)), not
|
|
35
|
+
a leap of faith.
|
|
36
|
+
- **Every LLM-generated plan is validated before execution**, not just before
|
|
37
|
+
syntax errors: missing input roles, an unchained multi-factor scoring step,
|
|
38
|
+
an asymmetric CRS reprojection, an untyped scoring factor - each is a
|
|
39
|
+
distinct, previously-silent failure mode this system now catches and raises
|
|
40
|
+
a specific error for, before spending a single second executing.
|
|
41
|
+
- **Every plugin carries a full execution trace** - which operations ran, in
|
|
42
|
+
what order, with what parameters - so a wrong answer is debuggable, not a
|
|
43
|
+
black box.
|
|
44
|
+
|
|
11
45
|
---
|
|
12
46
|
|
|
13
47
|
## How a query runs
|
|
@@ -216,6 +250,15 @@ Full deployment guide - environment variables, authentication, CORS, PostGIS:
|
|
|
216
250
|
|
|
217
251
|
Full request and response contracts are in [docs/phase5_query_api_contract.md](docs/phase5_query_api_contract.md) and the other `docs/phase5_*` files.
|
|
218
252
|
|
|
253
|
+
## Research and case studies
|
|
254
|
+
|
|
255
|
+
Looking for a study to build on this system, or to see one already done?
|
|
256
|
+
[docs/CASE_STUDIES.md](docs/CASE_STUDIES.md) has a catalog of suggested
|
|
257
|
+
studies (accessibility, risk-aware siting, vegetation change, zoning
|
|
258
|
+
compliance, and a reproducibility-methodology replication) plus what's
|
|
259
|
+
*not* a good fit yet. If you use this software in published work, see
|
|
260
|
+
[CITATION.cff](CITATION.cff).
|
|
261
|
+
|
|
219
262
|
## Development
|
|
220
263
|
|
|
221
264
|
```bash
|
|
@@ -223,6 +266,10 @@ pytest # full suite
|
|
|
223
266
|
ruff check . # lint
|
|
224
267
|
```
|
|
225
268
|
|
|
269
|
+
Contributions are welcome - see [CONTRIBUTING.md](CONTRIBUTING.md). Found a
|
|
270
|
+
security issue? See [SECURITY.md](SECURITY.md) rather than opening a public
|
|
271
|
+
issue.
|
|
272
|
+
|
|
226
273
|
## Author
|
|
227
274
|
|
|
228
275
|
[Araz Shahkarami](https://github.com/arazshah) · [araz.me](https://araz.me)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
default_distances: null
|
|
2
|
+
default_units: m
|
|
3
|
+
default_quad_segs: 8
|
|
4
|
+
default_engine: auto
|
|
5
|
+
|
|
6
|
+
preserve_properties: true
|
|
7
|
+
|
|
8
|
+
allowed_geometry_types:
|
|
9
|
+
- Point
|
|
10
|
+
- MultiPoint
|
|
11
|
+
- LineString
|
|
12
|
+
- MultiLineString
|
|
13
|
+
- Polygon
|
|
14
|
+
- MultiPolygon
|
|
15
|
+
|
|
16
|
+
metadata: {}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
default_distances: null
|
|
2
|
+
default_units: m
|
|
3
|
+
default_quad_segs: 8
|
|
4
|
+
default_engine: auto
|
|
5
|
+
|
|
6
|
+
preserve_properties: true
|
|
7
|
+
|
|
8
|
+
allowed_geometry_types:
|
|
9
|
+
- Point
|
|
10
|
+
- MultiPoint
|
|
11
|
+
- LineString
|
|
12
|
+
- MultiLineString
|
|
13
|
+
- Polygon
|
|
14
|
+
- MultiPolygon
|
|
15
|
+
|
|
16
|
+
metadata: {}
|
|
@@ -1047,11 +1047,41 @@ Important mappings:
|
|
|
1047
1047
|
inputs={{"vector": "<source>", "reference": "<poi>"}}
|
|
1048
1048
|
params={{"max_distance_m": X, "k": 1, "drop_unmatched": true}}
|
|
1049
1049
|
|
|
1050
|
+
- "multiple rings/distance bands around a point/line/polygon" (e.g.
|
|
1051
|
+
"200m, 500m and 800m rings around each station", concentric zones, a
|
|
1052
|
+
gradient outward from a feature):
|
|
1053
|
+
use op="ring_buffer" with params={{"distances": [200, 500, 800]}} - do
|
|
1054
|
+
NOT chain op="buffer" multiple times for this. Chaining buffer only ever
|
|
1055
|
+
produces nested full-circle disks (each one containing all the smaller
|
|
1056
|
+
ones), never the annulus/gap BETWEEN two radii, which is what "ring" or
|
|
1057
|
+
"band" means here.
|
|
1058
|
+
|
|
1050
1059
|
- "inside permitted/buildable polygon":
|
|
1051
1060
|
op="filter_points_in_polygon"
|
|
1052
1061
|
inputs={{"vector": "<points>", "polygon": "<polygon_layer>"}}
|
|
1053
1062
|
params={{"predicate": "within", "drop_outside": true}}
|
|
1054
1063
|
|
|
1064
|
+
- CRITICAL - "points inside a polygon/zone" has TWO different shapes that
|
|
1065
|
+
need DIFFERENT operations - picking the wrong one plans successfully and
|
|
1066
|
+
runs without error, but silently loses the information the user asked
|
|
1067
|
+
for:
|
|
1068
|
+
* User only wants a boolean keep/drop filter (e.g. "keep only points
|
|
1069
|
+
inside the permitted area", "drop points outside the buildable zone"):
|
|
1070
|
+
use op="filter_points_in_polygon". It returns nothing but a
|
|
1071
|
+
__in_polygon__ true/false flag - it does NOT record which polygon
|
|
1072
|
+
matched.
|
|
1073
|
+
* User wants to know WHICH specific zone/polygon/ring each point falls
|
|
1074
|
+
into (e.g. "for each point, tell me which zone it falls into", "label
|
|
1075
|
+
each point by its zone", "group points by distance band/ring"):
|
|
1076
|
+
do NOT use op="filter_points_in_polygon" for this - it has no way to
|
|
1077
|
+
carry the matched polygon's identity, so the output would have no
|
|
1078
|
+
zone information at all. Use op="spatial_join" instead:
|
|
1079
|
+
inputs={{"source": "<points>", "target": "<zones/polygons>"}}
|
|
1080
|
+
params={{"predicate": "within", "include_target_properties": true}}
|
|
1081
|
+
include_target_properties=true is what copies the matched polygon's
|
|
1082
|
+
own properties (id, name, zone label, ring_label, etc.) onto each
|
|
1083
|
+
output point.
|
|
1084
|
+
|
|
1055
1085
|
- After a distance operation, if the resulting distance field should be used for scoring,
|
|
1056
1086
|
use enrich_feature_properties to copy/rename it to a semantic field like:
|
|
1057
1087
|
distance_to_poi or distance_to_road.
|
{smart_spatial_system-0.2.4 → smart_spatial_system-0.2.6}/orchestrator/planning/op_catalog.py
RENAMED
|
@@ -129,6 +129,17 @@ _BUFFER_PARAM_MAP = {
|
|
|
129
129
|
"metadata": "metadata",
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
_RING_BUFFER_PARAM_MAP = {
|
|
133
|
+
"distances": "distances",
|
|
134
|
+
"units": "units",
|
|
135
|
+
"quad_segs": "quad_segs",
|
|
136
|
+
"engine": "engine",
|
|
137
|
+
"cap_style": "cap_style",
|
|
138
|
+
"join_style": "join_style",
|
|
139
|
+
"mitre_limit": "mitre_limit",
|
|
140
|
+
"metadata": "metadata",
|
|
141
|
+
}
|
|
142
|
+
|
|
132
143
|
|
|
133
144
|
OP_CATALOG: dict[str, OpDescriptor] = {
|
|
134
145
|
# ---------------------------------------------------------------------
|
|
@@ -474,6 +485,30 @@ OP_CATALOG: dict[str, OpDescriptor] = {
|
|
|
474
485
|
),
|
|
475
486
|
),
|
|
476
487
|
|
|
488
|
+
"ring_buffer": OpDescriptor(
|
|
489
|
+
op_name="ring_buffer",
|
|
490
|
+
capability_name="generate_ring_buffers",
|
|
491
|
+
input_map={
|
|
492
|
+
"vector": "features",
|
|
493
|
+
},
|
|
494
|
+
input_types={
|
|
495
|
+
"vector": "vector",
|
|
496
|
+
},
|
|
497
|
+
param_map=_RING_BUFFER_PARAM_MAP,
|
|
498
|
+
output_type="vector",
|
|
499
|
+
notes=(
|
|
500
|
+
"Create concentric ring (annulus) polygons around input features at "
|
|
501
|
+
"multiple distances, e.g. params.distances=[200, 500, 800, 1200]. "
|
|
502
|
+
"Returns the area BETWEEN consecutive radii (a true ring/annulus), "
|
|
503
|
+
"not cumulative full-circle disks. Use this instead of chaining "
|
|
504
|
+
"buffer multiple times whenever the user asks for distance bands, "
|
|
505
|
+
"zonal rings, or a gradient outward from a point/line/polygon - "
|
|
506
|
+
"chaining buffer only ever produces nested full disks, never the "
|
|
507
|
+
"gap between two radii. Use metric CRS when distances are in "
|
|
508
|
+
"meters."
|
|
509
|
+
),
|
|
510
|
+
),
|
|
511
|
+
|
|
477
512
|
# ---------------------------------------------------------------------
|
|
478
513
|
# Raster operations
|
|
479
514
|
# ---------------------------------------------------------------------
|