arcgis中引入bingmap.docx
- 文档编号:26678897
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:10
- 大小:16.36KB
arcgis中引入bingmap.docx
《arcgis中引入bingmap.docx》由会员分享,可在线阅读,更多相关《arcgis中引入bingmap.docx(10页珍藏版)》请在冰豆网上搜索。
arcgis中引入bingmap
arcgis中引入bingmap
arcgis中引入bingmap
分类:
GIS2011-05-1212:
05566人阅读评论(0)收藏举报
前期:
有KEY码。
。
。
通过注册获取
(1)加入bingmap,因为是3857坐标系统。
SpatialReference:
102100(3857)
102100WGS_1984_Web_Mercator_Auxiliary_Sphere。
所以要作为最底图加入即可
(2)叠加tile的类:
usingESRI.ArcGIS.Client;
usingESRI.ArcGIS.Client.Geometry;
usingSystem.Windows;
usingSystem;
namespaceDiligentpig
{
publicclassClientDynamicTileMapServiceLayer:
TiledMapServiceLayer
{
publicbooliscansee=true;
publicstaticreadonlyDependencyPropertyUrlProperty=DependencyProperty.Register("Url",typeof(string),typeof(ClientDynamicTileMapServiceLayer),newPropertyMetadata(newPropertyChangedCallback(ClientDynamicTileMapServiceLayer.OnUrlPropertyChanged)));
publicstringUrl
{
get{return(string)GetValue(UrlProperty);}
set{SetValue(UrlProperty,value);}
}
publicstaticreadonlyDependencyPropertyDisableClientCacheProperty=DependencyProperty.Register("DisableClientCache",typeof(bool),typeof(ClientDynamicTileMapServiceLayer),newPropertyMetadata(newPropertyChangedCallback(ClientDynamicTileMapServiceLayer.OnDisableClientCachePropertyChanged)));
publicboolDisableClientCache
{
get{return(bool)GetValue(DisableClientCacheProperty);}
set{SetValue(DisableClientCacheProperty,value);}
}
privateint[]_visibleLayers;
///<summary>
///SetthevisiblelayersofDynamicTileMapServiceLayerbyanintarraywhichstartsfrom0.
///IfsetstoNULL,allsublayerswillbevisible.
///</summary>
publicint[]VisibleLayers
{
get{return_visibleLayers;}
set
{
_visibleLayers=value;
if(this.IsInitialized)
{
this.IsInitialized=false;
this.InitializationFailure=null;
this.Refresh();
this.Initialize();
}
}
}
privateconstdoublecornerCoordinate=20037508.3427892;
publicoverridevoidInitialize()
{
this.FullExtent=newESRI.ArcGIS.Client.Geometry.Envelope(-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892)
{
SpatialReference=newSpatialReference(102100)
};
//Thislayer'sspatialreference
this.SpatialReference=newSpatialReference(102100);
//Setuptileinformation.Eachtileis256x256px,19levels.
this.TileInfo=newTileInfo()
{
Height=256,
Width=256,
Origin=newMapPoint(-cornerCoordinate,cornerCoordinate){SpatialReference=newESRI.ArcGIS.Client.Geometry.SpatialReference(102100)},
Lods=newLod[19]
};
//Settheresolutionsforeachlevel.Eachlevelishalftheresolutionofthepreviousone.
doubleresolution=cornerCoordinate*2/256;
for(inti=0;i<TileInfo.Lods.Length;i++)
{
TileInfo.Lods[i]=newLod(){Resolution=resolution};
resolution/=2;
}
//Callbaseinitializetoraisetheinitializationevent
base.Initialize();
}
publicoverridestringGetTileUrl(intlevel,introw,intcol)
{
if(iscansee)
{
stringbaseUrl=@"{0}/export?
udpi=96&transparent=true&format=png8&bbox={1}%2C{2}%2C{3}%2C{4}&bboxSR=102100&imageSR=102100&size=256%2C256&f=image";
doublecornerCoordinate=20037508.3427892;//fromwkid3857/102100
doubleoriginResolution=cornerCoordinate*2/256;
doubleresolution=originResolution;
for(inti=0;i<level;i++)
{
resolution/=2;
}
doublexmin,ymin,xmax,ymax;
//doubleresolution=39135.7584820001;
xmin=-cornerCoordinate+resolution*256*col;
ymin=cornerCoordinate-resolution*256*(row+1);
xmax=-cornerCoordinate+resolution*256*(col+1);
ymax=cornerCoordinate-resolution*256*row;
//string[]subServices={"stgeometry","stgeometry1","stgeometry2"};
//stringbaseUrl=@"http:
//192.168.200.231:
8399/arcgis/rest/services/{0}/MapServer/export?
dpi=96&transparent=true&format=png8&bbox={1}%2C{2}%2C{3}%2C{4}&bboxSR=102100&imageSR=102100&size=256%2C256&f=image&_ts={5}";
//stringsubservice=subServices[(level+col+row)%subServices.Length];
//returnstring.Format(baseUrl,subservice,xmin,ymin,xmax,ymax,DateTime.Now.Ticks.ToString());
if(VisibleLayers!
=null)//ifnull,allsublayersarevisible.
{
//ex.layers=show:
2,4,7
stringstr="&layers=show:
";
for(inti=0;i<VisibleLayers.Length;i++)
{
str=str.Insert(str.Length,VisibleLayers[i].ToString()+",");
};
str=str.Remove(str.Length-1);//removelast","
baseUrl=baseUrl.Insert(baseUrl.Length,str);
}
if(DisableClientCache)
{
baseUrl=baseUrl.Insert(baseUrl.Length,"&_ts={5}");
returnstring.Format(baseUrl,Url,xmin,ymin,xmax,ymax,DateTime.Now.Ticks.ToString());
}
returnstring.Format(baseUrl,Url,xmin,ymin,xmax,ymax);
}
elsereturn"";
}
privatestaticvoidOnUrlPropertyChanged(DependencyObjectd,DependencyPropertyChangedEventArgse)
{
try
{
ClientDynamicTileMapServiceLayerlayer=(ClientDynamicTileMapServiceLayer)d;
if(layer.IsInitialized)
{
layer.IsInitialized=false;
layer.InitializationFailure=null;
layer.Refresh();
layer.Initialize();
}
}
catch(Exceptionex)
{
MessageBox.Show("ArcGISDynamicMapServiceLayerUrlisinvalid!
/n"+ex.Message);
};
}
privatestaticvoidOnDisableClientCachePropertyChanged(DependencyObjectd,DependencyPropertyChangedEventArgse)
{
ClientDynamicTileMapServiceLayerlayer=(ClientDynamicTileMapServiceLayer)d;
if(layer.IsInitialized)
{
layer.IsInitialized=false;
layer.InitializationFailure=null;
layer.Refresh();
layer.Initialize();
}
}
}
}
(3)增加坐标转化系统:
//经纬度转墨卡托
publicstaticPointlonLat2Mercator(PointlonLat)
{
if(type<=1)
{
doublex=lonLat.X*20037508.34/180;
doubleM_PI=Math.PI;
doubley=Math.Log(Math.Tan((90+lonLat.Y)*M_PI/360))/(M_PI/180);
y=y*20037508.34/180;
Pointmercator=newPoint(x,y);
returnmercator;
}
else
{
Pointmercator=lonLat;
returnmercator;
}
}
//墨卡托转经纬度
publicstaticPointMercator2lonLat(Pointmercator)
{
if(type<=1)
{
doublex=mercator.X/20037508.34*180;
doubley=mercator.Y/20037508.34*180;
doubleM_PI=Math.PI;
y=180/M_PI*(2*Math.Atan(Math.Exp(y*M_PI/180))-M_PI/2);
PointlonLat=newPoint(x,y);
returnlonLat;
}
else
{
PointlonLat=mercator;
returnlonLat;
}
}
//================示例如下==========================
ESRI.ArcGIS.Client.Geometry.EnvelopeselectedFeatureExtent=feature.Geometry.Extent;
doubleexpandPercentage=100;
doublewidthExpand=selectedFeatureExtent.Width*(expandPercentage/10);
if(widthExpand==0)widthExpand=0.6;
doubleheightExpand=selectedFeatureExtent.Height*(expandPercentage/10);
if(heightExpand==0)heightExpand=0.6;
Pointp1=newPoint(selectedFeatureExtent.XMin-(widthExpand/2),
selectedFeatureExtent.YMin-(heightExpand/2));
PointpM1=ToolConvert.lonLat2Mercator(p1);
Pointp2=newPoint(selectedFeatureExtent.XMax+(widthExpand/2),
selectedFeatureExtent.YMax+(heightExpand/2));
PointpM2=ToolConvert.lonLat2Mercator(p2);
ESRI.ArcGIS.Client.Geometry.EnvelopedisplayExtent=newESRI.ArcGIS.Client.Geometry.Envelope(
pM1.X,pM1.Y,
pM2.X,pM2.Y);
mp.MyMap.ZoomTo(displayExtent);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arcgis 引入 bingmap