任意座標系データを地図に合わせる方法
以前の投稿「QGISを使って、任意座標系データを地図に合わせる方法」では、マニュアル操作で、任意座標系のデータを地図に合わせましたが、自動化できないか試してみました。
合わせる方法としては、ヤフーやGoogleの住所検索を使って、地番の緯度経度を求め、アフィン変換等で座標変換する事が考えられます。
この方法で行ったのが、次の結果です。
一応、らしい位置にマッピングされていて、マニュアル操作と同等な結果は得られるようです。
ただ、実装では苦労した事があります。
一通り実装して変換してみると、全く合いません。
位置は数100mずれて、形もいびつです。
アフィン変換の方法が間違っているのだろうと、ChatGPTにも助けてもらって、色々試しても変わりません。
それで、アフィン変換でなく1点、2点の対応点で試していって、初めて原因が分かりました。
住所検索の結果が、マッチングレベルが地番レベルなのに、数100mずれているポイントが一つありました。
その間違った一つの対応点のために形が歪んだのでした。
それで、地番はヤフーとGoogleの両方で検索して、その結果が10m以内ならOKとしました。
そうしたところ、あっけなく上の結果が得られました。
詳細な手順はソースコードを参照してください。
開発環境はVisual Studio 2022のC#です。
テストは弊社の所在地のある場所だけしか行っていませんので、そのまま実行してもエラーになる事が多いと思います。
なお、元のファイルには複数のエリアが入っていますので、一つのエリアに一つのファイルになっていないと、正常にマッピングされません。
あと、ヤフーやGoogleの住所検索を使って、このような変換を行うのが、ライセンス条項に適合しているかどうかは確認していませんので、ご注意ください。