Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions GEOLIBRE_PARITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ _GeoLibre: docs/data-formats.md, docs/features.md › Adding data, SQL and datab
footprints). Still missing: DWG (GDAL only) and File Geodatabase in the web app.
- [x] **Excel, LandXML, encoded polylines, GeoRSS** ([#118](https://github.com/opengeos/RustGIS/issues/118)).
- [x] **Delimited text with a projected CRS or address geocoding**: x/y columns in any coordinate
system, WKT columns and any separator ([#115](https://github.com/opengeos/RustGIS/issues/115)); Find Place and address-table geocoding ([#127](https://github.com/opengeos/RustGIS/issues/127)).
- [x] **Remote vector and COG by URL**: Add Data › From URL ([#116](https://github.com/opengeos/RustGIS/issues/116)); COGs ([#132](https://github.com/opengeos/RustGIS/issues/132)), FlatGeobuf and
system, WKT columns and any separator ([#115](https://github.com/opengeos/RustGIS/issues/115)); place search and address-table geocoding ([#127](https://github.com/opengeos/RustGIS/issues/127)).
- [x] **Remote vector and COG by URL**: Home › Add › Add Data › From URL ([#116](https://github.com/opengeos/RustGIS/issues/116)); COGs ([#132](https://github.com/opengeos/RustGIS/issues/132)), FlatGeobuf and
GeoParquet ([#152](https://github.com/opengeos/RustGIS/issues/152)) read in place by HTTP range on the desktop and the web, from `s3://` too
([#150](https://github.com/opengeos/RustGIS/issues/150)).
- [x] **PMTiles and MBTiles** ([#74](https://github.com/opengeos/RustGIS/issues/74), [#113](https://github.com/opengeos/RustGIS/issues/113)): raster and vector archives, desktop and web.
Expand Down Expand Up @@ -87,7 +87,7 @@ _GeoLibre: docs/features.md › Map workspace, Rendering engines and 3D globe; d
- [ ] **Multi-map grid**: N synchronized panes. Partial: Side by Side with two maps and linked
views and cursors (_Roadmap: any time_).
- [ ] **Coordinate grids and readouts**: UTM and MGRS/USNG grids, UTM/MGRS/DDM readouts,
grid-reference search, pointer elevation. Partial: graticule, decimal/DMS and Go To XY
grid-reference search, pointer elevation. Partial: graticule, decimal/DMS and coordinate navigation
(_Roadmap: any time_).
- [ ] **Live data overlays**: RainViewer radar, a Timelapse of annual cloudless imagery, live feeds
(quakes, satellites, fires, AIS). Missing.
Expand Down Expand Up @@ -166,7 +166,7 @@ model-builder.md, segmentation.md, obia.md_
- [ ] **Routing services**: isochrones, service areas, OD matrix, multi-stop routing,
turn-by-turn (Valhalla/OSRM). Partial: shortest path over a line layer (_Roadmap: analysis_).
- [ ] **Geocoding**: forward, batch and reverse, with multiple providers and a place search box.
Partial: Find Place and address tables (Nominatim, Photon or your own server), a local locator,
Partial: place search and address tables (Nominatim, Photon or your own server), a local locator,
a search box. Missing: reverse geocoding (_Roadmap: analysis_).
- [ ] **Spatial statistics**: Emerging Hot Spot (Getis-Ord Gi\*), composite score builder.
Partial: Suitability Modeler (_Roadmap: analysis_ for hot spots).
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ Every screenshot is RustGIS itself, rendered offscreen by `cargo run -p rustgis-
|---|---|
| **Data** | GeoJSON, CSV/TSV with x/y 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/KMZ (with styles), GPX, GML, MapInfo MIF/MID, OpenStreetMap PBF, TopoJSON, AutoCAD DXF, LiDAR point clouds (LAS, LAZ, COPC) and geotagged photos (large files are read in place), files by their web address, every vector format GDAL reads when it is installed, Esri File Geodatabases without GDAL (desktop), PostGIS, MySQL, MariaDB and SQL Server tables read live (desktop), and SQL queries and DuckDB databases through DuckDB Spatial when DuckDB is installed; PMTiles archives (web or file) and MBTiles files; GeoJSON, CSV, GeoPackage, GeoParquet, Shapefile, FlatGeobuf, KML/KMZ, GPX and WKT out; standalone tables; reusable connections; supported QGIS projects and layer styles; layer and map files, styles, templates and packages |
| **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), and JPEG 2000, NetCDF, HDF, ERDAS Imagine and the other rasters GDAL reads when it is installed (desktop); reprojection from any EPSG code; Stretch, RGB, Classify, Unique Values, Colormap and Shaded Relief; DRA, band combinations, brightness/contrast/gamma; raster functions, indices, change detection, classification, georeferencing; cloud-optimised GeoTIFF export; data cubes, point time-series charts, temporal summaries and trends |
| **Maps** | Multiple maps and layouts per project, renamed and duplicated from the Browser pane; tilt, rotation, terrain and a 3D globe; maps of the Moon, Mars and other celestial bodies; 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, with borders in two worldviews |
| **Maps** | Multiple maps and layouts per project, renamed and duplicated from the Browser pane; tilt, rotation, terrain and a 3D globe; maps of the Moon, Mars and other celestial bodies; Web Mercator or any projection (Equal Earth, Robinson, Winkel Tripel, polar and regional presets, or an EPSG code); bookmarks, extent history, coordinate navigation; five offline basemaps, with borders in two worldviews |
| **Web services** | WMS, WMTS, WFS, OGC API Features and ArcGIS REST (FeatureServer, MapServer, ImageServer, VectorTileServer) from their capabilities |
| **Web tiles** | XYZ/TMS/WMS raster tiles, Mapbox Vector Tiles and MapLibre styles (sprites, patterns, expressions), cached and fetched in the background |
| **Cartography** | Single symbol, unique values, graduated colours, proportional symbols; label classes with SQL queries, straight and curved line placement, installed font families, scale ranges and annotation; stacked and dashed line strokes, symbol levels, reference scales and polygons without fill; masking, display filters, aggregation bins, 2.5D extrusion; graphics and dynamic text |
Expand Down
2 changes: 1 addition & 1 deletion crates/data/src/source/duckdb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ pub fn available() -> bool {
/// A live-only database named for a query: add its tables instead.
fn live_not_here() -> DataError {
DataError::Unsupported(
"SQL queries don't run on MySQL, MariaDB or SQL Server databases: add their tables with Add Data › Database…".into(),
"SQL queries don't run on MySQL, MariaDB or SQL Server databases: add their tables with Home › Add › Add Data › Database…".into(),
)
}

Expand Down
2 changes: 1 addition & 1 deletion crates/data/src/source/mysql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ impl Conn {
// A connection that was encrypted isn't continued in the clear.
if plain && !self.plain {
return Err(DataError::Format(
"the server no longer offers TLS: connect again with Add Data › Database… to accept that".into(),
"the server no longer offers TLS: connect again with Home › Add › Add Data › Database… to accept that".into(),
));
}
*guard = Some(client);
Expand Down
2 changes: 1 addition & 1 deletion crates/engine/src/cmd/catalogs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,5 +163,5 @@ fn fetch(url: &str) -> Result<Vec<u8>, String> {

#[cfg(target_arch = "wasm32")]
fn fetch(_url: &str) -> Result<Vec<u8>, String> {
Err("in the web app, use Home › Web Data › Overture Maps… or Source Cooperative…".into())
Err("in the web app, use Home › Add › Web Data › Overture Maps… or Source Cooperative…".into())
}
2 changes: 1 addition & 1 deletion crates/engine/src/cmd/earthdata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,5 +118,5 @@ fn fetch(url: &str) -> Result<Vec<u8>, String> {

#[cfg(target_arch = "wasm32")]
fn fetch(_url: &str) -> Result<Vec<u8>, String> {
Err("in the web app, search NASA Earthdata with Home › Web Data › NASA Earthaccess".into())
Err("in the web app, search NASA Earthdata with Home › Add › Web Data › NASA Earthaccess".into())
}
8 changes: 4 additions & 4 deletions crates/engine/src/cmd/embeddings.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! Satellite embeddings (Home › Web Data › Satellite Embeddings): the catalog of embedding
//! Satellite embeddings (Home › Add › Web Data › Satellite Embeddings): the catalog of embedding
//! datasets, a search for a dataset's tiles where the map is, and a tile shown on the map —
//! AlphaEarth's as a cloud-optimised GeoTIFF of three bands, Earth Index's as points coloured by
//! their vectors' principal components, Tessera's as a raster of three bands of the view.
Expand Down Expand Up @@ -100,7 +100,7 @@ fn search(s: &mut Session, p: &Value) -> CmdResult {
#[cfg(target_arch = "wasm32")]
{
let _ = (year, area);
Err("in the web app, search with Home › Web Data › Satellite Embeddings".into())
Err("in the web app, search with Home › Add › Web Data › Satellite Embeddings".into())
}
#[cfg(not(target_arch = "wasm32"))]
{
Expand Down Expand Up @@ -192,7 +192,7 @@ fn add_points(s: &mut Session, p: &Value, name: Option<String>) -> CmdResult {
#[cfg(target_arch = "wasm32")]
{
let _ = url;
return Err("in the web app, add Earth Index with Home › Web Data › Satellite Embeddings".into());
return Err("in the web app, add Earth Index with Home › Add › Web Data › Satellite Embeddings".into());
}
#[cfg(not(target_arch = "wasm32"))]
{
Expand Down Expand Up @@ -251,7 +251,7 @@ fn add_tessera(s: &mut Session, p: &Value, d: &emb::EmbeddingDataset, name: Opti
#[cfg(target_arch = "wasm32")]
{
let _ = area;
return Err("in the web app, add Tessera with Home › Web Data › Satellite Embeddings".into());
return Err("in the web app, add Tessera with Home › Add › Web Data › Satellite Embeddings".into());
}
#[cfg(not(target_arch = "wasm32"))]
{
Expand Down
6 changes: 3 additions & 3 deletions crates/engine/src/cmd/geocode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::{CmdResult, CommandSpec as C, Session};

pub fn commands() -> Vec<C> {
vec![
C::new("map.findPlace", "Find Place", "Home › Navigate", find_place).params(
C::new("map.findPlace", "By Place or Address…", "Home › Navigate › Locate", find_place).params(
r#"{"query": "a place or an address", "provider"?: "nominatim" (OpenStreetMap, default) | "photon", "url"?: "a geocoding server of your own", "limit"?: 1–20, "go"?: bool (zooms to the first, default true)}"#,
),
C::new("layer.geocode", "Geocode Addresses", "Home › Add › Add Data", geocode).params(
Expand Down Expand Up @@ -46,7 +46,7 @@ fn find_place(s: &mut Session, p: &Value) -> CmdResult {
#[cfg(target_arch = "wasm32")]
Comment thread
deniial00 marked this conversation as resolved.
{
let _ = (s, query, g, limit);
Err("in the web app, find places with Home › Navigate › Find Place".into())
Err("in the web app, find places with Home › Navigate › Locate › By Place or Address…".into())
}
#[cfg(not(target_arch = "wasm32"))]
{
Expand Down Expand Up @@ -272,5 +272,5 @@ fn lookup(g: &Geocoder, distinct: &[String]) -> Result<Lookup, String> {

#[cfg(target_arch = "wasm32")]
fn lookup(_: &Geocoder, _: &[String]) -> Result<Lookup, String> {
Err("in the web app, geocode addresses with Home › Add Data › Geocode Addresses".into())
Err("in the web app, geocode addresses with Home › Add › Add Data › Geocode Addresses".into())
}
12 changes: 6 additions & 6 deletions crates/engine/src/cmd/items.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Project items: folder connections, map and layer files, styles, project templates, packages,
//! layer templates, tasks, and 3D export (Home › Project; Data › Layer Templates and Styles; Share ›
//! Package, Save As and Output).
//! layer templates, tasks, and 3D export (Home › Add; Data › Layer Templates and Styles; Publish ›
//! Package, Save As and Output; Command Search for map/template imports).

use std::fmt::Write as _;
use std::path::Path;
Expand All @@ -21,7 +21,7 @@ const MAX_FILE: u64 = 512 << 20;
pub fn commands() -> Vec<C> {
vec![
// Folder connections.
C::new("project.addFolder", "Add Folder", "Home › Project", |s, p| {
C::new("project.addFolder", "Add Folder", "Home › Add › Add Data", |s, p| {
let path = ps(p, "path").map(str::trim).filter(|p| !p.is_empty()).ok_or("path is required")?;
if !cfg!(target_arch = "wasm32") && !Path::new(path).is_dir() {
return Err(format!("{path} isn't a folder"));
Expand Down Expand Up @@ -56,7 +56,7 @@ pub fn commands() -> Vec<C> {
C::new("map.save", "Save Map File", "Publish › Save As", |s, p| save_item(s, "map", p))
.view()
.params(r#"{"path": "*.rgismap", "map"?: name}"#),
C::new("map.import", "Import", "Home › Project", import_maps).params(r#"{"path": "*.rgismap|*.rgis|*.rgispkg" | "text": map file JSON | "data": base64 file}"#),
C::new("map.import", "Import", "Command Search", import_maps).params(r#"{"path": "*.rgismap|*.rgis|*.rgispkg" | "text": map file JSON | "data": base64 file}"#),
Comment thread
deniial00 marked this conversation as resolved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Command Search" is not a ribbon location, unlike the other values in this field. Command Search probably shows it as-is, and any check that a location names a real tab or group would fail. The same applies to project.fromTemplate (line 201). Consider a real location such as "Publish › Save As" or an empty string, if the registry allows one. Confidence: low-medium.

C::new("layer.save", "Save Layer File", "Publish › Save As", |s, p| save_item(s, "layer", p))
.view()
.when(need_layer)
Expand Down Expand Up @@ -172,10 +172,10 @@ pub fn commands() -> Vec<C> {
C::new("project.saveTemplate", "Save Project Template", "Publish › Save As", |s, p| save_item(s, "template", p))
.view()
.params(r#"{"path": "*.rgistemplate", "name"?: template name}"#),
C::new("project.newTemplate", "New Custom Template", "Home › Project", |s, p| save_item(s, "template", p))
C::new("project.newTemplate", "New Custom Template", "Publish › Save As", |s, p| save_item(s, "template", p))
.view()
.params(r#"{"path": "*.rgistemplate", "name"?: template name}"#),
C::new("project.fromTemplate", "Open Custom Template", "Home › Project", |s, p| {
C::new("project.fromTemplate", "Open Custom Template", "Command Search", |s, p| {
let text = read_text(p)?;
super::connections::clear_active();
let mut proj = match Project::from_import_json(&text, None) {
Expand Down
Loading
Loading