An interactive knowledge graph visualization of Geographic Information Systems concepts, tools, and technologies.
The GIS Knowledge Map is a comprehensive, interactive visualization that helps users explore and understand the GIS ecosystem. It organizes 91+ nodes across 13 categories, showing relationships between concepts, tools, data formats, and technologies.
The knowledge map covers 13 major categories:
- Core Concepts (13 nodes) - Fundamental GIS concepts
- Spatial Reference Systems (8 nodes) - CRS, projections, datums
- Data Models (8 nodes) - Geometry types and data structures
- Data Formats (9 nodes) - File formats (GeoJSON, Shapefile, etc.)
- Processing Tools (6 nodes) - CLI tools (GDAL, OGR, etc.)
- Analysis Libraries (5 nodes) - Code libraries (Turf, Shapely, etc.)
- GIS Servers & Services (8 nodes) - Map servers and OGC services
- Tile & Delivery Systems (7 nodes) - Tiling systems and CDN
- Web Mapping Libraries (6 nodes) - JavaScript mapping frameworks
- Desktop GIS Applications (3 nodes) - Desktop software
- Spatial Databases (4 nodes) - Database extensions
- Cloud GIS Platforms (6 nodes) - SaaS platforms
- Remote Sensing (8 nodes) - Imagery and analysis
# Install dependencies
npm install
# Start development server
npm run dev
# Validate all nodes
npm run validate
# Build for production
npm run build
# Deploy to GitHub Pages
npm run deployVisit the live demo at: https://<your-username>.github.io/gis-knowledge-map/
See DEPLOYMENT.md for deployment instructions.
# Development mode with hot reload
npm run devOpen http://localhost:5173 in your browser.
Before committing changes, validate all node files:
# Quick validation
npm run validate
# Detailed output with all warnings
npm run validate:verboseThe validation script checks:
- Required fields
- Valid enum values
- Proper YAML structure
- Resource types
- Relationship references
- And more...
See scripts/README.md for details.
We welcome contributions! Please read our guides before creating or editing nodes:
- QUICK_REFERENCE.md - Fast lookup and checklists (start here!)
- CONTRIBUTING.md - Complete contribution guide
- NODE_TEMPLATE.yaml - Official node template
- SCHEMA_REFERENCE.md - Technical schema documentation
- Copy
/content/NODE_TEMPLATE.yaml - Fill in all required fields
- Save to
/content/gis/nodes/your-node.yaml - Register in
/src/lib/content-loader.ts - Run
npm run validateto check for errors - Test with
npm run dev
Every node must have:
id- Unique identifier (kebab-case)title- Display nametype- One of 13 valid categoriessummary- One-sentence descriptionlastUpdated- ISO date (YYYY-MM-DD)
| β Don't | β Do |
|---|---|
Put icon/color at top level |
Put them inside style: object |
Use resources: as object |
Use resources: as array |
| Use invalid resource types | Use: reference, tutorial, documentation, video, tool |
| Reference non-existent nodes | Only reference actual node IDs |
See QUICK_REFERENCE.md for complete checklist.
- React 18 + TypeScript - UI framework
- Vite - Build tool and dev server
- React Flow - Graph visualization
- Tailwind CSS 4 - Styling
- Framer Motion - Animations
- Zod - Runtime validation
- Zustand - State management
- YAML files - All content stored in
/content/gis/nodes/ - Schema validation - Validated at build time via Zod
- Type safety - Full TypeScript types generated from schema
- Static loading - Content imported at build time
gis-knowledge-map/
βββ content/
β βββ gis/
β β βββ config.yaml # Domain configuration
β β βββ nodes/ # All node YAML files (104)
β βββ NODE_TEMPLATE.yaml # Template for new nodes
βββ src/
β βββ components/
β β βββ canvas/ # React Flow components
β β βββ features/ # Feature components
β β βββ ui/ # UI components
β βββ lib/
β β βββ schemas.ts # Zod validation schemas
β β βββ content-loader.ts # YAML content loader
β β βββ graph-builder.ts # Graph construction
β βββ types/ # TypeScript types
βββ scripts/
β βββ validate-nodes.js # Validation script
βββ docs/ # Documentation files
# Validate all nodes
npm run validate
# Run linter
npm run lint
# Type check
npm run build- CONTRIBUTING.md - How to contribute
- QUICK_REFERENCE.md - Quick lookup guide
- SCHEMA_REFERENCE.md - Schema documentation
- DOCUMENTATION_INDEX.md - Documentation overview
- scripts/README.md - Validation script guide
- Total Nodes: 104 (13 groups + 91 content)
- Categories: 13
- Relationships: 200+
- Resources: 150+
All nodes are validated against a strict schema to ensure:
β Required fields present β Valid enum values β Proper YAML structure β Valid resource types β Existing relationship references β Consistent parent-child mapping
Run npm run validate before committing!
If you see validation errors:
- Run
npm run validate:verboseto see details - Check CONTRIBUTING.md for common errors
- Compare your node to NODE_TEMPLATE.yaml
- Verify all required fields are present
If your node doesn't appear in the graph:
- Check browser console for errors (F12)
- Verify node is registered in
/src/lib/content-loader.ts - Run
npm run validateto check for errors - Ensure
typematches one of 13 valid categories - Verify
parentNodematches the expected group
# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install
# Type check
npm run build- Fork the repository
- Create a feature branch
- Add/edit nodes using the template
- Validate with
npm run validate - Test locally with
npm run dev - Commit with descriptive message
- Push to your fork
- Create a pull request
MIT License - see LICENSE file for details
Built with modern web technologies and the GIS community's collective knowledge.
- Issues: Report bugs or request features via GitHub Issues
- Documentation: Check
/DOCUMENTATION_INDEX.mdfor all guides - Validation: Run
npm run validateto check your work
Happy mapping! πΊοΈ