Class: GpxDoctor::GeoJsonBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/gpx_doctor/geojson_builder.rb

Overview

Builds GeoJSON output from parsed GPX data according to RFC 7946.

RFC 7946 compliance:

  • Coordinate order: [longitude, latitude, elevation]

  • LineString geometries require minimum 2 positions

  • MultiLineString segments require minimum 2 positions each

  • Empty or invalid geometries are filtered out

  • Properties member is null when no properties exist

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result) ⇒ GeoJsonBuilder

Returns a new instance of GeoJsonBuilder.



27
28
29
# File 'lib/gpx_doctor/geojson_builder.rb', line 27

def initialize(result)
  @result = result
end

Class Method Details

.build(result) ⇒ Object



16
17
18
# File 'lib/gpx_doctor/geojson_builder.rb', line 16

def build(result)
  new(result).build
end

.build_file(result, file_path) ⇒ Object



20
21
22
23
24
# File 'lib/gpx_doctor/geojson_builder.rb', line 20

def build_file(result, file_path)
  json = build(result)
  File.write(file_path, json)
  json
end

Instance Method Details

#buildObject



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/gpx_doctor/geojson_builder.rb', line 31

def build
  features = []
  features.concat(waypoint_features)
  features.concat(route_features)
  features.concat(track_features)

  JSON.generate(
    type: 'FeatureCollection',
    features: features
  )
end