科学・技術
Mapsnap: 歴史的なサンボーン保険地図の自動地理参照
Mapsnap: Automated Georeferencing for Historic Sanborn Insurance Maps (danvk.org)
要約
Mapsnapは、歴史的なサンボーン保険地図を自動的に地理参照(現代の地図に位置合わせ)するプログラムです。このプロジェクトは、都市の歴史や地図に興味を持つ開発者が、手作業での地理参照の煩雑さを解消するために始めました。OCRで地図上の通り名などを抽出し、それらを基に交差点を特定し、OpenStreetMapなどのデータと照合することで、地図を現代の地理情報と結びつけます。
全文翻訳
ナビゲーションを切り替える danvk.org ホーム ブログ 連絡先 機能 キャッツキルハイキングプロジェクト オンラインボグルソルバー ベースペアカラーラー JavaScriptでの16進数↔10進数コンバーター ブラウザでのNS-Tower GW-BASICプログラムデコーダー 古いREALbasicサイト (1999) ベールの予想
2026.09.10 mapsnapの紹介: 歴史的なサンボーン保険地図の自動地理参照
過去数ヶ月間、私は古い保険地図を自動的に地理参照するプログラム、mapsnapに取り組んできました。この記事では、これらの地図がなぜ興味深いのか、mapsnapがどのように機能するのか、そしてなぜこれを行う価値があるのかを説明します。
私は歴史、都市、地図に興味があり、アメリカ合衆国ではその組み合わせが非常に早くサンボーン保険地図につながります。サンボーン・マップ・カンパニーは、1870年から1960年頃にかけて、アメリカ合衆国のすべての都市の詳細なブロックごとの地図を何十万枚も作成しました。当初の目的は保険査定(この建物はレンガ製か木製か?水道管はどこにあるか?)を支援することでしたが、今日では20世紀半ばの主要な都市再生プロジェクト以前の都市空間の歴史へのユニークな視点を提供してくれるものとして評価されています。サンボーン地図については、米国議会図書館で詳しく読むことができます。または、この6分間の解説ビデオをご覧ください。
以下は、サンボーン地図の1ページの例です(NY 1923 vol 1 p27):
ズームインすると、さらに詳細を見ることができます。
ここには多くの情報があります!色は建物の素材を示しています。赤はレンガ、黄色は木造です。各建物の前の数字(46、48、50、52など)はその住所です。これは、現在の住所とは異なる場合がある歴史的な住所を使用して写真を特定したいOldSFやOldNYCのようなサイトにとって、まさに宝の山です。建物内の事業もラベル付けされています。例えば、50 Oak Streetのベーカリーやイタリアンマリオネット劇場(楽しそう!)。「S.D.」は「Store and Dwelling」、つまり1階が店舗で、その上に住居ユニットがあることを意味します。建物の高さもラベル付けされています。右から左へ読むと、50フィート、40フィート、40フィート、40フィート、44フィート、66フィートとなります。ニューヨーク公共図書館(およびOldNYC)には、このブロックの写真があります!高さを注意深く読むと、写真の建物と一致させることができます。通りは1933年夏、活動で賑わっています。屋台や露店商が日よけの下で商品を売っています。この写真が撮られたのは幸運なことです。なぜなら、このブロックはもう存在しないからです。1950年にアルフレッド・E・スミス・ハウゼス・プロジェクトのために取り壊されました。私は20世紀半ばに大規模な「スラムクリアランス」プログラムがあったことを知っていましたが、その破壊の規模は、その前に何があったかを見ると、はるかに衝撃的です。
サンボーン地図へのアクセス
サンボーン地図は非常に高価で、非常に限定版の書籍でした。今日では、それらは個人コレクションにあり、不動産や環境法で今も使用されています。しかし、幸いなことに、多くの公立図書館がサンボーンの巻を所蔵しています。ニューヨーク公共図書館にはニューヨークの地図のコレクションがあります。そして、米国議会図書館はすべてのコレクションの中で最大のものを持っています。多くのサンボーン地図は著作権切れになるほど古いため、米国議会図書館は約40万枚をスキャンし、オンラインで無料提供できるようになりました。図書館に直接行く必要はありません。(この大規模なスキャン作業を実行したHIGに感謝します。)
一般的に、あなたは特定のブロックに興味があると思いますが、1つの特定のブロックのすべての地図を見つけるのは骨の折れる作業になることがあります。Googleマップは、オンラインで地図を見つけるのがどれほど簡単であるかという私たちの期待を本当に高めました。サンボーン地図をコンピューターで使いやすくするための鍵となるステップは、地理参照することです。これは、現代の地図と位置合わせすることを意味します。これは骨の折れる作業ですが、通常は簡単なプロセスです。サンボーン地図上の1点(おそらく交差点)を見つけ、次にWebマップ上の同じ点を見つけます。2つまたは3つの一致した点があれば、位置合わせが確立されます。公有ドメインのサンボーン地図の地理参照に特化した、OldInsuranceMaps.net(別名OIM)という素晴らしいウェブサイトとコミュニティがあります。
私がサンボーン地図とOIMについて学んだとき、私は自分の地域のニューヨーク州北部とブルックリンのいくつかの地図を地理参照しました。最初は興味深かったのですが、次第に面倒で時間がかかるようになりました。ソフトウェア開発者として、私は疑問に思い始めました。コンピューターでこれをすることはできないだろうか?数ヶ月間、私が意図していたよりも深くこの問題に取り組んだ後、答えは条件付きで「はい」です。ほとんどの場合、サンボーン地図を自動的に地理参照することは可能です。地図によっては難易度が異なり、すべてが正しくできるわけではありませんが、一般的には良い結果が得られます。私のサンボーン地図を自動的に地理参照するプログラムはmapsnapと呼ばれており、その仕組みを説明できることを楽しみにしています!
mapsnapの紹介
私たちはAIの時代に生きており、ClaudeやChatGPTがこれをやってくれるのではないかと尋ねるのは自然なことです。最初は、「画像はこちら、変換を見つけて」から「この画像内の交点を見つけて」まで、いくつかのバリエーションを試しました。それは私が期待したほど良くはなく、少なくともChatGPTは画像処理を行うPythonプログラムを書こうとすることがよくありましたが、それ自体でビジョンを使用することはありませんでした。私は、交点が良いかどうかを確認するために、通り名をトレースしていることに気づきました。では、なぜそれを実行するプログラムを書かないのでしょうか?
その核心において、mapsnapはそれがどのように機能するかです。サンボーン地図上でOCRを実行して、通りのラベルを見つけます。それらのラベルを使用して候補となる交点を見つけ、それらの交点を使用してフィットを生成します。これらのステップを順に見ていきましょう。
ステップ1: OCR
最初のステップは、通りのラベルを検出することです。私はEasyOCRを使用しました。これはこのプロジェクトにおける唯一の真の「AI」であり、非常に無害です。EasyOCRは2020年のテキスト認識モデルで、小さく、ローカルコンピューターで実行できます。EasyOCRを選んだのは、設定が簡単だったからです。しかし、パフォーマンスも良く、地図では通りが垂直または斜めに走ることがあるため、あらゆる角度のテキストを検出できました。最終的に、EasyOCRが非常に適応性が高いことにも感謝するようになりました。以下は、ブルックリンのダウンタウンの地図の検出結果です。
これらのほとんどは正当な通りですが、一部(「BROOKLYN」と「BRIDGE」)はそうではありません。検出ごとに、3つのものが得られます。
* 通りの名前。
* その名前を含む(回転した)長方形。
* 信頼度スコア。
ここでは詳細には立ち入りたくありませんが、これは「バニラ」EasyOCRとは大きく異なります。mapsnapは、検出結果に基づいて、適切な最小通りのラベルサイズを特定しようとします。小さなテキストは、住所や店舗名などの情報になりがちで、私たちには必要ありません。私は出力デコーダーを改良し、都市の通りの語彙から実際の通りの名前のみを出力できるようにしました。この語彙の外からの読み取りは、低信頼度のジャンクとして出力されます。語彙はかなり大きくなる可能性があります。通常、郡全体の道路で十分です。
私はEasyOCRニューラルネットワークの上位レベルを再トレーニングして、サンボーンフォントの認識を改善し、これらの地図上の通りのラベルによく伴うノイズを無視できるようにしました。ここで「私」と言っているのは、「Claudeと私」を意味します。
ステップ2: 外挿された交点でのRANSAC
各通りの検出は、ページに関するかなりの情報を提供します。通りから直接地理参照を行うことも可能ですが(将来の記事でさらに詳しく説明します)、実際には、人間がOldInsuranceMapsで行うように、交点を使用する方が簡単です。交点を得るには、互いに平行でない2つの通りが必要です。通りはまっすぐで、サンボーン地図上のラベルの方向に進むと仮定します。(そうでない場合はどうなるか?後で説明します。)
ここにある円は外挿された交点です。OpenStreetMap (OSM) から交点の緯度と経度を取得できます。誤った通りの検出は、OSMに存在する交点を生成しない傾向があり、これは便利なフィルターです。これらのピクセル+緯度/経度のペアは、「グラウンドコントロールポイント」または「GCP」として知られています。OIMは地理参照を生成するために3つのGCPを要求しますが、緊急時には2つで済ませることもできます。2つのGCPで十分です。ただし、仮定を受け入れる限り