2012-05-11 25 views
1

WebアプリケーションでBing Maps SOAPサービスGeocodeServiceを使用して、地図上のポイントをジオコードする(つまり、経度と緯度から国名を取得する)。私は、Webサービスが返すことができるすべての正確な国名を取得する必要があります。私はhereからすべての国名を取得しようとしましたが、例えば 'Macedonia、旧ユーゴスラビア共和国'はウェブサービスで 'FYRO Macedonia'に返されます。 Webサービスがデータベースに格納する必要があるため、返すことができるすべての正確な国名を取得する方法はありますか?Bing Maps SOAPサービスで使用されるすべての国名を取得

答えて

0

ブルートフォース?ポイントのカップルを(あなたは、バチカン市国を逃すかもしれないが、私はあなたが他の人を取得したい期待、それはまた、ジオコーディング海にしようと多くの時間を過ごすことになります)

 GeoServiceReference.GeocodeServiceClient client = new GeoServiceReference.GeocodeServiceClient(); 

     var countries = new List<string>(); 

     for (double lat = 0; lat < 360; lat+=0.1) 
      for(double lon = 0; lon < 360; lon+=0.1) 
     { 
      var result = client.ReverseGeocode(new GeoServiceReference.ReverseGeocodeRequest 
      { 
       Location = new GeoServiceReference.Location 
       { 
        Latitude = lat, 
        Longitude = lon 
       } 
      }); 

      if (!countries.Contains(result.Results.First().Address.CountryRegion)) 
      { 
       Console.WriteLine(result.Results.First().Address.CountryRegion); 
       countries.Add(result.Results.First().Address.CountryRegion); 
      } 
     } 
+2

:最初、緯度は-90から変わります+90、経度は-180から+180まで変化します。どちらも0から360まではありません:)第2に、私の数学が正しい場合、このアプローチはブルートフォースが12万ポイント以上のジオコードで、 、彼らのほとんどは海にいます。増分ルーピングではなく、すべての世界首都の緯度/経度を含むリストを設定し、それらのそれぞれについて返された国をルックアップするのはなぜですか?最初はリストを作成するのに少し時間がかかりますが、各国ごとに1つだけ200個のジオコードを作成する必要があります。 –

+0

@AlastairAitchisonはい、私はそれぞれのポイントであなたに同意します。ここには首都のリストがあります:http://lab.lmnixon/4/4/worldcapitals.htmlどのように完全であるか分かりませんが – paul

関連する問題