23 #include "base/Optionpk.h"
24 #include "imageclasses/ImgWriterOgr.h"
28 int main(
int argc,
char *argv[])
32 Optionpk<string> ogrformat_opt(
"f",
"f",
"Output sample file format",
"ESRI Shapefile");
35 Optionpk<bool> polygon_opt(
"l",
"line",
"create OGRPolygon as geometry instead of points. Fields are taken from first point and polygon is automatically closed (no need to repeat first point at last line). (false: use OGRPoint)",
false);
36 Optionpk<string> fname_opt(
"n",
"name",
"Field names for the columns in the input ascii file");
37 Optionpk<string> ftype_opt(
"ot",
"ot",
"Field type (Real, Integer, String) for each of the fields as defined by name",
"Real");
38 Optionpk<string> projection_opt(
"a_srs",
"a_srs",
"Override the projection for the output file, use epsg:<code> or Wkt string",
"epsg:4326");
40 Optionpk<int> verbose_opt(
"v",
"verbose",
"verbose (0)", 0,2);
44 doProcess=input_opt.retrieveOption(argc,argv);
45 output_opt.retrieveOption(argc,argv);
46 ogrformat_opt.retrieveOption(argc,argv);
47 colX_opt.retrieveOption(argc,argv);
48 colY_opt.retrieveOption(argc,argv);
49 polygon_opt.retrieveOption(argc,argv);
50 fname_opt.retrieveOption(argc,argv);
51 ftype_opt.retrieveOption(argc,argv);
52 projection_opt.retrieveOption(argc,argv);
53 fs_opt.retrieveOption(argc,argv);
54 verbose_opt.retrieveOption(argc,argv);
56 catch(
string predefinedString){
57 std::cout << predefinedString << std::endl;
62 cout <<
"Usage: pkascii2ogr -i input.txt -o output" << endl;
64 std::cout <<
"short option -h shows basic options only, use long option --help to show all options" << std::endl;
67 if(input_opt.empty()){
68 std::cerr <<
"No input file provided (use option -i). Use --help for help information";
71 if(output_opt.empty()){
72 std::cerr <<
"No output file provided (use option -o). Use --help for help information";
77 theProjection=projection_opt[0];
79 while(ftype_opt.size()<fname_opt.size())
80 ftype_opt.push_back(ftype_opt[0]);
82 vector<OGRFieldType> ftype(ftype_opt.size());
84 cout <<
"field types can be: ";
85 for(
int ifield=0;ifield<fname_opt.size();++ifield){
87 for(
int iType = 0; iType < ogr_typecount; ++iType){
88 if(!ifield&&verbose_opt[0])
89 cout <<
" " << OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType);
90 if( OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType) != NULL
91 && EQUAL(OGRFieldDefn::GetFieldTypeName((OGRFieldType)iType),
92 ftype_opt[ifield].c_str()))
93 ftype[ifield]=(OGRFieldType) iType;
98 cout << endl <<
"field types are: ";
99 for(
int ifield=0;ifield<ftype.size();++ifield)
100 cout << OGRFieldDefn::GetFieldTypeName(ftype[ifield]) <<
" ";
105 imgWriter.open(output_opt[0],ogrformat_opt[0]);
108 imgWriter.ascii2ogr(input_opt[0],
"New Layer", fname_opt, ftype, colX_opt[0], colY_opt[0], theProjection, wkbPolygon, fs_opt[0]);
110 imgWriter.ascii2ogr(input_opt[0],
"New Layer", fname_opt, ftype, colX_opt[0], colY_opt[0], theProjection, wkbPoint, fs_opt[0]);
112 catch(
string errorString){
113 cout << errorString << endl;