資源簡介
打開txt文件,讀取其中的坐標數據,并利用DP算法進行簡化。其中,txt文件是由shp文件轉化而來,有不同的線對象,每個線對象有各自的很多坐標點,簡化時是根據每個線對象進行簡化,輸出的數據與原數據格式相同,可轉化回shp數據進行顯示。shp、txt格式之間相互轉換的工具在CSDN上面有,用戶可另行下載,親測可以用,程序運行所需的相關數據已一并打包。有任何問題歡迎留言。

代碼片段和文件信息
//?DP.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
int?_tmain(int?argc?_TCHAR*?argv[])
{
return?0;
}
const?int?LineMax=7120;//線對象數目的最大值
const?int?PointMax=120;//每個線對象中點數目的最大值
double?torelance=1.0;//閾值
typedef?struct?point
{
int?i;
long?double?x;
long?double?y;
}POINT;
long?double?datax[LineMax][PointMax]={0.0000000};
long?double?datay[LineMax][PointMax]={0.0000000};
int?t;//記錄txt數據有多少個線段
int?pin[250]={0};//記錄每條線段分別有多少個點;
int?TAG[LineMax][PointMax]={0};
//////////////////////////////////////////////////////////////////////////
int?Readdata(string?);
void?DouglasPeuker(int?int?int?double);
double?cacuDistance(int?int?int?int);
void?Writedata(string?);
//////////////////////////////////////////////////////////////////////////////////////////////////
int?main(int?argc?char*?argv[])
{
//char?path1[]=“F:\\DATA\\Result\\WR.txt“;//打開文件的路徑
//char?path2[]=“F:\\DATA\\Result\\WRDP.txt“;//輸出文件的路徑
string?path1=“F:\\DATA\\Result\\WR.txt“;//打開文件的路徑
//string?path2=“F:\\DATA\\Result\\WRDP2.txt“;//打開文件的路徑
char?buffer[100];
sprintf(buffer“F:\\DATA\\Result\\WRDP2_%f.txt“torelance);
string?path2(buffer);
t=Readdata(path1);
cout<<“線對象總數為:“<
cout<<“閾值為:tolerance=“< for(int?i=0;i DouglasPeuker(0pin[i]-1itorelance);
Writedata(path2);
return?0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
int?Readdata(string?filename)
{
ifstream?fin0;
POINT?point0;
point0.x=0.0;//啟用浮點庫,不加報錯
point0.y=0.0;
int?i=0j=0;//i為線段數目,最后賦給t;j為每條線段的點數;
string??line;
fin0.open(filename);
if?(!fin0.is_open())
{
cout<<“Can‘t?open?the?txt!\n“;
exit(EXIT_FAILURE);
}
getline(fin0line);
getline(fin0line);
getline(fin0line);
cout< while?(fin0.good())
{
while(line.size()>5)
{
istringstream?is(line);//使用構造函數,把str轉化成輸入流??
is>>point0.i;
is>>point0.x;
is>>point0.y;
//cout< datax[i][j]=point0.x;
datay[i][j]=point0.y;
j++;
getline(fin0line);
}
if(fin0.eof())
{
pin[i]=j;
i++;
j=0;
break;
}
else
{
pin[i]=j;
i++;
j=0;
getline(fin0line);
}
}
fin0.close();
return?i;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void?DouglasPeuker(int?leftpointint?rightpointint?ydouble?tolerance)
{
int?imaxindex=0;
double?dismaxdis=0.0;
for?(i=leftpoint;i {
dis=cacuDistance(leftpointrightpointyi);
if?(dis>maxdis)
{
maxdis=dis;
maxindex=i;
}
}
if?(maxdis>tolerance)
{
TAG[y][maxindex]=1;
DouglasPeuker(le
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????121344??2016-05-05?20:59??DP\DP-完成版?-?優化版\Debug\DP.exe
?????文件????1076172??2016-05-05?20:59??DP\DP-完成版?-?優化版\Debug\DP.ilk
?????文件????1248256??2016-05-05?20:59??DP\DP-完成版?-?優化版\Debug\DP.pdb
?????文件?????????10??2016-05-05?19:44??DP\DP-完成版?-?優化版\DP\DATAResultWRCDP.txt
?????文件?????????10??2016-05-05?19:42??DP\DP-完成版?-?優化版\DP\DATAResultW_RDP.txt
?????文件???????3994??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\cl.command.1.tlog
?????文件??????20118??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\CL.read.1.tlog
?????文件???????1756??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\CL.write.1.tlog
?????文件????????406??2016-04-14?10:20??DP\DP-完成版?-?優化版\DP\Debug\DP.exe.em
?????文件????????472??2016-05-05?20:40??DP\DP-完成版?-?優化版\DP\Debug\DP.exe.em
?????文件????????381??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\DP.exe.intermediate.manifest
?????文件?????????89??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\DP.lastbuildstate
?????文件???????2537??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\DP.log
?????文件?????290697??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\DP.obj
?????文件????1179648??2016-05-05?20:39??DP\DP-完成版?-?優化版\DP\Debug\DP.pch
?????文件????????713??2016-04-14?09:42??DP\DP-完成版?-?優化版\DP\Debug\DP.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2016-04-14?09:42??DP\DP-完成版?-?優化版\DP\Debug\DP.write.1.tlog
?????文件????????194??2016-04-14?10:20??DP\DP-完成版?-?優化版\DP\Debug\DP_manifest.rc
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優化版\DP\Debug\li
............此處省略70個文件信息
- 上一篇:MFC 實現ATM系統
- 下一篇:股票模擬交易系統
評論
共有 條評論