リバースジオコーディングに非常に時間がかかることがある
いつもお世話になっております。
jageocoder 2.1.7.post1で、座標によってはリバースジオコーディングに非常に時間がかかることがあります。
jageocoder reverse 138.5838018000000034 36.6327770999999984
で
[{"candidate": {"id": 54798755, "name": "大字草津", "x": 138.57579040527344, "y": 36.62736892700195, "level": 5, "priority": 2, "note": "aza_id:0001000/postcode:3771711", "fullname": ["群馬県", "吾妻郡", "草津町", "大字草津"]}, "dist": 213.86216184373845}]
を得るのに手元の環境(Windows 11 + python 3.11)で5分以上かかっています。
デバッガで追ってみると、どうもrtree.pyのclass DelaunayTriangleのselectの中の三重forループで時間がかかっているようです。
差し当たりrtree.pyを以下のように修正して凌いでいます。
537c537
< node_dists = self._sort_by_dist(x, y, candidates)
---
> node_dists = self._sort_by_dist(x, y, candidates)[:20]
@yonaka ご報告ありがとうございます。
ご指摘の通り不具合を確認しましたので、ロジックを改善しました。 一通り動作確認を完了しましたら v2.1.8 として公開します。
ありがとうございます。問題が解決していることを確認しました。