You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When implementing a new exported function, complete **all four steps** before considering the task done.
94
+
When implementing a new exported function, first write a plan (step 0), get it approved, then complete the remaining steps before considering the task done.
95
+
96
+
### 0. Plan first (before writing any code)
97
+
98
+
Present a short, written plan and wait for approval before implementing. The plan should cover:
99
+
100
+
-**Name**: the proposed `ddbs_*` name, and whether it should follow an existing family convention (e.g. `ddbs_line_*` for linestring ops, `ddbs_get_n*` for counts) rather than a bare mirror of the `ST_*` name.
101
+
-**R file**: which `R/` script it goes in (see Key File Map).
102
+
-**pkgdown**: which `reference:` section in `_pkgdown.yml` it belongs to.
103
+
-**Macro**: whether to also register a DuckDB macro (in `R/utils_not_exported.R`) so it works inside `dplyr::mutate()`/`summarise()`.
104
+
105
+
Before presenting the plan, verify the DuckDB function empirically (signature, return type, CRS behaviour, edge cases) with a quick query rather than assuming.
Copy file name to clipboardExpand all lines: NEWS.md
+31-1Lines changed: 31 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,35 @@
1
1
2
-
# duckspatial 1.1.3
2
+
3
+
4
+
# duckspatial (development version)
5
+
6
+
## NEW FEATURES
7
+
8
+
*`ddbs_extension_info()`: prints a `glimpse()` of a DuckDB extension's row from `duckdb_extensions()` (the spatial extension by default), showing its installed/loaded status, version, and install path.
9
+
10
+
*`ddbs_reduce_precision()`: snaps geometry coordinates to a regular grid, reducing their precision.
11
+
12
+
*`ddbs_line_node()`: nodes a set of line geometries, splitting them at every crossing and returning a fully noded `MULTILINESTRING`.
13
+
14
+
*`ddbs_intersection_agg()`: computes the geometric intersection (common area) of a set of geometries, optionally grouped by one or more columns. The intersection counterpart to `ddbs_union_agg()`.
15
+
16
+
*`ddbs_reverse()`: returns each geometry with the order of its vertices reversed.
17
+
18
+
*`ddbs_normalize()`: returns each geometry in its normalized (canonical) form.
19
+
20
+
*`ddbs_write_mbtiles()`: generates a Mapbox Vector Tile pyramid from a spatial dataset and writes it to an MBTiles file, ready to serve or convert to PMTiles.
21
+
22
+
*`ddbs_as_mvt_geom()`: transforms geometries into Mapbox Vector Tile (MVT) coordinate space, clipping them to a tile's bounding box and mapping the coordinates into the tile's integer pixel space.
23
+
24
+
*`ddbs_geom_from_text()`, `ddbs_geom_from_wkb()`, `ddbs_geom_from_hexwkb()`, `ddbs_geom_from_hexewkb()`, `ddbs_geom_from_geojson()`: parse serialized geometries (WKT, WKB, HEXWKB, HEXEWKB, GeoJSON) into a spatial object. These are the inverses of the `ddbs_as_*()` serializers.
25
+
26
+
*`ddbs_get_ninterior_rings()`: returns the number of interior rings (holes) in a POLYGON geometry.
27
+
28
+
## ENHANCEMENTS
29
+
30
+
*`ddbs_install()`: gains a `repos` argument to install an extension from a specific DuckDB repository (e.g. `"core"`, `"core_nightly"`, `"community"`). When `NULL` (default), the previous behaviour is kept (core, then community) (#144).
31
+
32
+
*`ddbs_as_geojson()`: now includes all non-geometry columns as feature `properties` instead of serializing only the geometry. By default it returns a single GeoJSON `FeatureCollection` (matching `geojsonsf::sf_geojson()`); pass `feature_collection = FALSE` for a vector with one `Feature` per row (#141).
0 commit comments