今天給各位分享vb調用gis地圖的知識,其中也會對excel vba 地圖進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!
目錄一覽:
- 1、vb課程設計 關于GIS的
- 2、我是搞mapgis二次開發的,我怎么樣把電子地圖放進mapxview控件里面,用vb開發的,急需代碼!謝謝!
- 3、GIS系統設計中如何利用VB開發工具進行信息查尋功能
- 4、如何運用vb6.0完成mapgis中線轉換區的功能
- 5、VB 與MapInfo 二次開發的重點
- 6、求助, 利用VB開發關于gis顯示,查詢方面獨立的軟件,可以使用Mapobject或arcengine嗎?可否打包成安裝文
vb課程設計 關于GIS的
不用找源碼,安裝一個VS.net 2005或2008,安裝ArcGIS Enigne 9.2 Develope Kit for .NET 或9.3,直接在VS的IDE里面配置這些功能就行了,里面的SQL查詢、距離測量、緩沖區分析那是要自己開發,不過簡單,你必須學AO。建議你不要找什么源碼,動手摸索了,這樣對你才有好處。如果是為了完成任務的那種心態,對自己以后就業不好。
測距就用AO的INewLineFeedback畫線判斷一個IPolyline的長度
緩沖就用AO的ITopologicalOperator 接口的Buffer *** 來做。
地圖坐標顯示功能比較簡單,給MapControl加一個onmousemove事件,移動時獲得地圖的坐標mapx,mapy,顯示在狀態條中。
添加微信好友, 獲取更多信息
復制微信號
SQL查詢就用IQueryFilter根據你輸入的SQL進行查詢,查詢后,通過IFeatureCursor接口訪問這些IFeature,通過IFeature的get_value *** 獲得每個IFeature的屬性值。
編輯工具就只用配置Editor工具按鈕放到你的toolbarcontrol中
以上都是在ArcGIS Engine里面實現的 *** 。自己動手弄吧,多實踐,對你有幫助。
我是搞mapgis二次開發的,我怎么樣把電子地圖放進mapxview控件里面,用vb開發的,急需代碼!謝謝!
干嗎不用C#呢,C#那么多資料。vb我有本書在這,但是其他資料就少了,。我覺得應該都是一樣的,用Mapxview和工作空間workspace連接在一起,然后用工作空間打開
GIS系統設計中如何利用VB開發工具進行信息查尋功能
點選查詢:
MapObjects2.Point變量用于放置鼠標點擊位置。通過map的shapeType屬性來判斷被查詢圖層屬于點狀、線狀還是面狀圖層。如果屬于面狀圖層,則用SearchShape(點坐標, moPointInPolygon, "查詢語句")來找到需要查詢的部分;若為線狀或點狀圖層,則用SearchByDistance(點坐標, 緩沖范圍, "查詢語句")來確定需要查詢的部分。查到的部分放在MapObjects2.Polygon變量中,閃爍顯示。
框選只要把點選得之一部改一下就好了。
按屬性:
用圖層變量的SearchExpression(“查詢語句”)來查找符合條件的地域。得到結果后,傳遞給一個全局MapObjects2.Recordset變量,同時設置好MapObjects2.Symbol變量,用DrawShape事件給找到的部分上色,突出顯示。
按名稱:
只要把按屬性查詢的查詢語句設定為
包含名稱的字段名='選中的名稱'就可以了。
至于按區域,不太理解你的意思。我的理解是也屬于屬性性查詢的一部分。
如何運用vb6.0完成mapgis中線轉換區的功能
給你一點VC代碼吧,MapGIS更佳開發語言是C++,轉區不成功主要是因為對區的理解不夠深入。
// 寫入區
void CInPutSpcRegTool::WriteToReg()
{
// 條件
if (m_regai1 || m_numArcDots3 || m_arcDots==NULL)
{
return;
}
// 造區
long rdat[2];
long lno = 0;
long regno = 0;
LIN_INFO lininfo;
LIN_INFO *infoTmp = NULL;
_GetLinDefParam(infoTmp);
lininfo = *infoTmp;
lno = _AppendLin(m_regai,m_arcDots,m_numArcDots,lininfo,2);
rdat[0] = m_numArcDots+1; //點數+圈數
rdat[1] = lno;
regno = _AppendReg(m_regai,rdat,2,m_reginfo);
((CPowerView *)m_pObj)-_UpdateWindow();
// 寫入默認屬性結構
if (regno1)
{
return;
}
CFIELD_HEAD fld;
CATT_STRU struTmp;
CATT_STRU *stru = NULL;
char *att = NULL;
short fldno = -1;
_GetRegAttStru(m_regai,stru); //當前屬性結構
_srGetSpcRegDefStru(struTmp); //默認屬性結構
// 寫入屬性
char buf[256] = ""; //級別
fldno = -1;
fldno = _GetFldNo(stru,"RegLev");
if (fldno0)
{
fldno = _GetFldNo(struTmp,"RegLev");
fld = struTmp.fldEntry[fldno];
_AppendRegStruFld(m_regai,1,fld);
fldno = _GetFldNo(stru,"RegLev");
}
if (fldno=0)
{
_GetRegAtt(m_regai,regno,stru,att);
sprintf(buf,LOAD_STR_BY_ID(IDS_SPCREG_LEV),m_reglev);
_SetFldFromStr(att,stru,"RegLev",buf);
_WriteAtt(m_regai,REG,regno,stru,att);
}
fldno = -1; //類別
fldno = _GetFldNo(stru,"RegType");
if (fldno0)
{
fldno = _GetFldNo(struTmp,"RegType");
fld = struTmp.fldEntry[fldno];
_AppendRegStruFld(m_regai,1,fld);
fldno = _GetFldNo(stru,"RegType");
}
if (fldno=0)
{
_GetRegAtt(m_regai,regno,stru,att);
lstrcpy(buf,m_spcregcfg.SRegName);
_SetFldFromStr(att,stru,"RegType",buf);
_WriteAtt(m_regai,REG,regno,stru,att);
}
_SetChangeFlag(m_regai,1);
// 提示
char tempStr[MAX_STR_LEN]="";
sprintf(tempStr,LOAD_STR_BY_ID(IDS_INPUT_REG_SUC),m_strInput);
m_ToolIdent.CommandPrompt(tempStr);
}
VB 與MapInfo 二次開發的重點
( 1) MapInfo 對象的創建
本系統使用 OLE Automation 技術在 VB 中創建一個 MapInfo 的應用對象,然后在 VB環境下對該對象進行操作 ( 張峰等,2004) 。首先在 VB 環境下聲明一個對象變量如 Map-Info,接著在 VB 中使用 CreateObject ( ) 函數創建一個 MapInfo 對象,使用語句:
Set MapInfo = CreateObject( “MapInfo. Applicaiton”)
要連接一個已運行著的 MapInfo,需要用 Visual Basic 的 GetObject ( ) 函數。
Set MapInfo = GetObject( “MapInfo. Application”)
由于該語句創建的是 MapInfo 應用對象,所以在本地機器系統中應該有 MapInfo 軟件平臺,否則將產生錯誤,不能創建 MapInfo 應用對象。集成地圖開發是在程序中通過調用語句來在后臺啟動 MapInfo。創建完對象后就可以在 VB 環境里使用對象 MapInfo 的屬性和 *** ,通過 VB 的對象瀏覽器,可以看到 MapInfo 對象的屬性和 *** ,最常用的是 do *** 。MapInfo 應用對象 do *** 識別和執行字符串命令行。由于在 MapInfo 系統中包含的庫文件 “MapBasic. def”以及 “Menu. def”中集成了許多命令函數,使 MapInfo 的有些功能往往只需要一兩條語句就可以在 VB 中完成,使用起來也比較簡單、方便。
( 2) VB 評價結果在 MapInfo 中的圖形顯示和重畫
在 GIS 軟件系統中,圖形的顯示及重畫功能是系統自動完成的,可是由于本系統是采用 OLE 技術,將 MapInfo 系統集成到 VB 的環境中,則圖形的顯示和重畫只能在 VB 的環境里完成,由于 VB 自身無法識別 MapInfo 的圖形格式,所以就無法進行圖形的顯示與重畫。使用 Map Basic 語句“Set Application Window”來讓 MapInfo 的對話框和錯誤信息窗口從屬于客戶程序?!癝et Next Document”語句允許 “再生”窗口。在 VB 與 MapInfo 集成環境里,圖形的顯示可以使用 MapInfo 的窗口來實現,也可以在 VB 的窗口中實現,MapInfo允許以三種模式將一個地圖在 VB 環境里顯示。其中 style 1: 表示無模式形式,即地圖將充滿整個 VB 窗體中,就像將 MapInfo 的圖形貼在 VB 窗體上一樣 ( 張峰等,2004) ; style2: 則表示生成帶半高標題欄的彈出式窗口 ( 像 MapInfo 的圖例窗口) ; style 3: 產生帶全高標題欄的窗口。后兩種方式,都不能使窗口圖形窗口更大和最小化,這給用戶的操作帶來不便,同時也不符合 Windows 系統風格。因此本系統采用 style 1 模式。
MapInfo 允許在 VB 的窗體上顯示圖形,使用命令:
“Set Next document parent”& Form1. hWnd &“style 1”
Form1 是 VB 中的一個用來顯示圖形的窗體。在 VB 環境里打開 MapInfo 的地圖和數據表格。但還存在一些問題,當 VB 窗口更大化時,MapInfo 圖形不能重畫,即當用戶改變地圖窗口大小時,MapInfo 并不會依據新窗口的大小自動重新設置地圖內容以添滿窗口。為此必須利用 Windows API 函數 MoveWindow 編寫代碼來實現,使每一次窗體的大小變化時,地圖均重畫。
( 3) 報表輸出
通過讀取數據庫中存儲的評價信息,按照相應的格式調用到相應的報表位置,生成報表,如圖 7. 9 所示。關鍵點是讀取數據庫和打印,下面是讀取數據庫及打印代碼:
圖 7. 9 報表輸出打印界面
Straql = ”select* from pingjia where name = ”’& text1. text &’””
ExecuteSql( Strsql)
Me. PrintForm
求助, 利用VB開發關于gis顯示,查詢方面獨立的軟件,可以使用Mapobject或arcengine嗎?可否打包成安裝文
MO和AE都能用
AE除了最新的ArcGIS10不支持VB,早些時候的版本都能支持
可以打包,但還是會依賴于AE或者MO的Runtime(運行時)。而Runtime必須單獨安裝。
補充:
AE必須是單獨安裝。MO似乎可以打包,但也需要注冊dll等步驟,比較麻煩。具體的過程可以在網上搜一下
vb調用gis地圖的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于excel vba 地圖、vb調用gis地圖的信息別忘了在本站進行查找喔。