- BUG-3726 - Fix OSW→OSM conversion so duplicate source/generated node IDs do not corrupt way geometry. Way and relation references now preserve the exact
ogr2osmnode/way/relation objects during sequential ID remapping, preventing QGIS spider-line artifacts from ways snapping to unrelated duplicate node IDs. - Add regression coverage for overlapping OSW node IDs and generated IDs, asserting converted OSM ways keep short local segments instead of cross-map jumps.
- Update README badges for PyPI package version, unit test workflow status, and coverage with short cache timing.
- BUG-3665 - Fix OSM→OSW export so zone boundary nodes are retained in
nodes.geojsonand zone_w_idreferences resolve to remapped sequential_ids, restoring OSW validation compliance for pedestrian-area geometries. - Add regression coverage that converts a
highway=pedestrianplaza fixture and assertspython-osw-validationreports zero issues. - ISSUE-3191 - Fixed Documentation
- Fix OSM→OSW conversion when OSM Way contains consecutive duplicate nodes (bug 3286). Instead of generating an invalid 0 length geometry, the segment is ignored.
- Fix OSM→OSW export classification so canonical OSM tags are used for semantic recognition and
ext:*tags are preserved as extensions instead of being treated as feature-defining tags. - Fix closed ext-only ways such as
ext:demolished:building=yesto emit polygon output without falling through to point geometry construction. - Fix GeoJSON node/point export so topology endpoints remain in
nodes.geojson, keeping edge_u_id/_v_idreferences OSW-compliant on roundtrip validation. - Add regression coverage for bug 3477 and serializer/compliance cases around ext-only geometries and remapped node references.
- Fix duplicate polygon
_idgeneration in OSM→OSW export by assigning sequential IDs per feature type. - Remap edge
_u_id/_v_idand zone_w_idreferences to exported node IDs so references stay consistent after ID normalization. - Harden OSM ID remapping in normalizer output with deterministic per-type counters and relation-member type-aware reference rewrites.
- Preserve custom
ext:*features across all geometries: ext-only points keep numeric IDs (nopprefix), ext-only lines/polygons are retained, and custom attributes are emitted in the appropriate GeoJSON file. - Add schema-safe handling for ext-only geometries during construction to avoid missing-ref crashes.
- Emit GeoJSON with indentation for easier inspection.
- Update converters to emit OSW 0.3 schema id and support new vegetation features (trees, tree rows, woods).
- Extend OSW normalizers to keep
leaf_cycleandleaf_typewhere allowed for points, lines, and polygons. - Add unit coverage for OSW 0.3 natural feature handling.
- Expand OSM normalizer coverage and robustness: preserve non-compliant/unknown tags as
ext:*, canonicalize JSON ext values, normalize elevation from 3D geometries, tolerate string IDs, and harden edge-case handling with tests. - OSW→OSM improvements: promote invalid/unknown fields (incl. dict/list) to
ext:*, setversion="1"for visible elements, deriveext:elevationfrom Z coords, and keep invalid incline/climb values underext:instead of dropping them. - OSM→OSW improvements: verify OSW 0.3
$schemaheaders, export tree/tree_row/wood features, treatext:tags as valid identifiers in OSW normalizers for filtering, and add multi-exterior handling tests for zones/polygons plus line parsing guards. - Added extensive unit tests for osm/osw normalizers and graph serializers (filters, geojson import/export, zebra crossing mapping, kerb/foot validators, invalid line/polygon/zone branches, ref normalization, etc.).
- Added fixtures for vegetation and 3D elevation scenarios (
tree-test.xml) and custom-property round-trip checks. - Implemented collision-free ID handling: sequential remapping of nodes/ways/relations on OSW→OSM export with reference rewrites, plus tests confirming sequential IDs and schema/tag updates.
- Added default
version="1"attribute to all nodes, ways, and relations generated during OSW→OSM conversion. - Introduced unit test coverage to verify version attributes are written for all OSM elements.
- Updated OSMTaggedNodeParser to apply the OSW node and point filters with normalization before adding loose tagged nodes, ensuring non-compliant features like crossings are no longer emitted.
- Extended serializer tests to cover the new tagged-node behavior, confirming that compliant kerb features are retained while schema-invalid crossings are skipped.
- Updated GeoJSON node export to normalize IDs, retain full OSM identifiers, and skip non-OSW features so schema-invalid crossings are no longer emitted.
- Ensured only synthetic node IDs have their prefix trimmed, fixing the prior bug where numeric IDs lost the leading digit and caused _id/ext:osm_id mismatches.
- Expanded serializer tests to cover OSW-compliant node export, rejection of non-compliant crossings, and prefix handling for generated point IDs.
- Refined GeoJSON export to filter nodes using tag-only metadata, preventing schema-invalid features from being emitted.
- Normalized ext:osm_id handling to preserve full numeric identifiers while trimming prefixed synthetic values.
- Retain numeric
inclinevalues and newlengthtags during way normalization - Recognize any
highway=stepsway as stairs, preserving validclimbtags - Add compliance test verifying
inclinesurvives OSW→OSM→OSW roundtrips
- Removed
climbtag generation from OSM normalizer
- Retain existing
inclineandclimbtags when converting OSW to OSM - Add
climbtag when missing andinclineis provided - Expanded unit tests for incline/climb handling
- Fixed BUG 2040
- Removing the width tag if the width is not float or integer
- Added unit test cases
- Fixed BUG 1654
- Added functionality to retain the
exttags
- Verified all output files are valid GeoJSON FeatureCollections
- Ensured
nodesfiles contain only Point geometries - Validated that all feature
_idproperties are strings - Asserted no features are missing geometry or coordinates
- Checked that no duplicate
_idvalues exist within any generated file
- Added unit test cases
- Added unit test cases pipeline
- Added support to upload test cases results on Azure blob
- Fixes XML Parsing issue
- Fixes MemoryError issue
- Fixes dependencies
- Fixes the issues with multiple files generated during the conversion.
- Adds support for OSM.XML in addition to OSM.PBF file format
- Added internal extensions (lines, zones and polygons)
- Made all OSW files optional
- Filter areas out of edges
- Remove osm_id tag from nodes and points
- Add one character prefix to extension id's to avoid collisions
- Create a zone/polygon entity for each exterior and include interiors of each polygon
- Fix bug in circular ways where edges did not meet end-to-end
- Remove internal nodes which serve no purpose
- Add _id to edges
- Update OSM Normalizer: No need to manipulate tactile_paving, remove OSW generated fields
- Update OSW Normalizer: bring normalizer a step close to being based of schema file, update normalizer to OSW 0.2
- Added init files
- Added prefix
- Introduces OSW to OSM convertor which converts OSW(geojson) files to OSM(xml) format.
- Added example.py file which demonstrate how to use the package
- Updated README.md file
- Updated CHANGELOG.md file
- Added dependencies to requirements.txt
- Introduces OSM to OSW convertor which converts OSM(pbf) file to OSW format.
- Added example.py file which demonstrate how to use the package
- Added unit test cases
- Added README.md file
- Added CHANGELOG.md file
- Added test.pypi pipeline