今天不知道怎麼的,有點不想寫**,可能是這幾天寫多,寫傷著了吧.既然這樣那就寫寫最近的一些心得吧
最近在我做空間資料共享這方面的,所以要讀取一些空間資料,比如shapefile ,mif 之類的.這些空間資料的儲存格式不是很複雜,但是完全讀取還是有一點麻煩,特別是要
將幾何資料與屬性資料整合到一塊,更有點難.從網上了解到使用gdal類庫讀取空間資料很方便,所以就研究了一下,下面就與大家一起分享一下.
要用gdal類庫必須有這些相應的動態鏈結庫(如下圖),網上有一些資料,但是純文字的的,今天我得搞**形式,這樣才更生動
必須把這上面的十個.dll檔案放到專案檔案的debug 或者release 路徑下,另外還得將上面的畫了紅色圓圈的五個dll 通過"引用" 新增到工程檔案中
這些環境配好之後,開始進入**階段
首先要新增如下三個命名空間
using osgeo.ogr;
using osgeo.gdal;
using osgeo.osr;
初始化類庫gdal ,進行註冊
string pszdrivername = "esri shapefile";
osgeo.ogr.ogr.registerall();
//呼叫對shape檔案讀寫的driver介面
osgeo.ogr.driver podriver = osgeo.ogr.ogr.getdriverbyname(pszdrivername);
if (podriver == null)
messagebox.show("driver error");
esri shapefile 代表的是shapefile 的格式 而mapinfo file 則代表的是mif 格式的
接下來,就正式開始讀取裡面的內容
osgeo.ogr.datasource pods;
pods = podriver.open(@"c:\documents and settings\administrator\桌面\mif檔案\bou1_4_line.mif", 0);
if (pods == null)
int layercount = pods.getlayercount(); //表示有多少個圖層 一般的只有乙個 (乙個圖層包括很多特徵物)
osgeo.ogr.layer layer = pods.getlayerbyindex(0);
string layername = layer.getname(); //得到圖層名稱
下面的就比較重要了,開始讀取圖層裡的每個特徵物的資訊了
osgeo.ogr.feature feature;
int ifield;
while ((feature = layer.getnextfeature()) != null)//不斷地迴圈遍歷每個特徵點
//提取出每個特徵點所對應的幾何資料
osgeo.ogr.geometry geometry = feature.getgeometryref();
osgeo.ogr.wkbgeometrytype goetype = geometry.getgeometrytype();
// messagebox.show(goetype.tostring());
if (geometry!= null &&goetype == wkbgeometrytype.wkbpoint)
///如果是線
if (goetype == osgeo.ogr.wkbgeometrytype.wkblinestring)
}//如果是面
if (goetype == osgeo.ogr.wkbgeometrytype.wkbpolygon)
}text = text + environment.newline;
}this.richtextbox1.text = text;
上面的每一樣都測試成功過,屬性資訊與幾何資訊都可以解析出來.
在iOS開發中使用FMDB
sqlite 是乙個輕量級的關聯式資料庫。ios sdk很早就支援了sqlite,在使用時,只需要加入 libsqlite3.dylib 依賴以及引入 sqlite3.h 標頭檔案即可。但是,原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,開源社群中就出現了一系列將sqlit...
在iOS開發中使用FMDB
sqlite 是乙個輕量級的關聯式資料庫。ios sdk很早就支援了sqlite,在使用時,只需要加入 libsqlite3.dylib 依賴以及引入 sqlite3.h 標頭檔案即可。但是,原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,開源社群中就出現了一系列將sqlit...
在iOS開發中使用FMDB
sqlite 是乙個輕量級的關聯式資料庫。ios sdk很早就支援了sqlite,在使用時,只需要加入 libsqlite3.dylib 依賴以及引入 sqlite3.h 標頭檔案即可。但是,原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,開源社群中就出現了一系列將sqlit...