4

経度と緯度を使用して最寄りの空港を見つけるにはどうすればよいですか?

達成する特定のWebサービスとデータベースはありますか?

4

5 に答える 5

8

私が見つけたWebサービスの1つはairports.pidgets.comです。

これは例です:

XML形式 http://airports.pidgets.com/v1/airports?near=45.3515,9.3753

JSon形式 http://airports.pidgets.com/v1/airports?near=45.3515,9.3753&format=json

[編集]aviationweather.govで別のWebサービスを見つけました(XMLとCSVのみ)

http://aviationweather.gov/adds/dataserver_current/httpparam?dataSource=stations&requestType=retrieve&format=xml&radialDistance=20;9.3753,45.3515

両方のサイトから「静的」空港リストをダウンロードして、オフライン検索を実行できます。

よろしく

于 2014-02-26T17:32:01.547 に答える
0
  1. 空港の緯度と経度のフィールドを含むデータセットが必要です
  2. 以下にリンクされているページで概説されているように、大圏距離(GCD)の計算を使用します

GCDに関するウィキペディアの記事

さらに具体的なヘルプが必要な場合は、サンプルコードを提供するか、言語を指定してください

コード:

別のWebページから取得(現在は機能しておらず、 waybackmachineを使用しています)

using System;  
namespace HaversineFormula  
{  
    /// <summary>  
    /// The distance type to return the results in.  
    /// </summary>  
    public enum DistanceType { Miles, Kilometers };  
    /// <summary>  
    /// Specifies a Latitude / Longitude point.  
    /// </summary>  
    public struct Position  
    {  
        public double Latitude;  
        public double Longitude;  
    }  
    class Haversine  
    {  
        /// <summary>  
        /// Returns the distance in miles or kilometers of any two  
        /// latitude / longitude points.  
        /// </summary>  
        /// <param name=”pos1″&gt;</param>  
        /// <param name=”pos2″&gt;</param>  
        /// <param name=”type”&gt;</param>  
        /// <returns></returns>  
        public double Distance(Position pos1, Position pos2, DistanceType type)  
        {  
            double R = (type == DistanceType.Miles) ? 3960 : 6371;  
            double dLat = this.toRadian(pos2.Latitude - pos1.Latitude);  
            double dLon = this.toRadian(pos2.Longitude - pos1.Longitude);  
            double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +  
                Math.Cos(this.toRadian(pos1.Latitude)) * Math.Cos(this.toRadian(pos2.Latitude)) *  
                Math.Sin(dLon / 2) * Math.Sin(dLon / 2);  
            double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)));  
            double d = R * c;  
            return d;  
        }  
        /// <summary>  
        /// Convert to Radians.  
        /// </summary>  
        /// <param name="val"></param>  
        /// <returns></returns>  
        private double toRadian(double val)  
        {  
            return (Math.PI / 180) * val;  
        }  
    }  
}  

擬似コード:

この擬似コードは、あなたが探している答えを与えるはずです。私はこれをテストしませんでした。C#にはおそらく構文エラーがありますが、その要点は明らかです。

/* Set parameters */
Position currentPosition = new Position();
Position airportPosition = new Position();
Double minDistance = Double.MaxValue;
String closestAirportName = "UNKNOWN";
Haversine hv = new Haversine();

/* Set current position, remains fixed throughout */
currentPosition.Latitude = 0.000;
currentPosition.Longitude = 0.000; 

/* Compare distance to each airport with current location
* and save results if this is the closest airport so far*/
Foreach (airport in airports) {
    airportPosition = new Position(airport.Lat, airport.Lon);
    Double distanceToAirport = hv.Distance(currentPosition, airportPosition, DistanceType.Kilometers)

    if (distanceToAirport < minDistance) {
        minDistance = distanceToAirport
        closestAirportName = airport.Name
    }
}
于 2012-09-28T13:30:04.233 に答える
0

ドゥルガー、どのプラットフォームでコーディングしていますか?Androidですか?

この場合、GoogleMapsAPIを使用できます。

https://developers.google.com/maps/

特に、Googleプレイス:

https://developers.google.com/places/

詳細については、Brosweのドキュメントを参照してください。特に、ライセンスを確認してください。

于 2012-09-30T11:19:10.297 に答える
0
this.nearestAirport = this.airports.find((airport) => {
              return (Math.round(airport.latitude) === Math.round(currentLocation.latitude) &&
                      Math.round(airport.longitude) === Math.round(currentLocation.longitude));
            });
于 2016-12-26T12:05:15.593 に答える
-1

最寄りの空港を検索し、指定された地点(Lat、Lan)からそこに到達するための道順を取得するには

これを達成するためのデータベースなしのGoogleの方法は次のとおりです。

onclick="getNeighbourhood('<%= propLat %>','<%= propLan %>');"

完全なコードについては、こちらをご覧ください。最も近い空港のスクリプトとスタイル

最寄りの空港を探す

function getNeighbourhood(propLatQ,propLanQ) {
propLat=propLatQ;
propLan=propLanQ;
var myLatlng = new google.maps.LatLng(propLat,propLan);
var myOptions = {
  zoom: 8,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map"), myOptions);
places = new google.maps.places.PlacesService(map);
google.maps.event.addListener(map, 'tilesloaded', tilesLoaded);
autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'));
google.maps.event.addListener(autocomplete, 'place_changed', function() {
  showSelectedPlace();
});
于 2012-11-07T12:10:59.733 に答える