用于将文本文件上载到ArcGIS上的文件地理数据库的C ++代码

时间:2014-07-23 17:46:14

标签: c++ text gdb arcgis

我是C ++初学者,但是经历过ArcGIS(用于地理数据库)以下是我编写的一些代码,用于将文本文件上传到文件地理数据库中......是的,我知道声明,很多东西看起来很疯狂但是我处于截止日期,并且不知道该怎么做(而且只是没有知识)。如果您有任何意见,请告诉我!非常感谢。

问题: -textFile没有上传到gdb - 它被困在一个无限循环中(至少用于将文本文件上传到备份文本文件) -it将打印的东西打印到不在文本文件中的备份文本文件中。 - 可能是我不知道的其他事情。 - 我发布在这里是因为我不确定它将在GIS论坛上得到什么样的响应(更多以python为中心)。如果你认为它会得到很好的建议... lmk。

代码:

#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
using namespace std;
int main()
{
   ifstream textFile;
   ofstream backupFile;
   ofstream gdb;
   string RECORDID;
   string SURVEY_TYPE;
   string CLIENT;
   string CERTIFIED_TO;
   string KEYWORDS;
   string SECTION;
   string TOWNSHIP;
   string RANGE;
   string GRANT;
   string SUBDIVISION;
   string PROPERTY_NOTES;
   string PROPERTY_FOLDER;
   string PROJECT_DWG;
   string FEMA_FIRMETTE;
   string LOT_GRADE;
   string FEMA_ELEVATION;
   string JOB_SHEET;
   string FIELD_NOTES;
   string ENGINEER_FOLDER;
   string ADDRESS;
   string CITY;
   string STATE;
   string ZIPCODE;
   string COUNTY;
   string INTERSECT_STREET;
   string ADDITIONAL_NOTES;
   double LATITUDE;
   double LONGITUDE;
   string HTML;
   string DATE_FIELD_WORK;
   string JOB_NUMBER;
   string SEC_TWN_RNG;
   string PROJECT_PDF;
   string LOT;
   string USER;
   string BLOCK;
   string TRACT;
   string DMS_LAT;
   string DMS_LONG;
   string PLAT_BOOK;
   string PLAT_PGS;
   string UNIT;
   string PHASE;
   string HSE;
   string OWNER;
   string SUBDIVISION_PLAT;
   string CTY_FFE_CERT;
   string JOB_NUM_ID;
   string DATE_ADDED;


   cout << "Textfile uploading" << endl;
   textFile.open("test2.txt");
   backupFile.open("backup2.txt");
   gdb.open("test.gdb\\project");

   textFile >> RECORDID >> SURVEY_TYPE >> CLIENT >> CERTIFIED_TO >> KEYWORDS >> SECTION >> TOWNSHIP >> RANGE >> GRANT >> SUBDIVISION >> PROPERTY_NOTES >> PROPERTY_FOLDER >> PROJECT_DWG >> FEMA_FIRMETTE >> LOT_GRADE >> FEMA_ELEVATION >> JOB_SHEET >> FIELD_NOTES >> ENGINEER_FOLDER >> ADDRESS >> CITY >> STATE >> ZIPCODE >> COUNTY >> INTERSECT_STREET >> ADDITIONAL_NOTES >> LATITUDE >> LONGITUDE >> HTML >> DATE_FIELD_WORK >> JOB_NUMBER >> SEC_TWN_RNG >> PROJECT_PDF >> LOT >> USER >> BLOCK >> TRACT >> DMS_LAT >> DMS_LONG >> PLAT_BOOK >> PLAT_PGS >> UNIT >> PHASE >> HSE >> OWNER >> SUBDIVISION_PLAT >> CTY_FFE_CERT >> JOB_NUM_ID >> DATE_ADDED;

   while(!(textFile.eof()))
   {
       gdb << RECORDID << SURVEY_TYPE << CLIENT << CERTIFIED_TO << KEYWORDS << SECTION << TOWNSHIP << RANGE << GRANT << SUBDIVISION << PROPERTY_NOTES << PROPERTY_FOLDER << PROJECT_DWG << FEMA_FIRMETTE << LOT_GRADE << FEMA_ELEVATION << JOB_SHEET << FIELD_NOTES << ENGINEER_FOLDER << ADDRESS << CITY << STATE << ZIPCODE << COUNTY << INTERSECT_STREET << ADDITIONAL_NOTES << LATITUDE << LONGITUDE << HTML << DATE_FIELD_WORK << JOB_NUMBER << SEC_TWN_RNG << PROJECT_PDF << LOT << USER << BLOCK << TRACT << DMS_LAT << DMS_LONG << PLAT_BOOK << PLAT_PGS << UNIT << PHASE << HSE << OWNER << SUBDIVISION_PLAT << CTY_FFE_CERT << JOB_NUM_ID << DATE_ADDED << endl;
       backupFile << RECORDID << " " << SURVEY_TYPE << " " << CLIENT << " " << CERTIFIED_TO << " " << KEYWORDS << " " << SECTION << " " << TOWNSHIP << " " << RANGE << " " << GRANT << " " << SUBDIVISION << " " << PROPERTY_NOTES << " " << PROPERTY_FOLDER << " " << PROJECT_DWG << " " << FEMA_FIRMETTE << " " << LOT_GRADE << " " << FEMA_ELEVATION << " " << JOB_SHEET << " " << FIELD_NOTES << " " << ENGINEER_FOLDER << " " << ADDRESS << " " << CITY << " " << STATE << " " << ZIPCODE << " " << COUNTY << " " << INTERSECT_STREET << " " << ADDITIONAL_NOTES << " " << LATITUDE << " " << LONGITUDE << " " << HTML << " " << DATE_FIELD_WORK <<  " " << JOB_NUMBER << " " << SEC_TWN_RNG << " " << PROJECT_PDF << " " << LOT << " " << USER << " " << BLOCK << " " << TRACT << " " << DMS_LAT << " " << DMS_LONG << " " << PLAT_BOOK << " " << PLAT_PGS << " " << UNIT << " " << PHASE << " " << HSE << " " << OWNER << " " << SUBDIVISION_PLAT << " " << CTY_FFE_CERT << " " << JOB_NUM_ID << " " << DATE_ADDED << " " << endl;
       cout << "Text file was uploaded." << endl;
   }

   textFile.close();
   backupFile.close();
   gdb.close();

system ("Pause");
return 0;
}

任何建议表示赞赏。非常感谢你!

1 个答案:

答案 0 :(得分:0)

您需要调用ostream::flush()将数据从流写入文件。

while(!(textFile.eof()))
{
    gdb << "All your values...";
}

gdb.flush();
//Close your streams

fstream::close()上调用gdb,就像您正在 将写入任何未决数据一样。我不确定为什么没有发生这种情况,但是调用ostream::flush()也会这样做。