Changeset 639:a819cae56a57
- Timestamp:
- 05/12/08 18:43:41 (2 years ago)
- Branch:
- default
- Convert:
- svn:1766ff46-f334-0410-ab20-d63176f87757/trunk@706
- Location:
- apps
- Files:
-
- 2 edited
-
Makefile.am (modified) (1 diff)
-
las2ogr.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
apps/Makefile.am
r636 r639 7 7 txt2las_SOURCES = txt2las.c 8 8 9 if GDAL_IS_CONFIG10 las2ogr_SOURCES = las2ogr.cpp11 bin_PROGRAMS = lasinfo las2las lasmerge las2txt txt2las las2ogr12 else9 #if GDAL_IS_CONFIG 10 #las2ogr_SOURCES = las2ogr.cpp 11 #bin_PROGRAMS = lasinfo las2las lasmerge las2txt txt2las las2ogr 12 #else 13 13 bin_PROGRAMS = lasinfo las2las lasmerge las2txt txt2las 14 14 15 endif15 #endif 16 16 17 17 LDADD = ../src/liblas.la -
apps/las2ogr.cpp
r504 r639 19 19 #include <liblas/cstdint.hpp> 20 20 // ogr 21 #include <ogrsf_frmts.h> 22 #include <ogr_p.h> 21 #include <ogr_api.h> 22 // #include <ogrsf_frmts.h> 23 // #include <ogr_p.h> 23 24 //std 24 25 #include <cassert> … … 95 96 }; 96 97 97 void create_layer_def(OGRLayer& lyr) 98 { 98 OGRFieldDefnH create_field(const char* name, OGRFieldType type, int width, int precision ) { 99 100 OGRFieldDefnH fld; 101 fld= OGR_Fld_Create(name, type); 102 OGR_Fld_SetWidth(fld, width); 103 OGR_Fld_SetPrecision(fld, precision); 104 105 return fld; 106 107 } 108 void create_layer_def(OGRLayerH lyr) 109 { 110 OGRErr err; 99 111 std::string fldname("return_num"); 100 OGRFieldDefn fld(fldname.c_str(), OFTReal); 101 fld.SetWidth(1); 102 fld.SetPrecision(0); 103 if (OGRERR_NONE != lyr.CreateField(&fld)) 104 { 105 throw std::runtime_error(fldname + " field cration failed"); 106 } 107 108 fldname = "angle"; 109 fld.Set(fldname.c_str(), OFTReal, 3, 0); 110 if (OGRERR_NONE != lyr.CreateField(&fld)) 111 { 112 throw std::runtime_error(fldname + " field cration failed"); 113 } 114 115 fldname = "intensity"; 116 fld.Set(fldname.c_str(), OFTReal, 3, 0); 117 if (OGRERR_NONE != lyr.CreateField(&fld)) 118 { 119 throw std::runtime_error(fldname + " field cration failed"); 120 } 121 122 fldname = "asprsclass"; 123 fld.Set(fldname.c_str(), OFTReal, 3, 0); 124 if (OGRERR_NONE != lyr.CreateField(&fld)) 125 { 126 throw std::runtime_error(fldname + " field cration failed"); 127 } 128 129 fldname = "return_tot"; 130 fld.Set(fldname.c_str(), OFTReal, 3, 0); 131 if (OGRERR_NONE != lyr.CreateField(&fld)) 132 { 133 throw std::runtime_error(fldname + " field cration failed"); 134 } 135 136 fldname = "gps_time"; 137 fld.Set(fldname.c_str(), OFTReal, 13, 6); 138 if (OGRERR_NONE != lyr.CreateField(&fld)) 139 { 140 throw std::runtime_error(fldname + " field cration failed"); 141 } 112 113 OGRFieldDefnH fld; 114 115 fld = create_field("return_num", OFTInteger, 10, 0); 116 err = OGR_L_CreateField(lyr, fld, 0); 117 if (OGRERR_NONE != err) 118 { 119 throw std::runtime_error("return_num field creation failed"); 120 } 121 122 OGR_Fld_Destroy(fld); 123 124 fld = create_field("angle", OFTInteger, 10, 0); 125 err = OGR_L_CreateField(lyr, fld, 0); 126 if (OGRERR_NONE != err) 127 { 128 throw std::runtime_error("angle field cration failed"); 129 } 130 131 OGR_Fld_Destroy(fld); 132 133 fld = create_field("intensity", OFTInteger, 10, 0); 134 err = OGR_L_CreateField(lyr, fld, 0); 135 if (OGRERR_NONE != err) 136 { 137 throw std::runtime_error("intensity field cration failed"); 138 } 139 140 OGR_Fld_Destroy(fld); 141 142 fld = create_field("asprsclass", OFTInteger, 10, 0); 143 err = OGR_L_CreateField(lyr, fld, 0); 144 if (OGRERR_NONE != err) 145 { 146 throw std::runtime_error("asprsclass field creation failed"); 147 } 148 149 OGR_Fld_Destroy(fld); 150 151 fld = create_field("return_tot", OFTInteger, 10, 0); 152 err = OGR_L_CreateField(lyr, fld, 0); 153 if (OGRERR_NONE != err) 154 { 155 throw std::runtime_error("return_tot field creation failed"); 156 } 157 158 OGR_Fld_Destroy(fld); 159 160 fld = create_field("gpstime", OFTReal, 10, 0); 161 err = OGR_L_CreateField(lyr, fld, 0); 162 if (OGRERR_NONE != err) 163 { 164 throw std::runtime_error("gpstime field cration failed"); 165 } 166 167 OGR_Fld_Destroy(fld); 168 142 169 } 143 170 144 171 void report_ogr_formats() 145 172 { 146 OGRSFDriverRegistrar* r = 0;147 r = OGRSFDriverRegistrar::GetRegistrar();148 173 149 174 std::cout << "Supported target formats:"; 150 175 151 for (int i = 0; i < r->GetDriverCount(); ++i)152 { 153 OGRSFDriver * drv = r->GetDriver(i);176 for (int i = 0; i < OGRGetDriverCount(); ++i) 177 { 178 OGRSFDriverH drv = OGRGetDriver(i); 154 179 assert(0 != drv); 155 180 156 if ( drv->TestCapability(ODrCCreateDataSource))157 { 158 std::cout << "\n - " << drv->GetName();181 if (OGR_Dr_TestCapability(drv,"ODrCCreateDataSource")) 182 { 183 std::cout << "\n - " << OGR_Dr_GetName(drv); 159 184 } 160 185 } … … 218 243 } 219 244 220 OGRLayer *lyr = 0;221 lyr = ds->CreateLayer(lyrname.c_str(), 0, wkbPoint25D, 0);245 OGRLayerH lyr = 0; 246 lyr = OGR_DS_CreateLayer(ds, lyrname.c_str(), 0, wkbPoint25D, 0); 222 247 if (0 == lyr) 223 248 {
Note: See TracChangeset
for help on using the changeset viewer.
