A comprehensive QGIS plugin for importing Mappedin MVF (Mappedin Venue Format) v3 packages into QGIS as organized, styled vector layers.
This plugin provides seamless integration between Mappedin's indoor mapping platform and QGIS. Import MVF v3 packages either from local files or directly from the Mappedin API, with automatic layer organization, intelligent styling, and multi-floor visibility management for optimal visualization of indoor mapping data.
- File Import: Load MVF v3 packages from local ZIP files
- API Import: Direct download from Mappedin cloud with token caching
- Floor-based Grouping: Automatically organizes layers by floor levels
- Layer Categorization: Separates doors, windows, walls, connections, spaces, and locations
- Multi-floor Visibility: Auto-hides upper floors, shows ground floor by default
- Doors: White lines (1.4 width) with proper categorization
- Windows: Blue lines (1.2 width) for clear identification
- Walls: Dark grey lines for structural elements
- Connections: Green arrow markers (size 4) for stairs/elevators only
- Locations: Styled point markers with labeling
- Token Caching: Persistent API authentication across sessions
- Door Navigation Filtering: Excludes API navigation points from visualization
- Empty Layer Prevention: Only creates layers with actual data
- Venue Selection: User-friendly dropdown with fetch functionality
- In QGIS, go to Plugins β Manage and Install Plugins
- Search for "Mappedin MVF Importer"
- Click Install Plugin
- Enable the plugin
- Download the latest release ZIP file
- In QGIS, go to Plugins β Manage and Install Plugins
- Click Install from ZIP
- Select the downloaded ZIP file
- Enable the plugin
- Clone this repository:
git clone https://github.com/mappedin/qgis-plugin.git
- Copy the plugin folder to your QGIS plugins directory:
- Windows:
C:\Users\{username}\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\
- macOS:
~/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/
- Linux:
~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/
- Windows:
- Restart QGIS
- Enable the plugin in Plugins β Manage and Install Plugins
- Open QGIS
- Go to Plugins β Mappedin MVF Importer
- Select Import from File
- Click Browse to select your MVF ZIP file
- Click Import - layers will be automatically organized and styled
- Open QGIS
- Go to Plugins β Mappedin MVF Importer
- Select Import from API
- Enter your API Key (starts with
mik_
) - Enter your API Secret (starts with
mis_
) - Click Fetch Venues to load available venues
- Select a venue from the dropdown
- Click Import - MVF will be downloaded and processed automatically
The plugin creates a comprehensive layer structure:
π {Venue Name}
βββ π Level 1 Group (visible by default)
β βββ π Level 1 - Locations
β βββ πͺ Level 1 - Doors (white lines)
β βββ πͺ Level 1 - Windows (blue lines)
β βββ π§± Level 1 - Walls (grey lines)
β βββ β¬οΈ Level 1 - Connections (green arrows)
β βββ π Level 1 - Spaces (polygons)
βββ π Level 2 Group (hidden by default)
β βββ ... (same structure)
βββ π Floor Boundaries (hidden by default)
- Ground floor (Level 1) is visible by default
- Upper floors are automatically hidden to prevent overlap
- Toggle visibility using checkboxes in the Layers Panel
- Floor boundaries are hidden by default but available for reference
- Sign in to your Mappedin account
- Navigate to Developer β API Keys
- Create a new API key/secret pair
- Copy the generated credentials
- Automatic Caching: Tokens are cached for 2 hours to avoid repeated authentication
- Secure Storage: Credentials are saved locally using QGIS settings
- Auto-Refresh: Expired tokens are automatically refreshed when needed
This plugin supports the full Mappedin MVF v3 specification:
- Core Extension: Manifest, floors, geometry
- Locations Extension: Points of interest, categories
- Navigation Data: Connections, pathways, accessibility
- Spatial Relationships: Floor-to-floor connections
- Metadata: Venue information, floor names, styling
"No venues available"
- Verify your API credentials are correct
- Ensure your account has access to venues
- Check your internet connection
"Failed to download MVF package"
- Verify the venue ID is correct
- Ensure you have read permissions for the venue
- Try refreshing your venues list
"Empty layers created"
- Some MVF packages may not contain all layer types
- This is normal - only layers with data are created
- Check the original MVF package for data completeness
If you encounter issues:
- Open the QGIS Log Messages Panel (View β Panels β Log Messages)
- Look for messages from the "Mappedin MVF Importer" tab
- Include relevant log messages when reporting issues
# Clone the repository
git clone https://github.com/mappedin/qgis-plugin.git
cd qgis-plugin
# Install to QGIS plugins directory
make dev-deploy
# Clean build artifacts
make dclean
mappedin_mvf_importer/
βββ __init__.py # Plugin initialization
βββ mappedin_mvf_importer.py # Main plugin class
βββ mappedin_mvf_importer_dialog.py # UI dialog
βββ mappedin_mvf_importer_dialog_base.ui # UI layout
βββ mappedin_api.py # API client
βββ mvf_parser_v3.py # MVF parsing logic
βββ resources.py # Qt resources
βββ metadata.txt # Plugin metadata
βββ README.md # Documentation
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- QGIS: 3.16 or later
- Python: 3.7+
- Dependencies: requests (for API functionality)
This project is licensed under the GPL v3 License - see the LICENSE file for details.
- Documentation: Mappedin Developer Docs
- Issues: GitHub Issues
- API Support: Mappedin Support
- Fix: Switched to relative import in
__init__.py
to avoid module shadowing when a nestedmappedin_mvf_importer/
folder exists. - Fix: Adjusted packaging guidance to prevent nested directory structure from marketplace installs.
- Chore: Bump version to 2.0.3 for marketplace submission.
- π¨ Logo Update: Updated plugin logo for better visual consistency
- π§ Qt Resources Fix: Regenerated Qt resources to ensure new logo displays correctly in QGIS toolbar
- β¨ Code Quality: Applied comprehensive linting improvements with ruff formatter
- Fixed bare except clauses to specify Exception types
- Removed unused variables throughout codebase
- Fixed boolean comparisons and improved code formatting
- All ruff checks now pass without errors
- π¨ Logo Update: Updated plugin logo for better visual consistency
- π Dual Import Methods: File import + direct API download with token caching
- ποΈ Smart Layer Organization: Floor-based grouping with automatic visibility management
- π¨ Intelligent Styling: Separate layers for doors (white), windows (blue), walls (grey), connections (green arrows)
- π§ Advanced Features: Token caching, door navigation filtering, empty layer prevention
- π± UX Improvements: User-friendly venue selection, comprehensive error handling
- π Production Ready: Debug logging removed, comprehensive documentation
- Initial release with basic MVF v3 support
- File import functionality
- Basic layer creation