「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.17
XML
カテゴリ: C#.NET


地図情報を管理するための便利なクラスの一例として、緯度と経度の情報を持つ地点 (Point) クラスを作成することができます。以下に、C# のソースコードを示します。


```csharp

public class GeoPoint

{

    public double Latitude { get; set; }  // 緯度

    public double Longitude { get; set; } // 経度


    public GeoPoint(double latitude, double longitude)

    {

        Latitude = latitude;

        Longitude = longitude;

    }


    // 二点間の距離をメートルで計算するメソッド

    public double DistanceTo(GeoPoint otherPoint)

    {

        const double EarthRadius = 6371000; // 地球の半径 (メートル)


        double lat1 = ToRadians(Latitude);

        double lon1 = ToRadians(Longitude);

        double lat2 = ToRadians(otherPoint.Latitude);

        double lon2 = ToRadians(otherPoint.Longitude);


        double dLat = lat2 - lat1;

        double dLon = lon2 - lon1;


        double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +

                   Math.Cos(lat1) * Math.Cos(lat2) *

                   Math.Sin(dLon / 2) * Math.Sin(dLon / 2);

        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));


        return EarthRadius * c;

    }


    private static double ToRadians(double angle)

    {

        return angle * (Math.PI / 180);

    }

}

```


この `GeoPoint` クラスでは、緯度と経度の情報を持ち、二点間の距離を計算するための `DistanceTo` メソッドが実装されています。これを使って地図上の点の位置関係を管理できます。


ただし、実際の地図情報を管理する場合には、より複雑なデータ構造や地理情報システム (GIS) ライブラリが必要になる場合があります。GIS ライブラリには、GeoJSON や Shapefile などの地理データ形式の読み込み、地図上の領域のクエリ、地図上のパスの描画などの機能が含まれています。GIS ライブラリの中には、DotSpatial や NetTopologySuite などがあります。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.17 09:51:41


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: