Changeset 13906
- Timestamp:
- 03/01/08 08:08:28 (4 months ago)
- Files:
-
- trunk/gdal/ogr/ogrsf_frmts/ili/ili2reader.cpp (modified) (20 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ili2reader.h (modified) (1 diff)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogr_ili2.h (modified) (4 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2datasource.cpp (modified) (12 diffs)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2driver.cpp (modified) (1 diff)
- trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2layer.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/ogr/ogrsf_frmts/ili/ili2reader.cpp
r13354 r13906 102 102 int getGeometryTypeOfElem(DOMElement* elem) { 103 103 int type = ILI2_STRING_TYPE; 104 char* pszTagName = XMLString::transcode(elem->getTagName()); 104 105 105 106 if (elem && elem->getNodeType() == DOMNode::ELEMENT_NODE) { 106 if (cmpStr(ILI2_COORD, XMLString::transcode(elem->getTagName())) == 0) {107 if (cmpStr(ILI2_COORD, pszTagName) == 0) { 107 108 type = ILI2_COORD_TYPE; 108 } else if (cmpStr(ILI2_ARC, XMLString::transcode(elem->getTagName())) == 0) {109 } else if (cmpStr(ILI2_ARC, pszTagName) == 0) { 109 110 type = ILI2_ARC_TYPE; 110 } else if (cmpStr(ILI2_POLYLINE, XMLString::transcode(elem->getTagName())) == 0) {111 } else if (cmpStr(ILI2_POLYLINE, pszTagName) == 0) { 111 112 type = ILI2_POLYLINE_TYPE; 112 } else if (cmpStr(ILI2_BOUNDARY, XMLString::transcode(elem->getTagName())) == 0) {113 } else if (cmpStr(ILI2_BOUNDARY, pszTagName) == 0) { 113 114 type = ILI2_BOUNDARY_TYPE; 114 } else if (cmpStr(ILI2_AREA, XMLString::transcode(elem->getTagName())) == 0) {115 } else if (cmpStr(ILI2_AREA, pszTagName) == 0) { 115 116 type = ILI2_AREA_TYPE; 116 } else if (cmpStr(ILI2_SURFACE, XMLString::transcode(elem->getTagName())) == 0) {117 } else if (cmpStr(ILI2_SURFACE, pszTagName) == 0) { 117 118 type = ILI2_AREA_TYPE; 118 119 } 119 120 } 121 XMLString::release(&pszTagName); 120 122 return type; 121 123 } … … 125 127 126 128 if ((textElem != NULL) && (textElem->getNodeType() == DOMNode::TEXT_NODE)) 127 return CPLStrdup(XMLString::transcode(textElem->getNodeValue())); 129 { 130 char* pszNodeValue = XMLString::transcode(textElem->getNodeValue()); 131 char* pszRet = CPLStrdup(pszNodeValue); 132 XMLString::release(&pszNodeValue); 133 return pszRet; 134 } 128 135 129 136 return NULL; … … 131 138 132 139 char *getREFValue(DOMElement *elem) { 133 return CPLStrdup(XMLString::transcode(elem->getAttribute(XMLString::transcode(ILI2_REF)))); 140 XMLCh* pszIli2_ref = XMLString::transcode(ILI2_REF); 141 char* pszREFValue = XMLString::transcode(elem->getAttribute(pszIli2_ref)); 142 char* pszRet = CPLStrdup(pszREFValue); 143 XMLString::release(&pszIli2_ref); 144 XMLString::release(&pszREFValue); 145 return pszRet; 134 146 } 135 147 … … 140 152 DOMElement *coordElem = (DOMElement *)elem->getFirstChild(); 141 153 while (coordElem != NULL) { 142 if (cmpStr("C1", XMLString::transcode(coordElem->getTagName())) == 0) 143 pt->setX(atof(getObjValue(coordElem))); 144 else if (cmpStr("C2", XMLString::transcode(coordElem->getTagName())) == 0) 145 pt->setY(atof(getObjValue(coordElem))); 146 else if (cmpStr("C3", XMLString::transcode(coordElem->getTagName())) == 0) 147 pt->setZ(atof(getObjValue(coordElem))); 154 char* pszTagName = XMLString::transcode(coordElem->getTagName()); 155 char* pszObjValue = getObjValue(coordElem); 156 if (cmpStr("C1", pszTagName) == 0) 157 pt->setX(atof(pszObjValue)); 158 else if (cmpStr("C2", pszTagName) == 0) 159 pt->setY(atof(pszObjValue)); 160 else if (cmpStr("C3", pszTagName) == 0) 161 pt->setZ(atof(pszObjValue)); 162 CPLFree(pszObjValue); 163 XMLString::release(&pszTagName); 148 164 coordElem = (DOMElement *)coordElem->getNextSibling(); 149 165 } … … 165 181 DOMElement *arcElem = (DOMElement *)elem->getFirstChild(); 166 182 while (arcElem != NULL) { 167 if (cmpStr("C1", XMLString::transcode(arcElem->getTagName())) == 0) 168 ptEnd->setX(atof(getObjValue(arcElem))); 169 else if (cmpStr("C2", XMLString::transcode(arcElem->getTagName())) == 0) 170 ptEnd->setY(atof(getObjValue(arcElem))); 171 else if (cmpStr("C3", XMLString::transcode(arcElem->getTagName())) == 0) 172 ptEnd->setZ(atof(getObjValue(arcElem))); 173 else if (cmpStr("A1", XMLString::transcode(arcElem->getTagName())) == 0) 174 ptOnArc->setX(atof(getObjValue(arcElem))); 175 else if (cmpStr("A2", XMLString::transcode(arcElem->getTagName())) == 0) 176 ptOnArc->setY(atof(getObjValue(arcElem))); 177 else if (cmpStr("A3", XMLString::transcode(arcElem->getTagName())) == 0) 178 ptOnArc->setZ(atof(getObjValue(arcElem))); 179 else if (cmpStr("R", XMLString::transcode(arcElem->getTagName())) == 0) 180 radius = atof(getObjValue(arcElem)); 181 183 char* pszTagName = XMLString::transcode(arcElem->getTagName()); 184 char* pszObjValue = getObjValue(arcElem); 185 if (cmpStr("C1", pszTagName) == 0) 186 ptEnd->setX(atof(pszObjValue)); 187 else if (cmpStr("C2", pszTagName) == 0) 188 ptEnd->setY(atof(pszObjValue)); 189 else if (cmpStr("C3", pszTagName) == 0) 190 ptEnd->setZ(atof(pszObjValue)); 191 else if (cmpStr("A1", pszTagName) == 0) 192 ptOnArc->setX(atof(pszObjValue)); 193 else if (cmpStr("A2", pszTagName) == 0) 194 ptOnArc->setY(atof(pszObjValue)); 195 else if (cmpStr("A3", pszTagName) == 0) 196 ptOnArc->setZ(atof(pszObjValue)); 197 else if (cmpStr("R", pszTagName) == 0) 198 radius = atof(pszObjValue); 199 CPLFree(pszObjValue); 200 XMLString::release(&pszTagName); 182 201 arcElem = (DOMElement *)arcElem->getNextSibling(); 183 202 } … … 194 213 DOMElement *lineElem = (DOMElement *)elem->getFirstChild(); 195 214 while (lineElem != NULL) { 196 if (cmpStr(ILI2_COORD, XMLString::transcode(lineElem->getTagName())) == 0) 215 char* pszTagName = XMLString::transcode(lineElem->getTagName()); 216 if (cmpStr(ILI2_COORD, pszTagName) == 0) 197 217 ls->addPoint(getPoint(lineElem)); 198 else if (cmpStr(ILI2_ARC, XMLString::transcode(lineElem->getTagName())) == 0) {218 else if (cmpStr(ILI2_ARC, pszTagName) == 0) { 199 219 // end point 200 220 OGRPoint *ptEnd = new OGRPoint(); … … 206 226 DOMElement *arcElem = (DOMElement *)lineElem->getFirstChild(); 207 227 while (arcElem != NULL) { 208 if (cmpStr("C1", XMLString::transcode(arcElem->getTagName())) == 0) 209 ptEnd->setX(atof(getObjValue(arcElem))); 210 else if (cmpStr("C2", XMLString::transcode(arcElem->getTagName())) == 0) 211 ptEnd->setY(atof(getObjValue(arcElem))); 212 else if (cmpStr("C3", XMLString::transcode(arcElem->getTagName())) == 0) 213 ptEnd->setZ(atof(getObjValue(arcElem))); 214 else if (cmpStr("A1", XMLString::transcode(arcElem->getTagName())) == 0) 215 ptOnArc->setX(atof(getObjValue(arcElem))); 216 else if (cmpStr("A2", XMLString::transcode(arcElem->getTagName())) == 0) 217 ptOnArc->setY(atof(getObjValue(arcElem))); 218 else if (cmpStr("A3", XMLString::transcode(arcElem->getTagName())) == 0) 219 ptOnArc->setZ(atof(getObjValue(arcElem))); 220 else if (cmpStr("R", XMLString::transcode(arcElem->getTagName())) == 0) 221 radius = atof(getObjValue(arcElem)); 228 char* pszTagName = XMLString::transcode(arcElem->getTagName()); 229 char* pszObjValue = getObjValue(arcElem); 230 if (cmpStr("C1", pszTagName) == 0) 231 ptEnd->setX(atof(pszObjValue)); 232 else if (cmpStr("C2", pszTagName) == 0) 233 ptEnd->setY(atof(pszObjValue)); 234 else if (cmpStr("C3", pszTagName) == 0) 235 ptEnd->setZ(atof(pszObjValue)); 236 else if (cmpStr("A1", pszTagName) == 0) 237 ptOnArc->setX(atof(pszObjValue)); 238 else if (cmpStr("A2", pszTagName) == 0) 239 ptOnArc->setY(atof(pszObjValue)); 240 else if (cmpStr("A3", pszTagName) == 0) 241 ptOnArc->setZ(atof(pszObjValue)); 242 else if (cmpStr("R", pszTagName) == 0) 243 radius = atof(pszObjValue); 244 CPLFree(pszObjValue); 245 XMLString::release(&pszTagName); 222 246 223 247 arcElem = (DOMElement *)arcElem->getNextSibling(); … … 230 254 } /* else { // FIXME StructureValue in Polyline not yet supported 231 255 } */ 256 XMLString::release(&pszTagName); 232 257 233 258 lineElem = (DOMElement *)lineElem->getNextSibling(); … … 241 266 DOMElement *lineElem = (DOMElement *)elem->getFirstChild(); 242 267 if (lineElem != NULL) 243 if (cmpStr(ILI2_POLYLINE, XMLString::transcode(lineElem->getTagName())) == 0) 268 { 269 char* pszTagName = XMLString::transcode(lineElem->getTagName()); 270 if (cmpStr(ILI2_POLYLINE, pszTagName) == 0) 271 { 272 XMLString::release(&pszTagName); 244 273 return getLineString(lineElem); 274 } 275 XMLString::release(&pszTagName); 276 } 245 277 246 278 return new OGRLineString; … … 252 284 DOMElement *boundaryElem = (DOMElement *)elem->getFirstChild(); // outer boundary 253 285 while (boundaryElem != NULL) { 254 if (cmpStr(ILI2_BOUNDARY, XMLString::transcode(boundaryElem->getTagName())) == 0) 286 char* pszTagName = XMLString::transcode(boundaryElem->getTagName()); 287 if (cmpStr(ILI2_BOUNDARY, pszTagName) == 0) 255 288 pg->addRing((OGRLinearRing *)getBoundary(boundaryElem)); 256 289 XMLString::release(&pszTagName); 257 290 boundaryElem = (DOMElement *)boundaryElem->getNextSibling(); // inner boundaries 258 291 } … … 266 299 DOMElement *childElem = elem; 267 300 while (childElem != NULL) { 301 char* pszTagName = XMLString::transcode(childElem->getTagName()); 268 302 switch (type) { 269 303 case ILI2_COORD_TYPE : 270 if (cmpStr(ILI2_COORD, XMLString::transcode(childElem->getTagName())) == 0) 304 if (cmpStr(ILI2_COORD, pszTagName) == 0) 305 { 306 delete gm; 307 XMLString::release(&pszTagName); 271 308 return getPoint(childElem); 309 } 272 310 break; 273 311 case ILI2_ARC_TYPE : 274 312 // is it possible here? It have to be a ARC or COORD before (getPreviousSibling) 275 if (cmpStr(ILI2_ARC, XMLString::transcode(childElem->getTagName())) == 0) 313 if (cmpStr(ILI2_ARC, pszTagName) == 0) 314 { 315 delete gm; 316 XMLString::release(&pszTagName); 276 317 return getArc(childElem); 318 } 277 319 break; 278 320 case ILI2_POLYLINE_TYPE : 279 if (cmpStr(ILI2_POLYLINE, XMLString::transcode(childElem->getTagName())) == 0) 321 if (cmpStr(ILI2_POLYLINE, pszTagName) == 0) 322 { 323 delete gm; 324 XMLString::release(&pszTagName); 280 325 return getLineString(childElem); 326 } 281 327 break; 282 328 case ILI2_BOUNDARY_TYPE : 283 if (cmpStr(ILI2_BOUNDARY, XMLString::transcode(childElem->getTagName())) == 0) 329 if (cmpStr(ILI2_BOUNDARY, pszTagName) == 0) 330 { 331 delete gm; 332 XMLString::release(&pszTagName); 284 333 return getLineString(childElem); 334 } 285 335 break; 286 336 case ILI2_AREA_TYPE : 287 if ((cmpStr(ILI2_AREA, XMLString::transcode(childElem->getTagName())) == 0) || 288 (cmpStr(ILI2_SURFACE, XMLString::transcode(childElem->getTagName())) == 0)) 337 if ((cmpStr(ILI2_AREA, pszTagName) == 0) || 338 (cmpStr(ILI2_SURFACE, pszTagName) == 0)) 339 { 340 delete gm; 341 XMLString::release(&pszTagName); 289 342 return getPolygon(childElem); 343 } 290 344 break; 291 345 default : 292 346 if (type >= ILI2_GEOMCOLL_TYPE) { 293 347 int subType = getGeometryTypeOfElem(childElem); //???? 294 gm->addGeometry (getGeometry(childElem, subType));348 gm->addGeometryDirectly(getGeometry(childElem, subType)); 295 349 } 296 350 break; 297 351 } 352 XMLString::release(&pszTagName); 298 353 299 354 // GEOMCOLL … … 429 484 for (d=depth-1; d>=0; --d) { 430 485 if (d < depth-1) fullname += "_"; 431 fullname += XMLString::transcode(elements[d]->getNodeName()); 486 char* pszNodeName = XMLString::transcode(elements[d]->getNodeName()); 487 fullname += pszNodeName; 488 XMLString::release(&pszNodeName); 432 489 } 433 490 return CPLStrdup(fullname.c_str()); … … 448 505 if (featureDef->GetFieldIndex(fName) == -1) { 449 506 CPLDebug( "OGR_ILI", "AddFieldDefn: %s",fName ); 450 OGRFieldDefn *fieldDef = new OGRFieldDefn(fName, OFTString);451 featureDef->AddFieldDefn( fieldDef);507 OGRFieldDefn oFieldDefn(fName, OFTString); 508 featureDef->AddFieldDefn(&oFieldDefn); 452 509 } 453 510 CPLFree(fName); … … 475 532 objVal = getREFValue(childElem); // only to try 476 533 feature->SetField(fIndex, objVal); 534 CPLFree(objVal); 477 535 } else { 478 536 m_missAttrs.push_back(fName); … … 481 539 } 482 540 } else { 483 feature->SetGeometry (getGeometry(childElem, type));541 feature->SetGeometryDirectly(getGeometry(childElem, type)); 484 542 } 485 543 } … … 507 565 508 566 CleanupParser(); 567 568 list<OGRLayer *>::const_iterator layerIt = m_listLayer.begin(); 569 while (layerIt != m_listLayer.end()) { 570 OGRILI2Layer *tmpLayer = (OGRILI2Layer *)*layerIt; 571 delete tmpLayer; 572 layerIt++; 573 } 509 574 } 510 575 … … 652 717 OGRwkbGeometryType eReqType = wkbUnknown; 653 718 OGRILI2DataSource *poDSIn = NULL; 654 curLayer = new OGRILI2Layer( CPLStrdup(pszName), poSRSIn, bWriterIn, eReqType, poDSIn);719 curLayer = new OGRILI2Layer(pszName, poSRSIn, bWriterIn, eReqType, poDSIn); 655 720 m_listLayer.push_back(curLayer); 656 721 } … … 660 725 if (newLayer) { 661 726 // the TID feature 662 OGRFieldDefn *fieldDef = new OGRFieldDefn(CPLStrdup(ILI2_TID), OFTString);663 featureDef->AddFieldDefn( fieldDef);727 OGRFieldDefn ofieldDefn (ILI2_TID, OFTString); 728 featureDef->AddFieldDefn(&ofieldDefn); 664 729 665 730 setFieldDefn(featureDef, elem); … … 671 736 // the TID feature 672 737 int fIndex = feature->GetFieldIndex(ILI2_TID); 673 char *fChVal = XMLString::transcode(elem->getAttribute(XMLString::transcode(ILI2_TID))); 674 feature->SetField(fIndex, CPLStrdup(fChVal)); 738 XMLCh *pszIli2_tid = XMLString::transcode(ILI2_TID); 739 char *fChVal = XMLString::transcode(elem->getAttribute(pszIli2_tid)); 740 feature->SetField(fIndex, fChVal); 741 XMLString::release (&pszIli2_tid); 742 XMLString::release (&fChVal); 675 743 676 744 SetFieldValues(feature, elem); 677 745 curLayer->SetFeature(feature); 746 747 XMLString::release (&pszName); 678 748 679 749 return 0; … … 683 753 return new ILI2Reader(); 684 754 } 755 756 void DestroyILI2Reader(IILI2Reader* reader) 757 { 758 if (reader) 759 delete reader; 760 } trunk/gdal/ogr/ogrsf_frmts/ili/ili2reader.h
r10645 r13906 55 55 56 56 IILI2Reader *CreateILI2Reader(); 57 void DestroyILI2Reader(IILI2Reader* reader); 57 58 58 59 #endif trunk/gdal/ogr/ogrsf_frmts/ili/ogr_ili2.h
r10645 r13906 49 49 OGRSpatialReference *poSRS; 50 50 OGRFeatureDefn *poFeatureDefn; 51 OGRGeometry *poFilterGeom;52 51 std::list<OGRFeature *> listFeature; 53 52 std::list<OGRFeature *>::const_iterator listFeatureIt; … … 66 65 ~OGRILI2Layer(); 67 66 68 OGRGeometry * GetSpatialFilter() { return poFilterGeom; }69 void SetSpatialFilter( OGRGeometry * );70 71 67 OGRErr SetFeature(OGRFeature *poFeature); 72 68 … … 75 71 76 72 int GetFeatureCount( int bForce = TRUE ); 77 OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE);78 73 79 74 OGRErr CreateFeature( OGRFeature *poFeature ); … … 98 93 99 94 char *pszName; 100 const char *pszModelFilename;101 95 IILI2Reader *poReader; 102 96 IOM_FILE fpTransfer; //for writing 103 97 IOM_BASKET basket; 98 99 int nLayers; 100 OGRILI2Layer** papoLayers; 104 101 105 102 public: trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2datasource.cpp
r12773 r13906 51 51 fpTransfer = NULL; 52 52 basket = NULL; 53 nLayers = 0; 54 papoLayers = NULL; 53 55 } 54 56 … … 60 62 61 63 { 64 int i; 65 66 for(i=0;i<nLayers;i++) 67 { 68 delete papoLayers[i]; 69 } 70 CPLFree( papoLayers ); 71 62 72 if (basket) iom_releasebasket(basket); 63 73 if (fpTransfer) … … 72 82 73 83 } 84 DestroyILI2Reader( poReader ); 74 85 CPLFree( pszName ); 75 86 } … … 92 103 if( CSLCount(filenames) > 1 ) 93 104 modelFilenames = &filenames[1]; 94 95 CSLDestroy( filenames );96 105 97 106 /* -------------------------------------------------------------------- */ … … 106 115 pszNewName ); 107 116 117 CSLDestroy( filenames ); 108 118 return FALSE; 109 119 } … … 125 135 { // "www.interlis.ch/INTERLIS2.2" 126 136 VSIFClose( fp ); 137 CSLDestroy( filenames ); 127 138 return FALSE; 128 139 } … … 143 154 "configured in.", 144 155 pszNewName ); 156 CSLDestroy( filenames ); 145 157 return FALSE; 146 158 } … … 160 172 listLayer = poReader->GetLayers(); 161 173 174 CSLDestroy( filenames ); 175 162 176 return TRUE; 163 177 } … … 173 187 { 174 188 char **filenames = CSLTokenizeString2( pszFilename, ",", 0 ); 175 pszName = filenames[0];176 pszModelFilename = (CSLCount(filenames)>1) ? filenames[1] : NULL;189 pszName = CPLStrdup(filenames[0]); 190 const char *pszModelFilename = (CSLCount(filenames)>1) ? filenames[1] : NULL; 177 191 178 192 if( pszModelFilename == NULL ) … … 181 195 "Model file '%s' (%s) not found.", 182 196 pszModelFilename, pszFilename, VSIStrerror( errno ) ); 183 return FALSE; 184 } 185 186 iom_init(); 187 188 // set error listener to a iom provided one, that just 189 // dumps all errors to stderr 190 iom_seterrlistener(iom_stderrlistener); 191 192 // compile ili model 197 CSLDestroy(filenames); 198 return FALSE; 199 } 200 201 iom_init(); 202 203 // set error listener to a iom provided one, that just 204 // dumps all errors to stderr 205 iom_seterrlistener(iom_stderrlistener); 206 207 // compile ili model 193 208 char *iliFiles[1] = {(char *)pszModelFilename}; 194 IOM_BASKET model=iom_compileIli(1,iliFiles);195 if(!model){209 IOM_BASKET model=iom_compileIli(1,iliFiles); 210 if(!model){ 196 211 CPLError( CE_Warning, CPLE_OpenFailed, 197 "iom_compileIli .", 198 pszName, VSIStrerror( errno ) ); 199 iom_end(); 200 return FALSE; 201 } 202 203 // open new file 204 fpTransfer=iom_open(pszName,IOM_CREATE | IOM_DONTREAD,0); 205 if(!fpTransfer){ 212 "iom_compileIli .", 213 pszName, VSIStrerror( errno ) ); 214 iom_end(); 215 CSLDestroy(filenames); 216 return FALSE; 217 } 218 219 // open new file 220 fpTransfer=iom_open(pszName,IOM_CREATE | IOM_DONTREAD,0); 221 if(!fpTransfer){ 206 222 CPLError( CE_Warning, CPLE_OpenFailed, 207 "Failed to open %s.", 208 pszName ); 209 return FALSE; 210 } 211 212 // set model of new file 213 iom_setmodel(fpTransfer,model); 214 215 iom_setheadsender(fpTransfer, pszModelFilename); 216 217 iom_setheadcomment(fpTransfer,"Created by OGR"); 223 "Failed to open %s.", 224 pszName ); 225 CSLDestroy(filenames); 226 return FALSE; 227 } 228 229 // set model of new file 230 iom_setmodel(fpTransfer,model); 231 232 iom_setheadsender(fpTransfer, pszModelFilename); 233 234 iom_setheadcomment(fpTransfer,"Created by OGR"); 218 235 219 236 // create new basket … … 233 250 } 234 251 252 CSLDestroy(filenames); 253 235 254 basket=iom_newbasket(fpTransfer); 236 255 iom_setbaskettag(basket, basketname); … … 250 269 251 270 { 252 OGRILI2Layer *poLayer = new OGRILI2Layer(CPLStrdup(pszLayerName), poSRS, TRUE, eType, this); 271 OGRILI2Layer *poLayer = new OGRILI2Layer(pszLayerName, poSRS, TRUE, eType, this); 272 273 nLayers ++; 274 papoLayers = (OGRILI2Layer**)CPLRealloc(papoLayers, sizeof(OGRILI2Layer*) * nLayers); 275 papoLayers[nLayers-1] = poLayer; 276 253 277 return poLayer; 254 278 } trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2driver.cpp
r10645 r13906 109 109 /************************************************************************/ 110 110 111 void RegisterOGRILI2() { 111 void RegisterOGRILI2() 112 { 112 113 OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( new OGRILI2Driver ); 113 114 } trunk/gdal/ogr/ogrsf_frmts/ili/ogrili2layer.cpp
r11251 r13906 44 44 45 45 { 46 poFilterGeom = NULL;47 48 46 if( poSRSIn == NULL ) 49 47 poSRS = NULL; … … 73 71 poSRS->Release(); 74 72 75 if( poFilterGeom != NULL ) 76 delete poFilterGeom; 77 } 78 79 /************************************************************************/ 80 /* SetSpatialFilter() */ 81 /************************************************************************/ 82 83 void OGRILI2Layer::SetSpatialFilter( OGRGeometry * poGeomIn ) 84 85 { 86 if( poFilterGeom != NULL ) 87 { 88 delete poFilterGeom; 89 poFilterGeom = NULL; 90 } 91 92 if( poGeomIn != NULL ) 93 poFilterGeom = poGeomIn->clone(); 94 } 73 listFeatureIt = listFeature.begin(); 74 while(listFeatureIt != listFeature.end()) 75 { 76 OGRFeature *poFeature = *(listFeatureIt++); 77 delete poFeature; 78 } 79 } 80 95 81 96 82 /************************************************************************/ … … 117 103 OGRFeature *OGRILI2Layer::GetNextFeature() { 118 104 OGRFeature *poFeature = NULL; 119 if(listFeatureIt != listFeature.end())105 while (listFeatureIt != listFeature.end()) 120 106 { 121 107 poFeature = *(listFeatureIt++); … … 134 120 /************************************************************************/ 135 121 136 int OGRILI2Layer::GetFeatureCount( int bForce ) {137 return listFeature.size(); //nTotalILI2Count; 138 } 139 140 /************************************************************************/ 141 /* GetExtent() */ 142 /************************************************************************/ 143 144 OGRErr OGRILI2Layer::GetExtent(OGREnvelope *psExtent, int bForce ) { 145 return OGRLayer::GetExtent( psExtent, bForce );122 int OGRILI2Layer::GetFeatureCount( int bForce ) 123 { 124 if (m_poFilterGeom == NULL && m_poAttrQuery == NULL) 125 { 126 return listFeature.size(); 127 } 128 else 129 { 130 return OGRLayer::GetFeatureCount(bForce); 131 } 146 132 } 147 133
