日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)

發布時間:2024/4/14 c/c++ 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?現在查詢上基本完成了,不過僅僅是一些簡單的查詢而已。首先我還是貼一下放大、縮小、漫游一些簡單的代碼:
CMoRectangle Rect;

CMoPoint Point;
if(this->m_CursorStat == "zoomin")

{

?? Rect = this->m_MapObject.TrackRectangle();

?? this->m_MapObject.SetExtent(Rect);

}

else if(this->m_CursorStat=="zoomout")

{

?? double Width,Height;

?? Point = this->m_MapObject.ToMapPoint((float)X,(float)Y);

?? Rect = this->m_MapObject.GetExtent();

?? Width = Rect.GetWidth();

?? Height = Rect.GetHeight();

?? Rect.SetRight(Point.GetX()+Width);

?? Rect.SetLeft(Point.GetX()-Width);

?? Rect.SetBottom(Point.GetY()-Height);

?? Rect.SetTop(Point.GetY()+Height);

?? this->m_MapObject.SetExtent(Rect);

}

else if(this->m_CursorStat=="pan")

{

?? this->m_MapObject.Pan();

}
這些都比較easy,就略去介紹了。下面開始講查詢:我這里的查詢用的是Expression語句,其實還有其他的方法,如SearchShape,這里先介紹前者的用法。它其實就是一個約束條件,你把它扔給一個圖層處理,然后圖層就會根據你的語句得到結果,返回一個CMoRecordset類型。如:

CMoRecordset recs(this->m_CurrentLayer.SearchExpression(expression));

recs就是當前圖層,執行語句expression之后得到的結果集合。這里我用的只是Like的SQL語法(其他的還沒有得知如何用),所以結果返回就是一條記錄,或者說就是表中的一行。下面以點圖層搜索為例:

CMoFields fields(recs.GetFields());//得到字段集合

CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))));

//用字段shape初始化shapeField,必須用shape

if(lyrType=="MultiPoints")

{

//這里這個shape文件是一個點對象

CMoPoint shape(shapeField.GetValue().pdispVal);

this->m_MapObject.FlashShape(shape, 3);//將這個點閃動三次

}

其中,lyrType是圖層的類型,通過GetSplitString函數得到。這樣,只要執行Select * from CurrentLayer where CITY_NAME Like Denver類似的語句就可得到結果。

下一次如果有續的話,應該是了解返回多個查詢結果的情形。

轉載于:https://www.cnblogs.com/googlegis/archive/2008/12/04/2979099.html

總結

以上是生活随笔為你收集整理的VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。