mapillary / mapillary/mapillary-python-sdk

[Bug Report] Detections with map feature ID decoding error

オープン
#176 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug
主要言語
Python
スター
66
フォーク
23
平均マージ
1日 20時間
マージ済み PR(30日)
11

説明

Describe the bug
Running interface.get_detections_with_map_feature_id under select map feature IDs throws a KeyError within the models/geojson file.

To Reproduce
mapillary.interface.get_detections_with_map_feature_id(1852672618623383, fields=[])

Returns KeyError as following:


Traceback (most recent call last):
  File "x.py", line 703, in <module>
    mapillary.interface.get_detections_with_map_feature_id(1852672618623383, fields=[])
  File "..\mapillary\utils\auth.py", line 59, in wrapper
    return f(*args, **kwargs)
  File "..\mapillary\interface.py", line 330, in get_detections_with_map_feature_id
    return detection.get_map_feature_detections_controller(
  File "..\mapillary\controller\detection.py", line 83, in get_map_feature_detections_controller
    return GeoJSON(
  File "..\mapillary\models\geojson.py", line 398, in __init__
    [Feature(feature=feature) for feature in geojson["features"]]
  File "..\mapillary\models\geojson.py", line 398, in <listcomp>
    [Feature(feature=feature) for feature in geojson["features"]]
  File "..\mapillary\models\geojson.py", line 270, in __init__
    self.geometry = Geometry(feature["geometry"])
  File "..\mapillary\models\geojson.py", line 211, in __init__
    self.type: str = geometry["type"]
KeyError: 'type'

The returned GeoJSON from the API is in the form:

[{'geometry': {'coordinates': [-0.12497729285872, 51.537085937084],
               'type': 'Point'},
  'properties': {'created_at': '2025-08-02T16:21:25+0000',
                 'id': '1724058414915752',
                 'pixel_geometry': 'Gjp4AgoGbXB5LW9yKIAgEisYAwgBIiUJqiuWInoIDxAABAcIAAQHBgAcAAgIBAgACAMQCwAPCCkKBxEP',
                 'value': 'object--catch-basin'},
  'type': 'Feature'},
 {'geometry': {'coordinates': [-0.12498136837391, 51.537059028201],
               'type': 'Point'},
  'properties': {'created_at': '2025-08-02T16:20:30+0000',
                 'id': '1807913776455018',
                 'pixel_geometry': 'Gld4AgoGbXB5LW9yKIAgEkgYAwgBIkIJ2inOJ+oBKDcEAAgHLiEkEAgKBAAECAQACAgKCAwICAgIEAsaGRALGAcIAwgHCAcIAwADCAsAGQ8DBy8fAwcTBw8=',
                 'value': 'object--catch-basin'},
  'type': 'Feature'},
 {'geometry': {},
  'properties': {'created_at': '2025-08-02T16:20:20+0000',
                 'id': '685612757857124',
                 'pixel_geometry': 'GosBeAIKBm1weS1vciiAIBJ8GAMIASJ2Cd44jCy6AwQHCAAIBwgABAcGAAgHBAAIBwgABAcUCQQHCAAEBwgABAcOAAgAFAgECAgACAgICgQABAgEAAoIBAgECAgQABADEgcAAwgNAA8YBwgHCAcIAwAHCA8QFQoDACchAw8LAAMHAwAJBwsXBwADCQMHDw==',
                 'value': 'object--catch-basin'},
  'type': 'Feature'},
 {'geometry': {'coordinates': [-0.12497321734354, 51.537112845968],
               'type': 'Point'},
  'properties': {'created_at': '2025-08-02T16:21:33+0000',
                 'id': '1777805250267304',
                 'pixel_geometry': 'GiR4AgoGbXB5LW9yKIAgEhUYAwgBIg8JtCWiIyIyAAQYMQADBw8=',
                 'value': 'object--catch-basin'},
  'type': 'Feature'}]

Clearly we see features in Mapillary without attached geometry, but still picked up by the map feature API.
It's unclear what the expected behaviour is here, otherwise I would have submitted a PR. 😥

Expected behavior
Detections returned as usual.
Unclear how to handle detections without any geometry.

Screenshots

Additional context

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

fields=[] を指定した mapillary.interface.get_detections_with_map_feature_id の呼び出しを再現し、interface.py、controller/detection.py、models/geojson.py を通して追跡してください。Geometry が空の geometry オブジェクトをどのように扱うかを調べ、返される表現の意図を明確にし、このレスポンスがもはや KeyError を発生させず、期待される動作がカバーされた時点で issue 完了とみなしてください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
api, backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。