質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

769閲覧

Swiftで、読み込んだgpxファイルの中から、文字列(Stringに格納されている)の位置情報(name, lat, lon)のセット(複数)を抽出する方法が分かりません。

REPSOLCRF

総合スコア14

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2019/10/01 11:16

Swiftで、読み込んだgpxファイルの中から、位置情報(name, lat, lon)のセット(複数)を抽出する方法が分かりません。

■Swiftコード(一部抜粋)
if( FileManager.default.fileExists( atPath: fullpath ) ) {

print("ファイルあり", fullpath) do { let text = try String(contentsOfFile: fullpath, encoding: String.Encoding.utf8) //fileの中身を表示 print(text)

■gpxの内容は以下のようになっていますが(不要な文字列が他にも多くあります)、
必要なデータは lat=" ", long=" ", <name> </name>の各表示項目で挟まれた箇所になります(太字箇所)。

gpxファイルの内容(上記print(text)の出力内容。一部抜粋)

<wpt lat="**33.561051953583956**" lon="**130.300862174481153**"> <time>2019-09-15T00:21:09Z</time> <name>**022**</name> <sym>Flag, Blue</sym> <type>user</type> <extensions> <gpxx:WaypointExtension> <gpxx:DisplayMode>SymbolAndName</gpxx:DisplayMode> </gpxx:WaypointExtension> <wptx1:WaypointExtension> <wptx1:DisplayMode>SymbolAndName</wptx1:DisplayMode> </wptx1:WaypointExtension> <ctx:CreationTimeExtension> <ctx:CreationTime>2019-09-15T00:21:09Z</ctx:CreationTime> </ctx:CreationTimeExtension> </extensions> </wpt> <wpt lat="**33.558126669377089**" lon="**130.307747405022383**"> <time>2019-09-15T00:22:44Z</time> <name>**023**</name> <sym>Flag, Blue</sym> <type>user</type> <extensions> <gpxx:WaypointExtension> <gpxx:DisplayMode>SymbolAndName</gpxx:DisplayMode> </gpxx:WaypointExtension> <wptx1:WaypointExtension> <wptx1:DisplayMode>SymbolAndName</wptx1:DisplayMode> </wptx1:WaypointExtension> <ctx:CreationTimeExtension> <ctx:CreationTime>2019-09-15T00:22:44Z</ctx:CreationTime> </ctx:CreationTimeExtension> </extensions> </wpt>

■最終的には
[["wpt1", 33.56, 130.3], ["wpt2", 33.57, 130.31]]のように、配列に格納したいと考えています。
下の方法で、データさえ抽出できれば、name, lat, lon を配列に順番に格納することができることを確認しています。
var hogeArray:[Any] = ["wpt1",33.56, 130.30]
var testArray:[Any] = ["wpt2",33.57, 130.31]

var array3:[[Any]] = [] array3 += [hogeArray, testArray] print(array3)

出力結果
[["wpt1", 33.56, 130.3], ["wpt2", 33.57, 130.31]]

方法をご存知の方がいらっしゃいましたら、ご教示いただけますと助かります。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ライブラリCoreGPXを導入したところ、解決しました。
https://cocoapods.org/pods/CoreGPX

設定の参考
https://codezine.jp/article/detail/10677

使用する場合は、import CoreGPX の一文を忘れないようにしてください。
ライブラリの使用が初めてでしたのでimportを忘れていて、戸惑いました。

イメージ説明

投稿2019/10/01 19:34

REPSOLCRF

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問