Characteristics of spatial database
Spatial database, is to store and analyze spatial data, there are some GIS systems using space files to achieve, such as MapInfo, shape file format, but the spatial database has its unique advantages, in fact, the basic database system and file system features are compared:
1, database design-oriented data model object, database design is based on the data model.
2, the data redundancy of the database system is small, the data share degree is high.
3, the database system data and procedures have a high degree of independence.
4, the database system through DBMS for data security and integrity control.
5, the minimum data Access unit in the database is the data item.
For example, to achieve a database of multiple tables query, a SQL to fix the problem, replaced by file format processing is much more troublesome.
However, it is only a simple database, spatial database more space information storage and analysis capabilities, for simple attribute information, the geographical dimension of the label, so that it has a qualitative difference. Common spatial Database and PostgreSQL
The current common spatial databases are Oracle spatial, Ms Server (2008 or above), PostgreSQL (PostGIS), MySQL, SQLite spatial, where Oracle spatial, MS Server (2008 or more) powerful, but expensive, MySQL, SQLite spatial free, but the space processing capacity is weak, comprehensive and relatively open source PostgreSQL (PostGIS) The best, many GIS projects have broad support, Select it in this series.
PostgreSQL Download Address is: http://www.postgresql.org/, download installation after a wizard to suggest you install some plug-ins, check the PostGIS, others can consider whether or not tick. In fact, PostGIS is a PostgreSQL space plug-in, just like Oracle spatial is an Oracle plug-in.
When the installation is successful, you will find that it has installed the database management client Pgadmin (of course you do not like or use the unused you can use back to navicat), the left directory tree expands as follows:
Space Query
Among them cell_region, Cellcover_region, site_font_points is I use PostGIS to upload the shape file to the PostgreSQL to generate the table, which Spatial_ref_sys is automatically generated, The correlation between spatial data and attribute data is recorded. Well, we're trying to use the spatial query capabilities of it:
Well done, the data came out, the code is very good to understand, St_within is a PG-band space contains functions, meaning that the query Cellcover_region surface layer contains a GID 1 points of the record. Basically done here. C # Call
However, when it comes to C # building, how do you give a sample of C # calls. Here we want to borrow npgsql, search and download, and then create a new WinForm program, the following files to copy in and add references (to remind: may be separated in different directories, I just did not add Mono.Security.dll, get to compile):
Then test the code:
private void Tryquery () {try {//Postgesql-style connection string String connstring = String.Format ("server={0}; Port={1}; User id={2};
PASSWORD={3};D Atabase={4}; "," localhost "," 5432 "," Postgres "," sa "," POSTGIS20 "); Making connection with NPGSQL provider Npgsqlconnection conn = new Npgsqlconnection (Connstri
NG); Conn.
Open ();
Quite complex SQL statement//data adapter making request from our connection
String sql = "SELECT * from Cellcover_region"; String sql = "Select a.* from Public.cellcover_region as a, site_font_point as B where b.gid=1 and St_within (b.geom,a.geom
)";
Npgsqldataadapter da = new Npgsqldataadapter (SQL, conn); I always reset DataSet before I do//something with it ... I don ' t know why:-) DS.
Reset (); The filling DataSet with the result from Npgsqldataadapter da.
Fill (DS); Since it C # DataSet can handle multiple tables, we'll select the-dt = ds.
Tables[0];
Connect grid to DataTable datagridview1.datasource = DT; Since we showing the result we don ' t need connection anymore Conn.
Close (); The catch (Exception ex) {MessageBox.Show (ex).
Message.tostring ()); }
}
Run it, the effect is as shown, and we can see that the database query is consistent: