环亚集团

C#,打造,一个开源webgis(二,)空间数据库

C#打造一个开源,webgis(二)空间数据库空间数据库特点。,★常见☆cháng jiàn★,空间数据库及PostgreSQL。目前★常见☆cháng jiàn★的空间,数据库有OracleSpatial,MSServet(,2008或以上),postgreSQL,(postGis),mysql,sqliteSpatial,其中OracleSpatial,MS,Servet(2008或以上)功能强大,★但是☆dàn shì★收费昂贵,mysql,sqliteSpatial免费,★但是☆dàn shì★,空间处理,能力,比较弱,综合,比较,开源,的postgreSQL(,postGis)最好,很多GIS项目,对此有,广泛,★支持☆zhī chí★,在本,系列,选择,它。ab站,莫斯科中央陆军篮球队,今日看点,高考1977下载,炼狱巫魔,四季酒店视频,dnf称号活动,查询星座,穿越者公敌,。

空间数据库特点,

空间数据库,是为了存储,和,分析空间数据的,也有★一些☆yī xiē★GIS系统采用空间文件,来实现,如mapinfo,shape文件格式,★但是☆dàn shì★,空间数据库有着其特,有的优势,其实,基本,也就数据库系统与文件,系统的特点比较:

1,数据库,设计时面向,数据模型对象,数据库设计的基础是数据模型。

2,数据库,系统的数据,冗余★度☆ dù★小,数据共享★度☆ dù★高。

3,数据库系统,的数据和程序之间具有较高的独立性。

4,数据库系统通过DBMS,进行数据★安全☆ān quán★性和完整性的控制。

5,数据库,中数据的★最小☆zuì xiǎo★存取单位是数据项。

简单,举个例子,实现数据库的多表查询,一句sql搞,定的,★问题☆wèn tí★,换成文件格式处理就麻烦多了,。

★然而☆rán ér★,那也只是简单的数据库,空间,数据库多了空间信息存储与,分析能力,为简单的属性,信息,打,上了地理维度的,标签,就此使得它具,有了质的,区别。

★常见☆cháng jiàn★空间,数据库及PostgreSQL

目前★常见☆cháng jiàn★的空间数据库,有Oracle Spatial,MS Servet(2008或,以上),postgreSQL(,postGis),mysql,sqlite Spatial,其中Oracle Spatial,MS Servet(2008或,以上)功能强大,★但是☆dàn shì★收费昂贵,mysql,sqlite Spatial免费,但是空间,处理能力,比较弱,综合比较开源,的,postgreSQL(postGis)最好,很多GIS项目,对此有广泛★支持☆zhī chí★,在本系列选择它。, 

PostgreSQL的下载地址,为:http://www.postgresql.org/下载安装后有个向导程序★建议☆jiàn yì★你,安装★一些☆yī xiē★插件,勾选PostGis★其它☆other★的★可以☆ kě yǐ★自行,考虑是否勾选。其实PostGis是PostgreSQL的空间插件,就像是,Oracle Spatial是,Oracle的插件一样。

当安装★成功☆chéng gōng★之后,你会发现,它给你安装了数据库,★管理☆guǎn lǐ★★客户☆kè hù★端pgAdmin(当然你不★喜欢☆xǐ huan★,或者用不习惯你★可以☆ kě yǐ★用回navicat),左边目录树展开如下:

C#,打造一个开源webgis(二)空间,数据库,的图片1src=img/ftgmwml.png空间查询,

其中cell_region,cellcovet_region,site_font_points是我用postGis上传,shape文件,到,PostgreSQL时生成的表,其中spatial_ref_sys是自动生成了,★记录☆jì lù★,了空间数据,和,属性,数据的关联。好了,★我们☆wǒ men★试着用用,它的空间查询,能力: 

C#打造,一个开源webgis(,二)空间,数据库的图片2src=img/gwdiwz.png

well done,数据出★来了☆lai l★,代码很好,理解,ST,_Within是,PG自带的空间包含函数,意思是查询,cellcovet_region面图层包含gid为1的点的★记录☆jì lù★。在此基本,大功告,成了。

C#,调用

★然而☆rán ér★,既然说到,C#打造,怎么,都要给个C#调用的,样例吧?,在此★我们☆wǒ men★,要借用,Npgsql,搜索之并下载,然后新建,一个,winform程序,把以下文件拷贝,进去并添加引用(提醒一下:★可能☆kě néng★分开在,不同目录,当初我就是,没有添加Mono.Security.dll,搞到,编译不了,):

C#打造一个,开源,webgis(二)空间数据库,的图片,3src=img/fbyheei.png

然后测试代码:

private void TryQuery() {, try { // PostgeSQL-style connection string string connstring = String.Format(Servet={0};Port={,1};Uset Id={,2};Password={,3};Database={4};。localhost。5432。postgres。,sa。postgis20); // Making connection with Npgsql providet NpgsqlConnection conn = new NpgsqlConnection(connstring); conn.Open(,); // quite complex sql statement // data adaptet making request from out connection //string sql = SELECT, * from cellcovet_region; string sql = SELECT a.*, FROM public.cellcovet_region as a。site_font_point as b where b.gid=1 and ST,_Within(b.geom,a.geom); NpgsqlDataAdaptet da = new NpgsqlDataAdaptet(,sql。conn); // i always reset DataSet before i do // something with it.... i dont know why :-,), ds.Reset(); // filling DataSet with result from NpgsqlDataAdaptet da.Fill(ds); // since it C# DataSet can handle multiple tables。we will select first dt = ds.TablesC#,打造,一个开源webgis(二),空间数据库的图片4<0 >; // connect grid to DataTable dataGridView1.DataSource = dt; // since we only showing the result we dont need connection anymore conn.Close(,); } catch (,Exception ex) { MessageBox.Show(ex.Message.ToString(,)); }, }

 

运行一下,效果,如图,可见和我们数据库查询是一致,的,:

src=img/byikemsf.png

 

 

本文链接:http://www.iiip5.cn/ebabczi.html