code: def _read_geojson_features(data, features=None, prefix=""):
          
          if features is None:
              features = collections.OrderedDict()
          for i, feature in enumerate(data['features']):
              key = feature.get('id', prefix + str(i))
              feature_type = feature['geometry']['type']
              if feature_type == 'FeatureCollection':
                  _read_geojson_features(feature, features, prefix + '.' + key)
              elif feature_type == 'Point':
                  value = Circle._convert_point(feature)
              elif feature_type in ['Polygon', 'MultiPolygon']:
                  value = Region(feature)
              else:
                  # TODO Support all http://geojson.org/geojson-spec.html#geometry-objects
                  value = None
              features[key] = value
          return features
docs: Return a dict of features keyed by ID.