Manage points of interest (Operator workflow)
This page is for operators who manage Points of Interest (POIs) – the locations being monitored for occupancy.
Your goals
- Maintain accurate POI configurations.
- Ensure sensors are correctly associated with locations.
- Keep capacity and metadata up-to-date.
1) Understanding POI structure
Each Point of Interest has: - Identity: Name, description, type - Geography: Boundary polygon defining the monitored area - Capacity: Maximum occupancy (if applicable) - Sensors: Associated sensor equipment and gate mappings
POI types
| Type | Description | Example |
|---|---|---|
| Parking | Vehicle parking areas | Beach parking lot, city center garage |
| Viewpoint | Scenic observation points | Mountain lookout, coastal viewpoint |
| Trail | Hiking or walking paths | Nature trail, coastal walk |
| Beach | Beach areas | Main beach, cove beach |
| Park | Public parks and gardens | City park, botanical garden |
| Plaza | Public squares and open areas | Town square, market plaza |
2) Creating a POI
- Navigate to Occupancy → Points of Interest in Django Admin.
- Click Add Point of Interest.
- Fill in basic information:
- Name: Clear, recognizable name
- Description: Details for operators and public display
- POI Type: Select appropriate category
-
Municipality: Which municipality manages this location
-
Define the boundary:
- Use the map interface to draw the monitored area polygon
-
Ensure the boundary covers the actual monitored space
-
Set capacity (optional):
- Capacity: Maximum number of people/vehicles
-
Leave blank if capacity isn't relevant or measurable
-
For trails, set duration:
- Max Trail Duration (minutes): Expected time to complete
-
Used for occupancy estimation calculations
-
Save the POI.
3) Associating sensors
After creating a POI, link sensors:
Adding sensor associations
- Navigate to Occupancy → POI Sensors.
- Click Add POI Sensor Association.
- Select:
- POI: The location
- Sensor: The sensor device
- Is Active: Enable/disable the association
Configuring gate mappings
For AI cameras with multiple detection zones:
- Navigate to Occupancy → Gate Mappings.
- Create mappings for each gate:
- POI Sensor: Which sensor-POI association
- Gate ID: Reference to gate in sensor config
- Gate Function: Entry, Exit, Bidirectional, Presence, or Flow
- Tracked Object Types: What to count (person, car, bus, etc.)
- Geometry: Optional location/zone for the gate
Gate function guide
| Function | Use case | Occupancy calculation |
|---|---|---|
| Entry | Count entries only | Adds to occupancy |
| Exit | Count exits only | Subtracts from occupancy |
| Entry/Exit | Bidirectional gate | Adds/subtracts by direction |
| Presence | Real-time in-frame count | Direct count (no calculation) |
| Flow | Traffic monitoring | Rate calculation only |
4) Updating POI information
Keep POIs accurate:
Regular updates needed for:
- Capacity changes: Seasonal variations, construction
- Boundary adjustments: Expansion or restriction of monitored area
- Name/description: Public-facing information
Deactivating a POI
If a location is temporarily closed:
1. Set is_active = False
2. The POI won't appear in public dashboards
3. Reactivate when location reopens
5) Monitoring POI health
Checking data flow
For each POI, verify: - Sensors are reporting regularly - Occupancy calculations make sense - No stuck or negative values
Troubleshooting occupancy issues
| Problem | Likely cause | Solution |
|---|---|---|
| Always zero | No sensors linked or all offline | Check sensor associations |
| Negative numbers | More exits than entries counted | Verify gate configurations |
| Too high | Entries not matching exits | Check for missed exit counting |
| Not updating | Sensors offline or cache issue | Check sensor status |
6) External ID mapping
For integrations with external systems:
- External ID: Unique identifier for syncing with CSV imports or APIs
- Use consistent identifiers across systems
- Helps with bulk updates and data reconciliation
7) Best practices
Naming conventions
- Use clear, location-specific names
- Include distinguishing details (e.g., "Beach Parking Lot North")
- Be consistent across your municipality
Capacity setting
- Base on official capacity or safe limits
- Consider seasonal variations
- Update promptly when conditions change
Sensor coverage
- Ensure all entry/exit points are covered
- Verify no blind spots in detection
- Test configurations before going live
Behind the scenes (grounded in code)
- POI model:
apps/occupancy/models.py→PointOfInterest - Sensor association:
apps/occupancy/models.py→POISensor - Gate mapping:
apps/occupancy/models.py→GateMapping - Occupancy calculation:
PointOfInterest.current_occupancyproperty - Gate function detection:
PointOfInterest.has_entry_exit_gatesproperty - Geographic boundary: PostGIS
PolygonField(SRID 4326)