2012-05-11 36 views
1

我使用Bing地图SOAP服务,GeocodeService在我的web应用程序,以反向地理地图上的一个点(即得到经度和纬度国家名称)所有国家名称。我需要获取Web服务可以返回的所有确切国家名称。我试图从here获得所有国家名称,但例如“前南斯拉夫共和国马其顿共和国”在网络服务中返回'FYRO马其顿'。有没有办法让Web服务可以返回所有确切的国家名称,因为我需要将它们存储在数据库中?获取Bing地图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 :)其次,如果我的数学是正确的,这种方法蛮力地理编码超过12万*点,并且正如你自己所说的,其中大部分都在海洋中。为什么不建立一个包含所有世界首都城市经纬度的列表,然后查看为每个城市返回的国家?首先建立列表的时间很短,但您只需制作200个地理编码即可 - 每个国家/地区一个。 –

+0

@AlastairAitchison是的,我同意你的观点,在这里有一个首都城市名单:http://lab.lmnixon.org/4th/worldcapitals.html虽然我不知道它有多完整 – paul