2011年8月15日月曜日

番地号の表記(3) 基礎番号とフロンテージ

「中央1丁目2番3号」という住所の場合、
「2番」:法律では「街区符号」。一般的には「番地」
「3号」:法律では「住居番号」。一般的には「号」
といいます。


今回はこの「3号」にあたる一般的に「号」と呼ばれている部分のお話です。
「号」は住居の入り口の位置が「街区の外周線」のどの位置にあるかで決まります。
つまり、従来の地番のような面の領域ではなく、地点を示す点の位置でもありません。

街区の外周を一定間隔で区切って「基礎番号」という番号をつける際の、一定間隔を「フロンテージ」といいます。
「フロンテージ」は市区町村で定めます。だいたい10m~15mくらいです。
基礎番号は住所のうち「号」に当たる部分の元になる値です。
割り当て方は、市区町村の中心に近い角から右回りに番号をつけていきます。


このあたりの図解は以下のサイトがわかりやすいです。
計画・財政・施策/住居表示(三重県鈴鹿市の公式サイト>行政ガイド)

基本的なことは以上です。今度はちょっと変わった例を見ていきます。

(1)基礎番号の境目に入り口がある
建物の入り口が丁度、基礎番号の境目にある場合、小さい方の番号を採用します。


(2)1つの基礎番号に複数の建物がある
例えば、
・間口の狭い建物が並んでいる。
・街区内に袋小路があり、その袋小路沿いに複数の建物がある。


このような場合、基礎番号だけでは別の建物なのに同じ住所になってしまいます。
そこでこのような場合、住居番号は「基礎番号-枝番」になります。


例)中央4丁目1番2号 を入り口とする鈴木さんと佐藤さんの家
  中央4丁目1番2-1号 鈴木さん宅
  中央4丁目1番2-2号 佐藤さん宅 など。


(3)1つの建物が複数の基礎番号を持つ
例えば、
・大きな建物で、主たる入り口がいくつもあり、それらが別々の基礎番号の位置にある。


ビルには非常口があるので入り口が複数ということはごく普通です。
どれが「主たる入り口」かということは、市区町村長が決めてしまいます。
ところが街区外周に沿ってお店の入り口が並んでいるような場合、各戸の主たる入り口は別々です。
このように「主たる入り口」が別々の基礎番号の位置に複数ある場合、たとえ同じ建物のお店であっても「号」が異なります。


例)中央4丁目1番 の大きな建物の街区外周に沿ってお店が並んでいる場合
中央4丁目1番1号 八百屋さん
中央4丁目1番2号 靴屋さん など。


住居表示の魔界はまだまだ続きます。

2011年8月14日日曜日

番地号の表記(2) 住居表示の基本

従来の「地番」はもともと地租納税のための番号であり、道案内に不向きで不便なことがありました。
・番号があちこちに飛んで位置的に連続しないため、どのあたりかわからない。
・配達で誤配や遅配が多い。
・消防などの現地到着が遅れたり、訪問者がたどり着けなかったりする。
・分筆や合筆があった場所は枝番がついて住所が長くなることがある。


そこで、位置がわかるような住所にしようということで、
1962年に「住居表示法」が施行されました。
住居表示に関する法律(総務省:電子政府の総合窓口e-gov)


自治省告示。実務上の注意点です。
街区方式による住居表示の実施基準(pdf)(三重県鈴鹿市の公式サイト)

 
住居表示には「街区方式」と「道路方式」の2つの付番方法がありますが、ほとんどすべての地域で街区方式が採用されています。道路方式は例外的に山形県東根市の一部で採用されただけです。(他に採用した地域があればお知らせください)

「街区方式」の基本は以下のとおりです。
・町字内部に恒久施設で区切られた領域「街区」を設定する。

 ここでの恒久施設とは、道路などの長期間変化しない線状の地物のことです。
・街区ごとに「街区符号」(一般的には番地)をつける。

・街区の外周を一定間隔「フロンテージ」ごと区切って「基礎番号」をつける。
・住居入り口位置の基礎番号に基づき「住居番号」(一般的には号)をつける。


例)中央4丁目1番2号
 「1番」:法律では「街区符号」。一般的には「番地」
 「2号」:法律では「住居番号」。一般的には「号」


このあたりの図解は以下のサイトがわかりやすいです。
計画・財政・施策/住居表示(三重県鈴鹿市の公式サイト>行政ガイド)

なお、従来の地番は無くなったわけではなく、土地を面的に管理する際には引き続き使われます。
つまり、住居表示地域では、従来の地番住所と住居表示住所の2つの住所があることになり、住居表示の住所を「用いるように努めなければならない」(住居表示義務)とされています。

2011年7月9日土曜日

京都市の通り名住所(3) 南北の通り

京都市内中心部の通りには、東西の通りと南北の通りがあり、それぞれにわらべ歌があります。
今回は南北の通り名のわらべ歌です。東から順に歌っていきます。
(なお、わらべ歌にない通り名でも住所表記に使うことがあります)


1.歌詞
○南北の通り名のわらべ歌(通称:寺御幸 てらごこ)
てら ごこ ふや とみ やなぎ さかい
たか あい ひがし くるまやちょう
からす りょうがえ むろ ころも
しんまち かまんざ にし おがわ
あぶら さめがいで ほりかわのみず
よしや いの くろ おおみやへ
まつ ひぐらしに ちえこういん
じょうふく せんぼん はてはにしじん


2.実際の通り名
寺町通り (てらまちどおり)
御幸町通り(ごこまちどおり)
麩屋町通り(ふやちょうどおり)
富小路通り(とみのこうじどおり)
柳馬場通り(やなぎのばんばどおり)
堺町通り (さかいまちどおり)
高倉通り (たかくらどおり)
間之町通り(あいのまちどおり)
東洞院通り(ひがしのとういんどおり)
車屋町通り(くるまやちょうどおり)
烏丸通り (からすまどおり)
両替町通り(りょうがえちょうどおり)
室町通り (むろまちどおり)
衣棚通り (ころものたなどおり)
新町通り (しんまちどおり)
釜座通り (かまんざどおり)
西洞院通り(にしのとういんどおり)
小川通り (おがわどおり)
油小路通り(あぶらのこうじどおり)
醒ケ井通り(さめがいどおり)
堀川通り (ほりかわどおり)
葭屋町通り(よしやまちどおり)
猪熊通り (いのくまどおり)
黒門通り (くろもんどおり)
大宮通り (おおみやどおり)
松屋町通り(まつやちょうどおり)
日暮通り (ひぐらしどおり)
智恵光院通り(ちえこういんどおり)
浄福寺通り(じょうふくじどおり)
千本通り (せんぼんどおり)
※西陣(にしじん)は地域名です。通り名ではありません。


3.音声
京美人三人娘が唄う京都の通り名の唄(京都修学旅行ワンダーランド)
地元の旅館関係者団体である、近畿日本ツーリスト協定旅館ホテル連盟教育旅行部会京都地区会のサイトです。
「南北の通り名の唄」の「聞く」をクリックします。


京都数え歌(YouTube:bonten79488さんの投稿)
上記と同じ音源のようです。

寺御幸のわらべ歌(京都銀行のサイト)
「唄を聴く」をクリックします。クリックしても聞こえない場合はRealPlayer形式の音声ファイルを再生できるソフトが必要です。

5.通りの位置の地図
 以下が秀逸です。
京都通り名マップ(株式会社ジオセンスのサイト)
一覧で通り名を選ぶとGoogleMAPに表示されます。

6.参考
 全体の説明は以下が詳しいです。
京都市内の通り(wikipedia)

2011年7月2日土曜日

python:ログ出力(2)

ログ出力について、簡単なクラス化をしてみました。
python標準のロギング機能はバージョン2.3以降使用可能です。

#
# -*- coding:sjis -*-
#
import os,sys,logging

#ログ出力クラス
class LogW():
 """
 Properties:
  path: ログファイル名
  Logger:  ロガー(ログ割振り機構)
 Attention:
  最低メッセージレベル以上のメッセージをログや画面に出力する。
 """
 def __init__(self, sLog="", bDel=True, bLogLV=10, bGamenLV=20):
  """コンストラクタ
  Args:
   sLog: ログファイルフルパス。未指定時はソース".py"→".log"
   bDel: 初期既存時削除か(bool)
   bLogLV: ログファイル出力対象の最低メッセージレベル
   bGamenLV: 画面表示対象の最低メッセージレベル
  Attention:
   レベ:0=NOTSET,10=DEBUG,20=INFO,30=WARNING,40=ERROR,50=CRITICAL
  """
  #ログファイル名
  if sLog: self.path = sLog
  else: self.path = sys.argv[0][:-3]+".log" #".py"→".log"
  if bDel and os.path.isfile(self.path): os.remove(self.path)
  #レベル名称の変更
  for level, name in zip([10,20,30,40],["_","I","W","E"]):
   logging.addLevelName(level, name)
  #ロガー(ログ割振り機構)
  self.Logger = logging.getLogger("")
  #ログファイルのハンドラー
  self.logfilehdlr = logging.FileHandler(self.path)
  self.Logger.addHandler(self.logfilehdlr)
  #画面のハンドラー
  self.consolehdlr = logging.StreamHandler()
  self.Logger.addHandler(self.consolehdlr)
  #ルートロガーは全メッセージが通るようにしておく
  logging.root.setLevel(logging.NOTSET)
  #出力レベルの設定
  self.setlevel(bLogLV, bGamenLV)

 #デストラクタ
 def __del__(self):
  self = None

 def setformat(self, T=True, V=False):
  """メッセージ書式の設定
  Args:
   T: 日時出力(bool)
   V: レベル名称出力(bool)
  """
  s = ""
  if T: s = "%(asctime)s "
  if V: s+= "%(levelname)s "
  s+= "%(message)s"
  formatter = logging.Formatter(s, "%Y/%m/%d %H:%M:%S")
  self.logfilehdlr.setFormatter(formatter)
  self.consolehdlr.setFormatter(formatter)

 def setlevel(self, iLogV=10, iGamenV=20):
  """出力レベルの設定
  Args:
   iLogV: ログファイル出力対象の最低メッセージレベル
   iGamenV: 画面表示対象の最低メッセージレベル
  Attention:
   レベ:0=NOTSET,10=DEBUG,20=INFO,30=WARNING,40=ERROR,50=CRITICAL
  """
  self.logfilehdlr.setLevel(iLogV)
  self.consolehdlr.setLevel(iGamenV)

 def I(self, msg="", T=True, V=False, G=True, L=True):
  """情報レベルメッセージの出力
  Args:
   msg: メッセージ
   T: 日時出力(bool)
   V: レベル名称出力(bool)
   G: 画面出力(bool)
   L: ログ出力(bool)
  """
  if not G: self.setlevel(iGamenV=100) #画面出力可否
  if not L: self.setlevel(iLogV=100)
  self.setformat(T, V)
  self.Logger.info(msg)
  self.setlevel() #画面出力可否、ログ出力可否をクリア

if __name__=="__main__":
 log = LogW()
 log.I("a:日時出力、ログ抑止、画面出力",L=False)
 log.I("b:日時出力、ログ出力、画面抑止",G=False)
 log.I("c:日時抑止、ログ出力、画面出力",T=False)
 log.I("d:日時出力、ログ出力、画面出力")
 log.setformat(V=True) #レベル名称出力可
 log.Logger.info("情報レベル")
 log.Logger.warning("警告レベル")
 log = None

----------

結果

○画面(標準出力)
ケースa、c、dを出力。

2011/07/02 07:45:27 a:日時出力、ログ抑止、画面出力
c:日時抑止、ログ出力、画面出力
2011/07/02 07:45:27 d:日時出力、ログ出力、画面出力
2011/07/02 07:45:27 I 情報レベル
2011/07/02 07:45:27 W 警告レベル



○ログファイル
ケースb、c、dを出力。2011/07/02 07:45:27 b:日時出力、ログ出力、画面抑止
c:日時抑止、ログ出力、画面出力
2011/07/02 07:45:27 d:日時出力、ログ出力、画面出力
2011/07/02 07:45:27 I 情報レベル
2011/07/02 07:45:27 W 警告レベル


なお、関係する記事は以下です。
python:ログ出力

2011年6月19日日曜日

京都市の通り名住所(2) 東西の通り

今回は京都の通り名です。
市内中心部の主だった通り名は、「わらべ歌」になっていますので、このわらべ歌について書きます。(なお、わらべ歌にない通り名でも住所表記に使います)

京都の通りは、東西の通りと南北の通りがあり、それぞれにわらべ歌があります。
今回は東西の通り名のわらべ歌です。曲名は歌詞の出だしに基づいて、丸竹夷(まるたけえびす)と通称されています。多少異なる歌詞も伝わっています。
北から順に歌っていきます。

1.歌詞
まる たけ えびす に おし おいけ
あね さん ろっかく たこ にしき
し あや ぶっ たか まつ まん ごじょう
せきだちゃらちゃら うおのたな
ろくじょう ひっちょう通り過ぎ
はっちょう越えれば とうじみち
くじょうおおじで とどめさす

2.実際の通り名
丸太町通り(まるたまちどおり)
竹屋町通り(たけやまちどおり)
夷川通り (えびすがわどおり)
二条通り (にじょうどおり)
押小路通り(おしこうじどおり)
御池通り (おいけどおり)
姉小路通り(あねやこうじどおり)
三条通り (さんじょうどおり)
六角通り (ろっかくどおり)
蛸薬師通り(たこやくしどおり)
錦小路通り(にしきこうじどおり)
四条通り (しじょうどおり)
綾小路通り(あやのこうじどおり)
仏光寺通り(ぶっこうじどおり)
高辻通り (たかつじどおり)
松原通り (まつばらどおり)
万寿寺通り(まんじゅじどおり)
五条通り (ごじょうどおり)
雪駄屋町通り(せきだやまちどおり) 現.楊梅通り(ようばいどおり)
魚の棚通り(うおのたなどおり)
六条通り (ろくじょうどおり)
七条通り (しちじょうどおり) 歌詞では「ひっちょう」
八条通り (はちじょうどおり) 歌詞では「はっちょう」
東寺道  (とおじみち)
九条通り (くじょうどおり) 歌詞では「九条大路」

3.音声
京美人三人娘が唄う京都の通り名の唄(京都修学旅行ワンダーランド)
 地元の旅館関係者団体である、近畿日本ツーリスト協定旅館ホテル連盟教育旅行部会京都地区会のサイトです。 「東西の通り名の唄」の「聞く」をクリックします。

4.別の歌詞
別の歌詞として、六条通り以降が以下のようになっているものも伝わっています。

ろくじょう さんてつ とおりすぎ
ひっちょう こえれば はっ くじょう
じゅうじょう とうじで とどめさす

この歌詞は最初の掲載した歌詞よりも広く伝わっているようですが、以下の2点の実態と合いません。
・塩小路通り(歌詞では「さんてつ」三哲通り)と七条通り(歌詞では「ひっちょう」)の順番が実際と逆です。
・東寺(世界遺産の寺院)は九条通りの北側です。

音声
丸竹夷-京の通り名(YouTube:TerencaStumpさんの投稿)

5.通りの位置の地図
 以下が秀逸です。
京都通り名マップ(株式会社ジオセンスのサイト)
一覧で通り名を選ぶとGoogleMAPで太線表示されます。

6.参考
京都市内の通り名の全体説明は以下が詳しいです。
京都市内の通り(wikipedia)

南北の通り名はまた今度です。

2011年5月29日日曜日

京都市の通り名住所(1)

京都市内では通り名をつけて特定する住所表記が使われてきました。
この理由として以下の2つを考えています。


・京都市中心部は通りが東西と南北にまっすぐに通っていることから、どのあたりかわかりやすくするため。
・同名の大字が複数あるケースが多くあり、それを特定するため。

通り名住所という表記方法が先で、これがあるから同名大字が複数存在しても困らないのかもしれません。

例えば、日本郵便の京都市中京区(なかぎょうく)のページでは、中京区内に「油屋町」として別々に2つの郵便番号(604-8063、604-8103)が割り当てられていて、それぞれが同名ながら別の大字として存在することを示しています。

では通り名住所の表記方法はどうなっているかと言うと、通り名2つで交差点を特定し、この交差点から大字まで道案内する要領でたどっていく、ということになっています。

例)京都市役所
京都市 中京区 寺町通御池上る 上本能寺前町 488番地


構造はこのようになります。
住所構造:案内文言+大字+番地
(上記のうち、)案内文言:通り名1+通り名2+方向


京都市役所の住所例ではこのようになります。
通り名:寺町通り、御池(通り)
方向 :上る


最初の2つの通り名で「交差点」を示します。
例では寺町通りと御池通りの交差点で、これが道案内の基点になります。

なお、住所地にある建物が面する通りを、基本的に1つ目の通り名にします。
また、2つ目の通り名は、末尾の「通り」という文字を省略する習慣です。

次に方向です。
東:東入る、東入(ヒガシイル)
西:西入る、西入(ニシイル)
南:下る(サガル)
北:上る(アガル)


このうち、「上る」「下る」の読み方は注意が必要です。
文部科学省が指定した表記と読みの組み合わせは、
上がる-アガル、上る-ノボル
下がる-サガル、下る-クダル
ですが、京都市内ではこのルールは通用せず、フリガナの「が」を省略します。

こうしていよいよ大字名になりますので、住所例の場合、「寺町通りと御池通りの交差点」から「北」に進んだところにある「上本能寺前町」ということになります。
なお、「北に進んだところ」とはその周辺のことであり、最終地点が通りの右側か左側かはわかりません。
京都市内は「両側町(りょうがわちょう)」と言って、同じ通りの両側の地域が一つの「町」を形成してきた歴史がありますので、この表記が適していたと思われます。

京都市役所の場合は、案内文言の示す領域のうち、東側にありました。



大きな地図で見る
 

京都市役所は「寺町通り」「御池通り」の他に、「河原町通り」「押小路通り」にも面しているので、別の通り名住所の表記も可能です。

このあたりのことがよくまとまっているサイトを紹介しておきます。
ジオどす 京の通り名

2011年5月6日金曜日

python:100マスゲーム

1から100までの数字を1つずつ縦横10×10のマス目にランダムに書いたものを用意します。
そして、1から小さい順に消していき全部消すのにかかる時間を競います。
いわゆる、頭の体操の定番です。


私は最初8分もかかりましたがだんだんタイムを縮め6分でできました。
小中学生だと5分もかからないようです。
似たようなゲームとしては「Count Touch」「数字順探し」などがネット上にあり、マス目でなかったり、制限時間があったり、数字が100個もなかったり、値にマイナス値があったり、といったバリエーションがあります。
「小さい数字を順に探す」などでネット検索するといくつもひっかかります。

さて、このゲームの用紙を作るところをpythonで作ってみました。
ロジックは以下のとおりです。
1から100の連番とこれに対応した乱数の組を発生させます。
この組を乱数の昇順にソートすることでシャッフルします。
シャッフルした組の連番を10個ずつ10行のcsvファイルに出力します。


ここまでをpythonで作成し、この出力csvファイルを表計算ソフトで開いて枠線やフォントサイズを整えて印刷します。
「シャッフルした1から100までの連番の10個ずつ10行のcsvファイル」作成プログラムは以下のとおりです。


# -*- coding: shift_jis -*-
#
# 100masu.py
#
import os,sys,random

def Make100masu(n):
 """ 100マス表作成
 1~100までの数字をすべて1つずつ使用し、
 10行10列にランダムに配置したcsvファイルを作成する。
 args:
  n: 出力ファイル名に付ける番号
 """
 #出力先フォルダ:このスクリプトと同じフォルダ
 sOtFdr = os.path.dirname(sys.argv[0])
 #出力ファイル名:「100masuXX.csv」
 sOt = os.path.join(sOtFdr, "100masu"+str(n).zfill(2)+".csv")
 #出力ファイル既存時は削除しておく
 if os.path.isfile(sOt): os.remove(sOt)

 #[乱数値、連番(1~100)]を要素とするリストを作成
 L0 = [[random.random(),i+1] for i in xrange(100)]

 #乱数値>連番の優先順位で並び替え
 L1 = sorted(L0)

 #出力ファイルを書込み用に開く
 f = open(sOt, "w")
 #100の配列要素を10行10列に出力
 for i in xrange(10): #行番号
  for j in xrange(10): #列番号
   #要素のうち連番を取り出し文字型に変えて出力する。
   f.write(str(L1[i*10+j][1]))
   #要素9個までは半角カンマ、10個目は行末文字を出力する。
   f.write({True:",", False:"\n"}[j<9])
 f.close()
 return None

if __name__=="__main__":
 #とりあえず10個作成します。
 for i in xrange(10):
  Make100masu(i+1)



・random.random()
 乱数の発生。細かい指定もできるが、当プログラムではソートキーにするだけなので特に指定なしで実行する。
・for i in xrange(100):
 0~99までの100個の数字を順に発生させる。
 range関数は発生させる値をメモリーに展開するが、xrange関数はメモリー展開しないのでメモリーを節約できる。当プログラムの100程度ならばどちらでも大差ない。
・{True:",", False:"\n"}[j<9]

 {}内は辞書型(連想配列)で、直後の[]内の式の値をキーにして対応する値を返します。j<9ならばTrueとなり「、」が返り、j≧9ならばFalseとなり「\n」を返します。