void OGRBNALayer::WriteCoord(VSILFILE* fp, double dfX, double dfY) { char szBuffer[64]; OGRFormatDouble(szBuffer, sizeof(szBuffer), dfX, '.', poDS->GetCoordinatePrecision()); VSIFPrintfL( fp, "%s", szBuffer); VSIFPrintfL( fp, "%s", poDS->GetCoordinateSeparator()); OGRFormatDouble(szBuffer, sizeof(szBuffer), dfY, '.', poDS->GetCoordinatePrecision()); VSIFPrintfL( fp, "%s", szBuffer); }
static int OGR_json_double_with_precision_to_string(struct json_object *jso, struct printbuf *pb, CPL_UNUSED int level, CPL_UNUSED int flags) { char szBuffer[75]; int nPrecision = (int) (size_t) jso->_userdata; OGRFormatDouble( szBuffer, sizeof(szBuffer), jso->o.c_double, '.', (nPrecision < 0) ? 15 : nPrecision ); if( szBuffer[0] == 't' /*oobig */ ) { CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", jso->o.c_double); } return printbuf_memappend(pb, szBuffer, strlen(szBuffer)); }
void OGRBNALayer::WriteFeatureAttributes(VSILFILE* fp, OGRFeature *poFeature ) { int i; OGRFieldDefn *poFieldDefn; int nbOutID = poDS->GetNbOutId(); if (nbOutID < 0) nbOutID = poFeatureDefn->GetFieldCount(); for(i=0;i<nbOutID;i++) { if (i < poFeatureDefn->GetFieldCount()) { poFieldDefn = poFeatureDefn->GetFieldDefn( i ); if( poFeature->IsFieldSet( i ) ) { if (poFieldDefn->GetType() == OFTReal) { char szBuffer[64]; OGRFormatDouble(szBuffer, sizeof(szBuffer), poFeature->GetFieldAsDouble(i), '.'); VSIFPrintfL( fp, "\"%s\",", szBuffer); } else { const char *pszRaw = poFeature->GetFieldAsString( i ); VSIFPrintfL( fp, "\"%s\",", pszRaw); } } else { VSIFPrintfL( fp, "\"\","); } } else { VSIFPrintfL( fp, "\"\","); } } }
void OGRMakeWktCoordinate( char *pszTarget, double x, double y, double z, int nDimension ) { const size_t bufSize = 75; const size_t maxTargetSize = 75; /* Assumed max length of the target buffer. */ char szX[bufSize]; char szY[bufSize]; char szZ[bufSize]; szZ[0] = '\0'; int nLenX, nLenY; if( x == (int) x && y == (int) y ) { snprintf( szX, bufSize, "%d", (int) x ); snprintf( szY, bufSize, "%d", (int) y ); } else { OGRFormatDouble( szX, bufSize, x, '.' ); OGRFormatDouble( szY, bufSize, y, '.' ); } nLenX = strlen(szX); nLenY = strlen(szY); if( nDimension == 3 ) { if( z == (int) z ) { snprintf( szZ, bufSize, "%d", (int) z ); } else { OGRFormatDouble( szZ, bufSize, z, '.' ); } } if( nLenX + 1 + nLenY + ((nDimension == 3) ? (1 + strlen(szZ)) : 0) >= maxTargetSize ) { #ifdef DEBUG CPLDebug( "OGR", "Yow! Got this big result in OGRMakeWktCoordinate()\n" "%s %s %s", szX, szY, szZ ); #endif if( nDimension == 3 ) strcpy( pszTarget, "0 0 0"); else strcpy( pszTarget, "0 0"); } else { memcpy( pszTarget, szX, nLenX ); pszTarget[nLenX] = ' '; memcpy( pszTarget + nLenX + 1, szY, nLenY ); if (nDimension == 3) { pszTarget[nLenX + 1 + nLenY] = ' '; strcpy( pszTarget + nLenX + 1 + nLenY + 1, szZ ); } else { pszTarget[nLenX + 1 + nLenY] = '\0'; } } }