ラベル 遺物分布図 の投稿を表示しています。 すべての投稿を表示
ラベル 遺物分布図 の投稿を表示しています。 すべての投稿を表示

2025年9月21日日曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.09.21)

 Coordinate input log for artifact distribution maps of the shell layer on the north slope of the Ariyoshi Kita Shell Mound (September 21, 2025)


I have written a log of the activities to acquire 3D coordinates for all artifacts in the shell layer on the north slope of the Ariyoshi Kita Shell Mound. There are now 54,059 3D spatial plot artifacts, leaving only scattered artifacts on the downstream edge. While inputting artifacts, I also considered how to manage over 50,000 artifacts in 3D space, and realized that entity (cube) management is an outdated technology that places unnecessary strain on computers.


有吉北貝塚北斜面貝層の全遺物3D座標取得活動の日誌をメモしました。3D空間プロット遺物は54059となり、残りは下流縁辺部の散在遺物だけとなりました。入力作業と同時に5万以上遺物の3D空間における管理方法について検討し、実体(CUBE)管理することがパソコンに不必要な高負荷をかける後進技術であることに気が付きました。

1 有吉北貝塚北斜面貝層の遺物分布図データ(2025.09.21現在)

有吉北貝塚北斜面貝層の遺物分布図データ(2025.09.21現在)

54059遺物データ

遺物は5㎝×5㎝×5㎝のCUBEで表示

3DF Zephyr v8.023でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像(上から、オルソ投影)

2 メモ

入力作業と同時にBlenderにおける5万以上遺物の管理方法について検討し、実体(CUBEなどのオブジェクト)管理することがパソコンに不必要な高負荷をかける後進技術であることに気が付きました。確かにパソコンが重くなり、軽快な操作ができなくなります。

座標入力作業を全部終えて、そのチェックも終えた段階で、正式な遺物3D空間プロットをしますが、その時は遺物を頂点(頂点一つだけのオブジェクト)としてプロットし、実体化はgeometry nodesで行うことにします。遺物に関わる多数の情報(各種分類区分など)は頂点の属性を多数設定して情報付加します。


今回入力作業分の頂点表示(Blender画面)


今回入力作業分の頂点表示(Blender画面)

オブジェクトモードで頂点(頂点一つだけのオブジェクト)は緑色で表示されます。遠近に関係なく同じ大きさで表示されます。



2025年9月12日金曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.09.12)

 Logbook for inputting coordinates into the artifact distribution map of the shell layer on the northern slope of the Ariyoshi Kita Shell Mound (September 12, 2025)


I have written a logbook for the activity of acquiring 3D coordinates for all artifacts in the shell layer on the northern slope of the Ariyoshi Kita Shell Mound. The number of 3D spatial plot artifacts has reached 50,666. It feels like we've overcome the hurdle of the work. Even inside the artifact concentration area, it is difficult to understand the distribution characteristics. This has led to the need to develop new observation techniques.


有吉北貝塚北斜面貝層の全遺物3D座標取得活動の日誌をメモしました。3D空間プロット遺物は50666となり、作業の山場は越えたようです。3D空間内部の遺物集中域には顕著な分布特性があります。しかし自分の視点を3D空間の中に入れた観察しても、遺物数が多すぎて総観的分布特性把握は困難です。そのため、人体断層撮影のような、遺物分布3Dモデルの新観察技法開発の必要性が浮上してきました。

1 有吉北貝塚北斜面貝層の遺物分布図データ(2025.09.12現在)

有吉北貝塚北斜面貝層の遺物分布図データ(2025.09.12現在)

50666遺物データ

3DF Zephyr v8.023でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像(上から、オルソ投影)

2 メモ

2-1 今回作業


Blender画面(50666オブジェクトがプロットされている様子)


今回作業分の様子


今回作業分の様子(上から、オルソ投影)

参考:12422遺物(csvファイル、ID,X,Y,Z)をBlenderにプロットするのにかかった時間は86分でした。

2-2 遺物3D分布特性を把握する新観察技法の必要性

人体断層撮影のような、遺物分布3Dモデルの新観察技法の開発が必要です。

2-3 3D分布分析技法の開発

3D空間における分布特性を把握するための遺物密集度など各種指標を開発することが必要です。

R及びPythonを活用して、ChatGPT支援のもとに、3D分布分析技法の開発に着手します。

3D分布分析技法の開発は海外事例も大いに参考することにします。


2025年8月18日月曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.08.18)

 Log of the work to input coordinates for artifact distribution maps of the shell layer on the northern slope of the Ariyoshi Kita Shell Mound (August 18, 2025)


I have written a log of the work to acquire 3D coordinates for all artifacts in the shell layer on the northern slope of the Ariyoshi Kita Shell Mound. With 38,245 artifacts plotted in 3D space, the overall picture is beginning to emerge, albeit vaguely. Analysis will begin once all artifacts are plotted, but it is time to consider an analysis plan tailored to the actual data situation.


有吉北貝塚北斜面貝層の全遺物3D座標取得活動の日誌をメモしました。3D空間にプロットした遺物は38245となり、全体像がおぼろげながら見えてきました。分析活動は全遺物プロット後に開始しますが、そろそろデータ実情に合わせた分析活動計画を検討することにします。

1 有吉北貝塚北斜面貝層の遺物分布図データ(2025.08.18現在)

有吉北貝塚北斜面貝層の遺物分布図データ(2025.08.18現在)

38245遺物データ

3DF Zephyr v8.017でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像(上から、オルソ投影)

2 メモ 1

原票(遺物分布図)からの座標読取活動とその後のデータ調整は、慣れと諸段階におけるPythonを活用した自動化により、効率化が加速しています。

3D空間にプロットできる遺物の約7割についてプロットが済んだようです。

毎日午前中は入力作業に集中し、ノルマ(最低600件入力/1日)達成は事情の有無によらず自分に義務化しています。体調の良い日には1500件ほど入力できたこともありました。


Blender画面(38245オブジェクトがプロットされている様子)

3 メモ 2

遺物平面座標入力後の活動イメージ

1 分析用データ作成

1-1 データ確認作業

入力作業の確認作業(遺物台帳、遺物分布図、グリッド別)

分析用データ整備

1-2 グリッド別基本統計作成(数値表、必要に応じグリッド別平面分布図)

グリッド別の全遺物数及び種別遺物数

グリッド別の3D空間プロット遺物数、3D空間プロット種別遺物数

2 基本分析

2-1 種別遺物分布分析

北斜面貝層全体を対象に種別遺物分布図を作成して、種別間の分布特性の違いを分析する。

2-2 地山地形と貝層区分分析

地山地形と貝層区分分布について分析し、流動特性を踏まえて、オリジナル貝層と流動貝層の違いなどについて分析する。

2-3 2-1と2-2の相関分析

流動特性を踏まえた貝層区分に基づいて、種別遺物分布特性を分析する。同じく、種別間の分布特性の違いを分析する。

3 基本分析の次のステップ 土器遺物データと土器型式の対応調査

土器遺物データ現物(遺物番号に対応する土器片)の土器型式を調査し、その結果を貝層区分に反映させることによって出土遺物と土器型式との関係を把握する。(貝層と出土遺物のおおよその年代を知る。)


2025年7月27日日曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.07.27)

 Log of inputting coordinates for artifact distribution map of shell layer on north slope of Ariyoshi Kita Shell Mound (2025.07.27)


We are promoting the activity of acquiring 3D coordinates for all artifacts in the shell layer on the north slope of Ariyoshi Kita Shell Mound. So far, the 3D distribution of 21,760 artifacts has been clarified. Several disposal (burial) flow routes of artifacts have emerged. We look forward to the further information and analysis in the future.


有吉北貝塚北斜面貝層の全遺物3D座標取得活動を推進しています。これまでに21760遺物の3D分布が明らかとなりました。遺物の投棄(埋納)流動ルートが幾つか浮かび上がってきました。今後の情報充実とその分析が楽しみです。

1 有吉北貝塚北斜面貝層の遺物分布図データ(2025.07.27現在)

有吉北貝塚北斜面貝層の遺物分布図データ(2025.07.27現在)

21760遺物データ

3DF Zephyr v8.017でアップロード


3Dモデリングの動画


3Dモデリングの画像


3Dモデリングの画像

2 メモ

遺物分布図データをみると、遺物の投棄(埋納)流動ルートが幾つか浮かび上がってきました。今後の情報充実とその分析が楽しみです。

3 技術メモ

これまでに作業対象とした遺物は全部で25653遺物(全体の40%)で、そのうち3D座標が揃った遺物は21760遺物です。これまでのところでは、遺物の約85%について3D座標を取得できています。残りの15%遺物は、その多くが遺物台帳で「一括」として扱われ、高さ情報(Z座標)はありますが、平面座標(XY座標)はありません。

将来の検討課題として、「一括」扱い遺物の3D座標仮想付与があると考えています。発掘活動のなかで、ある一定活動(一区切りの活動)の結果得た後、その活動で生まれた「個別記録に値しない遺物群」を「一括」扱いで記録しています。従って「一括」扱いの遺物群はそれが記録される前の「一定活動」に対応しています。その「一定活動」は当該「一括」扱いの前の「一括」遺物群以降の活動であることが判ります。一方、遺物台帳から、「一括」に対応する「一定活動」の遺物範囲が判ります。従って、「一括」遺物のXY座標範囲をかなり絞り込むことができます。

「一括」遺物群のドンピシャの位置は判りませんが、ある程度の誤差を容認すれば、「一括」遺物のXY座標の仮想付与が可能であると考えます。分析内容によっては「一括」遺物の仮想3D座標を含んだデータを分析に使うことも有効であると考えます。


2025年7月13日日曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.07.13)

  Work log for inputting coordinates of artifacts on the distribution map of the shell layer on the north slope of the Ariyoshi Kita shell mound (2025.07.13)


We are currently working on obtaining the XY coordinates of the artifacts from the artifact distribution map of the shell layer on the north slope of the Ariyoshi Kita Shell Mound using a homemade Python tool, and combining them with the Z coordinates already obtained from the artifact ledger to obtain the artifact's 3D coordinates. The artifact distribution appears to be stratified, and it is of interest to consider its relationship with the development of the shell layer. So far, the 3D distribution of 13,914 artifacts has been clarified.


有吉北貝塚北斜面貝層の遺物分布図から、遺物のXY座標を自家製Pythonツールで取得し、既に遺物台帳から取得しているZ座標と合わせて遺物3D座標を取得する活動を進めています。遺物分布は成層的に見えて、貝層発達との関わりに興味が深まります。これまでに13914遺物の3D分布が明らかとなりました。

1 有吉北貝塚北斜面貝層の遺物分布図データ(2025.07.13現在)

有吉北貝塚北斜面貝層の遺物分布図データ(2025.07.13現在)

13914遺物データ

3DF Zephyr v8.013でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像

2 メモ

北斜面貝層が収まるガリー侵食地形の谷頭部付近の遺物3D分布が明らかとなってきました。成層構造が見えます。貝層成層と関連していると考えられ、貝層発達と貝層利用の関係分析が楽しみになります。年内に遺物平面座標読取作業を終えることを目標にして、それに集中して活動することにします。分析活動はその後に思う存分行うことにし、今は我慢しておきます。

平面座標読取活動の効率化が進んでいます。一度作成して効率化に使っているPythonスクリプトについて、さらなる効率化のための改善を加えることがたびたびあります。最初段階では、手作業ではなく、自動化できれば素晴らしいという思考でしたが、現在では同じ自動化でもより手数が少なく、単純なものに改善してます。

今回作業分の範囲に遺物出土がない50㎝×50㎝平面が3箇所あります。発掘調査報告書資料で確認すると、サンプル抽出空間です。この平面では貝層サンプルをボーリング柱状資料のように貝層最上部から最下部まで連続して採っています。


サンプル抽出空間

3 技術メモ

既に約1万データがプロットされているBlenderファイルに、今回約4000データを追加プロットしました。その4000データプロットになんと1時間5分かかりました。時間がかかりすぎます。プロットでは遺物コードをアウトライナーに書かせています。おそらく、Blenderでは、4000データプロットに際して、その遺物コードがすでにプロットしてある1万データの遺物コードと同じものがあるかどうかチェックしています。(例 同じものがあると2250023、2250023(1)のように重複を避けます。)この遺物コードチェックにほとんどの時間をかけていると推察します。遺物コードなしで、単純にCUBEをプロットするだけなら、10分もかからない作業であると推察します。今後、4000データを更のBlenderファイルにプロットし(恐らく20分程度)、それを1万データファイルにアペンドするなどの方法で時短になるか、検討することにします。

2025年6月30日月曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.06.30)

 Work log for inputting coordinates of artifacts on the distribution map of the shell layer on the north slope of the Ariyoshi Kita shell mound (2025.06.30)


We are currently working on obtaining planar coordinates of artifacts from the distribution map of artifacts on the shell layer on the north slope of the Ariyoshi Kita shell mound, and obtaining 3D coordinates by combining them with the elevation values ​​already obtained. The 3D distribution of a total of 9,828 artifacts was revealed near the head of the gully erosion terrain.


有吉北貝塚北斜面貝層の遺物分布図から、遺物の平面座標を取得し、既に取得している標高値と合わせて3D座標を取得する活動を進めています。ガリー侵食地形谷頭部付近では合計9828遺物の3D分布が明らかとなりました。

1 有吉北貝塚北斜面貝層の遺物3D分布データ(2025.06.30現在)

有吉北貝塚北斜面貝層の遺物3D分布データ(2025.06.30現在)

3DF Zephyr v8.013でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像

2 メモ

貝層の中における、遺物三次元分布の様子が少しずつ明らかになってきました。

ここまでの作業データだけでも、それを分析すれば新しい情報がたくさん獲得できることは確実です。しかし、北斜面貝層全体のデータ作成を急ぐことにして、分析活動は将来の楽しみとしてとっておきます。

遺物分布図からの平面座標読取作業の効率化をより一層進めることに、活動精力の大半を注ぎ込むことにします。連続作業はできるだけPythonスクリプトで自動化しています。6月前半より6月後半作業の方が大幅に効率化しました。しかし、まだ効率化できる作業単位はかなりあると見積もっています。


2025年6月15日日曜日

有吉北貝塚北斜面貝層の遺物分布図座標入力作業日誌(2025.06.15)

 Work log for inputting coordinates of artifacts on the distribution map of the shell layer on the north slope of the Ariyoshi Kita shell mound (2025.06.15)


We are currently working on obtaining planar coordinates of artifacts from the distribution map of artifacts on the shell layer on the north slope of the Ariyoshi Kita shell mound, and obtaining 3D coordinates by combining them with the elevation values ​​already obtained. We have reached the first milestone, so we have recorded the work log. The 3D distribution of 2991 artifacts near the head of the gully erosion terrain valley has been newly revealed.


有吉北貝塚北斜面貝層の遺物分布図から、遺物の平面座標を取得し、既に取得している標高値と合わせて3D座標を取得する活動を進めています。最初の区切りを迎えましたので作業日誌を記録しました。ガリー侵食地形谷頭部付近2991遺物の3D分布が新たに明らかとなりました。

1 有吉北貝塚北斜面貝層の遺物3D分布データ(2025.06.15現在)

有吉北貝塚北斜面貝層の遺物3D分布データ(2025.06.15現在)

3DF Zephyr v8.011でアップロード


3Dモデルの動画


3Dモデルの画像


3Dモデルの画像

2 メモ

Ⅰブロックの遺物出土がある全11グリッドについて、遺物分布図から遺物平面座標を取得し、既に遺物台帳から取得してある標高値と合わせて2991遺物の3D座標を取得しました。なお、遺物小破片等重要性の低い遺物は遺物台帳に複数が一括記載され標高値が記録されていません。この一括記載遺物は遺物分布図にも記載されていません。このような事情で3D座標がそろわない遺物件数は今回作業分で384件あります。

今回作業は煩雑な作業工程をいかに効率化するかという観点から取組みました。以前と較べるとかなり作業効率がよくなってきましたが、まだまだ作業効率化できる部分がありそうです。

今回作業分2991データを分析すれば有用な情報をいろいろと得ることができると考えますが、その取組みは今後の楽しみに残して置き、座標入力作業を急ぐことにします。


2025年6月8日日曜日

遺物分布図から座標読取を行う作業の効率化

 Improving the efficiency of the work of reading coordinates from artifact distribution maps


We are currently working on reading coordinates from artifact distribution maps (paper images) of the shell layer on the north slope of the Ariyoshi Kita Shell Mound. It is tiresomely tedious. We took notes on the work process and considered ways to make it more efficient.


有吉北貝塚北斜面貝層の遺物分布図(紙画像)から座標読取作業を行っています。うんざりするほど煩雑です。その作業工程をメモして、効率化について検討しました。

1 座標読取作業工程詳細

有吉北貝塚北斜面貝層の遺物分布図(紙画像)からの座標読取作業工程詳細を次のメモしました。

……………………………………………………………………

1 フォルダー作成

座標を読みとり、その情報をデータベースとリンクするための作業を行うグリッド別フォルダー、サブフォルダーをエクスプローラに作成します。

例 グリッド別フォルダー

118、119、128、129、…

例 サブフォルダー

1xy読取、2kado付与、3差し替え座標、4dbにリレーション、5プロット用

2 1xy読取フォルダーにおける作業

2-1 ファイルコピー

読取に使う画像や読取ツールをフォルダーにコピーします。

・遺物分布図画像

・このフォルダーでの作業(テキスト)

・Pythonスクリプト(1m用.py)

2-2 作業に必要な情報作成

4分割図座標表示画像等を作成します。

・当該グリッド位置図(画像とIllustratorファイル)

・当該グリッド4分割図の座標(画像とIllustratorファイル)

2-3 遺物分布図4分割作業

遺物分布図の当該グリッド部分を4分割し、それぞれファイルとします。

2-4 4分割図別座標読取

Pythonスクリプト(1m用.py)を使って、4分割図別座標読取作業を行い、読取結果csvファイルと読取結果画像(チェック用)を生成します。

3 2kado付与フォルダーにおける作業

3-1 ツール等ファイルのコピー

・このフォルダーでの作業(テキスト)

・Pythonスクリプト(add_kado.py、このフォルダー内csvファイル結合.py)

3-2 読取結果csvファイルにkado値を付与し結合

4分割座標読取結果csvファイルにPythonスクリプト(add_kado.py)でkado値を与え、それらのファイルをPythonスクリプトで一つに結合します。

4 3差し替え座標フォルダーにおける作業

4-1 ツール等ファイルのコピー

・このフォルダーでの作業(テキスト)

・Pythonスクリプト(XY差替kado補正コード.py、重複確認別バージョン.py)

4-2 コード・座標値Excelファイル作成

Pythonスクリプト(XY座標kado補正コード.py)で座標差し替え、座標係数付加等の複雑な作業を行い、所望するコードと座標値のExcelファイルを作成します。

コードの重複をPythonスクリプトで除去する。

5 4dbにリレーションフォルダーにおける作業

5-1 ツール等ファイルのコピー

・このフォルダーでの作業(テキスト)

・グリッドのデータを検索するpostgreSQLスクリプト(テキスト)

・Pythonスクリプト(コードでリレーション.py、utf8-shiftjis変換Excel.py)

5-2 グリッド別の遺物台帳データベースファイル取得・調整

遺物台帳データベース(postgreSQL)からクエリで当該グリッド分のデータベースファイルをcsvファイルとしてアウトプットします。

Pythonスクリプト(utf8-shiftjis変換Excel.py)を使って、データベースファイルの日本語コードをshiftjisに変換してExcelファイルに書き出します。

5-3 遺物分布図由来データと遺物台帳由来データの結合

Pythonスクリプト(コードでリレーション.py)で遺物台帳(postgreSQL)由来データベースファイルと遺物分布図座標読取ファイルをファイル結合します。このファイルはグリッド別であるが、XYZ座標が掲載されたデータベースとしての最終成果です。

6 5プロット用フォルダーにおける作業

6-1 ツール等ファイルのコピー

・このフォルダーで行う作業(テキスト)

・Pythonスクリプト(プロット可能デベ.py)

・BlenderPythonスクリプト(コード記入する座標プロット.py)

6-2 XYZ座標が揃ったデータ抽出

3D空間表示のためのXYZ座標が揃ったデータをPythonスクリプト(プロット可能デベ.py)で抽出します。

6-3 3Dモデル表示

BlenderPythonスクリプト(コード記入する座標プロット.py)でデータをBlender3Dビューポートに表示します。

……………………………………………………………………

2 メモ

2-1 工程が煩雑な理由

工程が煩雑な理由は主に次の2つの要因が関係しています。

・北斜面貝層グリッド座標設定と一般3D空間座標の難調和性

・遺物分布図の文字の小ささ(手書き文字が小さいため、画像を4分割して拡大表示して扱わざるを得ない)(=原図がB3と大きいこと)。

2-2 これまでに工夫した効率化

2-2-1 Pythonによる座標読取ツール自作活用

Pythonにより座標読取ツールを自作し活用しています。

・1m用.py


座標読取ツールの様子

2-2-2 Pythonによるcsv・Excelファイル操作の自動化

次のPythonスクリプトによりcsv・Excelファイル操作の自動化を進めました。これにより、Excel画面で列挿入削除とか数値入力コピー・計算とかの通常作業はほぼゼロとなりました。

・add_kado.py

・このフォルダー内csvファイル結合.py

・XY差替kado補正コード.py

・重複確認別バージョン.py

・コードでリレーション.py

・utf8-shiftjis変換Excel.py

・プロット可能デベ.py

・コード記入する座標プロット.py

2-2-3 「このフォルダーで行う作業」(メモ)の全フォルダー掲載

煩雑な作業のどの部分を現在作業しているのか、いつでも確認できるようにメモ文を全てのフォルダーに掲載しました。

2-2-4 作業工程の見直し

グリッド毎に順を追って作業すると、体調によっては、煩雑な工程の中で迷ったり、作業意欲を集中できなくなることがあります。そこでグリッド単位の作業ではなく、工程単位の作業としました。つまり、ある工程について、多数のグリッドの作業を一括して行います。この工程の方が、同じ作業になるので、煩雑さが軽減して、機械的作業になり、楽です。体調が万全でなくても、作業を継続できます。

2-3 効率化に関する今後の改善策

2-3-1 Pythonスクリプトの改善

Pythonスクリプトの中には、操作するファイルの名称をaaa.csvなど汎用名称にして扱うものがありますが、GUI選択できるように改善します。

2-3-2 作業習熟による効率化

時々行う作業ではいつでも同じような心理抵抗が生まれますが、作業を継続して行うことにより作業に習熟すれば、心理抵抗が軽減し、おのずと効率性が増すと考えます。

2-3-3 作業工程の再度見直し

現在は工程単位作業(フォルダー単位作業)をしていますが、複数工程のPythonによる一括処理などが可能であるか、検討します。

2023年5月30日火曜日

遺物分布図から平面座標を取得するPythonスクリプト

 Python script to get plane coordinates from relic distribution map


I created a Python script to obtain the plane coordinates from the relic distribution map (1/10 actual survey map) created at the site. I created a simple image coordinate acquisition script by asking ChatGPT. ChatGPT is useful for Python beginners.


現場で作成された遺物分布図(1/10実測図)から平面座標を取得するPythonスクリプトを作成しました。単純な画像座標取得スクリプトを素にChatGPTに質問して作成しました。Python初心者にとってChatGPTは有用です。

1 遺物分布図(1/10)から取得したい遺物平面座標

次のような画像に含まれる特定メッシュ遺物分布図に記録されている遺物ポイントの座標を取得したいのです。


遺物分布図の画像

2 画像の座標を取得するPythonスクリプト

これまでのPython学習で画像においてマウスをクリックした場所の座標取得Pythonスクリプトを作って使っています。

画像の座標を取得するPythonスクリプト

……………………………………………………………………

import cv2

def onMouse(event, x, y, flags, params):

    if event == cv2.EVENT_LBUTTONDOWN:

       print(x,y)

img = cv2.imread('b6i.png')

cv2.namedWindow('keisokuh22', cv2.WINDOW_NORMAL)

cv2.imshow('keisokuh22', img)

cv2.setMouseCallback('keisokuh22', onMouse)

cv2.waitKey(0)

……………………………………………………………………

3 平面座標取得Pythonスクリプトの作成

次図にあるように、遺物分布図メッシュの四隅の座標は既知ですから、知りたい座標と対向四隅2座標の3個所の画像座標がわかれば単純な計算で平面座標を取得できます。


画像座標3点(未知1点、既知2点)から未知点の平面座標を求める原理

2で作成した画像座標取得Pythonスクリプトを拡張すれば簡単に平面座標取得Pythonスクリプトをつくることができるはずです。

しかし、悲しいかな、そのPythonスクリプト拡張記述が判りません。丸1日web検索などで類似事例を探して試みましたが出来そうでできません。初心者のつらい状況です。その時、ChatGPTなら教えてくれるに違いないと気が付きました。そして、確かにその通りとなりました。次はその質問と回答の様子です。

……………………………………………………………………

【ChatGPTに質問】

次のPythonスクリプト(例1)では画像(b6i.png)の任意点をマウスでクリックするとその座標(x.y)を取得します。

……………………………………………………………………

#Pythonスクリプト(例1)

import cv2

def onMouse(event, x, y, flags, params):

    if event == cv2.EVENT_LBUTTONDOWN:

       print(x,y)

img = cv2.imread('b6i.png')

cv2.namedWindow('keisokuh22', cv2.WINDOW_NORMAL)

cv2.imshow('keisokuh22', img)

cv2.setMouseCallback('keisokuh22', onMouse)

cv2.waitKey(0)

……………………………………………………………………

このPythonスクリプト(例1)を使って、最初にマウスでクリックして取得した座標(x1,y1)と2番目にマウスでクリックして取得した座標(x2,y2)と3番目にマウスでクリックして取得した座標(x3,y3)について、2*(y3-y1)/(y2-y1)の値と 2*(x3-x1)/(x2-x1)の値を求めるPythonスクリプトを教えてください。


【ChatGPTからの回答】

次のようなPythonスクリプトを使用して、指定された計算を行うことができます。

……………………………………………………………………

import cv2


# クリック座標を保存するリスト

click_points = []


def onMouse(event, x, y, flags, params):

    if event == cv2.EVENT_LBUTTONDOWN:

        click_points.append((x, y))

        if len(click_points) >= 3:

            # 計算式の値を求める

            x1, y1 = click_points[0]

            x2, y2 = click_points[1]

            x3, y3 = click_points[2]

            result1 = 2 * (y3 - y1) / (y2 - y1)

            result2 = 2 * (x3 - x1) / (x2 - x1)

            print("2*(y3-y1)/(y2-y1):", result1)

            print("2*(x3-x1)/(x2-x1):", result2)


img = cv2.imread('b6i.png')

cv2.namedWindow('keisokuh22', cv2.WINDOW_NORMAL)

cv2.imshow('keisokuh22', img)

cv2.setMouseCallback('keisokuh22', onMouse)

cv2.waitKey(0)

……………………………………………………………………

このスクリプトでは、クリックされた座標を click_points リストに保存します。リストに3つ以上の座標が保存された時点で、指定された計算を実行し、結果を表示します。


ChatGPTやりとり画面

4 平面座標取得Pythonスクリプトの動作

ChatGPTに教えてもらったPythonスクリプトで求めたい平面座標を取得することができます。


平面座標を取得した様子(コマンドプロンプト画面)

今後このスクリプトを、小数点桁の表示など幾つかの点で、改良して自分好みに使い勝手をよくしていきたいと思います。

5 感想

判らないPythonスクリプトをChatGPTが教えてくれるという状況は、自分にとって「革命的」です。ChatGPTが存在しない過去では、一番の近道はPythonに詳しい人に聞くことです。それができないので自分は(あるいはほとんど全ての人が)苦労して延々と時間をかけて調べるしかないのです。ChatGPTを使うことにより、自分のPython学習・活用が急加速すると予感します。