HN 日本語サマリー

← 一覧へ戻る
科学・技術

Mapsnap: 歴史的なサンボーン保険地図の自動地理参照

Mapsnap: Automated Georeferencing for Historic Sanborn Insurance Maps (danvk.org)

14 pointsby evakhoury3 コメント

要約

Mapsnapは、歴史的なサンボーン保険地図を自動的に地理参照(現代の地図に位置合わせ)するプログラムです。このプロジェクトは、都市の歴史や地図に興味を持つ開発者が、手作業での地理参照の煩雑さを解消するために始めました。OCRで地図上の通り名などを抽出し、それらを基に交差点を特定し、OpenStreetMapなどのデータと照合することで、地図を現代の地理情報と結びつけます。

全文翻訳

mapsnapの紹介:歴史的なSanborn保険地図の自動ジオリファレンス

この数ヶ月間、古い保険地図を自動的にジオリファレンスするプログラム「mapsnap」に取り組んできました。この記事では、これらの地図がなぜ興味深いのか、mapsnapがどのように機能するのか、そしてなぜこれを行う価値があるのかを説明します。

ジオリファレンスされたすべての地図はmapsnap.orgで閲覧できます。

私は歴史、都市、地図に興味があり、アメリカ合衆国ではその組み合わせがすぐにSanborn Insurance Mapsにつながります。Sanborn Map Companyは、1870年から1960年頃にかけて、アメリカ合衆国のすべての都市の詳細なブロックごとの地図を何十万枚も作成しました。当初の目的は保険査定(建物はレンガ製か木製か?水道管はどこにあるか?)を支援することでしたが、今日では20世紀半ばの大規模な都市再開発プロジェクト以前の都市空間の歴史に対するユニークな視点を提供してくれるものとして評価されています。Sanborn地図については、図書館(Library of Congress)でさらに詳しく読むか、この6分間の解説動画をご覧ください。

以下は、Sanborn地図(NY 1923 vol 1 p27)の1ページからの例です。

[画像: 1923年のロウアー・マンハッタンの一部地図]

さらに詳細を見るためにズームインできます。

[画像: 同じ地図のズームイン]

ここには多くの情報があります!

  • 色は建物の素材を示しています:赤はレンガ、黄色は木造です。
  • 各建物の前の数字(46、48、50、52など)はその住所です。これは、現在の住所とは異なる歴史的な住所を使用して写真を特定したいOldSFやOldNYCのようなサイトにとって、貴重な情報源です。
  • 建物内の事業所がラベル付けされています。例えば、50 Oak Streetのベーカリーや、イタリアン・マリオネット劇場(楽しそう!)。「S.D.」は「Store and Dwelling」、つまり1階が店舗でその上に住居があることを意味します。
  • 建物の高さがラベル付けされています。右から左へ、50フィート、40フィート、40フィート、40フィート、44フィート、66フィートとあります。

ニューヨーク公共図書館(NYPL)とOldNYCは、このブロックの写真を持っています!高さを注意深く読むと、写真の建物と一致させることができます。

[画像: Oak Streetの街並みの写真]

1933年の夏、通りは活気に満ちています。日よけの下で商品を売る露店商や行商人でいっぱいです。この写真が撮られて良かったのは、このブロックはもう存在しないからです。1950年にAlfred E. Smith Housesプロジェクトのために取り壊されました。

[画像: 空き地の写真]

20世紀半ばの大規模な「スラムクリアランス」プログラムがあったことは知っていましたが、その破壊の規模は、その前に何があったのかを見ると、はるかに衝撃的です。

Sanborn地図へのアクセス

Sanborn地図は非常に高価で、限定生産の本でした。今日では、個人コレクションにあり、不動産や環境法で今も使用されています。しかし幸いなことに、多くの公共図書館もSanbornの巻を所蔵しています。NYPLはニューヨークの地図のコレクションを持っています。そして、図書館(Library of Congress)には最大のコレクションがあります。Sanborn地図の多くは著作権切れになるほど古いため、LoCは約40万枚をスキャンし、オンラインで無料で提供できるようになりました。図書館に直接行く必要はありません。(この大規模なスキャン作業を運営しているHIGに感謝します。)

一般的には特定のブロックに興味があると思いますが、特定のブロックのすべての地図を見つけるのは手間がかかることがあります。Google Mapsは、オンラインで地図を見つけるのがどれほど簡単であるべきかという私たちの期待を本当に高めました。

Sanborn地図をコンピューターで使いやすくするための鍵となるステップは、それらをジオリファレンスすることです。これは、現代の地図と整列させることを意味します。これは手間がかかるプロセスですが、通常は簡単です。Sanborn地図上の点(例えば交差点)を見つけ、次にWeb地図上の同じ点を見つけます。2つか3つの一致した点があれば、整列が確立されます。公有ドメインのSanborn地図のジオリファレンスに特化した、素晴らしいウェブサイトとコミュニティ、OldInsuranceMaps.net(OIMとも呼ばれる)があります。

[画像: OIMで地図をジオリファレンスしている様子]

Sanborn地図とOIMについて知ったとき、私はニューヨーク州北部の私の地域でいくつかの地図とブルックリンの地図をジオリファレンスしました。最初は面白かったのですが、次第に手間がかかり、時間がかかるようになりました。ソフトウェア開発者として、私は疑問に思い始めました:コンピューターでこれをできないだろうか?

意図した以上にこの問題に深く入り込んで数ヶ月後、答えは条件付きで「はい」です。ほとんどの場合、Sanborn地図を自動的にジオリファレンスすることは可能です。地図によっては他の地図よりも難しい場合があり、すべてが正しくできるわけではありませんが、一般的には良い結果が得られます。

Sanborn地図を自動的にジオリファレンスする私のプログラムはmapsnapと呼ばれており、その仕組みを説明できることを楽しみにしています!

mapsnapの紹介

私たちはAIの時代に生きており、ClaudeやChatGPTがこれをやってくれないかと思うのは自然なことです。最初は「画像を与えて、変換を見つけろ」とか「この画像の中の交差点を探せ」といったいくつかのバリエーションを試しました。期待したほどうまくいかず、ChatGPTは少なくとも、画像処理を行うPythonプログラムを書こうとすることが多く、単にそのビジョンを使うのではなく、そうしました。その交差点が良いかどうかをチェックするために、道路名をなぞって確認していることに気づきました。それなら、それを実行するプログラムを書けばいいのではないでしょうか?

その核心において、mapsnapはそう機能します。Sanborn地図上でOCRを実行して道路名を見つけます。それらの名前を使用して候補となる交差点を特定し、それらの交差点を使用してフィットを生成します。

これらのステップを順を追って説明しましょう。

ステップ1:OCR

最初のステップは、道路ラベルを検出することです。私はEasyOCRを使用しました。これはこのプロジェクトにおける唯一の真の「AI」であり、かなり無害です。EasyOCRは2020年のテキスト認識モデルで、小さく、ローカルコンピューターで実行できます。EasyOCRを選んだのは、とにかくセットアップが簡単だったからですが、パフォーマンスも良く、地図上で道路が垂直または斜めに走ることができるという重要な機能である、あらゆる角度のテキストを検出できました。最終的に、EasyOCRが非常に適応性が高いことにも感謝するようになりました。

ブルックリンのダウンタウンの地図での検出結果は以下の通りです。

[画像: ブルックリンの画像、緑色のボックスで道路名が表示されている]

これらのほとんどは正規の道路ですが、「BROOKLYN」や「BRIDGE」のような一部はそうではありません。

検出ごとに、3つの情報が得られます。

  1. 道路名。
  2. その名前を含む(回転された)長方形。
  3. 信頼度スコア。

ここでは詳細に立ち入りたくありませんが、これは「バニラ」のEasyOCRとは大きく異なります。

  • mapsnapは、検出された情報に基づいて、適切な最小道路ラベルサイズを特定しようとします。小さいテキストは、住所や店舗名のような、必要のない情報になりがちです。
  • 都市の道路の語彙から、実際の道路名のみを出力できるように出力デコーダーを改変しました。語彙の外からの読み取りは、低信頼度のジャンクとして出力されます。語彙はかなり大きくなる可能性があります。通常、郡全体の道路で十分です。
  • Sanbornフォントの認識を改善し、これらの地図の道路ラベルによく付随するノイズを無視するために、EasyOCRニューラルネットの最上位レベルを再トレーニングしました。

私がここで「私」と言うとき、それは本当に「Claudeと私」を意味します。

各道路検出は、ページに関するかなりの情報を提供します。道路から直接ジオリファレンスを行うことも可能ですが(これは将来の投稿で詳しく説明します)、実際には、人間がOldInsuranceMapsで行うように、交差点を扱う方が簡単です。

交差点を取得するには、互いに平行でない2つの道路が必要です。道路は直線であり、Sanborn地図上のラベルの方向に進むと仮定します。(そうでない場合はどうなるでしょうか?それはすぐに説明します。)

[画像: 外挿された交差点]

ここの円は外挿された交差点です。OpenStreetMap(OSM)から交差点の緯度と経度を取得できます。誤った道路検出は、OSMに存在する交差点を生成しない傾向があり、これは役立つフィルターです。

これらのピクセルと緯度/経度のペアは、「グラウンドコントロールポイント」(GCP)として知られています。OIMはジオリファレンスを生成するために3つのGCPを要求しますが、緊急時には2つで済ませることもできます。2つのGCPで十分ですが、地図が歪んでおらず、均一なスケールであると仮定できる限りです。Sanborn地図は非常によく作られており、これは通常安全な仮定です。

すべての道路を外挿すると、候補となる交差点のリストが生成されます。これらのペアのそれぞれがジオリファレンスを生成します。ペアを選択するか、何らかの平均を計算する必要があります。

実際には、これらのGCPのいくつかは偽物になります。実際、その多くがそうかもしれません。これが発生する理由はいくつかあります。

  • mapsnapが道路名を誤読したり、実際には道路ではないテキストを検出したりする。「POST」が「POST STREET」ではなく「POST OFFICE」である可能性がある。
  • 道路が交差する前にカーブしている可能性がある。
  • 道路の解釈を誤る可能性がある。「4TH」が「4TH STREET NORTH」なのか「4TH STREET SOUTH」なのか曖昧である可能性がある。
  • 道路の角度を正確に検出できていない可能性がある。
  • 分割された道路や、他の道路を横切るように「ジグザグ」に進む道路は、現実世界では複数の交差点を持つ場合があり、間違った方を選択する可能性がある。

理由が何であれ、GCPはすべて信頼できるわけではありません。このような状況で平均を取ると、貧弱なフィットにつながる傾向があります。良いものと悪いものの混合は、平凡な結果になります。

統計学では、平均(mean)ではなく中央値(median)のようなロバストな指標を使用することで、これを軽減できます。mapsnapは、1980年代のRANSACと呼ばれる関連技術を使用しています。仕組みは次のとおりです。

  • 各GCPのペアを試します。これらが地図をジオリファレンスします。
  • すべての道路検出をそのモデルに通し、OSMの実際の道路から、距離と角度の両方でどれだけ離れているかを確認します。
  • 近い場合、「インライア」が得られます。遠い場合、「アウトライア」が得られます。
  • 最も多くのインライアを生成するGCPのペアを選択します。

上記の交差点の画像では、選択された2つのGCPは青色(PIERREPONT x HENRYとPIERREPONT x CLINTON)です。選択されなかったものは赤と黄色です。このモデルの下で「インライア」となる道路ラベルは黄色(HENRY、MONROE、CLINTON、PIERREPONTなど)で、アウトライアは灰色(POST、BRIDGE、EAGLE)です。これらのアウトライアはほとんどが誤読です。

このGCPのペアは、古い地図と新しい地図の約100年のギャップを越えて個々の建物を一致させることができるほど、優れたフィットを生み出します。

[画像: ブルックリンのダウンタウンの現代地図に重ねられたSanborn地図]

これは教科書的なRANSACではありませんが、大まかには同じ精神です。このシステムの利点は、ノイズが一貫していない限り、かなりの量のノイズ(50%以上!)を許容できることです。わずかな信号の塊でさえあれば、RANSACはそれを見つけるのにかなり良い仕事をします。

失敗する箇所

道路のOCRとRANSACは、道路ラベルがある場合、それらが明確で曖昧でない場合、道路が直線である場合、そしてSanborn地図が作成されてから変更されていない場合にうまく機能します。これはしばしば当てはまりますが、常にそうとは限りません。

  • EasyOCRは、「1ST」や「E」のような短い道路名に苦労します。
  • 「N 4TH ST」と「S 4TH ST」のような方向接頭辞の区別や、複数単語の道路名の結合に苦労することがあります。
  • 丘陵地帯や郊外のように道路がカーブしている場合、ラベルを外挿して交差点を特定する作業はうまくいきません。
  • 道路が少ない場合(例えば、ウォーターフロントエリアや鉄道ヤードなど)、mapsnapは何も捉えることができません。
  • 道路名が変更された場合(クイーンズ地区など)、または高速道路建設やその他の都市再開発プロジェクトによって変更された場合、このアプローチはまったく機能しません。

私の目標は、図書館(Library of Congress)のSanbornコレクションにあるページの少なくとも90%を、重大な間違いをすることなくジオリファレンスすることです。そのためには、mapsnapはこれらの難しいケースの少なくとも一部を処理する必要があります。次の投稿では、ジオリファレンスを支援するためにSanborn地図が提供する他の情報の一部を見ていきます。それらが待ちきれない場合、または自分で実行したい場合は、mapsnapリポジトリと、LLMによって生成された完全な仕組みページをご覧ください。ジオリファレンスされた地図はmapsnap.orgで閲覧できます。