1

我最近开始在 c# 的 webService [wcf] 中使用[ Bing Api ]。我想用 Bing恢复给定比例的卫星图像!例如

比例 1:200(地图上的 1 厘米等于世界上的 200 厘米)

当然,我发现这个函数解释了如何计算图像分辨率卫星 bing 但这不是我要找的..

Map resolution = 156543.04 meters/pixel * cos(latitude) / (2 ^ zoomlevel)

这是我用来生成我的 bing 地图的函数,但我不知道要发送什么参数来检索 1:200 的图像比例。

我需要 :

比例 = 1:200

我搜索 :

诠释地图大小高度=?

int mapSizeWidth = ?

整数缩放级别= ?

public string GetImageMap(double latitude,double longitude,int mapSizeHeight, int mapSizeWidth, int zoomLevel)
    {
        string key = "ddsaAaasm5vwsdfsfd2ySYBxfEFsdfsdfcFh6iUO5GI4v";
        MapUriRequest mapUriRequest = new MapUriRequest();

        // Set credentials using a valid Bing Maps key
        mapUriRequest.Credentials = new ImageryService.Credentials();
        mapUriRequest.Credentials.ApplicationId = key;

        // Set the location of the requested image
        mapUriRequest.Center = new ImageryService.Location();
        mapUriRequest.Center.Latitude = latitude;
        mapUriRequest.Center.Longitude = longitude;

        // Set the map style and zoom level
        MapUriOptions mapUriOptions = new MapUriOptions();
        mapUriOptions.Style = MapStyle.Aerial;
        mapUriOptions.ZoomLevel = zoomLevel;
        mapUriOptions.PreventIconCollision = true;
        // Set the size of the requested image in pixels
        mapUriOptions.ImageSize = new ImageryService.SizeOfint();
        mapUriOptions.ImageSize.Height = mapSizeHeight;
        mapUriOptions.ImageSize.Width = mapSizeWidth;

        mapUriRequest.Options = mapUriOptions;

        //Make the request and return the URI
        ImageryServiceClient imageryService = new ImageryServiceClient();
        MapUriResponse mapUriResponse = imageryService.GetMapUri(mapUriRequest);
        return mapUriResponse.Uri;
    }
4

1 回答 1

2

如果您还没有,您可能想查看这篇关于 Bing 地图瓦片系统计算的文章,您将在其中找到讨论地面分辨率和地图比例的部分。从那篇文章:

map scale = 1 : ground resolution * screen dpi / 0.0254 meters/inch

根据您使用的 Bing 地图实现,可能无法通过精确的地图比例指定视图。我认为这是因为您无法精确控制缩放级别。例如,在 javascript ajax 版本中,您只能以整数值指定缩放级别,因此ground resolution上述等式的部分将谨慎地跳转。在赤道,使用 的缩放级别21将为您提供 的比例,使用 的缩放1: 282级别将为22您提供1:141。由于不能为缩放级别指定十进制值,因此无法使用 ajax 控件获得精确的 1:200 比例。我对 .net Bing Maps 控件没有丰富的经验,因此您可能需要调查该 API 以查看是否可以指定任意缩放级别。

如果您可以精确控制缩放级别并知道 dpi 值,则可以使用上面链接文章中描述的公式实现 1:200 比例。

于 2013-03-04T19:21:57.177 回答