1

最近、C# の webService [wcf] で[ Bing Api ]を使い始めました。特定の縮尺の衛星画像をBingで復元したい!例えば

縮尺 1:200 (地図上の 1 センチメートルは世界上の 200 センチメートルに等しい)

もちろん、画像解像度の衛星ビンを計算する方法を説明するこの関数を見つけましたが、これは私が探しているものではありません..

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

bing マップを生成するために使用する関数を次に示しますが、1:200 の画像スケールを取得するためにパラメーターを送信する方法がわかりません。

私は欲しい :

スケール = 1:200

私は検索します :

int mapSizeHeight = ?

int mapSizeWidth = ?

int zoomLevel = ?

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 Maps のタイル システムの計算に関するこの記事をご覧になることをお勧めします。その中に、地表の解像度と地図の縮尺について説明しているセクションがあります。その記事から:

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

使用する Bing Maps の実装によっては、正確な地図縮尺でビューを指定できない場合があります。これは、ズームレベルを正確に制御できないことが原因だと思います。たとえば、javascript ajax バージョンでは、ズーム レベルを整数値でしか指定できないためground resolution、上記の式の部分は目立たないステップでジャンプします。赤道では、ズーム レベルを使用する21と のスケールが得られ、1: 282ズームレベルを使用する22と が得られます1:141。ズーム レベルの 10 進数値を指定できないため、ajax コントロールを使用して正確な 1:200 スケールを取得することはできません。私は .net Bing Maps コントロールの経験が豊富ではないので、その API を調査して、任意のズーム レベルを指定できるかどうかを確認してください。

ズーム レベルを正確に制御でき、dpi 値がわかっている場合は、上記のリンク先の記事で説明されている式を使用して 1:200 スケールを達成できます。

于 2013-03-04T19:21:57.177 に答える