EVOLUTION-MANAGER
Edit File: ogrgtmlayer.cpp
/****************************************************************************** * $Id: ogrgtmlayer.cpp 27729 2014-09-24 00:40:16Z goatbar $ * * Project: GTM Driver * Purpose: Implementation of OGRGTMLayer class. * Author: Leonardo de Paula Rosa Piga; http://lampiao.lsc.ic.unicamp.br/~piga * ****************************************************************************** * Copyright (c) 2009, Leonardo de Paula Rosa Piga * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/ #include "ogr_gtm.h" OGRGTMLayer::OGRGTMLayer() { poDS = NULL; poSRS = NULL; poCT = NULL; pszName = NULL; poFeatureDefn = NULL; nNextFID = 0; nTotalFCount = 0; bError = FALSE; } OGRGTMLayer::~OGRGTMLayer() { if (poFeatureDefn != NULL) { poFeatureDefn->Release(); poFeatureDefn = NULL; } if (poSRS != NULL) { poSRS->Release(); poSRS = NULL; } if (poCT != NULL) { delete poCT; poCT = NULL; } CPLFree( pszName ); } /************************************************************************/ /* GetLayerDefn() */ /************************************************************************/ OGRFeatureDefn* OGRGTMLayer::GetLayerDefn() { return poFeatureDefn; } /************************************************************************/ /* TestCapability() */ /************************************************************************/ int OGRGTMLayer::TestCapability( const char * pszCap ) { if (EQUAL(pszCap,OLCFastFeatureCount) && m_poFilterGeom == NULL && m_poAttrQuery == NULL ) return TRUE; else return FALSE; } /************************************************************************/ /* CheckAndFixCoordinatesValidity() */ /************************************************************************/ OGRErr OGRGTMLayer::CheckAndFixCoordinatesValidity( double& pdfLatitude, double& pdfLongitude ) { if (pdfLatitude < -90 || pdfLatitude > 90) { static int bFirstWarning = TRUE; if (bFirstWarning) { CPLError(CE_Failure, CPLE_AppDefined, "Latitude %f is invalid. Valid range is [-90,90]. This warning will not be issued any more", pdfLatitude); bFirstWarning = FALSE; } return CE_Failure; } if (pdfLongitude < -180 || pdfLongitude > 180) { static int bFirstWarning = TRUE; if (bFirstWarning) { CPLError(CE_Warning, CPLE_AppDefined, "Longitude %f has been modified to fit into range [-180,180]. This warning will not be issued any more", pdfLongitude); bFirstWarning = FALSE; } if (pdfLongitude > 180) pdfLongitude -= ((int) ((pdfLongitude+180)/360)*360); else if (pdfLongitude < -180) pdfLongitude += ((int) (180 - pdfLongitude)/360)*360; return CE_None; } return CE_None; } /************************************************************************/ /* CreateField() */ /************************************************************************/ OGRErr OGRGTMLayer::CreateField( OGRFieldDefn *poField, CPL_UNUSED int bApproxOK ) { for( int iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ ) { if (strcmp(poFeatureDefn->GetFieldDefn(iField)->GetNameRef(), poField->GetNameRef() ) == 0) { return OGRERR_NONE; } } CPLError(CE_Failure, CPLE_NotSupported, "Field of name '%s' is not supported. ", poField->GetNameRef()); return OGRERR_FAILURE; }