ogc-gml 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CLAUDE.md +139 -0
- data/Gemfile +0 -1
- data/README.adoc +4 -4
- data/lib/ogc/gml/abstract_continuous_coverage.rb +0 -2
- data/lib/ogc/gml/abstract_coordinate_operation.rb +0 -4
- data/lib/ogc/gml/abstract_coordinate_system.rb +0 -7
- data/lib/ogc/gml/abstract_coverage.rb +0 -5
- data/lib/ogc/gml/abstract_crs.rb +0 -6
- data/lib/ogc/gml/abstract_curve.rb +0 -1
- data/lib/ogc/gml/abstract_datum.rb +0 -6
- data/lib/ogc/gml/abstract_feature.rb +0 -8
- data/lib/ogc/gml/abstract_feature_collection.rb +0 -5
- data/lib/ogc/gml/abstract_general_conversion.rb +0 -7
- data/lib/ogc/gml/abstract_general_derived_crs.rb +0 -2
- data/lib/ogc/gml/abstract_general_operation_parameter.rb +0 -1
- data/lib/ogc/gml/abstract_general_operation_parameter_property.rb +0 -8
- data/lib/ogc/gml/abstract_general_parameter_value_property.rb +0 -2
- data/lib/ogc/gml/abstract_general_transformation.rb +0 -1
- data/lib/ogc/gml/abstract_geometric_aggregate.rb +0 -1
- data/lib/ogc/gml/abstract_geometric_primitive.rb +0 -6
- data/lib/ogc/gml/abstract_geometry.rb +0 -1
- data/lib/ogc/gml/abstract_gml.rb +0 -6
- data/lib/ogc/gml/abstract_meta_data.rb +0 -1
- data/lib/ogc/gml/abstract_ring_property.rb +0 -2
- data/lib/ogc/gml/abstract_solid.rb +0 -1
- data/lib/ogc/gml/abstract_surface.rb +0 -1
- data/lib/ogc/gml/abstract_time_complex.rb +0 -6
- data/lib/ogc/gml/abstract_time_geometric_primitive.rb +0 -7
- data/lib/ogc/gml/abstract_time_object.rb +0 -6
- data/lib/ogc/gml/abstract_time_primitive.rb +0 -4
- data/lib/ogc/gml/abstract_time_slice.rb +0 -8
- data/lib/ogc/gml/abstract_time_topology_primitive.rb +0 -7
- data/lib/ogc/gml/abstract_topo_primitive.rb +0 -6
- data/lib/ogc/gml/abstract_topology.rb +0 -5
- data/lib/ogc/gml/affine_cs.rb +0 -1
- data/lib/ogc/gml/affine_cs_property.rb +0 -2
- data/lib/ogc/gml/affine_placement.rb +0 -3
- data/lib/ogc/gml/angle.rb +0 -3
- data/lib/ogc/gml/arc.rb +0 -1
- data/lib/ogc/gml/arc_by_bulge.rb +0 -2
- data/lib/ogc/gml/arc_by_center_point.rb +0 -5
- data/lib/ogc/gml/arc_string.rb +0 -6
- data/lib/ogc/gml/arc_string_by_bulge.rb +0 -2
- data/lib/ogc/gml/array.rb +0 -7
- data/lib/ogc/gml/b_spline.rb +0 -1
- data/lib/ogc/gml/bag.rb +0 -8
- data/lib/ogc/gml/base_unit.rb +0 -7
- data/lib/ogc/gml/bezier.rb +0 -6
- data/lib/ogc/gml/bounding_shape.rb +0 -2
- data/lib/ogc/gml/cartesian_cs.rb +0 -1
- data/lib/ogc/gml/cartesian_cs_property.rb +0 -2
- data/lib/ogc/gml/category.rb +0 -2
- data/lib/ogc/gml/category_extent.rb +0 -2
- data/lib/ogc/gml/circle.rb +0 -1
- data/lib/ogc/gml/circle_by_center_point.rb +0 -7
- data/lib/ogc/gml/clothoid.rb +0 -3
- data/lib/ogc/gml/code_with_authority.rb +0 -2
- data/lib/ogc/gml/composite_curve.rb +0 -2
- data/lib/ogc/gml/composite_solid.rb +0 -2
- data/lib/ogc/gml/composite_surface.rb +0 -2
- data/lib/ogc/gml/composite_value.rb +0 -8
- data/lib/ogc/gml/compound_crs.rb +0 -2
- data/lib/ogc/gml/compound_crs_property.rb +0 -2
- data/lib/ogc/gml/concatenated_operation.rb +0 -8
- data/lib/ogc/gml/concatenated_operation_property.rb +0 -2
- data/lib/ogc/gml/cone.rb +0 -1
- data/lib/ogc/gml/control_point.rb +0 -4
- data/lib/ogc/gml/conventional_unit.rb +0 -9
- data/lib/ogc/gml/conversion.rb +0 -3
- data/lib/ogc/gml/conversion_property.rb +0 -2
- data/lib/ogc/gml/conversion_to_preferred_unit.rb +0 -2
- data/lib/ogc/gml/coordinate_operation_accuracy.rb +0 -2
- data/lib/ogc/gml/coordinate_operation_property.rb +0 -2
- data/lib/ogc/gml/coordinate_system_axis.rb +0 -6
- data/lib/ogc/gml/coordinate_system_axis_property.rb +0 -2
- data/lib/ogc/gml/coordinate_system_property.rb +0 -2
- data/lib/ogc/gml/coverage_function.rb +0 -4
- data/lib/ogc/gml/crs_property.rb +0 -2
- data/lib/ogc/gml/cubic_spline.rb +0 -7
- data/lib/ogc/gml/curve.rb +0 -2
- data/lib/ogc/gml/curve_array_property.rb +0 -3
- data/lib/ogc/gml/curve_property.rb +0 -5
- data/lib/ogc/gml/curve_segment_array_property.rb +0 -6
- data/lib/ogc/gml/cylinder.rb +0 -1
- data/lib/ogc/gml/cylindrical_cs.rb +0 -1
- data/lib/ogc/gml/cylindrical_cs_property.rb +0 -2
- data/lib/ogc/gml/data_block.rb +0 -3
- data/lib/ogc/gml/datum_property.rb +0 -2
- data/lib/ogc/gml/definition.rb +0 -6
- data/lib/ogc/gml/definition_proxy.rb +0 -6
- data/lib/ogc/gml/derived_crs.rb +0 -4
- data/lib/ogc/gml/derived_crs_property.rb +0 -2
- data/lib/ogc/gml/derived_unit.rb +0 -8
- data/lib/ogc/gml/dictionary.rb +0 -10
- data/lib/ogc/gml/dictionary_entry.rb +0 -3
- data/lib/ogc/gml/directed_edge_property.rb +0 -2
- data/lib/ogc/gml/directed_face_property.rb +0 -2
- data/lib/ogc/gml/directed_node_property.rb +0 -2
- data/lib/ogc/gml/directed_observation.rb +0 -13
- data/lib/ogc/gml/directed_observation_at_distance.rb +0 -14
- data/lib/ogc/gml/directed_topo_solid_property.rb +0 -2
- data/lib/ogc/gml/direction_description.rb +0 -3
- data/lib/ogc/gml/direction_property.rb +0 -5
- data/lib/ogc/gml/direction_vector.rb +0 -3
- data/lib/ogc/gml/discrete_coverage.rb +0 -1
- data/lib/ogc/gml/dms_angle.rb +0 -2
- data/lib/ogc/gml/domain_of_validity.rb +0 -2
- data/lib/ogc/gml/domain_set.rb +0 -3
- data/lib/ogc/gml/dynamic_feature.rb +0 -11
- data/lib/ogc/gml/dynamic_feature_collection.rb +0 -12
- data/lib/ogc/gml/dynamic_feature_member.rb +0 -2
- data/lib/ogc/gml/edge.rb +0 -10
- data/lib/ogc/gml/ellipsoid.rb +0 -8
- data/lib/ogc/gml/ellipsoid_property.rb +0 -2
- data/lib/ogc/gml/ellipsoidal_cs.rb +0 -1
- data/lib/ogc/gml/ellipsoidal_cs_property.rb +0 -2
- data/lib/ogc/gml/engineering_crs.rb +0 -10
- data/lib/ogc/gml/engineering_crs_property.rb +0 -2
- data/lib/ogc/gml/engineering_datum.rb +0 -1
- data/lib/ogc/gml/engineering_datum_property.rb +0 -2
- data/lib/ogc/gml/envelope.rb +0 -3
- data/lib/ogc/gml/envelope_with_time_period.rb +0 -4
- data/lib/ogc/gml/face.rb +0 -10
- data/lib/ogc/gml/face_or_topo_solid_property.rb +0 -6
- data/lib/ogc/gml/feature_array_property.rb +0 -2
- data/lib/ogc/gml/feature_collection.rb +0 -1
- data/lib/ogc/gml/feature_property.rb +0 -2
- data/lib/ogc/gml/file.rb +0 -3
- data/lib/ogc/gml/formula_citation.rb +0 -2
- data/lib/ogc/gml/general_conversion_property.rb +0 -2
- data/lib/ogc/gml/general_transformation_property.rb +0 -2
- data/lib/ogc/gml/generic_meta_data.rb +0 -1
- data/lib/ogc/gml/geocentric_crs.rb +0 -4
- data/lib/ogc/gml/geocentric_crs_property.rb +0 -2
- data/lib/ogc/gml/geodesic.rb +0 -5
- data/lib/ogc/gml/geodesic_string.rb +0 -5
- data/lib/ogc/gml/geodetic_crs.rb +0 -6
- data/lib/ogc/gml/geodetic_crs_property.rb +0 -2
- data/lib/ogc/gml/geodetic_datum.rb +0 -3
- data/lib/ogc/gml/geodetic_datum_property.rb +0 -2
- data/lib/ogc/gml/geographic_crs.rb +0 -3
- data/lib/ogc/gml/geographic_crs_property.rb +0 -2
- data/lib/ogc/gml/geometric_complex.rb +0 -2
- data/lib/ogc/gml/geometric_primitive_property.rb +0 -2
- data/lib/ogc/gml/geometry_array_property.rb +0 -2
- data/lib/ogc/gml/geometry_property.rb +0 -2
- data/lib/ogc/gml/grid.rb +0 -7
- data/lib/ogc/gml/grid_function.rb +0 -2
- data/lib/ogc/gml/grid_limits.rb +0 -2
- data/lib/ogc/gml/history_property.rb +0 -2
- data/lib/ogc/gml/image_crs.rb +0 -5
- data/lib/ogc/gml/image_crs_property.rb +0 -2
- data/lib/ogc/gml/image_datum.rb +0 -1
- data/lib/ogc/gml/image_datum_property.rb +0 -2
- data/lib/ogc/gml/indirect_entry.rb +0 -2
- data/lib/ogc/gml/knot_property.rb +0 -2
- data/lib/ogc/gml/length.rb +0 -3
- data/lib/ogc/gml/line_string.rb +0 -6
- data/lib/ogc/gml/line_string_segment.rb +0 -6
- data/lib/ogc/gml/line_string_segment_array_property.rb +0 -2
- data/lib/ogc/gml/linear_cs.rb +0 -1
- data/lib/ogc/gml/linear_cs_property.rb +0 -2
- data/lib/ogc/gml/linear_ring.rb +0 -5
- data/lib/ogc/gml/location_property.rb +0 -4
- data/lib/ogc/gml/mapping_rule.rb +0 -2
- data/lib/ogc/gml/meta_data_property.rb +0 -2
- data/lib/ogc/gml/moving_object_status.rb +0 -12
- data/lib/ogc/gml/multi_curve.rb +0 -2
- data/lib/ogc/gml/multi_curve_property.rb +0 -2
- data/lib/ogc/gml/multi_geometry.rb +0 -3
- data/lib/ogc/gml/multi_geometry_property.rb +0 -2
- data/lib/ogc/gml/multi_point.rb +0 -3
- data/lib/ogc/gml/multi_point_property.rb +0 -2
- data/lib/ogc/gml/multi_solid.rb +0 -3
- data/lib/ogc/gml/multi_solid_property.rb +0 -2
- data/lib/ogc/gml/multi_surface.rb +0 -3
- data/lib/ogc/gml/multi_surface_property.rb +0 -2
- data/lib/ogc/gml/namespace.rb +0 -2
- data/lib/ogc/gml/namespaces/gml_31_namespace.rb +0 -1
- data/lib/ogc/gml/namespaces/gml_32_namespace.rb +0 -1
- data/lib/ogc/gml/node.rb +0 -12
- data/lib/ogc/gml/node_or_edge_property.rb +0 -6
- data/lib/ogc/gml/node_property.rb +0 -2
- data/lib/ogc/gml/oblique_cartesian_cs.rb +0 -1
- data/lib/ogc/gml/oblique_cartesian_cs_property.rb +0 -2
- data/lib/ogc/gml/observation.rb +0 -12
- data/lib/ogc/gml/offset_curve.rb +0 -5
- data/lib/ogc/gml/operation_method.rb +0 -8
- data/lib/ogc/gml/operation_method_property.rb +0 -2
- data/lib/ogc/gml/operation_parameter.rb +0 -1
- data/lib/ogc/gml/operation_parameter_group.rb +0 -2
- data/lib/ogc/gml/operation_parameter_group_property.rb +0 -2
- data/lib/ogc/gml/operation_parameter_property.rb +0 -2
- data/lib/ogc/gml/operation_property.rb +0 -2
- data/lib/ogc/gml/orientable_curve.rb +0 -10
- data/lib/ogc/gml/orientable_surface.rb +0 -7
- data/lib/ogc/gml/parameter_value.rb +0 -5
- data/lib/ogc/gml/parameter_value_group.rb +0 -3
- data/lib/ogc/gml/pass_through_operation.rb +0 -9
- data/lib/ogc/gml/pass_through_operation_property.rb +0 -2
- data/lib/ogc/gml/point.rb +0 -2
- data/lib/ogc/gml/point_array_property.rb +0 -2
- data/lib/ogc/gml/point_property.rb +0 -2
- data/lib/ogc/gml/polar_cs.rb +0 -1
- data/lib/ogc/gml/polar_cs_property.rb +0 -2
- data/lib/ogc/gml/polygon.rb +0 -3
- data/lib/ogc/gml/polygon_patch.rb +0 -2
- data/lib/ogc/gml/prime_meridian.rb +0 -7
- data/lib/ogc/gml/prime_meridian_property.rb +0 -2
- data/lib/ogc/gml/priority_location_property.rb +0 -4
- data/lib/ogc/gml/procedure_property.rb +0 -2
- data/lib/ogc/gml/projected_crs.rb +0 -4
- data/lib/ogc/gml/projected_crs_property.rb +0 -2
- data/lib/ogc/gml/quantity.rb +0 -2
- data/lib/ogc/gml/quantity_extent.rb +0 -2
- data/lib/ogc/gml/range_set.rb +0 -4
- data/lib/ogc/gml/rectangle.rb +0 -2
- data/lib/ogc/gml/rectified_grid.rb +0 -9
- data/lib/ogc/gml/ref_location.rb +0 -2
- data/lib/ogc/gml/related_time.rb +0 -2
- data/lib/ogc/gml/ring.rb +0 -1
- data/lib/ogc/gml/second_defining_parameter1.rb +0 -2
- data/lib/ogc/gml/second_defining_parameter2.rb +0 -3
- data/lib/ogc/gml/shell.rb +0 -4
- data/lib/ogc/gml/shell_property.rb +0 -4
- data/lib/ogc/gml/single_crs_property.rb +0 -2
- data/lib/ogc/gml/single_operation_property.rb +0 -2
- data/lib/ogc/gml/solid.rb +0 -2
- data/lib/ogc/gml/solid_array_property.rb +0 -2
- data/lib/ogc/gml/solid_property.rb +0 -2
- data/lib/ogc/gml/sphere.rb +0 -1
- data/lib/ogc/gml/spherical_cs.rb +0 -1
- data/lib/ogc/gml/spherical_cs_property.rb +0 -2
- data/lib/ogc/gml/surface.rb +0 -2
- data/lib/ogc/gml/surface_array_property.rb +0 -2
- data/lib/ogc/gml/surface_patch_array_property.rb +0 -3
- data/lib/ogc/gml/surface_property.rb +0 -3
- data/lib/ogc/gml/target_property.rb +0 -3
- data/lib/ogc/gml/temporal_crs.rb +0 -4
- data/lib/ogc/gml/temporal_crs_property.rb +0 -2
- data/lib/ogc/gml/temporal_cs.rb +0 -1
- data/lib/ogc/gml/temporal_cs_property.rb +0 -2
- data/lib/ogc/gml/temporal_datum.rb +0 -7
- data/lib/ogc/gml/temporal_datum_property.rb +0 -2
- data/lib/ogc/gml/time_calendar.rb +0 -7
- data/lib/ogc/gml/time_calendar_era.rb +0 -8
- data/lib/ogc/gml/time_calendar_era_property.rb +0 -2
- data/lib/ogc/gml/time_calendar_property.rb +0 -2
- data/lib/ogc/gml/time_clock.rb +0 -8
- data/lib/ogc/gml/time_coordinate_system.rb +0 -9
- data/lib/ogc/gml/time_cs.rb +0 -1
- data/lib/ogc/gml/time_cs_property.rb +0 -2
- data/lib/ogc/gml/time_edge.rb +0 -9
- data/lib/ogc/gml/time_edge_property.rb +0 -2
- data/lib/ogc/gml/time_instant.rb +0 -2
- data/lib/ogc/gml/time_instant_property.rb +0 -2
- data/lib/ogc/gml/time_node.rb +0 -6
- data/lib/ogc/gml/time_node_property.rb +0 -2
- data/lib/ogc/gml/time_ordinal_era.rb +0 -9
- data/lib/ogc/gml/time_ordinal_era_property.rb +0 -2
- data/lib/ogc/gml/time_ordinal_reference_system.rb +0 -7
- data/lib/ogc/gml/time_period.rb +0 -4
- data/lib/ogc/gml/time_period_property.rb +0 -2
- data/lib/ogc/gml/time_primitive_property.rb +0 -2
- data/lib/ogc/gml/time_reference_system.rb +0 -6
- data/lib/ogc/gml/time_topology_complex.rb +0 -7
- data/lib/ogc/gml/time_topology_primitive_property.rb +0 -2
- data/lib/ogc/gml/tin.rb +0 -6
- data/lib/ogc/gml/topo_complex.rb +0 -12
- data/lib/ogc/gml/topo_complex_property.rb +0 -2
- data/lib/ogc/gml/topo_curve.rb +0 -7
- data/lib/ogc/gml/topo_curve_property.rb +0 -2
- data/lib/ogc/gml/topo_point.rb +0 -7
- data/lib/ogc/gml/topo_point_property.rb +0 -2
- data/lib/ogc/gml/topo_primitive_array_association.rb +0 -2
- data/lib/ogc/gml/topo_primitive_member.rb +0 -2
- data/lib/ogc/gml/topo_solid.rb +0 -12
- data/lib/ogc/gml/topo_solid_property.rb +0 -2
- data/lib/ogc/gml/topo_surface.rb +0 -7
- data/lib/ogc/gml/topo_surface_property.rb +0 -2
- data/lib/ogc/gml/topo_volume.rb +0 -7
- data/lib/ogc/gml/topo_volume_property.rb +0 -2
- data/lib/ogc/gml/transformation.rb +0 -10
- data/lib/ogc/gml/transformation_property.rb +0 -2
- data/lib/ogc/gml/triangle.rb +0 -2
- data/lib/ogc/gml/unit_definition.rb +0 -7
- data/lib/ogc/gml/user_defined_cs.rb +0 -1
- data/lib/ogc/gml/user_defined_cs_property.rb +0 -2
- data/lib/ogc/gml/value_array.rb +0 -8
- data/lib/ogc/gml/value_array_property.rb +0 -3
- data/lib/ogc/gml/value_property.rb +0 -3
- data/lib/ogc/gml/vector.rb +0 -2
- data/lib/ogc/gml/version.rb +1 -1
- data/lib/ogc/gml/vertical_crs.rb +0 -3
- data/lib/ogc/gml/vertical_crs_property.rb +0 -2
- data/lib/ogc/gml/vertical_cs.rb +0 -1
- data/lib/ogc/gml/vertical_cs_property.rb +0 -2
- data/lib/ogc/gml/vertical_datum.rb +0 -1
- data/lib/ogc/gml/vertical_datum_property.rb +0 -2
- data/lib/ogc/gml.rb +660 -327
- data/ogc-gml.gemspec +3 -1
- metadata +5 -6
- data/lib/ogc/gml/namespace_registry.rb +0 -56
- data/lib/ogc/gml/versioned_model.rb +0 -78
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b8f0d439b67f0cc07b0974172fcb075c253f1e245947dd524a2cb53920529aef
|
|
4
|
+
data.tar.gz: d2413f431befdf21e5e7aad79fdaceb68be0636b49034d36dff6adf3777aeb9c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c0f302d4a94cbce0011ac7bf7991879d24e8e37fe04c08002078de0e55f9ea19c1795f2edc02217bcff16fd287662c2e80c423f7753aeee2b7f72838f43c5cbd
|
|
7
|
+
data.tar.gz: 76fa53ef24147b5b69d68e27c336f577c19201b940a0cdbe187e3bddf170c9c5d2544c8dc4512018e6e82c2621d76eea0913d3468f360d000e5f6a00b3e0a491
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
This is a Ruby gem for parsing and generating OGC GML 3.2 (Geography Markup Language) data. It provides Ruby objects that map to GML schema elements, using the `lutaml-model` library for XML serialization/deserialization.
|
|
8
|
+
|
|
9
|
+
GML 3.1.1 documents are NOT parsed by these models (different namespace and schema). Multi-version support is planned on lutaml-model's register system (namespace-bound contexts per version, the plurimath/mml pattern); the i-UR 3.1.1 fixtures are skipped in specs until the gml_31 register mappings are generated.
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Install dependencies (includes git submodule initialization)
|
|
15
|
+
git submodule update --init --recursive
|
|
16
|
+
bundle install
|
|
17
|
+
|
|
18
|
+
# Run all tests
|
|
19
|
+
bundle exec rake spec
|
|
20
|
+
# or
|
|
21
|
+
bundle exec rspec
|
|
22
|
+
|
|
23
|
+
# Run a single test file
|
|
24
|
+
bundle exec rspec spec/ogc/gml/point_spec.rb
|
|
25
|
+
|
|
26
|
+
# Run a specific test
|
|
27
|
+
bundle exec rspec spec/ogc/gml/point_spec.rb:18
|
|
28
|
+
|
|
29
|
+
# Run linter
|
|
30
|
+
bundle exec rubocop
|
|
31
|
+
|
|
32
|
+
# Run linter with auto-fix
|
|
33
|
+
bundle exec rubocop -A
|
|
34
|
+
|
|
35
|
+
# Run default task (tests + linting)
|
|
36
|
+
bundle exec rake
|
|
37
|
+
|
|
38
|
+
# Start interactive console
|
|
39
|
+
bin/console
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Architecture
|
|
43
|
+
|
|
44
|
+
The codebase follows a consistent pattern where each GML element is represented by a Ruby class:
|
|
45
|
+
|
|
46
|
+
- **Location**: All model classes are in `lib/ogc/gml/` with one class per file
|
|
47
|
+
- **Entry point**: `lib/ogc/gml.rb` registers `autoload` entries for every class; there is no `require_relative` graph (removing it fixed the circular-require warnings of issue #21). Never add `require_relative` for internal library code — add an autoload entry in `lib/ogc/gml.rb`.
|
|
48
|
+
- **One class per file, opened first**: mutually recursive schema types rely on the class keyword executing before any cyclic constant reference. Do not embed duplicate or stub class definitions in other files (the old cycle-dodge shells broke autoload resolution).
|
|
49
|
+
- **Namespace**: `lib/ogc/gml/namespace.rb` aliases `Namespace = Gml32Namespace`; the version namespace classes live in `lib/ogc/gml/namespaces/`
|
|
50
|
+
|
|
51
|
+
### Class Hierarchy
|
|
52
|
+
|
|
53
|
+
Classes inherit from abstract base classes that mirror the GML schema:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Lutaml::Model::Serializable
|
|
57
|
+
└── AbstractGml
|
|
58
|
+
├── AbstractFeature (features, collections)
|
|
59
|
+
├── AbstractGeometry ← AbstractGeometricPrimitive
|
|
60
|
+
│ ├── Point, LineString, Curve, Surface, Solid, etc.
|
|
61
|
+
│ └── Multi* aggregate types
|
|
62
|
+
├── AbstractCRS (coordinate reference systems)
|
|
63
|
+
├── AbstractDatum, AbstractCoordinateSystem
|
|
64
|
+
└── AbstractTime* (temporal types)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### XML Mapping Pattern
|
|
68
|
+
|
|
69
|
+
Each class defines its XML structure using the `xml` block:
|
|
70
|
+
|
|
71
|
+
```ruby
|
|
72
|
+
class Point < AbstractGeometry
|
|
73
|
+
attribute :pos, DirectPosition
|
|
74
|
+
attribute :coordinates, Coordinates
|
|
75
|
+
|
|
76
|
+
xml do
|
|
77
|
+
element "Point"
|
|
78
|
+
namespace Namespace # References the Gml::Namespace constant
|
|
79
|
+
|
|
80
|
+
# gml:id is a namespace-qualified global attribute
|
|
81
|
+
map_attribute "id", to: :id, form: :qualified
|
|
82
|
+
# Local attributes are unqualified in the GML schema
|
|
83
|
+
map_attribute "srsName", to: :srs_name
|
|
84
|
+
|
|
85
|
+
map_element "pos", to: :pos
|
|
86
|
+
map_element "coordinates", to: :coordinates
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Namespace Configuration
|
|
92
|
+
|
|
93
|
+
The namespace classes (`lib/ogc/gml/namespaces/gml_32_namespace.rb`) configure the GML namespace:
|
|
94
|
+
|
|
95
|
+
```ruby
|
|
96
|
+
class Gml32Namespace < Lutaml::Xml::Namespace
|
|
97
|
+
uri "http://www.opengis.net/gml/3.2"
|
|
98
|
+
prefix_default "gml"
|
|
99
|
+
element_form_default :qualified
|
|
100
|
+
# NO attribute_form_default here: GML declares attributeFormDefault="unqualified".
|
|
101
|
+
# Qualifying the schema-wide default serialized invalid gml:srsName (issue #22).
|
|
102
|
+
# Only per-rule form: :qualified on gml:id attributes.
|
|
103
|
+
end
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Testing
|
|
107
|
+
|
|
108
|
+
Tests use RSpec with the `canon` gem for XML comparison. The main pattern is round-trip testing:
|
|
109
|
+
|
|
110
|
+
```ruby
|
|
111
|
+
it "round-trips Point-epsg3045.xml" do
|
|
112
|
+
input = file_contents("Point-epsg3045.xml")
|
|
113
|
+
output = described_class.from_xml(input).to_xml(
|
|
114
|
+
prefix: true, # Include namespace prefixes
|
|
115
|
+
pretty: true, # Format with indentation
|
|
116
|
+
declaration: true # Include XML declaration
|
|
117
|
+
)
|
|
118
|
+
expect(SpecHelpers.remove_xml_comments(output))
|
|
119
|
+
.to be_xml_equivalent_to(SpecHelpers.remove_xml_comments(input))
|
|
120
|
+
end
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
- `SpecHelpers.remove_xml_comments` (in `spec/spec_helper.rb`) is the shared comment-stripper.
|
|
124
|
+
- Strict attribute-form assertions live in `spec/ogc/gml/point_spec.rb` (gml:id prefixed; srsName/srsDimension never prefixed) and `spec/ogc/gml/gml3*_namespace_spec.rb`. Canon compares attributes loosely (lutaml/canon#155), so prefix regressions are only caught by these strict specs.
|
|
125
|
+
- RSpec semantics: `pending "reason"` inside an example body STILL EXECUTES the body; use `skip "reason"` when the body must not run (this once turned "pending" 3.1.1 round-trips into a multi-minute suite freeze).
|
|
126
|
+
|
|
127
|
+
Test fixtures are located in:
|
|
128
|
+
- `spec/fixtures/ets-gml32/` - GML test suite from OGC ETS for GML 3.2 (git submodule)
|
|
129
|
+
- `spec/fixtures/geospatial_jp_iur_3.1/` - Japanese i-UR codelist data (GML 3.1.1; round-trips skipped pending gml_31 register support)
|
|
130
|
+
|
|
131
|
+
## Dependencies
|
|
132
|
+
|
|
133
|
+
- **lutaml-model**: XML serialization framework (`~> 0.8.20` — first release with source-namespace-preserving serialization, which round-trip fidelity relies on)
|
|
134
|
+
- **nokogiri**: XML parsing
|
|
135
|
+
- **canon**: XML comparison for tests (dev dependency in Gemfile, not gemspec)
|
|
136
|
+
|
|
137
|
+
## Known upstream issues
|
|
138
|
+
|
|
139
|
+
- lutaml-model#754: lenient parsing of out-of-namespace documents silently drops `gml:description` content; resolution is strict expanded-name parsing with register-based multi-version support, never local-name fallbacks.
|
data/Gemfile
CHANGED
data/README.adoc
CHANGED
|
@@ -46,10 +46,10 @@ For example:
|
|
|
46
46
|
gml_data = File.read('spec/fixtures/geospatial_jp_iur_3.1/Bridge_class.xml')
|
|
47
47
|
gml = Ogc::Gml::Dictionary.from_xml(gml_data)
|
|
48
48
|
|
|
49
|
-
# Access the loaded GML Dictionary
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
puts
|
|
49
|
+
# Access the loaded GML Dictionary entries
|
|
50
|
+
gml.dictionary_entry.each do |entry|
|
|
51
|
+
definition = entry.definition
|
|
52
|
+
puts "#{definition.name.first&.content}: #{definition.description}"
|
|
53
53
|
end
|
|
54
54
|
----
|
|
55
55
|
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "coordinate_system_axis_property"
|
|
8
|
-
require_relative "meta_data_property"
|
|
9
|
-
require_relative "reference"
|
|
10
|
-
require_relative "identifier"
|
|
11
|
-
|
|
12
5
|
module Ogc
|
|
13
6
|
module Gml
|
|
14
7
|
class AbstractCoordinateSystem < Lutaml::Model::Serializable
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
|
-
require_relative "bounding_shape"
|
|
5
|
-
require_relative "domain_set"
|
|
6
|
-
require_relative "location_property"
|
|
7
|
-
require_relative "range_set"
|
|
8
|
-
require_relative "abstract_topology"
|
|
9
4
|
|
|
10
5
|
module Ogc
|
|
11
6
|
module Gml
|
data/lib/ogc/gml/abstract_crs.rb
CHANGED
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractCRS < AbstractTopology
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractDatum < AbstractTopology
|
|
@@ -2,14 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "bounding_shape"
|
|
6
|
-
require_relative "code"
|
|
7
|
-
require_relative "code_with_authority"
|
|
8
|
-
require_relative "location_property"
|
|
9
|
-
require_relative "meta_data_property"
|
|
10
|
-
require_relative "reference"
|
|
11
|
-
require_relative "abstract_topology"
|
|
12
|
-
|
|
13
5
|
module Ogc
|
|
14
6
|
module Gml
|
|
15
7
|
class AbstractFeature < AbstractTopology
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
|
-
require_relative "bounding_shape"
|
|
5
|
-
require_relative "feature_array_property"
|
|
6
|
-
require_relative "feature_property"
|
|
7
|
-
require_relative "location_property"
|
|
8
|
-
require_relative "abstract_topology"
|
|
9
4
|
|
|
10
5
|
module Ogc
|
|
11
6
|
module Gml
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "coordinate_operation_accuracy"
|
|
8
|
-
require_relative "meta_data_property"
|
|
9
|
-
require_relative "reference"
|
|
10
|
-
require_relative "abstract_topology"
|
|
11
|
-
|
|
12
5
|
module Ogc
|
|
13
6
|
module Gml
|
|
14
7
|
class AbstractGeneralConversion < AbstractTopology
|
|
@@ -2,16 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "abstract_general_operation_parameter"
|
|
6
|
-
|
|
7
5
|
module Ogc
|
|
8
6
|
module Gml
|
|
9
|
-
class RemoteSchema < Lutaml::Model::Type::String
|
|
10
|
-
xml do
|
|
11
|
-
namespace Namespace
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
7
|
class AbstractGeneralOperationParameterProperty < Lutaml::Model::Serializable
|
|
16
8
|
attribute :nil_reason, :string
|
|
17
9
|
attribute :remote_schema, RemoteSchema
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "identifier"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractGeometricPrimitive < Lutaml::Model::Serializable
|
data/lib/ogc/gml/abstract_gml.rb
CHANGED
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractGML < AbstractTopology
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractTimeComplex < AbstractTopology
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "related_time"
|
|
10
|
-
require_relative "identifier"
|
|
11
|
-
|
|
12
5
|
module Ogc
|
|
13
6
|
module Gml
|
|
14
7
|
class AbstractTimeGeometricPrimitive < Lutaml::Model::Serializable
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractTimeObject < AbstractTopology
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
|
-
# require_relative "related_time"
|
|
5
4
|
|
|
6
5
|
module Ogc
|
|
7
6
|
module Gml
|
|
8
|
-
class RelatedTime < Lutaml::Model::Serializable
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
class AbstractTimePrimitive < AbstractTopology
|
|
12
8
|
attribute :related_time, RelatedTime, collection: true
|
|
13
9
|
|
|
@@ -2,14 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "string_or_ref"
|
|
10
|
-
require_relative "time_primitive_property"
|
|
11
|
-
require_relative "abstract_topology"
|
|
12
|
-
|
|
13
5
|
module Ogc
|
|
14
6
|
module Gml
|
|
15
7
|
class AbstractTimeSlice < AbstractTopology
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "related_time"
|
|
10
|
-
require_relative "abstract_topology"
|
|
11
|
-
|
|
12
5
|
module Ogc
|
|
13
6
|
module Gml
|
|
14
7
|
class AbstractTimeTopologyPrimitive < AbstractTopology
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "code"
|
|
6
|
-
require_relative "code_with_authority"
|
|
7
|
-
require_relative "meta_data_property"
|
|
8
|
-
require_relative "reference"
|
|
9
|
-
require_relative "abstract_topology"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class AbstractTopoPrimitive < AbstractTopology
|
data/lib/ogc/gml/affine_cs.rb
CHANGED
data/lib/ogc/gml/angle.rb
CHANGED
data/lib/ogc/gml/arc.rb
CHANGED
data/lib/ogc/gml/arc_by_bulge.rb
CHANGED
data/lib/ogc/gml/arc_string.rb
CHANGED
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
4
|
|
|
5
|
-
require_relative "coordinates"
|
|
6
|
-
require_relative "direct_position_list"
|
|
7
|
-
require_relative "direct_position"
|
|
8
|
-
require_relative "point_property"
|
|
9
|
-
require_relative "abstract_curve_segment"
|
|
10
|
-
|
|
11
5
|
module Ogc
|
|
12
6
|
module Gml
|
|
13
7
|
class ArcString < AbstractCurveSegment
|