みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[MacOSx10.9.5] FileMaker Ver:[13] ios9.3.2 FMG15.0.2
各地点から、30分以内の地点を一覧表示できる仕組みを作りたいと思っています。
例えば、No.001地点 (事務所) のレコードを開くと、事務所から30分以内の距離にあるレコードが一覧表示されるようにしたいのです。
NO.001(事務所)から、NO.002(飲食店A)の移動距離5分。
NO.001(事務所)から、NO.004(飲食店C)の移動距離25分。
No.002 の飲食店Aのレコードを開くと、そこから30分以内の距離にあるレコードが表示される、という仕組みです。
NO.002(飲食店A)から、NO.002(飲食店B)の移動距離25分。
これをFMGで検索で表示できるようにもしたいと思います。
例えば上記の30分を、[ 20 ] 分 などに変更して絞り込んで行きたいと思うのですが、可能なものでしょうか。
どなたか教えていただけると嬉しいです。よろしくお願いいたします。
Offline
単に、出来るか出来ないかと言われれば、出来ない事は無いと言えますが、
説明を読んだ私的印象では、出来ないと言わないまでも、現状スキルでは
諦めた方が良さそうな感じを受けます。
Offline
全レコードの組み合わせの移動距離を入力するテーブルを作っておけばできると思いますけど、そういう意味じゃないんだろうなあ。
距離の単位が分というのは変だし。
全レコードの組み合わせの移動距離を...
コレが、とんでもなく大変でしょうね。
思い当たる方法としては、「Google Maps API」を使えばできそうですね。
クローズドで使用する場合は、有償ライセンスが必要です。
Offline
「全レコードの組み合わせの移動距離を入力するテーブルを作って」は、新規地点を
追加する度に全地点の組合せ更新が発生し、運用管理面からも破綻するでしょう。
私的な思案としては、動的に距離計算を行い結果をポータル(ポータルフィルタ付)に表示するもの。
・全地点の住所からその緯度経度を割り出し保存しておく。(無償ジオメトリWebサービスを利用)
・四角い範囲内の緯度経度に照合するリレーションを組む。(四角い範囲は計算で動的に割り出す)
・関連レコードとの2点間距離を計算し、ポータルフィルタのフィルター条件(円形範囲)とする。(緯度経度から算出可能)
・このような計算負荷軽減の工夫をすれば、何とか実用になるかなぁ?...と。
・それでも、FMGoはデバイス性能やレコード件数にもよると思いますが、能力的に...どうかな???
Last edited by Hiro (2016-10-28 13:40:17)
Offline
Hiroさん、qb_dpさん、scripterさん、ご返信ありがとうございました。
みなさん、私の質問の仕方が悪くてすみません!!
移動距離の「分」も、飲食店情報を手入力する際、自分で入力します(動的でなく手入力です)
地図などで表示したり、位置情報を取得して距離計算をしたりすることは私には不可能なので、
せめて移動距離を分表示(またはkm表示)にし、
各レコードを開くと、そのレコードから30分以内(または〇〇Km以内)に行けるお店一覧が表示できるようにしたいのです。
NO.001(事務所) 事務所情報を入力する欄などがあり
移動時間(分)[ 30 ] 分以内圏内 ← 検索窓
[シリアル] [名称] [移動時間(分)] [ボタン]
NO.002 (飲食店A) 5 レコードへ
NO.004 (飲食店C) 25 レコードへ
としたいのですが、
ポータルフィルタで 移動時間(分) >30 なとすれば良いのでしょうか。
また、[ 30 ] 分以内、や20分以内など、fmgから検索ができるようにするにはどうすれば良いのでしょうか。
(私の実現したいことがうまくお伝えできなくてごめんなさい)
Hiroさんの考えて下さったことは、事務所の位置情報を基にして動的に求める、ということでしょうか。
素晴らしいことだと思います。折角考えて下さったのに本当に申し訳無いです(汗
私も自分でそういったことができるようになりたいです。
Offline
「移動距離の算出が必要ではないか?」というみなさんの指摘は、
beckさんの追加説明を踏まえても、やはり変わらないのではないでしょうか?
たとえば対象となるスポットがA,B,C,Dの4件の場合。
Aから見た距離(分)は、B,C,Dそれぞれが保持する必要があります。
同じくBから見た距離は、A,C,Dそれぞれが保持する必要があります。
同様にC,Dの場合を考え、重複する組み合わせを排除すると、総当りで6件の移動距離情報を保持する必要があります。
対象が4件ならたかだか6件で済みますが、もし100件だったとすれば、
必要な距離の組み合わせは4,950件にもなります。
用途が明確でないので件数の上限もわかりませんが、
データベースで扱いたいようなボリュームなら、やはり非現実的ではないでしょうか。
-
もしも距離(分)が算出できたとして、目的の機能をFileMakerに実装する方法について。
FileMakerでオーソドックスなのは、リレーションシップの不等号照合によるものです。
「スポット」テーブルと「移動距離」テーブル間で、
「スポットID」を"="で照合したリレーションシップを設定します。
そして、たとえば「スポット」テーブル側に「最大距離」などのグローバル格納フィールドを用意し、
この最大距離と、「移動距離」テーブルの距離フィールドを、"=>"で照合します。
これで、最大距離フィールドを変更すれば、それ以下のスポットのみ算出できます。
-
たとえば件数がかなり少ないなど、他にも条件が無い限り、
他の方の指摘通り、FileMakerというより、まずは移動距離の算出の問題です。
「移動距離」と仰ってますが、例示の単位が分なので、不動産情報や営業先など、
恐らく任意のスポット間の、道路などを用いた移動の所要時間を取り扱いたいのだと思います。
この場合、Hiroさんの挙げている距離計算では不適当で、
qb_dpさんの挙げているGoogle Maps APIなど、ナビゲーション系の仕組みを用いる必要があります。
たとえばGoogle Maps APIには「Directions API」があります。
■ Google Maps Directions API | Google Developers
https://developers.google.com/maps/docu … ons/?hl=ja
ただしqb_dpさんの仰る通り、オープンな利用でなければプレミアムプランの契約が必要で、
しかも無料で使える標準プランには制限もあります。
■ 価格とプラン | Google Maps API | Google Developers
https://developers.google.com/maps/pric … ans/?hl=ja
他にも幾つか同じような移動時間のAPIを提供しているサービスは存在しますが、
いずれも法人向けで、それなりの費用を求められそうです。
Google Maps Directions APIを使う場合、オープンな場に、
2点間の距離(分)だけ返すようなアプリケーションを設置しておき、
それをFileMakerから、スポットの追加の度にバッチで実行するなどすれば、ライセンス上可能は可能です。
honda 様
ご返信ありがとうございました。
> たとえば対象となるスポットがA,B,C,Dの4件の場合。
> Aから見た距離(分)は、B,C,Dそれぞれが保持する必要があります。
> 同じくBから見た距離は、A,C,Dそれぞれが保持する必要があります。
> 同様にC,Dの場合を考え、重複する組み合わせを排除すると、総当りで6件の移動距離情報を保持する必要があります。
ご指摘の通りです。
自分のやろうとしていることが理解出来ていませんでした。
お恥ずかしい限りです。
> 「移動距離」と仰ってますが、例示の単位が分なので、不動産情報や営業先など、
> 恐らく任意のスポット間の、道路などを用いた移動の所要時間を取り扱いたいのだと思います。
おっしゃる通りです。
私は野外の野生生物調査などを行っていて、調査現場間の距離が簡単に算出できたらいいな、と考えていました。
調査地点は少なくとも100地点はあり、今後も増えていく予定です。
例えば、作業時間が余ってしまった等の場合、「30分程度で移動できる場所」を探したいなと思っていたのです。
費用に関しては問題ないのですが、組み込む技術がないため、今回は諦めざるを得ません。
詳しくご教授いただき、本当にありがとうございます。
また一つ勉強になりました。
今後に生かしていきます。
Last edited by beck (2016-10-28 15:53:04)
Offline
皆さんの指摘が伝わって良かったです。
でも目的が分かったので、色々想像できます。
たとえば各地点を大まかなエリアに分ける、という代替案はいかがでしょうか。
100地点がそれぞれある程度の粒度のエリアに分かれていれば、
同一エリアを移動先候補として提示できます。
地点間距離よりは大雑把ですし、エリアをまたいだ移動など問題もありますが、
エリアの持たせ方次第で色々工夫もできます。
調べてみたら、緯度経度を用いて2点間の距離を算出するカスタム関数が公開されていました。
■ FileMaker Custom Function:DistanceBetweenPoints ( Lat1; Lon1; Lat2; Lon2; Units )
https://www.briandunning.com/cf/143
上記のページで言及はされていませんが、ヒュベニ式を使っているようです。
ざっと試した限り、精度の問題からある程度の誤差はありますが、
今回の目的には十分だと思います。
たとえば上で提示したエリアによる提示を「同一エリアの地点」、
そしてカスタム関数による算出を「直線距離で近い地点」として提示できると、
ソリューションとして実用的になりそうです。
恐らく屋外でFileMaker Goをご利用だと思いますが、
エリアでの算出は単なるリレーションで問題ありません。
直線距離の方は、カスタム関数による算出が可能なので、
総当りで距離レコードを事前作成しておくのも簡単です。
事前作成しておけば、Goでも十分な速度で動作する筈です。
直線距離なら http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0084 ここにもカスタム関数ありますね。
費用の問題がないのであれば、専用のサービスを使った方がよくないですか?
http://www.zenrin-datacom.net/business/ … index.html
SDKとかもあるようなので、専用アプリを業者に作ってもらうこともできるかと。
http://www.zenrin-datacom.net/business/ … index.html
あんなことやこんなことを出来たらいいなをお金が解決してくれそうです。
Pages: 1
[ Generated in 0.018 seconds, 7 queries executed - Memory usage: 554.41 KiB (Peak: 575.31 KiB) ]