国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
ArcGIS Server 開(kāi)發(fā)系列(四)--ArcGIS Server data sources 開(kāi)發(fā)
   ArcGIS Server開(kāi)發(fā)系列前幾篇文章搭建了一個(gè)基本的webgis開(kāi)發(fā)框架,包括模板應(yīng)用程序搭建、屬性查詢、查詢結(jié)果高亮顯示,在arcims中,不論是使用9.2之前的javaconnector、.net_link、htmlviewer、還是9.2里的adf,這些功能都可以輕松實(shí)現(xiàn),從軟件成本上來(lái)看,ArcGIS Server企業(yè)版要比ArcIMS高出不少,如何體現(xiàn)ArcGIS Server價(jià)值呢?我們就從這一篇開(kāi)始挖掘ArcGIS Server的價(jià)值,從ArcGIS Server data sources啟航……

    目標(biāo):

    對(duì)點(diǎn)要素進(jìn)行緩沖區(qū)分析

    準(zhǔn)備工作:

1.了解ArcGIS Server中的ValueObject和ComOjbect。
2.AO接口中緩沖區(qū)分析的編程方法。
3.重新回顧第一篇中ArcGIS Server開(kāi)發(fā)的四種方法。
4.利用vs2005創(chuàng)建一個(gè)模板server應(yīng)用--Web Mapping Application,并更改MapResourceManager屬性。


    注意這里使用的map resource類型是ArcGIS Server Internet,在界面上增加一個(gè)新的panel,里面包括兩個(gè)textbox和一個(gè)comand,textbox對(duì)應(yīng)的分別是緩沖區(qū)中心點(diǎn)的x、y坐標(biāo),以該點(diǎn)為中心,一定半徑做圓形緩沖區(qū)。

   
    思路:

    緩沖區(qū)分析需要在AO接口中實(shí)現(xiàn),輸入的點(diǎn)應(yīng)該是一個(gè)COM對(duì)象,而在頁(yè)面中輸入xy坐標(biāo)點(diǎn)是一個(gè)SOAP API valueojbect,valueobject可以用于adf web controls,但不能用于AO接口,因此需要進(jìn)行valueobject到comojbect的轉(zhuǎn)換,在調(diào)用ITopologicalOperator接口的Buffer方法后會(huì)得到緩沖區(qū)分析的結(jié)果,即一個(gè)polygon,同理,該polygon是一個(gè)comobject,需要逆轉(zhuǎn)換為valueobject才能顯示到網(wǎng)頁(yè)上。

    代碼實(shí)現(xiàn):

    新建一個(gè)類XYBuffer,緩沖功能的在其buffer方法中實(shí)現(xiàn)。首先設(shè)置textbox中輸入點(diǎn)的渲染方式,該作為一個(gè)ESRI.ArcGIS.ADF.ArcGISServer.PointN對(duì)象,渲染方法如下:
ESRI.ArcGIS.ADF.ArcGISServer.PointN pt =
new ESRI.ArcGIS.ADF.ArcGISServer.PointN();
pt.X
= x;
pt.Y
= y;

// 設(shè)置點(diǎn)的顏色
ESRI.ArcGIS.ADF.ArcGISServer.RgbColor rgb =
new ESRI.ArcGIS.ADF.ArcGISServer.RgbColor();
rgb.Red
=
0;
rgb.Blue
=
0;
rgb.Green
=
20;

// 設(shè)置點(diǎn)的符號(hào)
ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol sms =
new ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol();
sms.Style
= ESRI.ArcGIS.ADF.ArcGISServer.esriSimpleMarkerStyle.esriSMSCircle;
sms.Color
= rgb;
sms.Size
=
20;

ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement marker
=
new ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement();
marker.Symbol
= sms;
marker.Point
= pt;


    然后用arcgis server local方式建立到datasource的連接,這點(diǎn)非常重要,主要是為了在這種連接狀態(tài)下進(jìn)行valueobject和comobject之間的轉(zhuǎn)換。建立連接的用戶應(yīng)屬于ArcGIS Server管理組。
ESRI.ArcGIS.ADF.Identity identity =
new ESRI.ArcGIS.ADF.Identity("user", "password", "localhost");
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsconnection;
agsconnection
=
new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("localhost", identity);
agsconnection.Connect();
ESRI.ArcGIS.Server.IServerObjectManager som
= agsconnection.ServerObjectManager;
ESRI.ArcGIS.Server.IServerContext serverContext
= som.CreateServerContext("Redlands", "MapServer");


    這樣我們就可以在arcgis server local連接方式下進(jìn)行對(duì)象轉(zhuǎn)換:
// 定義COM對(duì)象的點(diǎn)
ESRI.ArcGIS.Geometry.IPoint ipnt;
// 進(jìn)行valueobject到comobject之間的轉(zhuǎn)換
ipnt = (ESRI.ArcGIS.Geometry.IPoint)ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.ValueObjectToComObject(pt, serverContext);


    下面是AO中緩沖區(qū)分析的代碼,熟悉AO編程的對(duì)下面代碼應(yīng)該很了解了:
ESRI.ArcGIS.Geometry.ITopologicalOperator topop = (ESRI.ArcGIS.Geometry.ITopologicalOperator)ipnt;
double bufferDistance = map.Extent.Width /
6;
ESRI.ArcGIS.Geometry.IPolygon bufferPolygon;
bufferPolygon
= (ESRI.ArcGIS.Geometry.IPolygon)topop.Buffer(bufferDistance);


    bufferPolygon就是緩沖區(qū)分析的結(jié)果,但它還不是我們最后想要的,因?yàn)镋SRI.ArcGIS.Geometry.IPolygon無(wú)法在adf web control中顯示,還需要做一次轉(zhuǎn)換:
// 定義valueobject的點(diǎn)
ESRI.ArcGIS.ADF.ArcGISServer.PolygonN buffer_polyn;
// 進(jìn)行comobject到valueobject之間的轉(zhuǎn)換
buffer_polyn = (ESRI.ArcGIS.ADF.ArcGISServer.PolygonN)ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.ComObjectToValueObject(bufferPolygon, serverContext, typeof(ESRI.ArcGIS.ADF.ArcGISServer.PolygonN));


    buffer_polyn就是我們最后想要的結(jié)果,定義一種渲染方式:
ESRI.ArcGIS.ADF.ArcGISServer.RgbColor rgb1 =
new ESRI.ArcGIS.ADF.ArcGISServer.RgbColor();
rgb1.Red
=
200;
rgb1.Green
=
200;
rgb1.Blue
=
20;
// 設(shè)置區(qū)的填充色
ESRI.ArcGIS.ADF.ArcGISServer.SimpleFillSymbol sfs1 =
new ESRI.ArcGIS.ADF.ArcGISServer.SimpleFillSymbol();
sfs1.Style
= ESRI.ArcGIS.ADF.ArcGISServer.esriSimpleFillStyle.esriSFSHorizontal;
sfs1.Color
= rgb1;

ESRI.ArcGIS.ADF.ArcGISServer.PolygonElement polyelement1
=
new ESRI.ArcGIS.ADF.ArcGISServer.PolygonElement();
polyelement1.Symbol
= sfs1;
polyelement1.Polygon
= buffer_polyn;


    最后將marker和polyelement1添加到ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement對(duì)象數(shù)組中,傳給當(dāng)前MapFunctionality的CustomGraphics屬性,刷新map控件,看看顯示的效果圖,緩沖區(qū)顯示的樣式為一系列水平的平行線:


    以上在ArcGIS Server中實(shí)現(xiàn)了緩沖區(qū)分析功能,雖然arcims也能實(shí)現(xiàn)(arcims分析功能也僅限于此),但是兩者的本質(zhì)有天然的差別,前者是基于AO,因此類推可以將AO中的分析功能全部引入server中,實(shí)現(xiàn)更多更復(fù)雜的分析功能。

    最后,我們還有哪些需要考慮的呢?

1.ESRI.ArcGIS.ADF.ArcGISServer命名空間中我們用到了PointN類,但同樣可以找到PointB類,對(duì)于其他幾何類型也是如此,如PolylineN和PolylineB,它們之間有什么差別呢?

2.整個(gè)開(kāi)發(fā)過(guò)程我們用到了Data Source Specific API,重新回想一下第一篇中提到的途徑三和途徑四兩種開(kāi)發(fā)方式。

3.例子中我們僅僅是將緩沖區(qū)顯示出來(lái),如果需要用緩沖區(qū)做進(jìn)一步的分析,如一條街道向兩側(cè)拓展3米,有哪些房屋或建筑需要拆除或改建呢?這時(shí)需要做進(jìn)一步的相交分析,同樣可以調(diào)用AO接口實(shí)現(xiàn),最后將結(jié)果轉(zhuǎn)換為valueobject顯示出來(lái),這樣可以在server中實(shí)現(xiàn)決策分析的功能模塊。當(dāng)然我們可以通過(guò)這個(gè)例子做更多更深入的延伸。

4.如何將顯示的結(jié)果清除掉?

    博客園鏈接:http://www.cnblogs.com/flyingis/archive/2007/08/27/870679.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ArcGIS.Server.9.2.DotNet實(shí)現(xiàn)點(diǎn)、線、面的緩沖分析Buffer
CentOS7系統(tǒng)部署ArcGISServer
ArcGIS10.0和ArcGIS?10.01棄用計(jì)劃
ArcGIS Server賬戶和站點(diǎn)賬戶的區(qū)別
【薄荷粒兒不甜的筆記】ArcGIS Server10.2新建站點(diǎn)不成功及解決辦法
ArcGIS Server 10.1忘記站點(diǎn)密碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服