Release Geo Tools 0.2.0
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-09-02 12:02:09 +02:00
parent 2acdb66399
commit 3538e4e12b
29 changed files with 1352 additions and 172 deletions
+4 -2
View File
@@ -1,7 +1,9 @@
# Architecture
Geo Tools is a static React/Vite application wrapped in the shared Toolbox shell. `geo/formats.ts` parses GeoJSON, GPX, KML or a narrow coordinate-CSV dialect into a project-owned `FeatureCollection` model containing only Point, LineString and Polygon geometries plus scalar properties. Conversion serialises that model and returns visible loss notes.
Geo Tools is a static React/Vite application wrapped in the shared Toolbox shell. `geo/formats.ts` parses GeoJSON, GPX, KML or a narrow coordinate-CSV dialect into a project-owned `FeatureCollection` model covering Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon and recursively bounded GeometryCollection values plus scalar properties. Conversion serialises that model and returns visible loss notes where a target format must flatten structure.
`geo/model.ts` validates WGS 84 coordinate ranges and enforces the collection-wide coordinate limit. `geo/analysis.ts` computes bounds, haversine line distance and elevation changes, and performs iterative DouglasPeucker simplification. The local sketch projects coordinates only into its own SVG viewport; it loads no basemap, tiles or projection service.
`geo/model.ts` validates WGS 84 coordinate ranges and enforces collection-wide coordinate, geometry-count and nesting-depth limits. `geo/analysis.ts` computes bounds, haversine line distance and elevation changes, and performs iterative DouglasPeucker simplification across relevant nested path members. The local sketch projects every supported geometry path only into its own SVG viewport; it loads no basemap, tiles or projection service.
`geo/editor.ts` assigns stable feature/geometry/coordinate paths across the complete geometry union, performs immutable point or feature replacement, and sends every result back through the common validator before returning it. Track summaries recurse through GeometryCollections, and direction reversal is limited to line geometries. The local ruler returns a spherical distance, initial bearing and coordinate midpoint; it does not imply a routing path or projected measurement.
XML input is lexically bounded before DOM construction and rejects DOCTYPE, entity and stylesheet declarations. Version 0.1 uses no worker, storage or server API. Relative entry and asset URLs keep the build relocatable below a nested portal path.
+4 -2
View File
@@ -2,6 +2,8 @@
Imported coordinates and generated exports stay in page memory. The app has no telemetry, analytics, account, persistence, map-tile request or other runtime network path. Names and properties are rendered as React text and escaped on XML export.
Text/file input is limited to 16 MiB and the common model to 200,000 coordinates. XML is rejected above 250,000 elements or 256 levels before DOM parsing; DOCTYPE, entity and XML stylesheet declarations are rejected. These controls bound supported input but are not a general XML sanitiser.
Text/file input is limited to 16 MiB and the common model to 200,000 coordinates, 20,000 geometries and 16 GeometryCollection levels. XML is rejected above 250,000 elements or 256 levels before DOM parsing; DOCTYPE, entity and XML stylesheet declarations are rejected. These controls bound supported input but are not a general XML sanitiser.
Coordinates are interpreted as WGS 84 longitude/latitude. There is no CRS transformation and the local SVG sketch is not a map projection. Distance is a spherical approximation, elevation gain/loss uses the supplied samples without smoothing, and conversion intentionally drops unsupported styles, extensions, geometry structure or properties as stated beside each result. Do not treat results as survey-grade measurements.
Coordinates are interpreted as WGS 84 longitude/latitude. There is no CRS transformation and the local SVG sketch is not a map projection. Distance is a spherical approximation, elevation gain/loss uses the supplied samples without smoothing, and conversion intentionally drops unsupported styles, extensions, properties, or flattens geometry structure where the target format cannot preserve it, as stated beside each result. Do not treat results as survey-grade measurements.
Geometry editing validates coordinate bounds, model size and recursion limits but does not repair topology, ring winding, self-intersections or semantic feature relationships. GPX import retains track geometry and available elevations in the common model; timestamps, extensions and vendor-specific track metadata are not round-tripped. The two-point ruler measures a great-circle segment only and never contacts a routing or map service.