资讯
Geoawesome
GeoAI
Tool
中文标题
RustGIS 与 QGIS 对比:启动速度、缓冲区分析与栅格性能测试
English Title
RustGIS vs QGIS: We Tested Start-Up Speed, Buffers, and Raster Performance
Sebastian Walczak
发布时间
2026/10/31 20:55:22
来源类型
blog
语言
en
摘要
中文对照

开源 GIS · 2026年10月。一款基于 Rust 语言开发的新开源 GIS 软件,支持原生运行及浏览器端运行,启动时间极短,且所有按钮操作均可通过脚本调用。该软件在十三天内发布了四个版本。我们阅读了其源代码,并将 RustGIS 0.4 版本与 QGIS 及纯 Python 环境进行了对比测试,发现该年轻项目 […]

English Original

Open-source GIS · October 2026 A new open-source GIS written in Rust runs natively and in the browser, starts in a fraction of a second, and treats every button as a scriptable command. Four releases appeared in thirteen days. We read the code, tested RustGIS 0.4 against QGIS and plain Python, and found a young […]

我的阅读记录

正在加载阅读记录…

正文
中文全文

开源 GIS · 2026年10月 一款全新的、使用 Rust 编写的开源 GIS 软件,既能在本地原生运行,也能在浏览器中运行。它启动仅需不到一秒,并将界面上的每一个按钮都视为可脚本化的命令。该项目在十三天内发布了四个版本。我们阅读了其代码,将 RustGIS 0.4 与 QGIS 及纯 Python 环境进行了对比测试,发现这是一款核心异常扎实但仍有明显粗糙之处的年轻工具。 * **0.15 秒**:RustGIS 的冷启动时间(相比之下 PyQGIS 为 3.16 秒) * **16 MB**:启动内存占用(PyQGIS 需要 169 MB) * **×26**:缓冲区处理速度提升(当点数从 1 万增加到 10 万时,RustGIS 的处理时间仅为其他方案的 1/26) 大多数开源桌面 GIS 共享相同的基础架构:使用 GDAL 读取数据,使用 PROJ 处理坐标,使用 Qt 或 Web 视图构建界面。RustGIS 几乎用 Rust 编写的代码取代了所有这些组件。它通过自有的读取器支持 GeoPackage、GeoParquet、FlatGeobuf、Shapefile、GeoTIFF 和 COG 格式,利用 wgpu 在 GPU 上绘制地图,并将整个应用程序编译为 WebAssembly,因此同一程序可在 web.rustgis.app 上运行,无需安装任何内容。在桌面端,GDAL 和 DuckDB 不再是必需项,而是可选扩展。 该项目源自 opengeos 组织,即 Qiusheng Wu 所在的机构,他最为人熟知的是开发了 Python 包 geemap 和 leafmap。v0.1.0 版本于 2026 年 10 月 12 日发布,随后在 10 月 25 日前又发布了三个版本。在项目发布的前两周内,其代码仓库获得了约 2,000 个 Star 和 280 个 Fork。 **构建方式。** 项目 README 声明,RustGIS “主要由 Anthropic 公司的 AI 模型 Claude Opus 5.5 在人类指导和审查下构建”,并要求用户自行验证结果以用于自身用途。这解释了部分发布节奏,也是我们需要测试输出而非盲目信任的理由——下文中的基准测试正是为此目的而设。 **十三天内的四次发布** * **v0.1.0 (2026年10月12日)**:首次发布:面向 Windows、macOS 和 Linux 的桌面 GIS 以及 WebAssembly 构建;支持矢量、栅格和瓦片数据;布局与 PDF 导出;集成 1,000+ GeoLibre 和 Whitebox 工具;AI Assistant;沙盒插件;rustgis-cli。 * **v0.2.0 (2026年10月13日)**:就地读取 GeoPackage、GeoParquet 和 FlatGeobuf;导出至 GeoPackage、GeoParquet、Shapefile 和 KMZ;通过 DuckDB Spatial 执行 SQL;为 AI 代理提供 MCP 服务器;支持通过 winget、Homebrew、AUR 和 Fedora COPR 安装。 * **v0.3.0 (2026年10月16日)**:内置 STAC、Overture Maps 和 OpenStreetMap 支持;通过 HTTP Range 请求读取云原生文件;实时 PostGIS 连接;GPU 渲染(Beta 版);rustgis Python 包上线 PyPI。 * **v0.4.0 (2026年10月25日)**:带地形的 3D 视图;无需 GDAL 即可读取 File Geodatabases;实时 MySQL、MariaDB 和 SQL Server 连接;时间滑块;顶点编辑、空间连接和克里金插值;SQL 标签类;一键生成出版图幅。 **一切皆命令** 对于专业用户而言,最重要的设计决策并非编程语言本身。在 RustGIS 中,每一个操作——无论是功能区按钮还是菜单项——都是一个带有 ID 和 JSON 参数的引擎命令。v0.4.0 版本暴露了 497 个此类命令。功能区、命令行、Python 包、AI 助手以及外部 AI 代理调用的是相同的命令集,因此在桌面应用中通过点击构建的工作流,可以通过脚本直接重复执行,无需转换。 代码被拆分为分层的 crate,每一层仅依赖于其下方的层级。这使得同一引擎可以在服务器上无头运行、嵌入 Jupyter 内核、作为桌面应用运行或在浏览器标签页中运行。 **RustGIS 内部:Crate 堆栈** 高亮显示:命令行和 Python 包所暴露的引擎层。 * **apps**: rustgis · rustgis-cli · rustgis-web · rustgis-python * 桌面应用、命令行、浏览器构建和 Python 包 * **L6**: rustgis-ui-egui * 功能区界面(可替换) * **L5**: rustgis-assistant * AI Assistant,仅通过引擎命令进行操作 * **L4**: rustgis-engine * 会话、撤销历史和命令注册表 * **L3**: rustgis-render · plugins · geolibre * 渲染、沙盒化 WebAssembly 插件、GeoLibre 工具套件 * **L2**: rustgis-map · analysis · tiles * 图层与符号系统、地理处理、Web 瓦片和 PMTiles * **L1**: rustgis-data * 矢量和栅格格式、数据库的读写器 * **L0**: rustgis-geom * 坐标、范围、测地线距离和面积 *(摘自 RustGIS README v0.4.0 中的架构表)* **相同地形,两种界面** RustGIS 借鉴了 ArcGIS Pro 而非 QGIS 的布局:按工作流排序的功能区选项卡(Home、Data、Style、Edit、Analyze、View、Publish),左侧的图层窗格和右侧的上下文窗格。以下是波兰和捷克共和国交界处 Karkonosze 山脉的 Copernicus GLO-30 高程瓦片在两个程序中的呈现效果。 * **RustGIS 0.4**:着色阴影浮雕和符号系统窗格 * **QGIS 3.34**:单波段伪彩色和图层属性对话框 *(Copernicus DEM GLO-30, 瓦片 N50 E015 © DLR e.V. 2010–2014 和 © Airbus Defence and Space GmbH 2014–2018,由欧盟和 ESA 通过 COPERNICUS 计划提供)* **纸面参数对比** RustGIS 文档包含了其与 QGIS 和 ArcGIS Pro 的对比。这是开发者对其软件的描述,因此请将 RustGIS 列视为一种主张来阅读。 | | RustGIS 0.4 | QGIS | ArcGIS Pro | | :--- | :--- | :--- | :--- | | **平台许可** | Apache-2.0,免费 | GPL-2.0+,免费 | 专有 | | **运行环境** | Windows, macOS, Linux, 浏览器 | Windows, macOS, Linux | 仅限 Windows | | **界面** | 功能区,按工作流分选项卡 | 工具栏和面板 | 功能区 | | **数据格式** | 广泛,自有读取器;GDAL 可选 | 最广 (GDAL/OGR) | 非常广泛,Esri 格式 | | **云原生** | GeoParquet, FlatGeobuf, PMTiles, COG over HTTP; Zarr | GeoParquet, FlatGeobuf, PMTiles, COG, Zarr | GeoParquet, COG, Zarr | | **投影** | 栅格支持任意 EPSG;矢量支持经纬度,无完整 PROJ | 完整 PROJ | 完整支持 | | **数据库** | PostGIS, MySQL, SQL Server 只读(桌面版) | PostGIS, SpatiaLite, Oracle, SQL Server | Enterprise geodatabases | | **分析与制图工具** | 内置 + 1,000+ GeoLibre/Whitebox | 1,000+ (GDAL, GRASS, SAGA) | 最完整,付费扩展 | | **打印布局** | 预设、图例、地图系列;PDF, PNG, SVG | 完整制图器含图集功能 | 完整布局视图 | | **Web 导出** | 单文件 HTML Web 地图,OGC API Features | 通过 qgis2web | 无 | | **自动化脚本** | 每个动作都是命令:CLI | ... | ... |

English Original

Open-source GIS · October 2026 A new open-source GIS written in Rust runs natively and in the browser, starts in a fraction of a second, and treats every button as a scriptable command. Four releases appeared in thirteen days. We read the code, tested RustGIS 0.4 against QGIS and plain Python, and found a young tool with an unusually solid core and some clear rough edges. 0.15 s Cold start RustGIS, against 3.16 s for PyQGIS 16 MB Start-up memory PyQGIS needs 169 MB ×26 Buffer slowdown RustGIS time for 10× more points (10k → 100k) Most open-source desktop GIS share the same foundations: GDAL for reading data, PROJ for coordinates, Qt or a web view for the interface. RustGIS replaces almost all of that with code written in Rust. It reads GeoPackage, GeoParquet, FlatGeobuf, Shapefile, GeoTIFF and COG with its own readers, draws maps on the GPU through wgpu, and compiles the whole application to WebAssembly, so the same program runs at web.rustgis.app with nothing to install. GDAL and DuckDB become optional extras on the desktop rather than requirements. The project comes from opengeos , the organisation of Qiusheng Wu, best known for the Python packages geemap and leafmap. Version 0.1.0 appeared on 12 October 2026, three more releases followed by 25 October, and the repository passed roughly 2,000 stars and 280 forks within its first two weeks. How it is built. The project README states that RustGIS is “primarily built with Claude Opus 5.5, an AI model by Anthropic, working under human direction and review”, and asks users to check results for their own use. That explains part of the release pace, and it is one more reason to test outputs rather than take them on trust, which is what the benchmark below does. Four releases in thirteen days v0.1.0 12 Oct 2026 First release: desktop GIS for Windows, macOS and Linux plus a WebAssembly build; vector, raster and tile data; layouts and PDF export; 1,000+ GeoLibre and Whitebox tools; AI Assistant; sandboxed plugins; rustgis-cli. v0.2.0 13 Oct 2026 GeoPackage, GeoParquet and FlatGeobuf read in place; export to GeoPackage, GeoParquet, Shapefile and KMZ; SQL through DuckDB Spatial; an MCP server for AI agents; installs through winget, Homebrew, the AUR and Fedora COPR. v0.3.0 16 Oct 2026 STAC, Overture Maps and OpenStreetMap built in; cloud-native files read over HTTP range requests; live PostGIS; GPU rendering (beta); the rustgis Python package on PyPI. v0.4.0 25 Oct 2026 3D view with terrain; File Geodatabases without GDAL; live MySQL, MariaDB and SQL Server; time slider; vertex editing, spatial join and kriging; SQL label classes; publication sheets in one command. Everything is a command The design decision that matters most for professional users is not the language. Every action in RustGIS, every ribbon button and menu item, is an engine command with an id and JSON parameters. Version 0.4.0 exposes 497 of them. The ribbon, the command line, the Python package, the AI assistant and external AI agents all call the same commands, so a workflow clicked together in the desktop app can be repeated from a script without translation. The code is split into layered crates, each depending only on the layers below it. That is what lets the same engine run headless on a server, inside a Jupyter kernel, as a desktop app and in a browser tab. Inside RustGIS: the crate stack Highlighted: the engine layer that the command line and Python package expose. apps rustgis · rustgis-cli · rustgis-web · rustgis-python desktop app, command line, browser build and Python package L6 rustgis-ui-egui the ribbon interface (swappable) L5 rustgis-assistant the AI Assistant, acting only through engine commands L4 rustgis-engine session, undo history and the command registry L3 rustgis-render · plugins · geolibre rendering, sandboxed WebAssembly plugins, the GeoLibre tool suite L2 rustgis-map · analysis · tiles layers and symbology, geoprocessing, web tiles and PMTiles L1 rustgis-data readers and writers for vector and raster formats, databases L0 rustgis-geom coordinates, extents, geodesic distance and area From the architecture table in the RustGIS README (v0.4.0). Same terrain, two interfaces RustGIS borrows its layout from ArcGIS Pro rather than QGIS: a ribbon with tabs ordered by workflow (Home, Data, Style, Edit, Analyze, View, Publish), a Layers pane on the left and context panes on the right. Here is the same Copernicus GLO-30 elevation tile over the Karkonosze mountains (Poland, Czech Republic) in both programs. RustGIS 0.4: tinted shaded relief and the Symbology pane QGIS 3.34: single-band pseudocolour and the layer properties dialog Copernicus DEM GLO-30, tile N50 E015 (© DLR e.V. 2010–2014 and © Airbus Defence and Space GmbH 2014–2018, provided under COPERNICUS by the European Union and ESA). How it compares on paper The RustGIS documentation includes its own comparison with QGIS and ArcGIS Pro. It is the developer’s description of their software, so read the RustGIS column as a claim. RustGIS 0.4 QGIS ArcGIS Pro Platform Licence Apache-2.0, free GPL-2.0+, free Proprietary Runs on Windows, macOS, Linux, browser Windows, macOS, Linux Windows only Interface Ribbon, tabs by workflow Toolbars and panels Ribbon Data Formats Broad, own readers; GDAL optional Widest (GDAL/OGR) Very wide, Esri formats Cloud-native GeoParquet, FlatGeobuf, PMTiles, COG over HTTP; Zarr GeoParquet, FlatGeobuf, PMTiles, COG, Zarr GeoParquet, COG, Zarr Projections Rasters in any EPSG; vectors in lon/lat, no full PROJ Full PROJ Full support Databases PostGIS, MySQL, SQL Server read-only (desktop) PostGIS, SpatiaLite, Oracle, SQL Server Enterprise geodatabases Analysis and maps Tools Built-in plus 1,000+ GeoLibre/Whitebox 1,000+ (GDAL, GRASS, SAGA) Most complete, paid extensions Print layout Presets, legends, map series; PDF, PNG, SVG Full composer with atlas Full layout view Web export Single-file HTML web map, OGC API Features Via qgis2web None Automation Scripting Every action is a command: CLI and Python package PyQGIS, qgis_process arcpy Plugins Sandboxed WebAssembly plugins, new registry Thousands of Python plugins .NET add-ins, Python toolboxes AI Assistant with undo; MCP server for agents Via plugins Copilot features The same page is unusually candid about where RustGIS falls short: Vector data is held in longitude/latitude; there is no full PROJ. PostGIS, MySQL and SQL Server are read-only and desktop-only. No versioned or multi-user editing; edits are not written back to databases. DWG, JPEG 2000, NetCDF and HDF need GDAL; the web app cannot write GeoPackages. Network datasets and advanced spatial statistics need the external tool suite or another GIS. Many features are first versions; there is no Python console inside the app. What we measured Claims of speed are easy to make, so we wrote a benchmark notebook that runs the same jobs on three engines: RustGIS 0.4.0 through its Python package, QGIS 3.34.11-Prizren through a persistent PyQGIS process (so QGIS starts once, as it does in the desktop app), and plain Python with GeoPandas, Shapely, NumPy and rasterio. Every engine reads the same files and writes the same outputs. Each case runs at least three times and we report the median. Shorter bars are faster; a tick marks the fastest engine. Cold start: time to a ready engine A fresh process starts and loads its GIS engine; median of five starts. Python alone 0.15 s RustGIS 0.15 s qgis_process, no Python 1.20 s GeoPandas + rasterio 1.88 s PyQGIS 3.16 s qgis_process 11.2 s Memory at start-up Peak resident memory while starting. Python alone 13 MB RustGIS 16 MB qgis_process, no Python 120 MB GeoPandas + rasterio 122 MB PyQGIS 169 MB qgis_process 315 MB RustGIS QGIS Python Buffer 100,000 points by 5 km Read a GeoPackage, buffer every point, write a GeoPackage. RustGIS 11.9 s QGIS 6.98 s Python 3.92 s ✓ Slope of a 30 m DEM (8.9 million cells) Same DEM and Horn method in every engine. GeoLibre is the tool suite RustGIS ships. RustGIS built-in 4.03 s QGIS 0.82 s ✓ Python 1.41 s IDW, 100,000 points On a 0.01° grid RustGIS refuses this job as “too much work”; on 0.02° it finishes. Python reproduces each engine’s distance method. RustGIS 7.08 s ✓ QGIS 9.30 s Python, geodesic 20.7 s Python, planar 10.2 s Draw 100,000 buildings, zoomed to 4 × 3 km Almost every footprint is off-screen. QGIS and Python only read what is visible. RustGIS 0.89 s QGIS 0.26 s ✓ Python 0.47 s Export an A4 map at 300 dpi Hillshade, AOI, title, legend, scale bar and north arrow. RustGIS 0.84 s ✓ QGIS 1.96 s Python 2.72 s Read and write 100,000 polygons as GeoParquet This QGIS build had no Parquet driver, so QGIS is missing here. RustGIS 0.32 s ✓ QGIS 1.54 s Python 0.52 s Run the same small job 100 times from a script A loop over QGIS’s command-line tool pays QGIS start-up on every call. RustGIS 5.77 s ✓ QGIS, one script 17.9 s QGIS, CLI loop 124.1 s Python 10.2 s Reference run on Windows, 16 logical cores, 33.6 GB RAM, RustGIS 0.4.0, QGIS 3.34.11-Prizren. DEM: Copernicus DEM GLO-30, tile N50 E015 (Karkonosze), 2,389 x 3,722 cells in UTM 33N. Absolute times depend on hardware; the ratios between engines carry over better. What the numbers say Starting RustGIS costs almost nothing. Loading the engine and creating an empty project took 0.15 s and 16 MB of memory, against 3.16 s and 169 MB for PyQGIS and 1.88 s and 122 MB just to import the Python GIS stack. It is the clearest confirmation of the project’s “fast and small” pitch, and it matters for scripts, notebooks and servers that start many short jobs. Buffering slows down sharply at scale. Up to 10,000 features RustGIS keeps pace with QGIS and GeoPandas. From 10,000 to 100,000 its buffer time grows about 26 times (an exponent of 1.42, where 1 means proportional), against roughly ten times for the other two. The cause sits in the buffer step itself, not in reading or writing files, which suggests an algorithmic issue the developers can fix. RustGIS chooses geodesic methods, and they are measurably different. Its buffers are built on the ellipsoid and its IDW uses great-circle distance, where QGIS works in map units. Interpolating 100,000 DEM-sampled points, the geodesic IDW was closer to the real terrain (RMSE 51.6 m against 55.0 m for QGIS, a gain of 6.1 %; small, but consistent). Measured against a true 5 km circle, its buffers are 0.29 % too small, against 0.57 % for QGIS’s planar buffers in UTM. QGIS is hard to beat on raster work. With QGIS already running, its GDAL-based slope, hillshade and GRASS flow accumulation were the fastest in our tests. RustGIS’s slope time grows in step with raster size, so its raster engine has no scaling problem, but it ran five to seven times slower than GDAL at every size we tried. Its built-in slope matches QGIS on 99.9 % of cells; the differences sit only on the first cell next to nodata. Drawing is fast, but RustGIS draws what you cannot see. RustGIS rendered 1,000 and 10,000 building footprints faster than QGIS. Zoomed into a 4 × 3 km window of 100,000 buildings, though, it took as long as for the whole area, while QGIS and Python only read the footprints in view. Rendering the DEM from a cloud-optimised GeoTIFF instead of a plain one made QGIS about 1.6 times faster and RustGIS only about 1.1 times, which suggests RustGIS is not yet taking full advantage of COG overviews. Input, output and scripting are where it shines. RustGIS was the fastest of the three at writing an A4 map at 300 dpi, at reading and writing 100,000 polygons as GeoJSON and as GeoParquet, and at running the same small job 100 times from a script. A loop over QGIS’s command-line tool pays QGIS start-up on every call and took more than fifteen times as long. The core is fast where Rust is expected to be fast: start-up, file input and output, scripting. The algorithms behind buffering, raster processing and rendering are still catching up. Our reading of the benchmark Try it in a minute The quickest route needs no install at all: the web app at web.rustgis.app is the full program compiled to WebAssembly. On the desktop, winget install OpenGeos.RustGIS (Windows) or brew install --cask opengeos/rustgis/rustgis (macOS) installs the app and its command line. In Python 3.12 or later: pip install rustgis import rustgis s = rustgis.Session(sample=True) s.run("gp.run", tool="buffer", params={"input": "Cities", "distance": 100}) s.to_png("map.png") The command line renders maps headless, and registers RustGIS as an MCP server so agents such as Claude Code, Cursor and VS Code can run GIS commands: rustgis-cli render dem.tif dem.png claude mcp add rustgis -- rustgis-cli mcp --sample Where RustGIS stands Three weeks after its first release, RustGIS is not a QGIS replacement and does not claim to be. It is a credible second architecture for open-source GIS, with a different set of trade-offs. Already useful for Quick looks at data. Opens GeoParquet, COG and GeoPackage in place, in the browser if needed. Teaching and workshops. The web app runs on any laptop with no install and no admin rights. Scripted maps. One command builds a layout with legend, scale bar and locator; the CLI renders maps headless. Agent workflows. An MCP server lets AI agents run GIS commands with undo. Not ready for Projection-heavy work. Vector data is held in lon/lat without full PROJ. Large vector processing. Buffering 100,000 features took 1.7 times as long as QGIS in our tests. Shared editing. No multi-user or versioned database editing. Plugin-dependent workflows. QGIS has thousands of plugins; RustGIS has a new registry. Worth watching Release pace. Four feature releases in thirteen days; we will track whether that holds and whether quality keeps up. The renderer. The GPU backend was still marked beta in v0.3.0, and it does not yet skip off-screen features or lean on COG overviews. Sandboxed plugins. WebAssembly plugins run with explicit permissions on the desktop, the CLI and the web. Contributors. The citation lists five authors; a wider maintainer base would reduce the bus factor. For the geospatial community, the more interesting question may not be whether RustGIS overtakes QGIS, but what it shows is now possible: a full desktop GIS, with layouts, 3D, cloud-native data and a scripting interface, built in weeks on a modern stack that runs equally on a laptop and in a browser tab. If its algorithms catch up with its architecture, RustGIS will be a serious option for lightweight and web-first GIS work. Open the web app Source on GitHub Sources RustGIS repository and README RustGIS releases rustgis on PyPI (release dates) RustGIS comparison with GeoLibre, QGIS and ArcGIS RustGIS Python documentation It’s FOSS: RustGIS is a desktop GIS tool that also runs in a browser Copernicus DEM GLO-30 Benchmark: eleven tests on identical, seeded inputs (buffering, IDW, slope, hillshade, flow accumulation, raster clipping, rendering, map export, batch scripting, file formats). Did you like this post? Read more and subscribe to our monthly newsletter!

元数据
来源Geoawesome
类型资讯
抽取状态raw
关键词
GeoAI
Tool