QGIS3 – 無効なジオメトリ―の無視

Dissolveで停止

QGISで国土数値情報の行政区域を市区町村単位でマルチパート化し、都道府県単位に融合しようとしたところ、以下のような警告が出て処理が停止した。

メニューから「ベクタ」→「ジオメトリツール」→「有効性チェック」で無効な部分を表示させたが、最大限拡大しても交差等の異常は見つけられなかった。

そこで、次の方法で無効なジオメトリ―を無視して処理を続行させるように設定したところ、Dissolveが完了した。

無効なジオメトリーの無視

まず、メニューから「プロセッシング」→「ツールボックス」を選択。

すると画面右側にプロセッシングツールが表示されるので、オプションアイコンをクリック。

オプションの「無効な地物のフィルタリング」が、デフォルトでは「・・・アルゴリズムの実行を停止する」になっているので、これをダブルクリックして「不正なジオメトリの地物を無視」を選択する。

そして再度Dissolveを実行すると、以下のように警告がずらりと表示されるが、処理は進んでいく。

そして都道府県単位での融合が完了した。

無効なジオメトリーの確認

ただし無効なジオメトリーは修正していないので、都道府県境界上にそのような個所があれば、無効な状態のまま残っている可能性がある。

ベクタ→ジオメトリツール→有効性チェックで確認したところ、無効なジオメトリーや「不正なジオメトリの出力レイヤ」と「エラー部分の出力レイヤ」には何も存在しなかった。

 

 

QGIS – 行政区域データ – マルチパート化

概要

同じ基礎自治体(市区町村)に島や飛び地がある場合、複数のポリゴンが同一の市区町村名を持つ。国土数値情報から行政区域データを読み込んだ段階では、これらは別々のオブジェクトとなっている。

一つの市区町村に複数の領域がある場合、市区町村単位でこれをまとめて扱いたい。このようなときは、同じ属性を持つ地物を一つにまとめて扱うマルチポリゴン化を行う。

一つの市区町村に複数の領域がある例

埋立地

碧南市はシンプルな例で、本体のエリアのほかに海上の大きな埋立地がある。これらは属性テーブルでは2つのデータに分かれている。

以下は本体の方。

こちらは埋め立て地の方で属性は全て上と同じだが、異なるIDを持つ別の地物となっている。このような例は、埋め立て地のほか大規模な堤防にも見られる。

島や岩場

日本の海岸によくある例で、沿岸に島・岩が多数あり、それらが同じ市区町村の領域となっている。細かい多数の岩が全て館山市の区域。

飛び地

府中市に接する小金井市の中にある東京自治会館だけ、府中市の飛び地となっている。黄色い区域の周りは小金井市、そのすぐ左・下に府中市の本体がある。

市区町村区域のマルチポリゴン化の概要

上記のような島や飛び地など複数のポリゴンを一つのオブジェクトとしてまとめるために、マルチポリゴン化を行う。

その手順中、マルチポリゴンでまとめるキーの属性を指定するが、市区町村単位でまとめた場合、所属未定地の扱いと同名市区町村が問題となる。

所属未定地・同一区名・政令市の扱いの問題

所属未定地の問題

現状のままで市区町村名をキーにしてマルチポリゴン化すると、全都道府県の「所属未定地」が1つのオブジェクトになってしまう。

たとえば以下のように千葉県に1箇所、所属未定地があることがわかる(ここでは属性名をAliasで付け直している)。

また東京都には多くの境界未定地が存在している。

このままmunicipalityをキーとしてマルチポリゴン化すると、千葉県・東京都その他すべての都道府県の所属未定地が一つにまとめられてしまう。

これを都道府県ごとの所属未定地とするためには、都道府県名(prefecture)と市区町村名(municipality)をつなげた属性を新たに設ければよい。

同名市区町村の問題

同一名称の市区町村は多数あって、たとえば「池田町」は北海道・福井県・長野県・岐阜県に存在する(2022年時点)。また東京都の特別区や政令市の区の名前もここに現れるが、北区や緑区などは複数存在する。

さらに、同一県内に同名の市区町村が存在する場合もある。たとえば神奈川県横浜市と相模原市の両方に緑区があり、横浜市と相模原市のいずれにも南区がある。このためmunicipalityだけでマルチポリゴン化すると、緑区や南区が1つにまとめられてしまう。

この場合はprefecturemunicipalityだけでは不十分で、政令市名が入るcity_or_countyも含める必要がある。

政令市の扱いの問題

地理院のデータでは政令市内の区が一般の市町村と同じに扱われている。この構造でそのままマルチポリゴン化すると政令市が1つの自治体として扱われず、区単位に分けられる。

政令市を区で分けずに他の市区町村と同じように扱いたい場合には、以下のような新たな属性を設け、それをキーとしてマルチポリゴン化する。

  • city_or_countyが政令市の場合、prefecturecity_or_county
  • cyty_or_countyNULLか郡名の場合、prefecturemunicipality
    • ここでは同一都道府県内で政令市の区以外に同名の市区町村名は存在しないことを前提としている

新たな属性の追加

ここでは所属未定地、政令市の扱いについて以下のような仕様とする。

  • 所属未定地は都道府県単位でまとめる
    • 例:北海道所属未定地 など
  • 政令市は区で分けず、一般市区町村と同じ行政区として扱う
    • 例:北海道札幌市、北海道函館市・・・など

この条件でマルチポリゴン化するため、以下の手順で新たな属性を追加する。

  1. レイヤー右クリックでレイヤプロパティダイアログを開く
    1. 左の属性タブ選択
    2. 新規フィールドアイコンでフィールド追加し、フィールド名等を設定
    3. 必要なら属性フォームタブでAilias設定
    4. OKボタンクリック
  2. レイヤー右クリックで属性テーブルを開く
    1. フィールド計算機アイコンでフィールド計算機ダイアログを開く
    2. 既存フィールド更新で、作成したフィールドを選択
    3. フィールドの計算式を入力
    4. プレビューを確認して、よければOKボタンをクリック

以下はフィールド計算機ダイアログの入力状況。計算式でCASE文を使っている。

これを反映した属性テーブルは以下の通り。都道府県名+所属未定地となっていて、政令市と一般市が同列に扱われている。

この段階で編集後の属性テーブルを、「編集内容の保存」アイコンで保存すると、1~2分ほどかけて保存される。その後、プロジェクトを保存しておく。

マルチポリゴン化の実行

マルチポリゴン化を実行するには、メニューから「ベクタ」→「ジオメトリツール」→「シングルパートをマルチパートに集約」と選択していく。

ダイアログが表示され、マルチポリゴン化が実行される。実行は瞬時に終わり、下のプログレスバーは0%だがこの時点で実行は終了している。マルチポリゴン化されたオブジェクトは新たに作成された出力レイヤーに保存される。

出力レイヤーを右クリックして属性テーブルを表示させると、政令市・一般市区町村ごとに1つのレコードとなっている。

先に例示した館山市の海岸部を見てみると、細かな一つ一つの岩が館山市として認識されている。

スクラッチレイヤーの保存

ここまでの状態ではマルチパート化された行政区画があるレイヤーは一時的なスクラッチレイヤーとなっている。継続的にこのレイヤーを使うためには、レイヤーを保存しておく必要がある。

スクラッチレイヤーの場合、レイヤーの右側にアイコンが出るので、それをクリックして、GeoPackageファイルの保存場所を指定して保存する。デフォルトでは、ファイル名がレイヤー名として自動的に初期設定される。

 

QGIS3 – 行政区域データ – 読み込み

概要

QGISに行政区域データを読み込む。データソースは国土地理院による国土数値情報(Digital National Land Information)を用いる。

データのダウンロード

  1. 地理院の国土数値情報ダウンロードサービスに行く
    • デフォルトのデータ形式はShape

スクロールして「2.政策区域」→「行政地域」をたどり、「行政区域(ポリゴン)」をクリック。

ダウンロードしたい地域を選択。今回は「全国」をクリック。

各都道府県・全国のデータごとに各年度のデータが登録されている。3~4年ごとにデータ容量が1.5~2倍に増えていて、最新のR4年度版では700MBを超えている。

ダウンロードしたZIPファイルを展開したところ。容量が2.4GBになっている。

データの読み込み

QGISのメニューで、「レイヤ」→「レイヤを追加」→「ベクタレイヤを追加」を選択。

ダイアログが開くので読み込みの設定。

  • ソースタイプは「ファイル」のまま
  • 文字コードはShift_JIS
  • ファイルの場所を入力
  • 「追加」ボタンをクリック

すぐにレイヤーが追加されて、市区町村単位の行政界が表示される。

内容の確認

地理院サイトの子のデータの説明に以下のクラス図が掲載されている。

レイヤーを右クリックして「属性テーブルを開く」を選択し、属性テーブルを表示させる。

冒頭には各都道府県単位のデータが、都道府県名以外の内容がNULLとして登録されている。

下の方にスクロールすると、振興局名・郡政令都市名・市区町村名と行政区域コードが表れてくる。以下のような対応になっていることがわかる。

  • N03_001:振興局名
  • N03_002:郡政令都市名
  • N03_003:市区町村名
  • N03_004:行政区域コード

一般的な県内の郡・市町村は以下の通り。

項目名の変更

属性テーブルの項目名がそのままではN03_001のような記号表現になっているが、これを変更したいときには、別名(Alias)使うのが簡単。項目名変更の手順はこちらにまとめている。

 

QGIS3 – インストール

ダウンロードとインストール

OSGeo版ではなく、長期リリースのパッケージ版のインストール。

  1. QGISのダウンロードサイトに入り、長期リリース(最も安定)をダウンロード
  2. 約1GBのmsiファイルがダウンロードされるので、これを実行してインストール

動作確認

地理院タイルを表示させて動作確認。

 

QGIS3 – 地理院タイルの表示

概要

国土地理院のベースマップのタイルに接続して表示させる方法。

新規接続

QGISの”XYZ Tiles”で「新規接続」を選択。

XYZ接続のダイアログが表示される。ここで接続先のURLや名前を指定する。

接続先の確認

国土地理院の「地理院タイル」のページに入り、ベースマップの標準地図のリンクをクリック。上部にURLが表示されるのでこれをコピー。

接続先の指定

XYZ接続のダイアログに、コピーしたURLをペーストし、接続名やズームレベルも指定してOKボタンをクリック。

接続が登録されるので、これをレイヤーに追加する。

地理院タイルのベースマップ、標準地図が表示された。

Python3 – WebAPI

概要

PythonでWebAPIによってデータをリクエストして取得する方法をまとめる。ここでは郵便番号配信サービスのzipcloudのAPIを利用する。

流れは以下の通り。

  1. 準備
    1. urllib.requestライブラリーのインポート
    2. APIエンドポイントURLのセット
    3. パラメーターのセット
    4. パラメーターのエンコード
  2. リクエストとレスポンス
    1. Requestオブジェクトの生成
    2. リクエスト実行とResponseオブジェクトの取得
  3. レスポンスオブジェクトのデコード

API仕様

zipcloudサイトの郵便番号検索APIの内容をまとめると以下の通り。

  • リクエストURL:https://zipcloud.ibsnet.co.jp/api/search
  • リクエストパラメーター
    • zipcode~必須~郵便番号(ハイフンなし7桁の数字)
    • callback~オプション~JSONPとして出力する際のコールバック関数名
    • limit~オプション~同一の郵便番号で複数のデータが存在する場合に返される上限件数(デフォルト20)
    • urlパターンの例:https://zipcloud.ibsnet.co.jp/api/search?zipcode=1330051

コード

最初に実行コードの全体を示す。

コード説明

準備

urllib.requestライブラリーのインポート

HTTPリクエストに必要なurllib.requestライブラリーをインポートする。

APIエンドポイントURLのセット

ここではzipcloudのAPIエンドポイントのURLを変数urlにセットする。

リクエストパラメーターのセット

リクエストパラメーターを辞書でセット。ここでは仕様に従ってzipcode'1130051'を与えている。

パラメーターのエンコード

リクエストに備えて、パラメーター文字列をバイト列にエンコード。ここでは一般的なutf-8を指定しているが、郵便番号は半角数字なのでasciishift_jisでも同じ結果となる。その形式は

urllib.parse.urlencode(パラメーター辞書).encode('文字コード')

リクエストとレスポンス

Requestオブジェクトの生成

ベースのURLとエンコードされたパラメーターを与えてRequestオブジェクトを生成する。

urllib.request.Request(URL文字列, data=エンコード後のパラメーター)

リクエスト実行とResponseオブジェクト取得

リクエストはRequestオブジェクトを引数としてurlopenメソッドを実行。戻り値は結果のResponseオブジェクト。

Responseオブジェクトのデコード

取得したままのResponseオブジェクトをそのまま表示しても、クラスの文字列表現となるだけ。

そこで、文字コードを指定してデコードしてやる。ここではutf-8を指定している。

response.read().decode(文字コード)

結果は文字コードで指定されたエンコード方式でデコードされ、レスポンスの文字列が得られる。

zipcloudのレスポンスはJSON形式でインデント整形された文字列となるが、あくまで文字列であり、要素を指定した値の取出しはできない。

JSON文字列の取り扱い

準備

JSON形式の文字列を辞書として読み込んだり、整形表示をしてみる(PythonでのJSONの取り扱い)。

まず、JSONを扱うにはjsonライブラリーが必要。

辞書への展開

JSON形式の文字列をPythonの辞書として取り込む。

json.loads(JSON形式の文字列)

レスポンス内容の取出し

これはzipcloudの仕様になるが、レスポンスのJSONデータのレスポンス部分は入れ子の内側('response'キーに対応)にあるので、これを取り出す。

同じ郵便番号に複数の住所が存在する場合もあるが、ここでは最初の1つだけ取り出している。

JSON形式での整形出力

辞書の内容を再度整形して文字列化する。

json.dumps(辞書, indent=桁数)

ただし、このままではマルチバイト文字が16進にエスケープされてしまう。

エスケープの抑制

json.dumpsでエスケープを抑制することで、もとの文字コードに基づいて処理される。エスケープを抑制するためには引数でensure_ascii=Falseをセットする。

 

ISO-20220-JP/EUC-JP/Shift-JISなど

概要

JIS X 0208の符号化方式として以下の3つを整理する。

  • ISO-2022-JP~JISコード
  • EUC-JP
  • Shift_JIS

ISO-2022-JP

JIS X 0208の符号化

区点番号を16進4桁とし、0x2020を加えて2バイトのバイト列を得る。以下、いくつかの例。

全角文字 区点(10進) 区点(16進) 符号化後
4/2 0x0402 24 22
4/21 0x0415 24 35
16/1 0x1001 30 21
28/79 0x1C4F 3C 6F

エスケープシーケンス

ASCII文字の解釈で始め、ASCIIにエスケープした状態で終了。

以下は文字集合、バッファーとそれに切り替えるためのエスケープシーケンス。

文字集合 バッファー 16進 文字表記
ASCII G0 1B 28 42 ESC ( B
JIS X 0201 G0 1B 28 4A ESC ( J
JIS X 0208 G0 1B 24 42 ESC $ B

以下は、「ABアイあい」という文字列のISO-2022-JPによるエンコーディングの結果。

区/点 バイト表現 変換・制御 バイト列
A 41 41
B 42 42
C 43 43
JIS X 0201 1B 28 4A
B1 B1
B2 B2
JIS X 0208 1B 24 42
4/4 0404 +0x2020 24 24
4/5 0405 +0x2020 24 25
ASCII 1B 28 42

EUC-JP

EUC-JPでは以下のようにエンコードする。

  • ASCIIをGL領域、JIS X 0208をGR領域で扱う
  • ASCIIは最上位ビットが0でそのままのビットパターン
  • JIS X 0208は区点コードに0xA0A0を加えた値となる
  • 半角カタカナ(JIS X 0201)はSS2 (Single Sift 2, 0x8E)で1文字ごとにエスケープ
  • 補助漢字(JIS X 212)はSS3 (Single Shift 3, 0x8F)で1文字ごとにエスケープ

なお、区の最大値は84(0x54)、点の最大値は95(0x5F)なので、0xA0を加えてもオーバーフローしない。

全角文字 区点(10進) 区点(16進) 符号化後
4/2 0x0402 A4 A2
4/21 0x0415 A4 B5
16/1 0x1001 B0 A1
28/79 0x1C4F BC EF

エスケープ

JIS X 0201とJIS X 0212の文字の前、1文字ごとにそれぞれエスケープシーケンス0x8E0x8Fを置く。ASCIIとJIS X 0208は同居しているので、エスケープシーケンスは必要ない。

以下は文字集合、バッファーとそれに切り替えるためのエスケープシーケンス。ただしJIS X 0201とJIS X 0212へのエスケープの実装は任意。

文字集合 バッファー 16進 文字表記
ASCII G0
JIS X 0208 G1
JIS X 0201 G2 8E SS2
JIS X 0212 G3 8F SS3

以下は、「ABアイあい」という文字列のEUC-JPによるエンコーディングの結果。

区/点 バイト表現 変換・制御 バイト列
A 41 41
B 42 42
C 43 43
JIS X 0201 8E
B1 B1
JIS X 0201 8F
B2 B2
JIS X 0208 1B 24 42
4/4 0404 +0xA0A0 A4 A4
4/5 0405 +0xA0A0 A4 A5

Shift_JIS

概要

英数字・半角カナ・漢字をエスケープシーケンスなしで1~2バイトの符号空間で表現する。

  • 半角英数字と半角カタカナは1バイト
  • 日本語の全角文字は2バイト

Shift_JISのシフトは、文字集合を符号空間の空き領域にシフトさせて詰め込んでいることから。

特徴など

  • エスケープシーケンス不要
  • 符号化後の容量が他と比べて小さい
  • JIS X 0208の区点からの変換式が煩雑
  • 2バイト目にASCIIコードと同じ符号が現れるため、文字区切りの判定に制約
    • 一部の文字に0x5Cが現れ、これがASCIIのバックスラッシュ/¥記号に相当するため、ソースコードの処理などで不都合が生じる、など

 

JIS X 0208

概要

日本語表記のための漢字・図形の符号化文字集合(の規格)。7ビット及び8ビットの2バイトで表現。「7ビット及び8ビットの2バイト情報交換用符号化漢字集合」(7-bit and 8-bit double byte coded KANJI sets for information interchange)。

図形文字は94×94=8834の区点に非漢字524字、第一水準漢字2965字、第二水準漢字3390字の6879字が定義されている。

コード表

構造

JIS X 0208は区(row)と点(cell)の交点に文字を定義する。各区に対して80の点が定義され、1つの文字は「区/点」で表される(コードポイント)。

たとえば1区のコード表は以下のとおり。

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
1 0 ´ ¨
16 _
32
48 ± ×
64 ÷ °
80 §

 

割当て

1区~8区 記号・英数・かな
16区~47区 第1水準漢字
48区~84区 第2水準漢字

1区~8区の内訳は以下のようになっている。

1~2区 記号
3区 数字、アルファベット
4区 平仮名
5区 片仮名
6区 ギリシャ文字
7区 ロシア文字
8区 罫線文字

JIS X 0208の一部を例示すると以下のとおり。「あ」は4区2点、「愛」は16区6点となる。

区\点 1 2 3 4 5 6 7 8 9 10
2/1 2/2 2/3 2/4 2/5 2/6 2/7 2/8 2/9 2/A
1 2/1
2 2/2
3 2/3
4 2/4
5 2/5
6 2/6 Α Β Γ Δ Ε Ζ Η Θ Ι Κ
7 2/7 А Б В Г Д Е Ё Ж З И
8 2/8
9 2/9
: : : : : : : : : : : :
15 2/F
16 3/0
17 3/1
18 3/2
: : : : : : : : : : : :

参考~JIS X 0208の文字コード

区点の仕組み

区/点と列/行

JIS-X0208は2バイトで文字を表現する。2バイトのうち1バイトを「区」(row)とし、第2バイトを「点」(cell)とする。

1バイトを上位ビットと下位ビットに分け、上位ビットを「列」、下位ビットを「行」とする。

1バイトが7ビットの場合、000|0000~111|1111の128パターンが表現可能だが、このうち34パターンが1バイト文字として先取りされる。このため、区及び点を表現できる1バイトのパターン数は94となる。

列/行

2バイト文字の1バイトのパターンの表現方法。1バイトを上位3 or 4ビット(列)と下位4ビット(行)に分け、それぞれの10進数表記を'/'で区切って「列番号/行番号」とする。たとえば7ビットの場合、011|1011は3/11(3列11行)となる。

1バイトが7ビットの場合、000|0000~111|1111すなわち0/0~7/15で、その数8×16=128が全体のパターン数となる。但し後述のように、このうち34パターンが1バイト文字に先取りされるため、2バイト文字として使用可能なのは128−34→94パターンとなる。

1バイト文字

1バイト文字には以下の34文字(制御文字とSPACE)が予約される。

制御文字

0列(0/0~0/15)と1列(1/0~1/15)の32個の領域には制御文字を配置する(CL領域)。

SPACE

2/0にはSPACE(空白)を配置する。

DELETE

7/15にはDELETE(抹消)を配置する。

7ビット2バイトの場合

上位7ビットを区、下位8ビットの1バイトを点とする。

  • CL領域(0/0~1/15)の制御文字
  • 2/0のSPACE
  • 7/15のDELETE
  • GL領域(2/1~7/14)の図形文字
    →2バイトで94×94区点

8ビット2バイトの場合

8ビット2バイトの場合、7ビット2バイトに対して、1バイト目の最上位ビットが加わる。

最上位ビットが0の場合、7ビット2バイトと同じで、区や点のパターンは0/0~7/15の128パターン。

  • CL領域(0/0~1/15)の制御文字
  • 2/0のSPACE
  • 7/15のDELETE
  • GL領域(2/1~7/14)の図形文字
    →2バイトで94×94区点

一方、1バイト目の最上位ビットが1の場合は、区や点のパターン数は8/0~15/15でパターンを以下のように割り当てる。

  • CR領域(8/0~9/15)の制御文字
  • 10/0、10/15は不使用
  • GR領域(10/1~15/14)の図形文字
    →2バイトで94×94区点

GR領域の考え方はGL領域と同じで、94×94の区点で8836個の文字を配置可能。

 

 

 

JIS X 0201

概要

7ビット及び8ビットの情報交換用符号化文字集合。ラテン文字用図形文字集合と片仮名用図形文字集合のふたつの文字集合からなっている。半角英数、半角カナ。俗称ANKコード (Alphabet Numeric Katakana) 。

このJIS X 0201はJIS X 0208と併せてShift_JISやEUC-JPで用いられる。JIS X 0201の殆どの文字はJIS X 0208の一部と重複するので、半角で表示されることが多い。

文字集合

ラテン文字用図形文字集合

8ビットの場合、0010|0001~0111|1110(0x21~0x7E)の94文字に図形文字を割り当てている。先頭ビットが0で、7ビットでそれ以降のパターンは変わらない。

ASCIIとほぼ同じ並びだが、以下の2つの文字の表現がASCIIと異なる。

  • 5C:\¥
  • 7E:~→ ¯
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
20 ! # $ % & ( ) * * , . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ ¥ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ¯

 

片仮名用図形文字集合

8ビットの1010|0001~1111|1110(0xA1~0xFE)の94文字に図形文字を割り当てている。7ビットの場合は先頭ビットの1を無視する。

半角カタカナや記号として表示される。

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A0
B0
C0
D0
E0
F0

 

7ビット/8ビット

8ビットの場合は、0x21~0x7Eにラテン文字、0xA1~0xFEに片仮名文字を割り当てる。

7ビットの場合は、SIHT-OUT  (SO, 0x0E)、SHIFT-OUT (SO, 0x0F)でラテン文字とカタカナ文字を切り替える。SO以降は片仮名、SI以降はラテン文字となる。

 

EBCDIC

概要

EBCDIC ( Extended Binary Coded Decimal Interchange Code)は、IBMにより定義された8ビットの文字コード。

BCDの0~9 (0000~1001)を8ビットに拡張し、上位ビットをF (1111)として10進の数値を充てており、アルファベット文字や記号をそれぞれ特定の位置に定義している。

制御文字

EBCDICの制御文字は16進で00~3FとFFに割り当てられている。

FF:EO

00 01 02 03
0 NUL DLE DS (予約)
1 SOH DC1 SOS (予約)
2 STX DC2 FS SYN
3 ETX DC3 WUS IR
4 SEL RES/EMP BYP/IMP PP
5 HT NL LF TRN
6 RNL BS ETB NBS
7 DEL POC ESC EOT
8 GE CAN SA SBS
9 SPS EM SFE IT
A RPT UBS SM/SW RFF
B VT CU1 CSP CU3
C FF IFS MFA DC4
D CR IGS ENQ NAK
E SQ/LS1 IRS ACK (予約)
F SI/LS0 IUS/ITB BEL SUB

図形文字

共通配置

EBCDICの各コードページに共通する配置は以下のとおりで、文字が定義されていない空白位置には、各コードページごとに制御文字や他の印字可能文字が割り当てられる。

 

40 50 60 70 80 90 A0 B0 C0 D0 E0 F0
0 SP & 0
1 / A J 1
2 B K S 2
3 C L T 3
4 D M U 4
5 E N V 5
6 F O W 6
7 G P X 7
8 H Q Y 8
9 I R Z 9
A :
B . , #
C < * % @
D ( ) _
E + ; > =
F ?

カナ拡張

IBMによるカナ拡張の例。

40 50 60 70 80 90 A0 B0 C0 D0 E0 F0
0 SP & 0
1 / a j A J 1
2 b k s B K S 2
3 c l t C L T 3
4 d m u D M U 4
5 e n v E N V 5
6 f o w F O W 6
7 g p x G P X 7
8 h q y H Q Y 8
9 i r z I R Z 9
A :
B . , #
C < * % @
D ( ) _
E + ; > =
F ?