-
大小: 2.63MB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-09
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
打開(kāi)txt文件,讀取其中的坐標(biāo)數(shù)據(jù),并利用DP算法進(jìn)行簡(jiǎn)化。其中,txt文件是由shp文件轉(zhuǎn)化而來(lái),有不同的線對(duì)象,每個(gè)線對(duì)象有各自的很多坐標(biāo)點(diǎn),簡(jiǎn)化時(shí)是根據(jù)每個(gè)線對(duì)象進(jìn)行簡(jiǎn)化,輸出的數(shù)據(jù)與原數(shù)據(jù)格式相同,可轉(zhuǎn)化回shp數(shù)據(jù)進(jìn)行顯示。shp、txt格式之間相互轉(zhuǎn)換的工具在CSDN上面有,用戶(hù)可另行下載,親測(cè)可以用,程序運(yùn)行所需的相關(guān)數(shù)據(jù)已一并打包。有任何問(wèn)題歡迎留言。

代碼片段和文件信息
//?DP.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#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;//線對(duì)象數(shù)目的最大值
const?int?PointMax=120;//每個(gè)線對(duì)象中點(diǎn)數(shù)目的最大值
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數(shù)據(jù)有多少個(gè)線段
int?pin[250]={0};//記錄每條線段分別有多少個(gè)點(diǎn);
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“;//打開(kāi)文件的路徑
//char?path2[]=“F:\\DATA\\Result\\WRDP.txt“;//輸出文件的路徑
string?path1=“F:\\DATA\\Result\\WR.txt“;//打開(kāi)文件的路徑
//string?path2=“F:\\DATA\\Result\\WRDP2.txt“;//打開(kāi)文件的路徑
char?buffer[100];
sprintf(buffer“F:\\DATA\\Result\\WRDP2_%f.txt“torelance);
string?path2(buffer);
t=Readdata(path1);
cout<<“線對(duì)象總數(shù)為:“<
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;//啟用浮點(diǎn)庫(kù),不加報(bào)錯(cuò)
point0.y=0.0;
int?i=0j=0;//i為線段數(shù)目,最后賦給t;j為每條線段的點(diǎn)數(shù);
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);//使用構(gòu)造函數(shù),把str轉(zhuǎn)化成輸入流??
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
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件?????121344??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\Debug\DP.exe
?????文件????1076172??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\Debug\DP.ilk
?????文件????1248256??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\Debug\DP.pdb
?????文件?????????10??2016-05-05?19:44??DP\DP-完成版?-?優(yōu)化版\DP\DATAResultWRCDP.txt
?????文件?????????10??2016-05-05?19:42??DP\DP-完成版?-?優(yōu)化版\DP\DATAResultW_RDP.txt
?????文件???????3994??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\cl.command.1.tlog
?????文件??????20118??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\CL.read.1.tlog
?????文件???????1756??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\CL.write.1.tlog
?????文件????????406??2016-04-14?10:20??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.exe.em
?????文件????????472??2016-05-05?20:40??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.exe.em
?????文件????????381??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.exe.intermediate.manifest
?????文件?????????89??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.lastbuildstate
?????文件???????2537??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.log
?????文件?????290697??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.obj
?????文件????1179648??2016-05-05?20:39??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.pch
?????文件????????713??2016-04-14?09:42??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2016-04-14?09:42??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP.write.1.tlog
?????文件????????194??2016-04-14?10:20??DP\DP-完成版?-?優(yōu)化版\DP\Debug\DP_manifest.rc
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
?????文件??????????2??2016-05-05?20:59??DP\DP-完成版?-?優(yōu)化版\DP\Debug\li
............此處省略70個(gè)文件信息
評(píng)論
共有 條評(píng)論