Skip to content

CleaningGISData

Ha Dang Hoang edited this page Oct 31, 2024 · 1 revision

Example usage of clean_network in GAMA Platform

Introduction

The clean_network operator can be used used for cleaning and optimizing road networks. It helps deal with issues in GIS data such as disconnected segments, overlapping roads, and imprecise geometry.

Syntax

clean_network(
    list<geometry> geometries,
    float tolerance,
    bool split_lines,
    bool keepMainConnectedComponent
)

Parameters Explained

1. geometries (list)

  • What it is: Collection of geometries (usually road segments) to clean
  • How to get it: road collect each.shape or road_shapefile.contents
  • Example:
list<geometry> road_geometries <- road collect each.shape;
list<geometry> road_geometries <- road_shapefile.contents;

2. tolerance (float)

  • What it is: Maximum distance between points to be considered for merging
  • Recommended values:
    • Small networks: 0.1 to 1.0 (e.g., urban network)
    • Large networks: 1.0 to 5.0 (e.g., rural network, highway network)
  • Effects:
    • Lower values (e.g., 0.1): More precise, less merging
    • Higher values (e.g., 5.0): More aggressive merging
  • Example scenarios:
    • For precise road networks: tolerance <- 0.5
    • For rough networks: tolerance <- 2.0

3. split_lines (boolean)

  • What it is: Whether to split roads at intersection points
  • Values:
    • true: Split roads at intersections (recommended for navigation)
    • false: Keep roads as continuous lines
  • When to use:
    • true: For routing and navigation purposes
    • false: For visualization or analysis only

4. keepMainConnectedComponent (boolean)

  • What it is: Whether to keep only the main connected network
  • Values:
    • true: Remove isolated road segments
    • false: Keep all road segments
  • When to use:
    • true: For ensuring network connectivity
    • false: When isolated segments are important

Common Usage

Basic Network Cleaning

// Basic cleaning with default values
list<geometry> clean_lines <- clean_network(
    road collect each.shape,
    1.0,    // moderate tolerance
    true,   // split at intersections
    true    // keep only main network 
);

Implementation Example

global {
  // Network cleaning parameters
  float tolerance <- 1.0;
  bool split_lines <- true;
  bool keep_main_connected <- true;

    init {
        // Create initial roads
        create road from: road_shapefile;
        
        // Clean the network
        list<geometry> clean_lines <- clean_network(
            road collect each.shape,
            tolerance,
            split_lines,
            keep_main_connected
        );
        
        // Remove old roads
        ask road {
            do die;
        }
        
        // Create new roads
        loop clean_geom over: clean_lines {
            create road {
                shape <- clean_geom;
            }
        }
        
        // Create network graph
        road_network <- as_edge_graph(road);
    }
}
  1. What's new (Changelog)
  1. Installation and Launching
    1. Installation
    2. Launching GAMA
    3. Updating GAMA
    4. Installing Plugins
  2. Workspace, Projects and Models
    1. Navigating in the Workspace
    2. Changing Workspace
    3. Importing Models
  3. Editing Models
    1. GAML Editor (Generalities)
    2. GAML Editor Tools
    3. Validation of Models
  4. Running Experiments
    1. Launching Experiments
    2. Experiments User interface
    3. Controls of experiments
    4. Parameters view
    5. Inspectors and monitors
    6. Displays
    7. Batch Specific UI
    8. Errors View
  5. Running Headless
    1. Headless Batch
    2. Headless Server
    3. Headless Legacy
  6. Preferences
  7. Troubleshooting
  1. Introduction
    1. Start with GAML
    2. Organization of a Model
    3. Basic programming concepts in GAML
  2. Manipulate basic Species
  3. Global Species
    1. Regular Species
    2. Defining Actions and Behaviors
    3. Interaction between Agents
    4. Attaching Skills
    5. Inheritance
  4. Defining Advanced Species
    1. Grid Species
    2. Graph Species
    3. Mirror Species
    4. Multi-Level Architecture
  5. Defining GUI Experiment
    1. Defining Parameters
    2. Defining Displays Generalities
    3. Defining 3D Displays
    4. Defining Charts
    5. Defining Monitors and Inspectors
    6. Defining Export files
    7. Defining User Interaction
  6. Exploring Models
    1. Run Several Simulations
    2. Batch Experiments
    3. Exploration Methods
  7. Optimizing Models
    1. Runtime Concepts
    2. Analyzing code performance
    3. Optimizing Models
  8. Multi-Paradigm Modeling
    1. Control Architecture
    2. Defining Differential Equations
  1. Manipulate OSM Data
  2. Cleaning OSM Data
  3. Diffusion
  4. Using Database
  5. Using FIPA ACL
  6. Using BDI with BEN
  7. Using Driving Skill
  8. Manipulate dates
  9. Manipulate lights
  10. Using comodel
  11. Save and restore Simulations
  12. Using network
  13. Headless mode
  14. Using Headless
  15. Writing Unit Tests
  16. Ensure model's reproducibility
  17. Going further with extensions
    1. Calling R
    2. Using Graphical Editor
    3. Using Git from GAMA
  1. Built-in Species
  2. Built-in Skills
  3. Built-in Architecture
  4. Statements
  5. Data Type
  6. File Type
  7. Expressions
    1. Literals
    2. Units and Constants
    3. Pseudo Variables
    4. Variables And Attributes
    5. Operators [A-A]
    6. Operators [B-C]
    7. Operators [D-H]
    8. Operators [I-M]
    9. Operators [N-R]
    10. Operators [S-Z]
  8. Exhaustive list of GAMA Keywords
  1. Installing the GIT version
  2. Developing Extensions
    1. Developing Plugins
    2. Developing Skills
    3. Developing Statements
    4. Developing Operators
    5. Developing Types
    6. Developing Species
    7. Developing Control Architectures
    8. Index of annotations
  3. Introduction to GAMA Java API
    1. Architecture of GAMA
    2. IScope
  4. Using GAMA flags
  5. Creating a release of GAMA
  6. Documentation generation

  1. Predator Prey
  2. Road Traffic
  3. 3D Tutorial
  4. Incremental Model
  5. Luneray's flu
  6. BDI Agents

  1. Team
  2. Projects using GAMA
  3. Scientific References
  4. Training Sessions

Resources

  1. Videos
  2. Conferences
  3. Code Examples
  4. Pedagogical materials
Clone this wiki locally