Geoai.js
š°ļø GeoAI.js is a javascript library for use with transformers.js to perform GeoAI on the frontend
A lightweight JavaScript library for running Geo AI models in frontend applications. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2024. Key topics include: drone, frontend, geoai, javascript, maps.
Quick install
NPM Package
bashnpm i geoai
š¦ Package Links:
CDN (Browser)
You can also use GeoAI directly in the browser via CDN:
Unpkg CDN
html<script src="https://unpkg.com/geoai@1.0.3/geoai.js"></script>
jsDelivr CDN
html<script src="https://cdn.jsdelivr.net/npm/geoai@1.0.3/geoai.min.js"></script>
When using CDN, the library is available globally as geoai.
Get Started: Follow the Quickstart Guide or clone the quick start example.
bashgit init touch README.md git add . git commit -m "Initial commit" git subtree add --prefix=examples/01-quickstart https://github.com/decision-labs/geoai.js main --squash
Usage
Core Library (Node.js and Browser)
NPM Installation
javascriptimport { geoai } from "geoai"; // Initialize the pipeline with ESRI provider (no API key required) const pipeline = await geoai.pipeline([{ task: "object-detection" }], { provider: "esri", }); // Run inference const result = await pipeline.inference({ inputs: { polygon: geoJsonFeature, }, mapSourceParams: { zoomLevel: 18, }, });
CDN Usage
javascript// When using CDN, geoai is available globally const pipeline = await geoai.pipeline([{ task: "object-detection" }], { provider: "esri", }); const result = await pipeline.inference({ inputs: { polygon: geoJsonFeature, }, mapSourceParams: { zoomLevel: 18, }, });
React Hooks
javascriptimport { useGeoAIWorker } from "geoai/react"; function MyComponent() { const { inference, isLoading, error } = useGeoAIWorker({ tasks: ["object-detection"], provider: "esri", // No API key required for ESRI }); const handleInference = async () => { const result = await inference({ inputs: { polygon: geoJsonFeature }, mapSourceParams: { zoomLevel: 18 }, }); }; return ( <div> <button onClick={handleInference} disabled={isLoading}> {isLoading ? "Processing..." : "Run Detection"} </button> {error && <div>Error: {error.message}</div>} </div> ); }
Features
- Multiple AI Tasks: Object detection, segmentation, classification, and more
- Map Provider Support: Geobase, Mapbox, ESRI, and Google Maps
- React Integration: Hooks for easy React integration
- TypeScript Support: Full TypeScript definitions
- Web Worker Support: Run AI models in background threads
- Optimized Performance: Efficient model loading and inference
- CDN Ready: Available via npm and popular CDNs (unpkg, jsDelivr)
Supported Tasks
- Object Detection
- Building Detection
- Car Detection
- Ship Detection
- Solar Panel Detection
- Oil Storage Tank Detection
- Land Cover Classification
- Wetland Segmentation
- Building Footprint Segmentation
- Mask Generation
- Zero-shot Object Detection
- Zero-shot Segmentation
- Image Feature Extraction
For more see the supported tasks
Links
- Documentation: docs.geobase.app/geoai - Comprehensive documentation, examples, and API reference
- Live Examples: docs.geobase.app/geoai-live - Interactive examples and demos
- Community: GitHub Discussions - Ask questions, share ideas, and connect with other developers
- Code: GitHub Repository - Source code and contributions
- Issues: GitHub Issues - Report bugs and request features
Contributing
We welcome contributions! Please see our contributing guide for details.
License
MIT License - see LICENSE.md for details.
Contributors
Showing top 6 contributors by commit count.
