MapInfo地圖查詢的簡單實現
GIS高階開發
【以我做的gis系統GIS_socialPolice為例,講解是如何實現一個互動操作的,因為,當你瞭解瞭如何與地圖實現互動,你就掌握了地圖的應用原理】
首先,我們想對地圖上的資料元進行操作,就必須知道它的位置,而位置無非是通過經緯度座標來定位的,那麼,如何獲取經緯度就成了關鍵點了。
我已經跟你說了我們們是如何通過mapInfo7。0來提取座標了【即在地圖上插入一個圖元,標示其經緯度】,那麼,在mapInfo建立每個圖層時,他就相應的給我們建立了一個來描述這個圖層的圖層資訊表,在我們們操作地圖的時候,大部分時間就是對這個底層的資訊表來操作的,說白了,GIS在很大程度上也是一種對資料庫的操作,這個需要你學的時間久了以後,自己慢慢領會。
這樣,我們們知道了GIS的操作基本原理以後,具體介紹一下,他的一個實現過程。
1、首先,新增一個觸發圖示,以提供給使用者來操作地圖,我們以座標資訊查詢為例,這個最為典型,我們來實現一個按人員姓名來查詢資訊,查詢出該人員以後,然後將其定位在地圖上【其它的操作以此類推,基本原理都是在這個獲得座標資訊的基礎上,來操作地圖的】
2、不妨新增一個按鈕,其值設為“查詢”,新增一個文字框,提供使用者輸入所需要查詢的資訊。
3、在安裝MapInfo的路徑下有一個MapInfo資料幫助文件,叫“程式設計師參考手冊”,這裡提供了一系列物件供我們來運算元據。
4、在這裡,我們用到了SearchInfo物件,他是定義在MapInfo。Data名稱空間下的物件,我們這樣來宣告這個物件
SearchInfo si=MapInfo.Data.SearchInfoFactory.SearchWhere(strWhere);//strWhere為我們查詢的條件在這裡我們需要查詢某個人名,所以strWhere=“name like '%'"+strName+"%'"。
5、通過SearchInfo物件,我們可以獲取地圖資訊表中的查詢物件的實體,我們將其放倒一個IResultSetFeatureCollection物件中。
這個物件使用來盛放搜尋的結果的,這個物件也是定義在MapInfo。Data名稱空間下面的。我們這麼宣告物件,並且把查詢的
資料放倒這個物件中。
IResultSetFeatureCollection ifs =MapInfo.Engine.Session.Current.Catalog.Search(mapTable, si);
//mapTable:表示,你是對那個表進行操作的,我們這個表就是通過mapinfo來建立的。
//si則是,我們步驟4中建立的物件。
6、首先,判斷一下這個結果集ifs中是否有元素,ifs。count>0,如果否,則返回空。
7、下面我們來實現如何定位到地圖上,首先,將目前地圖的選擇狀態先清空一下,來顯示當前剛做的操作。清空狀態是這樣實現的:MapInfo.Engine.Session.Current.Selections.DefaultSelection.Clear();
8、我們把剛才的結果集放到MapInfo提供的Session中:
MapInfo.Engine.Session.Current.Selections.DefaultSelection。Add(ifs);
9、下面開始查詢:我一句一句解釋:
//MIConnection:就像我們C#中的連線字串
MIConnection connection = new MIConnection();
//MICommand像我們C#中的Command物件。
MICommand command =connection.CreateCommand();
//給Command的CommandText賦值
command.CommandText = "Selectjd,wd From " + mapTable + " Where name like '" + paramInfo+ "'";
connection.Open();
//建立一個資料集,以盛放我們的結果。
MIDataReader reader =command.ExecuteReader();
double[] outInfo = new double[2];
if (reader.Read())
{
outInfo[0] =Convert.ToDouble(reader.GetValue(0));
outInfo[1] =Convert.ToDouble(reader.GetValue(1));
}
//不要忘了釋放資源。
reader.Close();
command.Dispose();
connection.Close();
//這裡,我們返回一個陣列
return outInfo;
10、我們第一個陣列,來盛放上一步返回的結果:
double[] sitexy=outInfo;
11、我們要想把資料定位到地圖上,無非是獲得我們想看的資訊的經緯度座標,然後,把這個資訊元移動到地圖的中心點,這樣也方便使用者檢視。
具體操作是這樣的。
setCenter(sitexy[0],sitexy[1],0.17);//這個setCenter()函式的功能就是實現了地圖的中心點移動。
//解釋一下引數 的意義:sitexy[0]:表示經度,sitexy[1]:表示緯度,而0。17則表示我們當前把地圖放大的倍數。
12:這個函式的實現如下:
private void setCenter(double x,double y,double level)
{
myMap.Center = new DPoint(x, y);
myMap.Size = newSystem.Drawing.Size((int)this.MainMap.Width.Value,(int)this.MainMap.Height.Value);//用指定寬度,高度初始化新的示例
MapInfo.Geometry.Distance d = newMapInfo.Geometry.Distance(level, myMap.Zoom.Unit);//有效距離型別 距離可以是球面座標距離或笛卡兒座標距離。
myMap.Zoom = d;
}
//myMap:MapInfo.Mapping.Map myMap,獲得正執行執行緒上的當前 ISession 例項
上面12個步驟就是我們一個完整的地圖查詢資訊的過程!
相關文章
- 仿鏈家地圖找房的簡單實現地圖
- MySQL簡單實現多欄位模糊查詢MySql
- JavaScript實現簡單二叉查詢樹JavaScript
- 簡單實現附近周邊服務查詢功能
- 簡單的查詢
- 怎麼自己製作地圖?如何快速實現簡單地圖繪製?地圖
- 查詢賬單功能的實現
- 聊聊簡單又不簡單的圖上多跳過濾查詢
- 簡單的mysql查詢MySql
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- java中資料庫查詢,搭配簡單的圖形介面進行查詢Java資料庫
- 如何優雅地實現分頁查詢
- MySQL - 資料查詢 - 簡單查詢MySql
- Mybatis簡單查詢MyBatis
- 簡單的查詢語法
- ElasticSearch中的簡單查詢Elasticsearch
- 發現一個實現簡單地圖示註的視覺化軟體地圖視覺化
- 利用 DynamicLinq 實現簡單的動態表示式構建查詢
- MySQL的簡單查詢語句MySql
- 插值查詢的簡單理解
- 一個簡單的樹查詢
- 關聯查詢子查詢效率簡單比照
- 使用 Redis 有序集合實現 IP 歸屬地查詢Redis
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- 簡單ELK配置實現生產級別的日誌採集和查詢實踐
- ATM-簡單SQL查詢SQL
- 二分查詢的簡單理解
- MySQL之資料的簡單查詢MySql
- 一個簡單的字串查詢程式字串
- Java實現簡單的增刪改查操作Java
- shell的圖形化實現簡單示例
- 怎麼自己製作地圖,簡單的地圖繪製軟體地圖
- 百度地圖-簡單整合地圖
- MySQL 查詢結果以百分比顯示簡單實現MySql
- 實現一個簡單的輪詢演算法演算法
- 騰訊地圖實現地圖找房功能地圖
- SSM的查詢簡單練習+JSPSSMJS