総務省基準地域メッシュ(3次メッシュ)から地理院地図を表示するリンクをつくるエクセル関数
背景
総務省基準地域メッシュ(3次メッシュ)を含むエクセルファイルにおいて、そのメッシュを表示したいことがあるので、地理院地図で該当メッシュを表示するリンクをつくるエクセル関数式を作った。
エクセル関数式
下記はA2セルにメッシュコード8桁が記載されている際のもの。
=HYPERLINK("https://maps.gsi.go.jp/#14/"&(INT($A2/1000000)*0.66667 + (MOD(INT($A2/1000),10)*10 + MOD(INT($A2/10),10) +0.5)*0.0083333)&"/"&(MOD(INT($A2/10000),100) + 100 + (MOD(INT($A2/100),10)*10 + MOD($A2,10) +0.5) *0.0125)&"/&base=std&ls=std%7Cchiikimesh","→地理院地図")
Windows10がびっくりするほど重くなった
しばらく長い間Windows10を使い続けていたが、ここ数か月ほど前から信じられないくらい重くなっていた。具体的には、ノートPCをスリープから復帰させると10分以上も重くてまともに動かないのである。
タスクマネージャーで様子を見てみると、CPUではなく常にディスクアクセスが100%に達している状況。ディスクアクセスの頻繁なプロセスを探してみるとTrend Micro Anti-Malware Solution Platformが...これがうわさの「重いウイルスバスターか」と思い、あれこれとチューニングをしてみる。が、何をしてもディスクアクセス100%が解消せずに、ウイルスバスターアンインストールしかないのかと思うところ。
ところが、もう少しタスクマネージャーで様子をみてみると、ウイルスバスターは数MB/秒程度しか利用しておらず、圧倒的ともいえない。ひょっとして見落としているのでは?とぐるっとタスクマネージャーを見渡すと数10MB/秒も食っているwsappxなるプロセスがあるではないか。
これ↑は直した後なので使用量も減っているし、なぜか内数のプロセスが1個減っている。
これをググるとどうもWindows10のストアの自動更新とのこと。プロセスレベルでの停止はOSプロセスということもありほぼ無理であるが、自動更新を停止するのは簡単でストアを立ち上げ検索バー横の人間マークを押すとメニューが出るので、これから設定を選ぶだけ。
すると、「アプリを自動的に更新」があるのでこれをオフにする。
これだけで、次回以降はすっきり起動するようになった。なんで自動更新が重いのかはよくわからないが、ノートPCには不要な機能では...。Windows10は意味の分からないところで難しい。
1秒前をオリジナル書式で計算
背景
ただ単に1秒前を求めようと思ったのだが、オリジナル書式で表記させるのはそんなにシンプルでなかったので載せる。
rubyコード
datetime_formatの書式に従い、degree_sec秒だけ前の時刻をtarget_datetimeに格納します。
require 'date'
source_datetime='2016-12-06 12:00:00'datetime_format = '%Y-%m-%d %H:%M:%S'
degree_sec = 1
target_datetime_tmp = DateTime.strptime(source_datetime,datetime_format) - Rational(degree_sec, 24*60*60)
target_datetime=target_datetime_tmp.strftime(datetime_format)
総務省基準地域メッシュ(3次メッシュ)の求め方 その2
背景
総務省が定めた「基準地域メッシュ」なるものがあるのだが、いろいろとあるので、前回の続き。
新たなバグの原因
前回は10進数で緯度経度を浮動小数としての表記だった場合の計算方法だったが、緯度経度の資料原本が度分秒の小数点以下60進法表記だと、10進法変換の際に60の割り算がありメッシュコードを求める計算に3/2倍があることから、不要な3割り算と3掛け算を行うことによる誤差が発生する。
対処済みrubyコード
なので、その点を注意してコーディングする。大して桁がないので整数演算することにする。
def dms2mesh3( dms_lat_s, dms_lon_s )
#dms_lat_sとdms_lon_sは度分秒の文字列として"ddd.mmss"の形式で処理。
lat_deg_s,lat_ms_s = dms_lat_s.split(".")
lat_ms_s = lat_ms_s[0,4] + "0" * (lat_ms_s[0,4].length-4)
dms_lat=lat_deg_s.to_i * 3600 + (lat_ms_s[0,2].to_i) * 60 + (lat_ms_s[2,2].to_i)
lon_deg_s,lon_ms_s = dms_lon_s.split(".")
lon_ms_s = lon_ms_s[0,4] + "0" * (lon_ms_s[0,4].length-4)
ms_lon=(lon_ms_s[0,2].to_i) * 60 + (lon_ms_s[2,2].to_i)
p=dms_lat / 2400
q=(dms_lat - p * 2400) / 300
r=((dms_lat - p * 2400) - q * 300) / 30
u=lon_deg_s.to_i - 100
v=ms_lon / 450
w=(ms_lon - v * 450) / 45
return sprintf("%02d%02d%01d%01d%01d%01d",p,u,q,v,r,w )
end
とまあこんな感じ。
総務省基準地域メッシュ(3次メッシュ)の求め方 その1
背景
総務省が定めた「基準地域メッシュ」なるものがあり、概ね1kmメッシュとなっていることから、各種統計で使われる地域メッシュコードとして用いられている。
当然、緯度経度から求める公式があるのだが、仕事で使っているコードにバグを見つけたので、まとめておく。
バグの原因
理由は単純で、緯度経度を浮動小数として計算していくと、四則演算の途中で誤差が発生し、最後に切り捨て(int。rubyだと .to_i)する際に微妙に足りなくて、一つ手前の格子番号が割り当てられてしまう。
対処済みrubyコード
なので、その点を注意してコーディングする。大して桁がないので整数演算することにする。
def mesh3( lat, lon )
#latとlonは、緯度経度を少数で表したもの。小数点以下4桁程度の精度を想定。
epsilon=1e-8
lat_i = (lat.to_f * 10000 +epsilon).to_i
lon_i = ((lon.to_f-100) * 10000 +epsilon).to_i
p=(lat_i*1.5).to_i / 10000
q=((lat_i*1.5).to_i % 10000) * 8 / 10000
r=((lat_i*1.5).to_i % 10000) * 8 % 10000 / 1000
u=lon_i / 10000
v=(lon_i % 10000) * 8 / 10000
w=((lon_i % 10000) * 8 % 10000 ) / 1000
return sprintf("%02d%02d%01d%01d%01d%01d",p,u,q,v,r,w )
end
こんな感じ。
iPod化したiPhoneは復活できなかった
復活させて約1週間、やっぱり死にました。合掌。
で、キャリアー保証がない端末の修理方法が全然記載がないので、これまたまとめてみる。
- 配送による修理とApple正規サービスプロバイダなどが選べる。直接対応ができるのと、地元にあるのでカメラのキタムラでやっているApple正規サービスプロバイダにしてみる。
- 現地に行ったところ、初見でやはり修理が必要そうだが、予約をするかひたすら本日の予約キャンセル待ち的に待ってもらうかのいずれかとのことで、当日は時間がなかったので、予約することとした。予約は店舗ではなく、Appleのページから予約する。
- 予約した数日後に再度来訪。
- 状況を説明する。iTuneを用いたレストアまでやったが復活しない旨説明。
- 再起動して現象が再現することを確認した。
- Simを正常なものと入れ替えても再現することを確認した。
- 最後に、店の裏でよくわからない確認をした様相。
- 以上により、保証対象外による修理しか対応がないということとなった。修理は
https://support.apple.com/ja-jp/iphone/repair/service/pricing にある価格表の「保証対象外修理」の値段。iPhone5sなので26,800円。
- で、修理とは名ばかりの新品同様品との交換をその場でやって修理終了。
- 「新品なんですか?」と聞いても「新品同様品」とのこと。「リビルド品なんですか?」と聞いても「新品同様品」とのこと。そう答えるように仕込まれている様子だが、口ぶり的には新品っぽかった。
- とりあえず、基板とバッテリーは新品であるとのこと。ケースだけ再利用なのかなぁ。
- 少し雑談したが、「普通に修理できそうな故障状態」はこの方法で修理という名の交換を行うとのこと。例えば、車に踏まれたとかビルから落としたとか、真っ二つに分かれたとか、液晶と基板が泣き別れたとか、「修理」という用語で対応できなさそうな「破損」状態は全損として「修理」対応はできずに「新品と交換」価格で実施とのこと。値段は定価よりちょっと安いぐらいだったかな。
- 一応、保証3か月付き。
ということで、新品同様品と交換してきた。
まとめると、
- 約3万円程度で、
- 正規修理サービスプロバイダへ持ち込みし、在庫があれば、
- その場で新品同様品と交換、
- 3か月保証付き
で、事実上、iPhoneが延命できます。
OSは最新のものが利用できるし、使っている端末のハードウェアにこだわりがあるなら、結構お得なサービスだと思いますが、どうでしょうかね。
iPod化したiPhoneを復活させた
最近iPhone 5sのキャリア電波の入りが悪い...と思っていたら突如常時「圏外」になってしまった。こうなると、iPhoneは単なる重いiPod。ハード障害を覚悟していたが、ネットに書いてあったことを一通り試したところ、悪あがきで復活した。
状況
- キャリアーの電波がすごく不安定で、常時「圏外」となるか、まれにつながる程度。
- wifiはつながる。
- その他、動作に異常は見られない。
やってみたこと
上から順に実施した。
- 機内モードに一度してみる。
→今まではうまくいったが今回はダメ。 - (強制)再起動してみる。ホームボタンとスリープボタン同時長押し
→これも今まではうまくいったが今回はダメ。 - SIMの接触不良を疑い、SIMの出し入れ。
→抜き差しのほか、端子部分を拭ってみたりしたがダメ。 - APN構成ファイルの再インストール
うちはiijmioなのでHPを参照しつつ実施。http://techlog.iij.ad.jp/archives/2011
→一時的に復活したが再度沈黙。すごく期待したのに。 - ネットワークのリセット
- これもiijmioのHPを参照。[設定]->[一般]->[リセット]->[ネットワーク設定をリセット]
→効果なし。ちなみにやるとwifiの設定履歴を忘れるので注意。キャリアーがつながらないから実施しているのでこれでwifi設定を復活できないと詰む。 - 初期化。すべてのコンテンツと設定を消去
これもiijmioのHPを参照。
1.戻せるように、まずはiTuneでバックアップを作成。
2.[設定]->[iCloud]->[iPhoneを探す]をOFF(OFFにしないといろんな処理が途中で止まる)
3.[設定]->[一般]->[リセット]-.[すべてのコンテンツと設定を消去]でiPhoneの設定を消去。
4.起動後になんとなく初期設定をして利用開始
→一時的に復活して喜んでいたら、再度「圏外」化。アプリもろくに入れていなかったので、屋外じゃ本気で文鎮化してしまった。 - 出荷時の設定に復元する。レストア。
ネットで探したらappleのページにあった。https://support.apple.com/ja-jp/HT201252
1.iTuneを立ち上げてiPhoneをケーブルで接続。
2.iTuneの「iPhoneを復元」を選択。あとは指示に従う。
→これまた一時的に復旧したが、再度「圏外」化。
→もうハードウェア障害を覚悟して最後の手段をとってみた。 - DFUモード
apple公式の記載はなし。自分自身、よくこのモードをネットで見つけたと思う。詳細はASCIIのページでも。https://weekly.ascii.jp/elem/000/000/205/205944/
1.iTuneを立ち上げてiPhoneをケーブルで接続。
2.iPhoneのホームボタンとスリープボタンを同時長押し
3.iPhoneの電源が切れたらホームボタンだけ押し続ける
4.iTune側に「リカバリーモード」の特別な操作が始まる(詳細は他の記事参照)
→無事復活!!
→しかもリカバリーまでするので、バックアップ時点の環境に普通に戻った。
まとめ
- 動作が不安定、まれに復活というときは案外ソフト(ファーム)の問題である可能性あり。
- なのでファームリセット(Device Firmware Upgradeの略だそうだ)すれば直る可能性大!
- ちなみにリカバリー系作業は「iPhoneを探す」をOFFにしないと途中で引っかかるので注意。
キーワードは「DFUモード」ですな。