module NSWTopo::Control

def get_features

def get_features
  scaled_params = SCALING_PARAMS.gsub(/\-?\d\.\d+/) { |number| "%.5g" % (number.to_f * 0.5 * @diameter) }
  scaled_params = YAML.load scaled_params
  scaled_params["control"]["symbol"] << { "circle" => { "r" => 0.07, "stroke-width" => 0.14, "fill" => "none" } } if @spot
  @params = scaled_params.deep_merge @params
  @params["labels"]["font-size"] = @font_size if @font_size
  @params["labels"]["fill"] = @params["stroke"] = @colour.to_s if @colour
  points, controls = GPS.load(@path).points, GeoJSON::Collection.new
  [["control",   /^(1?\d\d)W?$/ ],
   ["hashhouse", /^(HH)$/       ],
   ["anc",       /^(ANC)$/      ],
   ["waterdrop", /^1?\d\dW$|^W$/],
  ].each do |type, selector|
    points.each do |point|
      name = point["name"]
      next unless name =~ selector
      properties = [["category", [type, *$1]], ["label", $1]].select(&:last).to_h
      controls.add_point point.coordinates, properties
    end
  end
  controls
end