2026年9月25日金曜日

考古学切手 ネフェルティティ胸像 その3

 Archaeology Stamps: Bust of Nefertiti (Part 3)


I’ve enjoyed adding two new stamps featuring the Bust of Nefertiti to my archaeology stamp collection. Both were issued by Egypt. I feel lucky to have acquired the one issued 77 years ago, in 1947, which features an elegant silhouette of the bust.


考古学切手マイコレクションにネフェルティティ胸像切手が新たに2種加わり、楽しみました。2種ともエジプト発行切手です。77年前の1947年発行切手はネフェルティティ胸像のシルエットが優美に描かれていて、入手できてラッキーです。

1 ネフェルティティ胸像シルエット エジプト発行


ネフェルティティ胸像シルエット エジプト発行

1947年

「国際現代美術展(EXPOSITION INTERNATIONALE D'ART CONTEMPORAIN)」記念切手

2 ネフェルティティ胸像 エジプト発行


ネフェルティティ胸像 エジプト発行

1995年

「郵政記念日」(POST DAY )にちなんで発行された航空切手。

3 メモ

考古学切手マイコレクションにネフェルティティ胸像切手が新たに2種加わり、楽しみました。2種ともエジプト発行切手です。77年前の1947年発行切手はネフェルティティ胸像のシルエットが優美に描かれていて、入手できてラッキーです。

このブログを検索するとこれまでネフェルティティ胸像切手をテーマに4回記事を書いています。

2026年6月23日 考古学切手 ネフェルティティ胸像 その2

2026年6月10日 考古学切手 ネフェルティティ胸像

2024年1月27日 エジプト発行ネフェルティティ図案切手

2021年11月7日 エジプト切手 ネフェルティティ胸像



二枚貝殻の最近隣交差角

 Intersection Angle Between Nearest-Neighbor Bivalve Shells


For bivalve shells, I have defined the "nearest-neighbor intersection angle" as the difference in orientation angle relative to the nearest-neighbor shell, expressed within a range of 0° to 90°. This angle decreases as the distance to the nearest neighbor shortens. I believe this corresponds to the observation that, when bivalve shells are densely packed, they are often found in a bundled arrangement.


二枚貝殻について、最近隣にある貝殻との偏位角の差を0~90°の範囲で表現し、それを最近隣交差角と呼ぶことにしました。最近隣交差角は最近隣距離が短くなると小さくなります。これは二枚貝殻が密集すると、束ねられたような出土状況になることと対応していると考えます。

1 最近隣交差角


最近隣交差角の計算例

最近隣距離にある2枚の二枚貝殻の偏位角の差分を計算すると0~180°の範囲に収まる数値となります。この数値のうち90~180°の値は2枚の交差角という観点からみると0~90°に変換できるので、次のように最近隣交差角を定義しました。

2枚の二枚貝殻の偏位角の差分の絶対値→最近隣交差角

0~90°→ 0~90°

90~180°→ 0~90°(180°-「2枚の二枚貝殻の偏位角の差分の絶対値」)

2 最近隣交差角の統計


最近隣交差角の統計

QGIS統計パネル

3 最近隣交差角分布

3-1 最近隣交差角分布 等量10区分


最近隣交差角分布 等量10区分


有吉北貝塚北斜面貝層剥取断面観察記録3Dモデル

二枚貝殻の最近隣交差角ヒストグラム

30区分、色分けは等量10区分

QGISで描画

3-2 最近隣交差角分布 等間隔9区分


最近隣交差角分布 等間隔9区分


有吉北貝塚北斜面貝層剥取断面観察記録3Dモデル

二枚貝殻の最近隣交差角ヒストグラム

30区分、色分けは等間隔9区分

QGISで描画

4 メモ

最近隣交差角の分布をボロノイ多角形に色分けして見ると、貝殻の移動が斜面タイプのところ(画面右上のボロに多角形が小さい領域)では最近隣交差角が小さいところ(赤色系統)は等量10区分でみても、等間隔9区分でみても連続状あるいは団塊状になっています。これは二枚貝殻が密集すると、束ねられたような出土状況になることと対応していると考えます。二枚貝殻が台地縁から投棄され、斜面を移動する過程で二枚貝殻がソートされ、密集し、束ねられたように連続的団塊的に凝集し、そのまま最終堆積したと考えます。


2026年9月24日木曜日

土偶5点(千葉市小山遺跡)観察記録3Dモデル

 3D Models Documenting Observations of Five Dogū (Oyama Site, Chiba City)


I have created 3D models documenting my observations of five inverted-triangle-shaped dogū (clay figurines) from the Initial Jōmon period. One of these specimens retains attached breasts; it is a valuable artifact that unequivocally demonstrates these figures share the same conceptual basis as "violin-shaped" dogū. I surmise that they served as ritual objects used to pray for successful child-rearing and the prevention of infant starvation through breastfeeding.


縄文早期の逆三角形土偶5点の観察記録3Dモデルを作成しました。うち1点は乳房が添付残存していて、バイオリン形土偶と同趣旨の土製品であることが疑問の余地なく明らかとなっている貴重な資料であると感じました。母乳により乳児餓死を回避し、育児を成功させる祈願ツールであったと想像します。

1 土偶5点(千葉市小山遺跡)観察記録3Dモデル

土偶5点(千葉市小山遺跡)観察記録3Dモデル

縄文時代早期

撮影場所:加曽利貝塚博物館「令和8年度企画展 新千葉市指定文化財記念 ちばの宝物」

撮影月日:2026.09.02


展示の様子

ガラスショーケース越し撮影

3Dモデル写真測量ソフト 3DF Zephyr で生成 v9.013 processing 109 images


3Dモデル動画


3Dモデル画像

2 メモ


土偶解説

縄文早期の逆三角形土偶5点のうち1点は乳房が添付残存していて、バイオリン形土偶と同趣旨の土製品であることが疑問の余地なく明らかとなっている貴重な資料であると感じました。母乳により乳児餓死を回避し、育児を成功させる祈願ツールであったと想像します。

この土偶5点資料は2026.01.04に千葉市立郷土博物館で観察していますが、その時は撮影が不十分で観察記録3Dモデルは2点のみになってしまいました。今回5点全部を一括して観察記録3Dモデル作成ができました。縄文早期の逆三角形土偶を考察できる素晴らしい材料をつくることができました。

2026年1月11日 縄文早期土偶(千葉市小山遺跡)観察記録3Dモデル

関連記事 2021年6月14日 縄文早期前葉土偶(八千代市上谷遺跡)2点 観察記録3Dモデル



2026年9月22日火曜日

2026.09.22大和田機場排水による花見川水面変化の様子

 2026.09.22 Changes in the Hanami River water level due to drainage from the Owada Pumping Station


2026.09.21 Following heavy rains caused by a typhoon, the flow rate of the Hanami River reached near-peak levels due to pump drainage from the Owada Pumping Station early on the morning of September 22. I took photographs to compare the situation with normal conditions. This heavy rainfall occurred while memories of the torrential rain in Chiba on August 13 were still fresh.


2026.09.21台風大雨により、09.22早朝大和田機場ポンプ排水により花見川の流量が最大級になっています。写真記録して普段と比較しました。08.13千葉豪雨の記憶がまだ鮮明な状況で再び大雨となりました。

1 花見川水面の様子


花見川水面の様子(京成本線鉄橋下)2026.09.22

京成本線鉄橋下では音を立てて排水が流下しています。08.15観察時より音が小さく、波も目立ちません。おそらく高津川からの自然流入、すぐ下流の勝田川からの自然流入がまだかなりあり、そのため水位が08.15よりかなり高いことが影響していると感じます。水の色は茶色で08.15観察より濁っています。

2 高津川合流部


高津川合流部2026.09.22


高津川合流部2026.09.14

低水護岸が完全に水没しています。

3 花見川堤防から上流京成本線鉄橋方向


花見川堤防から上流京成本線鉄橋方向 2026.09.22


花見川堤防から上流京成本線鉄橋方向 2026.09.14

いつもの散歩では堤防から水面を意識することは少ないのですが、今日は濁った水面の波がよく見えました。いつもは2~3羽のカワウがいるのですが、今日は6羽いて盛んに潜っていました。

4 勝田川合流部から勝田川上流方向


勝田川合流部から勝田川上流方向 2026.09.22


勝田川合流部から勝田川上流方向 2026.09.14

バックウォーターで勝田川の水位が上昇しています。

5 勝田川合流部から弁天橋方向


勝田川合流部から弁天橋方向 2026.09.22


勝田川合流部から弁天橋方向 2026.09.14

今朝は水面上昇と流れによる波文様で川らしい開けた水景観が広がっていました。

6 弁天橋から花見川上流方向


弁天橋から花見川上流方向 2026.09.22


弁天橋から花見川上流方向 2026.09.14

広い水面が広がり、さざ波がたっています。

7 弁天橋から花見川下流方向


弁天橋から花見川下流方向 2026.09.22


弁天橋から花見川下流方向 2026.09.14

2026.09.14写真にはゴムボートに乗った釣り人が写っています。2026.08.22では釣り人やボート遊びの人はゼロでした。

8 弁天橋から花見川下流方向2


弁天橋から花見川下流方向2 2026.09.22


弁天橋から花見川下流方向2 2026.09.14

9 メモ

弁天橋から弁天宮に至る道が散歩時(6時頃)にまだ「川」のように水が音を立てて流れ、花見川に注いていました。注ぎ口の部分は大きくえぐれていました。弁天宮も水浸しで参拝できる状況にはありませんでした。


関連記事 2026.08.15大和田機場排水による花見川水面変化の様子



ラベル別記事集成ページリンクの作成

 Creating Links to Label-Based Article Collections


I realized that I could create pages compiling articles with specific labels from my blog, "Walking the Hanami River Basin." These pages automatically update to include any new articles assigned that label. It dawned on me—albeit a bit late—that the labeling function makes it incredibly easy to create such article collections. I have now added links to these label-based collection pages in the blog's footer.


ブログ「花見川流域を歩く」の記事に特定のラベルを貼りつけ、そのラベル付記事を集成したページ(ラベル別記事集成資料)を作成することができます。そのページには、新たな当該ラベル記事が自動的に反映されます。ラベル機能を利用すればとても簡易に記事集成資料をつくることができることを、いまさらではありますが、気が付きました。このラベルによる記事集成ページリンクをブログフッターに搭載しました。

1 ラベルによる記事集成資料の例

ファブリック分析

内容:27記事、2026年4月以降のファブリック分析記事。有吉北貝塚北斜面貝層剥取断面の観察記録3Dモデルを対象にデータを作成し、QGISをツールに分析した活動。

考古学切手

内容:49記事、2021年から書き始めた考古学切手収集趣味に関する記事。

イボキサゴ

内容:20記事、2021年7月のイボキサゴ採取会参加にともなう活動記録。

観察記録3Dモデル

内容:468記事、展示発掘遺物を対象としたフォトグラメトリによる3Dモデル作成記事。

2 記事集成資料の作り方

次の操作を2~3回繰り返すと、精度の高い記事集成資料がとても簡易につくれます。

・ブログ管理画面で関連するキーワードで記事検索して、当該ラベル添付にふさわしい記事をチェックして、一括ラベル付与する。(記事表題だけでは判断出来ない場合は記事そのものの閲覧をして確認します。)

3 ラベル別記事集成ページリンクの公開

ブログフッターにBloggerガジェット「ラベル」を貼りつけ、ラベル別記事集成ページリンクを実現しました。今回は最初として4ラベルを掲載しましたが、順次ラベルを増やしていきます。ラベルとしてふさわしいキーワード数は直ぐに数十になると想定します。


ブログフッターに作成したラベル別記事集成ページリンク集

ラベル別記事集成ページリンク公開にともない、ブログヘッダー下にある次のページは過去に作成した記事集成資料であり、作成時点以降関連記事が反映されていませんので、今後順次アーカイブへ移動します。

・花見川よもやま話

・サイト「千葉」は縄文語起源 梅原猛仮説

・サイト 有吉北貝塚学習記事集成

・サイト イボキサゴ

また、次のページも関連ラベルの記事集成ページリンクを作成して、順次アーカイブへ移動します。

・私家版千葉県遺跡DB地図帳

・縄文土器3Dモデル素材集

・一鍬田甚兵衛山南遺跡出土物観察記録

・千葉県縄文土器形式別出土遺跡分布図


2026年9月21日月曜日

ブログのラベル機能利用

 Using the Blog Label Feature


I’m in my fifteenth year of blogging, but I’ve just started using the label feature. It’s convenient because it allows me to gather and display only the posts assigned a specific label.


ブログをはじめて15年目になりますが、ラベル機能をはじめて使うことになりました。特定ラベルが貼られた記事だけ集めて表示できるので便利です。

1 Bloggerブログ記事のラベル


Bloggerブログ記事のラベル

記事下部にラベルが表示されています。

この数年間の記事には記事表題から切り取ったキーワード数個をラベルとして貼ってあります。

2 ラベルをクリックして生じるブログ画面


ラベルをクリックして生じるブログ画面

そのラベルが貼られた記事全てが表示されます。(画面はラベル「考古学切手」)

3 管理画面

ブログ管理者の自分は管理画面で「label:○○」を入力すると、そのラベルの記事一覧表示を表示することができます。


ラベル「考古学切手」の管理画面一覧表示

4 ラベル記事表示のブックマーク登録

ラベル記事表示の状態でブックマーク登録できます。

5 ラベル利用を始めた理由

ブログ開始からこれまでの15年間は主に検索機能で過去記事を探していました。しかし記事数も増え(2026.09.21現在4694記事)、同じキーワードで表示される記事数が膨大になり、検索だけでは望む過去記事にたどり着くのが困難になってきました。とりわけ、有吉北貝塚北斜面貝層に関する記事で検索困難が顕著です。同じ事象を繰り返し検討しているためです。そこで、ブログ活動のある一定期間の特定テーマについて、それを表示するラベルを貼れば、この検索困難が一挙に解決できることに気が付きました。

この2-3カ月の有吉北貝塚北斜面貝層の取組み記事に「ファブリック分析」というラベルを貼って、その集成記事ブログをブックマークで登録して、活動に利用したところ、過去記事をその都度探す手間が極小化し、とても快適です。思考が、検索という雑事に邪魔されないで、快適に進みます。


2026年9月20日日曜日

人面付土版(千葉市内野第1遺跡)観察記録3Dモデル

 3D Observation Model of a Clay Tablet with a Human Face (Uchino Site No. 1, Chiba City)


I created a 3D observation model of a clay tablet featuring a human face that evokes the look of a comical toddler. This marks the fifth time I have created a 3D observation model of this specific artifact; it possesses a compelling quality that ensures I create such a model whenever it is exhibited.


ひょうきんな幼児の顔を連想させる人面付土版の観察記録3Dモデルを作成しました。この土版は過去4回観察記録3Dモデルを作成していて、今回が5回目です。展示されれば観察記録3Dモデルを必ず作成させるだけの魅力があります。

1 人面付土版(千葉市内野第1遺跡)観察記録3Dモデル

人面付土版(千葉市内野第1遺跡)観察記録3Dモデル

縄文時代晩期前葉

千葉市指定文化財

撮影場所:加曽利貝塚博物館「令和8年度企画展 新千葉市指定文化財記念 ちばの宝物」

撮影月日:2026.09.02


展示の様子

ガラスショーケース越し撮影

3Dモデル写真測量ソフト 3DF Zephyr で生成 v9.013 processing 163 images


3Dモデルの動画


3Dモデル画像


参考 実測図

発掘調査報告書から引用

2 メモ

この人面付土版(千葉市内野第1遺跡)の観察記録3Dモデルは過去4回の別会場展示で作成しています。今回の観察記録3Dモデル作成は5回目となります。千葉市の宝物ですから、展示会場で見かければ必ず観察記録3Dモデルを作成することになります。とても興味をひく遺物です。

2020.02.05 人面付土版 観察記録3Dモデル

2022.01.09 人面付土版(千葉市内野第1遺跡)の観察記録3Dモデル

2024.09.05 人面付土版(千葉市内野第1遺跡) 観察記録3Dモデル

2026.01.28 人面付土版3点 観察記録3Dモデル



2026年9月19日土曜日

技術資料 QGISのGeoPackageに保存されたジオメトリに多数スタイルを同梱する方法

 Technical Note: How to bundle multiple styles with geometries stored in a QGIS GeoPackage


I have verified a method for bundling multiple styles (such as classifications and color schemes) with geometries stored in a QGIS GeoPackage. When these geometries are imported into a different QGIS project, the styles are preserved exactly as they were. It is a very convenient feature.


QGISのGeoPackageに保存されたジオメトリに多数スタイル(分類や色塗りなど)を同梱する方法を確認しました。このジオメトリを別QGISプロジェクトに取り込めば、多数スタイルがそのまま再現できます。とても便利です。

1 作成したジオメトリのGeoPackage保存


作成されたジオメトリ(例 ボロノイ多角形を作成して、angleフィールドの値を等量分類(分類数5)して色分けしている)

QGISで作成したジオメトリ(ここでの例はボロノイ多角形ですでに分類色分けされている)をレイヤパネルで右クリック→エクスポート→新規ファイルに保存→立ち上がるウィンドウで形式をGeoPackage、ファイル名を入力、レイヤ名を入力、CRSを入力(普通はプロジェクトCRS)、その他項目はデフォルトでOKをクリックすれば、GeoPackageファイルに当該ジオメトリが保存されます。


GeoPackageにレイヤを保存する画面(例)

GeoPackageにレイヤを保存すると、ブラウザパネルのGeoPackageに当該GeoPackageファイル名が、その子項目に当該レイヤ名が表示されます。


ブラウザパネルの画面例

ここまでの操作でGeoPackageに保存されたジオメトリを別のQGISプロジェクトにとりこむと(ブラウザパネルからレイヤパネルにドラッグすると)ジオメトリはボロノイ多角形だけの素ジオメトリが表示され、分類や色塗りなどのスタイルは表現されません(スタイルを所持していません)。


スタイルを保存していない素ジオメトリ

2 GeoPackageにスタイルを保存

1で既にgeometry nodesに保存したレイヤのプロパティ→シンボロジ→(左下)スタイル→スタイルを保存→立ち上がるウィンドウでスタイルを保存をデータソースデータベース(In)、ファイル名入力(分類や分類数や色が思い出せるような分類名称がよい)、このレイヤの規定スタイルとして利用するはこのレイヤの最初のスタイルの場合はチェック(同じレイヤに複数レイヤを保存する場合は、2番目以降はチェックしない)、それ以外項目はデフォルト(未入力)でOKをクリックすると画面に表示されているスタイルが当該ジオメトリに保存されます。


スタイル保存画面

この操作をした後、GeoPackageに保存されたジオメトリを別のQGISプロジェクトにとりこむと(ブラウザパネルからレイヤパネルにドラッグすると)ジオメトリはスタイルを伴って(分類や色塗りを伴って)表示されます。

なお、ブラウザパネルのGeoPackage欄には保存したスタイルは子項目等で表示されません。

3 GeoPackageに複数スタイルを保存

2でGeoPackageに保存したジオメトリに1つのスタイルを保存しましたが、別の複数スタイルを同じジオメトリに保存することができます。操作は2と同じですが、このジオメトリの規定スタイルとして利用するにはチェックをいれません。規定スタイルは1つしか指定できません。

同じジオメトリに多数スタイルを保存しても、ブラウザパネルのGeoPackage欄には保存したスタイルは子項目等で表示されません。

4 規定以外スタイルの利用

スタイルを複数保存したジオメトリを別のQGISプロジェクトで取り込むと、そのレイヤは規定スタイルで表示されます。そのレイヤのシンボロジ→(左下)スタイル→スタイルを読み込むをクリックして立ち上がるウィンドウ(データベーススタイルマネージャ)で当該レイヤに保存されたスタイルの名称リストが表示されます。


データベーススタイルマネージャ画面

そのリストから規定スタイル以外の名称をクリックしてスタイルを読み込むをクリックすれば、レイヤは規定スタイルではない別のスタイルで表示されます。


規定スタイルではない別のスタイルで表示された様子(等量分類(分類数10)別カラーランプ)

5 メモ

GeoPackageに保存されたジオメトリに多数のスタイルを保存できるのですが、ブラウザパネルのGeoPackageではそのスタイルリストが確認できないので、戸惑います。どのようなスタイルが保存されているのかを確認するには4の操作を途中までする必要があります。(データベーススタイルマネージャを表示する必要があります。)

しかし、GeoPackageの中の1つのジオメトリに多数スタイルを同梱できるので、大変便利です。


2026年9月18日金曜日

考古学切手 古代エジプト建築柱頭

 Archaeology Stamps: Ancient Egyptian Architectural Capitals


I have enjoyed collecting archaeology stamps featuring ancient Egyptian architectural capitals. A commemorative series depicting four types of capitals was issued in 1980, but I have so far collected only two of them. I have not found any stamps featuring these capitals issued by countries other than Egypt and Greece.


古代エジプト建築柱頭をテーマとした考古学切手を集めて楽しみました。1980年には4種柱頭が描かれたシリーズ記念切手が発行されていますが、まだそのうち2種しか集めていません。柱頭の切手はエジプトとギリシャ発行以外のものは見つけていません。

1 初期キリスト教柱頭と古代エジプト様式柱頭 エジプト発行


初期キリスト教柱頭と古代エジプト様式柱頭 エジプト発行

1980年

デザイン: 左上には植物や鳥が彫刻された初期キリスト教(コプト織・コプト美術風)の美しい柱頭、右上には古代エジプト様式の柱頭が描かれています。

アスワン・ハイ・ダムの建設による水没の危機から古代エジプトの歴史的建造物を守るため、ユネスコ(UNESCO)が主導した国際的な救済事業(ヌビア遺跡救済キャンペーン)を称えた記念切手。

2 カルナック神殿の柱 エジプト発行 


カルナック神殿の柱 エジプト発行

1985年発行

古代エジプトのルクソールにあるカルナック神殿の大列柱室で見られるパピルスを模した美しい柱頭(キャピタル)が精巧に描かれています。

普通切手

3 ライトアップされたパピルス柱 エジプトアラブ共和国


ライトアップされたパピルス柱 エジプトアラブ共和国

1973年

古代エジプトの聖地であるカルナック神殿で開催されている観光アトラクション「音と光のショー(Son et Lumière)」をテーマにデザインされています。ライトアップされた神殿の巨大なパピルス柱が印象的に描かれています。

航空郵便用の記念切手です。

4 柱頭デザイン エジプト発行


柱頭デザイン エジプト発行

1977年

切手には「PHILAE(フィラエ)」の文字が刻まれており、アスワン・ハイ・ダムの建設による水没から守るために、ユネスコ主導の国際キャンペーンによって移築されたフィラエ神殿(イシス神殿など)がモチーフとして描かれています。

ユネスコ(UNESCO)のヌビア遺跡救済キャンペーンを記念する切手。

5 ファラオ時代の柱頭 エジプト発行


ファラオ時代の柱頭 エジプト発行

1980年

デザイン: 古代エジプト(ファラオ時代)のロータス(蓮)やパピルスをモチーフにした柱の頭部(柱頭)

「郵政記念日(Post Day)」の記念切手4種の内の1種。


郵政記念日記念切手4種(webから引用)

6 ジェド柱 エジプト発行


ジェド柱 エジプト発行

1980年

中央に描かれている黄金の遺物は、古代エジプトの象徴的な護符である「ジェド柱(Djed pillar)」です。ジェド柱は「安定」や「永遠」を意味し、オシリス神の背骨を表しているとされています。

「郵政記念日(Post Day)」の記念切手4種の内の1種。

7 メモ

古代エジプト建築柱頭をテーマとした考古学切手を集めて楽しみました。1980年には4種柱頭が描かれたシリーズ記念切手が発行されていますが、まだそのうち2種しか集めていません。柱頭の切手はエジプトとギリシャ発行以外のものは見つけていません。


技術メモ QGIS画面での分類結果データの書き出し方法

 Technical Note: Exporting Classification Results in QGIS


QGIS allows feature data to be displayed using various classification methods. I explored a way to export these classification results—represented by values ​​such as 1 through 10, depending on the number of classes—into a new data field. I created a convenient Python script that enables the export of this data regardless of the classification method or number of classes used in the QGIS display.


QGISでは地物データを多用な方法で分類表示できます。この分類表示結果を区分数に応じて1~10などの数値データで新たなフィールドに書き出す方法を検討しました。QGIS画面で表示したどのような分類方法、分類数でもデータ書き出しができる便利なPythonスクリプトを作成しました。

1 フィールド計算機を使った方法 その1

1-1 等間隔分類

サンプルデータ(0~90の範囲内にある小数点のある数値、レコード数3024、フィールドkousaに格納されている。)

フィールドkousaについて、シンボロジ→連続値による定義→フィールド入力→等間隔分類(分類数10)で画面上で分類しました。


画面上での分類結果

この画面上での分類結果を、数値の小さい方から1~10の数字を割り当てた区分データに変換し、それを新たなフィールドkousakubun3に出力する式(例)とフィールド計算機画面は次の通りです。

式(例)

CASE

    WHEN "kousa" IS NULL THEN NULL

    WHEN maximum("kousa") = minimum("kousa") THEN 1

    ELSE

        -- kousaの値を1.0〜10.999の範囲に線形変換し、floorで整数化(1〜10になる)

        floor(scale_linear("kousa", minimum("kousa"), maximum("kousa"), 1, 10.9999))END


フィールド計算機画面

これで無事等間隔分類を1~10の数値データに変換して、新たなフィールドに書き込むことができました。

1-2 等量分類

等量分類についての式は複雑になり過ぎて、ギブアップしました。

1-3 感想

等間隔分類はなんとかフィールド計算機で再現できましたが、等量分類はギブアップで、他の分類(丸め間隔、固定間隔、対数スケール、標準偏差、自然分類)は思考の意欲が生まれませんでした。

2 フィールド計算機を使った方法 その2

分類のアルゴリズムを再現するのではなく、QGIS操作で生じた分類結果そのものをフィールド計算機にとりこむ方法があります。

例えばシンボロジの分類結果が仮に、

1 :  2.14 ~  5.72

2 :  5.72 ~  8.31

3 :  8.31 ~ 11.45

...

10: 47.21 ~ 88.53

となった場合、フィールド計算機では、

CASE

WHEN "kousa" IS NULL THEN NULL

WHEN "kousa" <= 5.72 THEN 1

WHEN "kousa" <= 8.31 THEN 2

WHEN "kousa" <= 11.45 THEN 3

...

WHEN "kousa" <= 47.21 THEN 9

ELSE 10

END

とすれば、画面上の分類と同じ分類を属性として保存できます。

この方法なら、どのような分類でも、さらに一部を意図的に変更したものでも、対応できます。

ただし、分類の数値を手でひろい入力する必要があり、AI時代にふさわしい方法とは言えません。

3 Pythonスクリプトを使った方法

次のPythonスクリプトをプラグイン→Pythonコンソール→エディタの表示でひらくエディタ画面にはりつけて走らせれば、どのような分類でも1~10などの数値データを新たなフィールドのレコードに書き込むことができます。この方法も分類のアルゴリズムを再現するのではなく、QGIS操作で生じた分類結果そのものを新フィールドにとりこむ方法です。

このPythonスクリプトは、レイヤ名称aaa、対象フィールド名称bbb、新フィールド名称bbb_class、分類数10の場合で記述されていますが、それぞれ変更可能です。ChatGPT支援で作成しました。


from qgis.core import (
    QgsProject,
    QgsGraduatedSymbolRenderer,
    QgsField
)
from qgis.PyQt.QtCore import QVariant

# ============================================================
# 設定
# ============================================================

LAYER_NAME = "aaa"
VALUE_FIELD = "bbb"
CLASS_FIELD = "bbb_class"

# ============================================================
# レイヤ取得
# ============================================================

layers = QgsProject.instance().mapLayersByName(LAYER_NAME)

if not layers:
    raise Exception(f"レイヤ '{LAYER_NAME}' が見つかりません。")

layer = layers[0]

# bbb の存在確認
if layer.fields().indexFromName(VALUE_FIELD) == -1:
    raise Exception(f"フィールド '{VALUE_FIELD}' が見つかりません。")

# ============================================================
# 現在のシンボロジを取得
# ============================================================

renderer = layer.renderer()

if not isinstance(renderer, QgsGraduatedSymbolRenderer):
    raise Exception(
        "現在のシンボロジが「連続値による定義」ではありません。"
    )

# 分類に使用しているフィールドを確認
class_attribute = renderer.classAttribute()

if class_attribute != VALUE_FIELD:
    raise Exception(
        f"現在の分類フィールドは '{class_attribute}' です。"
        f"'{VALUE_FIELD}' ではありません。"
    )

# 現在画面で設定されている分類範囲を取得
ranges = list(renderer.ranges())

if len(ranges) != 10:
    raise Exception(
        f"現在の分類数は {len(ranges)} です。"
        "設定分類にしてから実行してください。"
    )

# ============================================================
# 分類範囲を確認表示
# ============================================================

print("現在の分類範囲")
print("------------------------------")

for i, r in enumerate(ranges, start=1):
    print(
        f"Class {i}: "
        f"{r.lowerValue()} ~ {r.upperValue()}"
    )

print("------------------------------")

# ============================================================
# bbb_class フィールドを作成
# ============================================================

class_idx = layer.fields().indexFromName(CLASS_FIELD)

if class_idx == -1:

    if not layer.isEditable():
        if not layer.startEditing():
            raise Exception(
                "レイヤを編集モードにできませんでした。"
            )

    success = layer.addAttribute(
        QgsField(CLASS_FIELD, QVariant.Int)
    )

    if not success:
        raise Exception(
            f"フィールド '{CLASS_FIELD}' を作成できませんでした。"
        )

    layer.updateFields()

    class_idx = layer.fields().indexFromName(CLASS_FIELD)

else:

    if not layer.isEditable():
        if not layer.startEditing():
            raise Exception(
                "レイヤを編集モードにできませんでした。"
            )

# ============================================================
# 各地物を現在のシンボロジと同じ区分に分類
# ============================================================

count = 0
null_count = 0
unclassified_count = 0

for feature in layer.getFeatures():

    value = feature[VALUE_FIELD]

    # NULLの場合
    if value is None or value == QVariant():
        layer.changeAttributeValue(
            feature.id(),
            class_idx,
            None
        )
        null_count += 1
        continue

    try:
        value = float(value)
    except (TypeError, ValueError):
        layer.changeAttributeValue(
            feature.id(),
            class_idx,
            None
        )
        unclassified_count += 1
        continue

    class_number = None

    # QGISの graduated renderer と同様に
    # 上から順番に該当する範囲を探す
    for i, r in enumerate(ranges, start=1):

        if (
            r.lowerValue() <= value
            and
            value <= r.upperValue()
        ):
            class_number = i
            break

    if class_number is not None:

        layer.changeAttributeValue(
            feature.id(),
            class_idx,
            class_number
        )

        count += 1

    else:

        layer.changeAttributeValue(
            feature.id(),
            class_idx,
            None
        )

        unclassified_count += 1

# ============================================================
# 結果
# ============================================================

print("")
print("処理完了")
print("==============================")
print(f"分類した地物数 : {count}")
print(f"NULL           : {null_count}")
print(f"分類不能       : {unclassified_count}")
print("==============================")
print("")
print(
    "属性テーブルの新フィールドに "
    "分類番号を書き込みました。"
)
print(
    "内容を確認して問題なければ、"
    "レイヤの編集内容を保存してください。"
)

4 感想


レイヤの属性テーブル 例

今回作成Pythonスクリプトでどのような分類、分類数でも、新しいフィールドのレコードに分類を指標する1~10など数値を書き込むことができるようになりました。画面の分類結果をデータとして残せるようになりました。画面で多種分類方法をシミュレーションして(分布を確認して)、適切なもののデータを残せるのでとても便利です。