亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? environment.cpp

?? 電子地圖 地理信息系統二次開發實例教程-C#和MapObjects實現程序源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return FALSE;
	}
    
    if(tmpDB)
	{
		if(tmpDB->IsOpen())
		{
			tmpDB->Close();
		}

		delete tmpDB;
		tmpDB = NULL;
	}

	return TRUE;
}
//-----------------------------------------------------------------------------------------
// 功能:得到給定的車站名在給定的公交線路上的車站順序(如第2站)
// 參數:CString szLineName 公交線路名
//		 CString szStationName 公交車站名
// 返回值:> 0 車站順序,否則失敗
//-----------------------------------------------------------------------------------------
int CEnvironment::GetStationOrder(CString szLineName, CString szStationName)
{
	CDaoDatabase* tmpDB = new CDaoDatabase;
	try
	{
		tmpDB->Open(m_szDBName);
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return -1;
	}

	int nResult = -1;
	CDaoRecordset rs(tmpDB);
	try
	{
		CString szSQL;
		szSQL = "Select * From 公交車站路線 Where 線路名 ='" + szLineName + "' And 站名 ='" + szStationName + " '";
		rs.Open(dbOpenDynaset, szSQL);
        
		if (0 == rs.GetRecordCount())
			nResult = -1;
		else
		{
			COleVariant var = rs.GetFieldValue("順序");
			nResult = atoi(CCrack::strVARIANT(var));
		}
		
		rs.Close();
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return -1;
	}
    
    if(tmpDB)
	{
		if(tmpDB->IsOpen())
		{
			tmpDB->Close();
		}

		delete tmpDB;
		tmpDB = NULL;
	}

	return nResult;
}
//-----------------------------------------------------------------------------------------
// 功能:得到給定的車站名的地理坐標
// 參數:CString szLineName 公交線路名
//		 MPoint pt 公交車的地理坐標
// 返回值:FALSE 失敗
BOOL CEnvironment::GetStationPt(CString szStationName, MPoint* pt)
{
	CString szName = szStationName;
	CString szLayer = GetLayerName(szName,"地名索引");   
	CString szTable = GetTableName(szName,"地名索引");
    
	int nIndex =  GetLayerIndexByName(szTable); 
	if (nIndex < 0)
		return FALSE;
    
	CMoRecordset rs;
	rs = m_layerInfos[nIndex].layer.SearchExpression("名稱 like '"+szName +"'");
	if (rs)
	{
		rs.MoveFirst();
        
		if (!rs.GetEof()) 
		{
			CMoFields fields(rs.GetFields());
			CMoField  shapeField(fields.Item(COleVariant(TEXT("Shape"))));
			CMoPoint pt1(shapeField.GetValue().pdispVal);
			pt->x = pt1.GetX();
			pt->y = pt1.GetY();
            
			return TRUE;
		}
	}    
	
	return FALSE;
}
//-----------------------------------------------------------------------------------------
// 將地圖坐標中的點換算為屏幕坐標的點
MPoint CEnvironment::FromMapPoint(CMap1* map, double x,double y)
{
	MPoint pt;
	double dW = fabs(map->GetExtent().GetRight() - map->GetExtent().GetLeft());
	double dH = fabs(map->GetExtent().GetTop() - map->GetExtent().GetBottom())  ;
    
	double dRatio = 1.0;
	double dOrgX=0;
	double dOrgY=0;

	CRect* lpRect = new CRect();
	map->GetWindowRect(lpRect);    
	if(lpRect->Width()/dW > lpRect->Height()/dH) //橫向居中
	{
		dRatio = lpRect->Height() /dH;
		dOrgX = (lpRect->Width() - dW * dRatio)/2;
	}
	else if(lpRect->Width() / dW < lpRect->Height() / dH) //縱向居中
	{
		dRatio = lpRect->Width() /dW;
		dOrgY = (lpRect->Height() - dH * dRatio)/2;
	}
    
	pt.x  = (x - map->GetExtent().GetLeft()) * dRatio + dOrgX;
	pt.y  = lpRect->Height() - (y - map->GetExtent().GetBottom()) * dRatio + dOrgY;
    
	delete lpRect;
	return pt;
}
//-----------------------------------------------------------------------------------------
CMoLine CEnvironment::GetLine(CString szName)
{
	CMoLine line;
    CString szLayer = GetLayerName(szName,"地名索引");   
	CString szTable = GetTableName(szName,"地名索引");
    
	if ("" == szTable)
	{
		return NULL;
	}
	int nIndex =  GetLayerIndexByName(szTable); 

	if (nIndex < 0)
		return NULL;
	
	CMoRecordset rs;
	rs = m_layerInfos[nIndex].layer.SearchExpression("名稱 like '" + szName + "'");
    
	if (rs)
	{
		rs.MoveFirst();
        
		if (!rs.GetEof()) 
		{
			switch (m_layerInfos[nIndex].layer.GetShapeType())
			{
			case moShapeTypePoint:
				return line;
			case moShapeTypeLine:
				line = rs.GetFields().Item(COleVariant("shape")).GetValue().pdispVal;
				break;
			case moShapeTypePolygon:
				return line;
			default:
				break;
			} 
            
		}
	}
    
	return line;
}
//-----------------------------------------------------------------------------------------
CMoPoint CEnvironment::GetPoint(CString szName)
{
	CMoPoint pt;
	CString szLayer = GetLayerName(szName,"地名索引");   
	CString szTable = GetTableName(szName,"地名索引");
    
	if ("" == szTable)
	{
		return NULL;
	}
	int nIndex =  GetLayerIndexByName(szTable); 
    
	if (nIndex < 0)
		return NULL;
	
	CMoRecordset rs;
	rs = m_layerInfos[nIndex].layer.SearchExpression("名稱 like '" + szName + "'");

	if (rs)
	{
		rs.MoveFirst();
        
		if (!rs.GetEof())
		{
			switch (m_layerInfos[nIndex].layer.GetShapeType())
			{
			case moShapeTypePoint:
				{
					pt = rs.GetFields().Item(COleVariant("shape")).GetValue().pdispVal;
				}
				break;
			case moShapeTypeLine:
				{
					CMoFields fields(rs.GetFields());
					CMoField  shapeField(fields.Item(COleVariant(TEXT("Shape"))));
					CMoLine line(shapeField.GetValue().pdispVal);
					pt = line.GetExtent().GetCenter();  
				}
				break;
			case moShapeTypePolygon:
				{
					CMoFields fields(rs.GetFields());
					CMoField  shapeField(fields.Item(COleVariant(TEXT("Shape"))));
					CMoPolygon  poly(shapeField.GetValue().pdispVal);
					pt = poly.GetExtent().GetCenter();  
				}
				break;
			} 
		}
	}
    
	return pt;
}
//-----------------------------------------------------------------------------------------
MLine* CEnvironment::CreateLine(CMoLine moline)
{
	MLine* line = new MLine();
	CMoPoints pts = moline.GetParts().Item(COleVariant(long(0), VT_I4));
    
	line->nPointNumber = pts.GetCount();
	line->pPoint = new MPoint[line->nPointNumber]; 
    
	for (long i = 0; i<line->nPointNumber; i++)
	{
		CMoPoint pt = pts.Item(COleVariant(i, VT_I4)); 
        line->pPoint[i].x = pt.GetX();
		line->pPoint[i].y = pt.GetY();
	}
	
	return line;
}
//-----------------------------------------------------------------------------------------
// 判斷由參數szName指定的字符串是否是一有效的公交線路名稱
BOOL CEnvironment::IsBusLine(CString szName)
{
	int i;
	for (i = 0; i<m_nLayerNum; i ++)
	{
		if (m_layerInfos[i].szName == "公交線路")
			break;
	}

	if (i == m_nLayerNum)
		return FALSE;

	CMoMapLayer ly = m_layerInfos[i].layer;  
	CMoRecordset rs = ly.SearchExpression("名稱 like '"+szName +"'");;
			
	if (!rs)
		return FALSE;

	rs.MoveFirst(); 
	if (rs.GetEof())
		return FALSE;

	return TRUE;
}
//-----------------------------------------------------------------------------------------
// 根據名稱得到圖層
CMoMapLayer CEnvironment::GetLayerByName(CString szName)
{
	int i;
	for (i = 0; i<m_nLayerNum - 1; i ++)
	{
		if (m_layerInfos[i].szName == szName)
			break;
	}

	if (i == m_nLayerNum)
		return NULL;
	return m_layerInfos[i].layer; 
}
//-----------------------------------------------------------------------------------------
// 判斷由參數szName指定的字符串是否是一有效的站點名稱
BOOL CEnvironment::IsStation(CString szName)
{
	int i;
	for (i = 0; i<m_nLayerNum ; i ++)
	{
		if (m_layerInfos[i].szName == "公交車站")
			break;
	}

	if (i == m_nLayerNum)
		return FALSE;
	CMoMapLayer ly = m_layerInfos[i].layer; 
	CMoRecordset rs = ly.SearchExpression("名稱 like '"+szName +"'");;
			
	if (!rs)
		return FALSE;

	rs.MoveFirst(); 
	if (rs.GetEof())
		return FALSE;

	return TRUE;
}
//-----------------------------------------------------------------------------------------
CString CEnvironment::GetFieldName(CString szName)
{
	CString szTable = GetTableName(szName,"地名索引");
	CString szFieldName = "單位名稱";

	CDaoDatabase* tmpDB = new CDaoDatabase;
	try
	{
		tmpDB->Open(m_szDBName);
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return "";
	}

	CString szTableName = "";
	CDaoRecordset rs(tmpDB);
	try
	{
		CString szSQL;
		szSQL = "Select * From "+ m_mapInfos[m_nCurrMapIndex].szMetaTable 
			    + " Where 屬性表名 ='"+szTable+"'";
        
		rs.Open(dbOpenDynaset, szSQL);
		if (0 == rs.GetRecordCount())
			return szFieldName;

		COleVariant var;
		var = rs.GetFieldValue("字段名");
		szFieldName = CCrack::strVARIANT(var);
		if(szFieldName == "NULL")
			szFieldName = "";

		rs.Close(); // 關閉數據表
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		delete tmpDB;
		e->Delete();
		return "";
	}
    
    if(tmpDB)
	{
		if(tmpDB->IsOpen())
		{
			tmpDB->Close();
		}

		delete tmpDB;
		tmpDB = NULL;
	}
	
	return szFieldName;
}
//-----------------------------------------------------------------------------------------
double CEnvironment::GetLineLength(CMoLine line)
{
	MPoint* pt;
	int nPtCount;
	CMoPoints pts;    
	pts = line.GetParts().Item(COleVariant(long(0), VT_I4));
	nPtCount = pts.GetCount();
    
	if (nPtCount < 2)
		return 0.0;
    
	pt = new MPoint[nPtCount];   
	for (long i = 0; i < nPtCount; i ++)
	{
		CMoPoint point(pts.Item(COleVariant(i, VT_I4)));
		pt[i].x = point.GetX();
		pt[i].y = point.GetY(); 
	}
    
	double length = CalcLenght(pt, nPtCount);
	delete pt;
	pt = NULL;

	return length;
}
//-----------------------------------------------------------------------------------------
double CEnvironment::GetPolygonLength(CMoPolygon poly)
{
	MPoint* pt;
	int nPtCount;			
	CMoPoints pts;
	pts = poly.GetParts().Item(COleVariant(long(0), VT_I4));
	nPtCount = pts.GetCount();
    
	if (nPtCount < 2)
		return 0.0;
    
	pt = new MPoint[nPtCount+1];
	for (long i=0; i<nPtCount; i ++)
	{
		CMoPoint point(pts.Item(COleVariant(i, VT_I4)));
		pt[i].x = point.GetX();
		pt[i].y = point.GetY(); 
	}
    
	pt[nPtCount].x = pt[0].x;
	pt[nPtCount].y = pt[0].y;
    
	double dLength = CalcLenght(pt, nPtCount+1);
	delete pt;
	pt = NULL;

	return dLength;
}
//-----------------------------------------------------------------------------------------
double CEnvironment::GetPolygonArea(CMoPolygon poly)
{
	MPoint* pt;
	int nPtCount;
	CMoPoints pts;
    pts = poly.GetParts().Item(COleVariant(long(0), VT_I4));
	nPtCount = pts.GetCount();
    
	if (nPtCount < 3)
		return 0.0;
    
	pt = new MPoint[nPtCount+1];
    for (long i=0; i<nPtCount; i ++)
	{
		CMoPoint point(pts.Item(COleVariant(i, VT_I4)));
		pt[i].x = point.GetX();
		pt[i].y = point.GetY(); 
	}
	
	pt[nPtCount].x = pt[0].x;
	pt[nPtCount].y = pt[0].y;
    
	double dArea = CalcArea(pt, nPtCount+1);
	delete pt;
	pt = NULL;

	return dArea;
}
//-----------------------------------------------------------------------------------------
double CEnvironment::CalcArea(MPoint* pt,int nSize)
{
	double dArea = 0;
	double x1=0, x2=0, y1=0, y2=0;
	int nCenterL = ((int)(pt[0].x) / 6 + 1 ) * 6 - 3; 
    
	for(int i=0; i<nSize-1; i++)
	{
		CalGuassFromLB(pt[i].x, pt[i].y, &x1, &y1, nCenterL);
		CalGuassFromLB(pt[i+1].x, pt[i+1].y, &x2, &y2, nCenterL);
		dArea += (x2 - x1 ) * ( y1 + y2) / 2;
	}
    
	if (dArea < 0)
		dArea = 0 - dArea; 
	return dArea;
}
//-----------------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文幕一区二区三区久久蜜桃| 亚洲啪啪综合av一区二区三区| 日本一区二区三区在线观看| 亚洲男人天堂av网| 国产综合久久久久久久久久久久| 色美美综合视频| 国产色产综合色产在线视频| 亚洲va国产天堂va久久en| 成人一级片网址| 精品国产一区二区三区久久久蜜月| 亚洲男人的天堂在线aⅴ视频| 久久国产精品99久久人人澡| 欧美精品自拍偷拍| 亚洲日本青草视频在线怡红院| 精一区二区三区| 91精品国产日韩91久久久久久| 亚洲精品视频免费看| 成人免费看视频| 久久久不卡影院| 国产乱码精品1区2区3区| 欧美va亚洲va国产综合| 日韩国产一二三区| 欧美群妇大交群中文字幕| 伊人夜夜躁av伊人久久| 99精品久久久久久| 亚洲人成亚洲人成在线观看图片 | 亚洲精品在线观看网站| 日日夜夜精品视频天天综合网| 一本到一区二区三区| 综合欧美亚洲日本| caoporen国产精品视频| 国产精品福利在线播放| 国产91精品欧美| 国产精品白丝在线| 99热99精品| 亚洲精品写真福利| 欧美视频日韩视频在线观看| 亚洲精品福利视频网站| 91成人免费网站| 午夜不卡av在线| 日韩视频中午一区| 国产一区在线观看麻豆| 久久久久久久久久看片| 波多野结衣的一区二区三区| 亚洲天堂av老司机| 欧美日韩一区二区在线视频| 午夜电影一区二区三区| 日韩免费高清电影| 国产成人精品1024| 亚洲蜜桃精久久久久久久| 欧美色图激情小说| 天涯成人国产亚洲精品一区av| 在线综合+亚洲+欧美中文字幕| 日本成人在线看| 欧美激情中文不卡| 色综合中文字幕国产| 亚洲影院免费观看| 日韩精品中文字幕一区| 成人一区在线观看| 亚洲国产你懂的| 2022国产精品视频| 91欧美激情一区二区三区成人| 天堂蜜桃91精品| 中文字幕av不卡| 欧美日韩高清不卡| 国产美女主播视频一区| 依依成人精品视频| 久久久精品一品道一区| 欧美视频在线观看一区| 国产一区二区三区国产| 一区二区三区四区不卡在线 | 免费日韩伦理电影| 国产精品欧美综合在线| 欧美精品1区2区3区| 成人小视频免费在线观看| 性做久久久久久免费观看欧美| 久久久久久久久一| 91精品啪在线观看国产60岁| 99久久精品国产毛片| 久久se精品一区精品二区| 一区二区三区**美女毛片| 久久婷婷一区二区三区| 欧美日韩高清一区二区三区| 欧美主播一区二区三区| 激情综合亚洲精品| 亚洲一线二线三线久久久| 久久精品欧美一区二区三区麻豆| 欧美另类久久久品| 色老汉一区二区三区| 懂色av中文字幕一区二区三区| 日本大胆欧美人术艺术动态| 亚洲精品免费电影| 日韩一区在线看| 久久久久国产精品麻豆ai换脸 | 日韩av中文字幕一区二区三区| 国产精品毛片高清在线完整版| 日韩一区二区免费在线观看| 欧美日韩一区高清| 色香蕉成人二区免费| 波多野结衣中文一区| 国产精品一区二区三区四区| 老司机午夜精品| 青青草视频一区| 日韩制服丝袜av| 日日夜夜免费精品| 午夜精品久久久久影视| 夜夜精品视频一区二区| 亚洲三级小视频| 综合精品久久久| 亚洲欧美怡红院| 亚洲天天做日日做天天谢日日欢| 国产视频亚洲色图| 国产精品沙发午睡系列990531| 国产亚洲人成网站| 久久综合久久综合九色| 久久久久国产免费免费| 国产欧美精品一区二区色综合朱莉 | 亚洲一级二级三级| 亚洲一区二区三区爽爽爽爽爽| 亚洲精品五月天| 亚洲国产综合91精品麻豆| 亚洲精品高清视频在线观看| 一区二区视频在线看| 亚洲国产日韩a在线播放性色| 亚洲宅男天堂在线观看无病毒| 亚洲女女做受ⅹxx高潮| 综合激情成人伊人| 亚洲一区二区在线视频| 五月天亚洲婷婷| 日韩国产精品久久久久久亚洲| 美美哒免费高清在线观看视频一区二区| 麻豆国产精品视频| 国产精品18久久久久| 成人av资源在线观看| 欧美亚洲综合网| 91精品国产高清一区二区三区| 欧美不卡在线视频| 国产精品国产三级国产a| 亚洲精品一二三| 麻豆高清免费国产一区| 成人高清免费在线播放| 在线欧美一区二区| 精品国产青草久久久久福利| 欧美激情一区不卡| 亚洲第一成人在线| 狠狠v欧美v日韩v亚洲ⅴ| 99精品欧美一区二区蜜桃免费| 欧美丰满少妇xxxbbb| 久久亚洲综合色一区二区三区| 成人欧美一区二区三区视频网页| 亚洲第一二三四区| 国产99精品视频| 欧美日韩国产首页| 国产亚洲一区字幕| 午夜天堂影视香蕉久久| 国产一区二区在线电影| 一本在线高清不卡dvd| 日韩一区二区在线观看| 国产精品女主播av| 久久精品国产成人一区二区三区| 不卡大黄网站免费看| 日韩精品一区二区三区中文不卡 | 成人欧美一区二区三区视频网页 | 亚洲在线视频网站| 国产一区二区三区| 欧美嫩在线观看| 中文字幕一区二区三区av | 午夜视频一区在线观看| 国产激情视频一区二区三区欧美| 色老汉一区二区三区| 亚洲国产精品av| 激情六月婷婷久久| 欧美精品久久久久久久多人混战| 久久女同性恋中文字幕| 青青青伊人色综合久久| 欧美视频一区二| ...中文天堂在线一区| 国产在线看一区| 日韩欧美一区在线| 午夜精品爽啪视频| 在线观看免费亚洲| 亚洲欧美日韩国产综合在线 | 青青青伊人色综合久久| 欧美亚洲动漫制服丝袜| 亚洲婷婷综合久久一本伊一区| 国产裸体歌舞团一区二区| 日韩亚洲欧美在线| 天天综合日日夜夜精品| 欧美性感一类影片在线播放| 亚洲人妖av一区二区| jlzzjlzz亚洲女人18| 国产欧美一区二区精品久导航| 国产伦精品一区二区三区免费迷| 91精品国产丝袜白色高跟鞋| 亚洲午夜久久久久久久久电影网| 一本大道av伊人久久综合| 国产精品伦一区| 99久久久精品| 亚洲精品免费一二三区| 欧美性大战久久|