⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cenvironment.cs

📁 地理信息 地理信息 地理信息 地理信息
💻 CS
📖 第 1 页 / 共 3 页
字号:
			System.Data.OleDb.OleDbConnection  myConnection = new System.Data.OleDb.OleDbConnection(strConnectionString);   
			myConnection.Open();
			System.Data.DataSet dataSet = new System.Data.DataSet("临时库");
			System.Data.OleDb.OleDbDataAdapter myDataAdapter;

			string szSQL;
			szSQL = "Select * From 多媒体索引 Where 名称 ='"+szName+"'";

			myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(szSQL,myConnection);
			myDataAdapter.Fill(dataSet,"多媒体索引");

			System.Data.DataTable indexTbl = dataSet.Tables["多媒体索引"];
			
			System.Data.DataRow[] rowsType = indexTbl.Select();

			if (0 == rowsType.Length)
				return false;
	
			return true;		
		}

		public MLine  CreateLine(MapObjects2.Line moline)
		{
			
			MLine line = new MLine();
			MapObjects2.Points pts = (MapObjects2.Points)moline.Parts.Item(0);
			
			line.nPointNumber = pts.Count;
			line.pPoint = new MPoint[line.nPointNumber]; 

			for (int i = 0; i < line.nPointNumber; i++)
			{
				MapObjects2.Point pt = (MapObjects2.Point)pts.Item(i); 
				line.pPoint[i] = new MPoint(); 
				line.pPoint[i].x = pt.X;
				line.pPoint[i].y = pt.Y;
			}


			return line;

			
		}


		public MapObjects2.Point GetPoint(string szName)
		{
			MapObjects2.Point pt = null;

			string szLayer = GetLayerName(szName,"地名索引");   
			string szTable = GetTableName(szName,"地名索引");
			
			if ("" == szTable)
			{
				return null;
			}
			int nIndex =  GetLayerIndexByName(szTable); 

			if (nIndex < 0)
				return null;

			//			if (!m_layerInfos[nIndex].layer.Visible)
			//			{
			//				return null;
			//			}
			//
			MapObjects2.Recordset rs;
			rs = m_layerInfos[nIndex].layer.SearchExpression("名称 like '" + szName + "'");
			
			if (rs != null)
			{
				rs.MoveFirst();
 
				if (!rs.EOF) 
				{

					switch (m_layerInfos[nIndex].layer.shapeType)
					{
						case MapObjects2.ShapeTypeConstants.moShapeTypePoint:
						{
							pt = (MapObjects2.Point)rs.Fields.Item("shape").Value;
						}
							break;
						case MapObjects2.ShapeTypeConstants.moShapeTypeLine:
						{
							MapObjects2.Line line;
							line = (MapObjects2.Line)(rs.Fields.Item("shape").Value);
							pt = line.Extent.Center;  
						}
							break;
						case MapObjects2.ShapeTypeConstants.moShapeTypePolygon:
						{
							MapObjects2.Polygon  poly;
							poly = (MapObjects2.Polygon)(rs.Fields.Item("shape").Value);
							pt = poly.Extent.Center;  
						}
							break;
					} 
					

				}
			}
		
			return pt;
		}

		public MapObjects2.Line GetLine(string szName)
		{
			MapObjects2.Line line = null;

			string szLayer = GetLayerName(szName,"地名索引");   
			string szTable = GetTableName(szName,"地名索引");
			
			if ("" == szTable)
			{
				return null;
			}
			int nIndex =  GetLayerIndexByName(szTable); 

			if (nIndex < 0)
				return null;

			//			if (!m_layerInfos[nIndex].layer.Visible)
			//			{
			//				return null;
			//			}

			MapObjects2.Recordset rs;
			rs = m_layerInfos[nIndex].layer.SearchExpression("名称 like '" + szName + "'");
			
			if (rs != null)
			{
				rs.MoveFirst();
 
				if (!rs.EOF) 
				{

					switch (m_layerInfos[nIndex].layer.shapeType)
					{
						case MapObjects2.ShapeTypeConstants.moShapeTypePoint:
							return line;
						case MapObjects2.ShapeTypeConstants.moShapeTypeLine:
							line = (MapObjects2.Line)(rs.Fields.Item("shape").Value);
							break;
						case MapObjects2.ShapeTypeConstants.moShapeTypePolygon:
							return line;
						default:
							break;
					} 
					
				}
			}
		
			return line;
		}	

		public MPoint FromMapPoint(AxMapObjects2.AxMap map, double x,double y)
		{
			MPoint pt = new MPoint();
			double dW = System.Math.Abs( map.Extent.Right - map.Extent.Left);
			double dH = System.Math.Abs(map.Extent.Top-map.Extent.Bottom)  ;
			
			double dRatio = 1.0;
			double dOrgX=0;
			double dOrgY=0;

			if(map.Width/dW>map.Height/dH)		//横向居中
			{
				dRatio = map.Height /dH;
				dOrgX = (map.Width-dW*dRatio)/2;
			}
			else if(map.Width/dW<map.Height/dH)		//纵向居中
			{
				dRatio = map.Width /dW;
				dOrgY = (map.Height-dH*dRatio)/2;
			}

			pt.x  = (x-map.Extent.Left)*dRatio+dOrgX;
			pt.y  = map.Height-(y-map.Extent.Bottom)*dRatio+dOrgY;
			
			return pt;
		}

		public void DrawLine( AxMapObjects2.AxMap map)
		{
			if (m_drawLine == null)
				return;

			System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd((System.IntPtr)map.hWnd);

			System.Drawing.Pen pen = new System.Drawing.Pen(System.Drawing.Color.Red,3); 
 
			for (int i = 0; i < m_drawLine.Length; i ++)
			{
				System.Drawing.Point[] pts = new System.Drawing.Point[m_drawLine[i].nPointNumber];
				for (int j = 0; j < m_drawLine[i].nPointNumber; j ++)
				{
					MPoint pt =FromMapPoint(map,m_drawLine[i].pPoint[j].x,m_drawLine[i].pPoint[j].y);
					
					pts[j] = new System.Drawing.Point((int)pt.x,(int)pt.y ); 
				}
				g.DrawLines(pen,pts);
			}
			  
		}

		/// //////////////////////////////////////////////////////////////////////////////////////////////
		/// 功能:计算地图比例尺
		/// 参数:AxMapObjects2.AxMap map
		/// 返回值:地图比例尺
		/// /////////////////////////////////////////////////////////////////////////////////////////////
		public double CalcScale(AxMapObjects2.AxMap map)
		{
			System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd((System.IntPtr)map.hWnd);

			MPoint[] pts = new MPoint[2];
			pts[0] = new MPoint();
			pts[0].x = map.Extent.Left;
			pts[0].y = map.Extent.Top;
			pts[1] = new MPoint();
			pts[1].x = map.Extent.Right;
			pts[1].y = map.Extent.Top;
  
			double dLen1 = this.CalcLenght(pts,2);
 
			double dLen2 = map.Width / g.DpiX * 2.54 /100;
 
			return dLen1 / dLen2;

		}

		/// //////////////////////////////////////////////////////////////////////////////////////////////
		/// 功能:计算地图比例尺
		/// 参数:AxMapObjects2.Rectangle extent
		/// 返回值:地图比例尺
		/// /////////////////////////////////////////////////////////////////////////////////////////////
		public double CalcScale(AxMapObjects2.AxMap map,MapObjects2.Rectangle extent)
		{
			System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd((System.IntPtr)map.hWnd);

			MPoint[] pts = new MPoint[2];
			pts[0] = new MPoint();
			pts[0].x = extent.Left;
			pts[0].y = extent.Top;
			pts[1] = new MPoint();
			pts[1].x = extent.Right;
			pts[1].y = extent.Top;
  
			double dLen1 = this.CalcLenght(pts,2);
 
			double dLen2 = map.Width / g.DpiX * 2.54 /100;
 
			return dLen1 / dLen2;

		}

		/// //////////////////////////////////////////////////////////////////////////////////////
		//功能:得到公交线路上车站
		//参数:[in]object node 乘车路线结构
		//      [in]int nIndex 第几次换乘
		//      [out]Buses buses 车站数组
		//      [out]int nCount 车站数目
		//返回值:true 成功
		/// //////////////////////////////////////////////////////////////////////////////////////
		public bool GetStation(object node, int nIndex,Buses buses, ref int nCount)
		{
			PathNode line = (PathNode)node;

			int nOrder1,nOrder2;
			nOrder1 = GetStationOrder(line.szRoutineName[nIndex],line.szFromStationName[nIndex]);  
			nOrder2 = GetStationOrder(line.szRoutineName[nIndex],line.szToStationName[nIndex]);  

			if ((nOrder1 < 0) || (nOrder2 < 0))
				return false;

			string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_szDBName + 
				";Persist Security Info=False";		
			System.Data.OleDb.OleDbConnection  myConnection = new System.Data.OleDb.OleDbConnection(strConnectionString);   
			myConnection.Open();
			System.Data.DataSet dataSet = new System.Data.DataSet("临时库");
			System.Data.OleDb.OleDbDataAdapter myDataAdapter;

			string szSQL;
			szSQL = "Select * From 公交车站路线 " +  " Where 线路名 ='"+line.szRoutineName[nIndex]+"' And 顺序 Between "+nOrder1.ToString() +" And "+nOrder2.ToString() ;

			myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(szSQL,myConnection);
			myDataAdapter.Fill(dataSet,"索引");

			System.Data.DataTable indexTbl = dataSet.Tables["索引"];
			
			System.Data.DataRow[] rowsType = indexTbl.Select();

			if (0 == rowsType.Length)
				return false;

			foreach (System.Data.DataRow myRow in rowsType)
			{
				buses.pts[nCount]  = new MPoint();

				string szStation = "";
				szStation = myRow["站名"].ToString();

				if (!GetStationPt(szStation,buses.pts[nCount]))
				{
					buses.pts[nCount].x = -1;
					buses.pts[nCount].y = -1;
				}
				nCount ++;

			}

			return true;

		}

		/// //////////////////////////////////////////////////////////////////////////////////////
		//功能:得到公交线路上车站
		//参数:[in]string szLineName 公交线路名
		//      [out]Buses buses 车站数组
		//      [out]int nCount 车站数目
		//返回值:true 成功
		/// //////////////////////////////////////////////////////////////////////////////////////
		public bool GetStation(string szLineName,Buses buses, ref int nCount)
		{

			string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_szDBName + 
				";Persist Security Info=False";		
			System.Data.OleDb.OleDbConnection  myConnection = new System.Data.OleDb.OleDbConnection(strConnectionString);   
			myConnection.Open();
			System.Data.DataSet dataSet = new System.Data.DataSet("临时库");
			System.Data.OleDb.OleDbDataAdapter myDataAdapter;

			string szSQL;
			szSQL = "Select * From 公交车站路线 " +  " Where 线路名 ='"+szLineName +"'" ;

			myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(szSQL,myConnection);
			myDataAdapter.Fill(dataSet,"索引");

			System.Data.DataTable indexTbl = dataSet.Tables["索引"];
			
			System.Data.DataRow[] rowsType = indexTbl.Select();

			if (0 == rowsType.Length)
				return false;

			foreach (System.Data.DataRow myRow in rowsType)
			{
				buses.pts[nCount]  = new MPoint();

				string szStation = "";
				szStation = myRow["站名"].ToString();

				if (!GetStationPt(szStation,buses.pts[nCount]))
				{
					buses.pts[nCount].x = -1;
					buses.pts[nCount].y = -1;
				}
				nCount ++;

			}

			return true;

		}

		public MapObjects2.MapLayer GetLayerByName(string szName)
		{
			int i;
			for (i = 0; i < this.m_nLayerNum - 1; i ++)
			{
				if (this.m_layerInfos[i].szName.Equals(szName))
					break;
			}

			if (i == this.m_nLayerNum)
				return null;					;
			return m_layerInfos[i].layer; 
		}

		public bool IsStation(AxMapObjects2.AxMap map,string szName)
		{
			int i;
			for (i = 0; i < this.m_nLayerNum ; i ++)
			{
				if (this.m_layerInfos[i].szName.Equals(CEnvironment.BUSSTATION_LAYERNAME))
					break;
			}

			if (i == this.m_nLayerNum)
				return false;
			MapObjects2.MapLayer ly = m_layerInfos[i].layer; 
			MapObjects2.Recordset rs = ly.SearchExpression("名称 like '"+szName +"'");;
			
			if (rs == null)
				return false;

			rs.MoveFirst();
 
			if (rs.EOF) 
				return false;

			return true;
		}

		public bool IsBusLine(AxMapObjects2.AxMap map,string szName)
		{
			int i;

			for (i = 0; i < this.m_nLayerNum; i ++)
			{
				if (this.m_layerInfos[i].szName.Equals(CEnvironment.BUSLINE_LAYERNAME))
					break;
			}

			if (i == this.m_nLayerNum)
				return false;

			MapObjects2.MapLayer ly = m_layerInfos[i].layer;  
			MapObjects2.Recordset rs = ly.SearchExpression("名称 like '"+szName +"'");;
			
			if (rs == null)
				return false;

			rs.MoveFirst();
 
			if (rs.EOF) 
				return false;

			return true;
		}

		/// ////////////////////////////////////////////////////////////////////////////////////////////
		/// 功能:得到给定的车站名的地理坐标
		/// 参数:[in]string szLineName 公交线路名
		///		  [out]MPoint pt 公交车的地理坐标
		/// 返回值:false 失败
		/// ////////////////////////////////////////////////////////////////////////////////////////////
		public bool GetStationPt(string szStationName, MPoint pt)
		{
			string szName = szStationName;
			string szLayer = GetLayerName(szName,"地名索引");   
			string szTable = GetTableName(szName,"地名索引");
			
			int nIndex =  GetLayerIndexByName(szTable); 

			if (nIndex < 0)
				return false;

			MapObjects2.Recordset rs;
			rs = m_layerInfos[nIndex].layer.SearchExpression("名称 like '"+szName +"'");
			if (rs != null)
			{
				rs.MoveFirst();
 
				if (!rs.EOF) 
				{

					MapObjects2.Point pt1;

					pt1 = (MapObjects2.Point)rs.Fields.Item("shape").Value;
					pt.x = pt1.X;
					pt.y = pt1.Y;

					return true;
				}
			}

			return false;
		}

		/// ////////////////////////////////////////////////////////////////////////////////////////////
		/// 功能:得到给定的车站名在给定的公交线路上的车站顺序(如第2站)
		/// 参数:[in]string szLineName 公交线路名
		///		  [in]string szStationName 公交车站名
		/// 返回值:> 0 车站顺序,否则失败
		/// ////////////////////////////////////////////////////////////////////////////////////////////
		public int GetStationOrder(string szLineName, string szStationName)
		{

			string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + m_szDBName + 
				";Persist Security Info=False";		
			System.Data.OleDb.OleDbConnection  myConnection = new System.Data.OleDb.OleDbConnection(strConnectionString);   
			myConnection.Open();
			System.Data.DataSet dataSet = new System.Data.DataSet("临时库");
			System.Data.OleDb.OleDbDataAdapter myDataAdapter;

			string szSQL;
			szSQL = "Select * From 公交车站路线 " +  " Where 线路名 ='"+szLineName+"' And 站名 ='"+szStationName+" '";

			myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(szSQL,myConnection);
			myDataAdapter.Fill(dataSet,"索引");

			System.Data.DataTable indexTbl = dataSet.Tables["索引"];
			
			System.Data.DataRow[] rowsType = indexTbl.Select();

			if (0 == rowsType.Length)
				return -1;

			return (int)rowsType[0]["顺序"];		
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -