C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

緯度経度に関して

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■103679 / inTopicNo.1)  緯度経度に関して
  
□投稿者/ yomi (1回)-(2025/05/20(Tue) 22:34:10)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっております。

質問です。
Windows10
VS2022
vb.net
フォームアプリケーション

@PCはWifiでインターネットに接続している状態。
ASystem.Device.Locationを使用し緯度経度を取得するプログラムを作成し、緯度経度は受信出来た。

BWifiを切り、PCをスマホ(Android)に接続(テザリング)しインターネットに接続できる状態。
C屋内外で同じアプリケーションで緯度経度を取得した。

AとCで受信した緯度経度の桁数が違うのはなぜでしょうか?
テザリングを行い受信した緯度経度の桁数が必ず少ない。なのでだいぶ位置がずれます。

※スマホのGoogleMapで現在位置を表示するとそんなにずれていません。

以上、お手数ですがよろしくお願いいたします。
引用返信 編集キー/
■103680 / inTopicNo.2)  Re[1]: 緯度経度に関して
□投稿者/ kiku (469回)-(2025/05/21(Wed) 09:07:30)
No103679 (yomi さん) に返信
> @PCはWifiでインターネットに接続している状態。
> ASystem.Device.Locationを使用し緯度経度を取得するプログラムを作成し、緯度経度は受信出来た。
> BWifiを切り、PCをスマホ(Android)に接続(テザリング)しインターネットに接続できる状態。
> C屋内外で同じアプリケーションで緯度経度を取得した。
> AとCで受信した緯度経度の桁数が違うのはなぜでしょうか?
> テザリングを行い受信した緯度経度の桁数が必ず少ない。なのでだいぶ位置がずれます。

位置情報の取得には下記2つがあります。
1.GPSを使ったもの
  精度が高い
2.基地局の位置を使ったもの
  基地局の数が少ないと精度が低い

今回はAの場合は精度が高く、
Cの場合には制度が低いと言われているので
Aが1に該当し、Cが2に該当するのではないかと
思われます。

Aは具体的にどんな機能を搭載した機器とWiFi接続しているのかが
明記していないため、わかりませんが、
Cについてはデザリングと言われているので
携帯の基地局の位置を取得しているのだと思います。
よって、2に該当すると思います。

引用返信 編集キー/
■103681 / inTopicNo.3)  Re[1]: 緯度経度に関して
□投稿者/ kiku (470回)-(2025/05/21(Wed) 09:13:01)
No103679 (yomi さん) に返信
> ※スマホのGoogleMapで現在位置を表示するとそんなにずれていません。

スマホのGoogleMapの場合、
アプリがスマホに搭載されているGPS情報を
取得しているのではないかと思われます。
携帯の基地局の情報も取得できるので
併用している可能性も高いです。
引用返信 編集キー/
■103682 / inTopicNo.4)  Re[2]: 緯度経度に関して
□投稿者/ yomi (2回)-(2025/05/21(Wed) 21:08:31)
kikuさん回答ありがとうございます。

まず、杜撰な検証で質問してすみません。

桁数の違いに関してはテザリングで行おうが、室内Wifiで行おうが同じプログラムで同じような桁数の緯度経度を受信し、
GoogleMapにプロットしたところ同じような位置(ちょっと違う)を指し示しました。プログラムはこれでいいのかな?

よって、
>AとCで受信した緯度経度の桁数が違うのはなぜでしょうか?
>テザリングを行い受信した緯度経度の桁数が必ず少ない。
は、そもそも間違っている。テザリングだから桁数が少ないということはない。

で、
>Cについてはデザリングと言われているので携帯の基地局の位置を取得しているのだと思います。
>よって、2に該当すると思います。
これが正しそう。基地局というのはそのへんの電信柱にあるのかな?

>Aは具体的にどんな機能を搭載した機器とWiFi接続しているのかが明記していないため
無線LANルータはヨドバシなどで購入した7000円程度の物を家庭内のネットワークに接続。
PCはGPS非搭載の一昔のノートです。

>スマホのGoogleMapの場合、アプリがスマホに搭載されているGPS情報を取得しているのではないかと思われます。
>携帯の基地局の情報も取得できるので併用している可能性も高いです。
バイクにスマホのgooglemapナビを使用しているのですが結構精度が高いように感じます。狙いはこの位置データなのかな?

System.Device.Locationを利用した自作プログラム⇔Win10のPC(sim無し、GPS等無し)⇔テザリング⇔スマホ(Android、GPS有)
上記環境でインターネットに接続出来る環境で、GoogleMapの精度で現在位置(緯度経度)を取得する事は可能でしょうか?
※不必要なものがあるかもしれません。

スマホの何かの設定だけでいけるのか?なんて考えていますがそのものずばりが見つからず困っています。

以上、お手数ですがよろしくお願いいたします。
引用返信 編集キー/
■103683 / inTopicNo.5)  Re[3]: 緯度経度に関して
□投稿者/ kiku (471回)-(2025/05/22(Thu) 08:50:35)
No103682 (yomi さん) に返信
> System.Device.Locationを利用した自作プログラム⇔Win10のPC(sim無し、GPS等無し)⇔テザリング⇔スマホ(Android、GPS有)
> 上記環境でインターネットに接続出来る環境で、GoogleMapの精度で現在位置(緯度経度)を取得する事は可能でしょうか?
> スマホの何かの設定だけでいけるのか?なんて考えていますがそのものずばりが見つからず困っています。

ご理解されているようにアプリで解決するものではありません。
現在スマホのデザリング機能は、GPSを利用しないようになっているのではと思います。
思いつく方法としては下記かと思います。
・スマホの設定を確認する。
・スマホのバージョンを上げてみる。
・メーカに問い合わせてみる。
・ぐぐる(GPSを有効化する方法など、いろいろ検索すると出てきます)

引用返信 編集キー/
■103684 / inTopicNo.6)  Re[4]: 緯度経度に関して
□投稿者/ yomi (4回)-(2025/05/22(Thu) 22:44:05)
kukiさん返信ありがとうございます。

大変参考になりました。

>ご理解されているようにアプリで解決するものではありません。
>現在スマホのデザリング機能は、GPSを利用しないようになっているのではと思います。
>思いつく方法としては下記かと思います。
>・スマホの設定を確認する。
>・スマホのバージョンを上げてみる。
>・メーカに問い合わせてみる。
>・ぐぐる(GPSを有効化する方法など、いろいろ検索すると出てきます)

当方Androidに関して無知な点、至らぬ点が大いにあります。
kukiさんの指摘、思いつく点、調査、検証がありますのでこれを今後繰り返してみます。

とりあえずこのスレは解決としますが、またご教授いただく所があると思います。

その時はまたスレを立てますのでよろしくお願いいたします。
引用返信 編集キー/
■103685 / inTopicNo.7)  Re[5]: 緯度経度に関して
□投稿者/ yomi (5回)-(2025/05/22(Thu) 22:45:52)
解決
解決済み
引用返信 編集キー/
■103687 / inTopicNo.8)  Re[1]: 緯度経度に関して
□投稿者/ WebSurfer (2951回)-(2025/05/23(Fri) 11:30:40)
No103679 (yomi さん) に返信

今更ながらのレスですが・・・

質問者さんがアプリを B の環境の時 Android が提供する位置情報を取得できるように作った
のでなければ (そういう作り方はしてないと想像してます)、

> @PCはWifiでインターネットに接続している状態。

は Wi-Fi の位置情報プロバイダから、

> BWifiを切り、PCをスマホ(Android)に接続(テザリング)しインターネットに接続できる状態。

は、Windows OS の「既定の位置」から緯度経度情報を取得したのではないかと思います。調
べてみてください。

Microsoft のドキュメントには "Location information may come from multiple providers,
such as GPS, Wi-Fi triangulation, and cell phone tower triangulation." と書いてあり
ますが、それらのプロバイダが使えない場合 (B の状態と同じだと思います)、Windows OS
の「既定の位置」から情報を取得できます。「既定の位置」について、詳しくは以下の記事を
見てください。

Windows 10/11で位置情報を扱う
https://ascii.jp/elem/000/004/098/4098249/

例えば、自宅を「既定の位置」に設定した場合、GPS も Wi-Fi もない Windows 10 PC を
LAN ケーブルでネットにつないだ環境で、GeoCoordinateWatcher クラスを使ったコード
で「既定の位置」に設定した自宅の緯度経度が得られます。
引用返信 編集キー/
■103691 / inTopicNo.9)  Re[2]: 緯度経度に関して
□投稿者/ WebSurfer (2952回)-(2025/05/24(Sat) 11:08:26)
自分が検証に使ったサンプルコードを載せておきます。

Wi-Fi が搭載された Windows 10 PC でも試してみました。

ネットに接続されているか否かは関係なく Wi-Fi が動いていれば PC が置いてある場所の
緯度経度データを取得できます。

毎回計測するようで結果は微妙に異なりますが、かなり精度の高い緯度経度を取得できま
した。

「既定の場所」を設定後 Wi-Fi をオフにして試すと、設定した「既定の場所」の緯度経度
が取得されます。

using System;
using System.Device.Location;

namespace GeoCoordinateWatcherSample
{
    internal class Program
    {
        static void Main(string[] args)
        {
            GetLocationProperty2();
        }

        static void GetLocationProperty2()
        {
            GeoCoordinateWatcher geoWatcher = new GeoCoordinateWatcher();
            Console.WriteLine($"Permission: {geoWatcher.Permission}, Status: {geoWatcher.Status}");

            geoWatcher.Start();

            while ((geoWatcher.Status != GeoPositionStatus.Ready) &&
                (geoWatcher.Permission != GeoPositionPermission.Denied))
            {
                System.Threading.Thread.Sleep(100);
            }

            if (geoWatcher.Permission == GeoPositionPermission.Denied)
            {
                Console.WriteLine($"Permission: {geoWatcher.Permission}, Status: {geoWatcher.Status}");
            }
            else
            {
                Console.WriteLine($"Permission: {geoWatcher.Permission}, Status: {geoWatcher.Status}");
                GeoCoordinate coord = geoWatcher.Position.Location;

                if (coord.IsUnknown != true)
                {
                    Console.WriteLine("Lat: {0}, Long: {1}",
                        coord.Latitude,
                        coord.Longitude);
                }
                else
                {
                    Console.WriteLine("Unknown latitude and longitude.");
                }
            }
        }
    }
}

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ