[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-99443":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":30,"updatedAt":31,"readmeContent":32,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},99443,"RustGIS","opengeos\u002FRustGIS","opengeos","A fast, free and open-source GIS in pure Rust.","https:\u002F\u002Frustgis.app",null,"Rust",1034,140,9,20,0,305,915,100.36,"Apache License 2.0",false,"main",true,[25,26,27,28,29],"geospatial","gis","remote-sensing","rust","rust-lang","2026-10-14 16:51:18","2026-10-14 20:16:25","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Flogo.svg\" alt=\"RustGIS logo: a rust-coloured cog framing a segmented globe with an orbit\" width=\"160\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">RustGIS\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cb>A fast, free and open-source GIS in pure Rust for mapping, analyzing and sharing geospatial data.\u003C\u002Fb>\u003Cbr>\n  Native on Windows, macOS and Linux, and in your web browser. Your data stays on your machine\n  unless you send it to an AI model you choose, and every action is a command you can script.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg alt=\"Written in Rust\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwritten%20in-Rust-b84a2c?style=flat-square&logo=rust&logoColor=white\">\n  \u003Cimg alt=\"License: Apache-2.0\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-2563eb?style=flat-square\">\n  \u003Cimg alt=\"16 languages\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flanguages-16-0e9384?style=flat-square\">\n  \u003Ca href=\"https:\u002F\u002Fplugins.rustgis.app\">\u003Cimg alt=\"Plugins\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplugins-registry-7c3aed?style=flat-square\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Frustgis\u002F\">\u003Cimg alt=\"PyPI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Frustgis?style=flat-square&logo=python&logoColor=white&label=pypi\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopengeos\u002FRustGIS\u002Fblob\u002Fmain\u002Fapps\u002Frustgis-python\u002Fexamples\u002Fgetting-started.ipynb\">\u003Cimg alt=\"Open in Colab\" src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fweb.rustgis.app\">\u003Cimg alt=\"Launch the RustGIS web app\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLaunch-web%20app-b84a2c?style=for-the-badge&logo=webassembly&logoColor=white\" height=\"36\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopengeos\u002FRustGIS\u002Freleases\u002Flatest\">\u003Cimg alt=\"Download the desktop app\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDownload-desktop%20app-2563eb?style=for-the-badge&logo=github&logoColor=white\" height=\"36\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Frustgis.app\">\u003Cimg alt=\"Read the documentation\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRead-the%20docs-0e9384?style=for-the-badge&logo=materialformkdocs&logoColor=white\" height=\"36\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fhero.webp\" alt=\"RustGIS with the Home tab of the ribbon open. The Layers pane lists Cities, Rivers, Lakes and Countries with their legends; the map shows the world in the Equal Earth projection, countries shaded by population, sized city dots and country labels.\" width=\"100%\">\n\u003C\u002Fp>\n\n## Why RustGIS\n\n- **Fast and small.** One native program, drawn on the GPU, with no runtime to install and no\n  server to run.\n- **Runs everywhere.** The same app on Windows, macOS and Linux, and compiled to WebAssembly at\n  [web.rustgis.app](https:\u002F\u002Fweb.rustgis.app) with nothing to install.\n- **Local and private.** Your files are read and written on your machine, and nothing is uploaded\n  on its own. The network is used only when you ask for it: web basemaps, plugins, the GeoLibre\n  tools and the AI model you pick, which receives your questions and the data it reads to answer\n  them.\n- **Everything is a command.** Every button in the ribbon is a command with an id. Script it from\n  `rustgis-cli`, chain it in notebooks and models, or ask the AI Assistant to run it for you.\n- **Familiar.** A ribbon laid out in the order of the work (Home, Data, Style, Edit, Analyze,\n  View, Publish), Layers and Browser panes, an attribute table, and undo for every change.\n- **Extensible.** Over 1,000 GeoLibre and Whitebox tools for terrain, hydrology, LiDAR and remote sensing, and\n  sandboxed WebAssembly [plugins](docs\u002Fplugins.md) that add commands, tools and ribbon tabs.\n\n## A tour\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fsymbology-table.webp\" alt=\"The Style tab with the Symbology pane showing graduated colours and colour schemes; the larger African countries are selected in cyan on the map and highlighted in the attribute table below\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Symbology and tables.\u003C\u002Fb> Selecting a layer opens its contextual tabs: symbology, effects, labeling and data. Selection is synced between the map and the attribute table.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fassistant.webp\" alt=\"The AI Assistant pane: asked for the five most populous African countries, it read the Countries table, selected them and zoomed to them\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>AI Assistant.\u003C\u002Fb> Ask about your data or tell the map what to do. The assistant runs RustGIS commands for you, and each change can be undone.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fbuffer-history.webp\" alt=\"The Analyze tab with a gallery of geoprocessing tools and the Tools pane showing Buffer; dissolved 300 km buffers around African cities\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Analysis.\u003C\u002Fb> A tool gallery, the Tools pane and a run history, guided workflows, ModelBuilder, and 1,000+ GeoLibre and Whitebox tools.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fraster.webp\" alt=\"A shaded-relief elevation model of the Sierra Nevada with the Style tab open\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Rasters.\u003C\u002Fb> GeoTIFF and COG of any pixel type, reprojected on the fly, with stretch, RGB, classified and shaded-relief symbology.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fglobe.webp\" alt=\"The World Atlas drawn on a 3D globe with the View tab open\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Globe and projections.\u003C\u002Fb> A 3D globe, Equal Earth, Robinson, polar and regional presets, or any EPSG code.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Ftiles.webp\" alt=\"An OpenFreeMap vector style over Paris, with the Basemap gallery listing the built-in basemaps and the web tile layer\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Web basemaps.\u003C\u002Fb> XYZ, TMS and WMS tiles, Mapbox Vector Tiles and MapLibre styles, on the flat map and the globe.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Flayout.webp\" alt=\"A landscape A4 page layout with a map frame, title, legend, north arrow and scale bar, and the Publish tab open\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Layouts.\u003C\u002Fb> Map frames, legends, scale bars, grids, map series and PDF export, plus reports and presentations.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fplugins.webp\" alt=\"The Plugin Manager browsing the plugin registry, listing Basemaps, Hello RustGIS, Map Explorer and Vector Toolkit with their permissions\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Plugins.\u003C\u002Fb> Browse and install sandboxed plugins from \u003Ca href=\"https:\u002F\u002Fplugins.rustgis.app\">plugins.rustgis.app\u003C\u002Fa>, each showing the permissions it asks for.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fdark.webp\" alt=\"RustGIS in dark mode with the View tab open over a map of Europe on the Midnight basemap\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Dark mode\u003C\u002Fb> and the View tab: effects, scene settings, panes and linked views.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003Ctd width=\"50%\" valign=\"top\">\u003Cimg src=\"https:\u002F\u002Fassets.rustgis.app\u002Fimages\u002Fbackstage.webp\" alt=\"The Project backstage with cards to start a blank map, the World Atlas sample, or open a project\" width=\"100%\">\u003Cp align=\"center\">\u003Csub>\u003Cb>Projects.\u003C\u002Fb> Start blank, from the World Atlas sample, or open a \u003Ccode>.rgis\u003C\u002Fcode> project.\u003C\u002Fsub>\u003C\u002Fp>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\nEvery screenshot is RustGIS itself, rendered offscreen by `cargo run -p rustgis-ui-egui --example ui_shot`.\n\n## Features\n\n| Area | Highlights |\n|---|---|\n| **Data** | GeoJSON, CSV\u002FTSV with x\u002Fy columns in any coordinate system or WKT geometry, Excel and OpenDocument spreadsheets, GeoRSS, LandXML, encoded polylines, Shapefile (zipped too, in the browser as well), GeoPackage, GeoParquet, FlatGeobuf, KML\u002FKMZ (with styles), GPX, GML, MapInfo MIF\u002FMID, OpenStreetMap PBF, TopoJSON, AutoCAD DXF, LiDAR point clouds (LAS, LAZ, COPC) and geotagged photos in (large files read in place), files by their web address, every vector format GDAL reads when it is installed, and SQL queries and DuckDB databases through DuckDB Spatial when DuckDB is; PMTiles archives (web or file) and MBTiles files; GeoJSON, CSV, GeoPackage, GeoParquet, Shapefile, FlatGeobuf, KML\u002FKMZ, GPX and WKT out; standalone tables; layer and map files, styles, templates and packages |\n| **Rasters** | GeoTIFF and cloud-optimised GeoTIFF (any pixel type, tiled or striped, compressed), ASCII grids, Zarr 2 and 3 stores (a variable at a time step, by folder or web address); reprojection from any EPSG code; Stretch, RGB, Classify, Unique Values, Colormap and Shaded Relief; DRA, band combinations, brightness\u002Fcontrast\u002Fgamma; raster functions, indices, change detection, classification, georeferencing |\n| **Maps** | Multiple maps per project; a 3D globe; Web Mercator or any projection (Equal Earth, Robinson, Winkel Tripel, polar and regional presets, or an EPSG code); bookmarks, extent history, Go To XY; five offline basemaps |\n| **Web services** | WMS, WMTS, WFS, OGC API Features and ArcGIS REST (FeatureServer, MapServer, ImageServer, VectorTileServer) from their capabilities |\n| **Web tiles** | XYZ\u002FTMS\u002FWMS raster tiles, Mapbox Vector Tiles and MapLibre styles (sprites, patterns, expressions), cached and fetched in the background |\n| **Cartography** | Single symbol, unique values, graduated colours, proportional symbols; collision-free labels with placement, scale ranges and annotation; masking, display filters, aggregation bins, 2.5D extrusion; graphics and dynamic text |\n| **Editing** | Create, move, rotate, scale, merge, split and explode features; snapping, templates, elevation, traverse, topology rules; domains, subtypes, attribute rules, relationships, archiving; undo for everything |\n| **Analysis** | Selection by attributes (SQL) and location; Buffer, Clip, Erase, Dissolve, Summarize Within, Summary Statistics and more; viewshed, line of sight, IDW, shortest path, suitability modelling; ModelBuilder and scripts; 1,000+ [GeoLibre](https:\u002F\u002Fgithub.com\u002Fopengeos\u002Fgeolibre-rust) and Whitebox raster, vector, LiDAR, hydrology and terrain tools |\n| **Imagery** | Ortho and reality mapping, pixel classification (k-means, minimum distance, a trainable neural network), mensuration, hosted imagery tiles |\n| **Layouts and reports** | Page layouts with map frames, legends, scale bars, grids and map series; reports with groups, statistics, charts and subreports; presentations (HTML slideshow, PDF); notebooks (Jupyter in and out) |\n| **Sharing** | PNG export at any DPI; PDF; web map pages, OGC API Features collections, MapLibre styles, glTF scenes, locators; project, map and mobile map packages; offline areas with sync |\n| **AI Assistant** | Ask about your data or tell the map what to do in plain language, with Anthropic, OpenAI, Gemini, OpenRouter, Ollama or any OpenAI-compatible model; also `rustgis-cli ask`, and an [MCP server](docs\u002Fmcp.md) (`rustgis-cli mcp`) for Claude Code, Cursor, VS Code and other agents |\n| **Plugins** | Sandboxed WebAssembly [plugins](docs\u002Fplugins.md) add commands, tools and ribbon tabs; install them from [plugins.rustgis.app](https:\u002F\u002Fplugins.rustgis.app) on the desktop, command line and web |\n| **Interface** | Command search (Ctrl+K), keyboard shortcuts, dark mode, a customizable ribbon and Quick Access Toolbar, linked side-by-side maps, 16 languages |\n\nThe [user guide](https:\u002F\u002Frustgis.app\u002Fuser-guide\u002F) covers each area in detail,\n[Comparison](https:\u002F\u002Frustgis.app\u002Fcomparison\u002F) sets RustGIS beside GeoLibre, QGIS and ArcGIS, and\n[ROADMAP.md](ROADMAP.md) lists what's next.\n\n## Get RustGIS\n\n- **Web app**: open **[web.rustgis.app](https:\u002F\u002Fweb.rustgis.app)**. The same ribbon and tools,\n  with the browser's file picker for data and projects, and downloads for Save and Export.\n- **Desktop**: download the app for Windows, macOS or Linux from\n  [downloads.rustgis.app](https:\u002F\u002Fdownloads.rustgis.app) or the\n  [latest release](https:\u002F\u002Fgithub.com\u002Fopengeos\u002FRustGIS\u002Freleases\u002Flatest) (see\n  [Installation](docs\u002Finstallation.md) for the files and first-run notes).\n- **Package managers**: `winget install OpenGeos.RustGIS`,\n  `brew install --cask opengeos\u002Frustgis\u002Frustgis`, `yay -S rustgis-bin` (AUR), or\n  `sudo dnf copr enable giswqs\u002Frustgis && sudo dnf install rustgis` (Fedora).\n- **From source**: `cargo run --release -p rustgis` (Rust 1.90 or later).\n\n## Quick start\n\n```sh\ncargo run --release -p rustgis                       # the desktop app with the World Atlas sample\ncargo run --release -p rustgis -- data.geojson       # open data (or a .rgis project)\n```\n\nCommand line: every ribbon action is a command with an id.\n\n```sh\nrustgis-cli commands                                 # all command ids and parameters\nrustgis-cli render countries.geojson map.png --basemap ocean\nrustgis-cli run --sample \\\n  --cmd 'gp.run={\"tool\":\"countPoints\",\"params\":{\"polygons\":\"Countries\",\"points\":\"Cities\"}}' \\\n  --cmd 'layer.symbology={\"layer\":\"Countries_Summarize\",\"type\":\"graduated\",\"field\":\"point_count\"}' \\\n  --cmd 'share.exportMap={\"path\":\"out.png\",\"dpi\":192}' --save atlas.rgis\nrustgis-cli ask --sample \"Which 5 countries have the largest GDP?\"\nclaude mcp add rustgis -- rustgis-cli mcp --sample   # RustGIS as an MCP server for AI agents\n```\n\nSee [Command Line](docs\u002Fcli.md) for more.\n\nPython: the same engine and commands in-process (`pip install rustgis`), and the app itself in a\nJupyter notebook.\n\n```python\nimport rustgis\ns = rustgis.Session(sample=True)\ns.run(\"gp.run\", tool=\"buffer\", params={\"input\": \"Cities\", \"distance\": 100})\ns.to_png(\"map.png\")\ngdf = s.layer(\"Cities_Buffer\").to_geopandas()\n```\n\nSee [Python](docs\u002Fpython.md) and the [getting-started notebook](apps\u002Frustgis-python\u002Fexamples\u002Fgetting-started.ipynb)\n([open in Colab](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fopengeos\u002FRustGIS\u002Fblob\u002Fmain\u002Fapps\u002Frustgis-python\u002Fexamples\u002Fgetting-started.ipynb)).\n\n## Architecture\n\nLayered crates, each depending only on the ones below it:\n\n| Layer | Crate | Job |\n|---|---|---|\n| L0 | `rustgis-geom` | coordinates, extents, Web Mercator, geodesic distance\u002Farea, scale |\n| L1 | `rustgis-data` | features and typed attributes; GeoJSON, CSV, Shapefile; GeoPackage, GeoParquet and FlatGeobuf providers; SQL where clauses; rasters and their coordinate systems |\n| L2 | `rustgis-map`, `rustgis-analysis` | layers, symbology, labeling, camera, basemaps; geoprocessing (on `geo`) |\n| L2 | `rustgis-tiles` | web map tiles: XYZ\u002FTMS\u002FWMS, Mapbox Vector Tiles, MapLibre styles, the tile cache |\n| L3 | `rustgis-render` | tiny-skia renderer, label placement, PNG export, fonts |\n| L3 | `rustgis-plugins` | sandboxed WebAssembly plugins and the plugin registry |\n| L3 | `rustgis-geolibre` | the GeoLibre tool suite as geoprocessing tools |\n| L4 | `rustgis-engine` | session, undo, command registry, sample project |\n| L5 | `rustgis-assistant` | the AI Assistant: a chat agent that acts through commands |\n| L6 | `rustgis-ui-egui` | the ribbon front end (swappable) |\n| apps | `rustgis`, `rustgis-cli`, `rustgis-web` | desktop, command line, browser (WebAssembly) |\n\n`cargo xtask ci` runs formatting, clippy, the tests and the layering check. Contributor and\nagent notes: [AGENTS.md](AGENTS.md).\n\n## Sponsor\n\nRustGIS is free and open source, and stays that way. If it is useful to you or your team, sponsorship is the most direct way to keep development, hosting and cross-platform distribution going.\n\n- [**GitHub Sponsors**](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fgiswqs): monthly or one-time, billed through your GitHub account.\n- [**Buy Me a Coffee**](https:\u002F\u002Fbuymeacoffee.com\u002Fgiswqs): a quick one-off contribution, no account required.\n\nSee the [Become a Sponsor](https:\u002F\u002Frustgis.app\u002Fsponsor\u002F) page for what sponsorship supports and for other, free ways to help.\n\n## License and credits\n\nLicensed under the [Apache License 2.0](LICENSE). Sample data from\n[Natural Earth](https:\u002F\u002Fwww.naturalearthdata.com\u002F) (public domain).\n",2,"2026-10-15 04:19:22","CREATED_QUERY"]