Day: April 21, 2015

Swift:浮動小数点(Float / Double)をString変換

緯度・経度の変換処理のメモです。留意点は、Floatではなく、Doubleを使うこと。

緯度をDoubleにして、一の位以上をIntで取り出す。

var wGPS:Double = wgps!.objectForKey(kCGImagePropertyGPSLatitude) as! Float//緯度をDoubleに変換
var wNo1:Int = Int(wGPS) //DoubleをIntに変換(整数部分抽出)

Doubleを文字列に変換するときの指定と変換結果

let num = 1.23456
var wstring: String
wstring = NSString(format: “%.3f”, num) as String// 1.235
println(“wstring 1=\(wstring)”)
wstring = NSString(format: “%.3F”, num) as String// 1.235
println(“wstring 2=\(wstring)”)
wstring = NSString(format: “%.3e”, num) as String// 1.235e+00
println(“wstring 3=\(wstring)”)
wstring = NSString(format: “%.3E”, num) as String// 1.235E+00
println(“wstring 4=\(wstring)”)
wstring = NSString(format: “%.3g”, num) as String// 1.23
println(“wstring 5=\(wstring)”)
wstring = NSString(format: “%.3G”, num) as String// 1.23
println(“wstring 6=\(wstring)”)

注1:format: “%.3f”場合、小数点以下を3桁表示する。

注2:format: “%.3f”の場合、少数4桁目で四捨五入。

返り値が複数ある場合の呼び出し方とメソッドの書き方

var wStringGPS      = execGPSto60(filepath)
println(“wDate=\(wStringGPS.pLatitude)”)  
println(“wDate=\(wStringGPS.pLongitude)”)   

func execGPSto60(pFilepath:String) -> (pLatitude:String, pLongitude:String) {

return (wLatitude, wLongitude)
}

便利にMac:A-GPS (Assisted GPS)

今朝、ニコン一眼レフカメラD5300のA-GPS対応には、ヘェ〜と感心しました。

GarminくらいGPSの立ち上がりが早く、正確であれば安心して使えます。これに対して、スマートフォンや市販GPSの精度は不満が残ります。カメラのGPSについて調べていると、立ち上がりの遅さへの不満をよく見かけます。

実際、カメラの電源を入れた直後は、よく位置情報が入っていません。

その点、今朝、ニコンD5300は光って見えました。衛生から位置を捉えるだけでなく、携帯電話の基地局を使ったA-GPSも利用できるからです。14日ごとにダウンロードして更新しないといけないようですが、これはいいですね。

ところで、「精度の問題から、A-GPSと衛生GPSで同じ場所で撮影したのに場所が違う」というようなことは起きないようになっているのでしょうね?

最近、一眼レフカメラについて調べています。候補としてニコンD5300とキヤノンEOS Kiss X7を検討中です。レンズは18-55mm f/3.5-5.6G。コストパフォーマンスはほぼ同等です。一方はGPS標準装備、他方はオプションですが、コストは同じです(価格.com、D3300 vs EOS Kiss X7 比較参照)

  • 39点AF vs. 9点AF
  • GPS  vs. 無
  • Wi-Fi vs. 無
  • 動画フルHD 60p vs. 動画フルHD 30p

Flickrで写真を眺めていると、小さい画像容量できれいにみせる画像処理技術の違いがあるのかなあ、と感じます。ニコンの方が絵的には好きなのですが、キヤノンの方が危なかしくない印象を受けます。取り込む画像容量が大きいと、最終的にはそのことが問題になるので、もう少し調査が必要です。

スクリーンショット 2015-04-21 07.46.56