赞
踩
GIS空间分析指的是在GIS(地理信息系统)里实现分析空间数据,即从空间数据中获取有关地理对象的空间位置、分布、形态、形成和演变等信息并进行分析。
将GIS空间分析利用到系统中,我们可以利用GIS空间分析处理车辆进出电子围栏,车辆预计到达目的地,车辆是否进入某些区域,车辆是否进入道路,车辆是否偏移了规定道路等等相关应用型分析。
针对复杂的GIS空间分析,我们可以利用Postgresql+Postgis来简单实现,我们需要先安装对于的控件分析需要的组件。
1:安装PostgreSQL,我这里使用的是Windows 服务器
2:给PostgreSQL 安装PostGIS组件
安装参考:https://wenku.baidu.com/view/ac2b40ab284ac850ad0242f3.html
首先我们可以与操作MS-SQL,MySQL等数据库一样定义一个DBHelper类,给这个类取名PostgreHelper,封装PostgresSQL数据库操作方法。
- public class PostgreHelper : IDBHelper
- {
- /// <summary>
- /// 读取数据返回DataSet
- /// </summary>
- /// <param name="sqrstr"></param>
- /// <returns></returns>
- public DataSet ExecuteQuery(string sqrstr)
- {
- try
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(Config.PostgreConnectionString))
- {
- using (NpgsqlDataAdapter da = new NpgsqlDataAdapter(sqrstr, conn))
- {
- DataSet ds = new DataSet();
- da.Fill(ds, "ds");
- return ds;
- }
- }
- }
- catch (Exception ex)
- {
- Log.Instance.Error("ExecuteQuery:"+ex.Message);
- return null;
- }
- }
-
- /// <summary>
- /// 判断增删改执行状态
- /// </summary>
- /// <param name="sqrstr"></param>
- /// <returns></returns>
- public int ExecuteNonQuery(string sqrstr)
- {
- try
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(Config.PostgreConnectionString))
- {
- using (NpgsqlCommand SqlCommand = new NpgsqlCommand(sqrstr, conn))
- {
- int r = SqlCommand.ExecuteNonQuery(); //执行查询并返回受影响的行数
- conn.Close();
- return r; //r如果是>0操作成功!
- }
- }
- }
- catch (Exception ex)
- {
- Log.Instance.Error("ExecuteNonQuery:"+ex.Message);
- return -1;
- }
- }
-
- /// <summary>
- /// 读取数据返回数据流
- /// </summary>
- /// <param name="cmdText"></param>
- /// <returns></returns>
- public DbDataReader GetReader(string cmdText)
- {
- try
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(Config.PostgreConnectionString))
- {
- using (NpgsqlCommand cmd = new NpgsqlCommand(cmdText, conn))
- {
- NpgsqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- return sdr;
- }
- }
- }
- catch (Exception ex)
- {
- Log.Instance.Error("GetReader:" + ex.Message);
- return null;
- }
- }
- }
这里我们需要引入一个dll,Npgsql;Npgsql封装了一些.NET与PostgreSQL操作方法。
然后我们将一些常用的分析方法进行封装,封装好后以API的方式提供给应用程序使用。
- public class MainGISFunction
- {
- PostgreHelper dbHelper = new PostgreHelper();
- /// <summary>
- /// 判断两个经纬度点之间的距离
- /// 参数格式:经度,纬度
- /// </summary>
- /// <param name="lonlat1">经纬度1</param>
- /// <param name="lonlat2">经纬度2</param>
- /// <returns>直线距离(单位m)/null</returns>
- public DataTable Get
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。